1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-23 18:31:53 +00:00
Commit Graph

247 Commits

Author SHA1 Message Date
Thomas Harte
c773c3a66c Started trying to clean up and consolidate on the Swift side of things but time is up for the day. 2016-05-31 22:32:38 -04:00
Thomas Harte
8dc66167be Made an attempt to consolidate the Objective-C++ side of things based on the incoming CRTMachine::Machine. 2016-05-31 22:16:20 -04:00
Thomas Harte
5c4f35e13f Finally started on generalising the C++ stuff so as to be able to be able to get a working audio binding on the OS-specific side without further repetition by factoring an appropriate protocol out from the Electron and sketching out the correct speaker class for the Atari. Added a method to ask it what a good output frequency would be. 2016-05-31 21:23:44 -04:00
Thomas Harte
40600b4bcb Made sprite placement consistent at least. Not necessarily yet correct. 2016-05-18 22:07:24 -04:00
Thomas Harte
3765c5fbb5 Fixed error that would prevent an interrupting frame from ever being drawn. 2016-05-18 21:45:35 -04:00
Thomas Harte
ddfc9910e5 Sought to draw in a standard serial arrangement as and when bandwidth allows it. 2016-05-09 07:17:12 -04:00
Thomas Harte
1bb92550f8 It's 2016. 2016-05-02 22:02:06 -04:00
Thomas Harte
6982e945fb Fixed those issues breaking GL state, I hope. 2016-05-01 16:17:52 -04:00
Thomas Harte
8538b62ea2 Made an attempt to extract and consolidate the logic behind the intermediate shaders. 2016-04-28 21:04:59 -04:00
Thomas Harte
496d979aca Made a decision to clean up by creating per-shader classes. Well, more or less. First thing to be factored out: the output shader. 2016-04-27 22:29:54 -04:00
Thomas Harte
416c944f02 Experimental: let's try accumulating history directly in the framebuffer. 2016-04-26 21:41:39 -04:00
Thomas Harte
9b64f64db7 Attempted to normalise some style decisions.` 2016-04-24 22:32:24 -04:00
Thomas Harte
884755c560 Ensured the GL context is available when switching Atari 2600 output, and that it locks the output. 2016-04-24 20:56:21 -04:00
Thomas Harte
d221c712b0 Ensured GL context is active when destructing CRTOpenGL. 2016-04-24 20:34:25 -04:00
Thomas Harte
929cfc49cb Extended window for picking output frequency, attempted to consolidate CRT OpenGL timing uniforms for approprate resetting. 2016-04-24 18:58:31 -04:00
Thomas Harte
082003ed0a Reintroduced the CRT delegate and the 2600's automatic region switching. Albeit that the CRT itself doesn't adjust properly to new timings yet. 2016-04-24 18:36:22 -04:00
Thomas Harte
80a3169674 Started reviving the Atari 2600 emulation. Put new startup sequence into place. 2016-04-24 06:56:08 -04:00
Thomas Harte
9c89b668ae Made further attempts to improve synchronisation and interrelated timing between display and machine update. 2016-04-20 22:35:46 -04:00
Thomas Harte
7aa87723a9 Added: key states are all cleared if the window loses focus. Which resolves sticky key issues. Allowing me just to use command+option+O for options and map both command and option as FUNC. 2016-04-19 21:29:10 -04:00
Thomas Harte
d5bac2f04f Spotted error was in texture target all along. This now gets as far as showing something a lot like the correct display, but precision is way off. Way off. 2016-04-18 21:32:48 -04:00
Thomas Harte
86626bbd72 Switched key that maps to FUNC from command to option. Logic is that command may frequently be used for performing an action which changes the key window, in which case we won't realise if it is released. 2016-04-18 19:20:26 -04:00
Thomas Harte
f89308e913 Set the 'options' windows to hide on application deactivation so that they don't cluelessly sit on top of the rest of the system. 2016-04-18 19:14:58 -04:00
Thomas Harte
bf29c8e2bf Fixed mismatch in television/monitor selection, ticked view for drawing concurrently, since it can, removed stray space. 2016-04-18 19:01:15 -04:00
Thomas Harte
3d53f157de Output selection now takes effect. So I can stop accidentally committing changes back and forth. 2016-04-18 08:27:58 -04:00
Thomas Harte
94f148e212 Wired in options, at least getting as far as the Objective-C bridge. Then fast loading makes it to the emulated machine, display output type doesn't. 2016-04-18 08:21:00 -04:00
Thomas Harte
6158275ea7 Started adding an options panel. 2016-04-17 21:43:39 -04:00
Thomas Harte
499f7ace07 Re-enabled working video output for the Electron for the day and consolidated the rough metric I'm using to pick a number of taps for the audio filter. 2016-04-17 20:43:20 -04:00
Thomas Harte
104f44f27f Attempted to improve deinterlacing, gave the CRT full control over blend mode, switched back to 2000000Mhz audio. 2016-04-14 22:20:47 -04:00
Thomas Harte
2cc72169ff Ensured machines can nominate their own aspect ratio windows. Switched to 11/10 for the Electron. 2016-04-11 23:12:56 -04:00
Thomas Harte
7276a06cc0 Added a helper to calculate a visible rect based on output timings, used it to scale the Electron output up to the full window size. 2016-04-11 21:47:23 -04:00
Thomas Harte
e617bd2bb3 Turned audio quality up to the maximum, at least for now. 2016-04-06 21:12:22 -04:00
Thomas Harte
28e6517234 Switched away from tracking absolute time to tracking relative. 2016-04-06 20:46:00 -04:00
Thomas Harte
d4be4c4769 Of course, I want min. Not max. 2016-04-06 20:27:48 -04:00
Thomas Harte
fd1f6a7e1f Expanded on thinking. 2016-04-06 19:35:53 -04:00
Thomas Harte
e885438363 The penny has finally dropped that I can drive the CPU stuff in a manner completely decoupled from the GPU stuff. For much improved parallelisation. 2016-04-06 19:34:34 -04:00
Thomas Harte
4595741ab0 Made an attempt not to interrupt the display link queue too much when emulation is running slowly. 2016-04-04 20:22:33 -04:00
Thomas Harte
3038704977 Attempted to introduce a lowpass filter to the graphics output, reverted 6502 optimisations as seemingly not working. 2016-03-21 22:01:25 -04:00
Thomas Harte
5966ac845f Switched symbols and updated all-RAM 6502 in order to fix unit test target. 2016-03-20 22:48:56 -04:00
Thomas Harte
902017a962 Fixes: drop any processing backlog, try not to allow an Electron document to close mid-draw, perform a frame grab even if the emulated machine is over-processing, really really don't create a CRT until it's safe. 2016-03-20 18:42:37 -04:00
Thomas Harte
fb6fb5d948 Switched to two-phase setup to deal with OpenGL scheduling. 2016-03-20 13:50:13 -04:00
Thomas Harte
eabc382540 Fixed: of course I can't rely on the pointer to CVTimeStamp not becoming dangling during a queue jump. 2016-03-19 23:02:42 -04:00
Thomas Harte
4c5d66c317 Made sure GL context isn't activated until it's locked. 2016-03-19 22:54:56 -04:00
Thomas Harte
a546277f88 Added the simplest mechanism to decouple emulation from the display link queue. 2016-03-19 22:53:37 -04:00
Thomas Harte
9da7716c72 Attempted to simplify threading, thereby allowing machines to be constructed within a valid GL context, and started adding appropriate GL syncs. Which all oddly drops everything to a negligible FPS. Investigation will follow. 2016-03-19 22:46:17 -04:00
Thomas Harte
4ac1f959e9 A shortcut here and a shortcut there; this allows me at least to determine whether use of a PBO gains anything. 2016-03-19 17:07:05 -04:00
Thomas Harte
4cd0aa3416 Completed FIR filter based audio output. 2016-03-15 23:37:35 -04:00
Thomas Harte
7694297c83 Introduced an adapted version of the previous Clock Signal's FIR filter. 2016-03-15 21:05:20 -04:00
Thomas Harte
1c4acfb599 I think this is a prima facie acceptable implementation of the fast tape hack. 2016-03-13 17:39:53 -04:00
Thomas Harte
bb0cd89574 Got explicit about threading guarantees. 2016-03-13 13:38:03 -04:00
Thomas Harte
cfa616d593 Fixed: timing issue versus supplied test ROM was failure to include the Plus 1 ROM in the mix. 2016-03-12 11:51:20 -05:00
Thomas Harte
bf5747f83e Made an attempt to chop out all the stuff of building up the OpenGL data from the stuff of parsing input. 2016-03-08 22:40:23 -05:00
Thomas Harte
14b2927275 Made further attempts to tidy up; trying to demarcate between public interface and private. 2016-03-08 20:59:16 -05:00
Thomas Harte
1e5fe2b2c1 Made an attempt to reestablish the Atari 2600 output connection despite various changes (TODO: generalise that stuff), and to start creating the composite shader. 2016-03-07 21:04:04 -05:00
Thomas Harte
41c09f8c3f Renamed CSCathodeRayView to CSOpenGLView as it no longer has any CRT-related responsibilities. It just does the GL and manages a serial dispatch queue. 2016-03-05 14:45:09 -05:00
Thomas Harte
95efeb1d56 Ensured all delegate and responder delegate messages occur on the same queue. 2016-03-05 14:35:47 -05:00
Thomas Harte
c754a6e45a Decoupled execution speed and frame rate; cleaned up. 2016-03-03 22:12:31 -05:00
Thomas Harte
60d35fa72b Requested multisampling, if available, rather than supersampling. 2016-02-27 22:46:31 -05:00
Thomas Harte
c7f54d649e Switched back down to two samples per pixel. Though one might do it. Need to investigate. 2016-02-18 23:21:25 -05:00
Thomas Harte
3ea0d04a1a -dealloc now blocks until all audio queue buffers are no longer playing. 2016-02-16 21:47:23 -05:00
Thomas Harte
bbffbb5dc2 Resolved deadlock if an invalidate call was sent to the Electron while it was in the middle of an update. 2016-02-16 20:35:45 -05:00
Thomas Harte
a01f90ff3e Attempted a switch to the real PAL visible area and to something a bit like a real phosphor decay. 2016-02-14 21:57:23 -05:00
Thomas Harte
7580d192d5 Fixes: now setting correct frame time estimate, properly enabling the timestamp attribute, and ensuring that the Electron flushes screen work at least once per host frame update. 2016-02-14 19:28:02 -05:00
Thomas Harte
eeb0e134fd Started the transition towards a more natural collection of rolling buffers, with phosphor decay in mind. 2016-02-13 20:52:23 -05:00
Thomas Harte
7bc5a43c36 Fixed type warning. 2016-02-12 22:30:22 -05:00
Thomas Harte
0527888b15 Endeavoured to ensure safe shutdown. 2016-02-12 22:30:06 -05:00
Thomas Harte
a6574d1f96 Made an attempt to factor out and more clearly to document my implementation of flywheel synchronisation. 2016-02-11 22:12:12 -05:00
Thomas Harte
b5bcadb8d3 Reinstated clipped CRT output, with more appropriate ownership of the decision. 2016-02-07 22:18:55 -05:00
Thomas Harte
4d0a218a57 Certainly at least seriously considering a separate holder for the "compile a shader" logic. Otherwise taking steps back towards PAL/NTSC decoding. 2016-02-07 17:32:38 -05:00
Thomas Harte
602327cd9d Sketched out a quick class for rendering to texture. 2016-02-07 15:42:02 -05:00
Thomas Harte
d3d505b7bc That's one header file less. 2016-02-05 23:05:58 -05:00
Thomas Harte
6ab425deda There is now a semi-reasonable amount of screen output again. 2016-02-05 21:35:39 -05:00
Thomas Harte
80e7e5e602 Updated to return old behaviour of drawing only upon changes. 2016-02-04 23:05:47 -05:00
Thomas Harte
8bc3f8046d This endeavours to move everything into the CRT class except the final version of shader building. 2016-02-04 22:57:46 -05:00
Thomas Harte
e0d51408e4 Onward with carrying this through to the bitter end, this at least results in all the appropriate knowledge and call-ins occuring at the CRT. 2016-02-04 22:28:50 -05:00
Thomas Harte
4554abb755 Made an attempt to be more rigorous in display generation on the Electron, to make sure I deal with mid-line changes to/from blank line mode. Even if it turns out that they generate pixels. 2016-01-29 21:14:13 -05:00
Thomas Harte
0efe4b312c Disabled my various bits of rate interchange debugging; improved test for when to call update_display due to a RAM write. 2016-01-21 22:16:52 -05:00
Thomas Harte
de7218cdf0 Added a lot of commenting to the CPU6502 definition, simplifying its construction. Added missing nullability modifier to CSElectron. Fixed bad-habit Objective-C style naming on the Electron's Interrupt enum. 2016-01-20 21:55:38 -05:00
Thomas Harte
f727582911 Started making first moves towards stripping CSCathodeRayView of its responsibilities. If that can be merely an OpenGL view that presents things, things will be a lot more portable. 2016-01-20 08:21:33 -05:00
Thomas Harte
e65cd4cf06 Some data is marginally reaching the CPU from the tape. 2016-01-19 22:05:34 -05:00
Thomas Harte
956b90e203 Attempted further to improve latency; added view adjustment for non-4:3 output aspect ratios. The 4:3 is currently hardcoded, so further work will be required. 2016-01-18 23:55:52 -05:00
Thomas Harte
90eef1df74 Tightened to provide lower latency audio, hopefully. 2016-01-18 20:01:06 -06:00
Thomas Harte
03f683d588 Gave the audio queue something a lot like a spin lock on waiting to pipe out audio. 2016-01-18 19:57:18 -06:00
Thomas Harte
5a39e42413 Wired up enough such that some basic attempt at parsing a UEF occurs.` 2016-01-18 17:06:09 -06:00
Thomas Harte
2779f0e569 Statred working on support for at least the most fundamental file format. 2016-01-18 15:46:41 -06:00
Thomas Harte
b70fdc2de8 Switched to being explicitly careful about not wrapping around and stomping on data not yet output. 2016-01-18 13:56:20 -06:00
Thomas Harte
ddcc34740b Added lots of debugging output while I attempt to locate the source of audio scratchiness, also simplified manner of dealing with wraparound within the AudioQueue wrapper. 2016-01-18 13:50:19 -06:00
Thomas Harte
781249acf7 Fixed crash. 2016-01-14 20:35:36 -05:00
Thomas Harte
38ffcaa262 Here, at last, is _some_ audio output, at least. 2016-01-14 20:33:22 -05:00
Thomas Harte
afde8dac49 Closed the loop such that audio manages to bubble up into Objective-C. 2016-01-13 22:38:59 -05:00
Thomas Harte
d9a7ef9e46 Edging towards audio output; the speaker is given appropriate input and output rates, and then updated with current divider and enabled/disabled status. 2016-01-13 21:03:43 -05:00
Thomas Harte
d28abdc037 Made an attempt at correct timing, adding support for additional paged ROMs, added file association for .rom. 2016-01-12 22:34:26 -05:00
Thomas Harte
84ba4e2900 Tidied a little, started working towards supporting speaker output. 2016-01-12 22:19:56 -05:00
Thomas Harte
3437781abd Started sketching out an interface for sound generation. Which made me realise that the CRT in CRTDelegate was redundant, since C++ has namespaces. 2016-01-12 16:54:09 -05:00
Thomas Harte
6112f4ef6b Withdrew soft filtering for now; until the sampling frequency is passed on it's not sufficiently rigorous. 2016-01-12 16:42:16 -05:00
Thomas Harte
75d6ec354b Added some very basic filtering in RGB mode. 2016-01-12 16:27:09 -05:00
Thomas Harte
49a36ec9ac Added F12 as break. 2016-01-11 22:35:52 -05:00
Thomas Harte
650077feac Pulled a few things out as constants, zoomed in a little. Still in a 4:3 window though. 2016-01-11 22:18:34 -05:00
Thomas Harte
e93dbdb463 Implemented keyboard input. 2016-01-11 19:48:31 -05:00
Thomas Harte
ce916ebd6a Fixed runaway frame generator. 2016-01-10 23:32:57 -05:00
Thomas Harte
3d6f20b7b9 Output, at last! Though sync is clearly way off. 2016-01-09 21:53:33 -05:00