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
f99d672237
The macOS port now selects stereo output if appropriate.
2020-02-16 14:05:50 -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
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
fbe479c43f
Switch to saving screenshots to the desktop.
...
Or, at least, try. User permission would be required. More reading necessary.
2020-01-26 17:36:16 -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
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
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
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
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
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
374cac0107
Adds negative feedback to ROM installation process.
...
As an ugly kludge, code wise.
2019-07-23 16:24:23 -04:00
Thomas Harte
a3ad0ab09b
Completes the successful import path.
2019-07-22 21:46:28 -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
67c5f6b7cb
Ensures the missing ROM list bubbles up to Swift.
2019-07-21 22:05:22 -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
7f5c637aeb
Updates to Swift 5.
2019-03-26 22:15:38 -04:00
Thomas Harte
05d483bc5b
Corrects potential machine shutdown race condition.
2019-03-02 23:17:31 -05:00
Thomas Harte
2beeaa513b
Ensures a machine exists before messaging it.
2019-03-02 21:27:34 -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
3e0b5433b9
Institutes colour/monochrome screen selection as an Apple II option.
...
Allowing me to test that straight-through composite still works.
2019-02-12 19:52:32 -05:00
Thomas Harte
a8645f80bf
Introduces 'non-exclusive' emulator-space keyboards.
...
i.e. sets of keys that don't amount to an entire keyboard in the modern sense. Experimentally used by the Master System for its reset key.
2018-10-24 21:59:30 -04:00
Thomas Harte
d4c1244485
Adds a hint for users.
2018-08-06 18:56:59 -04:00
Thomas Harte
c61b9dca17
Ensures the Mac doesn't show the 'Insert...' option for machines that can't accept an insertion.
2018-08-06 18:52:42 -04:00
Thomas Harte
31df8c7e91
Corrects improper NSWindowController sheet stack manipulation.
...
As a result, 'Insert...' now seems to work properly.
2018-08-05 22:47:51 -04:00
Thomas Harte
bcd0479074
This in principle completes the insert action.
...
With the caveat that 'New...' machines seem to have blocked the window's panel queue somehow.
2018-08-05 13:12:02 -04:00
Thomas Harte
c939a274be
Makes first attempt to connect up an in-machine open panel.
2018-08-04 22:21:23 -04:00
Thomas Harte
d19d949b9c
Removes unnecessary import.
2018-07-27 23:41:55 -04:00
Thomas Harte
1cb3713b84
Attempts to introduce screenshot capture for macOS.
2018-07-27 23:37:24 -04:00
Thomas Harte
1362906f94
Wires joystick support all the way through to machines.
...
Ensures there's only one joystick manager, which is shared by all machines, with input going only to the key window.
2018-07-22 16:55:47 -04:00
Thomas Harte
9bb55b6b61
Ensures that 'Activity' view has minimum acceptable height.
2018-06-23 19:44:35 -04:00
Thomas Harte
6ed3a49fe1
Made failed attempt to apply height constraint.
2018-06-18 21:35:22 -04:00
Thomas Harte
17702bfb89
Causes GUI LEDs to reflect their underlying activity.
2018-06-18 21:22:51 -04:00
Thomas Harte
292e02702a
Progresses very slightly to being able to show up to four activity indicator names.
...
Blinking to come.
2018-06-17 22:52:17 -04:00
Thomas Harte
5a56d8a5d0
Exposes a list of machine LEDs to Swift.
...
Also gets explicit about nullability on the Objective-C side.
2018-06-17 18:53:56 -04:00
Thomas Harte
51da21b844
Formally introduces keyboard-as-joystick for the Mac, and fixes discovered joystick issues.
...
Specifically:
* digital to analogue conversion not returning to centre;
* Apple II axes being the wrong way around; and
* Apple II buttons using improper selection logic.
2018-06-13 19:22:34 -04:00
Thomas Harte
0b771ce61a
Removes all instances of the copyright symbol.
2018-05-13 15:19:52 -04:00
Thomas Harte
3747d96b22
Corrects Mac paste pathway.
...
Also updates documentation around CSOpenGLView.
2018-05-13 11:12:03 -04:00
Thomas Harte
3ffa9e2751
Ensures complete machine picker state is preserved.
2018-04-03 23:01:12 -04:00
Thomas Harte
c697dd78f0
Ensures a new machine starts as first responder.
2018-04-03 22:22:39 -04:00
Thomas Harte
7dac791290
Causes the machine picker to show as a sheet.
...
Albeit with some user experience issues lingering.
2018-04-03 18:47:07 -04:00
Thomas Harte
cde2faeda6
Makes an unsuccessful attempt to show the new machine dialogue as a sheet.
...
Also corrects the 'open' case versus recent changes.
2018-04-02 23:31:36 -04:00
Thomas Harte
69f520428d
Makes a first, ugly attempt at a 'new machine' dialogue for the Mac.
...
Which has implied getting much more specific about MSX disk drive attachment, and has prompted an excuse to offer the ZX80 with the ZX81 ROM.
2018-04-02 22:42:41 -04:00
Thomas Harte
fca8a58b36
Exposes S-Video option in the Mac UI.
2018-04-01 13:29:04 -04:00
Thomas Harte
0869213c55
Cuts detritus.
2018-03-27 22:00:13 -04:00
Thomas Harte
a3fa9440d1
Renames method better to communicate purpose.
2018-03-22 09:49:36 -04:00
Thomas Harte
6419b0e619
Reintroduces CSMachineDelegate
, allowing the Mac port to switch output audio rate dynamically.
2018-03-22 09:48:19 -04:00
Thomas Harte
da3d65c18f
Devolves time to cycle conversion to machines.
...
Thereby avoids a whole bunch of complicated machinations that would otherwise have been required of the multimachine.
2018-03-21 22:18:13 -04:00
Thomas Harte
83f73c3f02
Installs additional safeguards against unsafe deconstruction.
2018-02-28 22:15:22 -05:00
Thomas Harte
a074ee2071
Possibly fixes ColecoVision input mapping.
...
Also provides symbolic input from the Mac.
2018-02-25 22:47:47 -05:00
Thomas Harte
f237dcf904
Avoids deadlock when one bestEffortUpdate action implies another.
2018-02-19 18:44:12 -05:00
Thomas Harte
7d75e864b1
Ensures thread safety of usages of bestEffortLock
.
2018-02-18 22:09:03 -05:00
Thomas Harte
ddf1bf3cbf
Reintroduces options selection for the Mac.
...
For everything except the Vic-20, anyway. That has a somewhat outdated notion of what an options panel should be, corresponding to the work yet to do on its analyser.
2018-02-12 21:46:21 -05:00
Thomas Harte
622a04aec8
Starts stripping the Mac port of its special machine knowledge.
...
Partly to force myself into moving that stuff into the cross-platform area, but mainly so that dynamic analysis can work equally from day one.
2018-01-24 20:14:15 -05:00
Thomas Harte
0202c7afb2
Consolidates Mac presentation of composite video selection.
...
Moves handling of an RGB/composite into `MachinePanel`, eliminating the need for `ElectronOptionsPanel` and `OricOptionsPanel`; similarly merges the MSX and Electron options panels so as to provide television/monitor selection for the MSX.
2018-01-15 18:36:22 -05:00
Thomas Harte
221c05ca76
Adapts the Mac port to use a Machine::DynamicMachine, thereby eliminating plenty of duplication.
2017-11-24 21:36:22 -05:00
Thomas Harte
542ec4312f
Switched the Objective-C code to using dynamic_cast alone to decide whether to post keyboard or joystick events.
2017-10-15 21:25:56 -04:00
Thomas Harte
f623bff5c3
Removes unnecessary call.
2017-10-06 18:48:51 -04:00
Thomas Harte
f41da83d97
Seeks to eliminate race conditions on the best-effort updater.
2017-09-30 21:34:43 -04:00
Thomas Harte
f86729c4ac
Ensures safe machine release upon window closure.
2017-09-30 20:12:46 -04:00
Thomas Harte
231f13d810
Updates to Swift 4 and Xcode 9's recommended project settings.
2017-09-19 23:06:37 -04:00
Thomas Harte
378f231499
Fully wired in drag-and-drop for media insertion.
2017-08-17 11:00:08 -04:00
Thomas Harte
f68565a33f
Split the static analyser functionality so that it's possible just to ask for the set of media implied by a particular file. Extended ConfigurationTarget so that media alone can be pushed to a machine.
2017-08-17 10:48:29 -04:00
Thomas Harte
54efcb7e2f
Made a game attempt at automatic motor control and ensured setting is initialised correctly from the user defaults.
2017-07-08 19:31:20 -04:00
Thomas Harte
23e989e170
This will likely do for the Swift/XIB side of things: the play/pause button is enabled or disabled as per the user's choice of automatic tape control, and toggles function when pressed. It communicates activity down to the Objective-C[++] layer, giving it a route through to the actual machine.
2017-07-08 19:12:06 -04:00
Thomas Harte
28412150e6
Added controls for controlling the tape motor of the ZX80/81, assuming I can find an automatic option.
2017-07-08 17:59:33 -04:00
Thomas Harte
8e35e913bb
Formally withdrew the 'load automatically' option for the Vic, having removed that option elsewhere.
2017-05-14 16:59:24 -04:00
Thomas Harte
dcd0c90283
Switched time of best-effort updater delegate setting, to avoid a callback before setupClockRate has happened, and therefore before it's clear what should be going on with audio.
2017-02-26 21:58:59 -05:00
Thomas Harte
a86a6367b5
Slightly shuffled to avoid a race condition on the best-effort updater.
2017-02-11 13:17:11 -05:00
Thomas Harte
e5fe37f089
Fixed 'joystick' input.
2016-10-27 19:44:48 -04:00
Thomas Harte
013f0c5317
Finally forced emulation window to front. Also removed min/max heights where they'd crept in and got explicit about the OpenGL view being first responder.
2016-10-24 22:08:24 -04:00
Thomas Harte
c24c1bf3b1
Created an options panel for the Oric. Which involved far too much copy and paste from the Electron. Time to figure out how to generalise this stuff, probably.
2016-10-19 22:56:14 -04:00
Thomas Harte
f6b6ec7009
Cemented new meaningof the audio queue delegate callout.
2016-10-17 08:18:32 -04:00
Thomas Harte
b274d7008c
Added precaution to make sure best-effort updaters aren't mid-update during document destruction.
2016-10-16 22:14:47 -04:00
Thomas Harte
cbc3d28217
Ensured an exception is thrown if no machine to run a file is found. E.g. right now if you tried to open a ZX Spectrum .tap.
2016-10-11 21:03:01 -04:00
Thomas Harte
02bfa8b8de
This should just trust.
2016-10-10 07:45:09 -04:00
Thomas Harte
de397799ed
Pulled away my crazy rationalisation of an audio queue into a circular buffer and decided just to trust the OS. This should reduce latency.
2016-10-10 07:30:00 -04:00
Thomas Harte
cfdd5fb686
By removing its status as a special case, eliminated the Atari 2600 document. It's fairly clear that my date with doing joysticks properly can be deferred only so much longer but this is no worse than previously things were.
2016-10-03 08:01:04 -04:00
Thomas Harte
bf468db73d
Migrated the Vic document to a mere options panel.
2016-10-03 07:42:05 -04:00
Thomas Harte
9e6e84647e
Quick formatting fix.
2016-10-02 22:06:28 -04:00
Thomas Harte
f28881ec6b
... and with the return of stored options and the shift of the aspect ratio to somewhere else (to sit, temporarily), the Electron document is the first of the gang to die.
2016-10-02 22:04:47 -04:00
Thomas Harte
19457621d8
Redistributed ownership of the user defaults key prefix, the Electron now works other than that settings aren't retained.
2016-10-02 21:56:50 -04:00
Thomas Harte
f1b99263e0
Relocated responsibility for loading ROMs, giving an Electron that 'works' (i.e. options aside) again.
2016-10-02 20:39:06 -04:00
Thomas Harte
989a1581da
Migrated analysis logic from the document controller to the document.
2016-10-02 17:04:14 -04:00
Thomas Harte
0c75c2fc41
Disabled all machine-specific document code, to force the migration of functionality. The 2600 works other than the little matter of input.
2016-10-02 16:57:57 -04:00
Thomas Harte
6c6e9830dd
Started factoring the options panels out, in the hope that they'll become the only machine-specific thing. At least in the short term.
2016-10-02 16:31:50 -04:00
Thomas Harte
cd5939501f
Treading water some more, ensured the DFS and ADFS ROMs get to the Electron. It now even inserts the DFS ROM if it has a DFS disk image. Might need to make it a sideways RAM though? Regardless, the next job surely — surely! — has to be to stop avoiding the 1770?
2016-09-20 07:36:57 -04:00