The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Tools, Tutorials & Resources
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Tools, Tutorials & Resources Various tools to help you develop your hacks can be found here.
New threads in this forum are to be approved by a moderator before they are displayed.


Advertise here

Reply
 
Thread Tools
  #26    
Old March 13th, 2009, 01:37 PM
Liquid Shadow's Avatar
Liquid Shadow
xD
 
Join Date: Mar 2008
Gender:

Advertise here
Quote:
Originally Posted by Pokemon Jupiter Version View Post
Actually, the reason why the tracks octaves are low (or high for the bass notes) is because, unlike Pokemon, all of the instruments are set at the same frequency. Unless you import every single last instrument wav, you'll have to edit them manually. And I'm keeping how to do this a secret until a later release of Jupiter *wink*

I've hacked TLA's songs before, it's kind of hard to get the instruments to sound correct.

Oh yes, I just remembered that "That town with the dead dude" is really called "Yallam". Damn me being so inconsiderate of the fictional deceased.
Mmk. Sorry to sound stupid here but.. what's an octave lol? Also when you are done with the Golden Sun 1 VM me or post it here. Thanks in advance.

Oh, and TSK. Thanks a lot. Now I don't have to go through the hassle of looping the songs, I can just export tracks using modern sappy =).

EDIT: I see what you guys mean by octaves... xD. So I guess I CAN'T import the tracks and make them sound right without editing the instruments (which I don't want to do since I'm importing a variety of music, not just Golden Sun). I guess I'll do it the old way and loop em myself. It sounds better that way, because the volume isn't all messed up and the instruments aren't all messed up. Thanks anyway, I might still use it for some songs that don't sound messed up as much though.
__________________

4 truths of life
1. You cannot touch all your teeth with your tongue.
2. All idiots, after reading the first truth, will try it.
3. And discover that the first truth is a lie.
4. You're smiling now because you're an idiot.

Last edited by Liquid Shadow; March 13th, 2009 at 02:02 PM.
Reply With Quote
  #27    
Old July 7th, 2009, 05:50 AM
daigonite's Avatar
daigonite
Ninjas Against Bottomless Pits
Community Supporter
 
Join Date: Feb 2009
Location: With the Birds
Age: 21
Nature: Impish
Some new stuff about GBA music hacking!

A list of commands/arguments from Atrius:
Quote:
The audio track data is a list of commands and arguments for playing music/sound effects.

Anything below 0x80 is an argument, and anything 0x80 and above is a command.

0x80 - 0xB0 = Rest commands of varying lengths, to wait a certain amount of time before playing each note.

0xB1 = Stop command, to signal the end of the audio track. From what I've noticed even if a song loops it has one of these after the loop command.

0xB2 = Jump command, to jump the playback pointer to another location in memory. Often used to loop songs by jumping back to the beginning of it.

0xB3 = Jump command where playback can jump back to after it again later. Used when you want to repeat part of a song before continuing with the rest of it.

0xB4 = Return to last 0xB3 command.

0xB5-0xBA = Unidentified

0xBB = Set Tempo

0xBC = Set Pitch offset

0xBD = Set instrument

0xBE = Set Volume

0xBF = Set Panning

0xC0 - 0xCE = Unidentified

0xCF - 0xFF = Play notes of varying lengths.


So to break apart the track information I gave you:

BE FF BC 00 BB 01 BD 00-CF 3C 7F B0 B1

BE FF = A volume command with an argument of 0xFF (Volume is an odd exception to the rule that arguments must be less than 0x80)

BC 00 = Set the pitch offset to zero

BB 01 = Very low tempo so that the note is drawn out long enough for voice samples to play their full length.

BD 00 = Set the instrument to the first entry in the instrument map.

CF 3C 7F = Play a note with a pitch of 0x3C (Right in the middle of the available range), and a volume of 0x7F (The maximum available)

B0 = Wait long enough for the note to finish playing

B1 = End the audio track
And some arguments for those commands:
Pitch

Pitch is very easy to understand. As Atrius noted, it is follows the byte 0xBC (which is usually the first byte in a given track anyhow). Pitch works like this:

0x00 is the base, equivalent to Middle C.

0x0C is one octave higher; High C.

0xF4 is one octave lower; Low C.

If you haven't noticed, it goes by increments of 0x0C, so for higher increments, they would be 0x18, 0x24, ect, while for lower increments they would be 0xE8, 0xDC, ect.

Tracks can be transposed by any value, however, so if you wanted it to be in a different key, you could change these values. If done, make sure to add/subtract 0x0C when raising/lowering octaves.

Tempo
Tempo is simply the tempo transfered into Hex. So, if your original tempo was 80, you would put in 0x50. It follows a 0xBB byte.

Instruments
The instruments correspond with the instruments of the voicegroup. Although the instruments can be anything you want, the typical way is to have the instruments correspond directly. It follows a 0xBD The direct map:

PIANO
0x00 Acoustic Grand (often used as a drum kit)
0x01 Bright Acoustic
0x02 Electric Grand
0x03 Honky-Tonk
0x04 Electric Piano 1
0x05 Electric Piano 2
0x06 Harpsichord
0x07 Clav

CHROMATIC PERCUSSION
0x08 Celesta
0x09 Glockenspiel
0x0A Music Box
0x0B Vibraphone
0x0C Marimba
0x0D Xylophone
0x0E Tubular Bells
0x0F Dulcimer

ORGAN
0x10 Drawbar Organ
0x11 Percussive Organ
0x12 Rock Organ
0x13 Church Organ
0x14 Reed Organ
0x15 Accoridan
0x16 Harmonica
0x17 Tango Accordian

GUITAR
0x18 Acoustic Guitar(nylon)
0x19 Acoustic Guitar(steel)
0x1A Electric Guitar(jazz)
0x1B Electric Guitar(clean)
0x1C Electric Guitar(muted)
0x1D Overdriven Guitar
0x1E Distortion Guitar
0x1F Guitar Harmonics

BASS
0x20 Acoustic Bass
0x21 Electric Bass(finger)
0x22 Electric Bass(pick)
0x23 Fretless Bass
0x24 Slap Bass 1
0x25 Slap Bass 2
0x26 Synth Bass 1
0x27 Synth Bass 2

STRINGS
0x28 Violin
0x29 Viola
0x2A Cello
0x2B Contrabass
0x2C Tremolo Strings
0x2D Pizzicato Strings
0x2E Orchestral Strings
0x2F Timpani

ENSEMBLE
0x30 String Ensemble 1
0x31 String Ensemble 2
0x32 SynthStrings 1
0x33 SynthStrings 2
0x34 Choir Aahs
0x35 Voice Oohs
0x36 Synth Voice
0x37 Orchestra Hit

BRASS
0x38 Trumpet
0x39 Trombone
0x3A Tuba
0x3B Muted Trumpet
0x3C French Horn
0x3D Brass Section
0x3E SynthBrass 1
0x3F SynthBrass 2

REED
0x40 Soprano Sax
0x41 Alto Sax
0x42 Tenor Sax
0x43 Baritone Sax
0x44 Oboe
0x45 English Horn
0x46 Bassoon
0x47 Clarinet

PIPE
0x48 Piccolo
0x49 Flute
0x4A Recorder
0x4B Pan Flute
0x4C Blown Bottle
0x4D Shakuhachi
0x4E Whistle
0x4F Ocarina

SYNTH LEAD
0x50 Lead 1 (square)
0x51 Lead 2 (sawtooth)
0x52 Lead 3 (calliope)
0x53 Lead 4 (chiff)
0x54 Lead 5 (charang)
0x55 Lead 6 (voice)
0x56 Lead 7 (fifths)
0x57 Lead 8 (bass+lead)

SYNTH PAD
0x58 Pad 1 (new age)
0x59 Pad 2 (warm)
0x5A Pad 3 (polysynth)
0x5B Pad 4 (choir)
0x5C Pad 5 (bowed)
0x5D Pad 6 (metallic)
0x5E Pad 7 (halo)
0x5F Pad 8 (sweep)

SYNTH EFFECTS
0x60 FX 1 (rain)
0x61 FX 2 (soundtrack)
0x62 FX 3 (crystal)
0x63 FX 4 (atmosphere)
0x64 FX 5 (brightness)
0x65 FX 6 (goblins)
0x66 FX 7 (echoes)
0x67 FX 8 (sci-fi)

ETHNIC
0x68 Sitar
0x69 Banjo
0x6A Shamisen
0x6B Koto
0x6C Kalimba
0x6D Bagpipe
0x6E Fiddle
0x6F Shanai

PERCUSSIVE
0x70 Tinkle Bell
0x71 Agogo
0x72 Steel Drums
0x73 Woodblock
0x74 Taiko Drum
0x75 Melodic Tom
0x76 Synth Drum
0x77 Reverse Cymbal

SOUND EFFECTS
0x78 Guitar Fret Noise
0x79 Breath Noise
0x7A Seashore
0x7B Bird Tweet
0x7C Telephone Ring
0x7D Helicopter
0x7E Applause
0x7F Gunshot (also commonly used as a drum kit)


Volume
Volume is a simple concept as well, but unlike most of the song arguments, it must be a value less than 0x80, or else (for some whacked out reason) it acts as a rest o.o

It follows 0xBE.

Panning
I need to investigate panning a little more, but I do believe that 0x00 is the neutral value. Either that, or it's 0x0C. I believe that pan's range is from 0x00 to 0x0F.
__________________
Reply With Quote
  #28    
Old July 7th, 2009, 09:54 AM
Full Metal's Avatar
Full Metal
C(++) Developer.
Community Supporter
 
Join Date: Jan 2008
Location: In my mind.
Age: 19
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
I'm sorry but I don't understand any of this, would someone be willing to add screenies?
in peticular the copying part and sappy part, I'm able to get the song.gba just fine, and the end of the file isn't just 00's or nothin it's a variety, I just don't understand what i'm supposed to copy (the entire file? the part at the end that seems to separate itself from rest of song.gba?) and where i'm to put the copied part, and then how to do the stuff with sappy.
Wait....
do you just take the 'song part' put it at the beginning of the file then delete the rest of song.gba?
then import that track through sappy?
I'm confused so badly right now.
And to help further my understanding, is the stuff we copy the equivelant of using mid2gba (hex wise)?
eg mid2gba makes a track the same as TR makes a song.gba that contains a track equivelent to midgba output?
I hope that i wasn't very confusing....
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
Reply With Quote
  #29    
Old July 7th, 2009, 03:08 PM
Crimson Stardust's Avatar
Crimson Stardust
Anime Addiction
 
Join Date: Mar 2009
Location: It is for me to noe and all of you to find out
Age: 21
Gender: Male
Nature: Relaxed
Send a message via AIM to Crimson Stardust Send a message via Windows Live Messenger to Crimson Stardust
i hope you will put up screen soon...
as it will help me better visualisation of the steps..XD
__________________



Reply With Quote
  #30    
Old July 7th, 2009, 03:33 PM
daigonite's Avatar
daigonite
Ninjas Against Bottomless Pits
Community Supporter
 
Join Date: Feb 2009
Location: With the Birds
Age: 21
Nature: Impish
It's mainly hex editing, so a screen wouldn't really help. o.o
__________________
Reply With Quote
  #31    
Old July 7th, 2009, 06:12 PM
Crimson Stardust's Avatar
Crimson Stardust
Anime Addiction
 
Join Date: Mar 2009
Location: It is for me to noe and all of you to find out
Age: 21
Gender: Male
Nature: Relaxed
Send a message via AIM to Crimson Stardust Send a message via Windows Live Messenger to Crimson Stardust
Quote:
Originally Posted by Charon the Ferryman View Post
It's mainly hex editing, so a screen wouldn't really help. o.o
owhokae....then i will try it again..btw this is a good tut...xD
__________________



Reply With Quote
  #32    
Old July 28th, 2009, 08:06 AM
Full Metal's Avatar
Full Metal
C(++) Developer.
Community Supporter
 
Join Date: Jan 2008
Location: In my mind.
Age: 19
Gender: Male
Nature: Timid
Send a message via Windows Live Messenger to Full Metal
actually could you tell me what tile editor / viewer u use?
tilemolesteralternate does not tell you what byte your song starts with.
Also, is it possible to do this without taking songs from TLA?
e.g. skip to the "tr.exe" part if you have your midi's split into one track files?
*edit* also could someone post a link or pm/email/im me a link to the sappy 1.6? i can't find it on google :\ just 06
__________________

★ full metal.

I like to push it,
and push it,
until my luck is over.
Reply With Quote
  #33    
Old January 8th, 2010, 07:41 AM
ThePoketrix's Avatar
ThePoketrix
real-life pikachu
 
Join Date: Jan 2010
Gender: Male
Nature: Calm
Quote:
Now don't you all start making Pokemon Mars/Venus/Mercury versions now in imitation of Jupiter...
why not a Pokemon Earth/Saturn/Uranus/Neptune/Pluto version?

just kidding

Quote:
Originally Posted by Hark! It's the Ferryman Charon View Post
In order to do this, you'll have to change Sappy's equavalent
of a ini file (sappy.txt). Where it says Golden Sun, you can
replace AGSE with AGFE, then switch the table offset (which is
0x80FC70C, I think for GS; TLA's is at 0x81C4530). Anyways,
after setting those in the sappy.txt file, open up Sappy 1.6
and load in Golden Sun: The Lost Age. Go to the song you want.
Here's a nice table for you with my totally awesome song
names....
On my Sappy, the "INI" file is an XML document.
And that means I can't use the "ELF" method, 'cause I can't edit XML documents.
How do you either turn it into a TXT, or get the 1.6 version?
__________________
The Poketrix

Who's the Chu?




Last edited by ThePoketrix; January 9th, 2010 at 09:11 AM. Reason: Your double post has been automatically merged.
Reply With Quote
  #34    
Old February 15th, 2011, 09:51 PM
gamesharkhacker's Avatar
gamesharkhacker
SupremoHack Entertainment Inc.
 
Join Date: Jun 2009
Location: In a massive hole :)
Gender: Male
Nature: Careful
Nice tutorial corvidae! But my songs screw up when I try to loop them using the B2 and B1 Hex bytes. A little help anyone? And does anyone know where I can get like an updated version of Sappy 1.6 or just an ini-file thing that has FireRed in it.
Thanks, GSH
__________________
I'm BACK!!!!

GSH - Owner and Creator of
Pokemon PoisonedPyrite/ParalysisPyrite



GSH - Music creator/hacker of
Pokemon Morganite
Reply With Quote
  #35    
Old February 16th, 2011, 07:51 AM
AyameHikaru's Avatar
AyameHikaru
Beauty Queen
 
Join Date: Nov 2010
Gender: Female
Nature: Impish
EDIT: NVM on that.

Now I've got the problem of not having a 'tr' in midi2gba to open. My files are:

a.out
as.exe
cygwin1.dll
ld.exe
mend.o
mid2agb.exe
MPlayDef.s
ms.s
objcopy.exe
pat.s
tmp.s

?????????????
__________________
~When Life gives you lemons, make grape juice and let Life wonder how you did it.~
LOOKING FOR A DISGAEA FAN/SPRITER FOR A CROSSOVER GAME!
Current Challenges:
Ultimate Fire Type Challenge: Johto, 10 Badges
Lyrics Challenge: Kanto, 1 Badge
Nuzlocke Challenge: Kanto, 0 Badges
Monochrome Challenge: Hoenn, 5 Badges

Last edited by AyameHikaru; February 16th, 2011 at 08:39 AM.
Reply With Quote
  #36    
Old July 23rd, 2011, 11:21 AM
daigonite's Avatar
daigonite
Ninjas Against Bottomless Pits
Community Supporter
 
Join Date: Feb 2009
Location: With the Birds
Age: 21
Nature: Impish
Well this seems odd. I don't seem to have posted my video tutorials here! They are available here:



This goes over the basics of inserting a song that doesn't loop.

The final result of which produced this:





This goes over looping and a few track properties.

The final result which produced this:



Also, I've tried this method with even games that don't use samples, like the fairly obscure Suikoden Card Stories, and it will still work (starts at about 1:05 of this video). Many many MANY earlier GBA games (most big names before 2004 and some in 2005 even) use this method so it can be used with many titles.



Please note that trying to add samples to a game like this causes the game to crash.
__________________

Last edited by daigonite; July 23rd, 2011 at 11:28 AM.
Reply With Quote
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 11:16 AM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 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.
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.