1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-11 15:49:38 +00:00
Commit Graph

10868 Commits

Author SHA1 Message Date
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
aa8a192c7e Simplified API down to their being a single texture with a specified depth. 2016-03-19 17:37:55 -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
5b37a651ac Made an attemp to deal with glUnmapBuffer(GL_ARRAY_BUFFER) == GL_FALSE. 2016-03-18 21:35:52 -04:00
Thomas Harte
0b1c9fb291 Ensured I don't interrupt triangle strips for the purpose of glDrawArrays. 2016-03-18 21:28:53 -04:00
Thomas Harte
620257e29e Switched to a client wait, as I try to figure out what's going on. 2016-03-18 21:21:35 -04:00
Thomas Harte
2e4af90e2d Resolved output errors. 2016-03-18 21:19:11 -04:00
Thomas Harte
10bc33464d I don't think this is quite correct, but it's better. 2016-03-18 21:14:06 -04:00
Thomas Harte
b074860031 Updated to latest information on interrupt timing. 2016-03-18 21:11:25 -04:00
Thomas Harte
61e880de03 Keeping a buffer permanently bound is apparently illegal. So back to copying in on demand. Which I think still improves on synchronisation, but not much. 2016-03-18 21:11:09 -04:00
Thomas Harte
c8ecfb89d8 Some cleaning. 2016-03-16 22:52:33 -04:00
Thomas Harte
0d27d3bb7f As messy as it is, this use glMapBufferRange to avoid explicit buffer submits. 2016-03-16 22:29:22 -04:00
Thomas Harte
ca35a7e222 Ensured that a much greater input rate than output is handled correctly. 2016-03-16 20:38:17 -04:00
Thomas Harte
4cd0aa3416 Completed FIR filter based audio output. 2016-03-15 23:37:35 -04:00
Thomas Harte
726c98446a Fixed a couple of memory leaks, at least got as far as instantiating a filter. 2016-03-15 21:34:00 -04:00
Thomas Harte
5b509e5360 Fixed: const should have been static constexpr; should probably use new and delete rather than malloc and new. 2016-03-15 21:33:18 -04:00
Thomas Harte
a4ec0b023c Made some type conversions explicit. 2016-03-15 21:25:02 -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
0edf165401 Fixed sound pitch, though I'm not yet exactly sure why. 2016-03-14 22:52:16 -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
15120d8fb6 Switched to probably more accurate contended memory, resolved issue of not leaving the tape data received interrupt set when returning a byte from the fast tape, fixing Joe Blade, and tested slightly further to determine that interrupts probably signal upon entry into horizontal sync. 2016-03-14 19:29:28 -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
f797e6b5b6 Started taking baby steps towards a genuine unification of the tape interrupt generating code. 2016-03-13 19:45:50 -04:00
Thomas Harte
bc554dedf7 Fixed: attempting to read the screen start address no longer alters it. 2016-03-13 18:50:23 -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
67dffc89e0 Stripped unnecessary includes. 2016-03-13 13:25:34 -04:00
Thomas Harte
21ca1ef86b Started attempting to clarify instance variable usage. 2016-03-12 23:19:10 -05:00
Thomas Harte
4462bb92f8 Moved interrupt back down to where it's probably meant to be. 2016-03-12 23:18:46 -05:00
Thomas Harte
cdff90f20d Fixed: setting an interrupt control value with the lowest bit set could result in interrupts that can't be disabled. 2016-03-12 22:55:33 -05:00
Thomas Harte
6327311130 Made an attempt to separate and clarify on tape interrupts. 2016-03-12 20:32:26 -05: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
763d5e8819 Access timing now appears to be exactly on the nail. Disabled automatic interrupt expiration again as I'm not persuaded it's correct for at least the RTC. 2016-03-10 23:12:28 -05:00
Thomas Harte
e305fd9326 Adjusted numbers, empirically. 2016-03-10 22:40:18 -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
20ac630e4d Some minor optimisations and timing tweaks. Nothing of substance. 2016-03-10 19:58:50 -05:00
Thomas Harte
df3fff51c7 These interrupts apparently last only 64µs at most. 2016-03-10 19:10:53 -05:00
Thomas Harte
f232a12fad Fixed RAM timings: it's at least two and possibly three cycles to access RAM, and an access that overlaps with video fetch in Modes 0–3 will cost the length of the video fetch rather than somehow finishing in time. 2016-03-10 19:04:43 -05:00
Thomas Harte
7255408313 Experimented with going back to horizontal sync on leading edge; not sure so (temporarily?) disabled. 2016-03-08 22:54:05 -05:00
Thomas Harte
68da673a95 Wrapped this up as explicitly only the Mac thing to do. 2016-03-08 22:53:29 -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
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
bb09a5f58c The attribute locations don't really need to be stored. They can be transient. 2016-03-07 21:42:21 -05:00