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
3d6590af89
Throws out a little more OpenGL.
2020-08-09 22:11:31 -04:00
Thomas Harte
28d933d5d6
Does just enough to get 8-bit RGB and 1-bit luminance machines to display.
...
Assuming an 'RGB' output.
2020-08-09 21:19:07 -04:00
Thomas Harte
a118594c8b
Hacks to make RGB1 visible (in a fashion).
2020-08-09 20:45:51 -04:00
Thomas Harte
93c6105442
Corrects calculation of dirty texture area.
2020-08-09 20:45:14 -04:00
Thomas Harte
57fecdc09e
Ties everything together in an attempt to display RGB scans.
...
I'm actually just getting a mess of pixels, but it's something!
2020-08-09 18:41:15 -04:00
Thomas Harte
f16ad8f71d
Takes a shot at submitting texture changes.
2020-08-09 17:59:52 -04:00
Thomas Harte
e340685a99
Seemingly proves that proper geometry is reaching Metal by drawing scans.
...
No in-buffer accumulation yet, but this is progress. If I can add accumulation and stencil clearing, I'm not doing badly.
2020-08-08 23:11:44 -04:00
Thomas Harte
df89a8771c
Makes an attempt to have the emulator fill the actual GPU buffers.
...
Not that they're drawn from correctly yet. I might first take a run at a new quick-path output route for emulated RGB displays, that just seeks to use the scans directly. No intermediate buffers. Besides probably being a good feature, it'll be a good way to ramp further up with Metal.
2020-08-08 22:49:02 -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
edf41b06fd
Eliminates the quad buffer.
...
Vertices can be adduced from vertex ID.
2020-08-08 17:12:49 -04:00
Thomas Harte
38960a08d6
Adds adjustment for display aspect ratio.
...
While also realising that I appear to be getting away without an MTLVertexDescriptor for Scans. Maybe OpenGL has prejudiced me, and they're actually optional for interleaved data?
2020-08-07 22:29:24 -04:00
Thomas Harte
fbda7aab23
Does just enough to get the correct (aspect ratio aside) output of scan outlines.
...
So, up next, can I start streaming these things?
2020-08-07 22:20:01 -04:00
Thomas Harte
c575aa0640
Adds a buffer for scans, and posts two test instances.
2020-08-07 22:03:54 -04:00
Thomas Harte
4421acef34
Gets some uniforms in on the action.
...
With some effort towards scans, but incompletely so.
2020-08-07 21:19:17 -04:00
Thomas Harte
219923bd63
Reduces vertex size, draws a quad.
2020-08-05 21:33:25 -04:00
Thomas Harte
7551782a25
Switches to interleaved vertex data.
...
This more closely relates to what I actually want to do.
2020-08-05 17:27:43 -04:00
Thomas Harte
eff24a8726
My first baby steps in Metal continue; here's a triangle.
2020-08-04 21:49:01 -04:00
Thomas Harte
72df6e52cd
This is possibly at least dispatching an empty command buffer correctly.
2020-08-04 19:44:56 -04:00
Thomas Harte
e235a45abb
Breaks all output.
...
... by switching out NSOpenGLView for MKLView with no drawing infrastructure yet in place.
2020-08-04 18:22:14 -04:00
Thomas Harte
478d081095
Ensures machines take user-friendly default settings.
2020-06-23 23:27:56 -04:00
Thomas Harte
c5cad865d7
Tidies up: arranges initialisers into alphabetical order, shortens some enum references.
2020-06-18 23:34:28 -04:00
Thomas Harte
327b9051c8
Adds necessary layouts for Apple II type selection.
2020-06-18 20:30:50 -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
f417fa82a4
Splits 'CRTMachine' into three parts: ScanProducer, AudioProducer, TimedMachine.
...
Simultaneously cleans up some of the naming conventions and tries to make things a bit more template-compatible.
2020-04-01 23:19:34 -04:00
Thomas Harte
0e502f6d5c
Ensures the macOS version retains volume.
2020-03-23 00:10:56 -04:00
Thomas Harte
bd1b4b8a9f
Increases volume fade-out speed.
2020-03-22 21:13:55 -04:00
Thomas Harte
38d81c394f
Switches OSAtomics to stdatomics. The former were deprecated by macOS 10.12.
2020-03-22 21:11:04 -04:00
Thomas Harte
72103a4adb
Corrects execution cap for splitAndSync ticks.
2020-03-22 19:25:02 -04:00
Thomas Harte
e6bae261c4
Ensures volume controls appear for mouse-capture machines when not capturing.
2020-03-22 19:06:38 -04:00
Thomas Harte
5edb0c0ee7
Adds animated fade-out to volume control. Bumps macOS version to 10.12.2.
2020-03-22 18:45:24 -04:00
Thomas Harte
442ce403f9
It's a bit jarring, but ensures volume control shows and hides according to mouse cursor.
2020-03-22 16:25:07 -04:00
Thomas Harte
7398cb44e2
Adds a functioning volume control for macOS, it just doesn't know how to hide yet.
2020-03-22 13:24:23 -04:00
Thomas Harte
0c689e85a5
Use screen number for spotting screen changes.
...
NSScreen implements Swift Equatable but doesn't seem officially to implement -isEqual:.
2020-03-21 17:01:57 -04:00
Thomas Harte
5a1bae8a9c
Ensures proper NSScreen comparison, and no never-ending setupDisplayLink loop on exit.
2020-03-20 23:00:16 -04:00
Thomas Harte
9995d776de
Attempts to fix the macOS version, plus some implicit type conversions.
2020-03-18 23:29:09 -04:00
Thomas Harte
f9c8470b20
Ensure targets always nominate a machine.
2020-03-15 00:13:38 -04:00
Thomas Harte
3c70f056ed
Ensure race condition workaround is applied for all CVDisplayLinkStops.
...
This also centralises the workaround, the better for replacing it when I discover a safer alternative.
2020-03-11 22:09:36 -04:00
Thomas Harte
f08d500fd6
Attempts to factor out the latest keyboard logic and hook it in from SDL also.
2020-03-03 22:58:15 -05:00
Thomas Harte
1f41d9c5f5
Further improvement: if in physical mode, but pressing an unrecognised key, attempt to 'type' it.
2020-03-02 22:08:54 -05:00
Thomas Harte
575d0da4d1
Attempts better to describe options.
2020-03-01 21:31:40 -05:00
Thomas Harte
ed18092088
Extends logic for when to fall back on standard keypress logic even in logical mode.
2020-03-01 20:25:12 -05:00
Thomas Harte
560394fead
Ensures keys without symbols are forwarded.
2020-02-29 22:37:15 -05:00
Thomas Harte
32b2026734
Alters shortcut.
2020-02-29 20:01:21 -05:00
Thomas Harte
d5e781e8e1
Adds macOS UI option to use logical keyboard input.
2020-02-29 18:30:58 -05:00
Thomas Harte
4572c86f0f
Adds a third keyboard input mode, which maps to posting things as a typer.
2020-02-29 18:17:39 -05:00
Thomas Harte
91e7400bbb
Avoids double-setting of the OpenGL view.
2020-02-18 22:33:16 -05:00
Thomas Harte
a8d082c7d2
Makes audioQueue atomic to avoid potential data race.
2020-02-18 22:31:24 -05:00
Thomas Harte
43740a4b2f
Adds support for stereo output.
2020-02-16 14:14:10 -05:00
Thomas Harte
f99d672237
The macOS port now selects stereo output if appropriate.
2020-02-16 14:05:50 -05:00
Thomas Harte
49b8e771b5
Adds the messaging that would allow a Speaker to output stereo, semantically.
2020-02-15 13:40:19 -05:00
Thomas Harte
e1892ff370
Resolves crash upon File -> New..., Cancel; also ensures slow performance can't equal no progression.
2020-02-14 23:16:44 -05:00
Thomas Harte
109d072cb6
Avoids trying to paper over huge gaps in running time. Also attempts to improve SDL shutdown reliability.
2020-02-12 23:47:04 -05:00
Thomas Harte
0b0a7e241b
Factors out the stuff of time warping.
2020-02-09 22:11:06 -05:00
Thomas Harte
2ea1e059a8
Softens swings in emulated machine speed.
2020-02-09 16:34:13 -05:00
Thomas Harte
dac217c98c
Defers starting the macOS audio queue, and attempts to restart it upon packet loss.
...
Hopefully forever to vanish permanent audio loss?
2020-02-08 22:08:27 -05:00
Thomas Harte
c26c8992ae
Reintroduces joystick support; eliminates CSBestEffortUpdater.
2020-02-08 21:27:04 -05:00
Thomas Harte
b76a5870b3
Moves drawing into the next timer tick after retrace if sync locked.
...
... which should mean it occurs within 1/600th of a second of announced retrace, which I assume always will be less than the retrace period. So: does the frame buffer update during retrace.
This should completely eliminate tearing for machines that can be synced to the native output rate.
2020-02-08 18:07:13 -05:00
Thomas Harte
7c0f3bb237
Gets to slightly adjusting execution speed and matching up respective vertical syncs.
...
I probably still need to move the ->draw inline.
2020-02-08 18:01:48 -05:00
Thomas Harte
f615d096ca
Switch to obtaining refresh periods ephemerally.
...
Which simplifies the necessary delegate protocol.
2020-02-08 15:03:18 -05:00
Thomas Harte
09132306e4
Removes two temporary debugging steps.
2020-02-06 23:35:23 -05:00
Thomas Harte
f95b07efea
Continues edging towards raster racing and/or time warping.
2020-02-06 23:35:03 -05:00
Thomas Harte
14d976eecb
Starts towards an implementation of time warping.
2020-02-04 23:08:54 -05:00
Thomas Harte
e1cbad0b6d
Ensures new displayLinkDelegates get a nudge with the initial display link.
2020-02-04 23:08:25 -05:00
Thomas Harte
e7410b8ed8
Uses objective clock for updates.
2020-02-04 22:24:54 -05:00
Thomas Harte
01fd1b1a2e
Pulls out ticks as a macro constant.
...
For playing.
2020-02-03 22:44:39 -05:00
Thomas Harte
96769c52f6
Prevents an endless queue of backlogged updates.
2020-02-03 22:08:07 -05:00
Thomas Harte
cf9729c74f
Takes a first shot at running OpenGL work throughout a frame.
...
Rather than en masse at the end. But it seems I've been lazy with my threading. Work to do!
2020-02-03 21:58:29 -05:00
Thomas Harte
0f2783075f
Moves responsibility for timed updates to CSMachine, which gives the CSHighPrecisionTimer a shot.
2020-02-02 21:39:20 -05:00
Thomas Harte
256f4a6679
Fixes -invalidate: cancel the dispatch source, don't just suspend it, and wait until that is done.
2020-02-02 21:29:22 -05:00
Thomas Harte
4766ec55fe
Documents units.
2020-01-28 23:23:51 -05:00
Thomas Harte
7316a3aa88
Merge branch 'master' into FinalOverride
2020-01-26 23:42:25 -05:00
Thomas Harte
52e49439a6
Recreates display link upon a screen change.
...
Different screens may have different refresh rates, and I can find no guarantees about how Apple handles that.
2020-01-26 23:23:33 -05:00
Thomas Harte
6bcdd3177d
Ensures that a change of screen issues a reshape
. Just in case.
...
Thereby resolves display mis-sizing when dragging from a Retina display to a regular one, or vice versa.
2020-01-26 18:04:25 -05:00
Thomas Harte
294e09f275
All these 'override's can be 'final's.
...
At least for the purpose of being communicative. I doubt there's much to gain in terms of compiler output — the DiskImageHolder can avoid some virtual lookups but nothing else leaps out.
2020-01-23 22:57:51 -05:00
Thomas Harte
7bac439e95
Adds, and comments out, a useful temporary piece of debugging logging.
2020-01-23 22:14:22 -05:00
Thomas Harte
3c6a00dc3c
Breaks a potential deadlock.
2020-01-22 22:10:20 -05:00
Thomas Harte
3aa2c297a2
Adds feedback to the best-effort updater; enables the Cocoa port for audio event requests.
2020-01-20 17:38:25 -05:00
Thomas Harte
290db67f09
Adds a forward route for event flags. Doesn't yet account for extra time expended.
2020-01-20 17:09:01 -05:00
Thomas Harte
4de121142b
Adds a flags parameter to the BestEffortUpdater delegate.
...
On the Cocoa side, cuts Swift out of the update loop, as that seems merely to add code.
2020-01-20 16:21:53 -05:00
Thomas Harte
6a185a574a
Adds the BD-500 to the Mac GUI.
2020-01-15 23:56:56 -05:00
Thomas Harte
985b36da73
Starts towards STX support.
2020-01-07 23:21:32 -05:00
Thomas Harte
3ced31043a
Makes Jasmin autoboot optional, adds a Jasmin reset key, adds the Jasmin to File -> New... .
...
Also finally implements KeyNMI.
2020-01-05 21:57:33 -05:00
Thomas Harte
de43e86310
Permits Vic-20 memory to be specified in banks; adds recognition of TheC64-style file tags to specify them.
2019-12-26 22:49:48 -05:00
Thomas Harte
0dae608da5
Embraces std::make_[unique/shared] in place of .reset(new .
2019-12-23 21:31:46 -05:00
Thomas Harte
a847654ef2
Corrects various old-fashioned bits of indentation, plus the odd const.
2019-12-22 00:00:23 -05:00
Thomas Harte
05d77d3297
Also deploys make_unique/shared to avoid type repetition.
2019-12-21 23:52:04 -05:00
Thomas Harte
47508d50a7
Wires through a composite video option for the ST.
...
Which is great and all, except that I've not yet inserted a colour burst. So it's monochrome.
2019-12-20 20:49:14 -05:00
Thomas Harte
5ce612cb38
Adds the Atari ST to File -> New in Cocoa world.
2019-12-17 23:04:12 -05:00
Thomas Harte
2c4f372872
Adds support for the .ST file format.
2019-11-12 23:23:14 -05:00
Thomas Harte
2c25135d8a
Fixes const correctness for joystick machines; the ST is now one such.
2019-11-09 18:19:05 -05:00
Thomas Harte
860837d894
Corrects: KeyPad -> Keypad. Also fleshes out Atari ST keyboard mapping.
2019-11-09 18:02:14 -05:00
Thomas Harte
345b32d6e3
Implements read-only MSA support.
2019-10-20 20:38:54 -04:00
Thomas Harte
8b397626bf
Adds a route through the static analyser to the Atari ST.
2019-10-20 20:38:54 -04:00
Thomas Harte
c089d1cd09
Improves text; nobody normal knows that this is "a view".
2019-09-24 22:52:08 -04:00
Thomas Harte
6adca98f34
Adds Macintosh choice to File -> New...
2019-09-24 22:48:34 -04:00
Thomas Harte
7112f0336c
Rationalises protocol for application-level event theft.
2019-09-24 22:31:20 -04:00
Thomas Harte
7ff4594f09
Eliminates fast loading Objective-C/Swift protocol.
...
A very long time ago, when each machine had its own Objective-C class, this protocol was used to indicate which machines support that feature. It no longer communicates anything.
2019-09-24 20:13:09 -04:00
Thomas Harte
8489e8650f
Attempts another draft of not inundating the user with open file dialogues.
2019-09-22 13:59:31 -04:00
Thomas Harte
114f81941e
Completes the wiring necessary for capture of the command key.
...
At least when coupled with mouse capture.
2019-09-22 13:53:38 -04:00
Thomas Harte
8f88addf9f
Establishes an interface for requesting shortcut theft. Not yet implemented.
2019-09-22 13:15:35 -04:00
Thomas Harte
f28c124039
Adds a route to divert key events before they reach Cocoa.
...
If you were to use this, it would have the effect of disabling in-app keyboard short-cuts in favour of routing keys to the emulated machine.
2019-09-22 13:15:01 -04:00
Thomas Harte
8a14f5d814
Updates to Xcode11 recommended project settings.
...
The updated compiler also flagged a potential issue with CPU::Z80::Register not being a namespace re: 'Refresh' versus CPU::Z80::PartialMachineCycle. I don't entirely see it, but this fixes the problem.
I also finally figured out what the compiler was trying to tell me about ROMRequester.xib.
2019-09-22 12:13:56 -04:00
Thomas Harte
3e639e96e7
Shows the auto-open dialogue only at most once.
2019-09-21 18:01:16 -04:00
Thomas Harte
8ea4c17315
Completes Mac GUI wiring.
2019-09-19 22:37:23 -04:00
Thomas Harte
2e24da4614
Implements quick booting, and edges towards exposing it on the Mac.
...
It should already work in kiosk mode.
2019-09-19 22:32:12 -04:00
C.W. Betts
4c5f596533
Update CSMachine.mm
...
No need to create a temporary NSNumber object to be passed to a variadic method.
2019-08-10 00:43:30 -06:00
Thomas Harte
b6e4c8209b
Switches to showing 'File -> Open...' at launch.
...
As per the prevailing wind.
2019-08-04 21:34:30 -04:00
Thomas Harte
e08a64d455
Fixes erroneous instruction.
2019-08-02 21:04:53 -04:00
Thomas Harte
f45de5b87a
Adds how-to-release-the-mouse instructions for Cocoa.
2019-08-02 17:07:51 -04:00
Thomas Harte
97eff5b16d
Formally distinguishes Macintosh keys from virtual keys.
...
Also: adds mappings for keypad keys, and corrects a couple of
long-standing capitalisation errors in my virtual key set.
2019-08-02 16:15:34 -04:00
Thomas Harte
f64ec11668
Tidies up and simplifies panel flow.
2019-08-01 14:31:45 -04:00
Thomas Harte
c41cccd9a6
Adds a workaround to display the ROM import banner even from File -> Open... .
2019-07-30 13:07:33 -04:00
Thomas Harte
3da47318b1
Updates copyright year.
2019-07-23 18:03:37 -04:00
Thomas Harte
374cac0107
Adds negative feedback to ROM installation process.
...
As an ugly kludge, code wise.
2019-07-23 16:24:23 -04:00
Thomas Harte
4d361b1952
Adds MIME type for Apple-recognised disk images.
2019-07-23 11:36:47 -04:00
Thomas Harte
a3ad0ab09b
Completes the successful import path.
2019-07-22 21:46:28 -04:00
Thomas Harte
ed0c4c117b
Ensures that machine name reaches Swift.
2019-07-22 21:18:30 -04:00
Thomas Harte
2432151bf8
Puts machine name into ROMMachine::ROM.
...
Also switches to idiomatic exit codes.
2019-07-22 21:14:21 -04:00
Thomas Harte
2129bfc570
Gets as far as testing ROMs against the missing list.
...
Though now it strikes me that I've forgotten to retain the machine name.
2019-07-22 18:02:48 -04:00
Thomas Harte
8de6cd3f44
Ensures that ROM files can be dragged and dropped into Swift.
...
Also adjusts the main window background colour, better to bridge the time between selecting a machine and it starting.
2019-07-22 17:18:31 -04:00
Thomas Harte
9b9831f28b
The Mac port will now at least display a list of missing ROMs.
...
It doesn't yet offer the drag-and-drop functionality it promises, however.
2019-07-22 13:00:17 -04:00
Thomas Harte
8a2cac0d0c
Fixes layout constraints.
2019-07-22 11:30:26 -04:00
Thomas Harte
e17b105574
Adds a quick label in exposition.
2019-07-22 11:18:39 -04:00
Thomas Harte
67c5f6b7cb
Ensures the missing ROM list bubbles up to Swift.
2019-07-21 22:05:22 -04:00
Thomas Harte
d452d070a1
Extends the Mac ROM fetcher to return a missing-ROMs list.
2019-07-21 18:41:00 -04:00
Thomas Harte
a846c3245d
Checks the application support directory before the application bundle for ROM images.
2019-07-20 23:04:46 -04:00
Thomas Harte
20670bab2f
Expands information included in ROM load requests.
2019-07-19 22:35:22 -04:00
Thomas Harte
cfad20bb33
Surfaces missing Macintosh types.
2019-07-17 16:02:25 -04:00
Thomas Harte
bcbda4d855
Adds .image as a synonym of .img.
2019-07-16 21:44:59 -04:00
Thomas Harte
9f0cde3d69
Improves mouse capture behaviour.
2019-07-11 22:56:08 -04:00
Thomas Harte
2651b15db1
Takes a first stab at mouse input support from SDL.
...
There seems to be something odd going on with mouse buttons though; I'm going to test elsewhere.
2019-07-08 17:36:55 -04:00
Thomas Harte
387be4a0a6
Ensures mouse button presses propagate correctly.
...
Beyond the one that initiates mouse capture, that is.
2019-07-02 16:57:51 -04:00
Thomas Harte
39aae34323
Avoids multiple calls to -[NSCursor hide] and -unhide.
...
Those are reference counted.
2019-06-13 13:39:35 -04:00
Thomas Harte
d6150645c0
By hook or by crook, mouse input now works.
2019-06-12 22:19:25 -04:00
Thomas Harte
109953ef49
Ensures proper routing of mouse events from Cocoa.
2019-06-11 18:41:41 -04:00
Thomas Harte
124c7bcbb0
Makes the Macintosh a mouse machine, and makes mouse machines detectable.
2019-06-11 18:21:56 -04:00
Thomas Harte
567feaac10
Adds a proper shout out for releasing the mouse.
2019-06-11 16:35:04 -04:00
Thomas Harte
15c38e2f15
Adds the option for mouse capture.
2019-06-11 16:30:53 -04:00
Thomas Harte
85298319fa
Expands towards supporting multiple Macintosh models.
...
To provide another variable to help with bug isolation.
2019-06-03 14:50:36 -04:00
Thomas Harte
881feb1bd3
Adds preliminary parsing of the Disk Copy 4.2 format.
2019-06-02 13:39:25 -04:00
Thomas Harte
6873f62ad8
Ensures that the Mac now retains its ROM properly.
2019-05-03 22:39:09 -04:00
Thomas Harte
5f385e15f6
Adds the bare bones necessary to be able to create a Macintosh from File -> New... .
2019-05-03 22:16:07 -04:00
Thomas Harte
7f5c637aeb
Updates to Swift 5.
2019-03-26 22:15:38 -04:00
Thomas Harte
69a2a133d5
Performs basic migration to Xcode 10.2 — project settings, the one new warning, etc.
2019-03-26 19:47:41 -04:00
Thomas Harte
dc464a0b7b
Introduces a wrapper class for high-precision timers.
2019-03-07 22:04:29 -05:00
Thomas Harte
42997dcb80
Switches brace style, to bring this into line with other source files.
2019-03-06 21:54:21 -05:00