Commit Graph

100 Commits

Author SHA1 Message Date
sinamas
6308d19123 QGLBlitter: Do a cheap front blit rather than a vsynced flip if audio buffers are low.
Allow BlitterWidgets to opt in to get paintEvents while unpaused. Do so for QGLBlitter since it may need to clear buffers afterwards.
QGLBlitter: Try to blit right after sync in the case of single buffering.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@206 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-12-26 17:50:13 +00:00
sinamas
7dcadcff88 Disable BlitterWidget updates (paintEvents) while not paused.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@205 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-12-26 02:32:43 +00:00
sinamas
c69e48ac80 Substantially improved rate estimation averaging.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@204 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-12-25 23:45:53 +00:00
sinamas
edd2434ca2 silly ifdef typo
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@201 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-27 23:41:57 +00:00
sinamas
cd799e3cd8 work around annoying random non-updating OpenGL on Mac OS X after full screen.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@199 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-27 19:53:21 +00:00
sinamas
b061b5db6c Add "force DMG mode" option.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@188 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-24 05:09:37 +00:00
sinamas
f834c0a646 Update SDL_Joystick to SDL-1.2 SVN. #undef UNICODE in win32/SDL_mmjoystick.c to avoid joystick name mangling.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@187 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-24 04:04:12 +00:00
sinamas
a04726f285 Fix CoreAudio engine reporting buffer status in samples rather than frames.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@186 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-24 03:02:32 +00:00
sinamas
8a321f16c5 - Add CoreAudio engine with rate estimation and buffer status support. Default engine on Mac OS X.
- 44100 Hz default sample rate on OS X, since OS X tends to resample everything to 44100 Hz.
- Get rid of buffer status averaging in OpenAlEngine, since it makes assumptions on usage pattern that shouldn't be made.
- Extend ringbuffer.h to support resetting size, and move it to common dir since gambatte_qt/coreaudioengine uses it too now.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@185 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-24 02:51:13 +00:00
sinamas
2638002fd3 Use RateEst.reset rather than re-initing on pause.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@184 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-19 20:58:05 +00:00
sinamas
ad9eda2e3f Don't duplicate blitter pointer in mainwindow.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@183 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-19 20:55:16 +00:00
sinamas
a5f83a3719 Fractional bits for intermediate rate estimation averages.
Add RateEst reset method. Initialize RateEst count to 1.
Less refresh rate estimation averaging.
Allow more refresh rate estimation deviation.
Return NULL paintEngine in windows blitters that use the PaintToScreen attribute.
Add checks for things not being initialized in DirectDraw-blitter and QPainterBlitter paintEvents.
Don't reparent blitters (mainly to make a bug in Qt 4.4.3 win less annoying, widgets that do internal reparenting are still affected).
Check for window position less than screen top-left after mode change, before full screen, to avoid Qt moving it to the primary screen.
Add rate estimation to DirectSound engine.
Better underrun detection in DirectSound engine.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@182 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-19 20:24:27 +00:00
sinamas
eb810eb4fe use crtc mode dimensions rather than crtc dimensions when discarding modes since crtc dimensions may be rotated
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@181 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-17 07:46:44 +00:00
sinamas
0a9a6a6e57 Add support for XRandR 1.2 multi-head
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@180 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-17 07:08:05 +00:00
sinamas
415a5f3c9a postpone buffered x11 blits to after sync.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@179 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-16 21:31:46 +00:00
sinamas
5e3bbd0f2a Move Qt media framework to a separate subdir
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@177 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-16 20:41:51 +00:00
sinamas
14918d577f Don't bother allowing sources the choice of which output sample rates are selecrable,
as it's not really a per source thing at this point. If resampling avoidance is desired, then that
should rather be a user option (to depend on the OS for resampling, which is mostly nonsensical for the Game Boy/NES/PSG-system case btw).


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@176 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-16 17:17:30 +00:00
sinamas
f4b56a9214 allow dynamically setting samples per frame
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@175 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-16 16:57:44 +00:00
sinamas
3a39b8fce2 Adjust estimated frame time each frame.
Use half frame time if audio buffer is close to underrun.
Provide combined audioengine write and status get, to avoid doing potentially expensive operations twice. Utilized in OSS and ALSA engines.
Saner vsync estimate variance protection.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@174 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-16 01:55:07 +00:00
sinamas
efd990ffff Stricter estimate deviation limit
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@173 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-16 01:50:39 +00:00
sinamas
32232f58e1 More averaging in estimation code.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@170 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-15 02:04:15 +00:00
sinamas
160b2786fa limit vsync frame rate estimation deviation
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@167 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-14 00:18:09 +00:00
sinamas
0661f57297 silence forgotten debug message
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@166 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-13 23:14:27 +00:00
sinamas
5bbabdcfdd - 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
2008-10-13 21:08:08 +00:00
sinamas
0da282ee15 Prevent all text editing of input boxes.
Add custom context menu to input boxes.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@162 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-07-16 21:20:10 +00:00
sinamas
a0bc227484 Only ask for xrandr config once to avoid potential server roundtrips in some xrandr versions.
Make sure xrandr version is >= 1.1 and < 2


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@161 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-07-11 22:01:52 +00:00
sinamas
dc496432d1 fix silly "alsa not using default device by default" bug
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@160 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-07-11 21:08:59 +00:00
sinamas
dd884dd74f Fix GCC 4.3 warnings about people getting confused by operator precedence by adding parentheses.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@159 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-07-11 20:56:40 +00:00
sinamas
e6c3f2d777 add custom sample rate support
change default buffer latency to 67 ms
don't auto-repeat buttons bound to keyboard
use enums for somewhat more robust gambattesource button setup


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@154 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-28 19:29:49 +00:00
sinamas
09f966a927 Direct3DCreate function pointer typedef needs WINAPI macro
disable page flipping dependent checkboxes in constructor to ensure 
correct start state


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@153 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-27 15:55:48 +00:00
sinamas
788e1d0ef1 store currently selected scheme as string, since it appears ModelIndex
is neither tied to the data it points to nor invalidated by changes.
enforce valid state on reject since the list of schemes may have 
changed.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@152 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-27 08:27:27 +00:00
sinamas
0ad3fd9580 use QString for videoSourceLabel passed to MainWindow constructor
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@151 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-27 06:19:33 +00:00
sinamas
761db80d31 missing string include
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@150 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-24 09:35:29 +00:00
sinamas
1c2e07c956 Add tab support to input settings dialog.
Add alternate key support to input settings dialog.
Auto-focus to next likely input box after settings key in input dialog.
Add "Play" and "State" input settings dialog tabs.
Avoid using the most convenient keys as forced menu short-cuts, set them 
as default keys in input settings dialog instead. This unfortunately 
makes the more useful shortcuts less visible, but it allows remapping 
the most convenient keyboard keys.
Avoid duplicate joystick axis "press" events by keeping a map of axis 
states.
Make sure to discard irrelevant/old joystick events.
Don't give MediaSource button events when stopped.
Allow joystick-based button events while paused by using a very 
low-frequency poll timer.
Make some of the joystick event wrapping stuff less messy.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@149 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-24 00:03:20 +00:00
sinamas
721bcaa3d1 add Play menu with Pause, Frame Step, Dec/Inc/Reset Frame Rate
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@148 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-22 19:47:18 +00:00
sinamas
8d8cbef8d5 make sure windows path arguments don't use backslashes by using
QFileInfo


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@147 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-21 17:41:51 +00:00
sinamas
e984450f7b missing includes
missing virtual destructor


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@146 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-20 11:21:03 +00:00
sinamas
a55d12f145 add save state actions to GUI menu
clean up GUI menu creation code
move GUI recent files to submenu
move state 0 OSD pos to rightmost to match kbd layout
state 1 default on ROM load
support external save state files
add number key slot selection shortcuts


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@145 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-05-20 07:59:18 +00:00
sinamas
3dda26e19b don't build xf86vidmodetoggler by default
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@141 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-04-06 05:46:53 +00:00
sinamas
551fbacd9d - add direct3d9 blitter with support for vsync, bf,
page flipping, triple buffering, device selection,
  multi-head etc. d3d9.dll loaded at runtime
- more strict and thorough exclusive mode handling to support d3d fullscreen
- work around file open dialog not returning focus properly
- gditoggler: use current registry settings for return modes
- directsoundengine: set DSBCAPS_GETCURRENTPOSITION2 flag
- revert bad macx return from fullscreen on menu-toggle


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@140 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-25 23:59:42 +00:00
sinamas
39f05a45e2 directsoundengine: add device selection.
directdrawblitter: only list devices if there are more than 2 devices (including primary)
directdrawblitter: use private static member rather than global friend enumeration callback
capitalization changes


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@139 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-19 14:23:01 +00:00
sinamas
115e2476ad Add directdraw device selection.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@138 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-19 13:08:34 +00:00
sinamas
e9b4561695 gditoggler: add multi-monitor support (win32)
videodialog: save actual hz values for real this time
quartztoggler: avoid potentially reverting to the wrong mode on double setFullMode(false) in multi-head configs
make sure window is within screen after mode change, so Qt doesn't reset it to the primary screen
revert to previous win32 fullscreen geometry correction behaviour so that the geometry gets properly reset after fullscreen



git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@137 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-19 00:15:56 +00:00
sinamas
dc29212d85 refactor Blitterwidget::sync
directdrawblitter: remove unecessary turbo conditions


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@135 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-17 20:34:54 +00:00
sinamas
40b6be8215 fix win32 compilation
refix win32 fullscreen geometry correction
neater win32 BlitterWidget::sync
avoid misleading minimize on fullscreen close


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@134 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-17 15:28:21 +00:00
sinamas
8c12664080 - macx fixed/variable window size change issue fixed
- macx opengl drawbuffer change issues worked around
- add openal engine, default on macx
- add macx quartz video mode toggler
- multi-head infrastructure
- support multiple monitors in macx quartz toggler
- more work-arounds for Qt failing to set correct geometry on video mode changes.
- more explicit fast-forward button handling, to avoid missed key press/release events on macx
- opengl doublebuffer preblitting, try to make actual screen updates as close to right after sync wait is over as possible
- add xf86vidmode toggler (xrandrtoggler is default)
- x11blitter: check for other supported visuals if the default is unsupported.
- temporarily return to original video mode and minimize on full screen alt-tab (except on macx or if there are multiple screens), switch back on focus-in
- hide mouse cursor after move timeout, or key/joystick pressed (more sane on macx)
- exit fullscreen rather than toggle menubar on macx (note that the menubar will automatically pop-up on macx full screen if the mouse is moved to the top of the primary screen)
- add (independent) pause counter for non-client pauses.
- reset X11 screen saver on joystick activity
- change "turbo"-mode to temporarily set frametime as a way of avoiding vsync issues (for a laugh, check out the video dialog while in fast-forward mode and see "Sync to vertical blank in 65535 and 131070 Hz modes").


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@133 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-15 06:29:29 +00:00
sinamas
6c37c96d0e less bloated
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@132 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-05 18:38:41 +00:00
sinamas
57dbb2e710 exclude iostream
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@131 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-05 14:37:05 +00:00
sinamas
6a84c2c8ab center linear weighing bias
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@130 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-05 14:34:39 +00:00
sinamas
401a4a404b remove forgotten static qualifiers
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@128 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-03-03 12:05:59 +00:00