Thomas Harte
|
c18cc4c8f5
|
It appears the Vic's output is sine-ish, after all. Also adjusted centre of display, simultaneously adding some validation on that.
|
2016-06-14 07:29:35 -04:00 |
|
Thomas Harte
|
2992183aae
|
Switched to a lookup table for phase, temporarily in YUV colour space, probably. Working on it.
|
2016-06-12 14:39:17 -04:00 |
|
Thomas Harte
|
68a8851c52
|
Increased parallelism, allowing a simplification in the GL view.
|
2016-06-02 22:29:09 -04:00 |
|
Thomas Harte
|
4ad074fc78
|
Introduced a four-cycle delay between playfield fetch and display, curing Yar's Revenge. Also disabled barrel roll scanling colouring again. I really need to make my mind up on that.
|
2016-05-16 19:55:56 -04:00 |
|
Thomas Harte
|
9d92ad659f
|
Established the basic timing loop, albeit without clocking delays yet.
|
2016-05-16 08:01:29 -04:00 |
|
Thomas Harte
|
00a2b42080
|
Made thread-safe.
|
2016-05-15 15:19:52 -04:00 |
|
Thomas Harte
|
091516e3cb
|
The semantics might need better exposition but: fixed UniformXfv calls plus matrix calls, documented new semantics on all setters.
|
2016-05-15 14:59:59 -04:00 |
|
Thomas Harte
|
328fabcd10
|
Ensured values aren't dangling pointers.
|
2016-05-14 18:15:10 -04:00 |
|
Thomas Harte
|
492dc7ccbf
|
Made an attempt to queue uniform changes until the next call to bind . That's to allow usage from other threads.
|
2016-05-14 18:06:55 -04:00 |
|
Thomas Harte
|
30f335fa35
|
Switched pervasively to using the named slot uniform setters on Shader .
|
2016-05-13 22:08:32 -04:00 |
|
Thomas Harte
|
8d52765f40
|
Realised why new shaders weren't taking. Very negligibly decreased Atari drawing cost.
|
2016-05-12 22:22:24 -04:00 |
|
Thomas Harte
|
6d65bc9b3a
|
Permitted a wider error window on vertical sync, tidied things up a little and started trying to move towards full implementation of the OpenGL contract.
|
2016-05-11 22:11:01 -04:00 |
|
Thomas Harte
|
4b3c4082d2
|
These functions appear correctly to model the NTSC and PAL palettes; the CRT's attempt to switch function doesn't work properly yet though.
|
2016-05-11 21:07:18 -04:00 |
|
Thomas Harte
|
a8ce021136
|
Fixed comment.
|
2016-05-10 19:59:03 -04:00 |
|
Thomas Harte
|
0d2d6a452d
|
Fixed some dangling buffer management issues.
|
2016-05-10 19:55:34 -04:00 |
|
Thomas Harte
|
b6d2c8cb63
|
Switched to instaced drawing for source[/intermediate] runs too, reducing that data transfer footprint by 50%.
|
2016-05-10 19:50:12 -04:00 |
|
Thomas Harte
|
7369139f7e
|
Realised that phase time can fit inside a single byte, since it's always (well) within the first quarter of the line — and if it somehow weren't (?) then taking it modulo the frequency would do.
|
2016-05-10 19:14:57 -04:00 |
|
Thomas Harte
|
47ae402f7e
|
Introduced a shorthand for setting up array attributes.
|
2016-05-10 19:11:48 -04:00 |
|
Thomas Harte
|
257420b0f7
|
Fixed potential output error if buffer top were hit; clarified buffer size constants.
|
2016-05-10 19:04:03 -04:00 |
|
Thomas Harte
|
309313c470
|
Update CRTConstants.hpp
Lack of data duplication means this storage can be smaller.
|
2016-05-10 10:49:48 -04:00 |
|
Thomas Harte
|
1d0bcb416d
|
Dropped the size per output run back down to 8 bytes.
|
2016-05-10 07:47:47 -04:00 |
|
Thomas Harte
|
b0f0315f12
|
Fixed: this now implements 12-byte instancing for output runs.
|
2016-05-10 07:30:12 -04:00 |
|
Thomas Harte
|
86dab3a5d6
|
Quickest first attempt to switch to instancing for the output array. Texture coordinates seem to be off.
|
2016-05-10 07:23:47 -04:00 |
|
Thomas Harte
|
daec21d3d8
|
Found and fixed off-by-one error. Display should now be completely fixed.
|
2016-05-09 21:14:59 -04:00 |
|
Thomas Harte
|
59d766b325
|
Rationalised buffer sizes.
|
2016-05-09 19:17:03 -04:00 |
|
Thomas Harte
|
7e2bd78891
|
With an eye towards instancing, moved away from circular buffers.
|
2016-05-09 19:14:30 -04:00 |
|
Thomas Harte
|
ad734f341f
|
Attempted fully to perfect memove , albeit that it's not affecting either current machine.
|
2016-05-09 07:44:05 -04:00 |
|
Thomas Harte
|
8eb058064c
|
Fixed: ensured that the attempt to plot a misplaced write occurs correctly.
|
2016-05-09 07:42:26 -04:00 |
|
Thomas Harte
|
e6a7161e87
|
Made some minor corrections on the copyback of misplaced write data.
|
2016-05-09 07:39:57 -04:00 |
|
Thomas Harte
|
45af963b9a
|
Moved more of the circular logic inside getCircularRanges in order to eliminate one more potential source of error.
|
2016-05-09 07:34:37 -04:00 |
|
Thomas Harte
|
cec9ad0dc6
|
Switched to a more rational interface, ensured output_level will work when eventually needed, and that neither it nor output_data attempts a recursive lock.
|
2016-05-09 07:02:12 -04:00 |
|
Thomas Harte
|
a82fa31370
|
Switched back to broad locking for CRT updates. To eliminate one more thing.
|
2016-05-09 06:58:26 -04:00 |
|
Thomas Harte
|
47302de23a
|
Switched to simpler storage for _image .
|
2016-05-08 21:11:56 -04:00 |
|
Thomas Harte
|
1f02c5df88
|
Tidied up some further loose ends.
|
2016-05-08 20:58:18 -04:00 |
|
Thomas Harte
|
7b5982e455
|
Removed last mentions of 'lateral'.
|
2016-05-08 20:51:28 -04:00 |
|
Thomas Harte
|
986019f9f9
|
Fixed error that could lead to split output run vertex writes.
|
2016-05-08 20:30:59 -04:00 |
|
Thomas Harte
|
1a214a8308
|
Fence sync tied up. Remaining glitches are likely off-by-one-type errors but we'll see.
|
2016-05-08 19:45:36 -04:00 |
|
Thomas Harte
|
ef3b91d3aa
|
Made an attempt to get formal on synchronisation.
|
2016-05-08 19:42:33 -04:00 |
|
Thomas Harte
|
dd469fe83a
|
Switched back to normal frame drawing logic and cleaned up the circular range stuff a little, to make it clear that no errors lie there.
|
2016-05-08 18:50:30 -04:00 |
|
Thomas Harte
|
ccdbec3ffc
|
Corrected for potential lost lines.
|
2016-05-08 16:43:11 -04:00 |
|
Thomas Harte
|
a75259ce9f
|
Removed some dead caveman debugging statements.
|
2016-05-08 16:18:42 -04:00 |
|
Thomas Harte
|
9b2061be98
|
Actually, that should probably be 1/outputTextureSize, as the output range is -1 to +1.
|
2016-05-08 16:09:39 -04:00 |
|
Thomas Harte
|
9485ef2c8c
|
At last a genuine bug fixed: was nudging the wrong amount in intermediate shaders.
|
2016-05-08 16:07:36 -04:00 |
|
Thomas Harte
|
8e4ab37719
|
Things are back pretty much to where they were, but offset is eliminated as an input.
|
2016-05-07 18:37:18 -04:00 |
|
Thomas Harte
|
c73751b15a
|
Reverted deliberately broken segments to produce something mergeable.
|
2016-05-05 21:27:13 -04:00 |
|
Thomas Harte
|
a74f081aa9
|
Put lateral lookup table directly into the shader.
|
2016-05-05 21:21:27 -04:00 |
|
Thomas Harte
|
8284b272ad
|
Picked appropriate new-world values for various buffers.
|
2016-05-05 20:00:28 -04:00 |
|
Thomas Harte
|
284b310074
|
Attempted to implement end-of-buffer tests for all stages.
|
2016-05-05 19:52:05 -04:00 |
|
Thomas Harte
|
e9a9cfb09f
|
Fixed off-by-one error on texture upload.
|
2016-05-05 07:22:49 -04:00 |
|
Thomas Harte
|
f621cc8523
|
Withdrew the pixel unpack buffer in order to avoid the potential for a paused machine to be undrawable. The cost is at least an extra memcpy per frame; I'm letting the driver worry about the whole process for now.
|
2016-05-04 21:27:10 -04:00 |
|
Thomas Harte
|
2e7ac0e6db
|
With a lot of logging also currently ongoing, fixed circular ranges for clearing and when covering an entire buffer.
|
2016-05-04 21:08:38 -04:00 |
|
Thomas Harte
|
87df57195d
|
Started on an attempt not to treat the various buffers as free to loop within, starting with the input texture.
|
2016-05-04 07:39:45 -04:00 |
|
Thomas Harte
|
3684c6404f
|
Proven through deliberate inefficiency: the issues are (i) texture upload; and (ii) buffer wraparound.
|
2016-05-03 22:22:12 -04:00 |
|
Thomas Harte
|
759fbd89ca
|
Switched pixel unpack buffer back to explicit flushes.
|
2016-05-03 21:26:09 -04:00 |
|
Thomas Harte
|
2541711061
|
Made attempts (i) to flush buffers before unmapping them; and (ii) to bring texture uploads within the new orthodoxy.
|
2016-05-03 20:56:47 -04:00 |
|
Thomas Harte
|
fc1a67c157
|
Lateral is no longer written per vertex. It's a fixed list.
|
2016-05-03 18:45:55 -04:00 |
|
Thomas Harte
|
535d272039
|
Tweaks here, tweaks there.
|
2016-05-03 18:15:24 -04:00 |
|
Thomas Harte
|
6d5a1b33ee
|
Turned the colour up just a little, slightly lowered luminance signal strength.
|
2016-05-03 07:51:14 -04:00 |
|
Thomas Harte
|
31f1e6d5c0
|
Introduced a separate stage for luminance filtering.
|
2016-05-03 07:46:40 -04:00 |
|
Thomas Harte
|
29e7c96e4c
|
Brought monitor mode inside the pipeline and added an intermediate filter.
|
2016-05-02 21:05:58 -04:00 |
|
Thomas Harte
|
4a0e1dc789
|
Switched to explicit flushing of data.
|
2016-05-01 22:33:00 -04:00 |
|
Thomas Harte
|
c93bcf9f28
|
Discovered cause of clears: stale code. Tweaked persistence, again.
|
2016-05-01 22:28:33 -04:00 |
|
Thomas Harte
|
09ed8eb654
|
Quelle surprise, failure to find strikes again. Fixed.
|
2016-05-01 21:07:27 -04:00 |
|
Thomas Harte
|
1b6754c5f8
|
Shuffled code, realised I wasn't actually binding my shader.
|
2016-05-01 19:22:24 -04:00 |
|
Thomas Harte
|
69984b54e5
|
Fixed aspect ratio storage. Adjusted indentation slightly.
|
2016-05-01 16:49:44 -04:00 |
|
Thomas Harte
|
6982e945fb
|
Fixed those issues breaking GL state, I hope.
|
2016-05-01 16:17:52 -04:00 |
|
Thomas Harte
|
4ec4cceb84
|
Made a first attempt at adding draw-as-a-quad functionality to texture targets.
|
2016-05-01 13:52:35 -04:00 |
|
Thomas Harte
|
2616d748fe
|
Introduced bind-if-necessary/unbind semantics for shaders.
|
2016-05-01 11:07:49 -04:00 |
|
Thomas Harte
|
fe2abbd4ed
|
Minor adjustments to ensure sampling occurs as intended.
|
2016-04-30 20:48:09 -04:00 |
|
Thomas Harte
|
16ef09fc2b
|
Made an attempt intelligently to use bilinear filtering to increase filtering quality with the same number of samples.
|
2016-04-29 18:37:35 -04:00 |
|
Thomas Harte
|
501ab74eaf
|
Fixed time multiplier calculation.
|
2016-04-28 22:12:59 -04:00 |
|
Thomas Harte
|
23ea832f41
|
Increased brightness in television mode, added a clear if screen resolution changes.
|
2016-04-28 22:04:47 -04:00 |
|
Thomas Harte
|
3638414b37
|
Added additional comments.
|
2016-04-28 21:55:14 -04:00 |
|
Thomas Harte
|
e6c3b148ac
|
Switched wholeheartedly to the new shader.
|
2016-04-28 21:45:44 -04:00 |
|
Thomas Harte
|
8538b62ea2
|
Made an attempt to extract and consolidate the logic behind the intermediate shaders.
|
2016-04-28 21:04:59 -04:00 |
|
Thomas Harte
|
ef3647f6cf
|
Being bold: per-scan timing isn't coming back, I think, so started completely removing it.
|
2016-04-27 23:00:43 -04:00 |
|
Thomas Harte
|
87c778ebb7
|
Fixed code use of parameter name.
|
2016-04-27 22:58:53 -04:00 |
|
Thomas Harte
|
494ef6a324
|
Updated documentation, taking the opportunity to improve a parameter name.
|
2016-04-27 22:57:40 -04:00 |
|
Thomas Harte
|
7c20fce467
|
I guess NumberOfFields is done for.
|
2016-04-27 22:48:37 -04:00 |
|
Thomas Harte
|
8849dc3265
|
Finished consolidation into OutputShader. With its documentation yet to update.
|
2016-04-27 22:41:32 -04:00 |
|
Thomas Harte
|
496d979aca
|
Made a decision to clean up by creating per-shader classes. Well, more or less. First thing to be factored out: the output shader.
|
2016-04-27 22:29:54 -04:00 |
|
Thomas Harte
|
f6d58f1ce7
|
Played in the margins with image retention.
|
2016-04-26 22:14:12 -04:00 |
|
Thomas Harte
|
416c944f02
|
Experimental: let's try accumulating history directly in the framebuffer.
|
2016-04-26 21:41:39 -04:00 |
|
Thomas Harte
|
6c567d166a
|
Fixed colour burst acceptance, switched to an integral single byte streaming of Atari colours.
|
2016-04-25 20:56:15 -04:00 |
|
Thomas Harte
|
9b64f64db7
|
Attempted to normalise some style decisions.`
|
2016-04-24 22:32:24 -04:00 |
|
Thomas Harte
|
884755c560
|
Ensured the GL context is available when switching Atari 2600 output, and that it locks the output.
|
2016-04-24 20:56:21 -04:00 |
|
Thomas Harte
|
2bd6566768
|
Oh, of course, I can use GL_CONSTANT_ALPHA so that new colours can be painted at alpha 1.0 while possibly saturating with old colours.
|
2016-04-24 20:47:24 -04:00 |
|
Thomas Harte
|
d221c712b0
|
Ensured GL context is active when destructing CRTOpenGL.
|
2016-04-24 20:34:25 -04:00 |
|
Thomas Harte
|
acab22d95a
|
Removed any improper talk of YUV. Switched to (cos, -sin) formulation of the quadrature vector, which I now believe to be correct.
|
2016-04-24 20:27:03 -04:00 |
|
Thomas Harte
|
d393776677
|
Fixed an incorrect sign.
|
2016-04-24 19:29:30 -04:00 |
|
Thomas Harte
|
9b2b7a09eb
|
Ensured that colour space changes take effect.
|
2016-04-24 19:16:23 -04:00 |
|
Thomas Harte
|
929cfc49cb
|
Extended window for picking output frequency, attempted to consolidate CRT OpenGL timing uniforms for approprate resetting.
|
2016-04-24 18:58:31 -04:00 |
|
Thomas Harte
|
082003ed0a
|
Reintroduced the CRT delegate and the 2600's automatic region switching. Albeit that the CRT itself doesn't adjust properly to new timings yet.
|
2016-04-24 18:36:22 -04:00 |
|
Thomas Harte
|
d0f9a6c2f5
|
Added a dump-the-input default RGB output shader. Which at least proves that the Atari 2600 is generally still working.
|
2016-04-24 17:35:25 -04:00 |
|
Thomas Harte
|
775fc270e6
|
Fixed bug whereby first frame drawn has random collection of data.
|
2016-04-24 07:00:22 -04:00 |
|
Thomas Harte
|
80a3169674
|
Started reviving the Atari 2600 emulation. Put new startup sequence into place.
|
2016-04-24 06:56:08 -04:00 |
|
Thomas Harte
|
bdaf4cee43
|
Switched to an in-framebuffer approach to phosphor decay, which might be acceptable now that every single pixel is being painted, re-emphasises luminance and stretched sampling period for the two FIR filters as well as decreasing the amount of signal that is retained, subjectively to improve output.
|
2016-04-24 06:16:41 -04:00 |
|
Thomas Harte
|
c123f3bf74
|
Fixed run extension, temporarily forced colour amplitude.
|
2016-04-23 14:16:49 -04:00 |
|
Thomas Harte
|
a4889074b8
|
Moved final colour space conversion out of the innermost loop.
|
2016-04-22 21:29:27 -04:00 |
|
Thomas Harte
|
8ff1f82008
|
Fixed accidental channel duplication.
|
2016-04-22 19:18:28 -04:00 |
|