1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-25 18:30:21 +00:00
Commit Graph

122 Commits

Author SHA1 Message Date
Thomas Harte
8c84f3581a Attempted to bring some uniformity in application of configurations. 2016-09-08 05:32:17 -04:00
Thomas Harte
21e5f407d8 I need to get a bit more definitive on naming but this gets all the way to setting a configuration upon an Electron. 2016-08-31 22:03:42 -04:00
Thomas Harte
c0402d0c2b Gave tapes their own namespace. 2016-08-27 17:09:45 -04:00
Thomas Harte
d9016909ed Added some wiring for PAL/NTSC mode switching on the Vic, making an attempt to simplify the whole loop of having different clock rates. 2016-08-14 13:33:20 -04:00
Thomas Harte
88964ceac0 Eliminated plain pointer passing for object types. 2016-07-04 19:33:55 -04:00
Thomas Harte
37ba42a52f Factored out the stuff of playing a tape, started basic sketch of the Vic-related classes. 2016-06-26 19:03:57 -04:00
Thomas Harte
05cb47709e Implemented Utility::Typer for the Electron. So that now also receives pastes. 2016-06-19 17:25:35 -04:00
Thomas Harte
00a9f1bf24 Fixed best-effort updater actually to run, finally moved clock rate announcement into the C++ side of things, started working on a mechanism to allow clock rate to be updated. 2016-06-16 20:39:46 -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
fea32869b0 Implemented what I now believe to be the real paging logic. 2016-05-05 08:28:06 -04:00
Thomas Harte
d221c712b0 Ensured GL context is active when destructing CRTOpenGL. 2016-04-24 20:34:25 -04:00
Thomas Harte
ae2760e034 Colour phase is now updated and varies per line. 2016-04-21 21:07:29 -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
66f2c10c04 Resolved potential crash if tape requests are made without one inserted. Softened glFinish to glFlush, though I'm still not sure I should strictly need even that. 2016-04-19 21:00:48 -04:00
Thomas Harte
6a17c2992d Introduced a compile-time configurable audio divider, set it arbitrarily to '8' for now. Discovered why my graphics aren't centred and added a TODO. 2016-04-13 22:31:59 -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
e617bd2bb3 Turned audio quality up to the maximum, at least for now. 2016-04-06 21:12:22 -04:00
Thomas Harte
8f87973a96 Switched to table-based byte to output conversion. 2016-04-05 22:07:10 -04:00
Thomas Harte
7838507a7a Simplified sound generation. 2016-04-04 22:22:19 -04:00
Thomas Harte
8cd5d40e00 Made an attempt to reduce the amount of data heading to the GPU. 2016-03-22 21:16:32 -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
9a492ac15f Made a further guess at the state interrupts would probably be left; slightly simplified interface. 2016-03-14 22:42:52 -04:00
Thomas Harte
fb26b38ff9 This is as simplified as things seem to be able to get without breaking at least Northern Star. Joe Blade et al remain stubbornly broken but I'm not immediately able to determine why. 2016-03-13 19:55: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
6327311130 Made an attempt to separate and clarify on tape interrupts. 2016-03-12 20:32:26 -05:00
Thomas Harte
a89225987f Blank lines are back. 2016-03-10 22:19:54 -05:00
Thomas Harte
b836d74e18 Believing the previous implementation to be overly complicated through premature optimisation, simplified video. It's slightly slower now. Will need work. Immediately to do: figure out how to deal with blank scan lines. 2016-03-10 22:08:50 -05:00
Thomas Harte
c7976dd657 Started trying to clean up my Outputs namespace by moving stuff related to the CRT underneath a separate subnamespace. 2016-03-08 20:49:07 -05:00
Thomas Harte
ec3cccbb0d Working towards HQ UEF support: fixed bug whereby writing to tape output would reset input pulse stepper; added support for chunk 0116 and approximate support for 0113. 2016-02-20 22:03:14 -05:00
Thomas Harte
3754cf4bce Played about with interrupt timing. 2016-02-20 21:24:02 -05:00
Thomas Harte
00f414d757 Made an attempt to reintroduce interlacing and screen modes with gaps. Something's wrong with synchronisation though, so most likely I'm outputting a bad signal. 2016-02-20 17:32:51 -05:00
Thomas Harte
a3432120f3 Fixed synchronisation — my two fields weren't of equal length, I wasn't breaking calls to the CRT upon 40/80 transitions, I had the wrong maximum run length. Now I just need to put real pixels back in. 2016-02-19 23:57:57 -05:00
Thomas Harte
1954f7bcbd Got back to a stable image, at least when staying in a mode. Which is what I was trying to fix. Hmmm. 2016-02-19 23:41:09 -05:00
Thomas Harte
dce1649fc5 Commuted some camelCase variables into more standard C++ underscore names; decided the best fix for the graphics output is to break it down into much simpler chunks. output_pixels is currently a placeholder that simply outputs blank so the current effect is that all data is missing but it should be easy enough now to put pixels back in. 2016-02-18 23:23:49 -05:00
Thomas Harte
0b5417ab44 Made an attempt to put interrupts in the correct places regardless of even/odd field. 2016-02-16 20:36:19 -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
7bd237193d Edged closer towards realistic timing. 2016-02-13 20:52:35 -05:00
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
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
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
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
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
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
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
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
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
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
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
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
72019d0ea3 Made an attempt to get video output correct. 2016-01-11 22:08:30 -05:00
Thomas Harte
e93dbdb463 Implemented keyboard input. 2016-01-11 19:48:31 -05:00
Thomas Harte
ccf20299a3 Made an attempt at getting some interrupts all up inside this thing. 2016-01-10 19:06:46 -05:00
Thomas Harte
cc5ba8243e Fixed: turned out the power-on bit was being cleared. 2016-01-10 17:17:39 -05:00
Thomas Harte
1308332a71 Hard-coded to 40 columns of black and white, here's some text, at least. 2016-01-09 22:39:46 -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
7341f5c341 This is intended to be enough to start producing something of an output. But something's obviously still broken. 2016-01-09 20:26:40 -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
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
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