nametable & double buffering

Page 9/10
2 | 3 | 4 | 5 | 6 | 7 | 8 | | 10

By hit9918

Prophet (2904)

hit9918's picture

20-05-2012, 20:46

Please another demo with normal speed (Nemesis speed is one pixel per two frames).

And some blue pixels entered the tiles, some new bug.

By hit9918

Prophet (2904)

hit9918's picture

20-05-2012, 21:02

The fire planet, I thought of that one, too!
Animation is a justification for the tiles to move, hiding bleed artefacts Big smile
Plus animation is a good excuse for needing 8x memory Big smile

By ARTRAG

Enlighted (6515)

ARTRAG's picture

20-05-2012, 21:32

Try demo7 (.rar or .dsk) v.5 . The speed is two pixels each 4 frames
I've also redone the dithering using a palette matching with the one of the image and the blue noise has disappeared.

By hap

Paragon (2036)

hap's picture

20-05-2012, 21:43

It's turning out pretty good =)
(demo v5 .dsk file you uploaded is broken btw)

By ARTRAG

Enlighted (6515)

ARTRAG's picture

20-05-2012, 22:56

I've removed demo7.dsk and uploaded it again, now it is v.1
Try it in meisei, it works with an msx1 rom and romdisk disk2rom.
I can see the cloning of the second bank of sprites in the first line of the scorebar

By hit9918

Prophet (2904)

hit9918's picture

20-05-2012, 23:50

Now it does scroll! Big smile

By ARTRAG

Enlighted (6515)

ARTRAG's picture

20-05-2012, 23:54

New subversion of demo7.dsk (v.2) and demo.rar (v.6) where one can move a sprite with up/down arrows.

In meisei I see that when y>=128-16 the lower part of the sprite get cancelled when in hybrid mode.
If this behavior is confirmed on real HW (hap, how is accurate meisei when modelling this transition ?) I think I have two options:

1) I can swap between hybrid and normal mode at any frame. Arranging the pre-rotated tilesets across the pages I can have a mode swap at any frame (now the same "page" holds for two interrupts). This allows optimal flickering for sprites moving across middle and lower banks.

2) I can activate plane 0-7 from y>=128-16. This extends the area with less sprite planes, thus no flickering if there are less than 8 sprites with y>=112, flickering for all sprites below y=112 if 9 or more sprites cross that line.

any other idea? anyone willing to test the latest demo7 on real hw and telling what he/she see when presses up/down arrows?

By PingPong

Prophet (3754)

PingPong's picture

20-05-2012, 23:55

hit9918 wrote:

@PingPong,
The deal: as the new gfx is not yet onscreen, you can reload it without doublebuffering!

Not exactly.
With no doublebuffering you need to move an incoming column of tiles in vram. Those are 16*8*2=256 bytes
Without doublebuffering i'm forced to do all vram writes before active area begins.
I need to replace (worst case) 16 chars*8 bytes*2 (i'm assuming also attributes) every frame.
The nametable update is 512 bytes. In a real scenario you need to move even the SAT and process some other things.
Using double buffering i can move the pattern update phase to active area without worrying about raster.
(no hybrid mode, just normal screen 2)

By hap

Paragon (2036)

hap's picture

21-05-2012, 00:04

Yes, looks same as meisei on my MSX1.
You should really buy an MSX1 yourself. Nishi

By hit9918

Prophet (2904)

hit9918's picture

21-05-2012, 01:09

@PingPong.

Lets talk 32 chars onscreen. I always mean 32 chars x all scroll positions.

32 chars onscreen, for 16 new chars to enter the scene, 16 chars got to be FREE.
Free means: they are not in the nametable, they are not visible.
Reloading them cannot need doublebuffering.

Throwing away the doublebuffering, it may turn out that the right column shows a NES style garbage.
So the diff tool shall anounce new tiles 8 pixels ahead of time.
So they really get reloaded before they enter nametable visibility. Done.

Page 9/10
2 | 3 | 4 | 5 | 6 | 7 | 8 | | 10