How many times we have heard that msx had vram access slow? A lot. this is one of the most overrated issue when talking about speed in gfx management. Well i do not think is slow as most people say. At least for msx2 or higher machines.
Let's examine the real scenarios:
a) if vram I/O operations tends to be block operations in contiguos addresses, (the majority): (copy a block, copy a tile to RAM copy a group of tiles from RAM to VRAM etc). In those situations one use typically the OUTI or OTIR operations, which have the same speed of LDIR. One could use out (nn),a or out(c),r in VBLANK. Let's examine the time they take.
LDIR & OTIR take 18 cycles: 5us.
OUT (nn),a take 12 cycles: 4us.
By comparison a a standard LD a, (HL) takes rougly: 2us
however, due to the kind of operations the majority of I/O is performed with OUTI / OTIR, the speed is the same than I/O operations on z80 memory.
b) if the I/O operations are in non contiguos addresses: here the difference is a lot more: there could be an order of magnitude of difference. Here effectively the VRAM access speed clearly suffer.
however, taking for example the (a), what i see, in terms of data throughput compared to others machines is not so different.
For example:
- take the c64 on uncontended scenarios: a memory write (not page 0 ) takes 3 cycles. So 3us. The same ballpark of a z80 in msx (you need also to increment counters, and addresses here which the vdp does for you in block moves, and this also takes time)
- zx : it does have direct access but also suffer of memory contentions that could be estimated on average to be 2-3 cycles, so 0.5 to 1us leading to a LD a,(HL) requiring 9-10 t-states.
- amstrad CPC was similar (even if it's cpu work at a full 4Mhz)
- there are systems where you can only access vram during vblank which limits the data throughput a lot.
I do not consider the msx2 the machine with faster VRAM access in the world,but i think the situation is less dramatic than most people say.
I do not consider the TurboR: it is a different situation. The CPU speed should have been mached with a faster VDP, unfortunately this was not done...