1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-07 08:28:57 +00:00
Commit Graph

112 Commits

Author SHA1 Message Date
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
Thomas Harte
09df218c01 Some output! Showing that three lines of solid sync isn't smart. But here it is. 2016-01-09 21:48:53 -05:00
Thomas Harte
b4f31edea3 Made an attempt to get RGB output mode up and running, and showing at least a box where pixels would be. 2016-01-09 21:32:56 -05:00
Thomas Harte
a900bfed65 Fixed to ensure that frame rendering wraps around, and to properly connect the Electron to its view. Now I need a working pixel shader. 2016-01-09 20:34:22 -05:00
Thomas Harte
716bb3281b This at least now connects up a CRT, though it never talks to it. 2016-01-07 22:26:49 -05:00
Thomas Harte
47a7654c00 Added just enough that this is probably a successful boot. I guess I'm going to need to get invested in graphics next? Hmmm. 2016-01-07 21:01:13 -05:00
Thomas Harte
0db8938d27 Added the option for the CSCathodeRayView to show only a subsection of the full scan area. Zoomed in a little on the 2600. Put in enough piping to give the Electron sight of its ROMs at least. 2016-01-06 23:14:36 -05:00
Thomas Harte
bfd9957c81 You now get an Electron only if you ask for a new file. That'll do for now while it's the only thing that one might want to start without supplying a file. The 6502 now starts from a defined point — being reset. The Electron is starting to grow the absolute most simple buds of its memory map. 2016-01-06 21:09:49 -05:00
Thomas Harte
c69b3256ba Slightly simplified Swift usage. 2016-01-04 23:44:36 -05:00
Thomas Harte
616dc0b57c Okay, so this is the absolute bare minimum about of refactoring and wiring necessary to get the [unimplemented] Electron machine pumping. 2016-01-04 23:40:43 -05:00
Thomas Harte
43ab8bbad5 Okay, so then here's a first shot at the Objective-C -> C++ bridge for the Electron. 2016-01-04 23:16:37 -05:00
Thomas Harte
ab45c1d530 Started working on a shell for the Electron emulation, including factoring out the common CRT delegate -> Objective-C bridging, serial dispatch queue and frameskipping logic from the Atari 2600 shell. 2016-01-04 23:12:47 -05:00
Thomas Harte
22fa024546 Added document XIB. 2016-01-03 20:46:39 -05:00
Thomas Harte
aa0714fe27 Started sketching out an Acorn Electron emulation, as it's a platform I'm familiar with and will force me to figure out PAL decoding. Factored out NTSC-specific parts of the display decoding logic and hence added RGB output mode. 2016-01-03 20:41:43 -05:00
Thomas Harte
96503a3ac5 Switched to nicer nullable/nonnull syntax. 2016-01-02 17:59:21 -05:00
Thomas Harte
feeedbe33b The standard Xcode versioning updates. Nothing of substance. 2016-01-02 17:57:23 -05:00
Thomas Harte
675070c5dd Very, _very_ minor: switched to normal C++ constructor syntax for simple variable initialisation. 2015-12-06 16:53:37 -05:00
Thomas Harte
5feef2110f Added a very basic attempt at shadow mask emulation. 2015-09-24 21:23:16 -04:00
Thomas Harte
63b648be65 Switched down to four samples per pixel, just more than half as many, to fit into a vec4. Edges aren't as smooth but I'm wondering whether it'll make much odds when I implement a shadow mask. 2015-09-17 19:25:15 -04:00
Thomas Harte
5d6bee4927 Of course, being in-phase means being the cosine wave. 2015-09-10 21:30:39 -04:00
Thomas Harte
6a0b4e86c8 An Xcode beta version bump, nothing more. 2015-09-05 17:21:36 -04:00
Thomas Harte
53e699516b Disabled multisampling unless and until I can get the per-pixel cost down. 2015-09-05 17:21:16 -04:00
Thomas Harte
39027b675d Fixed YIQ conversion and made sampling pattern slightly more rational. 2015-09-05 17:09:24 -04:00
Thomas Harte
80cf3d9301 Formally gave the 2600 responsibility for providing the code that decodes one of the things it has put into a buffer into a composite sample. 2015-09-03 12:28:16 -04:00
Thomas Harte
ac8fc9a1a0 Experimenting with pre-encoding luminance and chrominance separation over on the
CPU as otherwise the GPU does them repetitively and more awkwardly (as it's working purely in floats). It means uploading twice as much data though, so I don't
 know. Still only half as much as the RGBA path of a few days ago. Will experiment.

Also slightly adjusted division of responsibility in the fragment shader per the
 desire to have the `sample` function owned externally.
2015-09-03 11:15:23 -04:00
Thomas Harte
11acf3f2d3 Made some further minor attempted improvements. 2015-09-02 20:51:56 -04:00
Thomas Harte
161450942a Removed outdated comment. This is better now than it was. 2015-09-02 17:20:23 -04:00
Thomas Harte
0d6094d842 Attempted very basic vectorisation, plus some minor other clean-ups. 2015-09-02 17:17:22 -04:00
Thomas Harte
f60ba4f487 Added a note about horribleness to the source. You never know who's looking. 2015-09-01 22:38:15 -04:00
Thomas Harte
cb6e6e8acb It's the worst fragment shader you'll ever see. The worst. But this attempts NTSC composite video emulation, artefacts included. 2015-09-01 22:36:45 -04:00
Thomas Harte
5fe0cff692 Fine. I'll accept 'bin' files if I must. 2015-08-19 21:36:50 -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
462a791ed3 Ensured that no backlog accumulates of cycles to run. Otherwise the background queue was lagging behind. 2015-08-18 21:13:54 -04:00
Thomas Harte
ca6b54536e Added fire and reset inputs. 2015-08-18 20:58:05 -04:00
Thomas Harte
bc805a90fe Wired up joystick directions, at least, and fire button presses get as far as the C++. But there's some latching to figure out before they'll work. 2015-08-18 20:33:24 -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