You are not logged in.
Double speed speeds up loading times significantly (maps load instantly). To change the actual speed of the game, consider removing calls to DelayFrame (gold: 0x32e, crystal: 0x45a) from nonessential functions (that use it for timing besides anything else).
Last edited by comet (2013-03-22 17:16:06)
Offline
Double speed speeds up loading times significantly (maps load instantly). To change the actual speed of the game, consider removing calls to DelayFrame (gold: 0x32e, crystal: 0x45a) from nonessential functions (that use it for timing besides anything else).
I havn't known that. But this aint, what I ment by double speed. I was talking about a Gameboy or Emulator running with 200% clock speed.
Offline
What is the offset of the Route 29 music? Anyone? I need to know it!
Hacks Gameboy 8-bit music in Pokémon Gen I & II, composes 8-bit music in LSDJ and FamiTracker.
“God created the Earth, but the Dutch created the Netherlands.”
Offline
Hi, thank you so much for this awesome information! Really! But I have a problem, don't know what I'm doing wrong.
Im trying to rip musics (for a pokemon for arduino) without success. This is exactly what Im doing:
Go to position 0x822E (Pallet Town). There I found this header
80 -> 3 channels
c5 67 ->pointer to channel 1
01
5F68 -> pointer to channel 2
02
DE68 -> pointer to channel 3
Now I go to the position 0xC567 where there are the following bytes:
[ 21 ] #C 1/8
[ e1 ] Octave 6
[ c3 ] No note 1/4
[ 3e ] D
byte b is out of range!
This is the output of my program, out of range means no match found.
In the last byte 3E, 3 matches with note D but dont know what means.
Searching for internet I saw some people that says that an offset must be added when going to the data music but I didnt found this offset (neither I know if this is true).
Can you help me? I will upload all the code to github if I can do something useful.
Thank you
Offline
...
Channel 1: $A7C5
Channel 2: $A85F
Channel 3: $A8DE
Hacks Gameboy 8-bit music in Pokémon Gen I & II, composes 8-bit music in LSDJ and FamiTracker.
“God created the Earth, but the Dutch created the Netherlands.”
Offline
Thank you!
Searching this in google I found this http://datacrystal.romhacking.net/wiki/ … ue:ROM_map but Im wondering if there is any way to calculate it
Offline
The thing is that you're simply calculating pointers in a wrong way.
Since the music header starts at $822E, the rom bank it is in starts at offset $8000 and ends at offset $BFFF.
The first pointer is c5 67 which tells that the channel 1 is located in offset;
0x8000 + 0x67C5 - 0x4000 = 0xA7C5.
Look for more information on calculating GB/C pointers elsewhere.
Offline
Didn't know this about pointers, thank you! Now I think that I have eveything. Now I will try to convert it to MIDI or some stantard format
Offline
The command E0 in pokemon crystal is pitch bend. The parameters are XX YZ. XX is unknown, Y is octave, and Z is note. This is why I always had issues when porting the RBY songs...
This isn't easy to say, but…
Music and ASM hacker
Offline
The command E0 in pokemon crystal is pitch bend. The parameters are XX YZ. XX is unknown, Y is octave, and Z is note. This is why I always had issues when porting the RBY songs...
XX could stand for how fast the pitch slides, to how high/low, and if it sides up or down.
Hacks Gameboy 8-bit music in Pokémon Gen I & II, composes 8-bit music in LSDJ and FamiTracker.
“God created the Earth, but the Dutch created the Netherlands.”
Offline
There's still something wrong with it, because the safari zone is still the only song that sounds correct when i ported it (out of ones that use pitchbend)
The RBY title screen sounds like the pitch doesn't bend at all
EDIT: Nevermind, apparently in RBY, the pitchbend can effect all channels. The Pitchbend in Crystal doesn't effect the wave channel (not sure about channel 2).
The title screen has pitchbend on the wave channel, so I had to improvise...
Last edited by FroggestSpirit (2014-01-23 00:37:02)
This isn't easy to say, but…
Music and ASM hacker
Offline
I decided to look into the disassembly of Crystal to find wave samples. There are 10 wave samples you can use in channel 3 via DC xx command, the rest is undefined and used the drum kit data as a sample. I plotted them in my tracker program and play it.
Here is the wave pattern of every 16 samples:
Here is what they sounded like (each sample plays middle C note for 1 second)
Offline