Patch:Messie
Messie is a green sprite encountered on the map of Keen 3. She is noticeable in that she can cross blocking map tiles, namely the water separating islands on the map. If Keen touches Messie he rides on her until she finds dry land, when Keen can then depart. This allows Keen to reach the secret level, in a similar matter to the Patch:Satellite in Keen 6. Like the satellite Messie follows a perscribed path and Keen has no control when riding. The path can be altered by a level editor.
Messie navigates using the sprite plane of levels. She spawns at the upper leftmost sprite $2000 [8192] Messie moves along sprite $2000 [8192] and 'pauses' at sprites $2100 [8448] Keen may ride Messie on any tile, but can only disembark on sprites $2200 [8784] These must be placed carefully to allow Keen to arrive on land.
Messie is a sprite, though she does not behave like most sprites. Little is known about how to patch her.
Level Messie appears in
This alters what level Messie appears in. She can only appear in one level, but it does not have to be the map level. This can easily be used to disable Messie completely. By default the level is level 80, the map level.
Keen 3
#Messie level
%patch $8AB2 [$0050W]
Pause before Messie gets going
When Messie is spawned, there is a small wait before she starts moving. Normally this has no effect on gameplay, but can be used say for a 'race against time' or to make Messie more or less easy to catch.
Keen 3
#Pause before Messie starts moving
%patch $89BD [$0008W]
Sprites
Messie reads the sprites she uses off a list, one for Messie, and one for Messie + Keen. This is similar to how map Keen's sprites work. This works similar to Patch:Text patches. The start sprite should be the same as the moving left sprite, which is what Messie is spawned doing. All sprites use two frames to animate, though this can probably be patched.
Keen 3
#Where sprite lists are read from:
%patch $8E4C [$2DF3W] #Messie
%patch $8E5C [$2E05W] #Messie + Keen
#Sprites:
%patch $89B7 [$0082W] #Start sprite
#Messie
%patch $1C613 [$0088W] #Moving up right
[$0088W] #Moving up
[$0086W] #Moving up left and 'eating'
[$0082W] #Moving left
[$0082W] #Sitting still
[$0084W] #Moving right
[$0082W] #Moving down left
[$0084W] #Moving down
[$0084W] #Moving down right
#Messie with Keen
%patch $1C625 [$0090W] #Moving up right
[$0090W] #Moving up
[$008EW] #Moving up left
[$008AW] #Moving left
[$008AW] #Sitting still
[$008CW] #Moving right
[$008AW] #Moving down left
[$008CW] #Moving down
[$008CW] #Moving down right
Direction
This works the same as sprites above, Messie reads a list to see what directions she should be moving in. -2 is left\up, 0 is still and +2 is down\right. By reversing all of these Messie can be made to move anti-clockwise instead of clockwise or not move at all. There are other more obscure things that can be done too.
Keen 3
%patch $8E2C [$2DCFW] #Horizontal direction list
%patch $8E3C [$2DE1W] #Vertical direction list
#Horizontal direction list
%patch $1C601 [$FFFEW] #Moving up right
[$0000W] #Moving up
[$0002W] #Moving up left and 'eating'
[$FFFEW] #Moving left
[$0000W] #Unknown but vital
[$0002W] #Moving right
[$FFFEW] #Moving down left
[$0000W] #Moving down
[$0002W] #Moving down right
#Vertical direction list
%patch $1C601 [$FFFEW] #Moving up right
[$FFFEW] #Moving up
[$FFFEW] #Moving up left and 'eating'
[$0000W] #Moving left
[$0000W] #Sitting still
[$0000W] #Moving right
[$0002W] #Moving down left
[$0002W] #Moving down
[$0002W] #Moving down right
Sounds
A sound is played when Keen gets on or off of Messie. This sound can be blocked.
Keen 3
#Sounds
%patch $B800 $1A #Get on Messie sound
#Don't play sounds
%patch $B7FF $EB $06 #Get on Messie sound disabled