| |
PopMilo
Registered: Mar 2004 Posts: 146 |
Multicolor, multi pattern 4x4 mode, How?
How are those 4x4 pixel, multicolor, multi pattern modes made?
Example, Bumpmania from Arise:
Bumpmania
Is it with char mode and FLI at middle of each char row ?
|
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
yes, and special charset with 16 individual shades for the left/right part. so fex. lowmost 4 bits of the charnr sets brightness of the right part of the char and highest 4 bits the left part. usually one has twice the texture to lda ora the left/right part, but here's a trick to use only one texture: mix the bit's of the left/right part like this:
76543210
lrlrlrlr
l=left
r=right
then with one bit rotate instruction you can push the bits into their correct position, so lda texture asl (=left side) ora texture. |
| |
Shadow Account closed
Registered: Apr 2002 Posts: 355 |
Oh, that bit-shift trick is nice! *files away for possible later use* Moahaha! :) |
| |
WVL
Registered: Mar 2002 Posts: 902 |
Oswald : but that trick is only for generating the charset, right? But that only saves 3 bytes in the generator and only a couple of cycles..
I dont really see the profit? |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
the profit is that you can halve the texture space, and to do that you only have to do one asl instead of four in the lda ora part. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: the profit is that you can halve the texture space, and to do that you only have to do one asl instead of four in the lda ora part.
Normally i'd do:
lda left_texture,x
ora right_texture,y
sta screen
To save twice texture space one would do:
lda texture,x
lsr
lsr
lsr
lsr
ora texture,y
sta screen
Oswald speed this up by:
lda texture,x
lsr
ora texture,y
sta screen
Did I understand you correct Ossie?
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
yep:) credit gos to Bubis for this nice trick. here's a similar one:
in error 23 the 'freedirectional' tunnel is only calculated at 8x8 resolution the rest is interpolation. horizontally the interpolation is built into the character set, you just lda ora the two pixels to be interpolated, and get the answer from the characterset.
so fex. you have already pixels A and C calculated and want to get the inbetween pixel B with interpolation:
A_C_E_G_H
simpy lda A ora C sta , lda C ora E sta, and voila, you get:
ABCDEFGH
this one goes to Bubis aswell. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: yep:) credit gos to Bubis for this nice trick. here's a similar one:
in error 23 the 'freedirectional' tunnel is only calculated at 8x8 resolution the rest is interpolation. horizontally the interpolation is built into the character set, you just lda ora the two pixels to be interpolated, and get the answer from the characterset.
so fex. you have already pixels A and C calculated and want to get the inbetween pixel B with interpolation:
A_C_E_G_H
simpy lda A ora C sta , lda C ora E sta, and voila, you get:
ABCDEFGH
this one goes to Bubis aswell.
And to optimize that using twice texture memory u can do:
lda left_A
ldx right_C
sax
lda left_E
sax
ldx right_G
sax
lda left_H
sax
== automatic 4x4 interpolation in 8x8 mode (at least horizontally)
left_X looks like: XXXX1111
right_X looks like: 1111XXXX
|
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
nice one :) |
| |
WVL
Registered: Mar 2002 Posts: 902 |
Ah OK..
So normally you'd use
lda texture1,x
ora texture2,y
sta screen
and you'd have the texture twice, once with ....XXXX and once with XXXX....
but using
lda texture,x
lsr
ora texture,y
sta screen
you only need a texture with X.X.X.X.
So only half the mem..
got it. |
| |
Frantic
Registered: Mar 2003 Posts: 1648 |
I won't point out that the use of SAX is illegal!
...which reminds me of when I ate a hamburger with Jackasser before StLCP 2008 took off. We were sitting next to some policemen, and I asked Jackasser in a loud voice, "So, Andreas, you're using ILLEGAL OPCODES in your stuff?"... :) Unfortunately they did not arrest him though.
Sorry for being 99% off topic. |
... 6 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 - Next |