Autor
| full framerate scroll screen 5
|
ARTRAG msx master Mensajes: 1802 | Publicado: Julio 07 2005, 11:18   |
About the speed of the scroll
all depends on the size of the blocks you copy
you should be ready to copy smaller areas when you scroll 1pixel per frame
and large areres when you scroll 2pixels per frame
about border masking note that when you scroll 1pixel per frame:
1) you must use LOGICAL (i.e. SLOW) box fill for drawing a 1pixel wide black line on the left
2) you must use LOGICAL (i.e. SLOW) copy 1 pixel wide to copmpose the new line on the right
instead, when you scroll 2pixel per frame:
1) you can use byte (i.e. FAST) box fill for drawing a 2pixel wide black block on the left
2) you can use byte (i.e. FAST) copy (2 pixel wide) to copmpose the new line on the right
|
|
ARTRAG msx master Mensajes: 1802 | Publicado: Julio 07 2005, 11:28   |
Quote:
| how many sprites would you advise to use for the masking?
would 1 be sufficient? (hmmmm, maybe this is a bit personal)
|
If you mean how many sprite planes I reserve, the answer is zero.
I am trying to have dynamic assigment of the sprite planes this means
that in same conditions I could have ugly results...
Naturally this implies also that I have to be ready to move all athe sprites
on one or two sprite planes on fly.
If you want reserve sprite planes the answer is:
it depends on how many sprites can cross the borders at the same time!!
bye
AR |
|
GhostwriterP msx addict Mensajes: 320 | Publicado: Julio 07 2005, 12:21   |
Quote:
| Spritesplit:
And as soon as that starts I load my new spritetables (exept the ship, 2 options, 1 missile and 9 bullets) into VRAM, And the colorsettings, and the possitions.
This is what the spritesplit comes down to, right?
|
No, rewriting the SPAT in the inturrupt is a BAD thing to do. For a spritesplit you need TWO SPATS and
you only rewrite the SPAT base regs on your splitline. Wich means you have to update both SPATS in
VBLANK period (1280 bytes total at most). I doubt you have time for that if you are building up the screen
in just 8 steps. |
|
norakomi msx professional Mensajes: 861 | Publicado: Julio 07 2005, 14:56   |
2 SPATS !!!
CLEAR !! GOT IT !!!
Now I've done some Math (which I studied for 4 years, so, no sweat here).
I'm gonna do 16 steps, 1 pixel per step.
Screen height:192
scoreboard y=0 until y=24
gamescreen height: 192-24 = 168
In 14 steps I'm gonna do the scroll.
I scroll 12 pixels high (14*12=168)
Each one of these steps scrolls (16,height)-(226,height+12),p to (0,height),1-p
Which leaves step 15 to paste the new 16 x 168 pixel background
and step 16 to make a black box at the right edge of screen : (also 16 x 168 pixels)
Now the 14 first steps copy 224 x 12 = 2688 bytes
the 15th and 16th step copy 16 x 168 =2688 bytes
all steps copy 2688 bytes.
However on each step I have to copy 1 black line at the left end and 1 line new background at the right end (realtime in the active page).
This seems a perfect sollution which doesn't require total VDP consumption,
Each step can be called at the beginning of the interrupt.
o.k. another question.
I know that I should disable the sprites at y=192 and enable then again at y=24
Should I also disable the entire screen at y=192 and enable it again at y=0?????
Cheers !!
|
|
GhostwriterP msx addict Mensajes: 320 | Publicado: Julio 07 2005, 15:22   |
Quote:
|
Should I also disable the entire screen at y=192 and enable it again at y=0?????
|
No need for that, the VDP does that for you. |
|
turbor msx freak Mensajes: 181 | Publicado: Julio 25 2005, 23:12   |
Could somebody here write some small test programs that show the distortion that shows up when adjusting register #18 while a copy is in progress?
I wrote some small tests but I didn't see anything happen.
I copied a black page, and then a full white page while constantly outing value 0 and later 255 using indirect register access to #18 but no corruption occurred in these 4 test cases.
Are there any conditions that I'm not aware of ?
Do I need direct #18 access?
Does the #18 change needs to be visible in the destination area?
The article at the MAP doesn't give more specifics...
Can somebody give me a (not) working example please.
|
|
ARTRAG msx master Mensajes: 1802 | Publicado: Julio 26 2005, 00:19   |
Do you use an emulator?
|
|
ro msx guru Mensajes: 2353 | Publicado: Julio 26 2005, 08:05   |
I never had such distortion too, it's prolly a hoax  |
|
turbor msx freak Mensajes: 181 | Publicado: Julio 26 2005, 08:13   |
Quote:
| Do you use an emulator?
|
No, I had Manuel run it on the real stuff... |
|
ARTRAG msx master Mensajes: 1802 | Publicado: Julio 26 2005, 09:11   |
Actually I remember in far 80's I saw a similar effect on my msx2 from philips
but I cannot say how or when...
|
|
Maggoo msx professional Mensajes: 592 | Publicado: Julio 26 2005, 10:06   |
Quote:
| Could somebody here write some small test programs that show the distortion that shows up when adjusting register #18 while a copy is in progress?
I wrote some small tests but I didn't see anything happen.
I copied a black page, and then a full white page while constantly outing value 0 and later 255 using indirect register access to #18 but no corruption occurred in these 4 test cases.
Are there any conditions that I'm not aware of ?
Do I need direct #18 access?
Does the #18 change needs to be visible in the destination area?
The article at the MAP doesn't give more specifics...
Can somebody give me a (not) working example please.
|
Distortions occur when updating Register 18 if sprites are disabled (don't ask me why). So make sure your sprites are enabled while doing the register update. This might slow down your copy commands tho... |
|
ARTRAG msx master Mensajes: 1802 | Publicado: Julio 26 2005, 11:50   |
Magoo, you are playing with the VDP commands in vscreen...
You are trying to do what I think...
|
|
Maggoo msx professional Mensajes: 592 | Publicado: Julio 26 2005, 19:03   |
Quote:
| Magoo, you are playing with the VDP commands in vscreen...
You are trying to do what I think...
|
Nope, didn't have time for that yet. On my TODO list
But that VDP bug is well known. I bumped into it years ago while making demos in the old IOD days  |
|
Grauw msx professional Mensajes: 1006 | Publicado: Septiembre 02 2005, 00:55   |
Quote:
| Distortions occur when updating Register 18 if sprites are disabled (don't ask me why). So make sure your sprites are enabled while doing the register update. This might slow down your copy commands tho...
|
Oh, that’s interesting information. It would be a relatively easy workaround then, just temporarily enable the sprites (if it can be done per-line, but I think it can). It will make the copy slower while the sprites are enabled, yes.
Quote:
| I never had such distortion too, it's prolly a hoax 
|
No, I encountered it when I was creating a smooth scrolling for v9958. It involved copying large blocks while scrolling horizontally, and I fixed it by making sure that the copy was not executed while the scrolling was. That must’ve been about 3 years ago orso, and I never made an isolated testcase, or at least I didn’t save it. But turbor, maybe on the Bussum fair (if you attend) you can ask me about it, I think I still have the source of that routine and I can mess it up a little.
~Grauw |
|
BiFi msx guru Mensajes: 3142 | Publicado: Septiembre 02 2005, 07:03   |
And putting the scrolling itself on the vblank interrupt helps as well.
|
|
|
|
|