Thomas Harte
d1dd6876b5
Adds the option to affix a standard prefix to log messages.
2019-10-20 20:38:55 -04:00
Thomas Harte
684644420a
Increases scan buffer availability.
2019-10-20 17:22:41 -04:00
Thomas Harte
9c7aa5f3fc
Attempts also to spot data writes without allocations.
2019-10-19 18:26:56 -04:00
Thomas Harte
418cd07e17
Adds a check against overrunning data.
2019-10-19 18:17:44 -04:00
Thomas Harte
19198ea665
Improves const
usage.
2019-07-16 22:13:47 -04:00
Thomas Harte
60cedca97b
Adds cmath
in support of ceilf
.
2019-07-08 18:14:03 -04:00
Thomas Harte
f6f9024631
Corrects Macintosh aspect ratio (and framing).
2019-06-13 18:41:38 -04:00
Thomas Harte
66540ff86f
Permits end_data only after a begin_data.
2019-06-03 21:56:53 -04:00
Thomas Harte
b860ba2ee3
Disallows smaller buffer use for 'sharp' displays and tightens sampling window.
2019-06-03 15:58:14 -04:00
Thomas Harte
d25ab35d58
Finally gets setw
usage correct.
2019-04-15 12:41:56 -04:00
Thomas Harte
6f7dd10d95
Reduces draw/update contention.
...
This won't yet have any effect on either port owing to the way they handle contexts, but here it is.
2019-03-07 19:28:32 -05:00
Thomas Harte
24fb95291a
Reverts to support a full RGBA colour buffer.
2019-03-07 19:22:40 -05:00
Thomas Harte
84422676cb
Switches to more coherent logic about buffer sizing.
2019-03-06 19:19:30 -05:00
Thomas Harte
7441e3f4c5
Corrects aspect ratio when changing accumulation texture size.
2019-03-05 22:10:32 -05:00
Thomas Harte
f18132d674
Makes effort to round out draft 1 of Outputs::Display::Metrics.
2019-03-05 22:01:58 -05:00
Thomas Harte
5660007221
Experimentally introduces adaptive quality intermediate buffers.
2019-03-05 21:41:20 -05:00
Thomas Harte
86a6b04d4a
Begins attempts to keep track of display metrics.
...
i.e. a system that can both make smart decisions about when to use a lower resolution, and hopefully allow some sort of flywheel-esque horizontal retrace synchronisation. And possibly some raster beam chasing?
2019-03-04 21:54:50 -05:00
Thomas Harte
641e349f33
Switches to an 8bpp stencil, for Nvidia compatibility.
2019-03-03 20:38:24 -05:00
Thomas Harte
ccdeb3fbc8
Ensures draw is a no-op prior to pipeline setup.
2019-03-03 15:04:14 -05:00
Thomas Harte
bee0d09877
Splits display update and draw functions.
...
On the Mac, draw is now called without an update for resizing events, and
anything else requested by AppKit. In all other cases — including from
the SDL version — both are called as if they were still a single function.
2019-03-02 19:33:28 -05:00
Thomas Harte
d97348dd38
Eliminates dangling uses of printf
.
2019-03-02 18:07:05 -05:00
Thomas Harte
d122535a65
Unifies the OpenGL screenshot code and corrects it for arbitrary alignment.
2019-02-27 21:05:02 -05:00
Thomas Harte
db078c7363
Minor tweak: don't start counting phase from zero.
...
This should ensure no first pixel issues resulting from clamping.
2019-02-27 18:51:51 -05:00
Thomas Harte
6b4f6971de
Disables upper limit on frame buffer size.
...
Filtering is sufficiently imperfect as to make this justifiable only when performance requires it. So I need a test for that. Marked as TODO.
2019-02-26 22:39:07 -05:00
Thomas Harte
79707a3c66
Improves filtering slightly, and ensures coefficients are always set when needed.
2019-02-26 22:35:55 -05:00
Thomas Harte
694783efe9
Brings S-Video inside the group that filters luminance.
...
Thereby revealing some sort of error in offset selection.
2019-02-26 22:27:40 -05:00
Thomas Harte
68c5474e36
Reintroduces basic filtering for RGB mode (and introduces it for monochrome composite).
2019-02-26 22:21:49 -05:00
Thomas Harte
cd055a0298
Introduces an upper bound on output resolution, and resolves full-screen clear colour.
2019-02-25 22:07:48 -05:00
Thomas Harte
8f2abab0d9
Ensures texture targets are initially clear.
2019-02-25 21:55:14 -05:00
Thomas Harte
4c5dee866b
Ensures a proper black fill for Luminance8Phase8
input data.
2019-02-25 21:32:15 -05:00
Thomas Harte
7bb90c78d9
Resolves out-of-bounds initial condition whenever this loop began with start_line = 2047.
...
This, I believe, was the remaining cause of screen flashes.
2019-02-24 19:50:19 -05:00
Thomas Harte
a6e61ef83b
Reverts the clear colour to black.
...
The change was related to debugging; it was not intentionally committed.
2019-02-24 14:36:08 -05:00
Thomas Harte
c775a6c0f8
Introduces but disables a couple of bits of logging that might be helpful again in the future.
2019-02-24 14:30:39 -05:00
Thomas Harte
2f9e825728
Forces the outward-communicated composite angles to have the same precision as the cycle counts.
...
While also making a minor improvement to output range. Which is neither here nor there.
2019-02-24 14:29:43 -05:00
Thomas Harte
2f491b5be1
Reintroduces fragment snapping for composite colour sampling.
...
Thereby uncovers some sort of slightly-off recording of scan lines. On the Apple II, individual scans reach the ScanTarget at a density of exactly 0.25 colour cycles per pixel. So that timing information propagates exactly. But the whole lines that are composed via ::announce end up trying to fit 0.250154 colour cycles per pixel. Which creates a phase error as the display progresses from left to right.
This will need to be resolved in order to be able to fix the Apple II's intended colour phase. But, also, it's probably what was wrong with the Oric. And, quite possibly, why the single-step shader didn't work.
2019-02-24 13:39:14 -05:00
Thomas Harte
de7ebead23
Ensures the line_allocation_has_failed_ condition can be exited.
2019-02-21 22:30:41 -05:00
Thomas Harte
c0c4704419
Ensures that failure to allocate a line blocks all other allocations.
2019-02-21 21:38:48 -05:00
Thomas Harte
080f949f89
Ensures OpenGL version is logged prior to any other GL calls.
2019-02-20 20:21:17 -05:00
Thomas Harte
9f6956bd87
Awards default values to Scan
, to appease GCC 7.3.
2019-02-19 21:40:42 -05:00
Thomas Harte
ddf5e1632d
Ensures log memory is automatically initialised.
2019-02-18 22:08:03 -05:00
Thomas Harte
40bfde41cb
Adds an OpenGL version shout out.
2019-02-18 22:01:56 -05:00
Thomas Harte
e0751af56d
Handles the 0 return case.
2019-02-18 21:56:49 -05:00
Thomas Harte
3979faf43b
Gets more explicit about potential causes of failure.
2019-02-18 21:53:35 -05:00
Thomas Harte
878b480a44
Tidies up marginally.
2019-02-18 21:37:07 -05:00
Thomas Harte
b35b6b2ba8
Resolves a couple of missing #includes for cassert
.
2019-02-18 21:29:39 -05:00
Thomas Harte
6b2e1fe62b
Makes error reporting more communicative.
2019-02-18 11:13:54 -05:00
Thomas Harte
8ecf885629
Attempts to put in better OpenGL safety rails.
2019-02-18 10:29:40 -05:00
Thomas Harte
6d76b7cd94
Attempts to ensure proper colour output during alternating PAL lines.
2019-02-17 21:50:15 -05:00
Thomas Harte
7bd721f334
Resolves improper state if an end-of-frame clear is triggered by the first new line.
2019-02-17 21:49:53 -05:00
Thomas Harte
77bebd4a65
Accounts for periods near an expected sync after a sync actually occurred.
2019-02-12 22:30:40 -05:00
Thomas Harte
ec8f1157c8
Corrects S-Video output.
2019-02-12 19:31:12 -05:00
Thomas Harte
037cbd534e
Corrects phase error in chrominance separation.
2019-02-12 19:24:28 -05:00
Thomas Harte
208ef70e31
Corrects documentation.
2019-02-12 18:55:58 -05:00
Thomas Harte
2fa4c59523
Correction: use the QAM texture for colours.
2019-02-12 18:42:28 -05:00
Thomas Harte
cda0a2de79
Establishes QAM colour buffer lookups within the composite colour path.
...
Subject to errors in channel scaling and absolute position.
2019-02-10 23:02:31 -05:00
Thomas Harte
008f50832c
Fixed: the two shaders that use a common input array should use common bindings.
2019-02-10 22:39:24 -05:00
Thomas Harte
c94acb1ca2
With a little more debug logging, discovered an issue with incrementing by four.
2019-02-09 22:45:20 -05:00
Thomas Harte
d341f98b09
Corrects horizontal scale.
2019-02-09 18:52:43 -05:00
Thomas Harte
e35a3ab566
Ensures proper uniforms and varyings for the qam_separation_shader.
2019-02-09 18:35:14 -05:00
Thomas Harte
b3b4b7cf0c
Corrects QAM texture generation logic.
2019-02-09 17:20:13 -05:00
Thomas Harte
1cd6d58f17
Restores S-Video through line, as monochrome.
2019-02-09 17:13:43 -05:00
Thomas Harte
eecd4417e7
Bites the bullet and accepts that an additional texture will be useful for QAM separation.
2019-02-09 16:54:31 -05:00
Thomas Harte
798cc58f76
Simplifies the composite colour shader no longer to handle colour.
2019-02-05 19:22:35 -05:00
Thomas Harte
6ba1194d74
Sets a clear colour appropriate for phase-linked luminance clearing.
2019-02-03 22:33:04 -05:00
Thomas Harte
e5f75b5df2
Resolves repetition between svideo_sample
and composite_sample
.
2019-02-03 22:09:16 -05:00
Thomas Harte
b75ad3def2
Updates the multimachine for the ScanTarget world.
2019-02-03 15:07:22 -05:00
Thomas Harte
caf72afcb4
Switches to a seven-point scheme, to determine whether falsely-shared luminance is at fault.
...
It doesn't seem to be, alas.
2019-01-31 21:19:30 -05:00
Thomas Harte
687e0b376e
Enhances error checking around setting of uniforms.
2019-01-31 21:17:49 -05:00
Thomas Harte
122857e5b5
Improves automatic index generation, to allow for matrices implicitly taking up to four slots.
2019-01-31 18:49:01 -05:00
Thomas Harte
5002290428
Makes consistent use of textureLod rather than texture.
2019-01-26 22:05:15 -05:00
Thomas Harte
d09ac3384f
Eliminates some old-school manual memory management.
...
In favour of additional copying, but I still think this is safer.
2019-01-25 22:54:23 -05:00
Thomas Harte
b6a4a7e0a5
This is no longer TODO.
2019-01-25 22:47:15 -05:00
Thomas Harte
c87994336c
Switches the Shader class to using LOG.
2019-01-25 22:45:47 -05:00
Thomas Harte
85ad490089
Offers a less error-prone route to attribute binding.
2019-01-25 21:56:55 -05:00
Thomas Harte
a321ff3037
Adds some default values.
2019-01-25 20:21:24 -05:00
Thomas Harte
68d6feaa03
Adds missing includes and gets more explicit about exceptions.
2019-01-25 20:19:50 -05:00
Thomas Harte
74e1a9a621
Declines improper use of offset
within loops and adds missing header.
2019-01-25 20:14:53 -05:00
Thomas Harte
6a43fc5df0
Resolves a GCC-troubling circular declaration issue vs. atomic.h.
2019-01-25 19:30:39 -05:00
Thomas Harte
312f38906b
Corrects two improper include paths.
2019-01-25 19:19:23 -05:00
Thomas Harte
20b4896940
Eliminates the dead stuff of CRTConstants.hpp.
2019-01-25 19:11:39 -05:00
Thomas Harte
6a93d2d006
Corrects some minor spaces-instead-of-tabs errors.
2019-01-24 22:59:03 -05:00
Thomas Harte
ae0bc7e7aa
Calculates sampling offsets up front.
2019-01-23 20:53:10 -05:00
Thomas Harte
a8acadbe13
Gives the shader builders freer rein over what to use as inputs, and turns angles
into a varying.
...
All dropping out during the never-ending diagnosis at play here.
2019-01-22 22:20:12 -05:00
Thomas Harte
727f2e2ba0
Updates to the ScanTarget world.
2019-01-17 22:28:02 -05:00
Thomas Harte
a6683cb9b8
Avoids scaling luminance prior to extracting chrominance.
2019-01-17 20:52:33 -05:00
Thomas Harte
5ceb711bd3
Allows amplitude to be specified even for a default colour burst.
2019-01-17 20:47:42 -05:00
Thomas Harte
d593796dae
Reintroduces less-filtered black and white video where there's no colour burst.
2019-01-16 22:22:29 -05:00
Thomas Harte
ef0dbc2a41
Undoes hard-coding of target framebuffer and display gamma.
2019-01-15 21:33:30 -05:00
Thomas Harte
6c49953115
Returns gamma correction, and corrects Amstrad CPC brightness.
2019-01-14 22:56:08 -05:00
Thomas Harte
55290f4dad
Attempts a fix of frame_was_complete_ logic, to try to eliminate black flashes.
2019-01-14 21:42:45 -05:00
Thomas Harte
bb03d2f2ad
Removes redundant enumeration.
2019-01-13 23:07:50 -05:00
Thomas Harte
7aec5be61a
Cleans up and simplifies shader creation.
2019-01-13 22:49:01 -05:00
Thomas Harte
e89e55a9bb
Attempts to factor actual composite amplitude into output.
2019-01-13 14:45:17 -05:00
Thomas Harte
7c2c243985
Corrects sample spacing, and removes a lot of detritus.
2019-01-12 18:36:54 -05:00
Thomas Harte
25a1f23fc0
Takes a first shot at re[re,re]-implementing composite colour decoding.
2019-01-12 17:59:24 -05:00
Thomas Harte
27541196cc
Corrects Luminance8Phase8 and PhaseLinkedLuminance8 composite encodings.
2019-01-11 22:46:50 -05:00
Thomas Harte
5d9521fcb9
Advances back to a semi-complete monochrome composite output.
...
i.e. composite phase and amplitude is ostensibly flowing to its new destination.
2019-01-11 22:02:15 -05:00
Thomas Harte
028e530232
Shunts output shader to its proper place.
2019-01-06 22:59:14 -05:00
Thomas Harte
906a2ff6eb
Switches to using clock times for buffer merging and output.
2019-01-06 18:47:01 -05:00
Thomas Harte
c392c819c1
Switches to using the announce
is_visible
flag to spot line ends.
2019-01-06 13:37:34 -05:00
Thomas Harte
e9d9ff0da0
Enhances ScanTarget to provide additional timing information.
2019-01-05 23:09:17 -05:00
Thomas Harte
46d756d298
Starts towards a flattening of the intermediate video processing.
...
Immediate issue: using x position to index into a bitmap sampled at the input data rate doesn't allow for the disconnection between input rate and output speed provided by the flywheels.
2019-01-05 18:11:39 -05:00
Thomas Harte
fd0ffc7085
Attempts an initial flattening of the pipeline, seemingly losing all output.
2019-01-01 21:02:21 -05:00
Thomas Harte
557a2a0ddf
Moves pipeline setup into draw(), where there'll definitely be an OpenGL context.
2018-11-29 19:41:54 -08:00
Thomas Harte
6be46ae921
Mostly restores Atari 2600 output. PAL colours need work.
2018-11-29 18:26:05 -08:00
Thomas Harte
a25470ee41
Permits tweaking of PhaseLinkedLuminance8
sampling offset.
2018-11-29 16:29:28 -08:00
Thomas Harte
fd579a019b
Introduces a new scan source data type, motivated by the reasoning used by the Oric.
...
Specifically: it'll allow PCM sampling of the potentially arbitrary composite generation logic of various machines.
2018-11-28 20:40:22 -08:00
Thomas Harte
64465f97b6
Starts towards reintroducing the proper mechanisms for selecting a display type at runtime.
2018-11-28 17:53:33 -08:00
Thomas Harte
d45c2a1f28
Settles, at least for now, on 15-tap notch filtering.
2018-11-26 22:34:31 -05:00
Thomas Harte
f3174069fa
Attempts a linear comb filter for YC separation, plus post-separation Y filtering.
2018-11-25 21:54:12 -05:00
Thomas Harte
cd1e796093
Attempts to add clearing of the destination framebuffer too.
2018-11-24 23:31:56 -05:00
Thomas Harte
dd4af4f0df
Removes dead files.
2018-11-24 22:40:06 -05:00
Thomas Harte
76656fab23
Applies harsher filtering.
2018-11-24 22:39:53 -05:00
Thomas Harte
cf49603a9e
Makes first reintroduction of colour composite decoding.
2018-11-24 22:30:39 -05:00
Thomas Harte
6c92853461
Corrects monochrome composite generation.
2018-11-24 21:55:15 -05:00
Thomas Harte
6a62cf9146
Corrects shader generation for S-Video input to S-Video output.
2018-11-24 21:40:34 -05:00
Thomas Harte
4fa6bc0ad1
Corrects S-Video decoding for most machines.
...
Ironically, that being those other than luminance/chrominance input machines. Further investigation required.
2018-11-24 21:30:09 -05:00
Thomas Harte
95685749ad
Attempts fully to implement the S-Video pipeline, without success.
2018-11-24 18:51:07 -05:00
Thomas Harte
d7c0f0c804
Switches to an ordinary sampler for scan processing.
2018-11-24 18:03:44 -05:00
Thomas Harte
6b42b92930
Kills CRTOpenGL.cpp and simplifies shader output very slightly.
2018-11-24 17:37:58 -05:00
Thomas Harte
538c57664f
Establishes attribute bindings to allow multiple shaders to use the same vertex array.
2018-11-24 16:06:26 -05:00
Thomas Harte
a66a20f7fe
Manages to get a brilliant white out of the new pipeline.
2018-11-23 22:54:52 -05:00
Thomas Harte
d4ac79b0af
Attempts to introduce a full-on processing pipeline, in theory putting me two shaders away from completion.
...
Well, subject to finding the last flashing bug and updating the multimachine, anyway.
2018-11-23 22:34:38 -05:00
Thomas Harte
a5a3769a0f
Reaches for conceptual const correctness.
2018-11-23 22:33:28 -05:00
Thomas Harte
ee89be6730
Removes many stray spaces.
2018-11-23 22:32:32 -05:00
Thomas Harte
b9aca39eb0
Reintroduces Vic-20 output.
...
Resolving errors in shader generation while I'm here.
2018-11-22 22:43:42 -05:00
Thomas Harte
c0454ff101
Corrects chrominance scale.
2018-11-22 18:18:16 -05:00
Thomas Harte
a697a2e4f6
Attempts to complete all input processing — an RGB, S-Video or composite input buffer is now produced.
...
... for all input data types.
2018-11-22 17:20:31 -05:00
Thomas Harte
396cf72029
Renames OutputType
as DisplayType
and promotes it to a scan target modal.
2018-11-22 14:36:46 -05:00
Thomas Harte
bfe9704829
Reintroduces respect of each machine's nominated visible area.
2018-11-22 13:22:04 -05:00
Thomas Harte
43ee540233
Avoids race condition on .is_first_in_frame
2018-11-21 18:27:04 -05:00
Thomas Harte
38ffc4fdb3
Invalidates the stencil buffer upon buffer resizes.
2018-11-20 19:51:11 -05:00
Thomas Harte
a70991d50e
Eliminates minor gap.
2018-11-19 23:35:12 -05:00
Thomas Harte
4c00456166
Makes first attempt to draw only new lines.
2018-11-19 23:25:26 -05:00
Thomas Harte
26219213d7
Marginally increases scan size.
2018-11-18 23:03:56 -05:00
Thomas Harte
97c5ee6c0a
Corrects stencil buffer creation, and edges towards using it for [guaranteed] full-screen decay.
2018-11-18 22:22:43 -05:00
Thomas Harte
75bc0e451d
Reintroduces the accumulation texture.
...
Disables automatic clearing of the texture target, as the profiler indicates the vector instantiation to be a huge time sink.
2018-11-18 21:39:11 -05:00
Thomas Harte
6496b6313c
Attempts to fix random stray noise lines.
2018-11-17 23:27:25 -05:00
Thomas Harte
8f05560dd7
Corrects right-edge bookending.
2018-11-17 17:46:57 -05:00
Thomas Harte
06c0c64c1a
Shifts intermediate buffer sampling into the middle of each pixel row.
2018-11-17 17:31:32 -05:00
Thomas Harte
c173777d12
Extends TextureTarget so that targets can be created with a one-bit stencil.
2018-11-17 15:51:12 -05:00
Thomas Harte
16dfeb3fc8
Discards empty lines, yet makes some attempt at restoring transparency.
...
The two things conflict more than a little, so work to do.
2018-11-15 21:51:27 -05:00
Thomas Harte
5a31891048
Returns Amstrad CPC output.
...
Which is probably it until I get some more composite processing back in.
2018-11-15 21:32:22 -05:00
Thomas Harte
8b37496447
Restores video output to the Master System.
2018-11-15 21:21:54 -05:00
Thomas Harte
8f6664f0d7
Starts towards picking an input shader based on data type and pipeline.
2018-11-15 21:02:46 -05:00
Thomas Harte
8a699b6072
Kills setup_output
definitively, saving some indirection. set_scan_target
takes its place.
2018-11-14 21:52:57 -05:00
Thomas Harte
87df8b9e85
Makes an attempt at pre-emptive line buffer clearing.
2018-11-14 21:19:14 -05:00
Thomas Harte
91b19c5c70
Adds bookending, and finally kills the TextureBuilder. Farewell.
2018-11-14 20:49:06 -05:00
Thomas Harte
0487580a1a
Corrects initial state of is_drawing_
and expands lines to full display.
2018-11-14 20:10:38 -05:00
Thomas Harte
3dca836571
Ensures no overflow, and adds a couple of const
s.
2018-11-14 20:09:57 -05:00
Thomas Harte
6ba02c44d0
Better binds buffer sizes.
2018-11-13 23:08:51 -05:00
Thomas Harte
bf3ab4e260
Proceeds as drawing to the unprocessed line buffer and drawing from it.
...
Very, very slowly, and without yet clearing.
2018-11-13 21:15:33 -05:00
Thomas Harte
02f9cada43
Communicates the colour subcarrier frequency, and uses it to pick a buffer width.
2018-11-13 18:33:44 -05:00
Thomas Harte
654a19ea15
Switches back to working on the scan shaders.
...
Pixels from the emulated machine are now starting to appear.
2018-11-12 22:52:26 -05:00
Thomas Harte
ecb5504bd1
Switches enable_vertex_attribute_with_pointer
to silent failure (versus glGetError).
2018-11-12 22:51:44 -05:00
Thomas Harte
2adf3d353e
Subtracts retrace periods from output scale.
2018-11-12 20:20:09 -05:00
Thomas Harte
3045e85004
Ensures redraws when resizing; declines to busy wait otherwise.
2018-11-12 20:15:38 -05:00
Thomas Harte
e9d1afd515
Appears to demonstrates that the line buffer is approximately working.
2018-11-12 19:10:48 -05:00
Thomas Harte
833ab7945b
Slow steps towards switching to line output.
2018-11-12 18:56:54 -05:00
Thomas Harte
0af1d668a6
Takes a first step towards generality, and thereby starts submitting lines.
2018-11-12 18:47:55 -05:00
Thomas Harte
0ac62e3805
Flips and properly sizes output scans.
2018-11-12 18:28:09 -05:00
Thomas Harte
938d09f34a
Corrects scan outline generation.
2018-11-12 18:23:45 -05:00
Thomas Harte
dce52d740d
Finally gets some pixels back on screen.
...
For now, just the raw scans, direct to the framebuffer, with no intermediate processing. But it seems to prove that at least some of the proper data is reaching the GPU.
2018-11-11 23:23:42 -05:00
Thomas Harte
3ae333fa84
Edges further towards reviving the shaders.
2018-11-11 21:41:13 -05:00
Thomas Harte
d5af1f3948
Removes some migrated work.
2018-11-11 16:22:14 -05:00
Thomas Harte
0ba3ae53ab
Connects up the necessary recording to use intermediate composite buffers.
2018-11-11 15:20:18 -05:00
Thomas Harte
be12d78c83
Corrects vertical event announcement, and adjusts namespaces for OpenGL primitives.
2018-11-11 15:11:32 -05:00
Thomas Harte
b70227ac1b
Ensures proper write area locations end up in the scans.
2018-11-10 21:10:33 -05:00
Thomas Harte
6d277fecd5
Makes ScanTarget
a little more communicative and orthogonal.
2018-11-10 19:52:57 -05:00
Thomas Harte
491817d85c
Corrects allocation error and begins submitting raw textures.
2018-11-08 23:02:36 -05:00
Thomas Harte
20faf4e477
Adds submission of scans to the GPU.
2018-11-08 22:21:11 -05:00
Thomas Harte
4fe5c7c24e
Conspires to handle multithreading side of things in a lockless fashion.
...
At least on x86-64.
2018-11-08 21:57:28 -05:00
Thomas Harte
36bf640c6f
Acts as if it is going to submit scans, at least.
2018-11-07 22:53:46 -05:00
Thomas Harte
7881e40e0b
Shuffles the OpenGL primitives into their own collection.
2018-11-07 19:11:01 -05:00
Thomas Harte
55da1e9c0f
Simplifies semantics a little and starts accepting a single buffer of pixel data.
2018-11-06 22:23:38 -05:00
Thomas Harte
9799aa0975
Completes documentation and rounds out implementation.
2018-11-04 22:17:33 -05:00
Thomas Harte
1effb97b74
Reintroduces colour phase acquisition from the colour burst.
2018-11-04 21:57:46 -05:00
Thomas Harte
eb28095041
Ensures proper accumulation and reporting of colour phase across lines.
2018-11-04 21:44:22 -05:00
Thomas Harte
014da41471
Ensures scan positions are communicated with a specified range, and switches manner of pixel clock communication.
2018-11-04 21:06:25 -05:00
Thomas Harte
0446e350d3
Resolves sizing of texture coordinates, and improves constness slightly.
2018-11-03 23:51:26 -04:00
Thomas Harte
05fb7db147
Reduces CRT chattiness.
2018-11-03 23:47:41 -04:00
Thomas Harte
f6562de325
Possibly adds enough for the Electron and ZX80 to start outputting dummy lines.
...
Let's see!
2018-11-03 23:40:39 -04:00
Thomas Harte
b40211d2c0
Starts to bend 'CRTMachine' to a world farther from owning the GPU relationship.
2018-11-03 21:54:25 -04:00
Thomas Harte
da4d883321
Adds first, incomplete attempts to talk to a ScanTarget from the CRT.
...
Does away with the hassle of `unsigned` while I'm here; that was a schoolboy error.
2018-11-03 19:58:44 -04:00
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
7eeefd2602
Ensures LOGs look like statements even in release builds.
2018-10-22 22:37:11 -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
5ab4cfee84
Factors out repeated hex-size setting.
2018-06-21 19:27:54 -04:00
Thomas Harte
a9eb0d02c6
Returns sanity to 8272 logging.
2018-06-20 23:02:32 -04:00
Thomas Harte
283ed8dbae
Increases permissible error in scanline length.
2018-06-19 22:24:11 -04:00
Thomas Harte
adca862166
Finally makes an initial pass at logging macros.
2018-06-18 22:37:19 -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
074b4c3500
Eliminates repeating cause of misuse.
...
Raises the question as to whether an async task queue should be required at construction; let's see how things look as the project develops.
2018-04-21 15:01:18 -07: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
10f637d2cf
Enhances the CompoundSource so that constituents can have different volumes.
2018-04-07 14:30:02 -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
dbe3c5c3f8
Ensures artificial frequency limits are honoured.
2018-04-05 18:40:07 -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
3d0c832a21
Moves all LowpassSpeaker delegate calls outside of critical sections.
2018-03-22 19:01:20 -04:00
Thomas Harte
682c3d8079
Adds new hook for watching audio output rate changes.
2018-03-22 09:23:01 -04:00
Thomas Harte
48737a32a7
Introduces formal setting of the output volume to SampleSource
.
...
Previously every output device was making its own decision. Which is increasingly less sustainable due to the CompoundSource.
2018-03-09 13:23:18 -05:00
Thomas Harte
705d53cc21
Picks a phase for the TMS empirically.
2018-03-03 13:53:00 -05:00
Thomas Harte
3c5a8d9ff3
Adds Super Game Module support for the ColecoVision.
2018-03-03 13:08:33 -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
c8a4432c63
Makes an attempt to transfer audio outputs during dynamic analysis.
2018-02-18 15:23:15 -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
c12aaea747
Attempts to get as far as running the MultiMachine.
...
In doing so, fixes the long-standing bug that machines that output audio but don't have a listener produce a divide by zero.
2018-01-30 22:23:06 -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
3e1d8ea082
Adds is_silent
to SampleSource
plus shortcut processing to CompoundSource
.
2018-01-06 18:50:26 -05:00
Thomas Harte
2d892da225
Introduces the MSX keyboard toggle sample source.
...
In support of which, it also introduces a means of sample source composition.
2017-12-19 21:08:10 -05:00
Thomas Harte
2dc1d4443e
Separates LowpassFilter and SampleSource.
2017-12-18 21:39:23 -05:00
Thomas Harte
ac80d10cd8
Separates the component parts of running an audio stream: task deferral, filtering and generation.
...
Walking towards improving opportunities for composition.
2017-12-17 21:26:06 -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
8ddc64c82a
Ensures well-defined default speaker clock rate values.
2017-11-21 21:18:58 -05: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