Schrijver
| MSX2 VPD speed
|
ASK msx user Berichten: 38 | Geplaatst: 05 Maart 2007, 10:23   |
Hi people!
I am coding a scroll pixel to pixel in msx2 using the copy msxbasic sentence.
The problem is that some emulators the scroll is faster than another one.
What is the emulator that simulate better the vdp processor?
In a real msx, would be the speed fast or slow?
If the scroll is slowly in a real msx, is there any solutions?
Thx!!!
|
|
wolf_
 msx legend Berichten: 4653 | Geplaatst: 05 Maart 2007, 11:11   |
Using copies is slow, that's the nature of the beast.. iirc max 5kb vram per interrupt, in fast copy mode.
Solutions:
- use scroll registers, whenever possible
- use assembly
|
|
manuel msx guru Berichten: 3375 | Geplaatst: 05 Maart 2007, 13:14   |
Emulators in which it is slow are probably correct (blueMSX and openMSX at least should be pretty accurate). Using assembly doesn't speed up copy-scrolling a lot though...
|
|
Edwin msx professional Berichten: 592 | Geplaatst: 05 Maart 2007, 20:11   |
Copy in basic doesn't use high speed copies though. You would have to that with the vdp registers directly.
|
|
norakomi msx professional Berichten: 861 | Geplaatst: 06 Maart 2007, 00:05   |
Hi
Can you program in assembly (machine language) ??
In basic you can also use register 18 (thats vdp(18) or vdp(19)) to move the entire screen to the left/right.
10 screen 5
20 bload"picture.sc5",s
30 vdp(18)=vdp(18)+1
or is it
30 vdp(19)=vdp(19)+1
40 goto 30
you could use this in combination with a full screen copy of 8 pixels per copy.
And you can use register 23 (thats vdp(23) or vdp(24)) to scroll vertically.
|
|
wolf_
 msx legend Berichten: 4653 | Geplaatst: 06 Maart 2007, 01:06   |
In BASIC it's 24 and 19  |
|
ASK msx user Berichten: 38 | Geplaatst: 06 Maart 2007, 10:40   |
Thx, for your replies.
The problem to use the register is: that is not a real scroll.
The register 18 or vdp(19) is equal to use the set adjust basic sentence.
To the use register 18, the x coord. is moved, if the x coord is always moved, what is the situation de object?
Using assembler is slowly, the same.
Do you know any examples in basic about this?
Thx!!!, another time.
|
|
norakomi msx professional Berichten: 861 | Geplaatst: 06 Maart 2007, 11:14   |
Quote:
| Thx, for your replies.
The problem to use the register is: that is not a real scroll.
The register 18 or vdp(19) is equal to use the set adjust basic sentence..
|
you are right, but these registers (r#18 and r#23) ARE used for scrolling in ALOT of games.
Like this:
* Use r#18 to "move" the screen to the left in 16 steps.
* In these 16 steps you can copy the entire screen 16 steps to the left (in another page)
* then you switch page, and start over with adjusting r#18
In this way you have a nice looking smoothscroll. You could scroll with 1 or 2 pixels every frame, which is really fast.
r#23 is much cooler !  |
|
norakomi msx professional Berichten: 861 | Geplaatst: 06 Maart 2007, 11:16   |
Quote:
| To the use register 18, the x coord. is moved, if the x coord is always moved, what is the situation de object?
|
the x coord ??? the x coord of a sprite you mean ???
then, when you change r#18, you need to move the x coord of the sprite as well  |
|
NYYRIKKI msx master Berichten: 1502 | Geplaatst: 06 Maart 2007, 16:59   |
To make it smooth, execute with CALL RUN (MSX-Basic KUN compiler aka XBASIC)
10 DEFINT A-Z:SCREEN 5
20 P0=0:P1=1
30 CIRCLE (128,106),100,8:PAINT (128,106),8
40 FOR K=0 TO 15
50 COPY (16,0)-(255,211),P0 TO (0,0),P1
60 FOR I=0 TO 15:VDP(19)=((I-8)AND15)
70 TIME=0:FOR T=0 TO 1:T=TIME:NEXT T
80 NEXT I
90 SWAP P0,P1:SET PAGE P0,P1
100 NEXT K
|
|
ASK msx user Berichten: 38 | Geplaatst: 07 Maart 2007, 16:58   |
I have been testing the register 18, but I don't know.
There is a screen unsquare. Something fault.
I have been looking the YS III. This program has a multi screen scroll, and I think that it is not made with the register 18 technique.
I am going to test the NYYRIKKI example. It is a great help.
Thx for all !!!!!
|
|
wolf_
 msx legend Berichten: 4653 | Geplaatst: 07 Maart 2007, 17:01   |
Ys 3 uses the "brute force" method ..  |
|
ASK msx user Berichten: 38 | Geplaatst: 07 Maart 2007, 17:19   |
And what is that?
The scroll is a little quick.
|
|
Edwin msx professional Berichten: 592 | Geplaatst: 07 Maart 2007, 18:32   |
That's just copying everything in place all the time. In order to get it reasonably quick, a bit repetitive graphics is needed so you can skip some parts. When very well done, it looks impressive!
|
|
manuel msx guru Berichten: 3375 | Geplaatst: 07 Maart 2007, 19:12   |
Ys III uses cleary 8x8 pixel blocks to speed things up...
|
|
|
|
|