Thomas Harte
|
b9721d1d3f
|
Okay, treading water slightly, ensured window content is correct aspect ratio.
|
2015-07-23 20:50:50 -04:00 |
|
Thomas Harte
|
7276c77027
|
A full communication pathway now leads to Atari2600.mm (for now) being in possession of a frame and receiving a command to draw, with a suitable OpenGL context being active and whatever is drawn subsequently appearing.
|
2015-07-23 20:45:07 -04:00 |
|
Thomas Harte
|
0611646181
|
This then is what the serial dispatch queue and the triple buffer achieve together: I can post the runs over to the main thread for processing while emulation continues separately.
|
2015-07-23 20:16:48 -04:00 |
|
Thomas Harte
|
e7237c7bd5
|
Switched to forcing all processing onto a common queue and piping the completed frame over into the Objective-C class.
|
2015-07-23 20:07:35 -04:00 |
|
Thomas Harte
|
d72287a776
|
Looked up normal retrace time (it's a lot less than 16µs and 26 scanlines — more like 7 and 10) and that the visible portion of a line is defined to start about 12 µs after the start of hsync, put the first two numbers into my CRT to make that more accurate, then derived a newer guess about what the Atari 2600 does for each of its 228 cycles. The text version of a frame is now looking pretty good. So it's probably time to hit OpenGL and the OS X side of things. Though I'll have a quick look to find out whether I can learn the exact real Atari 2600 timings before moving on.
|
2015-07-23 19:24:25 -04:00 |
|
Thomas Harte
|
33c06baffa
|
Explicitly separated vertical and horizontal sync event tracking, so as explicitly to be able to handle a coincidental simultaneous occurrence of both. Also for clarity.
|
2015-07-23 18:53:18 -04:00 |
|
Thomas Harte
|
529f61caa1
|
Removed a stray newline.
|
2015-07-22 20:45:21 -04:00 |
|
Thomas Harte
|
5203f31bf4
|
Reintroduced a console examination of the output runs being received after fixing a failure to complete or restart frames over in the CRT; weirdly it seems that sync is being obeyed but raster position is off. So work to do.
|
2015-07-22 20:45:10 -04:00 |
|
Thomas Harte
|
065050115f
|
Made an attempt to switch to a triple-buffering scheme for CRT outputs, with an eye towards asynchronicity.
|
2015-07-22 20:33:20 -04:00 |
|
Thomas Harte
|
b503e13380
|
Fix one: vertical scan speed was failing to allow for the number of cycles in a line.
|
2015-07-22 18:56:35 -04:00 |
|
Thomas Harte
|
963cb2f6fb
|
Attempted to switch to slightly more meaningful names within the CRT and implemented a delegate to investigate output. Working on it.
|
2015-07-22 18:15:18 -04:00 |
|
Thomas Harte
|
908c171d2d
|
Commented the heck out of this thing, to put my thoughts in order if nothing else.
|
2015-07-21 16:37:39 -04:00 |
|
Thomas Harte
|
a1a1b15d18
|
Made a quick attempt to accumulate a list of detected output runs. Which means finally having to specify normal frame height. I'm already at too many magic formulae though, so this will need proper revision when I'm next awake. Definitely my horizontal position advancement is way off.
|
2015-07-20 23:18:56 -04:00 |
|
Thomas Harte
|
4fa315ab4d
|
This looks a lot closer to correct. The loss of horizontal sync during vertical sync is odd but the two should be fully decoupled in here. I'll have to check. Probably I've got something wrong. There are approximate sinusoidals when re-establishing sync, so that's promising as to the flywheel.
|
2015-07-20 21:58:32 -04:00 |
|
Thomas Harte
|
4695295dd1
|
Made complete attempt at sync discrimination. But I seem somehow to be locking such that horizontal sync is in the middle of the line. Obviously my flywheel is at fault somehow.
|
2015-07-20 21:43:00 -04:00 |
|
Thomas Harte
|
4e4c082a05
|
Made some minor attempt at proper sync response. I think I've gone way off piste and overcomplicated it.
|
2015-07-19 23:43:22 -04:00 |
|
Thomas Harte
|
4a1e9fe2a8
|
Rephrased the CRT as owning an arbitrary number of buffers and vending storage space for pixel output. That much better maps to potential implementations of this thing in GLSL, with ES 2.0's limitations kept in mind.
|
2015-07-19 21:21:34 -04:00 |
|
Thomas Harte
|
7df5025eef
|
Started sketching out the delegate interface that will allow a branch from the CRT into whatever native display system is used by a particular platform.
|
2015-07-19 18:32:42 -04:00 |
|
Thomas Harte
|
4d1e410150
|
Fix 1: _horizontalTimer should be treated as read only out here.
|
2015-07-19 16:51:11 -04:00 |
|
Thomas Harte
|
6f78ecdc9c
|
Made first genuine attempt at outputting a meaningful CRT stream. Which shows some significant errors. So work to do.
|
2015-07-19 16:48:14 -04:00 |
|
Thomas Harte
|
2d0f861474
|
Incoming: a 'CRT' class, to receive information intended for a cathode ray tube. To decode sync, etc.
|
2015-07-19 13:36:27 -04:00 |
|
Thomas Harte
|
03a25c8ff2
|
Fixed playfield pixel logic.
|
2015-07-19 10:56:04 -04:00 |
|
Thomas Harte
|
12746b35e3
|
Ensured there's no overflow while changing base.
|
2015-07-19 10:54:19 -04:00 |
|
Thomas Harte
|
412e02fdd8
|
Merge branch 'master' of github.com:TomHarte/CLK
|
2015-07-19 10:52:15 -04:00 |
|
Thomas Harte
|
e0aa1e9f19
|
Minor project rearrangement to aid findability.
|
2015-07-17 09:10:23 -04:00 |
|
Thomas Harte
|
195c8a87d8
|
Introduced enough logic that the Atari 2600 is being run, at least. No output yet though because (i) it has no-one to send output to; and (ii) there's nobody that knows how to display output. Hmmm.
|
2015-07-16 22:14:40 -04:00 |
|
Thomas Harte
|
4496493e85
|
Performed the bare necessary steps to get my little OpenGL view to create a CVDisplayLink and then repaint itself in time with the display.
|
2015-07-16 21:16:21 -04:00 |
|
Thomas Harte
|
1df2c48668
|
Introduced my GL view as the window content.
|
2015-07-16 21:01:49 -04:00 |
|
Thomas Harte
|
5160b6bbb8
|
Separated out different test suites into different XCTest subclasses.
|
2015-07-16 20:52:16 -04:00 |
|
Thomas Harte
|
3e0679235a
|
This now goes just far enough to create an instance of Atari2600::Machine and push a ROM to it. Next jobs are to get a basic CRT emulation wired up, outputting to the window.
|
2015-07-16 20:40:46 -04:00 |
|
Thomas Harte
|
24c0579b94
|
Shuffled things and guessed at things until the Xcode project was happy being subservient to the project proper.
|
2015-07-16 20:27:31 -04:00 |
|
Thomas Harte
|
65d60f065d
|
Started importing unit tests aplenty for the 6502.
|
2015-07-16 20:15:30 -04:00 |
|
Thomas Harte
|
6558ae1425
|
Imported what little I have so far in the way of a memory-access cycle complete 6502 and just enough of a pretend Atari 2600 on top to be able to see some playfields in ASCII art.
|
2015-07-16 19:56:02 -04:00 |
|
Thomas Harte
|
b8947a9aaf
|
Created and imported all the necessary Xcode stuff to create an OS X document-based project that declares itself able to open .a26 files.
|
2015-07-16 19:53:53 -04:00 |
|
Thomas Harte
|
93e76458a8
|
Create README.md
|
2015-07-16 19:47:37 -04:00 |
|
Thomas Harte
|
4cae5e187a
|
Initial commit
|
2015-07-16 19:46:52 -04:00 |
|