Toshiba VDP clone detection

Page 1/5
| 2 | 3 | 4 | 5

By dioniso

Champion (479)

dioniso's picture

15-10-2014, 00:27

Hi. I have been trying to code something to detect the TMSxxxx VDP clones created by Toshiba. So far I have coded this ROM and it detects the Toshiba VDP in my MSX1 SONY HB-10P. The code does some things and at when everything is done, there's a white sprite moving 1 pixel to the right in every raster. The tests I have done up to now, and have been properly detected, are:

MSX1 SONY HB-10P (PAL): TOSHIBA VDP
MSX1 SONY HB-75D (PAL): NO TOSHIBA VDP
MSX1 SONY HB-75 (NTSC): NO TOSHIBA VDP
MSX1 SPECTRAVIDEO SVI-738 (PAL): NO TOSHIBA VDP
MSX1 ZEMMIX CPC-51B (NTSC): NO TOSHIBA VDP

I also tried on a MSX2+ SANYO WAVY70FD: NO TOSHIBA VDP

Could someone test this ROM on other MSX1 computers? It would be nice if you could try on other MSX1 computers with TOSHIBA VDP. If there's an unexpected result, please, take a picture of the screen and send it to me. Just MSX1 computers.

Thanks in advance.

Login or register to post comments

By ARTRAG

Enlighted (6844)

ARTRAG's picture

15-10-2014, 07:18

Link to the rom broken

By mars2000you

Enlighted (6227)

mars2000you's picture

15-10-2014, 08:39

It works here, but you need to authorize some script if you have NoScript or ScriptSafe in your Firefox/Chrome plugins.

By dioniso

Champion (479)

dioniso's picture

15-10-2014, 09:44

I already have 4 downloads. Artrag, if you still have problems, I can send you the ROM at you email. Or to anyone who asks for it.

Did anyone try it?

By Manuel

Ascended (18788)

Manuel's picture

15-10-2014, 18:26

How does the detection algorithm work?

By dioniso

Champion (479)

dioniso's picture

15-10-2014, 21:16

It is based in reading the "end of raster" flag of the VDP status register in IM2. You can set a loop, with dissabled interrupts, like:

loop:
in a,(c)
or %01000000
cp %01000000
jr nz,loop

and there will be no problem reading the flag, because the 6th bit (5th sprite flag) will be set anytime. The same goes for the 5th bit (sprite overlapped flag). But with the 7th bit (end of raster flag) there are differences among several (all?) VDP chips.

loop:
in a,(c)
or %10000000
cp %10000000
jr nz,loop

The code above will be an endless loop in a MSX1 HB-75D (PAL) because the flag will not be set (or the loop is too fast on IM2). But it will be read/set on a MSX1 HB-75 (NTSC) in every raster. On a Toshiba VDP it will be set randomly, not in every raster.

This piece of code is not useful for detecting the TOSHIBA VDP, since the VDP inside computers like the MSX1 SONY HB-75D (don't know what TMSxxxx) would just "freeze" forever.

So, using this difference among all VDP, I tried to spot the Toshiba one. The ROM has to be tested in other MSX1 computers but I don't know if people are interested in doing such tests. I hope someone does. I really would like to know is this piece of code could be universal for MSX1 computers.

By hap

Paragon (2040)

hap's picture

15-10-2014, 21:26

Hmm, keep in mind that on the TMS VDP, if you read a status bit at the same time it's set, it may reset and return 0. This is documented in the datasheet by TI*.

*Texas Instruments "MP010A" document, section 2.3

By dioniso

Champion (479)

dioniso's picture

15-10-2014, 21:33

Thanks, hap. As I said, if I used this kind of code, I wouldn't be able to get out of a loop where the flag will always be 0. I do several readings and wait for the flag to be set several times on every VDP. In the ROM I uploaded it can't happen the problem you are commenting.

By dioniso

Champion (479)

dioniso's picture

15-10-2014, 21:35

I will post the code of the detection. But first I would like to see if it really works.

By judge_

Supporter (4)

judge_'s picture

15-10-2014, 22:01

Since some people have problems downloading that rom, I have temporarily mirrored it here

By dioniso

Champion (479)

dioniso's picture

15-10-2014, 22:02

Many thanks, judge_.

Page 1/5
| 2 | 3 | 4 | 5