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 |
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
b8728285e7
|
An overridden getter looks more like this in Swift.
|
2016-06-23 21:09:34 -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
|
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
|
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
|
e0baaf17f1
|
Added class prefix.
|
2016-06-15 08:07:25 -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
|
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
|
06e1db8c85
|
This now gets as far as missing selectors.
|
2016-06-04 21:49:03 -04:00 |
|
Thomas Harte
|
404873fe58
|
Started sketching out infrastructure for Vic-20 support.
|
2016-06-04 21:43:50 -04:00 |
|
Thomas Harte
|
68a8851c52
|
Increased parallelism, allowing a simplification in the GL view.
|
2016-06-02 22:29:09 -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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
bbffbb5dc2
|
Resolved deadlock if an invalidate call was sent to the Electron while it was in the middle of an update.
|
2016-02-16 20:35:45 -05:00 |
|
Thomas Harte
|
0527888b15
|
Endeavoured to ensure safe shutdown.
|
2016-02-12 22:30:06 -05:00 |
|
Thomas Harte
|
b5bcadb8d3
|
Reinstated clipped CRT output, with more appropriate ownership of the decision.
|
2016-02-07 22:18:55 -05:00 |
|
Thomas Harte
|
80e7e5e602
|
Updated to return old behaviour of drawing only upon changes.
|
2016-02-04 23:05:47 -05:00 |
|
Thomas Harte
|
e0d51408e4
|
Onward with carrying this through to the bitter end, this at least results in all the appropriate knowledge and call-ins occuring at the CRT.
|
2016-02-04 22:28:50 -05:00 |
|
Thomas Harte
|
4554abb755
|
Made an attempt to be more rigorous in display generation on the Electron, to make sure I deal with mid-line changes to/from blank line mode. Even if it turns out that they generate pixels.
|
2016-01-29 21:14:13 -05:00 |
|
Thomas Harte
|
e65cd4cf06
|
Some data is marginally reaching the CPU from the tape.
|
2016-01-19 22:05:34 -05:00 |
|
Thomas Harte
|
5a39e42413
|
Wired up enough such that some basic attempt at parsing a UEF occurs.`
|
2016-01-18 17:06:09 -06:00 |
|
Thomas Harte
|
2779f0e569
|
Statred working on support for at least the most fundamental file format.
|
2016-01-18 15:46:41 -06:00 |
|
Thomas Harte
|
38ffcaa262
|
Here, at last, is _some_ audio output, at least.
|
2016-01-14 20:33:22 -05:00 |
|
Thomas Harte
|
afde8dac49
|
Closed the loop such that audio manages to bubble up into Objective-C.
|
2016-01-13 22:38:59 -05:00 |
|
Thomas Harte
|
d28abdc037
|
Made an attempt at correct timing, adding support for additional paged ROMs, added file association for .rom.
|
2016-01-12 22:34:26 -05:00 |
|
Thomas Harte
|
650077feac
|
Pulled a few things out as constants, zoomed in a little. Still in a 4:3 window though.
|
2016-01-11 22:18:34 -05:00 |
|
Thomas Harte
|
e93dbdb463
|
Implemented keyboard input.
|
2016-01-11 19:48:31 -05:00 |
|
Thomas Harte
|
a900bfed65
|
Fixed to ensure that frame rendering wraps around, and to properly connect the Electron to its view. Now I need a working pixel shader.
|
2016-01-09 20:34:22 -05:00 |
|