1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-27 01:31:42 +00:00
Commit Graph

98 Commits

Author SHA1 Message Date
Thomas Harte
1d20a29d97 Made an attempt to switch to the flywheels for both vertical and horizontal sync, and to act more appropriately for out-of-bounds sync requests. Lots of tweaking to do, I fear. 2016-02-11 23:43:08 -05:00
Thomas Harte
c81891ec43 Minor tidying and at least acknowledged the new flywheel encapsulation. 2016-02-11 22:13:38 -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
c66409421e Switched to generating an interlaced output, that apparently being correct. Enabled a poor man's version of phosphor persistence to smooth things out a little. It's not completely unconvincing. 2016-02-10 23:11:25 -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
3a689d14cc Added padding of supplied data to correct for any potential rounding errors when rendering. 2016-02-07 20:29:32 -05:00
Thomas Harte
3a9ea66f8b Filled in shader class. 2016-02-07 19:21:22 -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
thomasharte
2cb12a7513 Allowed overly aggressive allocations to be cleared up after the fact. 2016-02-06 16:07:23 -05:00
Thomas Harte
bf348ccb96 Fixed clearing logic. 2016-02-05 22:47:12 -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
09e11469c3 Simplified further: eliminated delegate. Which means I can go frame-free internally to the CRT at some point, if I want. 2016-02-03 19:11:18 -05:00
Thomas Harte
19393390ac It's broken now, but this is what I now intend the full public interface of the CRT to be. 2016-02-02 22:41:33 -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
adc6838ba0 Continued slow migration of shader ownership to CRT. Attempted to start debugging the tape interface. 2016-01-27 21:35:57 -05:00
Thomas Harte
1819e7b9cc Started sketching out an appropriate interface to transfer responsibility for shaders to the CRT. 2016-01-23 19:06:32 -05:00
Thomas Harte
ace331d4b4 Got a bit higher level in CRT timing specification. Which internally allows it now to infer the colour clock frequency. Which will be helpful momentarily. 2016-01-23 18:53:20 -05:00
Thomas Harte
a9e26d7808 Introduced a scan's delay, as intended. 2016-01-23 17:49:25 -05:00
Thomas Harte
20cab08f8f Added a two-slot buffer of scans and a comon dispatch mechanism. 2016-01-23 17:44:34 -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
48ddd3c497 Set about documenting the CRT; while doing so decided to add an optional clock divider for input; having done so decided to try to exploit it with the Electron. 2016-01-21 21:17:47 -05:00
Thomas Harte
4c16d34063 Moved set_tape so that the inline definition of get_next_tape_pulse is visible to it. Also eliminated some dead typedefs. 2016-01-20 08:27:25 -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
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
b58e59e2bb Fixed: now outputting the requested output rate, rather than massively overproducing at the input rate. 2016-01-14 23:12:40 -05:00
Thomas Harte
383b2be4c6 Fixed one off-by-one error. 2016-01-14 21:33:27 -05:00
Thomas Harte
8bd04a6be4 Switched model for filter subclasses. Implemented test square[-ish] wave to check for obvious stream errors. None is clear. 2016-01-14 21:27:02 -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
439d452e23 Resolved some errors. 2016-01-13 22:11:33 -05:00
Thomas Harte
49e89a4bcb I'm not yet completely convinced by my approach to time basing, but it'll probably do? If so then this more or less gets me ready for a point-sampled filtering. 2016-01-13 22:02:39 -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
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
82aa6d074a 'type' is out, at least for the time being. 2015-09-05 20:25:30 -04:00
Thomas Harte
3c3c4d2f7c Enlarged drawing range a little. 2015-08-19 21:35:26 -04:00
Thomas Harte
28fad66272 Okay, so I had those constants transposed. What a klutz I've been! 2015-08-19 09:09:00 -04:00
Thomas Harte
f74d9ee373 Copied in quote. So that I can stop looking it up. 2015-08-18 22:36:32 -04:00
Thomas Harte
a62c7f5c56 At last! Discovered CRT scanning bug; was always moving by the full proposed run length along the scan, not the time until the next event. Using this, have implemented proper vertical sync at last (I think). Have disabled scanline banding too, as now everything meets up it's more helpful to be able to see with clarity. 2015-08-18 22:22:47 -04:00
Thomas Harte
88d5064737 Not that it makes a lot of difference, there being no names to mangle, but moved the closing #ifdef __cplusplus to the idiomatic place. 2015-08-18 20:33:59 -04:00
Thomas Harte
902795d61c Switched vertical sync detection method, at least for now. They never happen automatically (I need to fix that) and just always take effect if detected in the lower half of the display. PAL/NTSC is determined just by looking at the refresh rate. 2015-08-18 00:17:03 -04:00
Thomas Harte
083b678785 Quickie: observed that the initial position is one scanline dirty, not zero. Also switched to a size_t on the write pointer, size_t being the correct C size for into-memory offsets. 2015-08-17 00:25:32 -04:00
Thomas Harte
cde9bb7ebc Put common shift step into a macro. 2015-08-16 16:12:20 -04:00
Thomas Harte
a693c081f8 Switched on the appropriate compiler warnings re: signed comparisons and implicit conversions. Fixed all less-than-explicit calls. 2015-08-16 16:08:29 -04:00
Thomas Harte
b440fed323 Fixed a couple of incorrect references to horizontal constants or calculations where the intention is to use vertical. 2015-08-13 18:29:07 +01:00