Community

The PokéCommunity

We are still working on a better slogan!

Visit Index



Advertise here

Go Back   The PokéCommunity Forums > ROM Hacking > Research & Development
Notices

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!
Research & Development programs in this forum are subject to moderator approval before they are displayed.

Post Reply
 
Thread Tools
  #1    
Old July 18th, 2011, 12:49 PM
Jambo51's Avatar
Jambo51
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet

Advertise here
This is a very popular feature in HGSS, with good reason.
My question is this:

Would it be worthwhile to attempt to make something similar for FireRed?
Many people (myself included) have a very strong affinity for the original 8 bit music, and creating such a hack would open up hundreds of alternative uses for the routines used to play music.

As a proof of concept, I present these 2 youtube videos showing that the FR rom is capable of playing "pure" 8 bit music. (What I mean by this, is that each track heard in these tracks is actual Synth, and not a sample of synth played through the direct tracks.)

The videos:
http://www.youtube.com/watch?v=2AGYcEHERng
http://www.youtube.com/watch?v=fORic4oUTe8

For those wondering how this works, the New Sappy helps immensely.
Firstly, open the VoiceGroup editor within the new sappy, and navigate to voice 80 and 81 (0x50 and 0x51), and change it to match the following configurations.

BIG THANKS TO MR. PKMN, who showed me this function of the new sappy, and pointed me in the right direction to make it emulate the square instruments!

This works with any voicegroup, I just happened to choose that particular one.




Then comes the most complicated part for the simple music. Now we go to 82 (the "wave synth") and edit the wave to match the square wave of the actual Square instrument. This is surprisingly easy to do!



This is your basic setup. Remember to repoint the wave to free space, otherwise it'll overwrite the ARM code at the start of the rom, rendering it useless. Then select "Edit Wave..." Modify it so that it looks EXACTLY like this:



This makes the wave sound IDENTICAL to the Square instrument. Thus we overcome the lack of 3 synth channels.
This only affects the "wave synth" of the voicegroup you actually edit, so it's perfectly feasible to create a separate voicegroup specifically for the synth music!

The next thing we must do, is write some sort of check into the music table selecting routines, to change which table to read based on a variable/flag.

This is my code for this part of the rom. I had to be slightly imaginative to make this code work, and it will require a host of edits. First of all, the code:

Code:
.text
.align 2
.thumb
.thumb_func
.global gameboyplayerbackgroundroutine
main:
 add r3, r2, #0x4
 ldr r2, ramtable
 push {r0,r2-r7}
 ldr r0, flag
 bl decrypt
 add r1, r0, #0x0
 pop {r0,r2-r7}
 cmp r1, #0x0
 bne gbp
 ldr r1, normaltable
 b exit
gbp: ldr r1, gbptable
exit: lsr r0, r0, #0xD
 add r0, r0, r1
 mov pc, r3
decrypt: ldr r1, decry
 bx r1
.align
ramtable: .word 0x084A329C
normaltable: .word 0x084A32CC
gbptable: .word 0x08FFFFFF
flag:  .word 0x000008F0
decry:  .word 0x0806E6D1
Now, there are 5 locations where this code needs to be linked in. Thankfully, it's actually relatively simple to do so!
Navigate to 0x1DD0F8, 0x1DD124, 0x1DD170, 0x1DD1C4 and 0x1DD1F8 and change the code at ALL of the locations to:
Code:
 7A 46 XX 49 08 47
It's XX because the number should always be left unchanged, as it's loading from a pre-determined spot. Finally, replace all previously existing pointers to 0x4A32CC with a pointer to the THUMB routine, remembering to add 1 for thumb of course, and leaving the new pointer in the custom routine.

Obviously, you should make a new music/SFX table specifically for the GBP music. And make sure the music is in the same slots as the "normal" music. Ie, have the Wild Battle Music in slot 0x12A on both tables etc.

If you don't have a piece of GBP music for a tune in your game, you can always go the HGSS route and just put a pointer to the "normal" version instead!

If you correctly pulled this off, the game will show no ill effects of the insertion, and will continue to load music as it should. Feel free to change the flag used should you wish to.

At this stage, the music can actually be switched, but only by setting/clearing the flag in a script. For this to mimic HGSS's version, we would need to come up with a way to change the music on the fly. In other words, we would need an item which would return the player to the OW from the bag, then run a script which would change the flag/variable, followed by a fadedefault or a writebytetooffset 0x1 0x03000FC2, which would make the normal/gbp music play.

This routine has a distinct advantage. It gets applied RIGHT from the boot screen of the game. So if the player has the flag set for the GBP, it will play the GBP music right from the boot screen onwards!
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!

Last edited by Jambo51; July 20th, 2011 at 01:01 PM.
  #2    
Old July 20th, 2011, 09:56 AM
KingCyndaquil's Avatar
KingCyndaquil
Pokemon Master
 
Join Date: Oct 2009
Location: Chicago
Gender: Male
Nature: Relaxed
surprised nobody posted in this, but anyway, as it is possible for the game to play 8 bit music, how would you be able to switch between the new music and the old one?



3DS FC: 4184-2489-6268 (Pokemon Y)
  #3    
Old July 20th, 2011, 10:16 AM
Team Fail's Avatar
Team Fail
The fine line between in|sanity
Community Supporter
 
Join Date: May 2009
Age: 19
Gender: Male
Nature: Brave
Quote:
Originally Posted by KingCyndaquil View Post
surprised nobody posted in this, but anyway, as it is possible for the game to play 8 bit music, how would you be able to switch between the new music and the old one?
I think that only requires a switch.

DUDE AMAZING WORK. I love those sequences. But, how did you get them so perfect? Did you rip them?

Pairs:
Kevin, Echidna
Follow me on Twitter! @TeamFail
Alt 1, リザードン
Miiverse
Pokémon Hackers Online
Alt 2: Jack Cayman



[04:20.39] <@GoGo> I WILL INSERT WITH PLEASURE
[04:20.45] <@GoGo> shut it Bela

[05:41.55] <Team_Fail> Blue Spider is interesting, but #MEHMasterRace
[05:42.20] <diegoisawesome> Team_Fail: Sounds like a bunch of unmotivated people that still want to try to take over the world

Last edited by Team Fail; July 20th, 2011 at 10:23 AM.
  #4    
Old July 22nd, 2011, 01:16 AM
Jambo51's Avatar
Jambo51
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
I didn't rip them from Red, no. I'm not aware of any programme which would let me do so either. This will be slightly more complicated than I had thought it would as most songs in RBY and GSC had custom synth for their bass (or main track in the case of New Bark Town).

It turns out the GBP in HGSS was actually very lazily designed!

I've managed to write a script which would get executed on leaving the bag from an item which asks if you want to change the music mode. Pn saying yes, it immediately changes the music table, and plays the same song which was previously playing from the second table.

Obviously, this could be abused for plenty of other things, but the best use I can see is a GBP style use.
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
  #5    
Old July 22nd, 2011, 01:47 AM
Liquid Twilight's Avatar
Liquid Twilight
Super Geek
 
Join Date: Apr 2011
Location: New Bark Town
Age: 23
Gender: Male
Nature: Timid
I think this idea would be a nice nostalgia effect to all players. Plus for a hack with new music they could include an 8bit remix for a pseudo-nostalgia effect. Aside from the gameboy player implementation I cannot think of any other practical uses for such scripting though, but I definately think this should happen.
  #6    
Old July 22nd, 2011, 05:12 PM
Shiny Quagsire's Avatar
Shiny Quagsire
どないやねん, ヤドン
 
Join Date: May 2009
Location: Hoenn Safari Zone
Age: 16
Gender: Male
Nature: Jolly
I think to increase customisability (Just made that up...), you could set the table offsets to the very end of the ASM, and make it so the variable value looks of an offset in the table, so if the variable is 0x1, it'll look up the second offset. It's easy, and expands the concept. That way specific items could also only trigger specific music tables too.



  #7    
Old July 22nd, 2011, 08:13 PM
redriders180's Avatar
redriders180
Mastermind of Pokemon Glazed
 
Join Date: Jun 2010
Location: Path of Victory, Tunod
Gender: Male
Nature: Quirky
Send a message via AIM to redriders180 Send a message via Skype™ to redriders180
I thought maybe I could put in a little thing here...Could this also maybe be used for adding instruments to a track, similar how in BW, interacting with different people can cause the background music to have a different track.

Also, sorry to get kind of off topic, but can someone PM me the link to "New Sappy"? Seems like everyone has it but me...
  #8    
Old July 23rd, 2011, 01:06 AM
Jambo51's Avatar
Jambo51
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Quote:
Originally Posted by redriders180 View Post
I thought maybe I could put in a little thing here...Could this also maybe be used for adding instruments to a track, similar how in BW, interacting with different people can cause the background music to have a different track.

Also, sorry to get kind of off topic, but can someone PM me the link to "New Sappy"? Seems like everyone has it but me...
I highly doubt it would work this way, but we could probably come up with some clever way of doing it. There's a list of playing tracks somewhere in the RAM. We could directly hack that to add new tracks on the fly.

Quote:
Originally Posted by shiny quagsire View Post
I think to increase customisability (Just made that up...), you could set the table offsets to the very end of the ASM, and make it so the variable value looks of an offset in the table, so if the variable is 0x1, it'll look up the second offset. It's easy, and expands the concept. That way specific items could also only trigger specific music tables too.
It could easily support that, but having multiple music tables would be wasteful IMO, as they take up a large amount of space. Still, if you so wished, there would be no issues with using it. Mines simply uses a flag for simplicity's sake.
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
  #9    
Old September 30th, 2012, 07:35 PM
RichterSnipes's Avatar
RichterSnipes
Simpleton
 
Join Date: Oct 2011
Location: USA
Age: 21
Gender: Male
Nature: Modest
Sorry in advance for resurrecting this thread.

I have two questions about alternate playable tracks, particularly in conjunction with this GB Player patch that I'm using in my hack. They're very different, so it might take more brainpower to get them answered properly.

DISCLAIMER: I really don't know what I'm talking about when it comes to assembly code. All I can do is assemble it and insert it, along with change a few pointers within it.
  1. Is there a way that this ASM code (for the alternate playlist) can be combined with the ASM code seen in this thread (situational alternate tracks)? Both sets of code change data at offset 0x1DD0F6(8) for different purposes, making them impossible to use in conjunction in their current state. Would it be as simple as repointing a few areas of data to make one routine refer to the other, or would the procedure be more complex?
  2. I've found that I can't simply use Sappy to make alternate songs for a few tunes. For example, if I try to insert the 8-bit version of the Level-Up/Move Learned/Item Found/TM Obtained/pretty-much-everything-in-the-universe jingle (for FR/LG), things will seem to work alright...at first. However, once a Pokémon learns a move at level up, the jingle doesn't replay; there's only silence. It's even worse for the slot machine jingles, where they just won't play regardless of what I do. Any insight on this?
I appreciate any feedback received from these questions!

Last edited by RichterSnipes; October 18th, 2012 at 10:05 AM.
  #10    
Old September 30th, 2012, 09:57 PM
Jambo51's Avatar
Jambo51
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Quote:
Originally Posted by RichterSnipes View Post
Sorry in advance for resurrecting this thread.

I have two questions about alternate playable tracks, particularly in conjunction with this GB Player patch that I'm using in my hack. They're very different, so it might take more brainpower to get them answered properly.

DISCLAIMER: I really don't know what I'm talking about when it comes to assembly code. All I can do is assemble it and insert it, along with change a few pointers within it.
  1. Is there a way that this ASM code (for the alternate playlist) can be combined with the ASM code seen in this thread (situational alternate tracks)? Both sets of code change data at offset 0x1DD0F6(8) for different purposes, making them impossible to use in conjunction in their current state. Would it be as simple as repointing a few areas of data to make one routine refer to the other, or would the procedure be more complex?
Technically, if you called the variable music switcher first, then called mine, it would work, but there's more to it than that since mines relies on specific code changes at positions in the ROM which would conflict with the variable switcher.

Quote:
Originally Posted by RichterSnipes View Post
  1. I've found that I can't simply use Sappy to make alternate songs for a few tunes. For example, if I try to insert the 8-bit version of the Level-Up/Move Learned/Item Found/TM Obtained/pretty-much-everything-in-the-universe jingle (for FR/LG), things will seem to work alright...at first. However, once a Pokémon learns a move at level up, the jingle doesn't replay; there's only silence. It's even worse for the slot machine jingles, where they just won't play regardless of what I do. Any insight on this?
I inserted jingles and they worked fine. So that's odd.
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
  #11    
Old October 1st, 2012, 05:02 AM
RichterSnipes's Avatar
RichterSnipes
Simpleton
 
Join Date: Oct 2011
Location: USA
Age: 21
Gender: Male
Nature: Modest
Quote:
Originally Posted by Jambo51 View Post
Technically, if you called the variable music switcher first, then called mine, it would work, but there's more to it than that since mines relies on specific code changes at positions in the ROM which would conflict with the variable switcher.
I'm not going to further delve into what you mean by, "but there's more to it than that..." since I wouldn't know what to say about it. Would it seem more viable to make a new batch of code that combines both functions into one or do what it sounds like you're thinking of doing (have one refer to the other)?

I'm just wondering because it seems unfortunate for people to have to choose between one or the other as far as features in hacks go, but it's kind of understandable in this case.

Quote:
I inserted jingles and they worked fine. So that's odd.
Actually, the two instances I mentioned are the ONLY ones which that happens for. All other jingles (and songs, for that matter) work fine. In your observations, can a new tune just be put in its place through Sappy alone, or does it have to be of a certain length?

I seriously doubt my second guess of that question because re-assembling the exact same tune for one of those two instances still causes the same problem.
  #12    
Old October 1st, 2012, 09:33 AM
Jambo51's Avatar
Jambo51
Glory To Arstotzka
 
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Quote:
Originally Posted by RichterSnipes View Post
I'm not going to further delve into what you mean by, "but there's more to it than that..." since I wouldn't know what to say about it. Would it seem more viable to make a new batch of code that combines both functions into one or do what it sounds like you're thinking of doing (have one refer to the other)?

I'm just wondering because it seems unfortunate for people to have to choose between one or the other as far as features in hacks go, but it's kind of understandable in this case.
I'm certainly capable of combining the two, but personally I think it's a very hatchety way of picking what music you want to play. For example, I've already released hacks for Encounter music and battle music. I understand that sometimes, that doesn't quite suffice (like for one off battle tune changes or something), but I dislike anything which relies too heavily on variables. (If only because variables are unreliable in FR due to their nature of sharing memory space with other functions).

Quote:
Originally Posted by RichterSnipes View Post
Actually, the two instances I mentioned are the ONLY ones which that happens for. All other jingles (and songs, for that matter) work fine. In your observations, can a new tune just be put in its place through Sappy alone, or does it have to be of a certain length?

I seriously doubt my second guess of that question because re-assembling the exact same tune for one of those two instances still causes the same problem.
In my experience, the jingles play fine, but they get cut short (or the pause after them lasts too long) if their length doesn't match that of the original, but it wouldn't stop it from playing altogether, no. Perhaps the "Song Group" values are relates, since all the fanfares and jingles use 2, 2 for theirs, while all other songs (which I have seen) use 0, 0.

The song group appears on the assembly page, in case you were confused about that.
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
  #13    
Old October 1st, 2012, 12:50 PM
RichterSnipes's Avatar
RichterSnipes
Simpleton
 
Join Date: Oct 2011
Location: USA
Age: 21
Gender: Male
Nature: Modest
Quote:
Originally Posted by Jambo51 View Post
I'm certainly capable of combining the two, but personally I think it's a very hatchety way of picking what music you want to play. For example, I've already released hacks for Encounter music and battle music. I understand that sometimes, that doesn't quite suffice (like for one off battle tune changes or something), but I dislike anything which relies too heavily on variables. (If only because variables are unreliable in FR due to their nature of sharing memory space with other functions).
I completely get that. In fact, it makes sense to me considering that this "GB Player" routine is, essentially, just a more widespread version of the single tune switching routine seen in Shiny Gold. It does seem more useful than single tune switching, though, considering that the games today probably use completely different playlists for day/night tracks (or the poor man's GB Player/Sounds item in HG/SS).

(If I just angered any DS music hackers out there because of my incorrect notions, I'm sorry. I do intend to check out hacking for games on the system sometime soon.)

EDIT: I just took a look at your code, and it does seem quite helpful for its stated effect. Of course, it won't help for those one-off situations that you mentioned, especially for scripted Wild Pokémon battles. In that case, it would only negatively affect legendary scripted battles, as standard scripted battles work fine with the "dowildbattle" command. Could a similar routine change which Pokémon get attributed to the legendary music instead of the R/S/E trainer battle music?

If this question is getting too off-topic, feel free to PM me.

Quote:
In my experience, the jingles play fine, but they get cut short (or the pause after them lasts too long) if their length doesn't match that of the original, but it wouldn't stop it from playing altogether, no. Perhaps the "Song Group" values are relates, since all the fanfares and jingles use 2, 2 for theirs, while all other songs (which I have seen) use 0, 0.

The song group appears on the assembly page, in case you were confused about that.
Yeah, even considering everything you just said, I'm still having the same issue. I started a new game and raised a Charmander to Level 7. The fanfare didn't replay for the "CHARMANDER learned EMBER!" message. I'm using Sappy mod 17.1 for this. The new music appears in blank data and relates to the same song numbers as the base game counterparts. And the 8-bit tunes take up MUCH less space than the ones used in the standard game; duration doesn't seem to affect a thing, just size.

Last edited by RichterSnipes; October 1st, 2012 at 06:03 PM.
  #14    
Old October 11th, 2012, 06:27 PM
LCCoolJ95's Avatar
LCCoolJ95
Limited Capacity
 
Join Date: May 2009
Location: The World That Never Was
Age: 19
Gender: Male
Nature: Naive
This needs to be done in a G/S/C remake...
"The greatest obstacle in life is Yourself. Overcome it, and you will achieve the greatest accomplishment of all." -Art Beins, 1982

Fairy-type in Pokémon Emerald: http://www.pokecommunity.com/showpos...&postcount=288
  #15    
Old October 11th, 2012, 08:50 PM
RichterSnipes's Avatar
RichterSnipes
Simpleton
 
Join Date: Oct 2011
Location: USA
Age: 21
Gender: Male
Nature: Modest
Quote:
Originally Posted by LCCoolJ95 View Post
This needs to be done in a G/S/C remake...
You may have noticed from my discussion with Jambo51 above that, from what I can tell, there is currently no "clean" way of having both a GB Player (actually, a complete alternate playlist) and variable (single-) track switching in the same hack. Although it's technically possible to do so, it would be quite messy and, frankly, not worth the headache and acrobatics involved.

G/S/C (and HG/SS, and fan remakes) make use of alternate battle music (wild Pokémon, trainer, and gym leader) depending on if the player is in Johto or Kanto. From what I understand, the current hacks out there do this by having the game store tracks in variables and switching them out whenever the player switches regions through one of a very limited amount of means. Such code would directly conflict with the GB Player code, making it impossible to have both without making things awfully convoluted.

It's a shame, really. But I guess that's what HG/SS are for. If anything, someone needs to get to improving the quality of the 8-bit music in those games!
  #16    
Old October 16th, 2012, 08:32 AM
sab's Avatar
sab
Now too much of a life.
 
Join Date: Jul 2008
Location: Midgar
Age: 18
Gender: Male
Nature: Timid
Quote:
Originally Posted by Jambo51 View Post
I didn't rip them from Red, no. I'm not aware of any programme which would let me do so either...
I thought that there were special emulators that could rip them as a .gbs file?
anCay ouyay eakspay igpay atinlay? Ifay osay easeplay m.p.ay
emay enthay opycay anday astepay isthay inay ouryay ignaturesay.
  #17    
Old October 16th, 2012, 06:36 PM
diegoisawesome's Avatar
diegoisawesome
Not the Script Help Thread
Community Supporter
 
Join Date: Dec 2007
Location: Goldenrod City, Johto
Age: 17
Gender: Male
Nature: Quirky
Quote:
Originally Posted by RichterSnipes View Post
You may have noticed from my discussion with Jambo51 above that, from what I can tell, there is currently no "clean" way of having both a GB Player (actually, a complete alternate playlist) and variable (single-) track switching in the same hack. Although it's technically possible to do so, it would be quite messy and, frankly, not worth the headache and acrobatics involved.

G/S/C (and HG/SS, and fan remakes) make use of alternate battle music (wild Pokémon, trainer, and gym leader) depending on if the player is in Johto or Kanto. From what I understand, the current hacks out there do this by having the game store tracks in variables and switching them out whenever the player switches regions through one of a very limited amount of means. Such code would directly conflict with the GB Player code, making it impossible to have both without making things awfully convoluted.

It's a shame, really. But I guess that's what HG/SS are for. If anything, someone needs to get to improving the quality of the 8-bit music in those games!
Well, the incompatibility of the two comes from the fact that the code Mastermind_X wrote up isn't exactly the best way of handling the music swaps. For example, with a more complex and robust music changer, then having both would be rather easy. If someone would go through all the trouble of making GSC 8-bitish songs in good quality for CrystalDust, then I would certainly put in this feature (and CrystalDust includes the more robust music-swapping code I talked about).


My other resources:
My Website
diegoisawesome's MEGA-HUGE XSE Scripting Tutorial
diegoisawesome's Miscellaneous Finds
The Ruins of Alph Puzzles
  #18    
Old October 16th, 2012, 08:36 PM
RichterSnipes's Avatar
RichterSnipes
Simpleton
 
Join Date: Oct 2011
Location: USA
Age: 21
Gender: Male
Nature: Modest
Quote:
Originally Posted by sab View Post
I thought that there were special emulators that could rip them as a .gbs file?
I wasn't aware of this. However, from what I know, .gbs files aren't in any sort of format that could be made compatible with neither. s files used in Sappy nor MIDI files. Do those .gbs files come in a format that can be read through a text/code editor? Just curious.

Quote:
Originally Posted by diegoisawesome View Post
Well, the incompatibility of the two comes from the fact that the code Mastermind_X wrote up isn't exactly the best way of handling the music swaps. For example, with a more complex and robust music changer, then having both would be rather easy. If someone would go through all the trouble of making GSC 8-bitish songs in good quality for CrystalDust, then I would certainly put in this feature (and CrystalDust includes the more robust music-swapping code I talked about).
Ah, that's why I said it'd be complicated and a bit messy, not impossible. I know it's possible, considering Jambo51 said as such before. Of course, I'm happy to see that you've managed to do so in a relatively sensible manner for CrystalDust!

As for those 8-bit songs, I might actually be able to make some tracks to suit your purposes! As of right now, I'm remastering my 8-bit songs for FireRed. How, exactly? Well, I've resorted to actually looking at the disassemlbed code (and, in some cases, the RAW code) from the original Red ROM itself. I've found a correlation between the way the GameBoy handles music and how the GBA replicates those functions. Now, all my 8-bit tracks, noise instruments aside, are beginning to sound like exact replicas of the tracks played from the original game itself! They're of much higher quality than what I've most recently made available.

...I did have more to say after this, but I found it more appropriate to send it via PM. So, I have!
  #19    
Old October 17th, 2012, 07:19 PM
sab's Avatar
sab
Now too much of a life.
 
Join Date: Jul 2008
Location: Midgar
Age: 18
Gender: Male
Nature: Timid
Quote:
Originally Posted by RichterSnipes View Post
I wasn't aware of this. However, from what I know, .gbs files aren't in any sort of format that could be made compatible with neither. s files used in Sappy nor MIDI files. Do those .gbs files come in a format that can be read through a text/code editor? Just curious.
Okay... I've done some searching, and here's what I could come up with for the .gbs files: [link] My whole thought was that maybe this would be a good way to skip any "by ear" problems with songs, but I can't find much good documentation on how they are structured.
Also on a semirelated note, these links may help with manual music extraction: [link1] [link2]Those should almost definatly be of some use, assuming music extraction is still desired.

[EDIT1] okay how dumb am I? I looks like the .gbs files are pretty much .gb roms with everything but the music taken out.
anCay ouyay eakspay igpay atinlay? Ifay osay easeplay m.p.ay
emay enthay opycay anday astepay isthay inay ouryay ignaturesay.

Last edited by sab; October 17th, 2012 at 07:27 PM.
  #20    
Old October 18th, 2012, 09:59 AM
RichterSnipes's Avatar
RichterSnipes
Simpleton
 
Join Date: Oct 2011
Location: USA
Age: 21
Gender: Male
Nature: Modest
Quote:
Originally Posted by sab View Post
Okay... I've done some searching, and here's what I could come up with for the .gbs files: [link] My whole thought was that maybe this would be a good way to skip any "by ear" problems with songs, but I can't find much good documentation on how they are structured.
Also on a semirelated note, these links may help with manual music extraction: [link1] [link2]Those should almost definatly be of some use, assuming music extraction is still desired.
I remember looking at those articles before. I initially discounted them because it didn't look like there was enough in common between how GameBoy and GBA music was structured. However, with a bit of experimentation, I've found that all of those fine details actually can be properly had with .s format music. This requires a ton of voice changes throughout each song, but I now know how to majorly "translate" between the two formats. I'm still confused with how smooth, swift volume rises work (I currently just have the actual volume change, which is actually the "wrong" thing to do for GB Synth tracks) and how to utilize "E8," though.

Too bad I don't know programming, then I could just make something that would do the laborious job for me!

Last edited by RichterSnipes; October 20th, 2012 at 12:14 AM.
Post Reply
Quick Reply

Sponsored Links


Advertise here
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 12:02 AM.

About Us
© 2002 - 2014 The PokéCommunity™, pokecommunity.com. Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.

Copyright
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com. PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator. Header artwork by Jordanice of deviantART.

Social Media
If you would like to stay up-to-date with us on the go, when we're down, or other such things, follow us on social media sites--most notibly Twitter, Facebook, and Google Plus--by clicking on the links provided.

Design presented by Peitharchia. Special thanks to Hiroshi Sotomura and Ausaudriel.