Msx1 race engine

Page 3/4
1 | 2 | | 4

By ARTRAG

Enlighted (6429)

ARTRAG's picture

10-08-2020, 14:55

No, Uridium is using an unusual setting of character banks not supported by Toshiba video chips.
In order to run the game on Toshiba chips you had the possibility in the start menu to disable that feature and set the scroll speed at 4 pixels per step instead of 2 pixels per step
Nothing related to the speed of writing to the vdp

By Sandy Brand

Master (190)

Sandy Brand's picture

10-08-2020, 15:02

Ah okay, so the reduced 'scroll speed smoothness' is due to the fact that on Toshiba machines you have to write into 3 character pattern tables instead of just the 1.

Cool, thanks for clearing that up Smile

By thegeps

Hero (541)

thegeps's picture

10-08-2020, 16:37

doesn't mirroring screen2 nametable affect sprites too? How did you manage to avoid that @ARTRAG?

By ARTRAG

Enlighted (6429)

ARTRAG's picture

10-08-2020, 17:56

Sandy Brand wrote:

Ah okay, so the reduced 'scroll speed smoothness' is due to the fact that on Toshiba machines you have to write into 3 character pattern tables instead of just the 1.

Cool, thanks for clearing that up Smile

Nope, it writes the same amount of data in the PNT in both modes, i. e. 512 bytes per frame
Only on Thosiba chips you cannot rely on a second page of tiles, so you can use only 512 tiles instead of 1024 to represent the level in its offsets

By ARTRAG

Enlighted (6429)

ARTRAG's picture

10-08-2020, 17:58

thegeps wrote:

doesn't mirroring screen2 nametable affect sprites too? How did you manage to avoid that @ARTRAG?

Mirroring just color tables doesn't affect sprites. I do not mirror the pattern generator table

By thegeps

Hero (541)

thegeps's picture

10-08-2020, 22:53

Thanks a lot. So I can speedup Freedom Fighter scrolling for all not Toshiba VDPs. I'll think if it is worth to be done (I have some doubt about having different speed on different machines). But cool to know.

By PingPong

Prophet (3549)

PingPong's picture

10-08-2020, 23:43

Directly accessing the vdp through ports is one thing
Another thing is relying on a undocumented implementation detail.
There is *nothing* on TMS or YAMAHA docs that explain about this behaviour that is more a side effect than a true behavior.

To be clear nothing told you that you can alter the vdp vram ptr by writing only *one* byte on the vdp port.
Instead they always told you to write two consecutive bytes on this port and avoid uncomplete writes.
So why you are complaining about this? You are using the VDP in a incorrect way, so results are undefined.

Commercial sw did not use trick because they know that is a wrong way to interact with vdp not an undocumented behaviour.

This is not a problem of compatibility

By the way yahama did a pretty well job in maintain compatibility with old TMS, for example some of the undocumented modes worked on v9938 as in TMS (not all). that is better than other vdp clones that do not have undocumented modes at all.

By Sandy Brand

Master (190)

Sandy Brand's picture

11-08-2020, 00:52

PingPong wrote:

So why you are complaining about this?

....

This is not a problem of compatibility

Huh, who is complaining??
I was just wondering out loud if no-one ever relied on doing these kind of tricks in commercial software such as games where performance is important, that is not such a strange question is it? Smile

By ARTRAG

Enlighted (6429)

ARTRAG's picture

11-08-2020, 12:10

thegeps wrote:

Thanks a lot. So I can speedup Freedom Fighter scrolling for all not Toshiba VDPs. I'll think if it is worth to be done (I have some doubt about having different speed on different machines). But cool to know.

Uridium uses two screen pages with independent tiles.
You can use them as double buffer (writing on one page while showing the other), or to store different tile sets to be alternated according to what to show (Uridium works in this latter way).
It is very long to explain how it works, and everything has a cost.
The major costs are that
a) only bank 2 and 3 (lower 2/3rd of the screen) can be used for full screen 2 graphics.
b) bank 2 and 3 share the same colour definitions, i.e. if tile 0 in bank 2 and tile 0 in bank 3 have the same 8 bytes of colour definitions
c) the first bank (upper 1/3rd of the screen) can be used in screen 0, or left black and covered by sprites. In both cases you need a screen split at line 64

By ARTRAG

Enlighted (6429)

ARTRAG's picture

11-08-2020, 13:45

Sorry there are some typos, read the above text in this way

a) only bank 2 and 3 (lower 2/3rd of the screen) can be used for full screen 2 graphics.
b) bank 2 and 3 share the same colour definitions, i.e. tile 0 in bank 2 and tile 0 in bank 3 have the same 8 bytes of colour definitions
c) the first bank (upper 1/3rd of the screen) can be used in screen 1, or left blank and covered by sprites (Uridium works like this). In both cases you need a screen split at line 64 (Uridium leaves it black and uses dedicated sprite tables, so actually there are 64 sprites on the screen, 32 for the score bar and 32 for the game play)

Page 3/4
1 | 2 | | 4