Commit Graph

  • fc5530b513 Realising I've managed to confuse input and output, started shift to 'source' for what 'input' was. Thomas Harte 2016-04-10 15:58:43 -04:00
  • e617bd2bb3 Turned audio quality up to the maximum, at least for now. Thomas Harte 2016-04-06 21:12:22 -04:00
  • 28e6517234 Switched away from tracking absolute time to tracking relative. Thomas Harte 2016-04-06 20:46:00 -04:00
  • d4be4c4769 Of course, I want min. Not max. Thomas Harte 2016-04-06 20:27:48 -04:00
  • fd1f6a7e1f Expanded on thinking. Thomas Harte 2016-04-06 19:35:53 -04:00
  • e885438363 The penny has finally dropped that I can drive the CPU stuff in a manner completely decoupled from the GPU stuff. For much improved parallelisation. Thomas Harte 2016-04-06 19:34:34 -04:00
  • 5aa6da221f Shifted responsibility for byte shifts, probably to a more logical place. Thomas Harte 2016-04-05 22:19:14 -04:00
  • 2248769df9 Pulled a bunch of selection parts outside of the loops. Probably exhausting this angle of attack. Thomas Harte 2016-04-05 22:17:44 -04:00
  • 8f87973a96 Switched to table-based byte to output conversion. Thomas Harte 2016-04-05 22:07:10 -04:00
  • e35456612a Simplified 40-column to pixel conversion. Thomas Harte 2016-04-05 20:44:05 -04:00
  • 6dbd20ffde Expanded interface to rgb_sample to eliminate its need to make assumptions about globals, used expanded interface to compact Electron data to two pixels per byte. Thomas Harte 2016-04-05 20:32:55 -04:00
  • 7838507a7a Simplified sound generation. Thomas Harte 2016-04-04 22:22:19 -04:00
  • c0cd1ed89e Made an attempt to consolidate timestamp bases to a single vector and hence to lump all geometry into one or two calls, with no repetitive setting of a uniform. I'm not sure the result is correct yet. Thomas Harte 2016-04-04 21:57:27 -04:00
  • 4595741ab0 Made an attempt not to interrupt the display link queue too much when emulation is running slowly. Thomas Harte 2016-04-04 20:22:33 -04:00
  • 729fddea1c Switched to integer textures, likely to simplify for most use cases. Thomas Harte 2016-04-04 19:39:01 -04:00
  • a6ef78862c This'll probably do for now. Thomas Harte 2016-03-24 22:20:00 -04:00
  • f1caf62ff2 Continuing the switch around. Thomas Harte 2016-03-24 19:31:41 -04:00
  • 738186e323 Edging back towards shifting things to the stack. Thomas Harte 2016-03-24 19:17:44 -04:00
  • 3ca58b2a57 Attemted further to diminish jumpiness. Thomas Harte 2016-03-22 22:07:30 -04:00
  • 8cd5d40e00 Made an attempt to reduce the amount of data heading to the GPU. Thomas Harte 2016-03-22 21:16:32 -04:00
  • 3038704977 Attempted to introduce a lowpass filter to the graphics output, reverted 6502 optimisations as seemingly not working. Thomas Harte 2016-03-21 22:01:25 -04:00
  • 5db0f9e2d5 Shunted a few more things onto the stack. Thomas Harte 2016-03-20 22:59:21 -04:00
  • 9a82f028aa operation is now also stack local. Thomas Harte 2016-03-20 22:52:49 -04:00
  • 2f174b3a3e Moved operand to stack-local storage. Thomas Harte 2016-03-20 22:50:16 -04:00
  • 5966ac845f Switched symbols and updated all-RAM 6502 in order to fix unit test target. Thomas Harte 2016-03-20 22:48:56 -04:00
  • 197cf2a834 Commented out sync; it can probably be implicit. Thomas Harte 2016-03-20 21:42:05 -04:00
  • 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. Thomas Harte 2016-03-20 18:42:37 -04:00
  • fb6fb5d948 Switched to two-phase setup to deal with OpenGL scheduling. Thomas Harte 2016-03-20 13:50:13 -04:00
  • eabc382540 Fixed: of course I can't rely on the pointer to CVTimeStamp not becoming dangling during a queue jump. Thomas Harte 2016-03-19 23:02:42 -04:00
  • 4c5d66c317 Made sure GL context isn't activated until it's locked. Thomas Harte 2016-03-19 22:54:56 -04:00
  • a546277f88 Added the simplest mechanism to decouple emulation from the display link queue. Thomas Harte 2016-03-19 22:53:37 -04:00
  • 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. Thomas Harte 2016-03-19 22:46:17 -04:00
  • aa8a192c7e Simplified API down to their being a single texture with a specified depth. Thomas Harte 2016-03-19 17:37:55 -04:00
  • 4ac1f959e9 A shortcut here and a shortcut there; this allows me at least to determine whether use of a PBO gains anything. Thomas Harte 2016-03-19 17:07:05 -04:00
  • 5b37a651ac Made an attemp to deal with glUnmapBuffer(GL_ARRAY_BUFFER) == GL_FALSE. Thomas Harte 2016-03-18 21:35:52 -04:00
  • 0b1c9fb291 Ensured I don't interrupt triangle strips for the purpose of glDrawArrays. Thomas Harte 2016-03-18 21:28:53 -04:00
  • 620257e29e Switched to a client wait, as I try to figure out what's going on. Thomas Harte 2016-03-18 21:21:35 -04:00
  • 2e4af90e2d Resolved output errors. Thomas Harte 2016-03-18 21:19:11 -04:00
  • 10bc33464d I don't think this is quite correct, but it's better. Thomas Harte 2016-03-18 21:14:06 -04:00
  • b074860031 Updated to latest information on interrupt timing. Thomas Harte 2016-03-18 21:11:25 -04:00
  • 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. Thomas Harte 2016-03-18 21:11:09 -04:00
  • c8ecfb89d8 Some cleaning. Thomas Harte 2016-03-16 22:52:33 -04:00
  • 0d27d3bb7f As messy as it is, this use glMapBufferRange to avoid explicit buffer submits. Thomas Harte 2016-03-16 22:29:22 -04:00
  • ca35a7e222 Ensured that a much greater input rate than output is handled correctly. Thomas Harte 2016-03-16 20:38:17 -04:00
  • 4cd0aa3416 Completed FIR filter based audio output. Thomas Harte 2016-03-15 23:37:35 -04:00
  • 726c98446a Fixed a couple of memory leaks, at least got as far as instantiating a filter. Thomas Harte 2016-03-15 21:34:00 -04:00
  • 5b509e5360 Fixed: const should have been static constexpr; should probably use new and delete rather than malloc and new. Thomas Harte 2016-03-15 21:33:18 -04:00
  • a4ec0b023c Made some type conversions explicit. Thomas Harte 2016-03-15 21:25:02 -04:00
  • 7694297c83 Introduced an adapted version of the previous Clock Signal's FIR filter. Thomas Harte 2016-03-15 21:05:20 -04:00
  • 0edf165401 Fixed sound pitch, though I'm not yet exactly sure why. Thomas Harte 2016-03-14 22:52:16 -04:00
  • 9a492ac15f Made a further guess at the state interrupts would probably be left; slightly simplified interface. Thomas Harte 2016-03-14 22:42:52 -04:00
  • 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. Thomas Harte 2016-03-14 19:29:28 -04:00
  • 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. Thomas Harte 2016-03-13 19:55:20 -04:00
  • f797e6b5b6 Started taking baby steps towards a genuine unification of the tape interrupt generating code. Thomas Harte 2016-03-13 19:45:50 -04:00
  • bc554dedf7 Fixed: attempting to read the screen start address no longer alters it. Thomas Harte 2016-03-13 18:50:23 -04:00
  • 1c4acfb599 I think this is a prima facie acceptable implementation of the fast tape hack. Thomas Harte 2016-03-13 17:39:53 -04:00
  • bb0cd89574 Got explicit about threading guarantees. Thomas Harte 2016-03-13 13:38:03 -04:00
  • 67dffc89e0 Stripped unnecessary includes. Thomas Harte 2016-03-13 13:25:34 -04:00
  • 21ca1ef86b Started attempting to clarify instance variable usage. Thomas Harte 2016-03-12 23:19:10 -05:00
  • 4462bb92f8 Moved interrupt back down to where it's probably meant to be. Thomas Harte 2016-03-12 23:18:46 -05:00
  • cdff90f20d Fixed: setting an interrupt control value with the lowest bit set could result in interrupts that can't be disabled. Thomas Harte 2016-03-12 22:55:33 -05:00
  • 6327311130 Made an attempt to separate and clarify on tape interrupts. Thomas Harte 2016-03-12 20:32:26 -05:00
  • cfa616d593 Fixed: timing issue versus supplied test ROM was failure to include the Plus 1 ROM in the mix. Thomas Harte 2016-03-12 11:51:20 -05:00
  • 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. Thomas Harte 2016-03-10 23:12:28 -05:00
  • e305fd9326 Adjusted numbers, empirically. Thomas Harte 2016-03-10 22:40:18 -05:00
  • a89225987f Blank lines are back. Thomas Harte 2016-03-10 22:19:54 -05:00
  • 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. Thomas Harte 2016-03-10 22:08:50 -05:00
  • 20ac630e4d Some minor optimisations and timing tweaks. Nothing of substance. Thomas Harte 2016-03-10 19:58:50 -05:00
  • df3fff51c7 These interrupts apparently last only 64µs at most. Thomas Harte 2016-03-10 19:10:53 -05:00
  • 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. Thomas Harte 2016-03-10 19:04:43 -05:00
  • 7255408313 Experimented with going back to horizontal sync on leading edge; not sure so (temporarily?) disabled. Thomas Harte 2016-03-08 22:54:05 -05:00
  • 68da673a95 Wrapped this up as explicitly only the Mac thing to do. Thomas Harte 2016-03-08 22:53:29 -05:00
  • bf5747f83e Made an attempt to chop out all the stuff of building up the OpenGL data from the stuff of parsing input. Thomas Harte 2016-03-08 22:40:23 -05:00
  • 14b2927275 Made further attempts to tidy up; trying to demarcate between public interface and private. Thomas Harte 2016-03-08 20:59:16 -05:00
  • c7976dd657 Started trying to clean up my Outputs namespace by moving stuff related to the CRT underneath a separate subnamespace. Thomas Harte 2016-03-08 20:49:07 -05:00
  • bb09a5f58c The attribute locations don't really need to be stored. They can be transient. Thomas Harte 2016-03-07 21:42:21 -05:00
  • 6dfe877c43 Basic attempts to organise myself into shape for composite output continue. Thomas Harte 2016-03-07 21:22:47 -05:00
  • 1e5fe2b2c1 Made an attempt to reestablish the Atari 2600 output connection despite various changes (TODO: generalise that stuff), and to start creating the composite shader. Thomas Harte 2016-03-07 21:04:04 -05:00
  • 2de229152f Started sketching out shaders to do the first part of the composite conversion. Thomas Harte 2016-03-07 19:21:04 -05:00
  • cd9c62acca Still stepping slowly towards a working composite mode, switched the RGB sampling function to returning a vec4, which may be of benefit to any machine with a brightness part of an RGB signal, and started edging towards at least having the correct GLSL programs ready for converting composite output. Thomas Harte 2016-03-07 19:08:26 -05:00
  • 3b6c9c15a1 Switching momentarily back to monitor mode, resolved why I was suddenly getting no output upon creating some texture targets. Thomas Harte 2016-03-07 18:55:15 -05:00
  • eefd17ed4c Fixed sync response in composite scan output generation and stored texture coordinates. Thomas Harte 2016-03-05 21:52:22 -05:00
  • 6cddb4c9c8 Added a first attempt to generate output scans for composite mode. So this in theory completes the CPU side of composite operations. Though I'm sure problems will reveal themselves. Thomas Harte 2016-03-05 21:18:28 -05:00
  • 3f39803d32 Switched to triangle strips, to eliminate the need for any temporary storage for the composite output path. Thomas Harte 2016-03-05 20:47:11 -05:00
  • 23c223e2ed Started edging towards completing the CPU side of accumulating enough data for composite decoding. Thomas Harte 2016-03-05 17:55:18 -05:00
  • 5c8db71c64 Corrected some constants, ensured both machines (so far) are setting the output device. Thomas Harte 2016-03-05 16:19:10 -05:00
  • 41c09f8c3f Renamed CSCathodeRayView to CSOpenGLView as it no longer has any CRT-related responsibilities. It just does the GL and manages a serial dispatch queue. Thomas Harte 2016-03-05 14:45:09 -05:00
  • 70b6d51451 Ever more baby steps back towards composite decoding. Thomas Harte 2016-03-05 14:36:12 -05:00
  • 95efeb1d56 Ensured all delegate and responder delegate messages occur on the same queue. Thomas Harte 2016-03-05 14:35:47 -05:00
  • c754a6e45a Decoupled execution speed and frame rate; cleaned up. Thomas Harte 2016-03-03 22:12:31 -05:00
  • 2f7626a5e0 Okay, this definitely definitely is supposed to be this way around. Thomas Harte 2016-02-28 22:00:05 -05:00
  • 3449120c24 Added a note to future self, put the scan edge generator back to the way round it was before. Thomas Harte 2016-02-27 22:51:37 -05:00
  • 60d35fa72b Requested multisampling, if available, rather than supersampling. Thomas Harte 2016-02-27 22:46:31 -05:00
  • 7839d93344 With the provision of an extra hint to the CRT and, finally, the realisation about why my scans weren't exactly joining up, improved output precision. Thomas Harte 2016-02-27 22:39:01 -05:00
  • 1c6de7692d Made an attempt to fix tape output interrupts; offloaded raster width and placing conversion to the GPU. Thomas Harte 2016-02-27 20:37:41 -05:00
  • db18c85423 Simplified the run builder rather; put a double check of Electron timing in place. Thomas Harte 2016-02-25 22:01:42 -05:00
  • 1eea28b692 Disabled some debugging parts, added some others, marked some things as inline. Ticking over. Thomas Harte 2016-02-22 23:35:42 -05:00
  • 4b28e7b974 Switched back to a single array and vertex buffer. Thomas Harte 2016-02-21 22:54:55 -05:00
  • 2b8fb5b615 Made an attempt to fix my 0114 implementation. Thomas Harte 2016-02-20 23:13:58 -05:00
  • f7fc7cb932 Implemented some portion of 0114; ensured I'm safely skipping chunks in all cases. Thomas Harte 2016-02-20 22:18:00 -05:00