Apple //e emulator
Go to file
Aaron Culliney f234de116f Refactor speaker system to prevent audio glitches and to support CPU automatic speed switching
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
2015-01-31 13:57:10 -08:00
Apple2Mac Fix Mac builds 2015-01-16 21:11:29 -08:00
disks Updates flapple140.po image to a useable in read-only mode 2015-01-10 14:11:33 -08:00
docs Show Mac screenshot 2014-12-07 14:14:25 -08:00
src Refactor speaker system to prevent audio glitches and to support CPU automatic speed switching 2015-01-31 13:57:10 -08:00
.apple2 Interface menu changes 2014-03-25 23:42:05 -07:00
.gitignore ROM shim for Xcode builds 2014-06-22 12:26:40 -07:00
ASM Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
AUTHORS Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
ChangeLog Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
configure.ac Refactor speaker system to prevent audio glitches and to support CPU automatic speed switching 2015-01-31 13:57:10 -08:00
COPYING initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
Makefile.am Disk testing is separate from vm testing 2014-12-28 14:50:43 -08:00
NEWS Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
PROBLEMS Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
README initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
README.debugger initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00
README.md Update README.md 2014-12-21 14:10:48 -08:00
reconf.sh Refactor to use GNU build tools 2014-01-22 20:51:50 -08:00
TODO initial source drop, apple2-emul-0.7.4.tar.gz 2013-06-11 00:08:15 -07:00

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

Apple2Mac

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.

Apple //ix

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)

DOS 3.3

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?