Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
project:atari_asteroids_autoplay [2013/03/17 05:09] – [Resources Used] smarkproject:atari_asteroids_autoplay [2013/03/17 05:31] (current) – [3/16/2013 @ 9:07pm] smark
Line 89: Line 89:
 {{:project:130316_b11_saleae_logic.png?direct&600}}\\ {{:project:130316_b11_saleae_logic.png?direct&600}}\\
 \\ \\
-Well thats interesting but not really visually useful is it? If you take a vertical slice at any point in that output and assign each channel a 0 or 1 you will get the binary representation just like above. I've compiled the output for each slice (all 336,000 of them) and uploaded them here: {{:project:130316_b11_saleae_logic_export.zip|}}\\+Well thats interesting but not really visually useful is it? If you take a vertical slice at any point in that output and assign each channel a 0 or 1 you will get the binary representation just like in the table above. I've compiled the output for each slice (all 336,000 of them) and uploaded them here: {{:project:130316_b11_saleae_logic_export.zip|}}\\
 \\ \\
-Now that I have 336,000 height values (Y-Axis 0-1023) I was able to compile this charge with gnuplot:\\+Now that I have 336,000 height values (Y-Axis 0-1023) I was able to compile this chart with gnuplot:\\
 \\ \\
 {{:project:130316_b11_composite_output.png?direct&600}}\\ {{:project:130316_b11_composite_output.png?direct&600}}\\
Line 97: Line 97:
 Well HMM that looks a little bit like the horizontal output for the test pattern! Don't quite see it? Heres a labeled version:\\ Well HMM that looks a little bit like the horizontal output for the test pattern! Don't quite see it? Heres a labeled version:\\
 \\ \\
-{{:project:130316_b11_composite_output_labeled.png?direct&600}} +{{:project:130316_b11_composite_output_labeled.png?direct&600}}\\ 
- +\\ 
 +Looking at the math here there is an entire screen refresh approximately every 14ms. Do I think I can write code efficient enough to process several thousand points minimum in less than 14ms? I don't really know how long 14ms is in the programming world, but I think even if the application is multithreaded and I have one thread for each interface (1 for each: Beam On/Off, X Position, Y Position, Game Processing) I don't think I can be quite that efficient. I think now would be a good time to give up on the strategy of processing each frame. Even if I process one out of every 10 frames at 140ms (which I think is probably doable) I'm still not sure I can filter through and pick out a frame easily enough. There would have to be some sort of a pattern recognition that would be insanely hard to write and require a lot of processing time. I think my next step is to look at intercepting the commands as they go to the vector RAM.\\ 
 +\\ 
 +Now that we're moving in that direction... What do I know? The Vector State Machine seems to be a complicated beast. I believe basically the CPU sends a pulse to the Vector State Machine to turn on. It starts its drawing timers and such and immediately starts reading from the vector RAM. It swaps back and forth between reading and executing until the vector RAM is empty, then it turns itself off and waits for the next command. I'll need to decide on one of two approaches:\\ 
 +\\ 
 +  - Read from the CPU as it goes into the RAM and just assume that the commands are written to the screen quickly 
 +  - Watch that "pulse" line and inspect all of the communications out of the vector RAM and just assume that the vector circuits generate it right away (a given). 
 +\\ 
 +Well I'm going to go investigate how to look at the RAM. I don't know how easy this will be without the Asteroids game code....
  
 ===== Major Challenges ===== ===== Major Challenges =====
project/atari_asteroids_autoplay.txt · Last modified: 2013/03/17 05:31 by smark
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0