Asmusr Posted October 20, 2014 Share Posted October 20, 2014 No, it's the lowest number. The VDP scans the sprite table in ascending order. We don't honestly KNOW if it processes the rest of the sprite list after setting 5S because there is no insight into that behavior, but it doesn't matter if it does because there's no external indication. (I would imagine it does since that would probably save some silicon... we could probably prove it with an analyzer on the RAM lines, but, it doesn't really matter.) Instead of the confusing terminology in the datasheet there, think about it in terms of how it works, as Matthew described it. OK, that's makes more sense. But the thing I don't understand, which is why I got the wrong idea, is that in Classic99 in Miner 2049'er the 5th sprite number is set to >1F, but when I look at the SAL there are 8 sprites with y coord 0: >0A, >0B, >0C, >1B, >1C, >1D, 1E, >1F, so shouldn't it report >1C as the 5th sprite? And on the start screen with the color bars where all the sprites are at (0,0), shouldn't it report >04 instead of >1F? Quote Link to comment Share on other sites More sharing options...
Tursi Posted October 20, 2014 Share Posted October 20, 2014 OK, that's makes more sense. But the thing I don't understand, which is why I got the wrong idea, is that in Classic99 in Miner 2049'er the 5th sprite number is set to >1F, but when I look at the SAL there are 8 sprites with y coord 0: >0A, >0B, >0C, >1B, >1C, >1D, 1E, >1F, so shouldn't it report >1C as the 5th sprite? And on the start screen with the color bars where all the sprites are at (0,0), shouldn't it report >04 instead of >1F? Ah, yeah, sorry. Classic99 does not correctly represent the fifth sprite index -- to correct that was part of why I did the tests I did. I'm not exactly sure why you get those results in Classic99 as I didn't test its behavior, we'll see that when I fix it up. Quote Link to comment Share on other sites More sharing options...
Asmusr Posted October 20, 2014 Share Posted October 20, 2014 Ah, yeah, sorry. Classic99 does not correctly represent the fifth sprite index -- to correct that was part of why I did the tests I did. I'm not exactly sure why you get those results in Classic99 as I didn't test its behavior, we'll see that when I fix it up. Ahh, that explains it. But the thing is that if the 5th sprite number is reported as >1C in Miner the collision no longer works since bit >02 is not set. [Edit] Does this mean that on the hardware Miner would pick up the >02 bit when the VDP is scanning line 0? Because already at line 1 the 5th sprite is locked as >1C. Quote Link to comment Share on other sites More sharing options...
matthew180 Posted October 20, 2014 Author Share Posted October 20, 2014 Correct, >1C would be locked into the 5SN (5th sprite number), however m49er polls the VDP status in a loop at some point so I assume this keeps it from failing to check for collisions (by complete luck). Once m49er starts polling the VDP status register, the >1C would be released and replaced with sprite numbers as they were being scanned. Tursi did a really nice analysis of the collision box function and polling loop, so I'll let him offer that information. Quote Link to comment Share on other sites More sharing options...
matthew180 Posted October 20, 2014 Author Share Posted October 20, 2014 No, it's the lowest number. The VDP scans the sprite table in ascending order. We don't honestly KNOW if it processes the rest of the sprite list after setting 5S because there is no insight into that behavior, ... Actually we do have a little insight into that behavior in the form of your first test program that polled the status register. You were seeing the max active sprite in the SAT. Also, hopefully sometime in the near future the 9918A will be decapped and we will have the opportunity to discover all these little secrets. :-) Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted October 20, 2014 Share Posted October 20, 2014 Actually we do have a little insight into that behavior in the form of your first test program that polled the status register. You were seeing the max active sprite in the SAT. Also, hopefully sometime in the near future the 9918A will be decapped and we will have the opportunity to discover all these little secrets. :-) http://visual6502.org/wiki/index.php?title=Chips_in_our_collection 1 Quote Link to comment Share on other sites More sharing options...
matthew180 Posted October 20, 2014 Author Share Posted October 20, 2014 Yup, because I sent them a 9918A (and an Atari 400 as well.) :-) 1 Quote Link to comment Share on other sites More sharing options...
Tursi Posted October 20, 2014 Share Posted October 20, 2014 Actually we do have a little insight into that behavior in the form of your first test program that polled the status register. You were seeing the max active sprite in the SAT. Also, hopefully sometime in the near future the 9918A will be decapped and we will have the opportunity to discover all these little secrets. :-) That would be nice The reason I was seeing max active sprite in my first test, though, was because I was clearing the 5S line with rapid reads. So I think that tells us that the entire active sprite list is scanned on every scanline that does not trigger 5S (which I agree, makes it likely that it always does anyway ). 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.