Thomas Harte
373820f080
Attempts to establish interface to decouple scan output from generation.
...
Restores some functionality that had dropped out in the interim: diagonal scans, decoupling of scan scaling from timing of the composite subcarrier.
2018-10-30 21:50:35 -04:00
Thomas Harte
4701aa149a
Adds first draft of an interface to separate CRT logic from the GPU-side stuff.
2018-10-29 22:08:17 -04:00
Thomas Harte
7c65cfd932
Adds default values for WriteArea
.
2018-10-21 21:18:54 -04:00
Thomas Harte
e582b4c8ca
Eliminates some dangling references to iCoordinate
.
2018-09-13 19:35:15 -04:00
Thomas Harte
a7508bc2ae
Switching explicitly to one pixel per sample eliminates the need for a bookender.
2018-09-12 20:11:17 -04:00
Thomas Harte
a38639d099
Eliminates the concept of an iCoordinate.
...
Real-life precision appears not to support the idea of sub-sample pixel storage.
2018-09-12 20:05:39 -04:00
Thomas Harte
d73d3b4480
Adds a left border to complement the right.
2018-09-09 21:52:48 -04:00
Thomas Harte
6e9cd5cb21
Resolves over-brightness created by over-composition.
2018-09-09 20:30:43 -04:00
Thomas Harte
c73445199c
Eliminates a couple of instances of manual memory management.
2018-09-09 20:29:58 -04:00
Thomas Harte
4c8781c762
Increases documentation slightly.
2018-09-09 17:17:38 -04:00
Thomas Harte
3c33ccd730
Eliminates various blank lines.
2018-07-28 10:52:34 -04:00
Thomas Harte
2832792fed
Corrects improper use of doubles.
2018-07-16 21:55:19 -04:00
Thomas Harte
efa45b9504
Adds a right gutter to clip persistence errors.
...
Also uncovers and corrects a long-standing centring error.
2018-07-16 21:52:31 -04:00
Thomas Harte
c9451a5382
Introduces an object for drawing OpenGL rectangles.
2018-07-14 17:42:23 -04:00
Thomas Harte
00cb4d26b3
Corrects typo.
2018-07-11 19:52:55 -04:00
Thomas Harte
c97c5fa03a
[Re-]recalibrates CRT retrace period and affected view windows.
...
In the hope of moving the CPC closer to the real CTM visible area.
2018-07-05 22:07:18 -04:00
Thomas Harte
283ed8dbae
Increases permissible error in scanline length.
2018-06-19 22:24:11 -04:00
Thomas Harte
b899a22c7d
Hides persistent low-part colour channel errors.
2018-06-14 20:40:27 -04:00
Thomas Harte
14a2e470e4
Corrects overbrightness issue with autogeneration of PAL composite from an RGB source.
2018-06-14 18:25:48 -04:00
Thomas Harte
41dcf1de42
Increases blur again just a little more, after consideration of interlaced output.
2018-06-14 18:25:04 -04:00
Thomas Harte
0c65385c82
Undoes older interpretation of alternating phase.
...
I now understand, hopefully, that it's only the phase of the second colour component that alternates. That has the pointwise effect of reversing the colour signal. Hence the effect of phase errors cancelling themselves out up on successive lines up to a point.
2018-06-14 18:24:32 -04:00
Thomas Harte
f05ee525cb
Tweaks blurriness downward.
2018-06-14 17:41:17 -04:00
Thomas Harte
35e84ff1a8
Corrects NTSC quadrature phase.
2018-05-31 21:40:46 -04:00
Thomas Harte
7226d8d4f7
Eliminates all instances of µ.
2018-05-13 15:46:14 -04:00
Thomas Harte
5d6b5d9f10
Eliminates all emdashes in cross-platform code.
2018-05-13 15:34:31 -04:00
Thomas Harte
0b771ce61a
Removes all instances of the copyright symbol.
2018-05-13 15:19:52 -04:00
Thomas Harte
bd27f61a03
Corrects various impossible-in-real-life compiler warnings.
2018-05-12 18:02:16 -04:00
Thomas Harte
f4097290c2
Made various corrections following a quick for-loop constness audit.
2018-04-30 22:23:57 -04:00
Thomas Harte
6547560e52
Gives the CRT the ability to move iCoordinate multiplication outside of the fragment loop.
...
That resolves precision issues, as were plaguing the Apple II.
2018-04-18 19:29:03 -04:00
Thomas Harte
1c605d58e3
Removes the CRT requirement for an integral relationship between cycles and samples.
2018-04-16 20:00:56 -04:00
Thomas Harte
5782cab2a0
Minor whitespace fix.
2018-04-05 21:15:25 -04:00
Thomas Harte
ec72fb3baf
Ensures the SVideo shader gets all proper enable_vertex_attribute_with_pointer
s.
2018-04-05 21:12:28 -04:00
Thomas Harte
d061ea232b
Ensures no attempt to compile an SVideo shader without appropriate source.
2018-04-04 19:01:01 -04:00
Thomas Harte
912791d3d4
Causes the s-video path correctly to function.
2018-03-30 18:24:18 -04:00
Thomas Harte
163a61dd63
Corrects SVideo-as-composite output; the Atari and Vic-20 now both supply svideo.
2018-03-30 13:16:18 -04:00
Thomas Harte
207d462dbf
Attempts to provide an implementation of SVideo support.
2018-03-30 12:41:20 -04:00
Thomas Harte
33281b9d89
Introduces S-Video as a video signal type at the interface level.
2018-03-30 10:25:41 -04:00
Thomas Harte
705d53cc21
Picks a phase for the TMS empirically.
2018-03-03 13:53:00 -05:00
Thomas Harte
fc9e84c72e
Eliminates unsafe optimisation.
...
Also likely to be unhelpful as and when multiple machines are in play.
2018-02-18 22:09:27 -05:00
Thomas Harte
4e720d57b2
With debugging hooks still on display, makes first attempt at dynamic analysis.
2018-02-01 07:53:52 -05:00
Thomas Harte
9cbd61e709
Replaces CRT quantity assert with test.
...
Primarily to handle television/composite target switches that can unsync the buffers.
2018-01-15 18:37:09 -05:00
Thomas Harte
23c34a8c14
Corrects calculation of intermediate buffer width multiplier.
...
Specifically: I had failed to factor in that the multiplied-up input frequency might be less than than the full width of the bitmap.
The Atari and MSX in particular now look much better.
2018-01-15 16:52:40 -05:00
Thomas Harte
93ece2aec7
"Doubles" the bandwidth given to composite signals.
...
Because I suspect it may inadvertently have been halved previously. I'm investigating.
2018-01-14 20:44:53 -05:00
Thomas Harte
2008dec1ed
Adds exceptions for bad enumeration values.
2017-11-24 19:27:49 -05:00
Thomas Harte
b4f3c41aae
Formalises naming of shader inputs and related guarantees.
2017-11-24 18:45:24 -05:00
Matt Godbolt
bded406caa
Initialize all const
members.
...
Without this change, GCC versions >4.8 will error with things like:
```
./CLK/Outputs/CRT/Internals/CRTOpenGL.cpp:154:2:error: uninitialized const member
'Outputs::CRT::OpenGLOutputBuilder::draw_frame(unsigned int, unsigned int, bool)::RenderStage::target'
```
2017-11-24 12:09:10 -06:00
Thomas Harte
e9ddec35d6
Corrects intermediate shader attribute bindings.
2017-11-16 20:19:54 -05:00
Thomas Harte
f00f0353a6
Removes unnecessary temporaries.
2017-11-15 21:48:10 -05:00
Thomas Harte
0a9622435c
Merge branch 'StringStream' of github.com:TomHarte/CLK into StringStream
2017-11-15 21:30:04 -05:00
Thomas Harte
d0f096a20b
Substitutes std::osringstream for C-esque asprintf
.
2017-11-15 21:28:48 -05:00
Thomas Harte
949d0f3928
Substitutes std::osringstream for C-esque asprintf
.
2017-11-15 21:25:01 -05:00
Thomas Harte
fd96e3e657
Eliminates all unused #ifdef GL_NV_texture_barrier code.
2017-11-13 22:39:18 -05:00
Thomas Harte
88551607a6
Ensures the GL error flag is cleared after a potential error-raising call.
2017-11-13 22:31:41 -05:00
Thomas Harte
2a9dccff26
Fixes typo.
2017-11-13 22:28:11 -05:00
Thomas Harte
9bb9cb4a65
Adds a fallback route for the array builder if it can't map a buffer.
2017-11-13 22:27:04 -05:00
Thomas Harte
bf4ed57f68
Updates style of OpenGL::TextureTarget for instance variable names and preference for RAII.
2017-11-13 22:04:13 -05:00
Thomas Harte
70039d22f1
Allows a CRT machine owner to set the target frame buffer for OpenGL output, breaking the assumption that it'll be zero.
2017-11-12 19:29:22 -05:00
Thomas Harte
8713cfa613
Ensured all asprintf return values are checked.
2017-11-12 17:29:20 -05:00
Thomas Harte
aa77be1c10
Introduces missing include.
2017-11-12 17:20:37 -05:00
Thomas Harte
c827d14d97
Corrects various GCC warnings across the 6560, CPC, TIA, Oric video and elsewhere.
2017-11-12 17:17:27 -05:00
Thomas Harte
5aef81cf24
Commutes cross-platform #pragma mark
s to //MARK:
s.
2017-11-12 15:59:11 -05:00
Thomas Harte
2e15fab651
Doubles down on <cX> over <X.h> for C includes, and usage of the namespace for those types and functions.
2017-11-11 15:28:40 -05:00
Thomas Harte
2e12370251
Resolves some of the dangling C-isms remaining in my FIR filter, and introduces filter composition.
2017-11-11 12:30:45 -05:00
Thomas Harte
cb0f58ab7a
Corrects order-of-initialisation errors in the CPC (again), TextureBuilder, TextureTarget, Z80, MFM parser and binary tape player.
2017-11-10 22:57:03 -05:00
Thomas Harte
fabaf4e607
Adds missing include files, corrects bad include paths and eliminates the Clang-specific __undefined
.
2017-11-10 21:56:53 -05:00
Thomas Harte
cb015c83e1
Eliminated C99-style struct initialisations.
2017-11-10 19:14:19 -05:00
Thomas Harte
c0055a5a5f
Further builds up SConstruct, correcting many missed imports and a couple of improper uses of C99 in C++ code.
2017-11-09 22:04:49 -05:00
Thomas Harte
c45d4831ec
Introduces an SConstruct file and corrects those errors and warnings that arise in Ubuntu.
2017-11-08 22:36:41 -05:00
Thomas Harte
6e1d69581c
Eliminates a variety of end-of-line spaces.
2017-11-07 22:54:22 -05:00
Thomas Harte
218b976dbc
Adds through route for setting a texture bookender, and exploits it from the Electron.
2017-10-23 18:35:37 -04:00
Thomas Harte
513903890e
Corrects definition of Bookender
and provides the default implementation.
2017-10-22 17:24:41 -04:00
Thomas Harte
1157bde453
Sketches interface for a GPU data bookender, to avoid stray errors with packed pixel formats.
2017-10-22 10:48:10 -04:00
Thomas Harte
ad9df4bb90
Commutes uint8_t *
, uint16_t *
, uint32_t *
, size_t
, off_t
and long
to functional-style casts.
2017-10-21 22:30:15 -04:00
Thomas Harte
e983854e71
Converts all uint8_t
and uint16_t
casts to the functional style.
2017-10-21 21:50:53 -04:00
Thomas Harte
ec999446e8
Commutes int
and unsigned
casts to the functional style.
2017-10-21 21:00:40 -04:00
Thomas Harte
5e3e91373a
Switches all unsigned int
and double
casts to functional style.
2017-10-21 19:49:04 -04:00
Thomas Harte
b5b6219cb7
Slightly simplifies TextureBuilder arithmetic.
2017-10-19 22:02:00 -04:00
Thomas Harte
ba5f668338
Ensured full CRT instance initialisation.
2017-10-17 22:34:10 -04:00
Thomas Harte
ce78d9d12c
Introduces buffer alignment when writing to textures.
...
To avoid cross-boundary writes and hopefully to eke out a little better performance.
2017-10-17 22:09:48 -04:00
Thomas Harte
edbc60a3fb
Various undefined behaviour fixes.
...
Primarily around uninitialised variables, but also with an attempted use of a negative pointer.
2017-10-17 21:29:19 -04:00
Thomas Harte
c6e6c3fcfb
Resolves all current analyser warnings.
2017-08-24 22:18:44 -04:00
Thomas Harte
2d81acb82e
Upped C++ standard to C++14 and added an #if that's intended to use the built-in std::gcd when compiled on C++17 or better. Fixed for new signedness warnings resulting for taking the step to C++14.
2017-08-11 19:18:45 -04:00
Thomas Harte
62eadbb51a
Adjusted gamma ratio to be the correct way around. The PAL midrange should be slightly darker now.
2017-08-10 15:36:27 -04:00
Thomas Harte
ad8c8166bc
Built in gamma conversion for all machines, assuming an output of 2.8 for PAL, 2.2 for NTSC.
2017-08-10 15:17:08 -04:00
Thomas Harte
55fd9122d0
Slightly relaxed vertical sync testing.
2017-07-30 21:19:42 -04:00
Thomas Harte
0bf4fdc9af
Simplified slightly.
2017-07-29 21:37:59 -04:00
Thomas Harte
ed8c73eb14
Ensured lengthy constant sync can't appear to be two sync pulses, regardless of other interruption.
2017-07-29 18:25:04 -04:00
Thomas Harte
3528a7f78b
Made an attempt at triggering vertical sync the expected number of time after it begins, regardless of total length.
2017-07-29 17:33:52 -04:00
Thomas Harte
54bcc40192
With an eye towards being more accurate as to vertical sync recognition: acknowledged that the detection period varies between PAL and NTSC.
2017-07-29 14:53:53 -04:00
Thomas Harte
be750ee427
Eliminated all dangling implicit signedness conversions.
2017-07-21 21:52:37 -04:00
Thomas Harte
449c33ee8b
Signedness fixes.
2017-07-21 21:28:04 -04:00
Thomas Harte
ef03c84b21
More definitively removed the old sample-offset blending approach to filtering.
2017-07-21 20:58:55 -04:00
Thomas Harte
5b4c5b0cbf
Avoided having two different variables named next_output_run.
2017-07-21 20:46:08 -04:00
Thomas Harte
8ccec37a4b
Eliminated a further potential cause of texture/geometry mismatch: the texture retain succeeded but then there wasn't room for geometry.
2017-07-09 19:11:38 -04:00
Thomas Harte
a25c2fd6b5
Got more explicit about what the thinking is here re: multiple sources of action.
2017-07-09 17:54:26 -04:00
Thomas Harte
ee1a9a4781
Eliminates attempts cleverly to shuffle unsubmitted runs, because no mechanism exists to stop them overwriting previously-submitted-but-not-yet-flushed runs. Which implies that the buffer must be fully circular. The cost of which is sometimes having to make two calls to glTexSubImage2D
. Also added some TODOs, and a means for reporting when a retain_latest
is ineffective, in which situation it would be inappropriate to attempt to generate correlated geometry
2017-07-09 17:50:22 -04:00
Thomas Harte
2f90f35478
Ensured the same write area can be submitted multiple times — this is actively used if a run of data overlaps a flywheel-suggested sync. Which nullifies the idea of not having a write area in the barrel, at least as soon as any one has been allocated.
2017-07-07 23:37:44 -04:00
Thomas Harte
12f7e1b804
Enshrined a default colour burst amplitude. Which now everybody relies on. The 102 figure is derived from the burst apparently being 40 IRE.
2017-07-07 23:35:14 -04:00
Thomas Harte
c7fa2ed11a
It makes more sense not to retain the previous texture builder run until vertex storage is confirmed.
2017-07-07 23:21:25 -04:00
Thomas Harte
bfbe12b94b
Made an attempt further to tie geometry and texture generation fully together, removing the assumption that the caller will achieve one-to-one calling.
2017-07-07 22:25:05 -04:00