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 |
|
Thomas Harte
|
c754a6e45a
|
Decoupled execution speed and frame rate; cleaned up.
|
2016-03-03 22:12:31 -05:00 |
|
Thomas Harte
|
60d35fa72b
|
Requested multisampling, if available, rather than supersampling.
|
2016-02-27 22:46:31 -05:00 |
|
Thomas Harte
|
c7f54d649e
|
Switched back down to two samples per pixel. Though one might do it. Need to investigate.
|
2016-02-18 23:21:25 -05:00 |
|
Thomas Harte
|
3ea0d04a1a
|
-dealloc now blocks until all audio queue buffers are no longer playing.
|
2016-02-16 21:47:23 -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
|
a01f90ff3e
|
Attempted a switch to the real PAL visible area and to something a bit like a real phosphor decay.
|
2016-02-14 21:57:23 -05:00 |
|
Thomas Harte
|
7580d192d5
|
Fixes: now setting correct frame time estimate, properly enabling the timestamp attribute, and ensuring that the Electron flushes screen work at least once per host frame update.
|
2016-02-14 19:28:02 -05:00 |
|
Thomas Harte
|
7bc5a43c36
|
Fixed type warning.
|
2016-02-12 22:30:22 -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
|
d3d505b7bc
|
That's one header file less.
|
2016-02-05 23:05:58 -05:00 |
|
Thomas Harte
|
6ab425deda
|
There is now a semi-reasonable amount of screen output again.
|
2016-02-05 21:35:39 -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
|
8bc3f8046d
|
This endeavours to move everything into the CRT class except the final version of shader building.
|
2016-02-04 22:57:46 -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
|
0efe4b312c
|
Disabled my various bits of rate interchange debugging; improved test for when to call update_display due to a RAM write.
|
2016-01-21 22:16:52 -05:00 |
|
Thomas Harte
|
de7218cdf0
|
Added a lot of commenting to the CPU6502 definition, simplifying its construction. Added missing nullability modifier to CSElectron. Fixed bad-habit Objective-C style naming on the Electron's Interrupt enum.
|
2016-01-20 21:55:38 -05:00 |
|
Thomas Harte
|
f727582911
|
Started making first moves towards stripping CSCathodeRayView of its responsibilities. If that can be merely an OpenGL view that presents things, things will be a lot more portable.
|
2016-01-20 08:21:33 -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
|
956b90e203
|
Attempted further to improve latency; added view adjustment for non-4:3 output aspect ratios. The 4:3 is currently hardcoded, so further work will be required.
|
2016-01-18 23:55:52 -05:00 |
|
Thomas Harte
|
90eef1df74
|
Tightened to provide lower latency audio, hopefully.
|
2016-01-18 20:01:06 -06:00 |
|
Thomas Harte
|
03f683d588
|
Gave the audio queue something a lot like a spin lock on waiting to pipe out audio.
|
2016-01-18 19:57:18 -06: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
|
b70fdc2de8
|
Switched to being explicitly careful about not wrapping around and stomping on data not yet output.
|
2016-01-18 13:56:20 -06:00 |
|
Thomas Harte
|
ddcc34740b
|
Added lots of debugging output while I attempt to locate the source of audio scratchiness, also simplified manner of dealing with wraparound within the AudioQueue wrapper.
|
2016-01-18 13:50:19 -06:00 |
|
Thomas Harte
|
781249acf7
|
Fixed crash.
|
2016-01-14 20:35:36 -05: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
|
d9a7ef9e46
|
Edging towards audio output; the speaker is given appropriate input and output rates, and then updated with current divider and enabled/disabled status.
|
2016-01-13 21:03:43 -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
|
3437781abd
|
Started sketching out an interface for sound generation. Which made me realise that the CRT in CRTDelegate was redundant, since C++ has namespaces.
|
2016-01-12 16:54:09 -05:00 |
|
Thomas Harte
|
6112f4ef6b
|
Withdrew soft filtering for now; until the sampling frequency is passed on it's not sufficiently rigorous.
|
2016-01-12 16:42:16 -05:00 |
|
Thomas Harte
|
75d6ec354b
|
Added some very basic filtering in RGB mode.
|
2016-01-12 16:27:09 -05:00 |
|
Thomas Harte
|
49a36ec9ac
|
Added F12 as break.
|
2016-01-11 22:35:52 -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
|
ce916ebd6a
|
Fixed runaway frame generator.
|
2016-01-10 23:32:57 -05:00 |
|
Thomas Harte
|
3d6f20b7b9
|
Output, at last! Though sync is clearly way off.
|
2016-01-09 21:53:33 -05:00 |
|
Thomas Harte
|
09df218c01
|
Some output! Showing that three lines of solid sync isn't smart. But here it is.
|
2016-01-09 21:48:53 -05:00 |
|
Thomas Harte
|
b4f31edea3
|
Made an attempt to get RGB output mode up and running, and showing at least a box where pixels would be.
|
2016-01-09 21:32:56 -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 |
|
Thomas Harte
|
716bb3281b
|
This at least now connects up a CRT, though it never talks to it.
|
2016-01-07 22:26:49 -05:00 |
|
Thomas Harte
|
47a7654c00
|
Added just enough that this is probably a successful boot. I guess I'm going to need to get invested in graphics next? Hmmm.
|
2016-01-07 21:01:13 -05:00 |
|
Thomas Harte
|
0db8938d27
|
Added the option for the CSCathodeRayView to show only a subsection of the full scan area. Zoomed in a little on the 2600. Put in enough piping to give the Electron sight of its ROMs at least.
|
2016-01-06 23:14:36 -05:00 |
|
Thomas Harte
|
bfd9957c81
|
You now get an Electron only if you ask for a new file. That'll do for now while it's the only thing that one might want to start without supplying a file. The 6502 now starts from a defined point — being reset. The Electron is starting to grow the absolute most simple buds of its memory map.
|
2016-01-06 21:09:49 -05:00 |
|
Thomas Harte
|
c69b3256ba
|
Slightly simplified Swift usage.
|
2016-01-04 23:44:36 -05:00 |
|
Thomas Harte
|
616dc0b57c
|
Okay, so this is the absolute bare minimum about of refactoring and wiring necessary to get the [unimplemented] Electron machine pumping.
|
2016-01-04 23:40:43 -05:00 |
|
Thomas Harte
|
43ab8bbad5
|
Okay, so then here's a first shot at the Objective-C -> C++ bridge for the Electron.
|
2016-01-04 23:16:37 -05:00 |
|
Thomas Harte
|
ab45c1d530
|
Started working on a shell for the Electron emulation, including factoring out the common CRT delegate -> Objective-C bridging, serial dispatch queue and frameskipping logic from the Atari 2600 shell.
|
2016-01-04 23:12:47 -05:00 |
|
Thomas Harte
|
22fa024546
|
Added document XIB.
|
2016-01-03 20:46:39 -05:00 |
|
Thomas Harte
|
aa0714fe27
|
Started sketching out an Acorn Electron emulation, as it's a platform I'm familiar with and will force me to figure out PAL decoding. Factored out NTSC-specific parts of the display decoding logic and hence added RGB output mode.
|
2016-01-03 20:41:43 -05:00 |
|
Thomas Harte
|
96503a3ac5
|
Switched to nicer nullable/nonnull syntax.
|
2016-01-02 17:59:21 -05:00 |
|
Thomas Harte
|
feeedbe33b
|
The standard Xcode versioning updates. Nothing of substance.
|
2016-01-02 17:57:23 -05:00 |
|
Thomas Harte
|
5feef2110f
|
Added a very basic attempt at shadow mask emulation.
|
2015-09-24 21:23:16 -04:00 |
|
Thomas Harte
|
63b648be65
|
Switched down to four samples per pixel, just more than half as many, to fit into a vec4. Edges aren't as smooth but I'm wondering whether it'll make much odds when I implement a shadow mask.
|
2015-09-17 19:25:15 -04:00 |
|
Thomas Harte
|
5d6bee4927
|
Of course, being in-phase means being the cosine wave.
|
2015-09-10 21:30:39 -04:00 |
|
Thomas Harte
|
6a0b4e86c8
|
An Xcode beta version bump, nothing more.
|
2015-09-05 17:21:36 -04:00 |
|