1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-19 23:32:28 +00:00
Commit Graph

300 Commits

Author SHA1 Message Date
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