Posted: Sun Mar 16, 2008 2:12 pm
well, when someone spots some issues in some of my demo, I'll "fix" it. My controllers don't like to be polled more than once a frame at all !!!
Sega Megadrive/Genesis development
https://gendev.spritesmind.net/forum/
Yeah yeah i know that. I know SEGA didn't said that just for funChilly Willy wrote:Yes, but SEGA says it will give SOME people a problem SOMETIMES. If your stuff is aimed at a small group, you can probably ignore a lot of these things (especially if it's just for yourself). However, if what you are doing is aimed at the general public, you SHOULD do these things, even if you never see a problem yourself. SEGA doesn't make these things up out of thin air - they're actual issues they've gotten complaints about from users or developers.Stef wrote: Of course i was speaking of example where we use the 68000 BUS from Z80, but i assure you i never met any problems. I think it can happen but rarely in fact.
For example, you can poll some SEGA controllers more often than 60 times a second, but some controllers WILL fail to return valid data if you do. If you are doing something for yourself and you've verified all your controllers work faster than 60 Hz, no problem. If it's for the general public, you shouldn't poll the controller more than 60 times a second or those people with the problem controllers won't be able to use your game. That's why SEGA told developers to not poll the controllers any faster than that. They suggest you do it during the vertical blank, and not any more often than the vertical blank, for just that reason.
I guess this is when you fill the VDP FIFO, the next write to the VDP port will lock the 68000 (and then the bus) until it free a FIFO emplacement. On real hardware you can avoid that by testing the "FIFO full" flag in status register. It doesn't make your VDP transfert faster but that helps the Z80 to get the busTmEE co.(TM) wrote:Doing more intensive VDP access will cause Z80 to "slowdown" when it accesses ROM too.
I seem to remember Steve Snake mentioning that he was able to convince Sega to let him read the pads without halting the Z80 so that it wouldn't interfere with sample playback in NBA Jam. I believe he said the only problem it would cause is occasional, barely noticeable artifacting on screen. Or something like that. I'd have to go dig up the message on the old segadev yahoo group to be sure.Chilly Willy wrote: Yes, but SEGA says it will give SOME people a problem SOMETIMES. If your stuff is aimed at a small group, you can probably ignore a lot of these things (especially if it's just for yourself). However, if what you are doing is aimed at the general public, you SHOULD do these things, even if you never see a problem yourself. SEGA doesn't make these things up out of thin air - they're actual issues they've gotten complaints about from users or developers.
I don't know about Genesis games in general, but it is definately not the case with the Sonic games. Only Sonic 1 uses the 68000 for sample playback. All of the later Sonic games use a pure Z80 based sound solution.Chilly Willy wrote:Which is probably why newer Genesis games use the 68000 for audio instead of the Z80.
From way back in December 2001, here you go:Mask of Destiny wrote:I seem to remember Steve Snake mentioning that he was able to convince Sega to let him read the pads without halting the Z80 so that it wouldn't interfere with sample playback in NBA Jam. I believe he said the only problem it would cause is occasional, barely noticeable artifacting on screen. Or something like that. I'd have to go dig up the message on the old segadev yahoo group to be sure.
Steve Snake wrote:Well, I can tell you why that is:Charles MacDonald wrote:I've also noticed some games take the Z80 bus when reading the
joysticks, I don't understand the purpose behind that. Just like with
DMA, it's not really necessary to disable the Z80, though as you said
most all games do it.
It's a Sega requirement. They tell you you MUST do this.
You are 100% correct, of course - it works with or without taking the Z80 bus. However, there is a reason why they tell you to do this - it affects the timing of *something*. Quite what, I don't know. But, during development of NBA Jam TE 32X, I took the Z80 halt out of my joystick reader, because killing the Z80 every 60th of a second - even for a short time - was seriously affecting the quality of the YM2612 DAC. When I did this, however, every so often (very infrequently) one scanline of the display would be completely white. Which line was completely random, and seemed completely unrelated to anything else - but it didn't happen when I disabled the Z80 while reading the joysticks. Go figure. Despite this, Sega eventually agreed that I could leave it like that.
I've never seen this happen with the Genesis, then again timing is much more critical with a 32X attached. For example, if the PSG is playing a noise channel while the SH2s are reading ROM, it can cause the 68K to fetch invalid data. Weird....
And maybe it doesn't affect carts with faster roms. SEGA does say that the effect was to shorten the cycle the Z80 uses, but faster ROMs wouldn't be affected by a shorter cycle. Hence, new Genesis games using the new/faster roms never seemed to show the problem.Eke wrote:I always thought it was because 68000 bank access by Z80 was done through the IO chip (the only chip which got access to both complete data buses)
it maybe affects the timing of banking access, bad data can be read if the read cycle is shortened