Squashed commit of the following: REFACTOR : fix comments, logging, and rename some variables REFACTOR : fix up some commentary, clean deadc0de REFACTOR : mostly fix all the audio glitches - amplitudes of samples are gradually shifted to zero when speaker has fallen silent - simplifies speaker state machine - fullspeed mode only enqueues quiet samples REFACTOR : fix up a number of other functions and comments REFACTOR : clean up code to submit normal speed wave buffer to OpenAL Move some initializations to the cpu_thread() REFACTOR : properly reset the speaker cycles access counter so we don't underflow and assert REFACTOR : should never get a split buffer from our soundcore implementation Fix warning from gcc ... static array size needs to be computed from integer values REFACTOR : gcc (but not clang) complains about these, so just make them preprocessor defines REFACTOR : use unsigned long long because we don't actually care that this counter is 64bit REFACTOR : remainder_buffer and miscellaneous tweaks - Adds implementation commentary to document remainder_buffer purpose - Also adds sample average for square wave boundary in case where remainder_buffer not used (whole-sample boundary) - Variable renaming and code shuffling REFACTOR : do not dynamically alloc remainder buffer - Never attribute to cache-coherancy bugs what is a simple thread race =P REFACTOR : comments and whitespace REFACTOR : rename public speaker API functions REFACTOR : clean up public speaker API REFACTOR : tabs to spaces REFACTOR : moar deadc0de clean up and renaming REFACTOR : remove deadc0de paths from soundcore REFACTOR : fully excise soundtype stuff now that we only support soundcard output Move a file static to function scope REFACTOR : rename more variables and remove deadc0de REFACTOR : samples_buffer naming and change to explict int16_t REFACTOR : removed deadc0de and shuffled code locations REFACTOR : remainder buffer naming and clarify type REFACTOR : move joystick timing to VM module and remove header visibility REFACTOR : clarify speaker variable name REFACTOR : clarify cycle counting codepaths REFACTOR : VBL/timing interfaces - eliminates passing around a common global REFACTOR : names and comments HACK around volume issue REFACTOR : rename speaker feedback variable REFACTOR : rename global total cycle count REFACTOR : rename a constant Fix test builds REFACTOR: rename to is_fullspeed REFACTOR : local variable naming changes REFACTOR : migrate cycle timing variables to correct location and remove header visibility Allow fullspeed codepath to update speaker REFACTOR : remove deadc0de paths in prep for cleanup REFACTOR : speaker now manages its own VM entry point
Apple //ix
Apple2ix is an Apple //e emulator written primarily in C and x86 assembly language with a smattering of Objective-C (Cocoa port). Apple2ix is derived from the apple2-emul-linux project originally coded in the mid 90's.
Project Goals
The project seeks to be portable across a wide range of modern POSIX systems including MacOSX, desktop Linux/BSD, iOS, and Android.
As of December 2014, the emulator runs on MacOSX 10.9+ and Debian GNU/Linux, and mobile ports are currently on the drawing board.
Mac Package
A binary package for Macintosh is available at deadc0de.org
Size : 10240000 (10MB)
SHASUM : 81f2d55c2daaa0d3f9b33af9b50f69f6789738bf
Alt Size : 76820480 (75MB)
ALTSUM : 488a40d7f1187bcfd16d0045258f606a95f448cb
Linux Package
At the moment consists of ./configure --prefix=...
, make
, make install
;-) You will need GCC or Clang compiler
and other tools as determined by the configure
script.
Project Tech
- C language for the majority of the project (still the most portable/reliable language after all these years ;-)
- Assembly language for 65c02 CPU tightloop
- Extensive tests for 65c02 CPU, Apple //e VM, and display (expected framebuffer output)
- OpenGLES 2.x graphics
- OpenAL audio (emulated speaker and emulated Mockingboard/Phasor soundcards)
- Objective-C and Cocoa APIs (Mac/iOS variant)
Semi-Ordered TODO
- Proper VBL timing
- ProDOS-order Disk Images
- ARM assembly/ABI variant (in prep for mobile)
- OpenGL shaders/tricks for style (various screen artifacts) and functionality (Disk ][ status overlays, etc)
- iOS port
- Android NDK port
- Emulator save/restore and image compatibility with AppleWin
- Other feature parity with AppleWin
- Improved debugger routines
- Emscripten/web frontend?