Mangling Machine
Posted: Sat Jun 17, 2006 12:38 pm
WARNING! Much patchness ahead!
To top off my Keen 3 patching frenzy
The following is a breakdown of the Mangling Machine patches into various subsections. I hope this will make it easier to understand. Anyway, lets begin!
*****************************************
1.) In general:
*****************************************
*****************************************
2.) A pleasant chat:
*****************************************
MM's textboxes are different to the ending textboxes; they 'center' themselves via a code at $1124; all they need to be told is their size and the height they should center on. This limits your control over the textboxes, but makes it simpler too.
Now the text for each window; each line ends with $00
*****************************************
3.) Sprites:
*****************************************
*****************************************
4.) Tiles:
*****************************************
***
Arms:
***
***
Legs:
***
*****************************************
5.) Rise and fall of the Mangling Machine:
*****************************************
*****************************************
6.) Bang bang!:
*****************************************
*****************************************
7.) Misc:
*****************************************
The document is located here: http://levellord.toxicsheep.com/Index/K ... achine.txt
Enjoy!
To top off my Keen 3 patching frenzy
The following is a breakdown of the Mangling Machine patches into various subsections. I hope this will make it easier to understand. Anyway, lets begin!
*****************************************
1.) In general:
*****************************************
Code: Select all
#Level Keen will go to ending if he destroys the MM
%patch $8DF2 $10 $00
#Keen enters MM level sound [do-do-DO!]
%patch $570F $2C $00
*****************************************
2.) A pleasant chat:
*****************************************
MM's textboxes are different to the ending textboxes; they 'center' themselves via a code at $1124; all they need to be told is their size and the height they should center on. This limits your control over the textboxes, but makes it simpler too.
Code: Select all
#Nearly all level 16 text boxes *center* around this height
%patch $55F4 $14 $00
#Mortimer's two replies box heights
%patch $5634 $12 $00
#Height of first box [in text lines]
%patch $5722 $01 $00
#Width of first box
%patch $5726 $05 $00
#First line of text read from
%patch $5732 $6D $28
#How long box stays [in 144ths of a second = 1 1/4s]
%patch $5744 $B4 $00
#Stop first textbox appearing
%patch $5722 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90
#Height of second box
%patch $575C $01 $00
#Width of second box
%patch $5760 $05 $00
#First line of text read from
%patch $5769 $73 $28
#How long box stays [in 144ths of a second = 1 1/4s]
%patch $577B $B4 $00
#Stop second textbox appearing
%patch $575C $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90
#Height of third box
%patch $5793 $01 $00
#Width of third box
%patch $5797 $12 $00
#First line of text read from
%patch $57A0 $80 $28
#How long box stays [in 144ths of a second = 1 2/3s]
%patch $57B2 $F0 $00
#Height of fourth box
%patch $57CA $05 $00
#Width of fourth box
%patch $57CE $26 $00
#First line of text read from
%patch $57D7 $93 $28
#Second line of text read from
%patch $57E9 $BB $28
#Third line of text read from
%patch $57FB $E3 $28
#Fourth line of text read from
%patch $580D $0A $29
#Fifth line of text read from
%patch $581F $2F $29
#How long box stays [in 144ths of a second = 1 2/3s]
%patch $5831 $F0 $00
#Stop 4th textbox appearing
%patch $57CA $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
#Height of 5th box
%patch $5849 $05 $00
#Width of 5th box
%patch $584D $26 $00
#1st line of text read from
%patch $5856 $56 $29
#2nd line of text read from
%patch $5868 $78 $29
#3rd line of text read from
%patch $587A $9F $29
#4th line of text read from
%patch $588C $C7 $29
#5th line of text read from
%patch $589E $ED $29
#How long box stays [in 144ths of a second = 1 2/3s]
%patch $58B0 $F0 $00
#Stop 5th textbox appearing
%patch $5849 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
#Height of 6th box
%patch $58C8 $02 $00
#Width of 6th box
%patch $58CC $1F $00
#1st line of text read from
%patch $58D5 $FA $29
#2nd line of text read from
%patch $58E7 $1B $2A
#How long box stays [in 144ths of a second = 1 1/4s]
%patch $58F9 $B4 $00
#Stop 6th textbox appearing
%patch $58C8 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90
#Height of 7th box
%patch $5911 $04 $00
#Width of 7th box
%patch $5915 $23 $00
#1st line of text read from
%patch $591E $3A $2A
#2nd line of text read from
%patch $5930 $5B $2A
#3rd line of text read from
%patch $5942 $7E $2A
#4th line of text read from
%patch $5954 $A0 $2A
#How long box stays [in 144ths of a second = 1 1/4s]
%patch $5966 $B4 $00
#Stop 7th textbox appearing
%patch $5911 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
#Height of 8th box
%patch $597E $01 $00
#Width of 8th box
%patch $%982 $22 $00
#First line of text read from
%patch $598B $C2 $2A
#How long box stays [in 144ths of a second = 1 1/4s]
%patch $599C $B4 $00
#Stop 8th textbox appearing
%patch $597E $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90 $90
$90 $90 $90
#Height of 9th box
%patch $59B3 $03 $00
#Width of 9th box
%patch $59B7 $26 $00
#1st line of text read from
%patch $59C0 $E5 $2A
#2nd line of text read from
%patch $59D1 $0C $2B
#3rd line of text read from
%patch $59E2 $33 $2B
#How long box stays [in 144ths of a second = 1 2/3s]
%patch $59F3 $F0 $00
Code: Select all
#First box
%patch $1C08D "No..." $00
#Second box
%patch $1C093 "It can't be!" $00
#Third box
%patch $1C0A0 "MORTIMER McMIRE!!!" $00
#Forth box
%patch $1C0B3 "Mortimer has been a thorn in your side" $0A $00
%patch $1C0DB "for as long as you can remember. Your" $0A $00
%patch $1C103 "IQ test score was 314--Mortimer's was" $0A $00
%patch $1C12A "315. He always held that over you," $0A $00
%patch $1C14F "never letting you forget for one day." $0A $00
#Fifth box
%patch $1C176 "All the practical jokes, the mental" $0A $00
%patch $1C19B "cruelty, the swirlies--each memory" $0A $00
%patch $1C1BF "makes your teeth grit harder. And now" $0A $00
%patch $1C1E7 "he's out to destroy earth! You have" $0A $00
%patch $1C20D "had enough!" $0A $00
#Sixth box
%patch $1C21A "'ALL RIGHT MORTIMER, WHAT'S THE" $0A $00
%patch $1C23B "PROBLEM? WHY DESTROY EARTH?'" $0A $00
#Seventh box
%patch $1C25A "'You and all those mental wimps" $0A $00
%patch $1C27B "deserve to die! I'm the smartest" $0A $00
%patch $1C29E "person in the galaxy. Aren't I," $0A $00
%patch $1C2C0 "mister THREE FOURTEEN! Ah ha ha!'" $00
#8th box
%patch $1C2E2 "'I'll get you for that, Mortimer!'" $00
#9th box
%patch $1C305 "'Come and try! You'll never get past" $0A $00
%patch $1C32C "my hideous Mangling Machine! Prepare" $0A $00
%patch $1C353 "to die, Commander Clown!'" $00
*****************************************
3.) Sprites:
*****************************************
Code: Select all
#Points you get for shooting a spark [$3E8 = 1'000]
%patch $4E44 $05 $00
#Points you get for shooting a heart [$3E8 = 1'000]
%patch $4EE9 $E8 $03
#How many sparks need to be shot to destroy the arms
%patch $4E53 $06 $00
*****************************************
4.) Tiles:
*****************************************
***
Arms:
***
Code: Select all
#The arm will move down until this tile is 2 tiles below its middle
#This is the 'floor'
%patch $5214 $D7 $01
#Arm will not rise after falling unless sprite is placed on the same tile as shown here
%patch $51E3 $55 $02
#Tile arm is made out of
%patch $5237 $55 $02 #
#Tile where arm meets hand, arm will not rise unless this is BIGGER or equal than arm tile above
%patch $5255 $55 $02
#Left finger top
%patch $526D $6A $02
#Left finger middle
%patch $5286 $6C $02
#Left fingertip
%patch $52A0 $6B $02
#Right finger top
%patch $52B8 $6A $02
#Left finger middle
%patch $52D1 $6C $02
#Right fingertip
%patch $52EB $6B $02
#Wallpaper tiles that appear when arm moves:
%patch $5149 $A9 $00 #Falling left finger
%patch $517C $A9 $00 #Rising left finger
%patch $5131 $A9 $00 #Lifting arm
%patch $5194 $A9 $00 #Falling right finger
%patch $51C7 $A9 $00 #Rising right finger
%patch $5162 $A9 $00 #Unknown
%patch $51AD $A9 $00 #Unknown
***
Legs:
***
Code: Select all
#Legs will move down until this tile is right under the sprite [L leg moves up first]
%patch $541B $AE $01
#Leg tile 1; Leg will lift as high as these tiles go above the sprite
%patch $53F0 $55 $02
#Leg tile 2: Legs will grow with this tile when moving down
%patch $544C $55 $02
#Unused leg tile
%patch $57AF $55 $02
#Left foot heel
%patch $5471 $6D $02
#Left foot right middle
%patch $548A $6F $02
#Left foot left middle
%patch $54A5 $6F $02
#Left foot toe
%patch $54C0 $6C $02
#Right foot heel
%patch $54D8 $6C $02
#Right foot right middle
%patch $54F1 $6F $02
#Right foot leftt middle
%patch $550B $6F $02
#Right foot toe
%patch $5526 $6D $02
#Wallpaper tiles that appear when legs rise/fall
%patch $532E $A9 $00 #Heel of both legs, rising
%patch $534D $A9 $00 #Left foot right middle rising/falling
%patch $5368 $A9 $00 #Left foot left middle rising/falling
%patch $5383 $A9 $00 #Left foot toe rising/falling
%patch $539E $A9 $00 #Right foot left middle rising/falling
%patch $53B8 $A9 $00 #Right foot right middle rising/falling
%patch $53D3 $A9 $00 #Right foot toe rising/falling
*****************************************
5.) Rise and fall of the Mangling Machine:
*****************************************
Code: Select all
#Neither foot rises
%patch $5534 $00
#Pause after both feet touch ground before right foot rises
%patch $5542 $C8 $00
*****************************************
6.) Bang bang!:
*****************************************
Code: Select all
#Left arm replacement tile
%patch $5014 $A9 $00 #Zaps/zots don't appear on this tile [background wallpaper, not replaced]
%patch $5019 $A9 $00 #Stuff replaced with
#Right arm replacement tile
%patch $5045 $A9 $00 #Zaps/zots don't appear on this tile [background wallpaper, not replaced]
%patch $504A $A9 $00 #Stuff replaced with
#Body replacement tile
%patch $50D6 $A9 $00 #Zaps/zots don't appear on this tile [background wallpaper, not replaced]
%patch $50DB $A9 $00 #Stuff replaced with
#Left arm replacement area h-start
%patch $4FFC $05 $00
#h-area end [5-7 = 3 tiles wide]
%patch $5029 $07 #no $00 on end!]
#Right arm replacement area h-start
%patch $502D $11 $00
#h-area end [11-13 = 3 tiles wide]
%patch $505A $13 #no $00 on end!]
#Both arms v-start
%patch $4E93 $06 $00
#Both arms v area stop
%patch $4FEA $13 $00
#Vertical tile space [One row is destroyed, then one 1 tile below... till the right number of
#rows is destroyed. For example normal is $13-$06 = 13 rows destroyed, usually the whole arn]
#Aww hell,try $02 in the patch and see what I mean.
%patch $4FDA $01
#The right arm is not destroyed [but stops moving]
%patch $5052 $F0 $FE
#The left arm is not destroyed [but stops moving]
%patch $5021 $21 $FF
#The arms don't stop moving when six sparks are shot.
%patch $40EC $01
#Both arms keep being destroyed down the level [Just try it out]
%patch $4FF0 $0A $00
#And this patch is the same, but better
%patch $4FDD $00
*****************************************
7.) Misc:
*****************************************
Code: Select all
#Hand keeps falling, except for l finger, which stops where it should
%patch $52F0 $90
#Neither foot rises
%patch $5534 $00
#Both feet spend nearly all the time on the ground; the rise/fall VERY fast!
%patch $5548 $01
#When 6 sparks are shot, MM body *below* arm sprites blows up, Keen goes to ending
%patch $5062 $90
Enjoy!