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

200 Commits

Author SHA1 Message Date
Thomas Harte
8232ed765e Eliminated use of zero-alpha runs to clear new lines in the intermediate buffer in favour of a scissored glClear. It's just an easier way to scale the current approach to three intermediate buffers. 2016-04-20 20:44:25 -04:00
Thomas Harte
e2da77fb8b Clarified constants, ensured monitor mode works from startup. 2016-04-19 22:53:39 -04:00
Thomas Harte
ef83595af3 Fixed: issue was (i) always thinking the entire source run buffer needed to be issued; and (ii) having fixed that, always thinking that the block that needs redrawing doesn't overflow the buffer. Fixed both. 'Television' mode is now working without explicit synchronisation (and with a lot less work). 2016-04-19 22:38:11 -04:00
Thomas Harte
3d7a3ce995 Eliminated some redundant texture binds. 2016-04-19 22:30:05 -04:00
Thomas Harte
145c0b3b71 Smoothed output device changes, killing some dead state. Added an explicit glFinish to suggest that the problem is synchronisation rather than any sort of data or shader error. 2016-04-19 22:21:26 -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
88e237b8de Standardised indentation and added one extra piece of documentation. 2016-04-19 20:53:55 -04:00
Thomas Harte
20aa9e291d Attempted to deal with the precision issues causing 'television' output currently to differ from 'monitor' output. Documented TextureTarget while I'm here. 2016-04-19 20:51:34 -04:00
Thomas Harte
6f52ed14d6 Trivially fixed. Appears to confirm an off-by-one error in the television implementation. Which would explain one of the visual phenomena — a repeating corrupted line. 2016-04-19 19:32:52 -04:00
Thomas Harte
b90a487a16 Attempted to enable both monitor and television output paths in the same codebase. The television route seems to be broken. Investigation required. 2016-04-19 19:30:50 -04:00
Thomas Harte
6c9bcfa637 Got rigorous on exceptions, started working towards having a working 'composite' shader at the same time as having a working RGB shader. 2016-04-19 08:05:43 -04:00
Thomas Harte
bcc784bda9 Introduced an interface for specifying attribute bindings, taking the opportunity to document the interface and introduce exceptions. 2016-04-19 07:23:15 -04:00
Thomas Harte
9d39c14752 Nothing of substance different; main current mystery: why do old frames recur and why does other jumpiness occur? Do I need some explicit synchronistion? 2016-04-18 22:18:03 -04:00
Thomas Harte
cf55a0c423 Fixed: composite output y is now incremented upon the start of retrace, that causing it to have different values at either edge of scans. 2016-04-18 21:49:45 -04:00
Thomas Harte
9580dde3ad Fixed left/right shuffling. Was simply failing to supply the integer version of coordinates. 2016-04-18 21:40:23 -04:00
Thomas Harte
d5bac2f04f Spotted error was in texture target all along. This now gets as far as showing something a lot like the correct display, but precision is way off. Way off. 2016-04-18 21:32:48 -04:00
Thomas Harte
bf29c8e2bf Fixed mismatch in television/monitor selection, ticked view for drawing concurrently, since it can, removed stray space. 2016-04-18 19:01:15 -04:00
Thomas Harte
5980f5e991 Number of taps can be specified explicitly if you desire. 2016-04-17 20:45:57 -04:00
Thomas Harte
499f7ace07 Re-enabled working video output for the Electron for the day and consolidated the rough metric I'm using to pick a number of taps for the audio filter. 2016-04-17 20:43:20 -04:00
Thomas Harte
9ede284eb6 Added blanking source runs, ensuring the rolling buffer is appropriately cleared. 2016-04-17 20:34:52 -04:00
Thomas Harte
43cae267f9 Shuffled further in an attempt to get as far as having static but incorrectly-interpreted pixel data on screen. It's not currently static. So work to do. 2016-04-17 18:08:05 -04:00
Thomas Harte
a8fbd82a3d Made an attempt at correctly mapping to eye coordinates. 2016-04-17 17:21:24 -04:00
Thomas Harte
ece51917fa Added first attempt at performing the first step of television output: mapping from source data to the first of the processing buffers. It's immediately obvious that my eye coordinates are off. 2016-04-17 17:17:59 -04:00
Thomas Harte
abce0ed3c4 Added setup of the source vertex array. 2016-04-17 16:17:23 -04:00
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
323f1a24db Introduced blackout period solution to vertical sync confusing horizontal sync. Need to find out whether it's accurate. 2016-04-14 20:30:45 -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
04d1b65c93 Reinstated texture target creation, cut them down to merely RGB. 2016-04-12 22:48:47 -04:00
Thomas Harte
4be8053ba9 Updated documentation. 2016-04-12 22:38:49 -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
fe8b0ebc7e Tidied up a little, mostly bumping things out of just-in-time creation that I can just do well in advance. 2016-04-12 22:31:13 -04:00
Thomas Harte
069ec2e889 In search of the cause of performance issues again, excised the per-pixel sin until it can be further evaluated. 2016-04-11 23:13:54 -04:00
Thomas Harte
d100c755b7 The final line runs on a diagonal. Leave room for that. 2016-04-11 23:13:14 -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
e45fe43801 Removed some dead caveman debugging. 2016-04-10 23:02:34 -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
fc5530b513 Realising I've managed to confuse input and output, started shift to 'source' for what 'input' was. 2016-04-10 15:58:43 -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
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. 2016-04-04 21:57:27 -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
3038704977 Attempted to introduce a lowpass filter to the graphics output, reverted 6502 optimisations as seemingly not working. 2016-03-21 22:01:25 -04:00
Thomas Harte
197cf2a834 Commented out sync; it can probably be implicit. 2016-03-20 21:42:05 -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