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
Thomas Harte
0ace189e38
Takes a basic stab at mouse cursor hiding.
2019-03-06 21:49:50 -05:00
Thomas Harte
34047fa60a
Reintroduces proper locking of the OpenGL context in macOS.
2019-03-03 14:49:20 -05:00
Thomas Harte
05d483bc5b
Corrects potential machine shutdown race condition.
2019-03-02 23:17:31 -05:00
Thomas Harte
c11a1f9679
Introduces S-Video support for the ColecoVision.
2019-03-02 23:02:37 -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
816ad0a94c
Introduces region support to the MSX.
2019-02-28 20:54:43 -05:00
Thomas Harte
d122535a65
Unifies the OpenGL screenshot code and corrects it for arbitrary alignment.
2019-02-27 21:05:02 -05:00
Thomas Harte
6c1d94beaa
Adds composite monochrome output for the Oric. At least temporarily.
2019-02-18 16:56:48 -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
4748b09721
Ensures safe OpenGL shutdown.
2019-01-17 20:44:18 -05:00
Thomas Harte
64465f97b6
Starts towards reintroducing the proper mechanisms for selecting a display type at runtime.
2018-11-28 17:53:33 -08:00
Thomas Harte
ee89be6730
Removes many stray spaces.
2018-11-23 22:32:32 -05:00
Thomas Harte
817aa186c2
Revokes 'synchronous' as a function of onlyIfDirty, as it doesn't allow for double buffering.
2018-11-20 22:00:40 -05:00
Thomas Harte
f12d734957
Disables multisampling, since there's no way it's being helpful.
2018-11-19 23:36:29 -05:00
Thomas Harte
8a699b6072
Kills setup_output
definitively, saving some indirection. set_scan_target
takes its place.
2018-11-14 21:52:57 -05:00
Thomas Harte
bf3ab4e260
Proceeds as drawing to the unprocessed line buffer and drawing from it.
...
Very, very slowly, and without yet clearing.
2018-11-13 21:15:33 -05:00
Thomas Harte
3045e85004
Ensures redraws when resizing; declines to busy wait otherwise.
2018-11-12 20:15:38 -05:00
Thomas Harte
36bf640c6f
Acts as if it is going to submit scans, at least.
2018-11-07 22:53:46 -05:00
Thomas Harte
55da1e9c0f
Simplifies semantics a little and starts accepting a single buffer of pixel data.
2018-11-06 22:23:38 -05:00
Thomas Harte
014da41471
Ensures scan positions are communicated with a specified range, and switches manner of pixel clock communication.
2018-11-04 21:06:25 -05:00
Thomas Harte
05fb7db147
Reduces CRT chattiness.
2018-11-03 23:47:41 -04:00
Thomas Harte
f6562de325
Possibly adds enough for the Electron and ZX80 to start outputting dummy lines.
...
Let's see!
2018-11-03 23:40:39 -04:00
Thomas Harte
b40211d2c0
Starts to bend 'CRTMachine' to a world farther from owning the GPU relationship.
2018-11-03 21:54:25 -04:00
Thomas Harte
da4d883321
Adds first, incomplete attempts to talk to a ScanTarget from the CRT.
...
Does away with the hassle of `unsigned` while I'm here; that was a schoolboy error.
2018-11-03 19:58:44 -04: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
e3fd63b2d7
Adds composite/RGB selection for the Master System.
2018-10-23 22:30:24 -04:00
Thomas Harte
9683c8f664
Advances towards the Master System actually receiving interrupts.
2018-09-23 15:58:23 -04:00
Thomas Harte
0d01346ad4
Advertises SMS support and goes as far as realising it needs to spawn a Master System.
2018-09-20 22:04:28 -04:00
Thomas Harte
1e3318816c
Removes LSItemContentTypes
so as not to reject files.
2018-09-09 17:47:03 -04:00
C.W. Betts
05d4274019
Remove LSItemContentTypes: they should be unique identifiers, not generic types like public.item or public.data.
...
This can result in strange icons showing up in the wrong places.
Also added a category type.
2018-09-07 16:39:52 -06:00
Thomas Harte
a13eb351da
Implements the Enhanced IIe, other than some text selection errors.
2018-08-11 10:26:30 -04:00
Thomas Harte
3be30d8c71
Tries once again to introduce file type icons.
2018-08-06 19:08:27 -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
3c51e335c3
Makes extra sure not to try to read from an empty characters list.
2018-08-04 21:40:26 -04:00
Thomas Harte
94503ed771
Disables the macOS Apple II options panel, since it now has no options.
2018-08-04 12:37:55 -04:00
Thomas Harte
8cca9c2055
Merge branch 'master' into IIe
2018-07-27 23:52:39 -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
55a6431fb3
Puts in enough logic to be able to launch a non-functional IIe.
2018-07-25 18:58:34 -04:00
Thomas Harte
6b2970f2f2
Ensures no-hat input doesn't override analogue axes.
2018-07-22 17:29:37 -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
c05b6397b0
Attempts a full implementation of the joystick manager.
...
So it currently vends a list of existing joysticks plus their states. More work will be required for a UI — e.g. there is no way to identify one joystick from another — but this'll do for now.
2018-07-22 15:23:26 -04:00
Thomas Harte
8d18808efe
Walks a few steps further along device inspection.
2018-07-20 23:33:04 -04:00
Thomas Harte
09950d9414
Gamely starts to create a HID input manager for joysticks/pads/etc.
2018-07-19 22:43:01 -04:00
Thomas Harte
3e9ef6b8cb
Adds indicator lights for the SDL port.
...
To complete #426
2018-07-15 20:19:06 -04:00
Thomas Harte
7e58a44771
Renames ConfigurationTarget
to MediaTarget
as per its newly-reduced interface.
2018-07-10 21:32:28 -04:00
Thomas Harte
26141a59b0
Moves all default Mac window positions up by 50px.
2018-06-23 23:09:34 -04:00
Thomas Harte
4a3d7c338a
Moves the activity window down to start at approximately the same top as the options window.
2018-06-23 22:14:44 -04:00
Thomas Harte
9bb55b6b61
Ensures that 'Activity' view has minimum acceptable height.
2018-06-23 19:44:35 -04:00
Thomas Harte
c33308bdc5
Attempts to improve relative default window positions.
2018-06-23 18:59:19 -04:00
Thomas Harte
44a33941bf
Undoes Xcode's folder renaming.
2018-06-23 18:55:17 -04:00
Thomas Harte
d45f1a793d
Introduces composite/RGB selection for the Amstrad CPC.
2018-06-21 20:00:49 -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
3ea2a4ccb8
Moves the joystick class towards accepting analogue inputs.
2018-06-10 20:45:52 -04:00
Thomas Harte
c4108efc5c
Adds a more accurate option description for the Apple II.
2018-06-10 18:32:22 -04:00
Thomas Harte
d576ff1172
Exposes DOS 3.3 acceleration as an option.
...
Albeit with an unhelpful label in the macOS GUI for now.
2018-06-10 18:28:29 -04:00
Thomas Harte
076c0a48e9
Slightly tweaks initial size that this doesn't resize when switching to the Vic selection page.
2018-05-16 19:19:50 -04:00
Thomas Harte
fde613a5c4
Corrects various placement inconsistencies.
...
Hopefully to move into line with Apple's HID standards.
2018-05-16 19:15:49 -04:00
Thomas Harte
f7decd80b6
As an initial step, ensured latency doesn't pile up endlessly.
2018-05-15 21:12:43 -04:00
Thomas Harte
5d6b5d9f10
Eliminates all emdashes in cross-platform code.
2018-05-13 15:34:31 -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
45bd24ada0
Corrects tags for Oric machine selection.
2018-05-08 22:53:27 -04:00
Thomas Harte
c3a2f7717b
Makes attempt to implement support for the Pravetz 8D + 8DOS.
...
i.e. the Disk II wired up to the Oric, with some ROM swaps.
2018-05-08 22:05:43 -04:00
Thomas Harte
59718e132b
Fixes macOS 10.10 warning.
2018-05-03 22:39:34 -04:00
Thomas Harte
723ee88043
Introduces configuration options for the Apple II.
...
Specifically: II or II+? Disk II 13- or 16-sector? Or not at all?
2018-05-03 19:37:32 -04:00
Thomas Harte
f4097290c2
Made various corrections following a quick for-loop constness audit.
2018-04-30 22:23:57 -04:00
Thomas Harte
a9d4fe0b41
Introduces filetype wiring for DO and PO files.
...
Also corrects sector numbering logic to ensure there is a sector 15.
2018-04-29 16:34:10 -04:00
Thomas Harte
7463edaa1b
Attempts to bring card support to the Apple II, and adds a 'has disk' flag.
2018-04-23 21:14:45 -07:00
Thomas Harte
d447e81abd
Adds provisional support for WOZ files.
2018-04-23 19:57:45 -07:00
Thomas Harte
6592745e53
Adds the bare minimum to respond to attempts to open NIB files with an Apple II.
2018-04-21 21:21:57 -07:00
Thomas Harte
6621e54952
Shortens the name for the Electron tab, owing to limited space.
2018-04-19 20:54:16 -04:00
Thomas Harte
465c38f03c
Extends the keyboard protocol and adds keyboard input to the Apple II.
2018-04-15 21:11:30 -04:00
Thomas Harte
e599e65087
Switches to use of the TargetList
typedef wherever possible.
2018-04-14 19:46:38 -04:00
Thomas Harte
7efee9b52b
Does the bare minimum to create a class skeleton for Apple II implementation.
2018-04-14 19:46:15 -04:00
Thomas Harte
bb4db6b382
Ensures that 'choose' responds to enter.
2018-04-08 18:52:46 -04:00
Thomas Harte
7bf88565ce
Resizes to fit all options.
2018-04-05 21:59:19 -04:00
Thomas Harte
ee10155296
Adds advice and withdraws the ZX 64kb option.
2018-04-05 21:57:26 -04:00
Thomas Harte
5044aac337
Sizes up default window size better to fit machine selector.
2018-04-04 19:18:22 -04:00
Thomas Harte
46b1c57bf4
Enables the titlebar, inexplicably allowing the sheet to obtain focus.
2018-04-03 23:22:26 -04:00
Thomas Harte
eaf1482182
Reverts the once-again-unused document controller.
2018-04-03 23:11:19 -04:00
Thomas Harte
d3418550eb
Attempts explicitly to disable promise of saving.
2018-04-03 23:06:48 -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
389979923e
Performs update to and satisfaction of Xcode 9.3's preferred warnings.
2018-03-30 10:25:01 -04:00
Thomas Harte
0869213c55
Cuts detritus.
2018-03-27 22:00:13 -04:00
Thomas Harte
f3fe16215a
Reintroduces options for the Vic-20, now tape loading speed only.
2018-03-27 21:55:43 -04:00
Thomas Harte
62b0645ed0
Ensures the Vic-20 doesn't show the ZX80/81 options panel on macOS.
2018-03-25 16:04:44 -04:00
Thomas Harte
760c75103e
Fills out the application icon set.
2018-03-23 18:29:18 -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
682c3d8079
Adds new hook for watching audio output rate changes.
2018-03-22 09:23:01 -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
5530b96446
Wired up a class and analyser for a ColecoVision.
2018-02-23 22:47:15 -05:00
Thomas Harte
b215cf83d5
Eliminates implicit update queue flush, as unnecessary.
2018-02-19 19:54:18 -05:00
Thomas Harte
f237dcf904
Avoids deadlock when one bestEffortUpdate action implies another.
2018-02-19 18:44:12 -05:00
Thomas Harte
6aaef97158
Breaks Mac machine shutdown deadlock.
2018-02-19 16:48:03 -05:00
Thomas Harte
6780b0bf11
Corrects error preventing fast loading preference from making it to machines on the Mac.
2018-02-19 16:24:28 -05:00
Thomas Harte
7d75e864b1
Ensures thread safety of usages of bestEffortLock
.
2018-02-18 22:09:03 -05:00
Thomas Harte
7b420d56e3
Removed state mirroring in the machine-specific Mac UI classes.
2018-02-14 21:46:50 -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
d751b7e2cb
Marginally reformats for current style.
2018-02-11 20:32:59 -05:00
Thomas Harte
43b682a5af
Adds multiple target versions of all the DynamicMachine-vended types.
2018-02-09 16:31:05 -05:00
Thomas Harte
66faed4008
Gives MachineForTargets
complete responsibility for initial machine state.
2018-01-25 18:28:19 -05:00
Thomas Harte
11abc99ef8
Introduces the extra level of indirection necessary to make Analyser::Static::Target polymorphic.
2018-01-24 22:35:54 -05:00
Thomas Harte
21efb32b6f
Integrates the static and nascent dynamic analyser namespaces.
2018-01-24 21:48:44 -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
d360b2c62d
Standardises the static analyser on std::vector and slightly widens passageway to a machine.
...
The SDL target would now be fooled by a hypothetical multi-target, the Mac not yet.
2018-01-23 22:18:16 -05:00
Thomas Harte
c2f1306d85
Updates copyright year.
2018-01-18 21:11:30 -05:00
Thomas Harte
edb30b3c6c
Introduces an icon for the Mac.
...
About which I have yet to decide my full feelings.
2018-01-18 21:01:30 -05:00
Thomas Harte
46c76b9c07
Switches to using the boilerplate public.item for all macOS UTIs.
2018-01-17 22:01:38 -05:00
Thomas Harte
e13312dcc5
Removed stray new line.
2018-01-16 21:46:31 -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
def82cba49
Makes MSX tape parsing more tolerant to phase.
...
Also reintroduces proper file type association for TSX on the Mac.
2018-01-10 21:54:15 -05:00
Thomas Harte
4e124047c6
Introduces enough DMK support to progress to failure to parse a track.
2018-01-08 21:57:11 -05:00
Thomas Harte
05b95ea2e0
Corrects Xcode tests.
2018-01-01 16:04:13 -05:00
Thomas Harte
bf0601123b
Adds some document type UTIs.
...
Will need to survey all the other Mac emulators to get a complete list, I guess.
2017-12-30 13:36:29 -05:00
Thomas Harte
c18517be4b
Ensures that the fast loading option successfully flows from the Mac interface.
2017-12-29 19:07:22 -05:00
Thomas Harte
e349161a53
Rejigs the typing relationship so that use of a typer is not strongly implied by the interface.
...
Simultaneously implements typing on the MSX by direct insertion into the key buffer.
2017-12-29 18:30:46 -05:00
Thomas Harte
d5b1a9d918
Moves the typer functionality behind a functionality-based naming scheme, eliminates its C-style memory management.
2017-12-29 15:26:03 -05:00
Thomas Harte
db6d9b59d0
Attempts to implement TSX support for the MSX.
2017-12-19 21:53:04 -05:00
Thomas Harte
ac80d10cd8
Separates the component parts of running an audio stream: task deferral, filtering and generation.
...
Walking towards improving opportunities for composition.
2017-12-17 21:26:06 -05:00
Thomas Harte
ee44d671e7
Steps towards exposing the MSX in Cocoa builds.
2017-12-03 15:42:54 -05:00
Thomas Harte
68a2895753
Adds enough static analyser to get to the MSX itself as the point of failure in SDL/kiosk mode.
2017-11-25 13:18:24 -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
c83b3cefbc
Eliminates the generalised special case selectors and ROM suppliers from the CPC, Vic-20, Electron and ZX80/81.
2017-11-24 17:55:28 -05:00
Thomas Harte
a8ac51da73
Eliminates the Oric's non-reflective inputs for selections, and the Oric-specific ROM setter.
2017-11-24 16:59:00 -05:00
Thomas Harte
29b5ccc767
Removes redundant logging on the Mac.
2017-11-19 18:05:39 -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
c827d14d97
Corrects various GCC warnings across the 6560, CPC, TIA, Oric video and elsewhere.
2017-11-12 17:17:27 -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
6e1d69581c
Eliminates a variety of end-of-line spaces.
2017-11-07 22:54:22 -05:00
Thomas Harte
f95515ae81
Eliminates a large number of instance of end-of-line tabs.
2017-11-07 22:51:06 -05:00
Thomas Harte
0d1b63a8c5
Switches the Objective-C machine bindings to use the set_rom_fetcher path for supplying ROMs, simplifying and unifying.
2017-11-07 22:29:57 -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
7aaf27389c
Commutes the Atari 2600 to the JoystickMachine interface.
2017-10-15 20:44:59 -04:00
Thomas Harte
ee179aa7bd
Introduces a joystick analogue to the shared keyboard interface, and implements it for the Vic-20.
2017-10-14 22:36:31 -04:00
Thomas Harte
78ee46270b
Transfers possession of keyboard mappings from the Mac side over to individual machines.
...
Specifically by establishing an intermediate representation of a useful mix between the American and British IBM and Mac keyboard layouts, and routing through that.
2017-10-12 22:25:02 -04:00
Thomas Harte
f623bff5c3
Removes unnecessary call.
2017-10-06 18:48:51 -04:00
Thomas Harte
f40e1fd840
Commutes the best-effort updater into C++11.
2017-10-05 18:09:58 -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
77548d14db
Ensures self.bounds and -convertSizeToBacking: are called only on the main queue.
2017-09-20 19:59:34 -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
f10be2a18a
Eliminates potential cyclic entry into CSMachine during its -dealloc.
...
Explicit cause: dealloc calls close_output(). That may decide to flush work, indiscriminately. Some of the flushed work might be audio generation. Audio generation might cause the audio queue to react with an out-of-data announcement. Which would cause a fresh attempt to update the CSMachine.
2017-08-31 21:22:23 -04:00
Thomas Harte
d06031dfcb
Removes the options panel for CPC display.
2017-08-27 17:11:35 -04:00
Thomas Harte
4a66dd9e82
Arranges for the ZX80/81 to get a peek at target configuration prior to construction. I'm as yet undecided on whether to make this the norm.
2017-08-27 16:42:16 -04:00
Thomas Harte
522839143f
Revokes -[CSMachine init] and the slightly troubling create-on-demand semantics it places upon subclasses via .machine. Therefore each machine must announce its own implementation of -init.
2017-08-27 16:36:21 -04:00
Thomas Harte
e6683e7f2d
Added the base skeletal stuff of HFE support.
2017-08-17 21:48:48 -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
4c15e46fd1
Performed the normative removal from public view of Vic-20 implementation details. Which were hefty.
2017-08-16 16:05:30 -04:00
Thomas Harte
75208b0762
Moves the Electron implementation behind a more opaque interface, in line with changes elsewhere.
2017-08-16 15:33:40 -04:00
Thomas Harte
de1c526789
Cut the amount disclosed by the Atari 2600 for public inspection down to the minimum, relocating implementation into the .cpp.
2017-08-16 14:52:40 -04:00
Thomas Harte
148591b7f2
Hid most of the Oric innards, and corrected a potential multi-thread access error emanating from the Mac side of the world.
2017-08-16 14:35:53 -04:00
Thomas Harte
3947347d88
Introduces active input handling for the AY and uses it in the CPC to give proper, active keyboard input, rather than push-on-select, which was only ever a temporary hack. Also maps a few more keys for the Amstrad.
2017-08-15 22:47:17 -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
681d1e2f8d
Breaking its typer for now, adapted the ZX80/81 to having a Z80, not being one.
2017-08-02 22:12:59 -04:00
Thomas Harte
9d43784c65
Significantly increased quantity of keys forwarded.
2017-08-01 20:37:55 -04:00
Thomas Harte
f5b278d683
Added enough stuff to put the emulated Amstrad CPC in a state of knowing whether its '0' key is pressed.
2017-08-01 17:31:56 -04:00
Thomas Harte
0536f089e1
Eliminated old-[personal-]fashioned line break.
2017-07-31 22:32:26 -04:00
Thomas Harte
3df13cddd4
As per my keenness for cleanliness improvements corresponding to my ever-increasing C++ ability: turned the Amstrad into something that a factory produces, allowing me completely to hide a bunch of implementation details.
2017-07-31 22:32:04 -04:00
Thomas Harte
afd409c883
Ensured that ROM images are loaded and passed to the Amstrad CPC.
2017-07-31 18:44:49 -04:00
Thomas Harte
c0f1313830
Performed sufficient wiring to get to the point where attempting to load a CDT creates an instance of the Amstrad CPC and then fails only because the thing vends a nullptr
CRT.
2017-07-30 22:05:29 -04:00
Thomas Harte
d25d7d7d40
Added the Amstrad CPC as a named target and declared support for its CDT file format.
2017-07-29 21:56:33 -04:00
Thomas Harte
2ff157cf7a
Switched CRTMachine over to use Cycles
as an explicit statement of units, and followed through on the effects of that.
2017-07-22 22:17:29 -04:00
Thomas Harte
6633537fb8
Discovering that there is such a thing as P81 — a ZX81 file without the name omitted — added support for it. Extended FileHolder while I was here to retain the file name and be able to supply its extension, as my quick-fix test-the-last-character approach to o/p/80/81 discrimination stops working with p81 thrown into the mix and this feels like the correct factoring.
2017-07-22 16:02:25 -04:00
Thomas Harte
2b5d0877a8
Adjusted parameter name to match documentation. I think it's a carry-over from before I was passing the whole event along.
2017-07-21 21:27:50 -04:00
Thomas Harte
238348c885
Performed the initial wiring to announce that this application supports TZX files and to route them to the ZX80/81 static analyser. The TZX class itself does not yet do much beyond basic validation. I think it'll be easiest if it follows in UEF's footsteps in queuing up pulses ahead of time, so some factoring out is now required.
2017-07-16 21:33:11 -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
368bff1a82
Added a shell class that will one day be able to parse CSW files, plus the logic and metadata to instantiate it when a CSW presents itself.
2017-07-10 21:43:58 -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
e2575d6de4
Routed tape motor selections through to the C++ side of the world, and ensured that manual tape playback works properly.
2017-07-08 19:21:12 -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
644ef13acd
Connected up the fast-tape GUI option for the ZX80 and '81.
2017-06-22 20:20:31 -04:00
Thomas Harte
a48616a138
Fixed reference to Swift-world MachineDocument for the ZX81 file type.
2017-06-12 18:51:11 -04:00
Thomas Harte
8222aac9e3
Added an official declaration of support for ZX81 files.
2017-06-11 21:40:41 -04:00
Thomas Harte
8116f85479
Allowed the static analyser to specify a ZX80 or 81, and a memory model. Neither is respected yet in the machine.
2017-06-11 19:12:20 -04:00
Thomas Harte
cc4cb45e9d
Implemented keyboard input and ensured that the signal generated is marked as composite, putting the colour-suppression ball into the CRT's court.
2017-06-06 09:25:18 -04:00
Thomas Harte
c485c460f7
Imported the ZX80 and 81 system ROMs (though not publicly), added enough code to post their contents into C++ world.
2017-06-04 18:08:35 -04:00
Thomas Harte
b0a7c58287
Fixed project to point to the XIB I actually want to keep; fixed that XIB to have the correct contents.
2017-06-04 17:57:37 -04:00
Thomas Harte
d2637123c4
Added necessary support to get as far as an empty window when attempting to load a piece of ZX80 software.
2017-06-04 17:55:19 -04:00
Thomas Harte
655809517c
Ensured that there is a subclass of file that is entrusted to load .O/.80 files, and that the code routes such files to it, noting that it should consider whether a ZX80 is required.
2017-06-04 16:37:03 -04:00
Thomas Harte
9398b6c2c8
Unable to differentiate, decided to map a Mac shift key to both Oric shifts.
2017-05-18 22:25:59 -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
2edf73908c
Temporarily disabled the existing fast loading implementation in pursuit of another, and started trying to correct the lack of connection between the userport VIA and the tape drive.
2017-05-06 22:00:12 -04:00
Thomas Harte
92a8b68859
Dumped Mach-specific test-and-set in favour of ordinary C11.
2017-04-15 21:41:59 -04:00
Thomas Harte
bdd432fe1d
Added an ugly workaround for the empirical sound shutdown issues.
2017-03-26 20:28:04 -04:00
Thomas Harte
b193248056
Ensured that queue is not touched at all outside of the critical section.
2017-03-11 18:17:09 -05:00
Thomas Harte
38ce4dc56c
Fixed potential deadlock, if a delegate decided to dealloc the queue as a result of its prompting.
2017-03-11 17:44:02 -05: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
2f0c923c29
Switched away from @synchronized as it appears possibly to be the lock used during -dealloc, creating deadlock with the CSAudioQueueDeallocLock.
2017-02-22 21:42:10 -05:00
Thomas Harte
4c947ad553
Attempted to resolve risk of an audio callback being in progress when -dealloc is received.
2017-02-22 21:12:59 -05:00
Thomas Harte
1d03793f22
Fixed potential race condition: ensure the queue is disposed of synchronously because otherwise there'll be a potential dangling reference to self.
2017-02-22 07:35:09 -05:00
Thomas Harte
99a35266e1
Attempted to bring frequency-switching logic into the cross-platform realm. Which for now creates an issue with the OpenGL context.
2017-02-19 21:20:37 -05:00
Thomas Harte
327c19a222
Slightly shuffled to avoid a race condition on the best-effort updater.
2017-02-11 12:58:47 -05:00
Thomas Harte
fba6baaa9c
Stubbed and disabled to get back to building.
2017-01-28 21:56:01 -05:00
Thomas Harte
9001cc3fc2
Added a cartridge image.
2017-01-27 21:26:11 -05:00
Thomas Harte
015b2b49f9
Introduced an incomplete set of file association icons.
2017-01-26 22:21:55 -05:00
Thomas Harte
580f347727
Fixed Oric SCART mode by having it change what it's giving to the CRT based on which shader it knows will be active.
2016-12-10 13:55:56 -05:00
Thomas Harte
6cdd41e5a9
Added direct use of the colour ROM, uploading 16 bits per pixel to contain the entire ROM composite wave.
2016-12-09 22:17:10 -05:00
Thomas Harte
ea33a28695
Any Oric-format disks that are inserted now make it all the way to the Oric, along with a request to emulate the Microdisc. It has received a copy of the ROM. The ball is entirely in its court now.
2016-11-21 20:59:25 +08:00
Thomas Harte
8499783b14
Dragged multibyte primitives and signature checks up to the base class. Implemented support for Oric MFM-style .DSK, at the file format level.
2016-11-21 20:47:16 +08:00
Thomas Harte
e2cdfae8a7
The emulated Oric now has access to both versions of the BASIC ROM and picks between them based on the static analyser's recommendation.
2016-11-15 10:39:16 +08:00
Thomas Harte
a2e5fd2a1f
Corrected layout error.
2016-11-03 08:02:13 -04:00
Thomas Harte
9c2df231ce
Made fast loading optional.
2016-11-03 07:59:30 -04:00
Thomas Harte
e5fe37f089
Fixed 'joystick' input.
2016-10-27 19:44:48 -04:00
Thomas Harte
5c23acdbaf
Switched window style back for the Atari HUD.
2016-10-27 19:40:29 -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
91831b6a95
Introduced a reuse list for audio buffers, based on the observation that the audio queue seems to start quick rejecting them.
2016-10-23 21:17:00 -04:00
Thomas Harte
7c33c34b0c
Have withdrawn attempt to be clever with client notification here, as it was having no effect in the current environment, making it hard to build up any confidence.
2016-10-23 20:33:59 -04:00
Thomas Harte
f13d7ed6f4
Added an extra safety rail.
2016-10-20 07:36:53 -04:00
Thomas Harte
73365e1877
Resolved sizing error.
2016-10-19 23:09:05 -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
5a808d789a
Added an upper threshold that must be crossed before a lower threshold warning is communicated.
2016-10-18 22:21:34 -04:00
Thomas Harte
f6b6ec7009
Cemented new meaningof the audio queue delegate callout.
2016-10-17 08:18:32 -04:00
Thomas Harte
c105f2acd9
Sought to reduce chattiness.
2016-10-17 08:04:36 -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
da9c9ad51a
Added in the missing keys; added variable phase to the video.
2016-10-14 22:39:27 -04:00
Thomas Harte
138eabcff4
Continued in my effort to wire up a keyboard. Will need further to continue.
2016-10-14 21:35:15 -04:00
Thomas Harte
d8e4c488c2
Started iterating towards having an AY and a fully-working keyboard.
2016-10-14 21:18:03 -04:00
Thomas Harte
0ca383ecd1
Set every single key to be NMI, in order to be able to progress with the diagnostics cartridge.
2016-10-13 18:56:55 -04:00
Thomas Harte
120b2d9e33
Switched to using a diagnostic ROM for now, as it'll definitely boot without initially requiring either a 6522 or AY. Have some forms appearing which imply I'm not doing badly, at least up to not knowing where I'm supposed to get character pixels from.
2016-10-12 21:52:47 -04:00
Thomas Harte
e6937d8003
Ensured that the ROM gets installed. So next for some video action?
2016-10-12 18:51:02 -04:00
Thomas Harte
4a062c616f
Added enough wiring to get Oric TAPs through to a completely unimplemented Oric emulation.
2016-10-11 22:20:13 -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
df01c78039
It's a bit of a mess but this is probably close to appropriate for Oric TAP files.
2016-10-11 07:39:48 -04:00
Thomas Harte
02bfa8b8de
This should just trust.
2016-10-10 07:45:09 -04:00
Thomas Harte
f4b39c4435
Added documentation and experimentally reduced packet size. We'll see.
2016-10-10 07:42:24 -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
fa7c64bb5d
Eventually reached an implementation of ADC that continues to satisfy all the formalised unit tests while also satisfying the manual BCDTest, that I need to find a way to formalise. I fixed the unit tests for Swift 3 while here, and attempted to do some unrelated NIB stuff with no real success.
2016-10-03 22:03:39 -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
ce4100e5b9
Fixed slots for DFS and ADFS to sideways RAM; continued working on the 1770 to get as far as trying to get the body of a sector.
2016-09-24 22:04:54 -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
Thomas Harte
c9dd07cecd
DFS disks are now delivered right up to the emulator's front door. So everything's in place to get started on that WD1770 nonsense.
2016-09-19 08:29:23 -04:00
Thomas Harte
fbcb59d47a
A policy change trial: let the person above deal with any error.
2016-09-18 21:18:41 -04:00
Thomas Harte
bcf91de7e9
Declared support for the Acorn disk files, started hammering out an encoder.
2016-09-18 13:35:54 -04:00
Thomas Harte
a98374995e
Cleaned up pre-analysis code.
2016-09-17 18:19:32 -04:00
Thomas Harte
7c65c69e0f
Migrated to Swift 3.
2016-09-15 22:12:12 -04:00
Thomas Harte
ee8510984f
Added just enough wiring to restore the 2600 to functionality.
2016-09-15 19:34:45 -04:00
Thomas Harte
c3a795328d
Windows have titles again. Also I've owned up to not knowing how to edit UEFs right now.
2016-09-12 22:15:38 -04:00
Thomas Harte
40660fe680
Made yet another guess at Commodore analysis. Elevated fast tape-related unnatural speed up to the OS-side mechanisms.
2016-09-12 22:06:03 -04:00
Thomas Harte
908dc40569
If loading automatically, assume that whatever was in the machine target set up the machine and don't override it. Too dodgy? More thought required.
2016-09-08 07:38:34 -04:00
Thomas Harte
8c84f3581a
Attempted to bring some uniformity in application of configurations.
2016-09-08 05:32:17 -04:00
Thomas Harte
50175a9aed
Added logic to try to spot when the first program is BASIC and, if so, what the correct memory model is, then to get that information to the Vic. Though it currently then gets overwritten by the view controller. Grrrr.
2016-09-07 22:17:19 -04:00
Thomas Harte
21e5f407d8
I need to get a bit more definitive on naming but this gets all the way to setting a configuration upon an Electron.
2016-08-31 22:03:42 -04:00
Thomas Harte
a9b67dfba0
Introduced an NSDocumentController
subclass.
2016-08-31 21:21:07 -04:00
Thomas Harte
7bc2b6b161
Added the minor piece that will allow analysis results to be obtained from Objective-C, and exposed to Swift in sufficient detail for it to be able to pass on to the machine.
2016-08-31 20:43:29 -04:00
Thomas Harte
d1abfc040c
Addressed my dithering here: the file format containers themselves should do nothing but inspect the data to find out whether it is of the correct format. The machine steps are there for machine-specific validation. So it's probably easier to treat a binary ROM image just as a binary ROM image. Therefore, the Acorn-specific .rom detection is now in an Acorn-specific area.
2016-08-29 08:48:49 -04:00
Thomas Harte
29c972f4b8
Added hacky segue into analysis for all Electron formats. Added analyser to try to differentiate Acorn-format ROMs from other things called .rom, which are likely to be numerous.
2016-08-28 12:43:17 -04:00
Thomas Harte
56c0d70c1f
Gave disks their own namespace.
2016-08-27 17:15:09 -04:00
Thomas Harte
c0402d0c2b
Gave tapes their own namespace.
2016-08-27 17:09:45 -04:00
Thomas Harte
8c333059a8
Turning this into a slog: gave UEF
a more appropriate name, got as far as now having to decide what to do about ROMs as to structure. I guess they're machine specific, so specific classes?
2016-08-27 16:40:21 -04:00
Thomas Harte
0d077691b0
Resolved warning.
2016-08-23 21:10:22 -04:00
Thomas Harte
38aec44d85
Made sufficient changes for the Vic itself to believe it can recast a PRG as a tape and insert it that way. So now the ball is in the court of: how the heck are Commodore tapes encoded?
2016-08-15 19:44:41 -04:00
Thomas Harte
6079d30e58
Eliminated waiting here — either the buffer can be enqueued now or it is dropped.
2016-08-14 16:20:24 -04:00
Thomas Harte
5373f6cc57
Completed setting of options, including mapping from country to ROM + television standard.
2016-08-14 14:23:08 -04:00
Thomas Harte
b5af1746d5
Added a through path to the Objective-C for setting region and memory size.
2016-08-14 14:14:59 -04:00
Thomas Harte
f15d89239f
Made a stab at storage and restoration of country and memory size.
2016-08-14 14:00:08 -04:00
Thomas Harte
df77c2a20a
Added the XIB side of wiring for region and memory size options.
2016-08-14 13:53:14 -04:00
Thomas Harte
12bad8f23f
Turned the 6560 into an ordinary template, similar to the rest of the project, albeit right now with a fairly shonky internal implementation. Fixed a Mac-specific interface sizing issue.
2016-08-09 20:41:05 -04:00
Thomas Harte
285a288c80
Switched to two cycles of options loading, meaning that they get set before files are inserted. Might need some further work?
2016-08-07 21:48:09 -04:00
Thomas Harte
be54d8040e
Made a first stab at having automatic loading be optional. But things are currently arranged such that the machine options are communicated too late to have an effect. So work to do.
2016-08-06 17:39:27 -04:00
Thomas Harte
58297f1baf
Performed the basic metadata and routing for opening D64 files. Realised that I wasn't actually necessarily catching exceptions properly for all file opens, and fixed.
2016-08-01 07:09:15 -04:00
Thomas Harte
18744cd98b
Slightly updated comments, switched to 1540 ROM so as very slightly to improve loading time.
2016-08-01 04:37:30 -04:00
Thomas Harte
6cfc514c2d
Made the rote changes necessary to attempt to open and to supply a G64 to the Vic.
2016-07-10 12:57:17 -04:00
Thomas Harte
7cc4bf3fe7
Hit and hope is getting me nowhere. Time to unit test this thing.
2016-07-09 15:40:25 -04:00
Thomas Harte
81e6cc34e5
Per the ROM disassembly, the Vic's VIA outputs are inverted for the benefit of the serial bus.
2016-07-07 06:57:21 -04:00
Thomas Harte
1baf21827c
Since the ROM is well disassembled, let's actually try to be a 1541 first.
2016-07-06 22:17:32 -04:00
Thomas Harte
d1eea6943d
Ensured the 1540 ROM gets installed, at least.
2016-07-05 16:54:25 -04:00
Thomas Harte
47548dcedc
Fixed an erroneous #import.
2016-07-05 16:39:31 -04:00
Thomas Harte
86dabd007b
Furthered fleshing out of the 1540. Though it doesn't yet receive a ROM so won't even attempt to do anything meaningful.
2016-07-05 16:39:18 -04:00
Thomas Harte
0d3d0fbe4d
Created a namespace for Commodore
and an empty container file for the 1540[/1] implementation.
2016-07-05 13:28:27 -04:00
Thomas Harte
df4724eb3e
Added a modal toggle allowing the keyboard to be switched between being a keyboard and being a joystick for the Vic.
2016-07-04 22:01:07 -04:00
Thomas Harte
88964ceac0
Eliminated plain pointer passing for object types.
2016-07-04 19:33:55 -04:00
Thomas Harte
6dbf16210b
Switched protocol to meaningful name and corrected its omission from the repository.
2016-07-04 19:19:07 -04:00
Thomas Harte
6027cba95f
Factored out the stuff of pushing a fast-loading option onwards and storing it within the user defaults.
2016-06-27 21:38:14 -04:00
Thomas Harte
9134e4de1f
Added a partially-wired options menu for the VIC.
2016-06-27 18:49:53 -04:00
Thomas Harte
8741be5c84
Made the slightest possible effort to get TAPs opened and passed to the VIC.
2016-06-25 16:24:52 -04:00
Thomas Harte
ee19417ded
Made an attempt quickly to implement parsing of the Commodore .TAP file format.
2016-06-25 16:09:32 -04:00
Thomas Harte
b8728285e7
An overridden getter looks more like this in Swift.
2016-06-23 21:09:34 -04:00
Thomas Harte
097a9caa95
Delegates are all nullable, naturally.
2016-06-23 09:37:49 -04:00
Thomas Harte
454e98302d
Slight rearrangement plus a setting of the CSMachine delegate corrects audio after a clock rate change.
2016-06-20 22:18:41 -04:00
Thomas Harte
31b26b8118
Made a first attempt to implement the full top-to-bottom change of clock rates, giving the Atari the ability to change rate when it switches to PAL mode, as it should always have been.
2016-06-20 21:47:27 -04:00
Thomas Harte
3591479571
Fixed mismatch between initial tick box states and communicated switches; ensured they're visible upon launching a game.
2016-06-20 21:31:07 -04:00
Thomas Harte
6c3f5d2caf
Fixed window sizing.
2016-06-19 21:40:35 -04:00
Thomas Harte
065ec618c4
Factored out and templated the 6532, finally taking the opportunity to add a means to control the on-console switches of an Atari 2600.
2016-06-19 19:36:34 -04:00
Thomas Harte
ef3ed1f436
Implemented full paste ability for any machine that is a typer.
2016-06-19 16:35:04 -04:00
Thomas Harte
090e92ad26
Making this large has very limited side effects. So why not?
2016-06-16 21:41:17 -04:00
Thomas Harte
3b71d1a309
Switched to a variable-length buffer based on attempting to hit approximately a certain quality of service.
2016-06-16 21:35:22 -04:00
Thomas Harte
2ee78d42b9
Made an attempt also to trigger updates upon audio packets being returned, and significantly to reduce the size and quantity of those. This should get down to 11ms latency if the output wave is 44100; I might need to scale up the buffer size as the sampling rate increases or this is going to get crazy at 192Khz.
2016-06-16 20:51:35 -04:00
Thomas Harte
00a9f1bf24
Fixed best-effort updater actually to run, finally moved clock rate announcement into the C++ side of things, started working on a mechanism to allow clock rate to be updated.
2016-06-16 20:39:46 -04:00
Thomas Harte
1921a6c469
Rewired the existing cause-an-update route from the OpenGLView through the best-effort updater.
2016-06-16 18:19:23 -04:00
Thomas Harte
530cf3dcbb
Made an attempt to consolidate serialisation and clock rate adherence, allowing a floating-point clock rate.
2016-06-16 18:04:54 -04:00
Thomas Harte
ce59ad1911
Minor on-disk shuffle, to try to clarify ownership of responsibility.
2016-06-15 08:11:30 -04:00
Thomas Harte
45999f5b26
This should be strong.
2016-06-15 08:07:59 -04:00
Thomas Harte
e0baaf17f1
Added class prefix.
2016-06-15 08:07:25 -04:00
Thomas Harte
695dd2e9e3
Started upon a delegate protocol for the AudioQueue, resolving my use of a deprecated API while I'm at it.
2016-06-15 07:35:34 -04:00
Thomas Harte
a9036e7aa4
Increased buffering range of audio as a quick fix for now. Basically means: increased latency as a short-term fix.
2016-06-14 07:31:47 -04:00
Thomas Harte
fcf4b14344
Extended to allow floating-point sampling rates. Which makes sense.
2016-06-13 19:30:41 -04:00
Thomas Harte
4fec625b19
Minor cleaning, implemented clearAllKeys
.
2016-06-12 10:38:21 -04:00
Thomas Harte
ec604f1414
Expanded mapped keys just a tiny bit further.
2016-06-12 10:35:47 -04:00
Thomas Harte
167ed9b8bb
Added enough to load a PRG as a ROM.
2016-06-11 14:00:12 -04:00
Thomas Harte
d9b001d3fc
Minor clean-ups.
2016-06-11 13:51:04 -04:00
Thomas Harte
3e8d383615
Improved key map. Possibly enough to type some basic BASIC?
2016-06-11 13:19:59 -04:00
Thomas Harte
d1731b1d26
Hacked my 6522 to work. Mistake is in not returning output as input when appropriate — i.e. that I'm ignoring data direction. Also fixed K and L keys.
2016-06-11 13:06:01 -04:00
Thomas Harte
271de23ee6
Ran on in and introduced a bunch more keys, hopefully to help to diagnose.
2016-06-11 12:26:19 -04:00
Thomas Harte
d7c1f5b18a
Made an attempt at hooking up the '2' and '4' keys. A mostly unsuccessful attempt. 2 does nothing, 4 clears the screen.
2016-06-11 11:50:37 -04:00
Thomas Harte
0b221e773f
Fixed ROM naming and sizes, ensured machines without sound outputs don't end up with an audio queue.
2016-06-05 11:20:05 -04:00
Thomas Harte
12243c40ad
Kicking the ball a little further down the road, ROMs and PRGs now reach the actual emulated machine.
2016-06-05 09:06:59 -04:00
Thomas Harte
b29b2a5d08
Added forwarding of a loaded PRG from the Swift document to the wrapper. So I think that possibly completes the Swift side of things?
2016-06-05 09:01:32 -04:00
Thomas Harte
8052ce9223
System ROMs are now supplied to the Vic-20 wrapper, though they stop there. I also factored key forwarding out of the ElectronDocument and into the superclass, depending upon the child conforming to CSKeyboardMachine.
2016-06-05 08:53:05 -04:00
Thomas Harte
363e14a92f
Reorganised system ROMs out of the Mac-specific folder, adjusted Mac code to expect to find them organised hierarchically (as how many os.roms am I going to have?) and added readme files to explain what's missing from the Git repository.
2016-06-05 08:33:01 -04:00
Thomas Harte
b10a06e700
A CRT is still absent but this moves the ball back into the C++ side's court.
2016-06-04 22:00:50 -04:00
Thomas Harte
06e1db8c85
This now gets as far as missing selectors.
2016-06-04 21:49:03 -04:00
Thomas Harte
eff28e95a4
Added XIB file.
2016-06-04 21:45:39 -04:00
Thomas Harte
404873fe58
Started sketching out infrastructure for Vic-20 support.
2016-06-04 21:43:50 -04:00
Thomas Harte
d6e8cd676a
Trimmed and reordered just a little.
2016-06-04 16:02:16 -04:00
Thomas Harte
68a8851c52
Increased parallelism, allowing a simplification in the GL view.
2016-06-02 22:29:09 -04:00
Thomas Harte
e3b95b8d2b
Back to asynchronous updates and drawing, to try to improve guarantees on audio latency; experimenting with whether other parts of the approach are fundamentally flawed; added a broad-phase for scheduled updates on the 2600.
2016-06-02 21:22:55 -04:00
Thomas Harte
11073daee1
Issues appear to be around timing generally. Working on it.
2016-06-02 20:15:48 -04:00
Thomas Harte
253e5a4203
With no regard to performance whatsoever, endeavoured to bring sound to the 2600. It's very scratchy, so something is wrong.
2016-06-02 19:50:16 -04:00
Thomas Harte
8623dc2833
Consolidated a little more within the common code, adding sampling rate selection based on querying the machine.
2016-06-01 19:04:07 -04:00
Thomas Harte
50543e9676
Minor factoring up: the audio queue is now pushed universally by MachineDocument
.
2016-05-31 22:36:53 -04:00
Thomas Harte
c773c3a66c
Started trying to clean up and consolidate on the Swift side of things but time is up for the day.
2016-05-31 22:32:38 -04:00
Thomas Harte
8dc66167be
Made an attempt to consolidate the Objective-C++ side of things based on the incoming CRTMachine::Machine
.
2016-05-31 22:16:20 -04:00
Thomas Harte
5c4f35e13f
Finally started on generalising the C++ stuff so as to be able to be able to get a working audio binding on the OS-specific side without further repetition by factoring an appropriate protocol out from the Electron and sketching out the correct speaker class for the Atari. Added a method to ask it what a good output frequency would be.
2016-05-31 21:23:44 -04:00
Thomas Harte
40600b4bcb
Made sprite placement consistent at least. Not necessarily yet correct.
2016-05-18 22:07:24 -04:00
Thomas Harte
3765c5fbb5
Fixed error that would prevent an interrupting frame from ever being drawn.
2016-05-18 21:45:35 -04:00
Thomas Harte
ddfc9910e5
Sought to draw in a standard serial arrangement as and when bandwidth allows it.
2016-05-09 07:17:12 -04:00
Thomas Harte
1bb92550f8
It's 2016.
2016-05-02 22:02:06 -04:00
Thomas Harte
6982e945fb
Fixed those issues breaking GL state, I hope.
2016-05-01 16:17:52 -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
d221c712b0
Ensured GL context is active when destructing CRTOpenGL.
2016-04-24 20:34:25 -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
80a3169674
Started reviving the Atari 2600 emulation. Put new startup sequence into place.
2016-04-24 06:56:08 -04:00
Thomas Harte
9c89b668ae
Made further attempts to improve synchronisation and interrelated timing between display and machine update.
2016-04-20 22:35:46 -04:00
Thomas Harte
7aa87723a9
Added: key states are all cleared if the window loses focus. Which resolves sticky key issues. Allowing me just to use command+option+O for options and map both command and option as FUNC.
2016-04-19 21:29:10 -04:00
Thomas Harte
d5bac2f04f
Spotted error was in texture target all along. This now gets as far as showing something a lot like the correct display, but precision is way off. Way off.
2016-04-18 21:32:48 -04:00
Thomas Harte
86626bbd72
Switched key that maps to FUNC from command to option. Logic is that command may frequently be used for performing an action which changes the key window, in which case we won't realise if it is released.
2016-04-18 19:20:26 -04:00
Thomas Harte
f89308e913
Set the 'options' windows to hide on application deactivation so that they don't cluelessly sit on top of the rest of the system.
2016-04-18 19:14:58 -04:00
Thomas Harte
bf29c8e2bf
Fixed mismatch in television/monitor selection, ticked view for drawing concurrently, since it can, removed stray space.
2016-04-18 19:01:15 -04:00
Thomas Harte
3d53f157de
Output selection now takes effect. So I can stop accidentally committing changes back and forth.
2016-04-18 08:27:58 -04:00
Thomas Harte
94f148e212
Wired in options, at least getting as far as the Objective-C bridge. Then fast loading makes it to the emulated machine, display output type doesn't.
2016-04-18 08:21:00 -04:00
Thomas Harte
6158275ea7
Started adding an options panel.
2016-04-17 21:43:39 -04:00
Thomas Harte
499f7ace07
Re-enabled working video output for the Electron for the day and consolidated the rough metric I'm using to pick a number of taps for the audio filter.
2016-04-17 20:43:20 -04:00
Thomas Harte
104f44f27f
Attempted to improve deinterlacing, gave the CRT full control over blend mode, switched back to 2000000Mhz audio.
2016-04-14 22:20:47 -04:00
Thomas Harte
2cc72169ff
Ensured machines can nominate their own aspect ratio windows. Switched to 11/10 for the Electron.
2016-04-11 23:12:56 -04:00
Thomas Harte
7276a06cc0
Added a helper to calculate a visible rect based on output timings, used it to scale the Electron output up to the full window size.
2016-04-11 21:47:23 -04:00
Thomas Harte
e617bd2bb3
Turned audio quality up to the maximum, at least for now.
2016-04-06 21:12:22 -04:00
Thomas Harte
28e6517234
Switched away from tracking absolute time to tracking relative.
2016-04-06 20:46:00 -04:00
Thomas Harte
d4be4c4769
Of course, I want min
. Not max
.
2016-04-06 20:27:48 -04:00
Thomas Harte
fd1f6a7e1f
Expanded on thinking.
2016-04-06 19:35:53 -04:00
Thomas Harte
e885438363
The penny has finally dropped that I can drive the CPU stuff in a manner completely decoupled from the GPU stuff. For much improved parallelisation.
2016-04-06 19:34:34 -04:00
Thomas Harte
4595741ab0
Made an attempt not to interrupt the display link queue too much when emulation is running slowly.
2016-04-04 20:22:33 -04:00
Thomas Harte
3038704977
Attempted to introduce a lowpass filter to the graphics output, reverted 6502 optimisations as seemingly not working.
2016-03-21 22:01:25 -04:00
Thomas Harte
5966ac845f
Switched symbols and updated all-RAM 6502 in order to fix unit test target.
2016-03-20 22:48:56 -04:00
Thomas Harte
902017a962
Fixes: drop any processing backlog, try not to allow an Electron document to close mid-draw, perform a frame grab even if the emulated machine is over-processing, really really don't create a CRT until it's safe.
2016-03-20 18:42:37 -04:00
Thomas Harte
fb6fb5d948
Switched to two-phase setup to deal with OpenGL scheduling.
2016-03-20 13:50:13 -04:00
Thomas Harte
eabc382540
Fixed: of course I can't rely on the pointer to CVTimeStamp not becoming dangling during a queue jump.
2016-03-19 23:02:42 -04:00
Thomas Harte
4c5d66c317
Made sure GL context isn't activated until it's locked.
2016-03-19 22:54:56 -04:00
Thomas Harte
a546277f88
Added the simplest mechanism to decouple emulation from the display link queue.
2016-03-19 22:53:37 -04:00
Thomas Harte
9da7716c72
Attempted to simplify threading, thereby allowing machines to be constructed within a valid GL context, and started adding appropriate GL syncs. Which all oddly drops everything to a negligible FPS. Investigation will follow.
2016-03-19 22:46:17 -04:00
Thomas Harte
1c4acfb599
I think this is a prima facie acceptable implementation of the fast tape hack.
2016-03-13 17:39:53 -04:00
Thomas Harte
bb0cd89574
Got explicit about threading guarantees.
2016-03-13 13:38:03 -04:00
Thomas Harte
cfa616d593
Fixed: timing issue versus supplied test ROM was failure to include the Plus 1 ROM in the mix.
2016-03-12 11:51:20 -05:00
Thomas Harte
1e5fe2b2c1
Made an attempt to reestablish the Atari 2600 output connection despite various changes (TODO: generalise that stuff), and to start creating the composite shader.
2016-03-07 21:04:04 -05:00
Thomas Harte
41c09f8c3f
Renamed CSCathodeRayView to CSOpenGLView as it no longer has any CRT-related responsibilities. It just does the GL and manages a serial dispatch queue.
2016-03-05 14:45:09 -05:00
Thomas Harte
95efeb1d56
Ensured all delegate and responder delegate messages occur on the same queue.
2016-03-05 14:35:47 -05:00