The Gameboy Advance Sound Hardware
Vložit
- čas přidán 9. 06. 2020
- The two common types of sounds we hear in music are tones and noise. Both types of sound can be made from the Gameboy Advance Sound Generator, which can also play audio files. Today, we will be exploring these concepts by taking the device apart and doing a teardown to see its inside components.
Mako Driver Kit - 64 Precision Bits:
www.ifixit.com/Store/Tools/Ma...
Sources:
GBA: Start of System on Chip Silicon in 2001:
• GBA: Start of System ...
Kulor - "Doorbellsplosion" (AY-3-8910) [Oscilloscope View]:
• Kulor - "Doorbellsplos...
[Cover] Sophie - My World (RP2A03):
• [Cover] Sophie - My Wo...
Game Boy Advance Architecture | A Practical Analysis:
www.copetti.org/projects/cons...
Belogic:
belogic.com/gba/
Beep! GBA sound introduction:
www.coranac.com/tonc/text/snd...
Nintendo Gameboy Architecture:
meseec.ce.rit.edu/551-projects...
ARM7TDMI MCU with 12-Bit ADC and DDS DAC:
www.analog.com/media/en/techn...
Game Boy CPU isn't a Z80. What is it? - nesdev.com:
forums.nesdev.com/viewtopic.p...
The GBA sound chip was impressive back then. You could litterally convert MP3s to samples and play them no problem
I know right! It’s crazy stuff! That gave me a great video idea! I’m sure people would love to see a tutorial on how to do that.
They do for sure. There's a bunch of different filetypes out there. I was going to make a video about it, but I never got around to it. I should do that!
It's just really annoying how you have to spend a fair amount of CPU time just to get MOD-tier music working on this system.
@@TheBeeshSpweesh True! It's both a tedious process to code it and for the CPU to play the file while it's trying to do a bunch of other things.
utada's simple and clean playing on the gba was an iconic moment for me
I have been looking forever to find out how the game boy advance made noise so I can try to figure out how to make my own game boy advance sound. Thank you so much.
You’re welcome! I was too, and that’s why it’s exciting to share how to do it. Thank you for watching the videos!
Thank you for this. 😁
Very informative and fun. 🎶
You're welcome :)! Glad you enjoyed it!
Honestly the GBA and it's music never fails to intrigue me. So many great pieces of music made for games on it, one of my favorites being the Mother 3 OST. What are some of your favourite GBA games OSTs, Aura?
So true, I'll have to check that one out 💯! My favorite GBA game OST's are from the Super Mario World series -- specifically some of the mini games, which combine both the audio channels and the tone/noise channels in the music.
my favourite gba ost is from golden sun
That's a great one! Sounds like they're using the 16bit channels a lot which is cool
The sound hardware for the GBA is an odd duck. I remember reading that it's incapable of doing low tones for some reason--as in, the speakers will burst into flame if it tries to. Rare found out about this the hard way while porting DKC2 and 3 to it, and it was a big reason why DKC3 had it's soundtrack completely overhauled for the GBA port. And Castlevania: Harmony of Dissonance apparently had to use the original GB sound chip for it's music (hence why it's so different from Circle of the Moon) because the game was pushing the CPU so hard as is that there wasn't any room left to use the actual GBA sound without overloading it!
Dang that makes sense. I would be interested in reading some more about this now that I’m in the middle of all my DSP classes.
Something about the GBA's soundchip just gives it the edge
Mario and Luigi Superstar Saga and Pokémon Emerald utilize it the best
Fr, those are some of my favorite games of all time for that reason
@@aura-audio the thing i dont get is, if u are supposed to have only 2 direct sound channels and 1 sampler, why can i hear more than 3 instruments being played in pokemon emerald songs? where are they coming from if the rest of channels are 2 square + 1 noise? can direct sound channels reproduce more than 1 sound each?
Good question, it’s definitely possible with some programming tricks. The GBA hardware is close enough to the metal where you could play sounds using other Direct Memory Access and timers if you wanted to.
Hey, I just saw your talk on the Audio Programmer meetup, was inspired to have a go at hacking a gba soundchip myself!
I was wondering if you knew whether it would be the same process on a GBA SP? (I'm talking about the dev you were covering in that video, not the dismantling it in this one)
I’m glad I inspired you! As far as I know, yes the GBA SP should be the same process because it uses the exact same CPU (I think). The only difference seems to be the screen and size, but I think the hardware is the same, so you should be good.
@@aura-audio Cheers! Look forward to seeing more of your projects
Hey, I have a GBA just like that one
Well explained,yeah the gba didn’t had such high quality audio,it did suffer from noise over times,BUT i was thinking maybe we could take advantage of the noise channel by let it generate inverted noise from it’s unwanted noise and synch them correctly with each other in order to cancle each other out to supposedly result theoritically in a much cleaner audio to more closely resamble 16bit audio,,but am not sure if some game developers tried to take advantage of the noise channel that way but it would be interesting to prove such smart clever theory😁
Thank you for watching and I'm glad the explanation helped 😄! One thing I learned this semester which I didn't know when I recorded this video is that it's actually a good thing to have some noise at low bit-depths. This is because the audio gets distorted when going to the lower bit depths. The noise helps make this process more random and thus it sounds more natural. In this video I didn't set up the sound correctly which made things distorted. My more recent video on this topic has a better demo and you actually can't hear too much noise. 16bit is actually what most digital platforms like SoundCloud use. Something else which distorts the audio is down sampling. This causes other distortions with the audio not necessarily related to the noise generated by the noise channels since those use frequency counters for pseudo-random noise. However, I do like your thinking, and you've inspired me to make another video on this topic. Thank you again for watching and commenting your thoughts on the video 🙌🏼!
Has there ever been a GBA game with full voice acting?
You mean someone reading the lines on the screen? I'm not sure actually. That's a great question.
Wario land 4 had a fully vocalize track(in Japanese though)
Hey I'm looking to make a really high quality recording of the GBA start up sound
Do you know how I could do this?
If I like have to wire into a GBA or maybe use some sound chip emulator?
I haven't found much information so far and you seem very knowledgeable 😅
I would use an audio interface or preamp
@@aura-audio Thanks for the response! (And incredibly fast)
But what do you mean exactly?
Record the sound directly from the headphone out on the GBA and route it through a preamp so when you amplify it the signal is clean. Google “preamp” and you will find many examples :)
@@aura-audioAhh I see
Thanks!
@@aura-audio I do wonder though 😅
Is it possible to emulate the sound chip on a computer?
What bit gba music is? 16 or 8 bit and so convert it into readable format with good quality and maybe match sample rate and bitrate?
That's a great question! The gameboy sound channels are 8-bit. As far as the sample rate and bitrate, they are a bit more complicated, but there are some ways to use timers/refresh rate of the screen as the sample rate to play back an audio buffer. For now, I suggest you play around with a library called, "libgba." It has a sound example you can build. Try and see if you can download it, but I might make a video about this later. However, I definitely encourage you to try experimenting with this library beforehand. I have found it to be very successful at playing sounds on the Gameboy Advance.
@@aura-audio Woah that's a lots. My thanks. So this quite difficult...
You’re welcome! Thank you for watching. Yeah it definitely can be a lot, but you get better with practice. Hopefully I can make more videos on this once school settles down.
@@aura-audio Is libgba in C or ARM assembly?
I believe libgba is a C library, but sometimes people do tend to write assembly for the GBA.
Isn't the PSG part of the sound system just the Game Boy PSG since it uses it to emulate the sound when playing Game Boy or Game Boy Color games?
Note: The PSG is also used in several GBA games as well, such as the Densetsu no Starfy/Stafy games, Wario Land 4, the Klonoa GBA games, Mario & Luigi: Superstar Saga, and Mother 3.
What do you mean by emulate? I think they're all just voltages generated by a chip inside the CPU. It's not too difficult to create those kinds of signals.
@@aura-audio, by emulate as in the actual Game Boy sound chip not being present in the GBA hardware.
@@PKSuperStar256 I see, yeah that's a tricky but good question to think about. I wasn't really sure what the answer was when I made this video, and I'm still not really sure to this day but remain curious about it. We know the GBA has a SoC (System on a Chip) which contains a whole bunch of components, and it's possible one of those components is the chip for the PSG. I speculate the GBA uses a similar PSG (if not the same one) as the Game Boy and Game Boy Color because the sound is indistinguishable. However, when I listened to the DS which can run GBA games but not Game Boy Color I heard a difference in some cases with some effects (i.e. vibrato used in the background music for Mario Bros Classic in Super Mario Advance). The vibrato sounded more choppy on the DS than it did on the GBA. This could be an artifact due to the timing systems, but my thought is the DS emulates the PSG as you mentioned.
Given this difference happens in a GBA game and not a Gameboy Color game is kind of a bad example, but I also just realized there would sadly be no way to test a Game Boy Color game on the DS. We could however test and see if there's any sound discrepancies between the GBA and Game Boy Color.
@@aura-audio, the Everdrive can help with that. You can put a GB/GBC "emulator" on it and put supported games on said emulator and they should sound similar, if not, the exact same as the original intended hardware.
I did it myself since I have one.
I want someone to take all the code for this sound chip, load it into a computer, and either turn it into a virtual sound generator for DAW's, or figure out how to get that hiss sound to be transferred across through some form of dial knob, along with a preset that is literally the hiss of the original hardware. Basically an effect/bitcrush plugin. Would such a thing even be possible?
It is for sure! I think Tony Fox, the composer of the music in the Game Undertale, used a plugin that did this. I should make a video about that soon 🙌🏼!
@@aura-audio absolutely. I primarily use toxic biohazard when trying to generate sounds, so I'm trying to specifically replicate the hiss of the gba's dodgy sound chip (because I wholeheartedly disagree with common sentiment that it sounds bad. I think that bad sound quality and hiss actually adds to the songs and charm.), for something like a pad or ambient texture. Then layer that hiss thing into a very wet reverb for some very unorthodox energy that I've yet to properly catch outside of radio static. Which in of itself is tough to get propery
Does anyone know if the GB soundchip can be accessed in GBA mode?
That's a good question. Yes, by using the DMG (Dot Matrix Games) sound enable registers you can use the pulse signal channels from the original Gameboy: www.coranac.com/tonc/text/sndsqr.htm
It's a little tricky to learn, but once you know the registers you need to enable, sound on the Gameboy is actually pretty simple/direct which is why I like it so much
@@aura-audio is there a limit on the number of channels you can use from each chip? Or does using this effectively double the number of channels you can use at once?
Yah I think original pulse channels gives you 1 sweep plus another pulse generator without the sweep plus the noise/rumble channel for percussive sounds plus another channel where you can load in your own 4 bit wave table. Then with Gameboy Advance you get 2 more 8-bit channels. Pretty sure you can use all of them at once
@@aura-audio If there's only 2 8-bit GBA channels, how were tracks done that seem to play up to 4 or 5 samples simultaneously? Am I mishearing or is there a way of redistributing or assigning channels for different purposes depending on what's needed?
Thanks for explaining the gameboy part, but you didn't put a lot of time into explaining the sample stuff...
Have you watched my recent video where I show how to play audio on the Gameboy Advance? The sample buffers are basically like that.
what about the N64 sound hardware?
I like your thinking! Haven't done a video on that yet, but I'd love to explore it :) !
@@aura-audio or what about Nintendo DS sound system?
I know there are some videos out there already from other people, but there's always room for more.
@@aura-audio of course
I swear most nokia phones from the early 2000s sounded better
That's interesting! I'm now curious if I can still find one and make another video about it. That would be super cool!
They really didn't, lol. Maybe Blackberry
czcams.com/video/4m0lfF2F0Jw/video.html
sik
Gba(s) are 28 bit
Where did the 28 come from? I thought it was only powers of two, but I could be wrong.