artrag Posted November 16, 2014 Share Posted November 16, 2014 (edited) Ok, so after looking at the source code I see the problem of this demo on the F18A. It does in fact work, however the you have to remove the jumper USR1 or set the max sprite value in VR30 to 4. On the F18A the "5S" flag becomes the "Nth-Sprite" flag. The default is 32 sprites on a line, so the flag was never set because you only have a max of 5 sprites on a line. The demo runs very smooth on the F18A and there is no flicker like on the original hardware. There are also no missing pixels on the 6th row of sprites like there are on the real hardware. This demo does not use the 5th-sprite number technique described elsewhere and which makes Miner49er not currently work on the F18A. The USR1 jumper sets a default at power on of 4 (jumper off) and 32 (jumper on - the default). Most software will benefit from having more sprites on a line visible, but some software will fail because it relies on the 5th sprite not being displayed and possibly triggering an event. In V1.6 I'm going to introduce another register that allows you to set the sprite value at which the 5S flag will be set, and it will default to 5. This will be separate from the sprite max VR30. Have you studied and documented the content of the lower 5 bits of the status register of the 9918A when the 5th sprite flag is reset ? If the early rumors were confirmed one could be able to "trace" which sprite is being plotted by the raster. This would allow to know where the raster is on the screen practically on line by line basis (!) Edited November 16, 2014 by artrag 1 Quote Link to comment Share on other sites More sharing options...
Asmusr Posted November 16, 2014 Author Share Posted November 16, 2014 The USR1 jumper sets a default at power on of 4 (jumper off) and 32 (jumper on - the default). Most software will benefit from having more sprites on a line visible, but some software will fail because it relies on the 5th sprite not being displayed and possibly triggering an event. In V1.6 I'm going to introduce another register that allows you to set the sprite value at which the 5S flag will be set, and it will default to 5. This will be separate from the sprite max VR30. Thanks for the explanation. I'm becoming more puritan and thinking of removing my jumper, but in any case it's good to have the two attributes (number of sprites on a line and number of sprites that triggers the flag) separated. The attached version is checking for the F18A and is setting VR30 to 4 if detected. Splitscreen3.zip Quote Link to comment Share on other sites More sharing options...
artrag Posted November 16, 2014 Share Posted November 16, 2014 CRU on the 99xx is *kind of like* (not exactly) port mapped I/O on the Z80 (I.e. IN/OUT). The port instructions on the Z80 move 8 bits at a time and they don't take space out of the 64k memory map. Same on the 99xx but we can move any number of bits from 1 to... err... I can't remember! Ehehe, believe it or not, but the I/O ports of the z80 are 16 bit wide, not 8 bit The feature is not documented (and not used in the msx HW), but it is used on the zx spectrum and on the CPC, where the audio chip is accessed using the 16 bit port in BC The transferred data are 8 bit. Quote Link to comment Share on other sites More sharing options...
+mizapf Posted November 16, 2014 Share Posted November 16, 2014 OK, just checked the specs: The CRU of the TMS9900 transmits one bit per 666 ns, which is 1.5 Mbit/s. Same for the 9995. Unfortunately, we can only sustain that rate for 16 bits maximum, after which the command terminates. Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted November 16, 2014 Share Posted November 16, 2014 An older thread that has some CRU-related code for testing the VDP interrupt via the 9901: http://atariage.com/forums/topic/217747-cant-find-something/page-2?do=findComment&comment=2850487 1 Quote Link to comment Share on other sites More sharing options...
+nanochess Posted November 17, 2014 Share Posted November 17, 2014 I've done some tests over a real Colecovision, and 5th bit fails sometimes specially when the VDP starts to get hot. I remember publishing somewhere here in AtariAge my findings but I cannot find it right now Quote Link to comment Share on other sites More sharing options...
artrag Posted November 17, 2014 Share Posted November 17, 2014 I've done some tests over a real Colecovision, and 5th bit fails sometimes specially when the VDP starts to get hot. I remember publishing somewhere here in AtariAge my findings but I cannot find it right now The real reason for missing its value could be you read it while it is being set. Maybe temperature and bad powering could make longer the rise time of the lines and make the problem more frequent, anyway you can have the 5th sprite condition on more lines, so you cannot miss it even in the worst case 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.