Thomas Harte
51ed3f2ed0
Reduce modal-related thread hopping.
2022-07-09 13:03:45 -04:00
Thomas Harte
887ab705d1
Add missing <cassert>.
2021-12-02 13:00:25 -05:00
Thomas Harte
ff6ddaed2e
Full scale is 65536.
2021-12-02 12:55:11 -05:00
Thomas Harte
3a26f6b8bf
Ensure full buffer provision.
2021-12-02 12:52:43 -05:00
Thomas Harte
6f6e09d200
Correct: load
-> store
.
2021-11-22 15:18:12 -05:00
Thomas Harte
24e2fd4184
Avoid implicit conversion.
2021-11-22 11:28:02 -05:00
Thomas Harte
1aada996dc
Correct const
ing.
2021-11-22 11:18:17 -05:00
Thomas Harte
f5d3d6bcea
Splits the lowpass filter into push and pull variants.
2021-11-21 15:37:29 -05:00
Thomas Harte
986c4006a6
Corrected: PAL machines can now be overt in terms of odd/even colour burst.
2021-03-20 23:45:49 -04:00
Thomas Harte
091bce9350
Merge branch 'master' into AppleIIgs
2020-11-29 00:09:20 -05:00
Thomas Harte
5ee9630624
Use compositeAmplitude
in favour of its reciprocal.
2020-11-28 19:53:34 -05:00
Thomas Harte
1b3836eb1c
Adds an overt branch for mono/colour composite selection.
2020-11-28 19:47:04 -05:00
Thomas Harte
33dec3c220
Given that lineCompositeAmplitude
is not normalised, ups threshold.
2020-11-28 17:19:28 -05:00
Thomas Harte
0b4b271e3d
Pulls out redundant check.
2020-11-27 21:04:20 -05:00
Thomas Harte
73d28838c0
Slightly rebalances template.
...
More clearly to ensure the lock_guard stays in the correct place.
2020-11-26 13:08:40 -05:00
Thomas Harte
c6c12209e8
Corrects end_data
thread safety; permits caller not to have reached new_modals
before a machine starts trying to push data.
2020-11-25 23:32:37 -05:00
Thomas Harte
dd816c5a0a
Restore valid buffering.
2020-11-21 22:55:54 -05:00
Thomas Harte
8a805b6ba1
Ensures that get_average_output_peak() returns something sensible even before a set_relative_volumes.
2020-11-21 22:52:57 -05:00
Thomas Harte
3cc89cb4d2
Seeks to avoid false assert failures.
2020-11-21 22:52:19 -05:00
Thomas Harte
c7ab3d4075
Reduces cost of bookending video data.
2020-11-18 17:32:11 -05:00
Thomas Harte
96e79301f3
Clamps 16-bit positioning values.
2020-11-15 19:14:57 -05:00
Thomas Harte
5698aa6499
Corrects colour mapping and improves documentation for self.
2020-11-11 20:41:30 -05:00
Thomas Harte
894269aa06
Allows for permitted 1/32nd timing error in time_multiplier_
.
2020-09-17 18:12:21 -04:00
Thomas Harte
f783ec6269
Since input and output are floating point, using an integer Stepper is not appropriate.
2020-09-16 18:53:44 -04:00
Thomas Harte
a17d0e428f
Protects against some further uninitialised values.
2020-09-16 18:15:57 -04:00
Thomas Harte
b1aefbfe85
Separates asserts.
2020-09-15 23:24:06 -04:00
Thomas Harte
69d21daaa3
Improves commentary.
2020-09-15 22:21:05 -04:00
Thomas Harte
b831b31382
Adds a further sanity check.
2020-09-15 17:04:04 -04:00
Thomas Harte
2fd5cc056c
Adds std::atomic_thread_fences, but these seem not to be a magic bullet.
2020-09-15 16:34:34 -04:00
Thomas Harte
eb9903cd10
Defensively disables allocation of anything outside of visible lines.
2020-09-14 22:29:05 -04:00
Thomas Harte
227e98d6d7
Slightly simplifies control flow.
2020-09-14 22:27:25 -04:00
Thomas Harte
35476063b7
Resolves potential data races.
2020-09-14 21:07:50 -04:00
Thomas Harte
c5e9a74c88
Uses DisplayMetrics to disable supersampling when too slow.
2020-09-13 21:07:59 -04:00
Thomas Harte
7dd4c67304
Corrects access to data_type_size
, adds sanity check on output area return.
2020-09-13 18:59:27 -04:00
Thomas Harte
6ef1dfd8be
Sets a more realistic colour subcarrier amplitude.
2020-09-02 15:52:05 -04:00
Thomas Harte
7e58648743
Corrects front-running bug, plays further with colour amplitude.
2020-09-02 15:51:48 -04:00
Thomas Harte
c40d858f02
Switches back to angular stuff at input resolution; ensures all S-Video modes work.
...
Now to roll back onto composite. Fingers crossed!
2020-08-29 20:54:46 -04:00
Thomas Harte
807cb99f6d
Composite angles are signed.
2020-08-23 21:39:04 -04:00
Thomas Harte
8b6879a782
Brief detour: introduces myself to C++11 multiline string literals.
...
A full cleaning coming soon, I imagine.
2020-08-23 21:18:38 -04:00
Thomas Harte
246b474a25
Removes ONE_BIG_LOCK, having effectively neutered it anyway.
...
Starts work on more explicit API usage validation. Maybe the issue isn't a race condition?
2020-08-16 22:09:25 -04:00
Thomas Harte
745797b596
Introduces a stencil buffer plus the inter-frame clearing it allows.
2020-08-16 16:42:32 -04:00
Thomas Harte
940e9e037e
Adds first_scan
to LineMetadata.
...
Also reorders `Line` fields to match `Scan` fields, just for visual consistency.
2020-08-16 08:59:37 -04:00
Thomas Harte
230b9fc9e6
Permits multiple simultaneous scan reading ranges.
...
Also updates the OpenGL scan target as per the latest movements of things.
2020-08-12 22:08:41 -04:00
Thomas Harte
637ec35d6a
Adds getters for standard colour-space conversion matrices.
...
These are just more details on the meaning of the colour spaces, so I think they belong here.
2020-08-11 19:58:57 -04:00
Thomas Harte
8fa89baf54
Slightly cleans up Xcode project; reenables kiosk-for-Mac builds.
2020-08-10 21:43:32 -04:00
Thomas Harte
8374a5e579
Adds superficially correct compositeSampleLuminance8Phase8
function.
...
Thereby uncovering a minor error in my decoding of colour phase.
2020-08-10 21:33:59 -04:00
Thomas Harte
525233e10b
Ensures all input data types are parseable in Metal.
...
Though now I need to think a bit more about the best way to compose signal-type conversions, and whether output-type calculations (i.e. gamma, brightness) are applied.
2020-08-10 19:47:47 -04:00
Thomas Harte
eadda6a967
Further strips OpenGL from the macOS target.
2020-08-09 22:17:27 -04:00
Thomas Harte
c1dc42a094
Add comment on latent design aim.
...
In the hope that I don't forget why I did this.
2020-08-09 21:18:23 -04:00
Thomas Harte
6384ff3ee7
Add fix for data_type_size_
for owners that don't change texture pointer upon new modals.
2020-08-09 21:17:51 -04:00
Thomas Harte
ced4a75a1a
Adds note on the buffering scan target's minor adaptation of data_offset.
2020-08-09 20:44:46 -04:00
Thomas Harte
bdcf266e45
Having learnt a bit more: eliminates Metal attribute
tags, switches to more natural expression of structs.
...
Also thereby eliminates the need for a forced alignas(4) on various structs.
2020-08-08 17:27:32 -04:00
Thomas Harte
583f6b1ba2
Modifies BufferingScanTarget to allow has-a relationship.
...
I might switch fully to has-a. Further consideration required.
2020-08-07 22:03:27 -04:00
Thomas Harte
4c9418f59a
Guarantees alignof(4) on all GPU-bound structures.
...
Taken as given: Metal's requirement here is reasonable enough that it'll either be the same as other frameworks, or at least possibly help them down a fast path.
2020-08-07 21:18:08 -04:00
Thomas Harte
7b1708f0bc
Gets explicit that the delegate_
doesn't need a memory barrier.
2020-07-31 18:21:47 -04:00
Thomas Harte
c0a61ac1ee
Ensures proper handover of speaker state when picking in a multimachine.
2020-07-30 22:50:32 -04:00
Thomas Harte
6bc66d8b96
Tidies, ensures ::will_change_owner acquires the producer mutex.
2020-07-29 23:18:03 -04:00
Thomas Harte
23f381f381
Fixes frame_is_complete_
, gets rid of active_line_
, explains ONE_BIG_LOCK
in set_write_area
.
2020-07-29 23:03:38 -04:00
Thomas Harte
51ad423eca
Resolves off-by-one error in line writing, adds diagnostic one-big-lock option.
2020-07-29 22:45:13 -04:00
Thomas Harte
72a8fef989
Switches to much more straightforward Line/LineMetadata storage.
...
Spoiler: covering this whole segment behind producer_mutex_ seems to resolve all output issues, so clearly the existing logic isn't functioning correctly. Making it simpler seems like a pretty obvious way to get to the bottom of that.
2020-07-29 21:49:17 -04:00
Thomas Harte
02f41ee513
This has become the general producer mutex, might as well name it as such.
2020-07-29 21:34:07 -04:00
Thomas Harte
5165e65021
Reduces scan_buffer_ to a saner size.
...
Albeit still probably overspecified.
2020-07-28 22:36:57 -04:00
Thomas Harte
b7760bb052
Reorders code, gets explicit about memory ordering.
2020-07-28 22:02:22 -04:00
Thomas Harte
2470055d90
Hides the modals.
2020-07-27 23:33:39 -04:00
Thomas Harte
77c5b86acc
Moves ownership of the scan and line buffers out of the BufferingScanTarget.
2020-07-26 22:46:03 -04:00
Thomas Harte
bc6426313e
Localises three of the four macros.
2020-07-26 17:54:33 -04:00
Thomas Harte
8bef7ff4c5
Makes all three PointerSet
s and is_updating_
private.
2020-07-26 17:27:19 -04:00
Thomas Harte
89acb70091
Slightly reorganise.
2020-07-24 16:20:20 -04:00
Thomas Harte
66165a6dea
Add missing include files.
2020-07-23 23:24:24 -04:00
Thomas Harte
ee1d7eb61f
Makes more buffer-specific stuff private.
2020-07-23 23:06:14 -04:00
Thomas Harte
e260f92988
Privatises write_pointers_mutex_
and write_pointers_
.
...
Also gives subclasses control over write-area texture space allocation.
2020-07-23 22:54:40 -04:00
Thomas Harte
74788ccf8e
Pulls the BufferingScanTarget into a separate file.
2020-07-22 22:16:47 -04:00
Thomas Harte
0da5c07942
Starts splitting ring-buffer stuff from OpenGL stuff.
...
Initially via two very codependent classes.
2020-07-21 22:49:46 -04:00
Thomas Harte
2230ac6c38
Merge pull request #800 from TomHarte/QtProject
...
UNREADY. Adds a provisional Qt target.
2020-07-06 22:33:39 -04:00
Thomas Harte
7431d56166
Ensures is_in_retrace is properly initialised.
2020-06-19 23:09:02 -04:00
Thomas Harte
495024d6fe
Cleans up all redundant lock/unique_guard declarations.
2020-06-15 00:24:10 -04:00
Thomas Harte
530ff7471d
Adds a virtual destructor, given how these things might be held.
2020-06-14 21:14:51 -04:00
Thomas Harte
73131735fa
Further qmake warning corrections.
2020-05-30 19:31:17 -04:00
Thomas Harte
48afc54af6
Cuts down unused parameter warnings to just a few that may well indicate implementation errors.
2020-05-30 01:06:43 -04:00
Thomas Harte
267006782f
Starts to add Qt target; resolves many build warnings.
2020-05-30 00:37:06 -04:00
Thomas Harte
ecb44711d1
Add glext.h.
2020-05-27 21:20:43 -04:00
Melissa Goad
603b747ac5
Fix Windows MSYS2 build (mostly)
2020-05-27 18:09:56 -05:00
Thomas Harte
512a52e88d
Increases const correctness, marks some additional constructors as constexpr, switches std::atomic construction style.
2020-05-20 23:34:26 -04:00
Thomas Harte
66c2eb0414
Further tightens const
and constexpr
usage.
2020-05-12 22:22:21 -04:00
Thomas Harte
c41028cdc7
Adds further exposition.
2020-05-10 00:44:03 -04:00
Thomas Harte
25996ce180
Further doubles down on construction syntax for type conversions.
2020-05-09 23:00:39 -04:00
Thomas Harte
31c6faf3c8
Adds a bunch of const
s.
2020-05-09 21:23:52 -04:00
Thomas Harte
eed357abb4
Introduces concept of 'average peak volume' in order better to normalise audio sources like the OPLL.
2020-05-09 17:57:21 -04:00
Thomas Harte
b0abc4f7bb
Implements enough wiring that the Master System will instantiate and talk to an OPLL.
2020-04-03 20:05:36 -04:00
Thomas Harte
9087bb9b08
Allows audio volume to be set.
2020-03-21 22:00:47 -04:00
Thomas Harte
394ee61c78
Starts a switch to reflectable-style runtime options.
...
The Amstrad CPC and ZX80/81 have made the jump so far, subject to caveats. The macOS build is unlikely currently to work properly.
2020-03-16 23:25:05 -04:00
Thomas Harte
fa933952f7
Throws in additional asserts, so far without uncovering anything.
2020-02-19 23:14:18 -05:00
Thomas Harte
3715e6b48a
Resolves potential data race on write_area_texture_.
2020-02-18 22:41:46 -05:00
Thomas Harte
95756f9716
Resolves data race on write_pointers_ close to machine setup.
2020-02-18 20:41:51 -05:00
Thomas Harte
a5e1765ce4
Eliminates potential race conditions on validity of delegate_
.
2020-02-18 20:33:31 -05:00
Thomas Harte
1e4356f83a
Adds a sensible is_stereo to the MultiSpeaker.
2020-02-16 18:50:34 -05:00
Thomas Harte
545a6177bb
Makes CompoundSource mono/stereo-aware.
2020-02-16 18:45:36 -05:00
Thomas Harte
50d356be2f
Ensures all audio sources, including compound sources, announce whether they're stereo correctly.
2020-02-16 18:31:45 -05:00
Thomas Harte
9835e800ec
Fixed: individual audio generators now either are or are not stereo. The speaker acts accordingly.
2020-02-16 18:28:03 -05:00
Thomas Harte
90856a0e7a
Adds mixdown/up capability to Speaker.
...
To deal with occasions when the host machine just always is either mono or stereo, and the emulated machine must cope.
2020-02-16 13:50:18 -05:00