Page 1 of 1

Questions related to the vpd

Posted: Thu Jun 27, 2013 6:35 pm
by eteream
4 possibly tricky questions:

1) Can I disable a plane? I mean individually, and not by using a transparent tile, but simply put a bit to 0 or something like that.

2) Can I disable the scrolling of a plane? I mean plane is no longer an infinite plane but a finite rectangle which not necessarily fills all the screen.

3) Can I change the register with the address of the begin of a plane inside an HINT? I mean changing registers 2 & 4 of vpd within an HINT. Any example or any game which makes this? Yes, it seems weird at first but with games of limited playfield is usefull (road rash for example).

4) The documentation speaks about a "feature" (bug?) when setting the dma, in case of doing it from rom, it can fail. I redid the function so last operand is loaded from memory* (I will show it among other things in the sdk forum), but I don't know why is that, any thoughts about the "feature"?

thanks!

EDIT:
* RAM memory, I mean

Re: Questions related to the vpd

Posted: Thu Jun 27, 2013 6:47 pm
by Mask of Destiny
eteream wrote: 1) Can I disable a plane? I mean individually, and not by using a transparent tile, but simply put a bit to 0 or something like that.
Maybe with the test register, but outside of that you can't disable a plane completely. Games that only need a single plane will typically use the same table for both planes.
eteream wrote: 2) Can I disable the scrolling of a plane? I mean plane is no longer an infinite plane but a finite rectangle which not necessarily fills all the screen.
Nope. Obviously you can use transparent tiles to achieve a similar effect though.
eteream wrote: 3) Can I change the register with the address of the begin of a plane inside an HINT? I mean changing registers 2 & 4 of vpd within an HINT. Any example or any game which makes this? Yes, it seems weird at first but with games of limited playfield is usefull (road rash for example).
I haven't tested it, but I believe it should work. There's no particularly good reason why it wouldn't.
eteream wrote: 4) The documentation speaks about a "feature" (bug?) when setting the dma, in case of doing it from rom, it can fail. I redid the function so last operand is loaded from memory (I will show it among other things in the sdk forum), but I don't know why is that, any thoughts about the "feature"?
I don't have any information about this beyond seeing the same warning you mention. It would be interesting to poke around with a logic analyzer if someone can produce a reliable repro case of the bug.

Re: Questions related to the vpd

Posted: Thu Jun 27, 2013 7:53 pm
by r57shell
eteream wrote:4) The documentation speaks about a "feature" (bug?) when setting the dma, in case of doing it from rom, it can fail. I redid the function so last operand is loaded from memory (I will show it among other things in the sdk forum), but I don't know why is that, any thoughts about the "feature"?
Notice in documentation states about transfer from "Out of ROM", for example from RAM.
Results from some tests: viewtopic.php?p=19993#19993

Re: Questions related to the vpd

Posted: Thu Jun 27, 2013 8:42 pm
by Ti_
eteream wrote: 3) Can I change the register with the address of the begin of a plane inside an HINT? I mean changing registers 2 & 4 of vpd within an HINT. Any example or any game which makes this? Yes, it seems weird at first but with games of limited playfield is usefull (road rash for example).
If I understand properly, thats exist in many games:
example Rock n' Roll Racing split screen: 4 tilemaps: planA+plaB for first screen , and planA+planB for second at VRAM: $8000,$A000,$C000 and $E000.

Posted: Fri Jun 28, 2013 6:52 am
by Nemesis
I don't have any information about this beyond seeing the same warning you mention. It would be interesting to poke around with a logic analyzer if someone can produce a reliable repro case of the bug.
I plan to do some tests on that when I can get the time. I know from doing hardware testing that lockups do in fact occur if you don't follow this rule, but I haven't tested why. I've also encountered lockups when the DMA enable bit is left on, which is another thing the documentation says not to do. I haven't checked the bus signals to identify the cause of these lockups though.

Re: Questions related to the vpd

Posted: Mon Jul 01, 2013 1:43 pm
by eteream
..

Re: Questions related to the vpd

Posted: Tue Jul 02, 2013 1:41 am
by Mask of Destiny
eteream wrote:
Mask of Destiny wrote:
eteream wrote: 1) Can I disable a plane? I mean individually, and not by using a transparent tile, but simply put a bit to 0 or something like that.
Maybe with the test register, but outside of that you can't disable a plane completely. Games that only need a single plane will typically use the same table for both planes.
Nice! Where I can find more info about this test register?
This thread seems to have notes from all the people that have looked into it so far: viewtopic.php?t=1206
Nemesis wrote:I've also encountered lockups when the DMA enable bit is left on, which is another thing the documentation says not to do. I haven't checked the bus signals to identify the cause of these lockups though.
Really? A bunch of commercially released games seem to leave DMA enabled for an extended period of time (Fatal Labyrinth, Toejam & Earl, Streets of Rage 3, Ecco the Dolphin and Ecco the Tides of Time at least). I don't doubt that the documentation says not to do it since some games turn it off immediately after finishing a DMA operation, but it would seem that it's possible to leave it on safely.

Posted: Tue Jul 02, 2013 1:54 am
by TmEE co.(TM)
I only ever experienced DMA lockup when Z80 was not running and accessing ROM.