     Ultimate MK3 for the HP48GX:Technical Notes
----------------------------------------------------

HMOVE: Moves a GROB horizontally across the screen. It takes 6 arguments from 
the stack as follows...
6:#y-coordinate
5:x-start
4:x-end
3:step
2:GROB
1:delay(in seconds)

The program moves the GROB from x-start to x-end at height #y with the given 
step. It pauses for the delay between each step. Both x-start and x-end are
pixel coordinates, without the # designator.

PUT1: Places a GROB on the background screen. It takes 3 arguments from the 
stack as follows...
3:#x-coordinate
2:#y-coordinate
1:GROB

The program stores the pre-overwritten background in the variable 'SC1'.  The
program PUT2 does the same thing, but stores it into 'SC2'.

REM1: Places the GROB 'SC1' on the background screen, overwriting anything
underneath. It takes two arguments from the stack as follows...
2:#x-coordinate
1:#y-coordinate

The program is sort of the inverse of PUT1. These two programs are used 
together to place GROB's on the screen without disturbing the background.
REM2 does the same, but uses 'SC2' instead.

PUTSPRITE1: Similar to PUT1, but is capable of placing a GROB on the 
screen without that annoying white area surrounding it. It uses a method
known as a bitmap mask. It takes four arguments from the stack...
4:#x-coordinate
3:#y-coordinate
2:GROB
1:Masked GROB

The masked GROB is the same size as GROB, but is essentially a shadow of the
given GROB. In other words, any part of the shadow GROB that isn't black
becomes transparent over the background. The program's main use is to put
character GROB's over a background without creating an ugly blank area 
around the GROB. It takes a copy of the underlying background, NEG's it, GOR's
the mask over that, NEG's the resulting GROB, and then GOR's the normal GROB
on top of all that. The result is a nice, clean image! Of course, it saves
the background into 'SC1'. PUTSPRITE2 does the same, but with 'SC2'. 
Unfortunately, this masking approach is memory-intensive, since it requires
the creation of a mask for any GROB that is to be used this way.

R: Not used internally by the game, but by myself. It takes any given section
of the screen and creates a mirror image, flipping it left to right. Quite
useful, since I don't have to redraw a character facing the other way! 
Unfortunately, it's quite slow, so it's useless in the game itself. It
takes six arguments from the stack...
6:x-left
5:y-top
4:x-right
3:y-bottom
2:new-x
1:new-y

All values are pixel units, minus the # designator. It takes the section of the
screen from (x-left,y-top) to (x-right,y-bottom) and mirror's it starting at
(new-x,new-y). The screen remains on, so you can see if any errors occur.


