nametable & double buffering

Page 2/10
1 | | 3 | 4 | 5 | 6 | 7

By hap

Paragon (2036)

hap's picture

15-05-2012, 01:18

Don't forget the sprite clone bug on TMS VDP when you mirror the pattern table (unless you only use SAT 0-7)

By ARTRAG

Enlighted (6515)

ARTRAG's picture

15-05-2012, 07:41

I know, but it occurs only on few models AFAIK

By PingPong

Prophet (3754)

PingPong's picture

15-05-2012, 09:32

hap wrote:

Don't forget the sprite clone bug on TMS VDP when you mirror the pattern table (unless you only use SAT 0-7)

It's amazing how the vdp designer arranged things to prevent any useful usage of vdp. Really.

By hit9918

Prophet (2904)

hit9918's picture

15-05-2012, 10:42

@ARTRAG, as far as I know the sprite bug happens on ALL MSX1. That actually got mask registers.

@hap, the 9118 as well got the sprite bug, no?

@PingPong
Sprite bug is not an architecture bug, it is an analog bug.
9918A got hacked screen 2 with just a couple of transistors.

Often games got different tiles in different charsets.
Like on top are the same gfx hanging upside down, i.e. actually different gfx.
The goblins hill is in the middle charset, its tree distributed between top and middle, etc.

I that case my dynamic alloc stuff got no more copy workload than a bugfree hybrid mode.

By hit9918

Prophet (2904)

hit9918's picture

15-05-2012, 10:48

@ARTRAG, ah, the bitmap search is with Genesis in mind.
Try Genesis screenshots in the converter.
I don't see puzzle problems like with Nemesis.

By ARTRAG

Enlighted (6515)

ARTRAG's picture

15-05-2012, 11:13

@hit9918
are you sure that it happens on any msx1 chip ? IIRC only some clones have bugs in hybrid modes

Are you sure you cannot prevent the sprite cloning bug?
Could the memory layout affect the bug?
Maybe it depends on bit 14 of addresses of sprite and character data
IIRC with shapes at 0x0000 and colors at 0x2000, if sprites are at addresses <= 0x2000 you can hybrid colors but not shapes
Could it be that with colors at 0x0000 and shapes at 0x2000 you can hybrid shapes and not colors?
I cannot test this statement, as I do not have any msx1 of sort
If my idea is correct probably some double buffer could work even on "buggy" chips

By hap

Paragon (2036)

hap's picture

15-05-2012, 12:36

The sprite clone glitch happens on all MSX1 with a TMS VDP. The only guaranteed safe way to prevent this glitch is to only use SAT 0-7. (I sound like a repeating tape recorder Tongue)

By hap

Paragon (2036)

hap's picture

15-05-2012, 12:39

If you want to experiment with the glitch, try meisei. I'm pretty sure it's emulated well.

By hit9918

Prophet (2904)

hit9918's picture

15-05-2012, 13:23

"IIRC only some clones have bugs in hybrid modes",

noooo, about the clones there rather is the question whether they got mask register bits at all.

The bug is written in TI mauals! They must be about 9918A, i.e. about a TMS.
I have seen it on my 9929 PAL HitBit, that got RGB pins instead composite stuff, must be a change on the die.
So the bug is not like "only one special die revision got it".

The bug is that mask registers pull down bits of scanline counter Y for the bitmap to wrap, in a way that the scanline counter Y value which the sprite engine gets is ditched. Ditched in an analog "not enough current" way, things changing a bit as the chip gets hotter. The sprite engine thinks the beam is somewhere else, that is the cloning. I haven't seen weakness in SAT address or sprite pattern address information. Because of this direct relationship with scanline counter Y, I think your ideas will have no impact.
But with analog bugs you never know.

By hit9918

Prophet (2904)

hit9918's picture

15-05-2012, 18:08

I think that the dynamic alloc route is the way to go on MSX.

Think of this:
you got only 128 chars, to get this spread out fullscreen, need to somehow involve a blank.
If blank, then draw that to nametable, else allocate a new tile number and draw that to nametable.
Then in the pattern render same as you would do on ZX.
I suspect fast ZX games use prerotated tiles and some "do nothing for blanks".
Probably could do much similar on MSX.

But I would still do things based on struct alloc.
Give it 4 pointers to neighbour chars patterns (in case of diagonal scroll), then it too can go combining chars.

disadvantage: still the combination bloat. But this time only for struct alloc, 9 byte per combination.
With precalculated neighbour combined chars it was 16 x8 = 128 bytes per combination, i.e. a magnitude difference.

advantages: the usual struct alloc characteristics:
multiple identic tiles onscreen means only one time loading/assembling the tile, speed.
fullscreen, can have less than 50% blanks on screen if there are other identic tiles.

Note all mentioned got a lesser gfx mode and less speed, I keep hunting for the precalculated version.

Many possibilities. The mask register bug is not the end, instead the whole show hasn't even started yet Big smile

Page 2/10
1 | | 3 | 4 | 5 | 6 | 7