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 |
|