97 lines
3.0 KiB
Plaintext
97 lines
3.0 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
|
|
{. . . . . .|. . . . . .
|
|
. . . . 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# 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# 244#
|
|
|
|
0# 0# 0# 0# 0# 0# {Right side}
|
|
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# 244#
|
|
|
|
] Image=
|
|
|
|
[def
|
|
\SYS_Sprite6_v3_64 \sysFn: {Normal sprite drawing}
|
|
0 o= {Origin correction}
|
|
1 u= {Direction}
|
|
ret
|
|
] FaceRight=
|
|
|
|
[def
|
|
\SYS_Sprite6x_v3_64 \sysFn: {X-flipped sprite drawing}
|
|
6 o= {Origin correction}
|
|
-1 u= {Direction}
|
|
ret
|
|
] FaceLeft=
|
|
|
|
{-----------------------------------------------------------------------+
|
|
|}\vLR>++ ret{ RAM page 3 |
|
|
+-----------------------------------------------------------------------}
|
|
$0300:
|
|
|
|
FaceRight! {Moving right}
|
|
256 v= {And moving down}
|
|
|
|
[do
|
|
[do \videoY, 179^ if<>0loop] {Wait for start of vertical blank}
|
|
|
|
Image \sysArgs0: p o+ {Setup SYS call}
|
|
64!! {Draw first half}
|
|
64!! {Draw second half}
|
|
|
|
p u+ v+ p= {Update position}
|
|
255& 148^ [if=0 FaceLeft!] {Reached right border}
|
|
p<, [if=0 FaceRight!] {Reached left border}
|
|
p>, 116^ [if=0 v- v=] {Reached bottom border}
|
|
p>, 8^ [if=0 v- v=] {Reached top border}
|
|
loop]
|
|
|