Thomas Harte
|
1c6de7692d
|
Made an attempt to fix tape output interrupts; offloaded raster width and placing conversion to the GPU.
|
2016-02-27 20:37:41 -05:00 |
|
Thomas Harte
|
db18c85423
|
Simplified the run builder rather; put a double check of Electron timing in place.
|
2016-02-25 22:01:42 -05:00 |
|
Thomas Harte
|
1eea28b692
|
Disabled some debugging parts, added some others, marked some things as inline. Ticking over.
|
2016-02-22 23:35:42 -05:00 |
|
Thomas Harte
|
ec3cccbb0d
|
Working towards HQ UEF support: fixed bug whereby writing to tape output would reset input pulse stepper; added support for chunk 0116 and approximate support for 0113.
|
2016-02-20 22:03:14 -05:00 |
|
Thomas Harte
|
3754cf4bce
|
Played about with interrupt timing.
|
2016-02-20 21:24:02 -05:00 |
|
Thomas Harte
|
574985f9a2
|
Fixed interlaced timing; switched to a more robust detector for horizontal sync; eliminated some test logging.
|
2016-02-20 20:29:40 -05:00 |
|
Thomas Harte
|
00f414d757
|
Made an attempt to reintroduce interlacing and screen modes with gaps. Something's wrong with synchronisation though, so most likely I'm outputting a bad signal.
|
2016-02-20 17:32:51 -05:00 |
|
Thomas Harte
|
da361be3ee
|
This might be more accurate? Probably not. Who knows?
|
2016-02-20 00:13:43 -05:00 |
|
Thomas Harte
|
518c134348
|
Blank lines are missing (if the double negative can be forgiven) but the framebuffer is otherwise seemingly working well again.
|
2016-02-20 00:11:23 -05:00 |
|
Thomas Harte
|
a3432120f3
|
Fixed synchronisation — my two fields weren't of equal length, I wasn't breaking calls to the CRT upon 40/80 transitions, I had the wrong maximum run length. Now I just need to put real pixels back in.
|
2016-02-19 23:57:57 -05:00 |
|
Thomas Harte
|
1954f7bcbd
|
Got back to a stable image, at least when staying in a mode. Which is what I was trying to fix. Hmmm.
|
2016-02-19 23:41:09 -05:00 |
|
Thomas Harte
|
dce1649fc5
|
Commuted some camelCase variables into more standard C++ underscore names; decided the best fix for the graphics output is to break it down into much simpler chunks. output_pixels is currently a placeholder that simply outputs blank so the current effect is that all data is missing but it should be easy enough now to put pixels back in.
|
2016-02-18 23:23:49 -05:00 |
|
Thomas Harte
|
0b5417ab44
|
Made an attempt to put interrupts in the correct places regardless of even/odd field.
|
2016-02-16 20:36:19 -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
|
7bd237193d
|
Edged closer towards realistic timing.
|
2016-02-13 20:52:35 -05:00 |
|
Thomas Harte
|
341fafd3c5
|
Adjusted visible area.
|
2016-02-12 19:52:04 -05:00 |
|
Thomas Harte
|
1d20a29d97
|
Made an attempt to switch to the flywheels for both vertical and horizontal sync, and to act more appropriately for out-of-bounds sync requests. Lots of tweaking to do, I fear.
|
2016-02-11 23:43:08 -05:00 |
|
Thomas Harte
|
86017de1fb
|
Fixed field timing. It's 312.5 lines now, closer to the PAL standard.
|
2016-02-11 22:12:37 -05:00 |
|
Thomas Harte
|
c66409421e
|
Switched to generating an interlaced output, that apparently being correct. Enabled a poor man's version of phosphor persistence to smooth things out a little. It's not completely unconvincing.
|
2016-02-10 23:11:25 -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
|
2e3ba6bbb2
|
Removed some logging.
|
2016-02-07 14:42:40 -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
|
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
|
adc6838ba0
|
Continued slow migration of shader ownership to CRT. Attempted to start debugging the tape interface.
|
2016-01-27 21:35:57 -05:00 |
|
Thomas Harte
|
96c946b8af
|
Made a very basic attempt to emulate tape output.
|
2016-01-24 18:20:55 -05:00 |
|
Thomas Harte
|
ace331d4b4
|
Got a bit higher level in CRT timing specification. Which internally allows it now to infer the colour clock frequency. Which will be helpful momentarily.
|
2016-01-23 18:53:20 -05:00 |
|
Thomas Harte
|
cd97617a8a
|
Bumped the speaker up to the full namespace, since Tape lives there to avoid delegation complexity. Turned the CRT into something the Electron statically owns, fixing a memory leak by simplifying.
|
2016-01-23 17:45:06 -05:00 |
|
Thomas Harte
|
f4cd0aa38e
|
Ensured that all relevant information is given to the tape class. Made an attempt not to write to a screen output buffer if we don't have one. Added some debug printing.
|
2016-01-23 13:09:56 -05:00 |
|
Thomas Harte
|
949c33774a
|
Fixed failure to set a delegate, slowed tape speed if operating in RAM.
|
2016-01-23 11:42:14 -05:00 |
|
Thomas Harte
|
43a7d1b7ae
|
It'll be helpful to be able to isolate the tape interface when I'm faking a fast load. So factored out.
|
2016-01-23 00:14:44 -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
|
82cb1c365c
|
Further simplified inner loops.
|
2016-01-21 21:35:04 -05:00 |
|
Thomas Harte
|
34640cec93
|
Started trying to move some logic out of the inner loop.
|
2016-01-21 21:28:09 -05:00 |
|
Thomas Harte
|
48ddd3c497
|
Set about documenting the CRT; while doing so decided to add an optional clock divider for input; having done so decided to try to exploit it with the Electron.
|
2016-01-21 21:17:47 -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
|
4c16d34063
|
Moved set_tape so that the inline definition of get_next_tape_pulse is visible to it. Also eliminated some dead typedefs.
|
2016-01-20 08:27:25 -05:00 |
|
Thomas Harte
|
280a2292ff
|
Shushed.
|
2016-01-19 23:33:15 -05:00 |
|
Thomas Harte
|
9036cf3b7c
|
Thus did the first UEF load.
|
2016-01-19 23:03:27 -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
|
e63b6d22ae
|
As shown by the commented-out code, the aliasing-adaptation seems to be working. So something is wrong somewhere else.
|
2016-01-14 21:59:37 -05:00 |
|
Thomas Harte
|
383b2be4c6
|
Fixed one off-by-one error.
|
2016-01-14 21:33:27 -05:00 |
|
Thomas Harte
|
8bd04a6be4
|
Switched model for filter subclasses. Implemented test square[-ish] wave to check for obvious stream errors. None is clear.
|
2016-01-14 21:27:02 -05:00 |
|
Thomas Harte
|
38ffcaa262
|
Here, at last, is _some_ audio output, at least.
|
2016-01-14 20:33:22 -05:00 |
|
Thomas Harte
|
439d452e23
|
Resolved some errors.
|
2016-01-13 22:11:33 -05:00 |
|
Thomas Harte
|
49e89a4bcb
|
I'm not yet completely convinced by my approach to time basing, but it'll probably do? If so then this more or less gets me ready for a point-sampled filtering.
|
2016-01-13 22:02:39 -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
|
84ba4e2900
|
Tidied a little, started working towards supporting speaker output.
|
2016-01-12 22:19:56 -05:00 |
|
Thomas Harte
|
75d6ec354b
|
Added some very basic filtering in RGB mode.
|
2016-01-12 16:27:09 -05:00 |
|
Thomas Harte
|
cba09b5490
|
Switched display update and RAM write order.
|
2016-01-11 22:29:16 -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
|
72019d0ea3
|
Made an attempt to get video output correct.
|
2016-01-11 22:08:30 -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
|
ccf20299a3
|
Made an attempt at getting some interrupts all up inside this thing.
|
2016-01-10 19:06:46 -05:00 |
|
Thomas Harte
|
cc5ba8243e
|
Fixed: turned out the power-on bit was being cleared.
|
2016-01-10 17:17:39 -05:00 |
|
Thomas Harte
|
d95414b2eb
|
I'm not really sure what's going wrong with paging yet but this fixes the 0xc000 byte error.
|
2016-01-10 12:30:24 -05:00 |
|
Thomas Harte
|
e07981c147
|
Fixed screen start address.
|
2016-01-09 22:52:08 -05:00 |
|
Thomas Harte
|
1308332a71
|
Hard-coded to 40 columns of black and white, here's some text, at least.
|
2016-01-09 22:39:46 -05:00 |
|
Thomas Harte
|
037602765a
|
This now correctly (I think) decodes information posted to the CRT. But doesn't yet post it correctly. I'm very close now, I hope.
|
2016-01-09 22:19:00 -05:00 |
|
Thomas Harte
|
07a041d788
|
Fixed vertical retrace sync.
|
2016-01-09 21:54:31 -05:00 |
|
Thomas Harte
|
3d6f20b7b9
|
Output, at last! Though sync is clearly way off.
|
2016-01-09 21:53:33 -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
|
7341f5c341
|
This is intended to be enough to start producing something of an output. But something's obviously still broken.
|
2016-01-09 20:26:40 -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
|
8c1bfa5a05
|
This is the bare minimum to prove that the ROM is trying properly to boot.
|
2016-01-07 20:36:27 -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
|
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 |
|