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
|
2203499215
|
Enables -Wreorder and corrects a few of the more trivial fixes thereby suggested.
|
2017-11-09 22:14:22 -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
|
512e877d06
|
Ensures proper initialisation of the delegate pointer.
|
2017-11-05 20:11:18 -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
|
c13f8e5390
|
Corrects a couple of cast conversion errors.
|
2017-10-21 22:42:19 -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
|
131b340d75
|
Dodges a lambda copy.
|
2017-08-22 21:55:10 -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
|
633d8965e2
|
Removed accidental logging commit.
|
2017-08-02 07:38:14 -04:00 |
|
Thomas Harte
|
bda9441620
|
Made an attempt to clock the AY.
|
2017-08-02 07:20:59 -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
|
4abd62e62b
|
Standardises on const [Half]Cycles as the thing called and returned, rather than const [Half]Cycles & as it's explicitly defined to be only one int in size, so using a reference is overly weighty.
|
2017-07-27 22:05:29 -04:00 |
|
Thomas Harte
|
8361756dc4
|
Switched definitively to the works-for-now approach of requiring an explicit opt-in where somebody wants to clock a whole-cycle receiver from a half-cycle clock.
|
2017-07-27 07:40:02 -04:00 |
|
Thomas Harte
|
75d67ee770
|
Relocated ClockReceiver.hpp as it's a dependency for parts of the static analyser, and therefore needs to be distinct from the actual emulation parts.
|
2017-07-25 20:20:55 -04:00 |
|
Thomas Harte
|
b7f88e8f61
|
Filter is now a ClockReciever , affecting all sound output devices.
|
2017-07-24 21:29:13 -04:00 |
|
Thomas Harte
|
92d1dd9a4a
|
Attempts to eliminate all remaining type variations.
|
2017-07-21 21:54:05 -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
|
279f4760d7
|
Eliminated buffer_size_ as something explicitly stored, and reduced size of delegate call out.
|
2017-07-16 15:01:39 -04:00 |
|
Thomas Harte
|
f931cd582d
|
Switched to use of std::vector in those few remaining places where I was still using a unique_ptr to a native type and new ing for myself. So, some of my earliest bits of code.
|
2017-07-16 13:54:07 -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 |
|
Thomas Harte
|
ab1374f801
|
Added an assert on an assumed buffer size alignment.
|
2017-07-06 21:46:24 -04:00 |
|
Thomas Harte
|
344d267fd2
|
Introduced sharper chrominance for genuinely black-and-white signals.
|
2017-07-06 21:38:33 -04:00 |
|
Thomas Harte
|
4211389ac7
|
Connected machine-supplied colour burst amplitude to shader, discarding hard-coded value. Net effect: the colour component is now discarded for the ZX80 and 81.
|
2017-07-06 21:29:08 -04:00 |
|
Thomas Harte
|
c6d00ec7d1
|
Switched phase and amplitude varying to a 3d vector; the third component is 1/amplitude if amplitude is non-zero, and zero otherwise. So you can multiply by that to get chrominance, rather than dividing by amplitude. With the direct effect that detected chrominance should automatically be zero if the colour burst didn't exist (i.e. had zero amplitude).
|
2017-07-06 21:25:38 -04:00 |
|
Thomas Harte
|
a5075d9eb5
|
Formalised the reasoning behind the colour phase fix-up and made it an opt-in per-caller value. Only the Oric currently needs to opt in.
|
2017-05-16 20:31:39 -04:00 |
|
Thomas Harte
|
c2b5a9bb1f
|
Minor fix: given that phase is now a function of position, stop nudging position.
|
2017-05-13 21:50:48 -04:00 |
|
Thomas Harte
|
b14c892740
|
Switched to a safer RAII approach to this lock.
|
2017-05-10 21:29:39 -04:00 |
|
Thomas Harte
|
e01f3f06c8
|
Completed curly bracket movement.
|
2017-03-26 14:34:47 -04:00 |
|
Thomas Harte
|
e63229a5e5
|
Pulled vertical sync detection entirely outside the loop, and gave it greater perspective.
|
2017-03-06 19:15:33 -05:00 |
|
Thomas Harte
|
ad73379d1c
|
Took vertical sync detection logic entirely out of the loop.
|
2017-03-05 20:17:55 -05:00 |
|
Thomas Harte
|
4751615623
|
Fixed NTSC colour cycle count, and hence the 2600's reported line lengths and phase offset.
|
2017-03-04 17:31:39 -05:00 |
|
Thomas Harte
|
a3fcd15980
|
Loosened sync charge level requirement.
|
2017-03-01 22:16:56 -05:00 |
|
Thomas Harte
|
026b418b4a
|
Ensured filtered 1:1 audio resampling is applied.
|
2017-02-28 21:27:38 -05:00 |
|
Thomas Harte
|
d19f26887d
|
Performed a very naive shuffling of output builder sets onto the OpenGL queue. Which makes the frequency switcher work properly from it's possibly-contextless thread.
|
2017-02-20 10:39:31 -05:00 |
|
Thomas Harte
|
6cb95b4fc5
|
Switched to passing around std::string s rather than char * s, because they should be easier to capture.
|
2017-02-20 10:35:33 -05:00 |
|
Thomas Harte
|
d979a822ac
|
Introduced a deferred task list for the OpenGL thread.
|
2017-02-19 21:46:07 -05:00 |
|
Thomas Harte
|
fccdce65b9
|
Switched to lock guards.
|
2017-02-19 21:45:28 -05:00 |
|
Thomas Harte
|
97cdfea9e9
|
Resolved spurious static analyser complaint: input_size and output_size aren't supposed to have defined values if input or output is null. But whatever.
|
2017-02-11 13:36:09 -05:00 |
|
Thomas Harte
|
fcf8cafb5d
|
Sought to ensure that communicating a colour burst in multiple parts doesn't ruin the phase.
|
2017-02-06 18:27:44 -05:00 |
|
Thomas Harte
|
23f3ccd77a
|
Made a further attempt to prevent overwrites.
|
2017-02-05 17:47:34 -05:00 |
|
Thomas Harte
|
ebde955356
|
This needs to be a memmove as the areas may overlap.
|
2017-01-29 16:12:48 -05:00 |
|
Thomas Harte
|
7fd02e7f4c
|
Added an extra flag to avoid potential race condition on is_full_, being reset from the background despite a write area not having been allocated.
|
2017-01-29 16:11:29 -05:00 |
|
Thomas Harte
|
c2d7e36c8f
|
Ensured logic for whether composite output is in use is consistent.
|
2017-01-25 21:25:03 -05:00 |
|
Thomas Harte
|
4d6e78e641
|
Reinstated temporary Oric-related fix.
|
2017-01-24 22:16:15 -05:00 |
|
Thomas Harte
|
5761c8267b
|
[Re-]Eliminated connection between colour subcarrier frequency and monitor output mode.
|
2017-01-24 20:48:54 -05:00 |
|
Thomas Harte
|
b4159295f6
|
Switched to using quads for intermediate draws. The specific concern is the flexibility offered in the GL spec as to line drawing algorithms. And even if a driver implements exactly to spec then it should omit the final pixel.
|
2017-01-11 21:18:41 -05:00 |
|
Thomas Harte
|
d0a93409e6
|
Made an attempt to simplify in-shader phase calculation, now that output position is a direct multiple of phase.
|
2017-01-11 08:18:00 -05:00 |
|
Thomas Harte
|
4c3669f210
|
Reduced precision of input phase, but I'm not necessarily persuaded by it as a move. However it's clear that something is off in that whole area. But if phase is locked by output position, do I need to retain this level of complexity? Also ensured that intermediate buffers prior to the final are sampled using the nearest sampling mode, also to reduce precision errors.
|
2017-01-10 22:08:07 -05:00 |
|
Thomas Harte
|
eeb646868b
|
Switched off filtering, at least temporarily, to try to ensure that sampling is all where it should be.
|
2017-01-08 19:53:08 -05:00 |
|
Thomas Harte
|
3d789732a2
|
Switched back to full buffer clearing. Until I can figure out the source of noise.
|
2017-01-08 19:50:31 -05:00 |
|
Thomas Harte
|
d2a7d39749
|
Ensured the output lock isn't held while talking to the delegate.
|
2017-01-08 19:49:21 -05:00 |
|
Thomas Harte
|
9521718120
|
Colour phase is multiplied by 255, not 256.
|
2017-01-08 17:21:26 -05:00 |
|
Thomas Harte
|
28909e33ca
|
Eliminated phaseCyclesPerTick as implied.
|
2017-01-08 16:48:02 -05:00 |
|
Thomas Harte
|
79632b1d34
|
Instituted de-escalating phase-related extensions, definitively to kill rounding error edges.
|
2017-01-08 16:24:22 -05:00 |
|
Thomas Harte
|
7ad64ff16b
|
Made further efforts to support throughput via memory barrier.
|
2017-01-08 14:47:16 -05:00 |
|
Thomas Harte
|
be48c950b4
|
Started taking steps towards using a texture barrier where possible to reduce all of my framebuffer binds. Some output appears, but it's not correct.
|
2017-01-08 11:13:20 -05:00 |
|