Videopac / Odyssey2 forum
September 18, 2019, 02:07:42 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News: Al lot of attachments from Nov 2011 till april 2012 are damaged. Please ask the original poster to re-upload if you need them.
 
   Home   arcade Help Login Register links videopac.nl  
Pages: [1]   Go Down
  Print  
Author Topic: Exact Cycle Timing for the 8244  (Read 4301 times)
kevtris
Trying to get the cartridge in...
*
Posts: 19


« on: November 30, 2011, 08:59:00 AM »

Well I thought I'd start a new thread to go along with all the information I have been finding out about the video chip.  As mentioned in the old thread, I received the console monday and I have A/V modded it, hooked it up to the logic analyzer, and finally removed the 8244 to poke directly using a microcontroller.

This has been done, and I have already generated some nice timing information. 

Tonight, I worked on exact sprite behaviour and I have generated timing information related to the sprites.  It ended up being easy to simply load some sprites into the chip using the microcontroller and record the data coming out the same way I did for the basic scanline/frame timing.

That information is now being collected here:

http://blog.kevtris.org/blogfiles/odyssey2_timing.txt

Tomorrow, I will perform more tests and add the results to this text file and announce anything new I find out.

But, a few minor things I found interesting. 

* It's possible, using the sprite attribute bits, to move a sprite in 1/2 pixel steps across the screen (single width sprites).
* The sprite's upper left corner is at X/Y count (reg A5h, A4h) <spriteX+5, spriteY>.
* There's 227.5 cycles per scanline.

Tomorrow I will hopefully get through testing maximum sprite X/Y ranges, and the grid + dot stuff.
Logged
gertk
Post Axe Pete!
*****
Posts: 859



gertk64
WWW
« Reply #1 on: November 30, 2011, 12:54:48 PM »

Impressive stuff !

This is useful for my LCD screen too, maybe I can even get the sprite movement visible 'per screen pixel' (the LCD is 640x480)
Logged

>>G7000 G7200(P+S) G7400 N60 JET27 VG5000 ZX80 ZX81 ORIC-1 COMX35 Aquarius<<
kevtris
Trying to get the cartridge in...
*
Posts: 19


« Reply #2 on: December 01, 2011, 06:07:28 AM »

I have finished the sprite and grid stuff.   Exact cycle timing for the sprites and grid have been generated now.  I found a few interesting things this time around:

* The dot grid WILL NOT WORK unless the normal grid is turned on.
* The sprites are emitted over a very large part of the screen, from X = E3, E2, 00-B5 and Y = 00 to F2.
* The very last pixel of the last scanline where sprites can start will not emit a sprite.
* The Y coord of the sprite when set at 00, acts as if it were set to 01.

(Check the first post in the thread for the link to version 3.00 of the document)


gertk:

You should be able to do it.  The horizontal resolution of the 8244 is approximately 320 pixels wide.  You should be able to take the doubled frequency (7.xMHz) before the 7474 divide by 2, and use it to count of 455 pixels of horizontal resolution.  You can even add your own oscillator at 4x the 3.xxMHz rate the video chip uses and divide it by 4 before feeding it into the chip.  If you count off 910 clocks per scanline, you will get exactly 640 rendered pixels on your screen with 270 blanked pixels.

Logged
gertk
Post Axe Pete!
*****
Posts: 859



gertk64
WWW
« Reply #3 on: December 01, 2011, 12:49:09 PM »

This is what I got working earlier this year:

http://videopac.nl/forum/index.php?topic=1613.0

Logged

>>G7000 G7200(P+S) G7400 N60 JET27 VG5000 ZX80 ZX81 ORIC-1 COMX35 Aquarius<<
kevtris
Trying to get the cartridge in...
*
Posts: 19


« Reply #4 on: December 06, 2011, 09:20:34 AM »

Well I have updated the document a couple more times now.

EVERYTHING is fully reverse engineered at this point, except sound!

At this point, there should be no excuse for poor O^2 emulation ever again :-)

I have rewritten my verilog Odyssey^2 8244 code from the ground up with the new findings.  This greatly simplified things, and resulted in perfect emulation of every single NTSC game!  The only minor things are to finish up sound (need to RE that) and fix a minor bug on my "the voice" emulation (after a word is spoken on type and tell, the last phoneme keeps playing.  otherwise it works great).

gertk: that display looks A+ on your system, btw!

After I get done with this, I could probably do the same for the PAL version, but getting a PAL version of the console here in the US will be practically impossible. 
Logged
manopac
Game & App Development
Give this man a Jopac!
*
Posts: 1120



« Reply #5 on: December 06, 2011, 01:22:35 PM »

PM sent ... I can get you the systems as I am really intrested in your findings ...
Logged

sex, lies, and videopac
kevtris
Trying to get the cartridge in...
*
Posts: 19


« Reply #6 on: December 07, 2011, 02:52:09 AM »

I am done now with the reverse engineering!  Everything has now been figured out and documented as far as I know.

The sound system had a few surprises, but now I know exactly how it all works including the noise function.  One interesting thing is the sound interrupt appears to not exist, or it does not function on my 8244.  It might work on the 8245, I don't know.

In any event, grab the file at the link in the first post.  I should probably go back and clean it up and format it into a coherent document about how exactly the 8244 works, but the information in it is pretty solid.

Lemme know if there's any bugs/inaccuracies that can be found (if any).  I have implemented all this functionality into my FPGA O^2 and it seems to work great.  Every single NTSC game is working flawless with no graphical corruption, and sound appears to working good.

Logged
grgh
I'd sell my mother for a Videopac
********
Posts: 2279


Freedom Fighter academy dropout


george.r.g.hayward
WWW
« Reply #7 on: December 07, 2011, 01:07:41 PM »

Do you mind if I put a copy of this document on my Magnavox Odyssey2 console page at www.videopac.com?
Logged

http://www.videopac.com/ reborn Dec-07, forever an ongoing project.
kevtris
Trying to get the cartridge in...
*
Posts: 19


« Reply #8 on: December 08, 2011, 04:50:44 AM »

Do you mind if I put a copy of this document on my Magnavox Odyssey2 console page at www.videopac.com?


Sure you can do that.  Post it anywhere you like so long as attribution remains intact at the top of the file.  I should put wording to that effect in there on the next official release. (Probably when I start reverse engineering the 8245/G7400).

Logged
kevtris
Trying to get the cartridge in...
*
Posts: 19


« Reply #9 on: December 08, 2011, 07:16:13 AM »

Well I played some games using the new timing and sound info and here it is. 

Games played:

Type and Tell
Killer Bees
Attack of the Timelord
Blockout/Breakdown
KC's Crazy Chase
Type and tell again

http://www.youtube.com/watch?v=aLGkrMRb8_s

I guess the audio on Attack of the Timelord was hard to emulate or something (the ship appearing / ship destroying sounds).  I am not sure if they are correct, but should be.
Logged
Rene_G7400
Pedit5
I take the Videopac and leave the Canoli!
*
Posts: 2519



WWW
« Reply #10 on: December 08, 2011, 09:41:15 PM »

I am done now with the reverse engineering!  Everything has now been figured out and documented as far as I know.

Lemme know if there's any bugs/inaccuracies that can be found (if any).  I have implemented all this functionality into my FPGA O^2 and it seems to work great.  Every single NTSC game is working flawless with no graphical corruption, and sound appears to working good.

It's very interesting.
There seems to be an error in it though: on my Odyssey console it's no problem to display characters and quads with Y coordinates in the range of 02 to 0E.
Logged
kevtris
Trying to get the cartridge in...
*
Posts: 19


« Reply #11 on: December 10, 2011, 08:52:39 PM »


It's very interesting.
There seems to be an error in it though: on my Odyssey console it's no problem to display characters and quads with Y coordinates in the range of 02 to 0E.


I will have to poke that again.  Everything else looks OK though?  When I tried to display chars above 0E it seemed to push them into blank where they were not visible.

Oh yeah, is it worthwhile to dump the character set digitally?  Or is the existing dump of it good for sure?  (I seem to recall it was dumped by using sprite collisions).

Logged
Rene_G7400
Pedit5
I take the Videopac and leave the Canoli!
*
Posts: 2519



WWW
« Reply #12 on: December 11, 2011, 04:16:02 PM »


Everything else looks OK as far as I know.
I've never been able to get a sound interrupt or horizontal interrupt either.

Yes, Soeren has written a nice program to dump the character set using sprite collisions. I'm sure it is OK.

Could you also do some tests to find out what happens exactly when two characters overlap?


I will have to poke that again.  Everything else looks OK though?  When I tried to display chars above 0E it seemed to push them into blank where they were not visible.

Oh yeah, is it worthwhile to dump the character set digitally?  Or is the existing dump of it good for sure?  (I seem to recall it was dumped by using sprite collisions).
Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!