PDA

View Full Version : [Tutorial] [FR/LG R/S/E] Repointing Cries and Custom Instruments


RedYoshi
November 12th, 2009, 08:41 PM
Before anything, read DJG's tutorial (http://www.pokecommunity.com/showthread.php?t=199151) first to figure out how
to insert cries.

IMPORTANT:You should also have a good understanding of how to use a Hex-Editor and PokeCryGUI

Hello everyone, this is a tutorial that'll teach you how to re-point cries using a Hex-Editor and a nifty way to use custom instruments!

WAV file requisites:
The Wave file should be in 8bit format, with 11k hz frequency. I'm not sure if being Stereo or Mono will affect the encoding process.

Here are the 2 Programs I mainly use for sound editing.

Audacity - Very useful for practically anything. Good for Pitch/Volume adjusting.
http://audacity.sourceforge.net/

FlexiMusic Wave Editor - Simple to use WAV file editor which makes it simple to export in 8bit 11khz format, however it costs $20. The free trial lasts for a Week
http://www.fleximusic.com/waveditor/overview.htm

Re-Pointing Cries
Well, from what I've read from DJGs PokeCry tutorial, the Sample Size has to be bigger than the Sample WAV, which can make importing some cries a hassle. By re-pointing you will avoid any errors caused by overwriting existing data, as in screwing up the cry data of another Pokemon because of the newly inserted Cry Data being longer than the original.


CRY TABLES
Ruby US v1.0
0x452590

Sapphire US v1.0
0x4525EC

FireRed US v1.0
0x48C914

LeafGreen US v1.0
0x48C1F0

Emerald US v1.0
0x69DCF4


Let's Begin.
Choose the cry you will be re-pointing, in this case I'll use Bulbasaur's cry. I will be importing Shieldon's cry. The WAV file is much larger than the Sample/Original one.

PART ONE: Inserting Your Cry
Important Note: Load the Cry Table in PokeCryGUI and where it says PokeID type in the ID of the Pokemon whose cry you will be re-pointing
and hit SAMPLE. Now write down the SAMPLE OFFSET, it will be needed in a much later step.

http://i924.photobucket.com/albums/ad86/RedtheYoshi/FIrstPICturs.png
So for me, Bulbasaur's SAMPLE OFFSET is 50 FB C4

So to begin with, insert your cry to an empty offset, please note that the encoded cry will take a good amount of free space.

For this tutorial I will use the offset 0x800000.
So set your "Sample Offset" to the offset you will be using; I will use 800000. MAKE SURE TO UNTICK "USE TABLE"
http://i924.photobucket.com/albums/ad86/RedtheYoshi/offset0x800000.png


Now hit encode.


PART 2: Re-Pointing the Offset
Now that you've inserted the cry, its time to find the CRY POINTER of the Pokemon whose cry you will be re-pointing. The cry uses 12 bytes (correct me if I used the wrong term here)
(example: FF FF FF FF FF FF FF FF FF FF FF FF)


The way to find your cry pointer in a hex editor would be by searching for this string in your hex editor

20 3C 00 00 (SAMPLE ID offset in REVERSE HEX)08 FF 00 FF 00

Use the code below:
20 3C 00 00 XX XX XX 08 FF 00 FF 00
My SampleID offset is: 50 FB C4
So my offset would be: 20 3C 00 00 C4 FB 50 08 FF 00 FF 00
and you should come up to your cry data pointer

So the data for Bulbasaur's cry in FireRed will look like this.

http://i924.photobucket.com/albums/ad86/RedtheYoshi/POINTER111.png

THE RED IS WHAT WE REALLY NEED TO LOOK AT
20 3C 00 00 C4 FB 50 08 FF 00 FF 00

See whats in red? It is your Sample Offset from PokeCryGUI, but in reverse hex.

Whats in red is your pointer to the Cry data, but again in Reverse Hex

This is what we will be editing in our Hex-Editor, for this step you will need to write the offset where you encoded the cry data (the free offset you used in the first part) in reverse hex.

I encoded the Cry data to the offset: 800000

So break this up into: 80 00 00 and flip it around to-> 00 00 80
now paste that in your hex editor where your pointer data is. (The part colored in Red...)

http://i924.photobucket.com/albums/ad86/RedtheYoshi/RepOinters.png

Hit save on your Hex-Editor and you're done! The cry has been re-pointed!
With re-pointing you can insert any size cry to any pokemon you want!

Now to move on to the funner parts of Cry Inserting.

Custom Instruments for Music
Quick example of a Custom Instrument:
<object width="445" height="364"><param name="movie" value="http://www.youtube.com/v/9qyDEPDmmOg&hl=en_US&fs=1&rel=0&color1=0x006699&color2=0x54abd6&border=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/9qyDEPDmmOg&hl=en_US&fs=1&rel=0&color1=0x006699&color2=0x54abd6&border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="445" height="364"></embed></object>


Now, before anything, you should read AnimeX's tutoria (http://www.pokecommunity.com/showthread.php?t=189547)l on custom VoiceGroups to get a good idea on how instrument hex-data/pointer is written and such.

Important Note: This is still being experimented with, don't expect any perfect results your first time. I encourage others to try experimenting with this also, there are some instruments which aren't as easy to replace like the Strings and Timpani. Im guessing the Midi KeySplite table and Samples Type affect this.

*Samples Type (4 Bytes)
*Sample Pointer (4 Bytes)
*Midi key split table pointer (4 bytes)
Well, by now you should know how cry data is written in hex
(20 3C 00...). It uses 12 Bytes (correct me if I used the wrong term here xD) and instrument data also uses 12 bytes. The way PokeCry encodes cry data is similar to the encoded Instrument data.

VoiceGroups use pointers for their Instrument Data similar to the way Cries use pointers for their Cry Data.

In a nutshell: VoiceGroups use pointers, the same way Cries use pointers, and through copy/pasting, we can use the Cries as Instruments and Vice-Versa.

So my Bulbasaur Cry Pointer is
[S-HIGHLIGHT]20 3C 00 00 C4 FB 50 08 FF 00 FF 00 [/S-HIGHLIGHT]

I'll use the trumpet here as an example. The pointer for the Trumpet data in hex is
[S-HIGHLIGHT]40 00 00 00 5C A5 48 08 E4 30 4A 08[/S-HIGHLIGHT]

See how they only use 12 bytes? If you were to paste your cry data over the trumpet data in any voice-group, the cry would be used as an instrument, and there you go, custom instruments. So here's a quick step guide.

1: Encode a cry/instrument sound to an empty offset.

2. Make a Pointer to your encoded data using the format below:

20 3C 00 00 XX XX XX 08 FF 00 FF 00 XX XX XX is where the offset you used should be (Reverse Hex!)


3. Go to the address of a VoiceGroup in your hex editor.
(List of VoiceGroups in Fire-Red (http://www.pokecommunity.com/showthread.php?t=148811))
(List of VoiceGroups in R/S/E) (http://www.pokecommunity.com/showthread.php?t=158512)

4. Paste your Cry/Instrument Pointer over an instrument of your choice in any voicegroup.
Find the instrument pointers (Under the section titled "Hex Values")on AnimeX's Custom Voicegroup Tutorial
[S-HIGHLIGHT]
Important Note: You may have to adjust the Pitch of your WAV file for instruments in order for them to sound right in your Rom.

My best guess would be that the WAV file encoded is the C5 key (Middle Key in a Piano), though I don't have proof of this as of yet...[/S-HIGHLIGHT]

There you go, custom instruments! The end result should be similar to the video.


CREDITS:

DJG - For the tutorial on Cry Inserting
AnimeX - The tutorial on Custom Voice groups + the Instrument Hex Values
Magnius - The list of FireRed VoiceGroups
HackMew - The list of Cry Tables for PokeCry


DO NOT TAKE WITHOUT PERMISSION

NTA
November 14th, 2009, 10:34 AM
having a little troublle finding it in my hex editor im using hex workshop >_>

RedYoshi
November 14th, 2009, 10:38 AM
having a little troublle finding it in my hex editor im using hex workshop >_>

Exactly what are you having trouble finding?

NTA
November 14th, 2009, 10:41 AM
this always happens i tell someone it isnt working then i do it again and it works >.>

i was searching for this: 20 3C 00 00 and i was more than sure it said something about not being found but i just did it again and it worked :D thnx for the um tutorial

also if i reversed 8002F8 would it be F82008 right?

RedYoshi
November 14th, 2009, 10:44 AM
this always happens i tell someone it isnt working then i do it again and it works >.>

i was searching for this: 20 3C 00 00 and i was more than sure it said something about not being found but i just did it again and it worked :D thnx for the um tutorial

also if i reversed 8002F8 would it be F82008 right?

Break it up into this, 80 02 F8

flip it around to F8 02 80

NTA
November 14th, 2009, 10:46 AM
lol thanks :) i was close
if i have any more problems ill let u know if i cant understand ;)

RedYoshi
November 14th, 2009, 01:09 PM
One important note for those inserting new instrument sounds:

You may have to adjust the Pitch and Volume of your instrument sound. In some cases the sound will be a little off. I've included links to two programs which are IDEAL for Cry inserting. I am still looking for a free alternative for Fleximusic Wave Editor

Liquid Shadow
November 14th, 2009, 09:08 PM
Hmm... this is interesting.

A few months ago I imported FireRed instruments into Ruby. This, however, lets you import any instrument... The only problem for me is how on earth do you get the WAV file for an instrument?

RedYoshi
November 14th, 2009, 10:39 PM
Hmm... this is interesting.

A few months ago I imported FireRed instruments into Ruby. This, however, lets you import any instrument... The only problem for me is how on earth do you get the WAV file for an instrument?

Well, you can rip sounds from other games using the "Record Sound" feature (This is where I recommend using Audacity to edit the sound clip), or you could try some sound packs for Fruity Loops Studio. There's tons of them out there and most are in WAV format. In fact, that's how I got the sample sound for the "Custom Instrument" video.

AmineX
November 17th, 2009, 01:12 AM
I havea better to resample the waves free
Link:http://www.voxengo.com/product/r8brain/
resample to: 21024 Hz 8 Bit to get the best sound quality

Great Mazinger
November 20th, 2009, 02:55 PM
Programs such as GBA2MIDI and VGM Trans can export samples from compatible GBA and DS games. It's also possible in a slightly more roundabout way to extract samples from PSF and PSF2 music files.

NTA
November 20th, 2009, 02:56 PM
I havea better to resample the waves free
Link:http://www.voxengo.com/product/r8brain/
resample to: 21024 Hz 8 Bit to get the best sound quality

lol i set it to 21024 Hz 8bit and i sounds distant :(

RedYoshi
November 20th, 2009, 09:42 PM
Programs such as GBA2MIDI and VGM Trans can export samples from compatible GBA and DS games. It's also possible in a slightly more roundabout way to extract samples from PSF and PSF2 music files.

Yea, theres this program called "Nintendo Ds Sound Extractor" or NdsSndExt. Its a pretty useful program which rips Voice Clips, Instrument Sounds, and Midi Compositions from a Nintendo Ds Rom

Here's the attachment below.

Also there's this program which lets you save WAV samples from an SNES rom, but most of the sounds are just voice clips and sound effects. Not so much instruments.

http://www.zophar.net/utilities/rippers/snessor95.html (http://www.zophar.net/utilities/rippers/snessor95.html)

jjboy22
November 21st, 2009, 11:54 AM
im confused on how to get the cry of a pokemon can someone help me

12345
December 8th, 2009, 11:37 PM
This isn't work with all free offset. I found many free spaces and only some of them work. In Emerald, there aren't many free space, and can I reponit it with offset that have 7 number, such as 1011FB3....

rokrdude
December 8th, 2009, 11:45 PM
Thanks a million for the tutorial
I was looking everywhere for it and finally i found it.

Bozster
December 28th, 2009, 06:59 AM
This is a great tutorial, and explains why my Dialga cry sounded like this in game:
51677(Creepy)
Just one question, though:
With Audacity, how do you change it to 8-bit?

RedYoshi
December 29th, 2009, 11:39 AM
This is a great tutorial, and explains why my Dialga cry sounded like this in game:
51677(Creepy)
Just one question, though:
With Audacity, how do you change it to 8-bit?

It's rather complicated to explain how to do it on Audacity. You're better off using
this program right here. This one is not as complicated
http://www.voxengo.com/product/r8brain/

Bozster
April 10th, 2010, 01:38 AM
It's rather complicated to explain how to do it on Audacity. You're better off using
this program right here. This one is not as complicated
http://www.voxengo.com/product/r8brain/

Brilliant! Thanks for the help!

Sorry to bother you, but I have one more question - how do you change the cries of the ? Pokemon in between Celebi and Treecko? Because If I try to repoint one, it repoints all of them, including Unown's.

xGGxToiZ
April 16th, 2010, 11:49 PM
I've been waiting for a tut like this!

Thanks! ^^

But I have discovered some "odd" things with the offsets.

Refer to my other post.

zZJoennZz
April 17th, 2010, 06:35 AM
It's look like hard ~_~ ...... but nice tutorials!

giradialkia
April 17th, 2010, 12:39 PM
Brilliant! Thanks for the help!

Sorry to bother you, but I have one more question - how do you change the cries of the ? Pokemon in between Celebi and Treecko? Because If I try to repoint one, it repoints all of them, including Unown's.

Unown's and the slot's cries are the same thing- I don't think they're actually separate cries, but they definately make the same sound, so I'd assume they're actually using the one cry.

xGGxToiZ
April 19th, 2010, 01:56 AM
I don't know if this has been discovered already.(Too tired to read)

When re-pointing cries, free space offsets that ends in B, E and F somehow don't work.

Well at least, for me.

How about you people?

Jackson5fan7
May 1st, 2010, 09:32 PM
im having troubles with cries cuz it sound a bit odd can someone help me:/

12345
May 1st, 2010, 11:52 PM
I don't know if this has been discovered already.(Too tired to read)

When re-pointing cries, free space offsets that ends in B, E and F somehow don't work.

Well at least, for me.

How about you people?

I used xx0000 free space offsets, it always works.
xx is random.

xGGxToiZ
May 2nd, 2010, 02:02 AM
I used xx0000 free space offsets, it always works.
xx is random.

No. I mean 0x80000B or 0x80000E/F.
The number/letter at the END of the offset was the one I'm talking about.

ManInTheMask
September 17th, 2011, 11:34 AM
ManInTheMask here. Can you use the Diamond, Pearl, Platinum, Heart Gold, and Soul Silver instruments too? (Also Black and White!)