Thread: Chip-8 emu
View Single Post
Old March 26th, 2008   #3 (permalink)
blueshogun96
Emu author
 
blueshogun96's Avatar
 
Join Date: Jun 2004
Location: Unidentified
Posts: 2,509
Okay, there's not much out there related to emulating sound and you'll soon find out the google is not your friend on this subject. I'll do my best to answer your question.

1. Before learning about sound emulation, it's highly recommended that you learn about how sound works (if you don't know already). First learn a low-level sound API such as DirectSound, OpenAL or XAudio (which is still in beta stages) and create some sound programs that can output sound by sending some raw data to a sound buffer. DirectSound is so far the most prominent while sound emulation with OpenAL is rather hard and XAudio... I don't know because I haven't seen it used for anything yet. Finding tutorials on low level sound APIs are very hard to find (except OpenAL which is more for 3D games) and once again Google might not be your friend on this subject. If you want you can either read the docs on the sound API such as the microsoft SDK documentation or MSDN. If you need tutorials on DirectSound, ask me and I will write them for you personally.

2. As far as tutorials on how to emulate sound, this is the best I can find to date: Blargg's Video Game Sound Emulation
Here's another: How to write an emulator It's an overall tutorial on emulation, but the sound emulation section is the largest and it shows some actual DirectSound code being used.

3. Be sure to have the documentation on the sound hardware you're trying to emulate!

4. I'm not sure how far indepth you want to get with sound emulation, but let me tell you this, emulating sound [usually] gets harder and harder as the console gets more advanced VERY quickly (sometimes more then the CPU itself). While GameBoy, SpaceInvaders, and NES usually aren't so bad, other old consoles such as Atari2600 and SNES have certain issues to be dealt with (for Atari usually has to deal with Pitfall II, for SNES the DSP) in order to get accurate emulation. The newer consoles and arcade hardware such as SegaSaturn/Titan Video, GC, PS2 have very advanced audio systems with either more than one core or advanced and undocumented DSPs. Instead of using basic PSG or FM based audio chips that generate simple waveforms (i.e. sin and cos for wave generation), these are APUs that create more complex audio effects and uses more complex methods (i.e. envelopes, KON/KOF, attack - sustain - decay rates, etc.). So far the most complex audio system I've seen [actual] specs on to date is Xbox1 with(at least 3 DSPs, an AC'97 Audio codec, and an NVIDIA SoundStorm APU. I know that PS3's audio system is the most advanced (where every object can have it's own sound channel!), but I don't think you'll be trying to emulate anytime soon (or even in your lifetime) Anyone can feel free to correct me if I'm wrong about any of this.

So if you need anything else, feel free to ask me anytime. Know this, I don't know everything

And about your emulator, what APIs are you using? btw, nice debugger! Looking great!
__________________

[Sagat] Windows XP x64 Pro | AMD Athlon 3000+ (~2.0GHz) | NVIDIA GeForce 6600 PCI-E | Realtek AC97 Audio | 512MB Ram | NVIDIA NForce 4-4X chipset | Seagate HDD 160GB | LG 8614 DVD-ROM | HP DVD 1040d CD/DVD -/+ RW w/ LightScribe
[Raylene] HP dv2000 | Windows Vista Home Premium | Intel Core2 Duo @2.2GHz | NVIDIA GeForce 8400 GS 128Mb (Dedicated) + 1264Mb (Shared) | 3GB Ram | 220GB HDD


GeneralEmu - December 27, 2005 and beyond!
Shogun3D Interactive (I try to update it every day now)
Shogun's Cxbx Dev Blog

Last edited by blueshogun96; March 26th, 2008 at 06:42.. Reason: Added more information that might be useful, informative, or overall educational for that matter.
blueshogun96 is offline   Reply With Quote