Posted: Sat Aug 28, 2010 11:39 am
When 68K is stalled, the 80 continues to run until it accesses 16bit area, then Z80 will get stalled aswell. The bus is locked when stall is in progress (either FIFO overflow attempt or DMA).
Sega Megadrive/Genesis development
https://gendev.spritesmind.net/forum/
Well I tested performing writes to every VDP code value, and confirmed that only 0001 for VRAM, 0011 for CRAM, and 0101 for VSRAM, cause any visible effect on either VRAM, CRAM, or VSRAM. I know that attempting a write with a code value of 0010 doesn't make any change to VRAM, CRAM, or VSRAM, but I can't rule out that there may be some other side-effects which I failed to notice.I did a quick test and Outrunners, Legend of galahad and Chaos Engine/Soldiers of Fortune all use VDP code 2 with writes. I tried putting this code into CRAM/VSRAM/VRAM and none seem to be correct (ie the games have graphical issues with them). They don't DMA with them just normal writes. Besides the possibility they do nothing, the other alternative is maybe it's a way to access other internal RAM, like possibly the SAT ram?
I don't know of any games which use the 1100 read target, I only found it through hardware tests on undocumented code values.In regards to 1100b writes (8 bit VRAM) do you know any games which use this?
I don't have any test roms saved which would be useful. Mostly I just start with some code, run it, observe and record the results, tweak it, rebuilt it, run it again, observe and record the results, etc. When looking for undocumented behaviour like this, it's mostly just asking myself all the "I wonder what would happen if..." questions, and testing them in the hardware as I go. I have my testing notes and results, as well as the last version of the source I used to perform the testing with lots of different tests, most of them commented out, but I haven't built a test rom which you can just run and will report what is and isn't done correctly. It's a good idea though, I probably should make a test rom to validate all kinds of port access behaviour and quirks, since there are a lot of them. I still have a lot of questions myself though. I still need to do a lot more testing on DMA copy in particular. Maybe once I'm finished with port access testing, I'll build some comprehensive test roms to validate port access behaviour.If you have any test roms which you used in regards to testing FIFO reads (and the bits which aren't changed, etc) it would be nice to test my implementation in RetroCopy.
About that, I recently figured that, after a soft-reset, this game was writing a wrong value to the VDP CTRL port as 2nd part of CTRL port setup. This ends up triggering a DMA Fill operation with an invalid code value.Eke wrote:Out of topic, but still regarding Soft-Reset, it's not completely clear what happen exactly: an example with the game Defender in Williams Arcade Classic that was discussed some time ago on another topic. In all emulators (that supports soft-reset off course), if you do a soft reset after this game starts then select it again, the start menu will be corrupted as if VRAM was not setup correctly. I verified this does not happen on real hardware.
Maybe it has something to do with memory refresh during RESET ?