274 Commits

Author SHA1 Message Date
sinamas
f6e052b7fb - Esc exits fullscreen on macx.
- Drop OpenAL from default macx binary.
- Add some useful but commented build flags for macx to .pro files.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@224 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-10 21:52:05 +00:00
sinamas
bb91dcd035 - Make sure to reset passed pointers when deleted. Fixes potential crash when loadin ROM during OAM busy.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@223 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-10 19:22:59 +00:00
sinamas
323dd056df - AlsaEngine: Make use of sample period limit feature of RateEst. Don't
increase estimated sample rate on underrun.
- OssEngine: Make use of sample period limit feature of RateEst. Don't
  increase estimated sample rate on underrun.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@222 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-10 04:20:23 +00:00
sinamas
6bf00db2ac - XvBlitter: Set NosystemBackground attribute rather than
OpaquePaintEvent. Reimplement paintEngine to return NULL.
- X11Blitter: Reimplement paintEngine to return NULL.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@221 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-10 04:19:12 +00:00
sinamas
7ec341818a - DirectSoundEngine: Provide the integrated read and status get write method optimization.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@220 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-09 23:00:31 +00:00
sinamas
1e4fe51206 - WasapiEngine: Use default device if there's only one device available, since we don't show the combobox anyway.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@219 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-09 21:49:18 +00:00
sinamas
0bafc3004d - WasapiEngine: Add device selection.
- WasapiEngine: Add static isUsable() method. Only listed if isUsable(). Default engine if isUsable().


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@218 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-09 08:00:18 +00:00
sinamas
4b4d05e309 - Add basic WASAPI engine with exclusive mode support. Latency and rate estimation is generally better than DirectSound, and
in exclusive mode there is less blocking as well as exclusive mode being better than shared mode in the other areas too.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@217 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-09 04:02:29 +00:00
sinamas
b3203b984b - DirectSoundEngine: Make use of the sample period limit feature of RateEst, rather than duplicating the feature.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@216 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-09 03:57:16 +00:00
sinamas
351359802b - RateEst: Add a convenient way of filtering measures that extend beyond a buffer time, and are as such
probably invalid.
- RateEst: Allow using a custom timestamp in feed().
- RateEst: Keep a queue of the last ~100 msec worth of samples and duration, and filter out collective
  samples that give a pre-estimate that seems way off.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@215 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-09 02:07:33 +00:00
sinamas
d9edc2e78d - Direct3DBlitter and DirectDrawBlitter: Force blocking updates when sync to vblank is enabled.
Some updates only block if there's a prior unfinished update in progress. This screws up frame time estimation
  in turn screwing up vsync. To fix this we do a double update (and extra blit) if close to a frame time
  period has passed since the last update when sync to vblank is enabled. I really should have noticed this earlier
  as it pretty much breaks vsync adaption completely.
- Direct3DBlitter: Use the D3DCREATE_FPU_PRESERVE flag when creating device. Omitting this flag can screw up floating point
  calculations in other parts of the code. For instance WASAPI cursor timestamps get utterly screwed up here.
- Direct3DBlitter: It appears that managed textures are updated before they are unlocked, which screws up redraws, making
  things appear choppy in some situations. Use a default memory texture and a system memory texture and the UpdateTexure
  method instead.



git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@214 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-09 01:59:53 +00:00
sinamas
e3f1d0ecb1 Replace "Game Boy / Game Boy Color emulator" with "Game Boy Color emulator" for now to avoid misleading anyone on the current status.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@213 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-06 04:23:55 +00:00
sinamas
0b9dbbcf94 Rewrite most of DirectSoundEngine, supporting primary buffer option, making it more robust, correct and hopefully cleaner.
Only use part of the primary buffer if the desired buffer size is lower than the primary buffer size.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@212 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-06 03:07:20 +00:00
sinamas
3e64d3902b Use wildcards for platform detection to avoid being unnecessarily compiler/architecture specific. Fixes bug 2377772.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@211 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-04 17:01:34 +00:00
sinamas
3305a5ad2f Pause audio on win32 titlebar clicks/drags to avoid looping audio due to underruns from blocked timerEvents.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@210 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-01 15:19:03 +00:00
sinamas
10bcbfbcd0 - DirectDrawBlitter: Add triple buffering option.
- Direct3DBlitter: Use D3DSWAPEFFECT_DISCARD in non-exclusive mode.
- Direct3DBlitter: Allow triple buffering and vblank-only updates in non-excusive mode.
- Rename "Page flipping" in Direct3D and DirectDraw blitters to "Exclusive full screen".


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@209 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2009-01-01 04:21:03 +00:00
sinamas
beb4f51f5f - Adaptively skip BlitterWidget syncs if audio buffer is low, in a manner that should minimize wasted skips in sync to vblank situation, and tries to be non-disturbing. This replaces frame time halving, and blitter specific rescueing.
- Clear display buffers in DirectDrawBlitter and Direct3DBlitter in exclusive mode, since blits don't necessarily cover the entire buffers.
- DirectDrawBlitter: Make sure that a minimum amount of time has passed between calls to WaitForVerticalBlank, since it can return in the same vblank period twice on a fast system.
- DirectDrawBlitter: Support vsync for refresh rate ~= 2x frame rate
- DirectDrawBlitter: Refactor somewhat and get rid of a couple minor potential bugs.
- DirectDrawBlitter: Some tweaks to get updates closer to sync time in certain situations.
- DirectDrawBlitter: Some tweaks to better support DO_NOT_WAIT.
- DirectDrawBlitter: Make only updating during vblank while page flipping optional.
- Direct3DBlitter: Some tweaks to get updates closer to sync time in certain situations.
- Filter out very short frame times in frame time estimation.
- Don't adjust frame time during turbo, but rather skip BlitterWidget syncs to speed up, which avoids vsync limits without disabling vsync.



git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@208 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-12-31 06:10:38 +00:00
sinamas
0a952e7c48 Up default audio buffer latency to 100 ms (some common system audio servers require a lot of buffering to work well).
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@207 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-12-26 17:56:19 +00:00
sinamas
d7203ffd32 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
6056b96c0e 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
9932b1f4ac 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
b6eab774a0 Fix mbc2 not getting a rambank
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@203 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-11-03 20:42:50 +00:00
sinamas
654aa0d2b8 Fix HqXx pitch.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@202 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-11-01 07:38:24 +00:00
sinamas
4e44f80818 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
e0d81e7011 update changelog, README
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@200 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-27 22:23:35 +00:00
sinamas
d34af28a8c 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
640cd37feb Allow more rate estimation deviation.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@198 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-27 12:36:08 +00:00
sinamas
c25bd691ad Lower opacity OSD text.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@197 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-26 15:11:07 +00:00
sinamas
3512fe21e0 Actually add the hq3x code mentioned in previous commit.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@196 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-26 13:35:29 +00:00
sinamas
71e80ba152 Add adapted and optimized hq3x.
Revert to big f'ing switch hq2x code, as there's less duplication now. Also optimized interpolation functions further. No idea how I missed that initially.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@195 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-26 13:34:13 +00:00
sinamas
5313ca3ac4 saner ly write behaviour
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@194 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-26 13:21:06 +00:00
sinamas
92b72f4849 Append "_dmg" to save base name when forcing DMG mode, to avoid corrupting CGB save files and vice versa.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@193 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-26 06:23:42 +00:00
sinamas
58a072318f Tile loading and tile rendering can seemingly get out of sync when modifying scx at a critical time. Another pessimation with little gain in the name of accuracy.
Use a look-up table to do tile byte merging.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@192 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-26 05:44:56 +00:00
sinamas
fccce3843e no sprites or sprite mapping busy cycles on first line after display enable. slight cleanup. small oam accessibility correction.
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@191 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-25 10:41:53 +00:00
sinamas
98b064d235 revert DMG window display while bg disabled change
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@190 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-24 08:43:19 +00:00
sinamas
22aec7c6c1 No rambanks for ROMs that don't request any.
Route invalid rombank addresses in non-power-of-2 number of rombanks cases to disabled area assuming ceiled power of 2 address bus.
DMG window display disregards bg enable bit.


git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@189 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-24 08:19:15 +00:00
sinamas
498c85f467 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
afb6721583 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
363c886f85 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
9feeeed04d - 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
bc437e4079 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
11545e9b0e 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
e42aa432d2 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
7568a3a45d 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
561c25e522 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
ae365541fc 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
a61a7b4229 delete unnecessary empty directory
git-svn-id: https://gambatte.svn.sourceforge.net/svnroot/gambatte@178 9dfb2916-2d38-0410-aef4-c5fe6c9ffc24
2008-10-16 20:45:20 +00:00
sinamas
e961397fef 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
21a5062e7d 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
248dee24a5 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