What Speakers Can Be Used In The Gameboy Dmg



How to repair Gameboy commom problems How to fix Nintendo Gameboy common problems. Recently, I came across a Gameboy at Goodwill for $6.99. While inspecting it I noticed the battery contacts where very corroded but the Gameboy was complete albeit very dirty likely from years of use and the lack of the previous owner taking good care of it. The Game Boy released on April 21, 1989 in Japan, followed by North America on July 31, 1989, and lastly in Europe on September 28, 1990. It is characterized by a large grey casing and model number DMG-01.

  1. What Speakers Can Be Used In The Gameboy Dmg Free
  2. What Speakers Can Be Used In The Gameboy Dmg Download
  3. What Speakers Can Be Used In The Gameboy Dmg Rom
  4. What Speakers Can Be Used In The Gameboy Dmg Emulator

This documents the behavior of Game Boy sound; details which aren't relevant to the observable behavior have been omitted unless they clarify understanding. It is aimed at answering all questions about exact operation, rather than describing how to use sound effectively in Game Boy programs. Values in hexadecimal (base 16) are generally written with a $ prefix. Bits are numbered from 0 to 7, where bit N has a weight of 2^N. A nibble is 4 bits, half a byte. Obscure behavior is described separately to increase clarity elsewhere.

The Game Boy has four sound channels: two square waves with adjustable duty, a programmable wave table, and a noise generator. Each has some kind of frequency (pitch) control. The first square channel also has an automatic frequency sweep unit to help with sound effects. The squares and noise each have a volume envelope unit to help with fading notes and sound effects, while the wave channel has only limited manual volume control. Each channel has a length counter that can silence the channel after a preset time, to handle note durations. Each channel can be individually panned to the far left, center, or far right. The master volume of the left and right outputs can also be adjusted.

Different versions of the Game Boy sound hardware have slightly different behavior. The following models have been tested:

  • DMG-CPU-03 original Game Boy
  • DMG-CPU-05
  • DMG-CPU-06
  • MGB-LCPU-01 Game Boy Pocket
  • CGB-CPU-02 Game Boy Color
  • CGB-CPU-04
  • CGB-CPU-05

Sound registers are mapped to $FF10-$FF3F in memory. Each channel has five logical registers, NRx0-NRx4, though some don't use NRx0. The value written to bits marked with '-' has no effect. Reference to the value in a register means the last value written to it.

Each channel has a frequency timer which clocks a waveform generator. The waveform's volume is adjusted and fed to the mixer. The mixer converts each channel's waveform into an electrical signal and outputs this to the left and/or right channels. Finally, a master volume control adjusts the left and right outputs. The channels have the following units that are connected from left to right:

What Speakers Can Be Used In The Gameboy Dmg

The mixer has a separate DAC for each channel, followed by on/off controls for left and right outputs. The left/right outputs from each channel are then added together and fed to the left/right master volume controls.

In general, all units in the channels are always running. For example, even if a channel is silent, several units will still be calculating values even though they aren't used.

A timer generates an output clock every N input clocks, where N is the timer's period. If a timer's rate is given as a frequency, its period is 4194304/frequency in Hz. Each timer has an internal counter that is decremented on each input clock. When the counter becomes zero, it is reloaded with the period and an output clock is generated.

The frame sequencer generates low frequency clocks for the modulation units. It is clocked by a 512 Hz timer.

A length counter disables a channel when it decrements to zero. It contains an internal counter and enabled flag. Writing a byte to NRx1 loads the counter with 64-data (256-data for wave channel). The counter can be reloaded at any time.

A channel is said to be disabled when the internal enabled flag is clear. When a channel is disabled, its volume unit receives 0, otherwise its volume unit receives the output of the waveform generator. Other units besides the length counter can enable/disable the channel as well.

Each length counter is clocked at 256 Hz by the frame sequencer. When clocked while enabled by NRx4 and the counter is not zero, it is decremented. If it becomes zero, the channel is disabled.

A volume envelope has a volume counter and an internal timer clocked at 64 Hz by the frame sequencer. When the timer generates a clock and the envelope period is not zero, a new volume is calculated by adding or subtracting (as set by NRx2) one from the current volume. If this new volume within the 0 to 15 range, the volume is updated, otherwise it is left unchanged and no further automatic increments/decrements are made to the volume until the channel is triggered again.

When the waveform input is zero the envelope outputs zero, otherwise it outputs the current volume.

Writing to NRx2 causes obscure effects on the volume that differ on different Game Boy models (see obscure behavior).

A square channel's frequency timer period is set to (2048-frequency)*4. Four duty cycles are available, each waveform taking 8 frequency timer clocks to cycle through:

The first square channel has a frequency sweep unit, controlled by NR10. This has a timer, internal enabled flag, and frequency shadow register. It can periodically adjust square 1's frequency up or down.

During a trigger event, several things occur:

  • Square 1's frequency is copied to the shadow register.
  • The sweep timer is reloaded.
  • The internal enabled flag is set if either the sweep period or shift are non-zero, cleared otherwise.
  • If the sweep shift is non-zero, frequency calculation and the overflow check are performed immediately.

Frequency calculation consists of taking the value in the frequency shadow register, shifting it right by sweep shift, optionally negating the value, and summing this with the frequency shadow register to produce a new frequency. What is done with this new frequency depends on the context.

The overflow check simply calculates the new frequency and if this is greater than 2047, square 1 is disabled.

The sweep timer is clocked at 128 Hz by the frame sequencer. When it generates a clock and the sweep's internal enabled flag is set and the sweep period is not zero, a new frequency is calculated and the overflow check is performed. If the new frequency is 2047 or less and the sweep shift is not zero, this new frequency is written back to the shadow frequency and square 1's frequency in NR13 and NR14, then frequency calculation and overflow check are run AGAIN immediately using this new value, but this second new frequency is not written back.

Square 1's frequency can be modified via NR13 and NR14 while sweep is active, but the shadow frequency won't be affected so the next time the sweep updates the channel's frequency this modification will be lost.

The noise channel's frequency timer period is set by a base divisor shifted left some number of bits.

What Speakers Can Be Used In The Gameboy Dmg Free

The linear feedback shift register (LFSR) generates a pseudo-random bit sequence. It has a 15-bit shift register with feedback. When clocked by the frequency timer, the low two bits (0 and 1) are XORed, all bits are shifted right by one, and the result of the XOR is put into the now-empty high bit. If width mode is 1 (NR43), the XOR result is ALSO put into bit 6 AFTER the shift, resulting in a 7-bit LFSR. The waveform output is bit 0 of the LFSR, INVERTED.

The wave channel plays a 32-entry wave table made up of 4-bit samples. Each byte encodes two samples, the first in the high bits. The wave channel has a sample buffer and position counter.

The wave channel's frequency timer period is set to (2048-frequency)*2. When the timer generates a clock, the position counter is advanced one sample in the wave table, looping back to the beginning when it goes past the end, then a sample is read into the sample buffer from this NEW position.

The DAC receives the current value from the upper/lower nibble of the sample buffer, shifted right by the volume control.

Wave RAM can only be properly accessed when the channel is disabled (see obscure behavior).

Writing a value to NRx4 with bit 7 set causes the following things to occur:

  • Channel is enabled (see length counter).
  • If length counter is zero, it is set to 64 (256 for wave channel).
  • Frequency timer is reloaded with period.
  • Volume envelope timer is reloaded with period.
  • Channel volume is reloaded from NRx2.
  • Noise channel's LFSR bits are all set to 1.
  • Wave channel's position is set to 0 but sample buffer is NOT refilled.
  • Square 1's sweep does several things (see frequency sweep).

Note that if the channel's DAC is off, after the above actions occur the channel will be immediately disabled again.

Each channel has a 4-bit digital-to-analog convertor (DAC). This converts the input value to a proportional output voltage. An input of 0 generates -1.0 and an input of 15 generates +1.0, using arbitrary voltage units.

DAC power is controlled by the upper 5 bits of NRx2 (top bit of NR30 for wave channel). If these bits are not all clear, the DAC is on, otherwise it's off and outputs 0 volts. Also, any time the DAC is off the channel is kept disabled (but turning the DAC back on does NOT enable the channel).

Each channel's DAC output goes to a pair of on/off switches for the left and right channels before they are sent to the left/right mixers. A mixer simply adds the voltages from each channel together. These left/right switches are controlled by NR51. When a switch is off, the mixer receives 0 volts.

Used

The Vin bits of NR50 control mixing of the Vin signal from the cartridge, allowing extra sound hardware.

The mixed left/right signals go to the left/right master volume controls. These multiply the signal by (volume+1). The volume step relative to the channel DAC is such that a single channel enabled via NR51 playing at volume of 2 with a master volume of 7 is about as loud as that channel playing at volume 15 with a master volume of 0.

NR52 controls power to the sound hardware. When powered off, all registers (NR10-NR51) are instantly written with zero and any writes to those registers are ignored while power remains off (except on the DMG, where length counters are unaffected by power and can still be written while off). When powered on, the frame sequencer is reset so that the next step will be 0, the square duty units are reset to the first step of the waveform, and the wave channel's sample buffer is reset to 0.

Power state does not affect wave memory, which can always be read/written. It also does not affect the 512 Hz timer that feeds the frame sequencer.

When the Game Boy is switched on (before the internal boot ROM executes), the values in the wave table depend on the model. On the DMG, they are somewhat random, though the particular pattern is generally the same for each individual Game Boy unit. The game R-Type doesn't initialize wave RAM and thus relies on these. One set of values is

On the Game Boy Color, the values are consistently

Reading NR52 yields the current power status and each channel's active status, which is set by an NRx4 write and cleared by the length counter, pulse 1 sweep unit, or a write that disables that channel's DAC.

Wave RAM reads back as the last value written.

When an NRxx register is read back, the last written value ORed with the following is returned:

That is, the channel length counters, frequencies, and unused bits always read back as set to all 1s.

The cartridge connector includes a sound input called Vin. When enabled via NR50, it is mixed in before the master volume controls. On the DMG and MGB, 0.847 volts gives equivalent to 0 on a channel DAC, and 3.710 volts is equivalent to 15 on a DAC, with other values linearly distributed between those voltages. On the CGB, the range is 1.920 volts to 2.740 volts, a quarter of the DMG range, thus sound fed to the CGB's Vin is significantly louder. When nothing is connected to Vin, it naturally floats at the middle voltage (silence).

  • The volume envelope and sweep timers treat a period of 0 as 8.
  • Just after powering on, the first duty step of the square waves after they are triggered for the first time is played as if it were 0. Also, the square duty sequence clocking is disabled until the first trigger.
  • When triggering the wave channel, the first sample to play is the previous one still in the high nibble of the sample buffer, and the next sample is the second nibble from the wave table. This is because it doesn't load the first byte on trigger like it 'should'. The first nibble from the wave table is thus not played until the waveform loops.
  • When triggering a square channel, the low two bits of the frequency timer are NOT modified.
  • Extra length clocking occurs when writing to NRx4 when the frame sequencer's next step is one that doesn't clock the length counter. In this case, if the length counter was PREVIOUSLY disabled and now enabled and the length counter is not zero, it is decremented. If this decrement makes it zero and trigger is clear, the channel is disabled. On the CGB-02, the length counter only has to have been disabled before; the current length enable state doesn't matter. This breaks at least one game (Prehistorik Man), and was fixed on CGB-04 and CGB-05.
  • If a channel is triggered when the frame sequencer's next step is one that doesn't clock the length counter and the length counter is now enabled and length is being set to 64 (256 for wave channel) because it was previously zero, it is set to 63 instead (255 for wave channel).
  • If a channel is triggered when the frame sequencer's next step will clock the volume envelope, the envelope's timer is reloaded with one greater than it would have been.
  • Using a noise channel clock shift of 14 or 15 results in the LFSR receiving no clocks.
  • Clearing the sweep negate mode bit in NR10 after at least one sweep calculation has been made using the negate mode since the last trigger causes the channel to be immediately disabled. This prevents you from having the sweep lower the frequency then raise the frequency without a trigger inbetween.
  • If the wave channel is enabled, accessing any byte from $FF30-$FF3F is equivalent to accessing the current byte selected by the waveform position. Further, on the DMG accesses will only work in this manner if made within a couple of clocks of the wave channel accessing wave RAM; if made at any other time, reads return $FF and writes have no effect.
  • Triggering the wave channel on the DMG while it reads a sample byte will alter the first four bytes of wave RAM. If the channel was reading one of the first four bytes, the only first byte will be rewritten with the byte being read. If the channel was reading one of the later 12 bytes, the first FOUR bytes of wave RAM will be rewritten with the four aligned bytes that the read was from (bytes 4-7, 8-11, or 12-15); for example if it were reading byte 9 when it was retriggered, the first four bytes would be rewritten with the contents of bytes 8-11. To avoid this corruption you should stop the wave by writing 0 then $80 to NR30 before triggering it again. The game Duck Tales encounters this issue part way through most songs.
  • 'Zombie' mode: the volume can be manually altered while a channel is playing by writing to NRx2. Behavior depends on the old and new values of NRx2, and whether the envlope has stopped automatic updates. The CGB-02 and CGB-04 are the most consistent:
  • If the old envelope period was zero and the envelope is still doing automatic updates, volume is incremented by 1, otherwise if the envelope was in subtract mode, volume is incremented by 2.
  • If the mode was changed (add to subtract or subtract to add), volume is set to 16-volume.
  • Only the low 4 bits of volume are kept after the above operations.
Download

Other models behave differently, especially the DMG units which have crazy behavior in some cases. The only useful consistent behavior is using add mode with a period of zero in order to increment the volume by 1. That is, write $V8 to NRx2 to set the initial volume to V before triggering the channel, then write $08 to NRx2 to increment the volume as the sound plays (repeat 15 times to decrement the volume by 1). This allows manual volume control on all units tested.

  • When all four channel DACs are off, the master volume units are disconnected from the sound output and the output level becomes 0. When any channel DAC is on, a high-pass filter capacitor is connected which slowly removes any DC component from the signal. The following code applied at 4194304 Hz implements these two behaviors for one of the DMG output channels (unoptimized floating point for clarity):

The charge factor can be calculated for any output sampling rate as 0.999958^(4194304/rate). So if you were applying high_pass() at 44100 Hz, you'd use a charge factor of 0.996.

This summarizes differences I've found among the models tested.

Wave RAM access:

  • Possible only when it's doing wave RAM read (DMG-03, DMG-05, DMG-06, MGB-01).
  • Can be accessed any time (CGB-02, CGB-04, CGB-05).
What Speakers Can Be Used In The Gameboy Dmg

Wave channel re-trigger without disabling first (via NR30):

  • Re-writes first four bytes of wave RAM (DMG-03, DMG-05, DMG-06, MGB-01).
  • Behaves normally (CGB-02, CGB-04, CGB-05).

Length counters and power off:

  • Preserved and can be written while off (DMG-03, DMG-05, DMG-06, MGB-01).
  • Always zero at power on (CGB-02, CGB-04, CGB-05).

Length clocking on NRx4:

  • New length enable doesn't matter (CGB-02).
  • Length must now be enabled (DMG-03, DMG-05, DMG-06, CGB-04, CGB-05, MGB-01).

Volume changes on NRx2 write:

  • $x0 to $xx and $x7 to $xx are very screwey (DMG-03, DMG-05, DMG-06, MGB-01).
  • Behavior as described in obscure behavior (CGB-02, CGB-04).
  • If mode isn't being changed, only $x8 to $xx affects volume. Mode change is also a bit different (CGB-05).
  • Using an envelope or sweep period of 0 then switching to another period also causes an extra clock in some cases.
  • Frequency sweep has some really intricate behavior when rewriting sweep register
  • Noise's frequency timer is more complex than described, resulting in trigger doing something more than simply reloading it. It may have multiple dividers to achieve the documented periods, with only some of them being reset on trigger.
  • Behavior when triggering and writing to registers within a few clocks of frame sequencer events has yet to be determined. There will be lots of odd things uncovered for sure.
  • Figure out exactly how noise LFSR is implemented with regard to mode changes.
  • Document exact timing for DMG wave issues.
  • Lord Nightmare for GBSOUND.txt, assistance, testing, GBs to test.
  • Laguna for the gnuboy emulator.
  • Ville Helin for WLA DX GB-Z80 assembler.
  • sinamas for feedback about this document and my test ROMs.
Retrieved from 'https://gbdev.gg8.se/wiki/index.php?title=Gameboy_sound_hardware&oldid=998'
discographycontact

game boy sound comparison


all game boys were played at their highest volume. they were connected directly to the audiointerface (motu 2408). except normalization to -0.1 dB no further processing was made. i did without comparing the levels of the different game boy models. if you record the output of the game boy, you will most likely normalize and do some mastering. in a live situation, you will simply turn up the volume of the mixing desk or the amplifier, if a game boy is not loud enough. if you are interested in a comparison of the different levels, please refer to my old game boy sound comparison.

i used lsdj 3.5.1., which was copied to a transferer cartridge (unless otherwise noted). the mp3s were encoded with lame 3.96.1, 192 kbit.

the examples were done this way: first you hear a bit of background noise from the game boy, then the song starts with some samples. after that there is a break, where i used panning without notes. on the older game boy models this will result in some rhythmic pulses. on the newer models this will have no effect. after the main part of the music i waited for a short time, and then stopped the song. at the end you hear background noise, again. if a game boy model with light was used, the example starts with the light switched off, then the light is switched on.
not only do the different game boy models sound different, if you have a look at the waveforms, you can see that these already look very different (thin sound - thin waveform). i recorded the pulse instrument, envelope: A8, wave: pulse width 50% (square), with a pitch of C3 (which is great C, in musical terms). the picture of the wavefrom, as displayed in the audio editor, was then saved as a graphic file, which you can see here.

game boy (classic, original, dmg-01, grey, brick, keksdose)

the original game boy. it was released in 1989. it has a warm, bassy sound, with little (compared to the other game boy models) background noise (hiss and a bit hum). the processor is a bit slow, which can be quite noticeable, depending on your music. in fact, with older lsdj versions, the game boy even crashed, when the music (esp. tables) became too complicated. newer lsdj versions are somewhat optimized for the game boy, so that it won't crash, but in some cases a lag can be noticeable. the display is not very readable, especially in darker surroundings. the waveform looks rather square-ish. this is the standard, against which the other models have to match.
plus: sound, retro feel
minus: display, slow processor


waveform of original game boy
game boy with pro sound modification
the pro sound modification, which is sometimes applied to the game boy color, was done here on an original game boy. it makes the output approx. 13 dB louder. there is no noise, before the song starts to play. when the music starts, a hum is added (in the unmodified version this is pretty much concealed by the hiss). when the song is stopped, the hum disappears. the waveform looks very slightly different from the unmodified game boy (less square-ish). although the volume of the (normalized) sound example peaks at -0.1 dB, the average loudness seems to be approx. 2 dB more quiet than that of the (normalized) unmodified game boy. while the cases of the other game boy models are quite crammed with components, in the case of the original game boy there is ample room for some extra wires. it might be even possible to use thin shielded wire.
in the example of the unmodified game boy you hear some hiss, and in the example of the pro modded game boy the hum is more noticeable. choose for yourself, which one you like better.
plus: see original game boy
minus: see original game boy
sound example of original game boy with pro sound modification

waveform of original game boy with pro sound modification
play it loud!
this is an inofficial name. it was used by nintendo as the slogan for an advertising campaign. it refers to the second generation of game boys, coming in different colors. officially it is just called game boy, and (according to nintendo) it has the same technical specifications, as the original game boy. and indeed, it doesn't sound very different from the original (there is a hint of high pitched whistle). everything what was said there, applies here, too. same waveform.
plus: see original game boy
minus: see original game boy

waveform of the play it loud!

UPDATE: the 'antispike' fix on the play it loud! for more information
see the sections about advance and advance sp. note that when two samples are
played (as at the beginning of the pattern), version 4.8.0 sounds a bit
more punchy and defined.

sound example of the play it loud! with version 4.8.0 samples only
sound example of the play it loud! with version 3.5.1 samples only

pocket

first version in silver came without power led. later versions had the power led, and came in different colors. thin sound. there is hiss, a high whistling sound, and a hum, when the music starts to play. when the music is stopped, the hum disappears. the waveform looks very different from the original, and appears to be a bit fuzzy.
plus: not much to say pro and con here
minus:


waveform of game boy pocket
pocket with pro sound modification

the pro sound modification, which is sometimes applied to the game boy color, was done here on a game boy pocket. the waveform looks a bit different, but i can't hear much improvement to the sound. there is less hiss, but still high pitched noise and a hum.
plus:
minus: maybe not worth the effort


waveform of game boy pocket with pro sound modification

light


light off

kind of pocket-looking game boy, but uses two AA batteries (instead of two AAA). it has a backlit display, which makes it great to read in a darker environment (as on stage). the sound is thin, with hum, and high pitched noise, and when the backlight is switched on, some more high, whistling noise is introduced. the noise becomes even more noticeable, when the music starts to play. when the song is stopped, the whistle becomes more silent. the waveform looks approximately like that of the pocket, with a bit more fuzz.
plus: display
minus: sound


light on

sound example of game boy light, light off
sound example of game boy light, light on


waveform of game boy light, light on
color

thin sound, and very much background noise. there is high pitched noise, and a hum, which becomes even more noticeable, when the music starts to play. after the song is stopped, the noise becomes a bit muffled. the waveform differs very much from that of the original game boy. it also looks quite fuzzy.
plus: none
minus: sound


waveform of game boy color
color with pro sound modification

this modification makes the output louder (see old comparison) and cleaner. the sound is more bassy, but still not as good, as that from an original game boy. before the music starts to play, the modded color is very silent. when the music starts, there is a high pitched whistle and some hum, but still better, than from a normal color. when the song is stopped, the noise disappears. the waveform looks a bit more consistent and more clean, than that from the color, but it's still a far cry from the waveform of an original game boy.
plus: sound (although noise is still clearly noticeable)
minus: it doesn't sound as good as one would wish


waveform of game boy color with pro sound modification

What Speakers Can Be Used In The Gameboy Dmg Download

advance

the sound is bassy, with little background noise. from the advance on all models lack the rhythmic noise, which results from panning without a note on the older game boys. when lsdj samples are used, there is a pitched noise added. this is very noticeable with older lsdj versions. in newer lsdj versions, which are somewhat optimized towards the usage of samples, this is less noticeable. when the song is stopped, you can hear a clearly noticable cracking sound. the advance has an awkward button layout, in that the select and start buttons are on the far left, under the d-pad. the waveform looks close to that of the original game boy. it also looks quite clean. (note, that the pictures of gba , gba sp, and gba sp2 show a gba cartridge inserted into the game boy. this is just for aesthetical reasons. the test was made with a transferer cartridge.)
plus: sound (although lacking some possibilities, and problems with samples)
minus: button layout

What Speakers Can Be Used In The Gameboy Dmg

waveform of game boy advance


UPDATE: since version 4.7.0 lsdj includes an 'antispike' fix (thanks to
johan kotlinski for notifying me). this makes the playback of the samples
less noisy. for the example i used version 4.8.0 on a gb usb smart card 64m.
the recordings were made on a focusrite saffire pro 10 i/o. the 192kb mp3s
were encoded with lame 3.99.5. to better show the difference, i recorded
only the part with the samples with both version 4.8.0 and 3.5.1.
for the differences in the various lsdj versions see changelog.

sound example of game boy advance with version 4.8.0 samples only
sound example of game boy advance with version 3.5.1 samples only
advance sp


light off

lit display (from the bottom of the screen), which makes it very easy to read in darker surroundings. rechargeable battery. the sound is bassy, but with very much background noise (high pitched whistle and hiss). turning the light on or off has no effect on the sound. it has the same sample issues, as the advance. stopping the song produces a click, just like with the advance. if you want to plug the sp into your computer, or mixer, or amplifier, or if you want to use headphones, you have to use a headphone adapter. the headphone adapter takes up the ext. 2 port, which is also used for recharging the battery (from the advance sp on, all of the following models have a rechargeable battery). so you can't use headphones and recharge at the same time. (alternatively you can use a third party adapter, which lets you charge the battery and connect headphones at the same time.) the waveform looks the same, as that from the advance, but with lots of noise.
note, that the sp produces quite different noise, when a gba cartridge with the goomba version of lsdj is used. (this is also true for nanoloop: a 1.2 cartridge produces more hiss, while a 2.0 cart produces hum.) note also, that the goomba version runs a bit slower, so your song will play a bit longer, when the same tempo is used.
plus: display
minus: sound


light on

sound example of game boy advance sp, light off
sound example of game boy advance sp, light on
sound example of game boy advance sp, f2a gba cartridge, light on

original nintendo headphone adapter
third party adapter

waveform of game boy advance sp, light on


waveform of game boy advance sp, f2a gba cartridge, light on


UPDATE: the 'antispike' fix on an advance sp. for a visual comparison i included
screenshots of the waveform of the first sample of the example (707 kick/727 low
agogo). the screenshot for version 4.8.0 shows considerably less spikes during
the sample. unfortunately the two spikes before and after the sample make it still
sound somewhat bad.

sound example of game boy advance sp, light on with version 4.8.0 samples only
sound example of game boy advance sp, light on with version 3.5.1 samples only


waveform of game boy advance sp, light on; version 4.8.0 'antispike'


waveform of game boy advance sp, light on; version 3.5.1

advance sp2 (sp lite, sp mark II)


minimum light

these are inofficial names. it is advertised by nintendo as 'now with a brighter backlit screen!' officially it is just an advance sp. the display is brighter, than that of an older advance sp, and it is backlit. the light has two settings for brightness, but cannot be switched off. the sound is bassy. there is a lot of background noise (hiss and hum). when the brightness setting for the light is switched, there is a noticable 'bump'. otherwise the light setting makes no difference to the sound. it has the same sample issues, as the advance and the sp. a cracking sound can be heard, when the song is stopped. (thanks to bubblyfish, for letting me use her sp2 for this test.)
plus: display
minus: sound


maximum light
sound example of game boy advance sp2, minimum light
sound example of game boy advance sp2, maximum light

the following tests of nintendo ds, ds lite, and game boy micro were included for the sake of completeness. since it is not possible, to use old style cartridges with these machines, lsdj has to be transfered to a gba cartridge, together with goomba, a game boy emulator for game boy advance. this makes a par for par sound comparison impossible. also, the goomba version seems to run a bit slower. a flash2advance gba cartridge with the goomba version of lsdj 3.5.1 was used. on all of the following models the lsdj samples sound very bad. note, that this is likely not the fault of the respective machines, but perhaps more an issue of lsdj being a game boy program, run as an advance program.

ds


light off

strictly speaking, the nintendo ds is no game boy, but since it can use also gba cartridges, it is included in this test. the backlight can be switched on or off. to change the setting, the ds has to be restarted. it has a headphone out, but you can also use the external extension connector (5.2v in) with a headphone adapter (same as for game boy advance sp). you can even use both outs at the same time. there is a hum, which becomes a bit worse, when the song is playing. it makes no difference in sound, if the light is switched on or off, or if the heaphone or external out are used. the touchscreen (and the stylus) has no function in gba programs (other than starting the program). very awkward button layout, in that the select and start buttons are on the far right, above the A and B (and X and Y) buttons. the waveform is rather close to a squarewave. (thanks to stefan braunstein, for letting me use his ds.)
plus: display
minus:button layout


light on
sound example of nintendo ds, headphone out, light off
sound example of nintendo ds, headphone out, light on
sound example of nintendo ds, external extension connector, light on

What Speakers Can Be Used In The Gameboy Dmg Rom


waveform of nintendo ds, headphone out, light on


waveform of nintendo ds, external extension connector, light on

ds lite


minimum light

bassy sound, with very little background noise. very bright screen. the brightness of the screen can be adjusted in several steps. to change the setting, the ds lite has to be restarted. the flash2advance cartridge sticks out. the touchscreen (and the stylus) has no function in gba programs (other than starting the program). awkward button layout, in that the select and start buttons are on the far right. the waveform looks the same, as that of the ds. (thanks to stefan braunstein, for letting me use his ds lite.)
plus: sound, display
minus:button layout


maximum light
sound example of nintendo ds lite, minimum light
sound example of nintendo ds lite, maximum light

waveform of nintendo ds lite, maximum light
micro


minimum light

the game boy micro is so far the latest member of the game boy family. it has a very bright backlit screen, which (although somewhat small) can be easily read in darker environments. the brightness of the screen, as well as the volume, can be adjusted in several steps, which results in audible beeps (make sure to adjust everything, before you start to play). otherwise the light setting has no effect on the sound quality. the sound is bassy. there is hum and a bit high pitched noise. when the song is stopped, a click can be heard, and the pitch of the hum goes up. the overall small size of the micro, the position of the select and start buttons, and of the audiocable make the handling a bit uncomfortable. but this is probably something, you might get used to. of all game boy models the waveform of the micro is closest to a squarewave. (thanks to franz reisinger, for letting me use his micro.)
plus: display
minus: sound, uncomfortable feel


maximum light

sound example of game boy micro, minimum light
sound example of game boy micro, maximum light

What Speakers Can Be Used In The Gameboy Dmg Emulator


waveform of game boy micro, maximum light

bottom line:

things like 'retro feel' might or might not be of importance to you, but it is a pretty objective judgment that the original game boy (or the original with the pro sound mod) has the best sound, while the game boy advance sp2 has the best display. if you want to use a gba program like nanoloop 2.0, the ds lite has the best sound and display.

some notes on background noise:

while in some of the examples the game boy models produce clearly noticeable background noise, the noise is pretty much covered by the music, as soon as it starts to play. keep in mind though that during more silent parts of your music, or during rests, the noise can become rather prominent and annoying.

while i could only test the models which i personally own, or which i could borrow easily, it seems to me that not all specimen of the same model produce the same amount of background noise. so, if you want to buy a game boy for making music, it might be a good decision, to take a music cartridge, some batteries, and a headphone (and in case of an sp a headphone adapter) with you, to check the sound quality. some other things to look for (and to avoid), when buying an old game boy (besides the obvious, like scratched, broken, or missing screen cover, and missing battery compartment lid): dead lines of pixels, corrosion in the battery compartment, frequent crashes, buttons don't react to presses.

links:

reverse-engineering and comparing two game boy audio amplifier chips
old game boy sound comparison
sebastian tomczak sound comparison
aquellex sound comparison
game boy color pro sound mod 1
game boy color pro sound mod 2
game boy color pro sound mod 3
game boy pro sound mod 1
game boy pro sound mod 2
goomba