VDP detect is easy with user assistance "tell what you are seeing on the screen".
autodetect, only thing I can imagine check sprite collisions of sprite cloning.
but that varies with VDP temperature.
and 9918 vs 9118 detect I cant imagine.
but with user looking at the screen it is easy.
99 vs 91 should not be that hard (it's already included in hap's IDENT2.BAS). But 9918 vs 9928 is impossible, I guess
Dionisio's point was to test Toshiba against TMS without user interaction: this is the true problem, Toshiba chips in screen 2 do not support the masking bits for color and pattern definition.
I updated to daily build openmsx
9918 colormask bits are ready for scroll
but 9118/MSX2 runs the old code. I can't believe the funny sparcles it makes.
When I posted about 9918, hap mentioned that 9118 does mask only color.
So when taking the new code and doing that masking only on the coloraddress
(speaking only about things done by the low 5 maskbits of colorregister)
I think then 9118 and MSX2 is done.
A test program
10 color 15,1,6 : screen 2 20 open "grp:" as #1 30 for j = 0 to 2 40 for i = 0 to 255 41 color (2+(i and 1)+int(i/64)*2) and 15 50 if i >= 32 THEN ?#1,chr$(i); else ?#1,chr$(1)+chr$(i+64); 60 next i,j 70 for i = 0 to 767 80 vpoke 6144+i,(i+1) AND 255 'shift a bit for possible hints 90 next 99 ' &b11100000 100 vdp (3) = &b11101111 190 color ,,4 200 goto 200
In the end when all is rendered, maskbit is engaged, and on 9918 one sees only halve the charset.
On 9118/MSX2 I expcet to see the full charset, but the upper 128 get same color as the lower 128.
The color appearance onscreen is same as 9918. Halve of colors disappeared.
Every second char a different color, and the blue "at" char slips into a line of green chars.
If anyone has a 9118 / MSX2 handy, try app and tell.
And no matter what I try, openmsx 75P looks same like real 75P
I like it how this topic more and more leaves unclear zone and gets clear mechanism
@Manuel, where is ident.bas? A version 2 is in the making?
I made a visual test. The emu prints both "9918" and "9118", if the real thing shows only 9118 then we got something to test without opening the machine.
10 color ,1,1 : screen 2 20 open "grp:" as #1 30 color 15 40 preset(0,128): ?#1,"no mask registers" 50 x=0 :y=64 : preset(x,y):?#1,"9918" : p=8192:gosub 500 55 x=0 :y=96 : p = 6144+int(y/8)*32 : for i = p to p+3 : vpoke i,32 : next 60 x=32:y=96 : preset(x,y):?#1,"9118" : p=8192:gosub 500 70 color 4 80 x=0 :y=0 : preset(x,y):?#1,"9918" : p=0: gosub 500 90 x=32:y=0 : preset(x,y):?#1,"9118" : p=0: gosub 500 160 VDP (3) = &b11001111 170 VDP (4) = &b00000001 200 goto 200 500 'wipe 510 p = p + int(x/8)*8+int(y/8)*256 520 for i = p to p+31 530 vpoke i,0 540 next 550 return
The garbage screens previously posted in the thread about PAL vs NTSC.
NTSC has a thinner a vertical border, there is less time in that zone where is no vram transfer speed limit. Then NTSC shows trash even when otherwise there is IDENTIC VDP logic. And identic speed limit.
An easy way for programmers to catch that issue:
at vertical blank put VDP to blank mode and turn blank off when you are done with vram writes. And in this zone you can forget all about speed limit issues.
And when you didnt test NTSC, or when the program has some rare little spikes that take longer time, you get some blank flashing on top of the screen instead trashed vram all over the screen, a big win.
I don't know if ident.bas (or ident2.bas, as hap said) can be downloaded somewhere at the moment... hap?
I found an ident.bas on the net, it does identify 9118 with toggeling between 4k/16k mode.
The problem is, now I know how to detect 9118 but not how to code it.
Because the part where it actualy differs from 9918 still needs confirmation.
If someone could post what the posted BASIC app does on 9118 or on MSX2, the whole thing would be a step further. If it shows "9118" as I expect, then the issue is solved and it can be used for "post which VDP has your machine".
I wonder, was 9118 available already in 1983 or is there a tendency that younger models got it?
Is the pic a joke or does it have some extreme FPGA on the other side