1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-02 01:04:54 +00:00
Commit Graph

5848 Commits

Author SHA1 Message Date
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
96c946b8af Made a very basic attempt to emulate tape output. 2016-01-24 18:20:55 -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
cd97617a8a Bumped the speaker up to the full namespace, since Tape lives there to avoid delegation complexity. Turned the CRT into something the Electron statically owns, fixing a memory leak by simplifying. 2016-01-23 17:45:06 -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
f4cd0aa38e Ensured that all relevant information is given to the tape class. Made an attempt not to write to a screen output buffer if we don't have one. Added some debug printing. 2016-01-23 13:09:56 -05:00
Thomas Harte
949c33774a Fixed failure to set a delegate, slowed tape speed if operating in RAM. 2016-01-23 11:42:14 -05:00
Thomas Harte
43a7d1b7ae It'll be helpful to be able to isolate the tape interface when I'm faking a fast load. So factored out. 2016-01-23 00:14:44 -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
82cb1c365c Further simplified inner loops. 2016-01-21 21:35:04 -05:00
Thomas Harte
34640cec93 Started trying to move some logic out of the inner loop. 2016-01-21 21:28:09 -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
baef1ccd57 Made the constructor protected, to emphasise that this class isn't for instantiation. Also added extra comments aplenty. 2016-01-21 08:39:34 -05:00
Thomas Harte
9fa35dd559 Killed some whitespace lines. 2016-01-20 21:58:34 -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
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
280a2292ff Shushed. 2016-01-19 23:33:15 -05:00
Thomas Harte
9036cf3b7c Thus did the first UEF load. 2016-01-19 23:03:27 -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
832797182f Update TapeUEF.cpp
Corrected chunk for which _tone_length is used, definition of a carrier tone chunk.
2016-01-19 18:59:10 -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
127684c590 With silence and high tone implemented, this may well hit a large proportion of existing files. 2016-01-18 19:45:14 -06:00
Thomas Harte
7d6214e078 This likely gets chunks 0100 and 0102 correct. 2016-01-18 19:37:36 -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
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
e63b6d22ae As shown by the commented-out code, the aliasing-adaptation seems to be working. So something is wrong somewhere else. 2016-01-14 21:59:37 -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
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
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
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