sinamas
2626fd78ad
- Real-time, sophisticated resampling framework with several performance/quality profiles for dynamically generated windowed sinc and CIC chains based on analysis of
fourier transforms and optimal cost equations. Fast 2-tap linear as a low quality alternative. - libgambatte: Use deltas and a running sum to decrease buffer writes in sound emulation sample generation. - libgambatte: Rearrange sound emulation event loop to optimize for high-frequency event units. - libgambatte: Initialize palette arrays to avoid valgrind noise. - Don't do resampling in libgambatte. Update API to reflect this. - Move non-emulation common code to a common directory to avoid duplication. - Update front-ends to new libgambatte API. - Utilize resampling framework in front-ends. Selectable resamplers. - Improved adaptive sleep class that estimates oversleep. - Gambatte SDL: Estimate actual output sample rate in terms of OS timers and derive frame rate from it. - Gambatte SDL: Move AudioData and RingBuffer classes to separate files. - Gambatte SDL: Make underruns slightly less painful, by resetting buffer positions. - Gambatte Qt: Update AudioEngine to support sample rate estimation in terms of OS timers. - Gambatte Qt: Implement sample rate estimation in ALSA and OSS audio engines. - Gambatte Qt: AlsaEngine: Revert to using snd_pcm_avail_update for buffer status since snd_pcm_delay may consider external latencies. - Gambatte Qt: AlsaEngine: Use snd_pcm_hw_params_set_buffer_time_near. Don't request a particular number of periods per buffer. - Gambatte Qt: AlsaEngine: Use hw as default custom device string, rather than hw:0,0. - Gambatte Qt: OssEngine: Don't trust GETOSPACE fragment info. - Gambatte Qt: Estimate optimal frame rate based on sample rate estimations. - Gambatte Qt: Extend BlitterWidget to support estimation of vsynced frame rate in terms of OS timers. - Gambatte Qt: Implement vsync frame rate estimation in QGlBlitter, Direct3DBlitter and DirectDrawBlitter. - Gambatte Qt: Use a combination of OS timer sample rate estimation and vsync frame rate estimation to derive resampling ratio for no-frame-duplication vsync. - Gambatte Qt: Change API to reflect MediaSources not being responsible for resampling. - Gambatte Qt: Make sure to parent PaletteDialog list model, so it gets deleted properly. - Various refactoring, small changes and stuff I forgot. git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@165 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
-------------------------------------------------------------------------------- -------------------------------------------------------------------------------- Copyright (C) 2007 by Sindre Aamås aamas@stud.ntnu.no This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License version 2 for more details. You should have received a copy of the GNU General Public License version 2 along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- About -------------------------------------------------------------------------------- Gambatte is an accuracy-focused, open-source, cross-platform Game Boy / Game Boy Color emulator written in C++. It is based on hundreds of corner case hardware tests, as well as previous documentation and reverse engineering efforts. The core emulation code is contained in a separate library back-end (libgambatte) written in platform-independent C++. There is currently a GUI front-end (gambatte_qt) using Trolltech's Qt4 toolkit, and a simple command-line SDL front-end (gambatte_sdl). The GUI front-end contains platform-specific extensions for video, sound and timers. It should work on MS Windows, Linux/BSD/UNIX-like OSes, and Mac OS X (although no testing or specific extensions have been done for Mac OS X yet). The SDL front-end should be usable on all platforms with a working SDL port. It should also be quite trivial to create new (simple) front-ends (note that the library API should in no way be considered stable). Usage -------------------------------------------------------------------------------- You will have to supply Gambatte with a ROM image file of the GB/GBC program/game you'd like to run/play, either as a command-line argument to gambatte_sdl, or through the File->Open... menu in gambatte_qt. Keyboard commands: TAB - fast-forward Ctrl-f - toggle full screen Ctrl-r - reset Default key mapping: Up: Up Down: Down Left: Left Right: Right A: D B: C Start: Return Select: Shift Compiling -------------------------------------------------------------------------------- Building Gambatte from source code can be done by executing the build_<qt/sdl>.sh scripts for the qt/sdl front-ends respectively, or by issueing the correct build command (either 'scons' or 'qmake && make') in the top-level subdirectories (libgambatte will have to be built first). The clean.sh script can be executed to remove all generated files after a compile (including binaries). Requirements for building libgambatte: - A decent C++ compiler (like g++ in the GNU Compiler Collection). - SCons. - optionally zlib Requirements for building gambatte_sdl: - A decent C++ compiler (like g++ in the GNU Compiler Collection). - SDL headers and library. - SCons. (- libgambatte.) Requirements for building gambatte_qt: - A decent C++ compiler (like g++ in the GNU Compiler Collection). - Qt4 (Core, GUI, OpenGL) headers and library. - Qmake and make (GNU Make should work). - Platform-specific requirements: * MS Windows: - Win32 API headers and libraries. - DirectSound and DirectDraw7 headers and libraries. * Linux/BSD/UNIX-like OSes: - POSIX/UNIX headers (unistd.h, fcntl.h, sys/ioctl.h, sys/time.h, sys/shm.h). - Open Sound System header (sys/soundcard.h). - X11 Xlib, XVideo, XRandR and XShm headers and libraries. - Alsa headers and library (Linux only). * Max OS X: - POSIX/UNIX headers (sys/time.h). - libao headers and library. (- libgambatte.) Installing after a compile simply amounts to copying the generated binary (either gambatte_qt/bin/gambatte_qt<.exe> or gambatte_sdl/gambatte_sdl<.exe>) to wherever you'd like to keep it. Thanks -------------------------------------------------------------------------------- Derek Liauw Kie Fa (Kreed) Gilles Vollant Jeff Frohwein Jonathan Gevaryahu (Lord Nightmare) kOOPa Marat Fayzullin Martin Korth (nocash) Maxim Stepin (MaxSt) Nach Pan of Anthrox Pascal Felber Paul Robson SDL Shay Green (blargg) The OpenGL Extension Wrangler Library -------------------------------------------------------------------------------- Game Boy and Game Boy Color are registered trademarks of Nintendo of America Inc. Gambatte is not affiliated with or endorsed by any of the companies mentioned.
Description
Languages
Assembly
79.3%
C++
17.5%
C
2.9%
Python
0.2%