1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-27 16:31:31 +00:00
Commit Graph

127 Commits

Author SHA1 Message Date
Thomas Harte
6ff9ffba6c Switching temporarily to an attempt to draw input runs as if RGB: shader compiles, fixed a race condition on out-of-bounds accesses for the source buffer. 2016-04-17 15:51:28 -04:00
Thomas Harte
104f44f27f Attempted to improve deinterlacing, gave the CRT full control over blend mode, switched back to 2000000Mhz audio. 2016-04-14 22:20:47 -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
026ce0255f Source runs are now captured, and that buffer appropriately reset. 2016-04-13 22:20:13 -04:00
Thomas Harte
2ea02ed127 A source array buffer is also now created, mapped, unmapped, etc. 2016-04-13 22:14:18 -04:00
Thomas Harte
955e185790 Minor simplification. 2016-04-13 19:19:04 -04:00
Thomas Harte
4d889d9c7f Made an attempt slightly to simplify the fragment processor, at both ends. 2016-04-12 22:35:11 -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
7276a06cc0 Added a helper to calculate a visible rect based on output timings, used it to scale the Electron output up to the full window size. 2016-04-11 21:47:23 -04:00
Thomas Harte
a3c2cd880e I discovered a further post on this on the STH forums; apparently the Electron simply asserts sync continuously. No breaks. 2016-04-11 21:01:09 -04:00
Thomas Harte
bdb99ba92f Corrections back towards composite output: fixed misnamed constant, ensured the CRT doesn't write nonsense to the output buffer, ensured it grows three vertices at a time rather than six when desired. Net effect should be that the output stage is working again, with the input processing remaining to fill in. 2016-04-10 22:56:52 -04:00
Thomas Harte
8701366277 Switched horizontal sync detection back to differential, switched the Electron to an XOR-style sync output (believed to be accurate, but I need to check), fixed some latent issues around vertical sync detection. 2016-04-10 21:34:40 -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
5aa6da221f Shifted responsibility for byte shifts, probably to a more logical place. 2016-04-05 22:19:14 -04:00
Thomas Harte
2248769df9 Pulled a bunch of selection parts outside of the loops. Probably exhausting this angle of attack. 2016-04-05 22:17:44 -04:00
Thomas Harte
8f87973a96 Switched to table-based byte to output conversion. 2016-04-05 22:07:10 -04:00
Thomas Harte
e35456612a Simplified 40-column to pixel conversion. 2016-04-05 20:44:05 -04:00
Thomas Harte
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. 2016-04-05 20:32:55 -04:00
Thomas Harte
7838507a7a Simplified sound generation. 2016-04-04 22:22:19 -04:00
Thomas Harte
729fddea1c Switched to integer textures, likely to simplify for most use cases. 2016-04-04 19:39:01 -04:00
Thomas Harte
3ca58b2a57 Attemted further to diminish jumpiness. 2016-03-22 22:07:30 -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
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
aa8a192c7e Simplified API down to their being a single texture with a specified depth. 2016-03-19 17:37:55 -04:00
Thomas Harte
b074860031 Updated to latest information on interrupt timing. 2016-03-18 21:11:25 -04:00
Thomas Harte
4cd0aa3416 Completed FIR filter based audio output. 2016-03-15 23:37:35 -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
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
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
6dfe877c43 Basic attempts to organise myself into shape for composite output continue. 2016-03-07 21:22:47 -05:00
Thomas Harte
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. 2016-03-07 21:04:04 -05:00
Thomas Harte
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. 2016-03-07 19:08:26 -05:00
Thomas Harte
3b6c9c15a1 Switching momentarily back to monitor mode, resolved why I was suddenly getting no output upon creating some texture targets. 2016-03-07 18:55:15 -05:00