- Joined: 28 Sep 1999
- Posts: 1197
|
TMS9918 quirks & FM sound
Posted: Tue Jan 22, 2002 5:35 am
|
I ran a few tests to see how the SMS 2 VDP responds when attempting to access CRAM in the TMS9918 modes. Here's what I found:
- Writing to CRAM still works, but there is no flicker and none of the TMS9918 colors are changed. When you switch back to mode 4, the color changes are visible.
- When sending a command to the control port with bit 6 and 7 of the 2nd byte set, it is not treated as a VDP register write like the TMS9918 would handle it. This could cause incompatabilities with games written for the TMS9918 that would expect a register to be updated.
The original SMS VDP may act differently, so this applies to the SMS 2 VDP and possibly the GG as well.
Also one other thing, I had been checking a few games that use FM sound and they all disable the input ports at $C0-FF when detecting the YM2413 through port $F2. However, this is only for reading $F2, if the YM2413 is detected they enable the I/O ports but continue to write to $F0 and $F1.
I'd guess this is done to prevent a conflict with the I/O ports beforehand - but wasn't it mentioned earlier that the Mark III does have some extra hardware for selecting the keyboard at port $DF? Shouldn't the writes to $F0 and $F1 end up going to $DF too, if the I/O ports were enabled?
|
Richard Atkinson
|
Posted: Wed Jan 23, 2002 6:05 pm
|
Quote > I ran a few tests to see how the SMS 2 VDP responds when attempting to access CRAM in the TMS9918 modes. Here's what I found:
> - Writing to CRAM still works, but there is no flicker and none of the TMS9918 colors are changed. When you switch back to mode 4, the color changes are visible.
Damn shame. I've been agonising for *days* about whether light yellow should be 331 or 332... Oh well; I'll just have to write a program in SC-3000 BASIC to switch to Mode 4 and draw the colours how they _should_ have been ;)
Quote > Also one other thing, I had been checking a few games that use FM sound and they all disable the input ports at $C0-FF when detecting the YM2413 through port $F2. However, this is only for reading $F2, if the YM2413 is detected they enable the I/O ports but continue to write to $F0 and $F1.
> I'd guess this is done to prevent a conflict with the I/O ports beforehand - but wasn't it mentioned earlier that the Mark III does have some extra hardware for selecting the keyboard at port $DF? Shouldn't the writes to $F0 and $F1 end up going to $DF too, if the I/O ports were enabled?
Perhaps this is just "tolerated", ie. the writes go to both ports but as the keyboard isn't being used, the register corruption doesn't matter.
I'll have to familiarize myself a bit more with SC-3000 hardware. Anyone know a good reference on it? I've already seen the SF-7000 page, btw.
|
- Joined: 28 Sep 1999
- Posts: 1197
|
Posted: Thu Jan 24, 2002 2:46 am
|
Quote > Damn shame. I've been agonising for *days* about whether light yellow should be 331 or 332... Oh well; I'll just have to write a program in SC-3000 BASIC to switch to Mode 4 and draw the colours how they _should_ have been ;)
At least with the Game Gear you can redefine the palette, though it isn't clear if this is using the GG's 12-bit palette hardware or the MS mode 6-bit colors.
Quote > Perhaps this is just "tolerated", ie. the writes go to both ports but as the keyboard isn't being used, the register corruption doesn't matter.
Also, maybe the FM expander unit is smart enough to only respond when the correct I/O ports are being accessed.
It would be interesting to see if the Japanese SMS machines with the built in FM sound chips are also as smart. (I don't think these systems support the keyboard like the Mark 3 does, so maybe it doesn't need to worry about such things)
Quote > I'll have to familiarize myself a bit more with SC-3000 hardware. Anyone know a good reference on it? I've already seen the SF-7000 page, btw.
There are no references that I know of, especially from a technical viewpoint. I'd ask Bock. ;)
|