Patch:Asparagusto

From KeenWiki
Jump to navigation Jump to search

Asparagusto are green, pointy fast-moving creatures found in many levels in Tuberia in Keen Dreams. They will move back and forth stabbing Keen in the ankles whenever they contact him.


Sprite Type

Asparagusto use type 9 which has no impact on any other sprites save for making them transform into Wilted Flowers properly. It also affects how Keen reacts to it.

Keen Dreams

#Asparagusto sprite type
%patch $84F9 $09


Sprite Actions

The Asparagusto has a simple set of actions. It is spawned in the first frame of its running cycle and continues running indefinitely.

Actions:
$1C18W #Asparagusto run 1
$1C36W #Asparagusto run 2
$1C54W #Asparagusto run 3
$1C72W #Asparagusto run 4

Keen Dreams

#Place Asparagusto in level
%patch $8513 [$1C18W]

#Running cycle
%patch $256A4 [$1C36W]
%patch $256C2 [$1C54W]
%patch $256E0 [$1C72W]
%patch $256FE [$1C18W]


Sprite Behavior

The Asparagusto does not have any behavior of its own at all.

Sprite behaviors

#Asparagusto run
%patch $25698 $00000000L
%patch $256B6 $00000000L
%patch $256D4 $00000000L
%patch $256F2 $00000000L


Speed

Asparagusto's speed is determined entirely by their animation motion.

Animation motion

#Asparagusto run
%patch $25694 [$0064W $0000W]
%patch $256B2 [$0064W $0000W]
%patch $256D0 [$0064W $0000W]
%patch $256EE [$0064W $0000W]


Sprite collision

Like nearly all sprites in Keen Dreams the Asparagusto does not have a sprite collision. Instead Keen and his shots react to them and their sprite types.

Sprite collisions

#Asparagusto run
%patch $2569C $00000000L
%patch $256BA $00000000L
%patch $256D8 $00000000L
%patch $256F6 $00000000L


Animations

The Asparagusto has a simple animation cycle, running back and forth using 4 frames each.

Sprite animations

#Cache
%patch $23E7E $010FW #Asparagusto cache start
%patch $23EAA $0116W #Asparagusto cache end

#Asparagusto run
%patch $25688 $010FW $0113W
%patch $25692 $0003W        #Animation speed
%patch $256A6 $0110W $0114W
%patch $256B0 $0003W        #Animation speed
%patch $256C4 $0111W $0115W
%patch $256CE $0003W        #Animation speed
%patch $256E2 $0112W $0116W
%patch $256EC $0003W        #Animation speed


Sprite-tile interaction

The Asparagusto uses a generic 'run up and down hills, turn at walls and platform edges' tile interaction that is also used by many other sprites.

Sprite tile interactions

#Asparagusto run
%patch $256A0 $07C50299RL
%patch $256BE $07C50299RL
%patch $256DC $07C50299RL
%patch $256FA $07C50299RL

Action type

Asparagusto actions are quite basic and so are all type 0.

Sprite action types

#Asparagusto run
%patch $2568C [$0000W]
%patch $256AA [$0000W]
%patch $256C8 [$0000W]
%patch $256E6 [$0000W]


Deprotect and stick to ground

The Asparagusto needs to stick to the ground when running and so uses a value of 1 for this variable in all its actions. Oddly, every second action uses the deprotect value as well, why is unclear.

Sprite deprotect, stick

#Asparagusto run
%patch $2568E [$0001W $0001W]
%patch $256AC [$0000W $0001W]
%patch $256CA [$0001W $0001W]
%patch $256E8 [$0000W $0001W]


Sprite spawn code

There is only one type of Asparagusto; in its initiation code its cache is set in $C7 $06 $70C2W $0001W

The last blue highlighted value is the sprite action the sprite uses as it proceeds to act in-level. $C7 $07 $xxxxW sets the sprite type and $C7 $47 $0E $xxxxW is the horizontal direction the sprite starts moving in, either $0001W (Facing right), $FFFFW (Facing left) or $0000W (Neither, never used.) $C7 $47 $10 $xxxxW is the vertical direction and works similarly. All Asparagusto spawn moving right.

Keen Dreams

#Asparagusto initiation pointer
%patch $4A35 [$0398W] #Asparagusto (At $4868)

#Asparagusto initiation code
%patch $4868 $FF $36 $7052W  $FF $36 $7050W  {$9A $07C50896RL}     $83 $C4 $04
             $8B $1E $3E $70 $C7 $47 $02 $0000W  $C7 $06 $70C2W  $0001W  $E9
             $0142W

#Asparagusto spawn code
%patch $84E6 $55 $8B $EC $33 $C0 $50 $9A $044D01C9RL     $44 $44 $8B $1E $3E
             $70 $C7 $07 [$0009W]  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B
             $46 $08 $D3 $E0 $89 $47 $0C $C7 $47 $0E [$0001W]  $B8 [$1C18W]  $50
             $FF $36 $3E $70 $9A $044D1212RL     $83 $C4 $04 $5D $CB