Commit Graph

151 Commits

Author SHA1 Message Date
Aaron Culliney
602c2530e6 Stub a touch-based joystick in OpenGL 2015-02-17 20:23:06 -08:00
Aaron Culliney
43b280d3ba REFACTOR : glinput.c -> glutinput.c 2015-02-17 20:13:18 -08:00
Aaron Culliney
604a325c6b Default to avoiding use of VAOs
- Default Android NDK does not have appear to have glGenVertexArrays, et al
2015-02-17 19:54:47 -08:00
Aaron Culliney
1c31c1074d REFACTOR : macro defines into toggles 2015-02-16 08:47:26 -08:00
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
Aaron Culliney
780905155a Only render if necessary 2015-01-23 23:37:43 -08:00
Aaron Culliney
b8c44b81ab Simple FPS logging 2015-01-18 11:10:16 -08:00
Aaron Culliney
882eae4818 Ugh, GLUT idle func was chewing up CPU
- ugh, why is the millis parameter to glutTimerFunc() an int?! 1000ms/60Hz = 17ms
2015-01-14 23:24:33 -08:00
Aaron Culliney
643a431386 first cut at auto fast-loading of disk images
- automatically adjusts cpu timing to fastest if drive motor accessed recently and no audio/video
    - TODO: audio output clipping issue when (un)pausing audio outpu
2015-01-11 18:35:51 -08:00
Aaron Culliney
381d97c485 Preliminary VBL support sourced from AppleWin 2015-01-10 16:17:18 -08:00
Aaron Culliney
a7cd281037 mark other INTERFACE_CLASSIC codepaths 2015-01-10 14:14:49 -08:00
asc
34d043330b Silence some valgrind complaints 2014-12-21 13:59:04 -08:00
Aaron Culliney
031a8f51f8 Prevent some segfaults when shutting down on Linux 2014-12-21 13:51:45 -08:00
Aaron Culliney
b6e329a3c6 Prevent segfault in glGetError() during app initialization 2014-11-29 13:31:21 -08:00
Aaron Culliney
c075460b76 Gets OpenGL output working with testing VM and display
* Refactors test routine to its own thread to not interfere with OpenGL on main thread
    * Misc TESTING/HEADLESS switch tweaks
2014-11-22 14:24:43 -08:00
Aaron Culliney
e5e087c4e0 Refactor joystick handling
* Removes Linux-specific joystick handling
    * Adds cross-platform GLUT joystick handling; Caveats:
        - GLUT is not robust to joystick hot plugging like my old Linux-specific code was.  (Fix should be made in the
          GLUT driver and pushed upstream if we really care)
        - Deprecated X11 renderer now can only use keypad joystick
2014-11-09 15:48:05 -08:00
Aaron Culliney
6fdeee3896 Cleanup and fixes for compiler warnings 2014-10-31 16:27:39 -07:00
Aaron Culliney
65f991ebcc Build fixes for deprecated X11 variant 2014-10-30 00:11:17 -07:00
Aaron Culliney
a2a55d53ed Fixes for various clang static analyzer issues 2014-10-25 11:53:44 -07:00
Aaron Culliney
29e8502f23 Silence compiler warnings on Mac 2014-10-25 10:18:22 -07:00
Aaron Culliney
551cc00781 Silence a number of clang compiler warnings on Linux 2014-10-25 08:44:21 -07:00
Aaron Culliney
429561643e Fix build for testvm and testdisplay 2014-10-09 20:54:11 -07:00
Aaron Culliney
96c7544feb Support fullscreen mode with GLUT/Linux 2014-10-07 22:22:21 -07:00
Aaron Culliney
ca29ec543d Get Linux build working with OpenGL changes 2014-10-07 22:05:14 -07:00
Aaron Culliney
69bd40216b Refactor to rename Basic.vert and Basic.frag 2014-10-07 22:04:23 -07:00
Aaron Culliney
e696f7882f Refactor for whitespace and clarity 2014-10-07 21:59:21 -07:00
Aaron Culliney
d083fa958f do not use vgl.h, use glUtil.h 2014-10-07 21:26:50 -07:00
Aaron Culliney
6858e51a75 Apple2Mac first cut and refactor common rendering code
* Based on NSOpenGLView and Apple's GLEssentials sample code
    * CVDisplayLink- or NSTimer-driven rendering
    * Works in window or fullscreen mode on Mac OSX Lion or later

TODO FIXME:
    * Breaks Linux/Posix build
    * Cocoa menu interfaces
    * Key/mouse/joystick/gamepad handling
2014-09-30 21:01:58 -07:00
Aaron Culliney
f794098a02 Bugfix : properly handle control-modified keys
* GLUT sends the raw ascii ctrl-values, so we merely send them along in a "cooked" mode
        + It may be that some strange ctrl combinations (saw CTRL-~ or CTRL-ESC) are not properly handled this way, but
        ... not sure what can be done about this (doesn't seem to be a way to force glut to send us the non-cooked keys)
    * Legacy X11 input continues to be sent as raw values (which arguably is a better way)
2014-09-21 17:26:37 -07:00
Aaron Culliney
db8ac1c98b Refactor : separate glut input handling into its own file 2014-09-21 16:06:32 -07:00
Aaron Culliney
d0800fd347 Remove deadc0de key handling paths (leftover from X11) 2014-09-21 15:44:25 -07:00
Aaron Culliney
804f60d6a0 Fix key input handling in GLUT/glvideo
* TIL GLUT constants for certain special keys map to ascii (for example GLUT_KEY_ALT_L == 116/'t') ... of course
      this was playing hell with the emulator's key input handling
    * Now we directly convert regular keys rather than pushing them down the special path
    * Also separateds CAPS_LOCK hack into its own inline function
2014-09-21 15:37:38 -07:00
Aaron Culliney
c3ac3e8f1c Get the PC Joystick working with glvideo renderer 2014-09-21 14:33:54 -07:00
Aaron Culliney
c162617234 Remove a bunch of deadc0de 2014-09-21 13:35:37 -07:00
Aaron Culliney
df8ae3d018 First cut at basic OpenGLES 2.0 renderer
* Compiles/runs on Linux
    * X11 renderer is now deprecated
2014-09-16 21:34:04 -07:00
Aaron Culliney
a929ef854c Refactor video_sync() and friends
- main thread render loop goes into X11 video driver
    - removes video_sync()
2014-09-16 20:38:14 -07:00
Aaron Culliney
77e8f88edc Refactoring colormap to internal structure/array 2014-08-17 15:31:49 -07:00
Aaron Culliney
4fb69a3196 Slight refactoring of key handling
* Adds a mapping from common ASCII to internal scancodes
    * Renaming for consistency
2014-08-17 15:29:06 -07:00
Aaron Culliney
2def12c703 Fix build warning 2014-06-08 15:50:34 -07:00
Aaron Culliney
2f2698ed9e Mark non-XShm support as buggy 2014-06-08 14:14:47 -07:00
Aaron Culliney
57a01d28a8 Refactoring coding style for clarity 2014-05-18 14:40:53 -07:00
Aaron Culliney
95ff4adb08 Refactor hires table initializations 2014-05-17 13:45:55 -07:00
Aaron Culliney
8b0325d60d "HEADLESS" CPP define and envvar switches
* Allows running emulator in headless mode (default for some tests)
    * setting HEADLESS=1 envvar from commandline will force headless operation
2014-04-26 13:34:35 -07:00
Aaron Culliney
a43d31a22e Remove non-//e code paths 2014-04-05 12:22:12 -07:00
Aaron Culliney
558ec8f1d5 Remove non-"640x400" display mode 2014-04-04 22:16:29 -07:00
Aaron Culliney
afcc95c2f4 Allow Caps Lock state from X11 to override default 2014-03-30 13:20:56 -07:00
Aaron Culliney
209eb86051 More common video code
* Provide new function to get current common framebuffer
    * Migrates non-X11 video_setpage routine
2014-03-30 11:11:02 -07:00
Aaron Culliney
78a3b39f6d Interface menu changes
* Added an option to set caps lock (basing it off X11's value is not working well)
    * Added a reboot emulator option (because Ctrl-Alt-End is potentially mapped by the X11 WM. ahem, Xfce...
2014-03-25 23:42:05 -07:00
Aaron Culliney
1dd72ec999 Codepaths for VIDEO_X11 macro conditional 2014-03-23 14:43:19 -07:00
asc
17440949bf Updates to support testing 2014-01-25 14:13:38 -08:00
asc
3abd2e87aa Refactor to use GNU build tools
* Added configure.ac and non-recursive Makefile.am
    * Modularized source into subdirectories
    * Simplified header inclusion
2014-01-22 20:51:50 -08:00