Schrijver
| EVA Format
|
PingPong msx professional Berichten: 876 | Geplaatst: 07 November 2007, 20:22   |
Why not extend the EVA format to make it work only on msx2 in screen5?
The main advantages are:
more fps
dynamic palette, not fixed screen 8 one!
at the same FPS rate a bigger picture.
I think there is no much more work to do....
Are eva player sources 'free'?
|
|
NYYRIKKI msx master Berichten: 1502 | Geplaatst: 07 November 2007, 20:43   |
|
|
PingPong msx professional Berichten: 876 | Geplaatst: 07 November 2007, 20:54   |
Umh, not so easy i think, because almost i need also to write the palette for each frame... or i'm wrong? |
|
NYYRIKKI msx master Berichten: 1502 | Geplaatst: 07 November 2007, 21:06   |
Ah yes, the palette... implementing it with all of the EVA options will take some more time. As in screen 5 you have more VRAM pages I suggest using triplebuffering. It makes the result better with palette. After that you can disable timing that makes sound better.
|
|
PingPong msx professional Berichten: 876 | Geplaatst: 07 November 2007, 21:13   |
Can you explain me how work triple buffering? Why should be more performant compared to double one? thx.
|
|
SLotman msx professional Berichten: 527 | Geplaatst: 07 November 2007, 21:21   |
I guess the "tripple buffer" is something like this:
Load frame 0 into page 1, frame 1 into page 2, frame 2 into page 3, show page 1, load frame 4 into page 0, show page 2, load frame 5 into page 1...
So you actually use 3 pages as buffer, and having to load only once 3 pages on the start. After that, only load one page and show another already on vram. This way you can save time, by just doing a "set page" instead of copying stuff around.
And if it helps at all, I "converted" the eva player to M80/L80, since I didnt know what compiler was used to assemble that version on msxarchive...
|
|
NYYRIKKI msx master Berichten: 1502 | Geplaatst: 07 November 2007, 21:33   |
Because palette changeing takes quite a lot of time (about 5 lines) it need to be done outside of picture area. It is good idea to do it when video interrupt happens. When you load data complete frame will not be delivered to VRAM at the same time when you should change palette and swap pages. To awoid waiting (and not outputing sample) it is recommended to continue loading to 3rd page and when interrupt happens you can swap pages 1&2 and update palette while still loading to 3rd page.
I'm not good at explaining this, but I hope you understand what I was trying to say. Hmm... I try another way. In this case you need triblebuffering for optimal solution:
Picture1: Complete picture in screen
Picture2: Complete picture & palette waiting for video refresh to go to border
Picture3: Incomplete picture that is loading from HD.
Good in this method is that you don't need to think if user is using 50 or 60Hz displaymode.
|
|
SLotman msx professional Berichten: 527 | Geplaatst: 07 November 2007, 21:53   |
There's also small problem: each EVA frame takes something like 13k - a whole screen5 screen (without palette, using only 192 lines) will use 24k, so if you want fullscreen video on screen 5, you'll have to compress the frames, or change the EVA structure...
|
|
NYYRIKKI msx master Berichten: 1502 | Geplaatst: 07 November 2007, 23:00   |
I don't think that anyone was really plannin going to full screen. That is a bad idea... You can make it only 6fps that is more like slideshow than movie (as seen with SymbOS) Any traditional compression does not help either because the problem is that VDP just can't take data any faster.
|
|
PingPong msx professional Berichten: 876 | Geplaatst: 08 November 2007, 17:53   |
@slotman, nyyrikki: no, no full screen at least a 180x150 pixels that allows about the same frame rate... but i think is quite large...
|
|
SLotman msx professional Berichten: 527 | Geplaatst: 09 November 2007, 21:19   |
Well, there's something I thought yesterday, and tried to implement today, but still, I'm far from understanding the eva player source
What could be done, for fullscreen (even on scr12!) would be to duplicate the pixels horizontally (when drawing them on VRAM) and skipping one line vertically, so you would render the video with 2x width and 2x height (like scanlines) - which would be fullscreen
Something like this:

(I generated this picture with a modified EvaWin)
Some might even attempt to use YMMM to copy one line into the one below, to remove the "scanline effect", but I dont know if there's time for that... |
|
PingPong msx professional Berichten: 876 | Geplaatst: 09 November 2007, 21:28   |
Quote:
| Well, there's something I thought yesterday, and tried to implement today, but still, I'm far from understanding the eva player source
What could be done, for fullscreen (even on scr12!) would be to duplicate the pixels horizontally (when drawing them on VRAM) and skipping one line vertically, so you would render the video with 2x width and 2x height (like scanlines) - which would be fullscreen
Something like this:
Some might even attempt to use YMMM to copy one line into the one below, to remove the "scanline effect", but I dont know if there's time for that...
|
using pure vdp command like HMMM you can only move (copy) about 175KB/sec. even if you duplicate pixels. I think will be the same slideshow effect mentioned above...  |
|
SLotman msx professional Berichten: 527 | Geplaatst: 09 November 2007, 21:30   |
Forget HMMM, you have to do several OUTs. output the same byte twice per line, until 128 bytes are written, skip one line on screen, repeat until image is done.
(also, 256x106 = 27k, still a lot far from those 175kb you posted)
|
|
AuroraMSX
 msx master Berichten: 1228 | Geplaatst: 09 November 2007, 22:19   |
Quote:
| Forget HMMM, you have to do several OUTs. output the same byte twice per line, until 128 bytes are written, skip one line on screen, repeat until image is done.
|
Instead of skipping a line you could have a line interrupt that makes the same line appear twice on screen. That also has some other advantages: - You basically build up an image of only 106 lines high. Which means that you can have two 'frames' of the movie on only one VRAM page --> 8 "pages", anyone?

- you don't need to skip lines and thus don't need to replace the VRAM pointer after each line.
|
|
NYYRIKKI msx master Berichten: 1502 | Geplaatst: 09 November 2007, 23:23   |
It really does not matter what you write to VDP, speed will still be the same. So writing 128 bytes two times takes same amount of time as writing 256 bytes one time. 27k -> ~6fps
|
|
|
|
|