V9990 - differences between open msx and real hardware

Page 1/2
| 2

By Joel Verdonck

Rookie (28)

Joel Verdonck's picture

08-02-2017, 14:34

Hi all,

Is there any known differences between the way that openMSX is managing the V9990 commands such as LMMM and the real hardware. I've the impression that LMMM is working fine in P1 mode on all the operations on PLAN A, but not on PLAN B.
I've setup a copy data example likr this one sx:512, xy:512 dx:512 dy:416 nx:256 ny:32 and, on screen the result is stange (black filled squares appears in the result on real hardware, in open-msx it's as expected).
I'm using the G9K Library CopyXYToXY method , I've tryed other pieces of code (out of G9K), and the results are always the same.
Is there any issue with the V9990 vram to vram copy actions after the VRAM 0h40000.

PS: same method is working well on plan A ( < #40000)

<>
G9kWriteReg G9K_ARG,0
G9kWriteReg G9K_LOP,G9K_LOP_WCSC
LD HL,#ffff
CALL SetCmdWriteMask

ld hl, copyWaterAnimData
call CopyXYToXY

copyWaterAnimData:
DW 512 ; SX
DW 512 ; SY

DW 512 ; DX
DW 416 ; DY

DW 256 ; NX
DW 32 ; NY

If somebody can help on that because I'm totally puzzled by the VDP behaviour, thanks

:)

Login or register to post comments

By Langoor2

Supporter (12)

Langoor2's picture

08-02-2017, 19:43

Try setting the writemask to ff00.

By Joel Verdonck

Rookie (28)

Joel Verdonck's picture

08-02-2017, 22:30

no it doesn't work, i have the same behavior, it is like it copies 240 pixels/32 isntead of 256/32, I really do not understand why, is it a blitter issue? I really don't know

By Joel Verdonck

Rookie (28)

Joel Verdonck's picture

09-02-2017, 21:59

stargely I've displace of 512 the coord on Y axis and it works ???? but why

By Manuel

Ascended (15190)

Manuel's picture

10-02-2017, 23:02

Well, there may be a bug in the emulation... actually if the real hardware behaves differently for the same software, there's definitely a bug in the emulation... who can help to find it?

By Manuel

Ascended (15190)

Manuel's picture

11-02-2017, 15:48

Can you be more precise on what happens on real hardware and what happens in openMSX? Perhaps also add screenshots?

By msd

Paragon (1371)

msd's picture

12-02-2017, 01:55

iirc there is also something different you have to with the addresses in P1 mode. It is documented in the v9990 manual. But not very clearly. I can't check my sources from here, but I think I might have an example somewhere.

By Joel Verdonck

Rookie (28)

Joel Verdonck's picture

12-02-2017, 15:08

Manuel, actually, The adress #5000 to #5800 cannot be copied in any way by the blitter, we have tested it on 3 differents graph9000 configuration and it doesn't work in any case, which is not normal, open msx is reacting as expected, not the real hardware ??? (Should be the opposite Smile ) When you blit from this vram area, you will always get a partial result.
The demo I gave you in Nijmegen last month doesn't work on real hardware because of that. I've adapted my code and everything is ok, now ... at the exception of the line interupts that providing strange pixel noises. I'll provide you an update if you like
Why this page cannot be used??? I cannot answer to that, but the facts are there, try to do it yourself, wathever the method, it won't work correctly !!!

By Panzer

Paragon (1041)

Panzer's picture

12-02-2017, 16:17

Very interesting...

By hit9918

Prophet (2831)

hit9918's picture

12-02-2017, 17:41

just as a brainstorming:
are there two sets of RAM chips. for doubeling the acess speed.
the nametable is in the other set where the blitter has no acess slot.

and there is dual ported RAM. this is about another doubeling of bandwidth.
maybe each plane is on one of these ports.
it could be that in one plane the blitter can get at the nametable and in the other plane it cant,
because there are slots for sprites.

just pure speculation, what could be the reasons.
and when 3 9990 do it the same, this is very nice. then one doesnt need to wonder whether a wire is broken.

By Joel Verdonck

Rookie (28)

Joel Verdonck's picture

13-02-2017, 15:04

I try to understand what your are writing hit9918, and indeed, I had also this though about the dual ported RAM as well as problem related to VDP interuptions during copy time (I'm making a lot of line interrupts to change the palette on the background). My question is why all the other banks except this one are available to the blitter, why only these 32K area, I'm making copy all the time during the game since almost everything on the screen is animated on both playfield and only this area is creating issue. Crazy

Page 1/2
| 2
My MSX profile