Code: Select all
#Initial: (Don't actually have to be midpoints, but are by default)
%patch $11C7A $00 $01 #H (Is l/r midpoint)
%patch $11C7F $D0 $00 #V (Is u/d midpoint)
#Turning (Eye moves here before moving to new position, must be midpoints)
%patch $121A3 $00 $01 #H (Is l/r midpoint)
%patch $121A8 $D0 $00 #V (Is u/d midpoint)
#When chasing Keen:
%patch $122D5 $80 $00 #Moving left
%patch $122FE $00 $01 #Midpoint, l/r
%patch $122DF $80 $01 #Moving right
%patch $122F7 $50 $00 #Moving up
%patch $122FE $D0 $00 #Midpoint, u/d
%patch $12305 $50 $01 #Moving down
It is very important to pay close attention to the values of these patches and which is larger.
The basic setup is this; the eye starts at the initial position, then moves to the turning position (The Mine figures out where Keen is.) When turning it moves from the turning position to a position depending on what direction the mine is moving in. (When it stops moving of course it moves back to the turning position.)
The amount of moving the eye needs to do defines how long the Mine will spend turning, if it has no need to move, the Mine will turn on Keen instantly, which makes it *very* dangerous. The eye CAN move outside of the Mine sprite, though making it move to a 'negative' (E.g $D0 $FF) position can be problematic.
It is very easy to screw the mine up and make it freeze. If the midpoints isn't the average of the two other values, the mine will freeze. If the turning midpoints aren't the same as the l/r - u/d midpoints the mine willa ct oddly. If you swap which one of the l/r - u/d values is largest the eye will move forever. If you make a l/r/u/d value the same as a midpoint value the mine will freeze. Got all that?
To decrease the amount the eye moves, move two values towards the midpoint. Likewise to increase it, move them away:
Code: Select all
#Here we halve the eye's movement:
%patch $122D5 $A0 $00 #Moving left
%patch $122FE $00 $01 #Midpoint, l/r
%patch $122DF $40 $01 #Moving right
%patch $122F7 $90 $00 #Moving up
%patch $122FE $D0 $00 #Midpoint, u/d
%patch $12305 $10 $01 #Moving down
To move the whole eye movement thing down, left, whatever, add/subtract x from ALL values.
To stop the eye moving, make the l/r/u/d values VERY close to the midpoint value (Say +-4)
Also we have:
Code: Select all
#Remove Mine's eye
%patch $12591 $90 $90 $90 $90 $90
#Only the Mine's eye appears
%patch $12562 $75
#Mine's eye remains after it explodes
%patch $1218F $90 $90 $90 $90 $90
%patch $122AE $90 $90 $90 $90 $90