127 lines
4.6 KiB
Plaintext
127 lines
4.6 KiB
Plaintext
|
|
{-----------------------------------------------------------------------+
|
|
| |
|
|
| Demonstration of accelerated sprite rendering |
|
|
| |
|
|
+-----------------------------------------------------------------------}
|
|
|
|
gcl0x {GCL version for this program}
|
|
|
|
{-----------------------------------------------------------------------+
|
|
| RAM page 2 |
|
|
+-----------------------------------------------------------------------}
|
|
|
|
$800 p= {Top of screen}
|
|
|
|
\romType, \romTypeValue_ROMv3- {Test for ROMv3}
|
|
[if<0 [do p. 1+ loop]] {Halt and blink pixel on older ROM}
|
|
|
|
[def
|
|
{. . . . . .|. . . . . . 3 lines of border top and down
|
|
. . . . . .|. . . . . . for the fast changes in Y position
|
|
. . . . . .|. . . . . .
|
|
. . . . O O|O O O . . .
|
|
. . O O O O|O O O O O .
|
|
. O O O O .|O O O O . O
|
|
. O O O . @|@ O O . @ @
|
|
. O O O . @|@ O O . @ @
|
|
. O O O O .|O O O O . O
|
|
. O O O O O|O O O O O O
|
|
. O O O O O|O O O O O O
|
|
. O O . . O|O . O O . O
|
|
. O . . O O|. . O . . O
|
|
. . . . . .|. . . . . .
|
|
. . . . . .|. . . . . .
|
|
. . . . . .|. . . . . .}
|
|
|
|
0# 0# 0# 0# 0# 0# {Left side}
|
|
0# 0# 0# 0# 0# 0#
|
|
0# 0# 0# 0# 0# 0#
|
|
0# 0# 0# 0# 3# 3#
|
|
0# 0# 3# 3# 3# 3#
|
|
0# 3# 3# 3# 3# 63#
|
|
0# 3# 3# 3# 63# 48#
|
|
0# 3# 3# 3# 63# 48#
|
|
0# 3# 3# 3# 3# 63#
|
|
0# 3# 3# 3# 3# 3#
|
|
0# 3# 3# 3# 3# 3#
|
|
0# 3# 3# 0# 0# 3#
|
|
0# 3# 0# 0# 3# 3#
|
|
0# 0# 0# 0# 0# 0#
|
|
0# 0# 0# 0# 0# 0#
|
|
0# 0# 0# 0# 0# 0# 240#
|
|
|
|
0# 0# 0# 0# 0# 0# {Right side}
|
|
0# 0# 0# 0# 0# 0#
|
|
0# 0# 0# 0# 0# 0#
|
|
3# 3# 3# 0# 0# 0#
|
|
3# 3# 3# 3# 3# 0#
|
|
3# 3# 3# 3# 63# 3#
|
|
48# 3# 3# 63# 48# 48#
|
|
48# 3# 3# 63# 48# 48#
|
|
3# 3# 3# 3# 63# 3#
|
|
3# 3# 3# 3# 3# 3#
|
|
3# 3# 3# 3# 3# 3#
|
|
3# 0# 3# 3# 0# 3#
|
|
0# 0# 3# 0# 0# 3#
|
|
0# 0# 0# 0# 0# 0#
|
|
0# 0# 0# 0# 0# 0#
|
|
0# 0# 0# 0# 0# 0# 240#
|
|
] Image=
|
|
|
|
{-----------------------------------------------------------------------+
|
|
|}\vLR>++ ret{ RAM page 3 |
|
|
+-----------------------------------------------------------------------}
|
|
$0300:
|
|
|
|
257 p= 11 p. {Shift screen left by 11 pixels}
|
|
|
|
\SYS_Sprite6_v3_64 \sysFn: {Sprite drawing function}
|
|
$500 T= {Pointer to sine table}
|
|
0 i= j=
|
|
[do
|
|
|
|
{ Draw 15 sprites }
|
|
i p<. {Left-most sprite}
|
|
[do
|
|
p j+ 255& T+ peek p>. {Y coordinate}
|
|
Image \sysArgs0: {Setup SYS call}
|
|
p
|
|
64!! {Draw first half}
|
|
64!! {Draw second half}
|
|
p<. 255& 170- {Until right edge}
|
|
if<0loop]
|
|
|
|
{ Update coefficients }
|
|
i 11- [if<0 12+] i= {i = (i+1) % 12 }
|
|
j 1+ j=
|
|
loop]
|
|
|
|
$0500:
|
|
{ Sine table }
|
|
60# 61# 63# 64# 65# 66# 68# 69# 70# 71# 73#
|
|
74# 75# 76# 78# 79# 80# 81# 82# 83# 85# 86#
|
|
87# 88# 89# 90# 91# 92# 93# 94# 95# 96# 97#
|
|
98# 99# 99# 100# 101# 102# 103# 103# 104# 105# 105#
|
|
106# 106# 107# 108# 108# 109# 109# 109# 110# 110# 110#
|
|
111# 111# 111# 111# 112# 112# 112# 112# 112# 112# 112#
|
|
112# 112# 112# 112# 111# 111# 111# 111# 110# 110# 110#
|
|
109# 109# 109# 108# 108# 107# 106# 106# 105# 105# 104#
|
|
103# 103# 102# 101# 100# 99# 99# 98# 97# 96# 95#
|
|
94# 93# 92# 91# 90# 89# 88# 87# 86# 85# 83#
|
|
82# 81# 80# 79# 78# 76# 75# 74# 73# 71# 70#
|
|
69# 68# 66# 65# 64# 63# 61# 60# 59# 57# 56#
|
|
55# 54# 52# 51# 50# 49# 47# 46# 45# 44# 42#
|
|
41# 40# 39# 38# 37# 35# 34# 33# 32# 31# 30#
|
|
29# 28# 27# 26# 25# 24# 23# 22# 21# 21# 20#
|
|
19# 18# 17# 17# 16# 15# 15# 14# 14# 13# 12#
|
|
12# 11# 11# 11# 10# 10# 10# 9# 9# 9# 9#
|
|
8# 8# 8# 8# 8# 8# 8# 8# 8# 8# 8#
|
|
9# 9# 9# 9# 10# 10# 10# 11# 11# 11# 12#
|
|
12# 13# 14# 14# 15# 15# 16# 17# 17# 18# 19#
|
|
20# 21# 21# 22# 23# 24# 25# 26# 27# 28# 29#
|
|
30# 31# 32# 33# 34# 35# 37# 38# 39# 40# 41#
|
|
42# 44# 45# 46# 47# 49# 50# 51# 52# 54# 55#
|
|
56# 57# 59#
|
|
|