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]
 | 
						|
 |