Commit Graph

61 Commits

Author SHA1 Message Date
zeromus 9e50d25c16 snes-support user override backdrop color 2012-10-17 18:39:44 +00:00
goyuken b40897bb77 sound api changes. added a new ISyncSoundProvider, which works similarly to ISoundProvider except the source (not the sink) determines the number of samples to process. Added facilities to metaspu, dcfilter, speexresampler to work with ISyncSoundProvider. Add ISyncSoundProvider to IEmulator. All IEmulators must provide sync sound, but they need not provide async sound. When async is needed and an IEmulator doesn't provide it, the frontend will wrap it in a vecna metaspu. SNES, GB changed to provide sync sound only. All other emulator cores mostly unchanged; they just provide stub fakesync alongside async, for now. For the moment, the only use of the sync sound is for realtime audio throttling, where it works and sounds quite nice. In the future, sync sound will be supported for AV dumping as well. 2012-10-11 00:44:59 +00:00
goyuken c392b24d22 libsnescore: eliminate errant querying of "P1 ", et al in controller routine 2012-10-08 18:55:25 +00:00
goyuken c24abbcbad libsnescore: make deterministic mode savestates all the same size (previously, frame 0 savestates were slightly smaller)
rewind: throw a slightly more intelligible exception message when savestates differ in size
2012-10-08 18:18:43 +00:00
goyuken c167c043e1 rework libsnescore's deterministic savestate mode. like before, savestates are created every single frame. unlike before, now they are created on the frame before they "happen". this is all presented invisibly to the user. don't try to load old savestates in deterministic mode. don't try to mix deterministic and non-deterministic savestates. playing back old movies (provided they don't start from a savestate) should cause no problems, but may or may not sync. 2012-10-08 14:37:42 +00:00
goyuken 6d683f9327 libsnes: like sms, DisplayType property for ntsc\pal 2012-10-06 16:28:42 +00:00
goyuken b545d79fb6 lua: add emu.on_snoop() 2012-10-06 13:34:04 +00:00
zeromus 96089026cd remove "SGB" systemid because its gonna cause a lot of trouble if we dont hook it up in a lot of places.. why can't we set it up as just a regular snes core? and run the sgb rom through the snes firmwares directory. 2012-10-05 04:47:45 +00:00
goyuken 98d9f13600 change IEmulator.DeterministicEmulation to get-only; the old interface implies that a core should be able to take a change to the property at any time, which isn't feasable. most existing cores changed to return true all the time. SNES now takes determinism parameter in Load() 2012-10-03 15:31:04 +00:00
goyuken 0e292d19ca snes: don't instantiate "BUS" domain when DeterministicEmulation == true 2012-10-03 15:11:21 +00:00
goyuken e509b0cd9b snes: Add "BUS" memory domain. Like GB, caveat that it could possibly maybe affect sync, maybe... doubly so because I can't penetrate byuu code so well. 2012-10-03 14:54:32 +00:00
goyuken d4f5ed2f50 Movie playback and recording will now set IEmulator.DeterministicEmulation = true; only snes core actually does anything with this. It hasn't been explained before in a log; so I'll do it now: When in deterministic mode, the snes core internally does exactly one savestate each and every frame. Then, if the frontend calls savestate at all, it always gets the same internal cached savestate. If the frontend doesn't call savestate, then the internal savestate is simply discarded. This way, the exact same number of RunToSave() calls occur every time. 2012-10-01 14:39:52 +00:00
zeromus 2b1e04997c snes-try more accuracy in the wallclock-sync to fix audio hiccups. we really, really need fancy systems to sync to audio or do proper vsync (and rewire the snes resampler to forcibly adjust to a 60hz display rate) 2012-10-01 04:15:21 +00:00
goyuken cefca2e098 libsnes: deterministic mode for savestates. not hooked up yet 2012-09-30 19:22:54 +00:00
goyuken 2b117c3955 snes: read region, so 50fps live viewing and video dumping now works (PAL).
pretty sure no flags are saved to movie files, though...
2012-09-30 18:21:32 +00:00
goyuken 40d86d0a8b SNES: change the initial bootup frame size (on frame zero) to 256x224.
it's the most common game resolution, and also the smallest (so can avoid some instances of window size snapping down because too big)
2012-09-30 14:08:50 +00:00
zeromus e0f506002d snes-try to survive the display of interlaced modes. havent had an actual game test this so im not sure what it looks like 2012-09-30 05:17:08 +00:00
zeromus 1fbbbaf776 oops 2012-09-27 11:58:04 +00:00
zeromus d9a55fed37 snes-load firmware files from a CoreInputComm path, which must be named exactly right; show the requisite filename in a messagebox if it's missing; but theres no GUI for the firmware path hooked up yet. 2012-09-27 07:22:31 +00:00
zeromus 6c8177a08b snes-print messages from libsnes. now you can see which dsp/firmware dependency it detected for the game (it has its own heuristics, not necessarily any need for gamedb yet). still not loading the firmwares though 2012-09-27 01:38:27 +00:00
goyuken fc8087c344 preliminary SGB support.
1) choose your SGB rom from the path config (should probably be an .smc file of about 256KB)
2) turn on Load GB as SGB from the GB menu.
3) load rom again.
To turn off, uncheck Load GB as SGB from the SGB menu.
2012-09-26 15:59:14 +00:00
zeromus f53aa56f1c snes-support high-res (2x=512 width) display modes by doubling the vertical lines. maybe we'll need to do this differently if we can find a game thats controlling the interlacing options. 2012-09-24 08:00:42 +00:00
zeromus 52edee63d8 snesgfx-support mode7 direct color displays. still need an example of a mode 3 or 4 direct color usage 2012-09-24 07:46:54 +00:00
zeromus 4efea7605d snesgfx-support mode7ExtBg tiles & BG 2012-09-24 06:47:34 +00:00
goyuken dab03cb034 snes: fix savestates just as in the previous commit 2012-09-23 16:59:44 +00:00
goyuken 7e89882d42 lag counter in sneshawk
c++ is dum
2012-09-23 15:57:01 +00:00
zeromus 03cb238ae3 snes-add scanline render callbacks and add scanline selector to graphics debugger 2012-09-22 05:03:52 +00:00
zeromus 3c6549a7bb snesgfx-decode mode7 graphics 2012-09-21 17:21:21 +00:00
zeromus 70392be4e4 snes-all memory domains were showing WRAM instead of the right thing; fixed 2012-09-21 06:03:27 +00:00
goyuken c026b2dc81 slightly optimize previous commit by avoiding 32k unmanaged=>managed transition calls per second when skipping audio 2012-09-20 20:36:44 +00:00
goyuken 176ecd8650 support for !rendersound in LibsnesCore
worth about 5-10% on my machine in secret of mana opening
2012-09-20 20:25:40 +00:00
goyuken 51fc8e695c add 'bool rendersound' to IEmualtor.FrameAdvance()
if false, the emulator is free to gain whatever speedup it can by not doing audio processing (shouldn't change anything sync related, though)
the core should still always call SoundProvider.GetSamples() after each FrameAdvance(), else DRAGONS
at the moment, only test-implemented in gambattehawk
2012-09-20 19:52:47 +00:00
zeromus 8cbc3ee2af snes-setup hard and soft resets 2012-09-16 17:15:53 +00:00
goyuken 83e145c36f change the IEmulator saveram interface.
i don't like doing this, but there were already two emus with special bandaid logic in MainForm.cs
i hope this doesn't break something, but if it does i'll fix it
2012-09-14 22:28:38 +00:00
goyuken d84f13275e add IsLagFrame, LagCount, Frame to Snes savestates 2012-09-11 01:50:55 +00:00
goyuken 578e247524 add lag counter to LibsnesCore
per ilari, this should work correctly on certain games that poll the input in a particular way.  however, it is completely non-functional on many other games.  core digging is required for anything better.
2012-09-11 01:36:12 +00:00
andres.delikat 286e5c9b08 SNES - make controllers 2-4 work 2012-09-10 18:40:39 +00:00
zeromus 8e42658702 completing the trifecta: fix the terrible nondeterminisms that made series of snes romloads act wacky 2012-09-09 21:19:54 +00:00
zeromus 285b9581f2 snes-work on graphics tools. can now render typical BGs for mode 1. SLOWLY!!!!! this is definitely getting turned into c++ code 2012-09-08 20:03:04 +00:00
goyuken 2a01e01e78 clean up resampler with rest of libsnes 2012-09-08 01:15:16 +00:00
andres.delikat d56c0c354b SNES - oops, hookup setting the frame counter as well 2012-09-07 20:31:05 +00:00
goyuken 71652b25dc cleanup/simplify SpeexResampler 2012-09-07 20:12:47 +00:00
andres.delikat afa27c1a26 SNES - hook up frame counter 2012-09-07 20:06:57 +00:00
goyuken 001b28c60e replace junk and bad license resamplers with libspeexdsp (using p/invoke). MIT licensed, sounds pretty decent.
the p/invoke wrapper class is a hackjob i was using for testing and will be replaced.
2012-09-07 18:49:18 +00:00
zeromus ad6910fd74 snes-some beginning steps on graphics debugging tools. nothing to see yet, move along 2012-09-06 08:32:25 +00:00
goyuken a85dadcf7d did a bunch of listening tests with libsnes and metaspu. switched to vecna metaspu
it seems to be the most stable when the system is fast enough to maintain approximately 100% speed.

also fixed up metaspu in dumping and switched it to vecna.  i can now have clean audio while running libsnes with lua script and ffmpeg dumping.
2012-09-06 00:07:37 +00:00
goyuken 41e2e5bced orphaned variable from r2898 2012-09-05 23:32:41 +00:00
zeromus ade89fe798 snes-fix bug where loading more than one snes rom would wreck the emulator 2012-09-05 23:16:08 +00:00
goyuken b0e3a332d8 abstract resampling functionality into IStereoResampler for testing purposes
add two example resamplers that implement this: LinearResampler and CubicResampler.  both are very basic and sound like shit compared to libresample4j
ultimately, a single good resampler with a better license than libresample4j should be selected and used
2012-09-05 21:21:35 +00:00
goyuken 0430ec91c8 add resampler based on libresample4j (LGPL)
hook that up to libsnes, so libsnes audio now goes through libresample4j and then metaspu
it sounds ok
2012-09-05 18:52:17 +00:00