Thomas Harte
|
3ab6585789
|
Started making the format of data included in a CRTFrame less a matter of variously hard-coded magic constants. Which will allow me to separate the idea of an internal lateral position from the direct texture coordinate, avoiding precision sampling errors at the top and bottom.
|
2015-08-02 14:25:21 -04:00 |
|
Thomas Harte
|
be421587ad
|
Eliminated the vertical retrace counter; vertical retrace ends when the beam gets back to the top.
|
2015-08-02 13:48:35 -04:00 |
|
Thomas Harte
|
de4f2bf5dd
|
Maybe the 10 lines resource I saw meant 10 lines including charge time?
|
2015-07-31 19:00:40 -04:00 |
|
Thomas Harte
|
5f1d76e855
|
Can't seem to find any documentation: assumed horizontal sync is generated during vertical.
|
2015-07-31 18:49:02 -04:00 |
|
Thomas Harte
|
c1a12ad4df
|
Fix to make sure end of vertical sync is always correctly spotted as an event, rather than just happening off the books. So I can now watch Joust roll to its heart's content.
|
2015-07-31 18:15:59 -04:00 |
|
Thomas Harte
|
9c91f1a2eb
|
Added an attempt at NTSC/PAL autodetection, based on number of missed vertical syncs.
|
2015-07-31 18:04:33 -04:00 |
|
Thomas Harte
|
a5d66e9dd6
|
Factored out a few more constants, started trying to ensure there's enough slack and the mechanisms in place for the CathodeRayView to hold onto two frames if it desires, for potential phosphor simulation, switched once again to additive blending — much more like a real CRT — and added a sine function across the width of spans per my understanding of how an electron gun actually fires.
Why do all this when overall timing is still so far off? It helps me more easily see how overall timing is so far off.
|
2015-07-31 17:47:10 -04:00 |
|
Thomas Harte
|
c1d1fb65cb
|
Made an attempt properly to emulate the RDY line and the Atari's use of it.
|
2015-07-31 16:54:20 -04:00 |
|
Thomas Harte
|
53dd5c8f16
|
Trying to fix my RDY line emulation. Switched to PAL timings, at least temporarily, since it's starting to make a difference.
|
2015-07-31 16:44:53 -04:00 |
|
Thomas Harte
|
e4615cda2e
|
Switched back to unrealistic solid raster beams for the time being.
|
2015-07-30 23:01:59 -04:00 |
|
Thomas Harte
|
39bfbf1000
|
Attempted ball graphics enable delay.
|
2015-07-30 23:01:28 -04:00 |
|
Thomas Harte
|
6ad3fbbaf2
|
Slowed flywheel adjustments a little, the better to highlight phase errors for the time being.
|
2015-07-30 23:00:54 -04:00 |
|
Thomas Harte
|
78e66d2577
|
Added an attempt at ball rendering.
|
2015-07-30 21:30:00 -04:00 |
|
Thomas Harte
|
cfe758daa0
|
A tweak here, a tweak there, to help with debugging.
|
2015-07-30 21:29:40 -04:00 |
|
Thomas Harte
|
a95b36a53d
|
Made first attempt at missile display. In Enduro, at least, one seems to work but the other seems to be absent.
|
2015-07-30 21:09:18 -04:00 |
|
Thomas Harte
|
1b7846f09b
|
Made a first attempt at the sprite latches. Hopefully this should make a few more Activision logos, etc, show up correctly.
|
2015-07-30 20:52:26 -04:00 |
|
Thomas Harte
|
20c2d98b9a
|
Converted remaining spaces to real tabs.
|
2015-07-30 20:51:32 -04:00 |
|
Thomas Harte
|
1fa7a77793
|
Continuing in my attempts to figure out the complete absence of graphics from some games: there are 262 lines on an NTSC screen, not 256. Also ensured that the CRT has a little spare range at the edges so that its generated triangles don't wrap around just because of integer overflow.
|
2015-07-30 20:07:20 -04:00 |
|
Thomas Harte
|
98efae2536
|
Reintroduced emergency vertical sync — so that output occurs even when the emulation isn't catching syncs properly — and switched some spaces to tabs.
|
2015-07-30 17:16:49 -04:00 |
|
Thomas Harte
|
14adcd2096
|
Had a quick bash at timer overflow.
|
2015-07-30 16:09:32 -04:00 |
|
Thomas Harte
|
58908b60ac
|
So, provisionally: this looks like (i) the one cycle to write; plus (ii) the number of cycles to get to the end of the pixels (which is _horizontalTimer+1 for me because _horizontalTimer = 0 is a pixel); plus (iii) one cycle of latency to wake up. Am I making that up? Time will tell.
|
2015-07-30 15:49:38 -04:00 |
|
Thomas Harte
|
f5475369d6
|
Fixed foreshadowing of sprites yet to come. Put flipMask back the other way around.
|
2015-07-30 12:07:28 -04:00 |
|
Thomas Harte
|
f653b5dff3
|
Made a first tentative attempt at supporting all eight sprite modes.
|
2015-07-30 11:52:28 -04:00 |
|
Thomas Harte
|
151c6b4421
|
Quick fix: add one cycle to get to the genuine end of the line (i.e. after cycle 0, not on it). Not 3, with the video then becoming desynchronised from the CPU clock.
|
2015-07-30 00:00:35 -04:00 |
|
Thomas Harte
|
0124832876
|
Merge branch 'master' of github.com:TomHarte/CLK
|
2015-07-29 23:49:10 -04:00 |
|
Thomas Harte
|
d1ae2caf91
|
Did the absolute minimum necessary to get some sprites showing in some capacity.
|
2015-07-29 23:48:52 -04:00 |
|
Thomas Harte
|
23df94d011
|
Got at least as far as putting a single dot at the player 0 and player 1 positions. Which may or may not be accurate.
|
2015-07-29 22:37:37 -04:00 |
|
Thomas Harte
|
596d34190c
|
Fixed: write pointer is calculated only after write x and y are known. This is probably the memory handling problem?
|
2015-07-28 08:15:54 -04:00 |
|
Thomas Harte
|
164866d613
|
Collapsed two methods into one, to avoid redundant pixel copying.
|
2015-07-27 22:12:13 -04:00 |
|
Thomas Harte
|
828ae66a45
|
It appears ARC extends its reach into C++ nowadays. Fixed additional retain cycle.
|
2015-07-27 21:17:53 -04:00 |
|
Thomas Harte
|
3c25ead1f3
|
Started working out some of my retain cycles and general failures to release. Switched .mm filename so that Xcode will stop getting confused when I try to switch between implementation and interface files.
|
2015-07-27 21:15:10 -04:00 |
|
Thomas Harte
|
1cbebdafcc
|
This now uploads only a portion of the source buffer if possible. Which is usually possible.
|
2015-07-27 20:58:51 -04:00 |
|
Thomas Harte
|
1f229ee6f7
|
More tweaks to provide a stable image, at least for the time being.
|
2015-07-27 20:18:25 -04:00 |
|
Thomas Harte
|
01109d441b
|
Made an attempt at NTSC colours. Hard coded in RGB, not composite. Short cuts, tsk.
|
2015-07-27 19:04:03 -04:00 |
|
Thomas Harte
|
662e7942ac
|
Enabled multisampling. This is hardly an expensive use case.
|
2015-07-27 16:57:11 -04:00 |
|
Thomas Harte
|
b9cf6fd4dc
|
Implemented a virtual skew control, hard coded to what is conveniently exactly the right number.
|
2015-07-27 16:44:47 -04:00 |
|
Thomas Harte
|
31e9a53a44
|
Removed some debugging code.
|
2015-07-27 16:43:51 -04:00 |
|
Thomas Harte
|
caffe56a2d
|
Slightly expanded width of cathode ray gun, decided to figure out exactly how to deal with off-by-one lengths and precision at a later date, ensured that failure to catch vertical sync doesn't cause out-of-bounds buffer access on the hard-coded, assumed large enough, 512x512 data textures.
|
2015-07-27 00:28:47 -04:00 |
|
Thomas Harte
|
65bb31d55b
|
With around about a thousand issues, not the least of which being sometimes unsafe memory accesses, I've at last got pixels on screen.
|
2015-07-26 23:50:43 -04:00 |
|
Thomas Harte
|
cd0a62d21e
|
With a slight tweak to the informal protocol used for 6502 memory access cycles, ensured the wait strobe actually halts the CPU, to give a more accurate linking of machine time to real time.
|
2015-07-26 15:55:19 -04:00 |
|
Thomas Harte
|
8efd449834
|
Switched to a down counter and a reset test that remains unconditional but doesn't depend on % (which seems to turn into a big imul-powered deal). Probably pointless mulling around the edges at this point.
|
2015-07-26 15:45:19 -04:00 |
|
Thomas Harte
|
6252f6030f
|
Switched to idiomatic source name, ensured latest project name is in all appropriate header places, threw texture coordinates slightly into the shader mix.
|
2015-07-26 15:25:11 -04:00 |
|
Thomas Harte
|
e53fbcf9ea
|
Reshuffled to make the OpenGL view explicitly a conduit for CRT-style output, and to give it responsibility for frame drawing. Which is still an awkward thread hop for the time being, but I've yet to read up on the advocated approach to multithreading with an NSOpenGLView; it looked like special provisions were available.
|
2015-07-26 15:13:46 -04:00 |
|
Thomas Harte
|
dd428c5d4d
|
Slightly relaxed time it takes to recognise vertical sync; considered what to do about reviving proper vertical sync but then gave up.
|
2015-07-24 23:56:25 -04:00 |
|
Thomas Harte
|
78a91b67c5
|
Quickie: make sure the correct context is adjusted; use the intended convertPointToBacking:.
|
2015-07-24 23:42:19 -04:00 |
|
Thomas Harte
|
cea2580000
|
Upped internal precision a little.
|
2015-07-24 23:36:44 -04:00 |
|
Thomas Harte
|
ecb2898bd5
|
The overall architecture of who has responsibility for what is now very askew but: the CRT now outputs a tightly packed short buffer, with the probable OpenGL destination in mind. So it's now all fixed arithmetic internally. CRTFrame is reduced to a plain C struct with the intention that the OpenGL view will take responsibility for it and stop doing the back-and-forth sprint on getting buffer data. The Atari 2600 now outputs explicit blanks rather than level blacks for its border, so that it's easier visually to debug the CRT in its form as far as it has currently progressed: to drawing lines where the cathode ray gun would run while outputting pixel. I note that I'm still not quite getting vertical sync right yet — I'm just accepting it anywhere in teh frame — but that should be an easy fix.
|
2015-07-24 23:29:45 -04:00 |
|
Thomas Harte
|
5ab47e600a
|
Got through the requisite amount of invisible pain to get something onto my GL display. But clearly this is factored in entirely the wrong way. Work to do.
|
2015-07-24 20:37:08 -04:00 |
|
Thomas Harte
|
31338ef754
|
Okay; having no minimum size is a user experience nightmare. Fixed.
|
2015-07-23 22:54:17 -04:00 |
|
Thomas Harte
|
44e8ffd01c
|
Ensured windows start and remain 4:3, made sure I request a GL 3.2 context and that an exception is raised if I call any old-fashioned GL functions.
|
2015-07-23 22:51:53 -04:00 |
|