%ext ck6
%version 1.4

#Patch files (Both DCT files are the same)
%egahead EGAHEAD.CK6
%maphead maphead.CK6
%patchfile $1ED50 "STORY.K10"
%patchfile $25212 "Keen10.tli"
%patchfile $20C50 "AUDIOHED.CK6"
%patchfile $1fca7 Keen10.bin

#Loaded games switch off God Mode -Keen 6
%patch $1BA6A $C7 $06 $C7B7W  $0000W $90

#########################
#Keen			#
#########################

#Keen 6: Disable 2 button firing in demo
%patch $8439 $90 $90 $90 $90 $90 $90 $90

#New tile property: Hot (Change Keen's action if he touches it without Godmode)
%patch $C2F2 $83 $3E $C7B7W  $00 $75 $1F $C7 $44 $1C $265EW  $EB $18 $90

#Keen incinerated sequence =$265EW
%patch $3338E $0054W $0054W $0003W $0000W $0001W $000AW $0000W $0000W #Use unused Gik actions, set gm=1
              $069A0C45RL   $00000000L    $08F4180ARL   $267CW
%patch $333AC $0133W $0133W $0003W $0000W $0001W $000AW $0000W $0000W #Play incinerate sound
              $1A502893RL   $00000000L    $08F4180ARL   $269AW
%patch $333CA $0134W $0134W $0003W $0000W $0001W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $26B8W
%patch $333E8 $0135W $0135W $0003W $0000W $0001W $0030W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $20C6W
%patch $32DF6 $0136W $0136W $0003W $0000W $0001W $000AW $0000W $0000W #Use unused Red 'let actions
              $00000000L    $00000000L    $08F4180ARL   $20E4W
%patch $32E14 $0137W $0137W $0003W $0000W $0001W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $2102W
%patch $32E32 $0138W $0138W $0003W $0000W $0001W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $2210W
%patch $32F40 $0139W $0139W $0003W $0000W $0001W $000AW $0000W $0000W #Use unused Blue 'let actions
              $00000000L    $00000000L    $08F4180ARL   $222EW
%patch $32F5E $013AW $013AW $0003W $0000W $0001W $001CW $0000W $0000W #Reset gm
              $1A5028A4RL   $00000000L    $08F4180ARL   $222EW

#Incinerating Keen behavior (Make sound) =$1A502893RL
%patch $1CD93 $55 $8B $EC $B8 $0018W  $50 $9A $183B09F1RL     $83 $C4 $02 $5D
              $CB

#Change pointers to compact Keen init to contain new death animations
%patch $E954 $006DW #Keen left (At $E488)
%patch $E956 $008EW #Map Keen (At $E4AE)

#Compact Keen initiation codes (Frees $E4D4-$E501)
%patch $E488 $B8 $0001W  $EB $03 $B8 $FFFFW  $50 $57 $56 $9A $0AA20004RL
             $83 $C4 $06 $9A $0CA6000ARL     $C7 $06 $CD01W  $0001W  $C7 $06
             $CD45W  $0001W  $EB $15
%patch $E4AE $57 $56 $9A $0CA60511RL     $83 $C4 $04 $9A $0CA6000ARL     $C7
             $06 $CD15W  $0001W  $B8 $2BF3RW $8A $16 $28 $76 $8E $C0 $26 $08
             $16 $00AFW  $E9 $03F3W

#Addition cache for Keen's new death
%patch $32458 $0133W #Card cache start
%patch $324A8 $013AW #Card cache end

#Keen start to die behavior code (Play death sound)
%patch $1253C $55 $8B $EC $B8 $0037W  $50 $9A $183B09F1RL     $83 $C4 $02 $5D
              $CB

#Keen dead behavior (Switch level state to lose, play sound, gm=0) =$1A5028A4RL
%patch $1CDA4 $55 $8B $EC $C7 $06 $75ACW  $0001W  $B8 $0017W  $50 $9A $183B09F1RL
                      $83 $C4 $02 $C7 $06 $C7B7W  $0000W  $5D $CB

#Disable F10-Z (Free $75EB-7604), replace with Keen gm=1 behavior ($069A0C45RL)
%patch $75E3 $EB $10 $55 $8B $EC $56 $8B $76 $06 $C7 $06 $C7B7W  $0001W  $5E $5D $CB

#Reset Keen's score and ammo code = $069A02D4RL
%patch $6C74 $55 $8B $EC $56 $8B $76 $06 $A1 $7584W  $A3 $7588W
                 $A1 $7586W  $A3 $758AW  $A1 $7582W  $A3 $7590W  $5E $5D $CB

#Store Keen's score on level load
%patch $67D9 $A1 $7588W  $A3 $7584W $A1 $758AW  $A3 $7586W  $A1 $7590W  $A3
             $7582W  $EB $37

#Grappling Hook Text
%patch $FBC4  $0008W #Window height
%patch $FBF9  $3C6FW
%patch $3499F "  I cannot leave   " $0A
              "this place without all" $0A
              "my friends and having " $0A
              "saved the universe again!" $00

#Keen starts game in the BWB
%patch $5A8F $75A4W $000CW

#Names:
%patch $34AF4 "SzemiSoft - '14  " $00
%patch $34B34 "                 " $00
%patch $34B74 "Szemi            " $00
%patch $34BB4 "Levellass        " $00
%patch $34BF4 "Alan Smithee     " $00
%patch $34C34 "Tom Hall         " $00
%patch $34C74 "T. J. Moir       " $00
%patch $34CB4 "                 " $00

#Points: (10'000)
%patch $34B2E $002DC6C0L
%patch $34B6E $002DC6C0L
%patch $34BAE $002DC6C0L
%patch $34BEE $002C4020L
%patch $34C2E $001E8480L
%patch $34C6E $000F4240L
%patch $34CAE $0007A120L
%patch $34CEE $0003D090L


#########################
#Added help section	#
#########################

#NOMEM chunk changed to simple 'thanks for playing' chunk
%patch $3B2D $15AFW
#%patch $6D47 $15AFW	# K1n9_Duk3 mod: this is overwitten below

#No thumbs up when entering levels (Free animations!)
%patch $61FA $CB

#Display help section code (Chunk is $15B2W) =$069A036CRL 
%patch $6D0C $55 $8B $EC $83 $EC $02 $56 $B8 $0004W  $50 $9A $1CF70317RL   
             $83 $C4 $02 $9A $1608012ARL     $9A $125A14BERL     $9A $125A1610RL
                     $B8 $001CW  $50 $9A $125A1108RL     $83 $C4 $02 $B8
         $001BW  $50 $9A $125A1108RL     $83 $C4 $02 $B8 $15B2W  $50 $9A
         $183B0053rl     $83 $C4 $02 $A1 $A18DW  $89 $46 $FE $A3 $CCB1W  $C7	# K1n9_Duk3 fix: use CacheAndLock (see further below)
             $06 $CCAFW  $0000W  $9A $0DBE0631RL     $90 $90 $90 $90 $90 $90 $90
             $90 $90 $90 $90 $90 $E9 $0087W  $33 $C0 $50 $9A $0DBE048ARL     $83
             $C4 $02 $9A $141308A9RL     $33 $C0 $50 $FF $36 $42 $A9 $9A
         $1DFB07E4RL     $83 $C4 $04 $B8 $001BW  $50 $B8 $00B8W  $50 $B8 $012AW
%patch $6D9F     $50 $90 $90 $90 $90 $90 $83 $C4 $06 $33 $F6 $EB $16 $9A
         $14130F44RL     $0B $C0 $75 $47 $B8 $0001W  $50 $9A $1DFB0ADDRL   
             $83 $C4 $02 $46 $83 $FE $46 $7C $E5 $B8 $001CW  $50 $B8 $00B8W 
             $50 $B8 $012AW  $50 $90 $90 $90 $90 $90 $83 $C4 $06 $33 $F6 $EB
             $16 $9A $14130F44RL     $0B $C0 $75 $14 $B8 $0001W  $50 $9A
         $1DFB0ADDRL     $83 $C4 $02 $46 $83 $FE $46 $7C $E5 $EB $98 $A1 $FD
             $CC $3B $06 $FB $CC $7D $0A $80 $3E $D3 $A6 $01 $74 $03 $E9 $FF66W  $B8	# K1n9_Duk3 mod: allow exiting from the help text with Esc
             $A18DW  $50 $9A $15110988RL     $83 $C4 $02 $B8 $765FW  $50 $9A
             $15110988RL     $83 $C4 $02 $B8 $7661W  $50 $9A $15110988RL   
             $83 $C4 $02 $9A $125A14DERL     $9A $141308A9RL     $B8 $0004W 
             $50 $9A $1CF70317RL     $83 $C4 $02 $9A $1608012ARL     $9A
         $0CA6000Arl $5E $8B $E5 $5D $CB	# K1n9_Duk3 fix: fix score box instead of freeing graphics

#Call help when F1 pressed (Fix screen and but not scorebox)
%patch $77D3 $3B $75 $57 $9A $069A036CRL     $9A $16080E88RL     $EB $4B


#########################
#Cheats			#
#########################

#DISABLED: F10-V, F10-T, F10-Z, F10-D

#Don't need debug mode to use F10 cheats
%patch $784B $90 $90

#Disable F10-D (Frees 53 bytes at $7238)
%patch $7236 $EB $35

#A 2 enter gives a life, is S + Z + Enter
%patch $8086 $83 $3E $C813W  $00 $74 $38 $83 $3E $C82DW  $00 $74 $31 $B8 $0002W
                 $50 $B8 $0009W  $50 $9A $18F81070RL     $83 $C4 $04 $83 $06
             $C3 $A6 $02 $B8 $05D7W  $50 $9A $18F80CF9RL     $83 $C4 $02 $9A
             $1CF70AA5RL     $9A $14130EE0RL     $FF $06 $75A6W  $90 $90

#Keen 6 - remove Huffman compression
%patch $1285D $55 $8B $EC $56 $57 $8C $DA $C4 $7E $0A $C5 $76 $06 $8B $4E $0E $D1
              $E9 $FC $F3 $A5 $73 $01 $A4 $8E $DA $5F $5E  $5D $CB

#Remove references to Ted5 running in:
%patch $6866  $EB $1B #Level state loop
%patch $727B  $EB $0A #F10-E cheat
%patch $1CA1A $EB $0C #Unknown

#Remove odd Ted5 ref and more (Free $3A22-$3A7D)
%patch $3A20 $EB $5C

#Change demo cheat text (DEMO)
%patch $6292  $01DDW #Text called from
%patch $633D  $01DDW #Text called from


#########################
#Text stuff		#
#########################

#Item text
%patch $312EB "CHIP" $00

%patch $31301 "JARS " $00

%patch $30F95 "Return to Zenux" $00
 
#Skip creature question (Frees $1CC8C - $1CF38, currently at $1CE82)
%patch $1CC83 $B8 $0001W  $5F $5E $8B $E5 $5D $CB

#Terminator text palette:
%patch $30E7C $00 $1F $1F $07 $01 $01 $01 $01   #Dark colors
              $11 $11 $11 $11 $13 $13 $13 $13 $00 #Light colors (and border color)

#Story background palette:
%patch $30E62 $00 $01 $13 $03 $1F $19 $18 $07 #Dark colors
              $1F $1F $1F $1F $1F $1F $1F $1F #Light colors

#Switch demo-story sequences
%patch $3C9C $046DW #Star wars story (At $3C1D)
%patch $3C9E $0460W #Demo 1 (At $3C10)

#Stop Flect reflecting Keen's shot
%patch $11C1B $EB $04	

#########################
#       Red Robot       #
#########################

#Cache:
%patch $3242A $015EW #Unused cache start
%patch $3247A $0167W #Unused cache end

#Initiation pointer
%patch $E972 $00C7W #At $E4E7

#Initiation code
%patch $E4E7 $57 $56 $9A $069A0301RL     $83 $C4 $04 $C7 $06 $CD17W  $0001W
             $E9 $03CDW

#Spawn code =$069A0301RL
%patch $6CA1 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
             $66 $A9 $C7 $07 $0011W  $C7 $47 $02 $0001W  $C7 $47 $20 $0003W
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05
             $FE50W  $89 $47 $0C $9A $1CF30034RL     $3D $0080W  $7D $0B $8B
             $1E $66 $A9 $C7 $47 $0E $0001W  $EB $09 $8B $1E $66 $A9 $C7 $47
             $0E $FFFFW  $8B $1E $66 $A9 $C7 $47 $10 $0001W  $B8 $1BBCW  $50
             $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB

#Robot actions: 5 loop: $1BBCW, $1BDAW, $1BF8W, $1C34W, $1C70W
%patch $328EC $0163W $015EW $0000W $0000W $0001W $0014W $0060W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F4180ARL   $1BDAW
%patch $3290A $0164W $015FW $0000W $0000W $0001W $0014W $0060W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F4180ARL   $1BF8W
%patch $32928 $0165W $0160W $0000W $0000W $0001W $0014W $0060W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F4180ARL   $1C34W
%patch $32964 $0166W $0161W $0000W $0000W $0001W $0014W $0060W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F4180ARL   $1C70W
%patch $329A0 $0167W $0162W $0000W $0000W $0001W $0014W $0060W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F4180ARL   $1BBCW


#########################
#Laser switch		#
#########################

#Switch pointer
%patch $E9AC $00B4W #At $E4D4

#Initiation code (Use unused platform cache)
%patch $E4D4 $57 $56 $9A $069A0B54RL     $83 $C4 $04 $C7 $06 $CD23W  $0001W
             $E9 $03E0W

#Spawn code = $069A0B54RL (Close fit! Whew!)
%patch $74F4 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
             $66 $A9 $C7 $07 $0012W  $C7 $47 $02 $0002W  
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89
             $47 $3E $89 $47 $0C $B8 $417EW  $50 $53 $9A $08F41219RL     $83
             $C4 $04 $5D $CB

#Switch off action: =$417EW	#(was $0004 before)
%patch $34EAE $0151W $0151W $0000W $0000W $0000W $0020W $0000W $0000W
              $0000059DRL   $037B0272RL   $08F4180ARL   $417EW
# K1n9_Duk3 mod: state has been moved (into copy protection area) to restore Borland string
# and contact function has been changed (see new contact function below)

#Switch on action: =$00BCW
%patch $30DEC $0152W $0152W $0000W $0000W $0000W $0020W $0000W $0000W
              $0000059DRL   $037B0272RL   $08F4180ARL   $00BCW

#Switch bust action: =$00DAW
%patch $30E0A $0153W $0153W $0002W $0000W $0000W $0000W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $0000W

#Keen flip action =$01E3W
%patch $30F13 $0076W $0076W $0000W $0000W $0000W $0020W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $089AW

#Switch on collision, bust if shot, flip if up arrow+Keen = $037B0272RL (NEEDS FOLLOWING CODE!)
#%patch $3A22 $55 $8B $EC $56 $8B $76 $08 $83 $3C $02 $75 $3C $83 $3E $A960W
#             $00 $75 $32 $C7 $06 $7598W  $0000W  $EB $19
#
#Switch off collision, bust if shot, flip if up arrow+Keen, also smashable = $037B028DRL
#%patch $3A3D $55 $8B $EC $56 $8B $76 $08 $83 $3C $02 $75 $21 $83 $3E $A960W
#             $00 $75 $1A $C7 $06 $7598W  $0001W  $C7 $44 $1C $01E3W  $B8 $0015W
#                 $50 $9A $183B09F1RL     $83 $C4 $02 $5E $5D $CB $83 $3C $03
#             $75 $07 $B8 $00DAW  $50 $E9 $CE69W  $5E $5D $CB

# K1n9_Duk3 mod: new contact function for switch - only toggles switch once:
%patch $3A22
	$55			#	push	bp
	$8B $EC			#	mov	bp, sp
	$56			#	push	si
	$8B $76 $08		#	mov	si, [bp+8]
	$83 $3C $02		#	cmp	[si+objtype.obclass], 2
	$75 $37			#	jnz	check_shot
	$83 $3E $A95Ew $FF	#	cmp	c_ydir, -1
	$75 $45			#	jnz	done
	$83 $3E $C74Bw $00	#	cmp	upKeyHeld, 0
	$75 $3E			#	jnz	done
	$83 $7C $36 $00		#	cmp	[si+objtype.hitnorth], 0
	$74 $38			#	jz	done
	$83 $36 $7598w $01	#	xor	gamestate_switchstate, 1
	$C7 $06 $C74Bw $0001w	#	mov	upKeyHeld, 1;
	$B8 $01E3w		#	mov	ax, offset s_useswitchobj
	$50			#	push	ax
	$56			#	push	si
	$9A $08F41297rl		#	call	ChangeState
	$58 $58			#	pop	ax	;(twice)
#	$C7 $44 $1C $01E3w	#	mov	[si+objtype.state], s_useswitchobj
	$B8 $0015w		#	mov	ax, 21
	$50			#	push	ax
	$9A $183B09F1rl		#	call	SD_PlaySound
	$58			#	pop	ax
	$EB $15			#	jmp	done
				#check_shot:
	$83 $3C $03		#	cmp	[si+objtype.obclass], 3
	$75 $10			#	jnz	done
	$B8 $00DAw		#	mov	ax, offset s_switchbust
	$50			#	push	ax
	$56			#	push	si
	$FF $76 $06		#	push	[bp+6]
	$9A $08F41722rl		#	call	StunContact
	$83 $C4 $06		#	add	sp, 6
				#done:
	$5E			#	pop	si
	$5D			#	pop	bp
	$CB			#	retf

#Switch behavior: change action epending on LasOn variable (Switch when flipped) = $0000059DRL
%patch $059D $55 $8B $EC $56 $8B $76 $06 $83 $3E $7598W  $00 $74 $07 $C7 $44
             $1C $00BCW  $EB $05 $C7 $44 $1C $417EW  $5E $5D $CB	# K1n9_Duk3 mod: state has been moved

#Change cache
%patch $32436 $0151W #Platforms cache start
%patch $32486 $0153W #Cache end


#########################
#BLOOGLETS		#
#########################

#Spawn height: 2 pixels up
%patch $10B54 $FFE0W


#################
#Red Blooglet	#
#################

#Shrink cache to 2 anims
%patch $3242E $013BW #Red Blooglet cache start
%patch $3247E $013CW #Red Blooglet cache end

#Slower, 2 frames, unstunnable
%patch $32DBA $013BW $013CW $0001W $0000W $0001W $0015W $0010W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F41831RL   $20A8W
%patch $32DD8 $013CW $013BW $0001W $0000W $0001W $0015W $0010W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F41831RL   $208AW


#################
#Yellow Blooglet#
#################

#Halve walking speed
%patch $32E5C $0040W $0000W
%patch $32E7A $0040W $0000W
%patch $32E98 $0040W $0000W
%patch $32EB6 $0040W $0000W


#################
#Blue Blooglet	#
#################

#Blue Blooglet cache end
%patch $32482 $0174W 

#2 actions, fast, deadly
%patch $32EE6 $0173W $0171W $0001W $0000W $0001W $0015W $0040W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F41831RL   $21D4W
%patch $32F04 $0174W $0172W $0001W $0000W $0001W $0015W $0040W $0000W
              $0EFC18D5RL   $11CF0306RL   $08F41831RL   $21B6W


#################
#Green Blooglet	#
#################

#Alter cache
%patch $32434 $0175W #Green Blooglet cache start
%patch $32484 $0182W #Green Blooglet cache end

#Change animation
%patch $32F7C $0176W $0175W

#1 action movement sequence
%patch $32F98 $224CW

#5 action stun sequence
%patch $32FF4 $0178W $0177W $0000W $0000W $0000W $000CW $0000W $0000W
              $1A502893RL   $00000000L    $08F4180ARL   $226AW
%patch $32F9A $0179W $017AW $0000W $0000W $0000W $000CW $0000W $0000W
              $1A502893RL   $00000000L    $08F4180ARL   $2288W
%patch $32FB8 $017BW $017BW $0000W $0000W $0000W $000CW $0000W $0000W
              $1A502893RL   $00000000L    $08F4180ARL   $22A6W
%patch $32FD6 $017CW $017CW $0000W $0000W $0000W $000CW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $21F2W
%patch $32F22 $017DW $017DW $0000W $0000W $0000W $000CW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $0000W

#Upwards speed of Blooglet stun-gems
%patch $10C6F $FFA0W

#Location of new item animation list
%patch $10C7E $027BW

#Item animation list
%patch $30FAB $017EW $017EW $017EW $017EW $017EW $017EW
              $017EW $017EW $017EW $017EW $017EW $017EW

#Blooglet item gives 1UP (And thus 20K points!)
%patch $10C71 $C7 $47 $3E $000AW  $90

#Item frames
%patch $10C8E $0005W

#Change point item scores
%patch $31F9C $01F4W #Red gem
              $01F4W #Yellow gem
              $01F4W #Blue gem
              $01F4W #Green gem
              $0064W #100
              $00C8W #200
              $01F4W #500
              $03E8W #1000
              $07D0W #2000
              $1388W #5000
              $4E20W #100 #1UP
              $0064W #Raygun


#################
#Babobba	#
#################

#Babobba cache end: - 6
%patch $3248E $0123W

#Stunned, landed
%patch $33D0E $0123W $0123W

#Babobba makes noise when it lands
%patch $12331 $19
%patch $1233F $B8 $0007W  $50 $9A $183B09F1RL     $83 $C4 $02 $E9 $FD3AW

#Babobba doesn't land long
%patch $33CBE $0006W

#Babobba doesn't nap, shoot (Free 1215F-121FD)
%patch $121FE $55 $8B $EC $83 $EC $04 $56 $57 $8B $76 $06
%patch $33CC4 $11CF050ERL


#################
#Platforms	#
#################

#Don't draw Goplat Bips in Keen 6
%patch $10738 $5E $5D $CB

#Change pointers
%patch $E986 $01FAW #Platform up (At $E61A)
%patch $E988 $01FAW #Platform right (At $E61A)
%patch $E98A $01FAW #Platform down (At $E61A)
%patch $E98C $01FAW #Platform left (At $E61A)
%patch $E990 $020DW #Falling Platform (At $E62D)
%patch $E992 $0216W #Only-Easy sitting Platform (At $E636)
%patch $E994 $0220W #Easy\Medium sitting Platform (At $E640)
%patch $E996 $022AW #Easy\Medium\Hard sitting Platform (At $E64A)
%patch $E998 $0233W #Path Platform up (At $E653)
%patch $E99A $0233W #Path Platform right (At $E653)
%patch $E99C $0233W #Path Platform down (At $E653)
%patch $E99E $0233W #Path Platform left (At $E653)
%patch $E9A0 $0246W #Sneaky Platform (At $E666)

#Compact Platform initiation codes (Frees $E5D4 - $E619)
%patch $E61A $8B $46 $FA $05 $FFE5W  $50 $57 $56 $9A $0EFC1116RL     $83 $C4 #HV plats
             $06 $EB $43
%patch $E62D $57 $56 $9A $0EFC13C2RL     $EB $37			     #Dropping plat
%patch $E636 $83 $3E $75A8W  $01 $7E $0D $E9 $0287W  $83 $3E $75A8W  $02 $7E #Sitting plats
             $03 $E9 $027DW  $57 $56 $9A $0EFC14E6RL     $EB $1A
%patch $E653 $8B $46 $FA $05 $FFDCW  $50 $57 $56 $9A $0EFC1539RL     $83 $C4 #Goplat
             $06 $EB $0A
%patch $E666 $57 $56 $9A $0EFC17A4RL     $83 $C4 $04 $B8 $2BF3RW $8A $16 $28 #Sneaky plat
             $76 $8E $C0 $26 $08 $16 $00EDW  $E9 $0246W

#Change Platform animations to match new cache:
%patch $32B26 $00EDW $00EDW #Dropping
%patch $32B44 $00EDW $00EDW
%patch $32B62 $00EDW $00EDW
%patch $32B9E $00EDW $00EDW #Goplat
%patch $32B08 $00EDW $00EDW #Horizontal-Vertical Platform
%patch $32B80 $00EDW $00EDW #Sitting
%patch $32BBC $00EDW $00EDW #Sneaking
%patch $32BDA $00EDW $00EDW
%patch $32BF8 $00EDW $00EDW


#################
#Ceilick	#
#################

#Ceilick cache start is -4 (4 extra frames!)
%patch $3244E $00F2W

#Waiting Ceilick is nuke box
%patch $33EEE $00F2W $00F2W $0002W $0000W $0000W $0000W $0000W $0000W
              $00000000L    $11CF086CRL   $08F4180ARL   $31BEW

#Waiting Ceilick collision: anything makes it go boom
%patch $1255C $55 $8B $EC $56 $8B $76 $06 $C7 $44 $1C $31DCW $B8 $0037W  $50
              $9A $183B09F1RL     $83 $C4 $02 $5E $5D $CB

#Keep clipping
%patch $124CF $0001W

#Ceilick explode sequence
%patch $33F0C $00F3W $00F3W $0000W $0000W $0000W $0008W $0000W $0000W
              $11CF084CRL   $11CF0306RL   $08F4180ARL   $31FAW
%patch $33F2A $00F4W $00F4W $0000W $0000W $0000W $0008W $0000W $0000W
              $1A502884RL   $11CF0306RL   $08F4180ARL   $3218W
%patch $33F48 $00F5W $00F5W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $3236W
%patch $33F66 $00F6W $00F6W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $3254W
%patch $33F84 $00F7W $00F7W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $3272W
%patch $33FA2 $00F8W $00F8W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $3290W
%patch $33FC0 $00F9W $00F9W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $32AEW
%patch $33FDE $00FAW $00FAW $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $32CCW
%patch $33FFC $00FBW $00FBW $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $32EAW
%patch $3401A $00FCW $00FCW $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $3308W
%patch $34038 $00FDW $00FDW $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $0000W

#Change clipping behavior (Stops explosions moving oddly) =$1A502884RL
%patch $1CD84 $55 $8B $EC $56 $8B $76 $06 $C7 $44 $06 $0000W  $5E $5D $CB


#################################
#Nospike			#
#################################

#Shrink Nospike cache
%patch $3249A $0132W

#Nospike item sparkle sequence
%patch $331AE $012BW $012BW $0003W $0000W $0000W $000AW $0000W $0000W
              $0EFC0E21RL   $10CC019ARL   $08F4180ARL   $249CW
%patch $331CC $012CW $012CW $0003W $0000W $0000W $000AW $0000W $0000W
              $0EFC0E21RL   $10CC019ARL   $08F4180ARL   $24BAW
%patch $331EA $012DW $012DW $0003W $0000W $0000W $000AW $0000W $0000W
              $0EFC0E21RL   $10CC019ARL   $08F4180ARL   $24D8W
%patch $33208 $012EW $012EW $0003W $0000W $0000W $000AW $0000W $0000W
              $0EFC0E21RL   $10CC019ARL   $08F4180ARL   $2460W

#Nospike item sit action
%patch $33190 $012AW $012AW $0002W $0000W $0000W $000AW $0000W $0000W
              $0EFC0E21RL   $10CC019ARL   $08F4180ARL   $2460W

#Nosp item behavior: randomly sparkle = $0EFC0E21RL
%patch $FDE1 $55 $8B $EC $56 $8B $76 $06 $9A $1CF30034RL     $3D $0004W  $7D
             $05 $C7 $44 $1C $247EW  $5E $5D $CB

#Nospike is a 30'000 point item collision=$10CC019ARL
%patch $10E5A $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $83 $3D $02 $75 $1D #Check for Keen
              $B8 $7530W  $50 $9A $069A1F06RL $83 $C4 $02 $C7 $44 $1C $24F6W  #Change action to Nospikegot, give 30000
              $B8 $0008W  $50 $9A $183B09F1RL $83 $C4 $02 $5F $5E $5D $CB     #Play sound

#30'000 point got action =$24F6W
%patch $33226 $012FW $012FW $0001W $0000W $0000W $0048W $0000W $FFF8W
              $00000000L    $00000000L    $08F4180ARL   $0000W

#Set Nospike as item spawn
%patch $10CC5 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
              $66 $A9 $C7 $07 $0010W  $C7 $47 $02 $0001W  $C7 $47 $20 $0001W
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05
              $FFF0W  $89 $47 $0C $8B $1E $66 $A9 $C7 $47 $0E $FFFFW  $8B $1E
              $66 $A9 $C7 $47 $10 $0001W  $C7 $47 $06 $0000W  $B8 $2460W  $50
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB

#10'000 point init loc
%patch $E966 $2A6BW #Easy Nospike (At $10E8B)

#10K initiation code
%patch $10E8B $57 $56 $9A $10CC01DERL     $83 $C4 $04 $C7 $06 $CD37W  $0001W  $E9 $DA29W

#10K spawn code = $10CC01DERL
%patch $10E9E $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
              $66 $A9 $C7 $07 $0010W  $C7 $47 $02 $0001W  $C7 $47 $20 $0001W
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05
              $FFF0W  $89 $47 $0C $8B $1E $66 $A9 $C7 $47 $0E $FFFFW  $8B $1E
              $66 $A9 $C7 $47 $10 $0001W  $C7 $47 $06 $0000W  $B8 $2514W  $50
              $53 $9A $08F41219RL     $83 $C4 $04 $5D $CB

#10K actions =$2514W
%patch $33244 $0130W $0130W $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $10CC0239RL   $08F4180ARL   $2532W
%patch $33262 $0131W $0131W $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $10CC0239RL   $08F4180ARL   $2514W

#10'000 point item collision=$10CC0239RL
%patch $10EF9 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $83 $3D $02 $75 $1D #Check for Keen
              $B8 $2710W  $50 $9A $069A1F06RL $83 $C4 $02 $C7 $44 $1C $2550W  #Change action to Nospikegot, give 10000
              $B8 $0008W  $50 $9A $183B09F1RL $83 $C4 $02 $5F $5E $5D $CB     #Play sound

#30'000 point got action =$2550W
%patch $33280 $0132W $0132W $0001W $0000W $0000W $0048W $0000W $FFF8W
              $00000000L    $00000000L    $08F4180ARL   $0000W


#################################
#Blorb				#
#################################

#Redirect Blooguard placements to Blorb's
%patch $E9FA $03C7W #Easy Blooguard (At $E835)
%patch $E9FC $03BDW #Medium Blooguard (At $E82B)
%patch $E9FE $03B3W #Hard Blooguard (At $E821)

#Blorb floating v speeds
%patch $33EA0 $0008W $0008W
%patch $33EBE $0008W $0008W
%patch $33EDC $0008W $0008W

#Cache
%patch $3243A $014EW #Blorb cache start
%patch $3248A $0150W #Blorb cache end

#Floating animations - faster
%patch $33E94 $014EW $0150W
%patch $33E9E $000AW
%patch $33EB2 $014FW $014FW
%patch $33EBC $000AW
%patch $33ED0 $0150W $014EW
%patch $33EDA $000AW


#################################
#Blorb replacement: pseudoplat	#
#################################

#Blorb inits go to rep init
%patch $E9EE $1843W #Easy Blorb (At $FC63)
%patch $E9F0 $183CW #Medium Blorb (At $FC5C)
%patch $E9F2 $1835W #Hard Blorb (At $FC55)

#Rep init (Cache 238 only)
%patch $FC55 $83 $3E $75A8W  $03 $7C $1F $83 $3E $75A8W  $02 $7C $18 $57 $56
             $9A $0EFC0CBERL     $83 $C4 $04 $B8 $2BF3RW $8A $16 $28 $76 $8E
             $C0 $26 $08 $16 $00EEW  $E9 $EC49W

#Rep spawn = $0EFC0CBERL
%patch $FC7E $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
             $66 $A9 $C7 $47 $10 $0001W  $C7 $07 $0007W
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89
             $47 $0C $B8 $2F2AW  $EB $6F

#Rep action, move like a Blorb (Vertical only)
%patch $33C5A $00EEW $00EEW $0000W $0000W $0000W $0006W $0000W $0020W
              $00000000L    $11CF0306RL   $11CF0735RL   $2F2AW


#################################
#Gik				#
#################################

#Shrink Gik cache
%patch $32488 $0185W

#Gik harmless to Keen, pushes him
%patch $1112E $06
%patch $33334 $0183W $0185W $0000W $0000W $0001W $000AW $00C0W $0000W
              $00000000L    $0EFC0006RL   $08F41831RL     $2622W
%patch $33352 $0184W $0184W $0000W $0000W $0001W $000AW $00C0W $0000W
              $00000000L    $0EFC0006RL   $08F41831RL     $2640W
%patch $33370 $0185W $0183W $0000W $0000W $0001W $000AW $00C0W $0000W
              $00000000L    $0EFC0006RL   $08F41831RL     $2604W

#Gik activity, don' stop if offscreen:
%patch $11133 $0002W


#################################
#Flags				#
#################################

#Flags are always sitting - Keen 6
%patch $5F0F $EB

#Keen K flag waving animations moved
%patch $32124 $00B7W $00B7W
%patch $32142 $00DDW $00DDW
%patch $32160 $00DEW $00DEW
%patch $3217E $00DFW $00DFW

#Alter map cache to fit
%patch $32428 $00B7W #Map Keen cache start
%patch $32478 $00DFW #Map Keen cache end


#################################
#Bloog				#
#################################

#Bloog harmless
%patch $108CC $EB

#Bloog sprite type: Push Keen
%patch $1083E $06

#New star spec for Bloogs
%patch $A9A0 $C7 $46 $FE $0080W  $BF $FFC0W  $EB $02

#Change Bloog cache by 1
%patch $3242C $0155W #Bloog cache start
%patch $3247C $015DW #Bloog cache end

#Move stunned Blood anims
%patch $32C8E $0155W $0155W


#################################
#ODDSAT: COLLAPSER KEEN		#
#################################

#'Satelite up' spawns Blooguard
%patch $E6A8 $57 $56 $9A $0EFC192ERL     $83 $C4 $04 $C7 $06 $CD2DW  $0001W
             $E9 $020CW

#Blooguard spawning code: Health is 8, 16 or 31.5 on EMH
%patch $108EE $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
              $66 $A9 $C7 $07 $0018W  $C7 $47 $02 $0002W  $C7 $47 $20 $0000W
              $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $05
              $FF20W  $89 $47 $0C $8B $1E $66 $A9 $C7 $47 $0E $0001W  $8B $1E
              $66 $A9 $C7 $47 $10 $0001W  $C7 $47 $40 $0008W  $83 $3E $75A8W
              $03 $74 $0E $83 $3E $75A8W  $02 $75 $0C $C7 $47 $40 $0010W  $EB
              $05 $C7 $47 $40 $0020W  $B8 $1B9EW  $E9 $03BAW                  #->$10D14

#Expand Blooguard cache for extra animations
%patch $32440 $00F3W #Blooguard cache start (Include Ceilick boom anims)
%patch $32490 $011CW #Blooguard cache end (Incl teleport, fall, bomb and all that)

#New collapser behavior, randomly turn to Keen, shoot jump when Keen shoots
%patch $1095E $55 $8B $EC $56 $8B $76 $06 $9A $1CF30034RL     $3D $0020W  $7D
              $1D $8B $44 $0A $8B $1E $64 $A9 $3B $47 $0A $73 $07 $C7 $44 $0E
              $0001W  $EB $05 $C7 $44 $0E $FFFFW  $C7 $44 $1C $1FF4W  $83 $3E
              $C74DW  $00 $74 $05 $C7 $44 $1C $2012W  $5E $5D $CB

#1 Collapser frame looks to jump at Keen
%patch $32D16 $1A502823RL

#Collapser not deadly to Keen:
%patch $10A05 $EB

#Second new collapser behavior, if Keen is above, jump at him =$1A502823RL
%patch $1CD23 $55 $8B $EC $56 $57 $8B $76 $06 $83 $7C $36 $09 $74 $4F $8B $1E
              $64 $A9 $8B $47 $0A $2B $44 $0A $8B $F8 $8B $47 $28 $3B $44 $28
              $77 $3B $8B $44 $28 $2B $47 $28 $3D $0500W  $77 $30 $0B $FF $7D
              $0C $C7 $44 $0E $FFFFW  $C7 $44 $16 $FFE8W  $EB $0A $C7 $44 $0E
              $0001W  $C7 $44 $16 $0018W  $C7 $44 $18 $FFB4W  $C7 $44 $1C $3C51W
                  $B8 $0007W  $50 $9A $183B09F1RL     $83 $C4 $02 $5F $5E $5D $CB

#Jumping collapser action: Jump =$3C51W
%patch $34981 $011BW $011AW $0003W $0000W $0000W  $0029W $0000W $0000W
              $08F41765RL   $0EFC1A37RL   $08F4180ARL    $204EW

#Collapser shoot action=$1FF4W
%patch $32D24 $010AW $010BW $0000W $0000W $0001W  $0019W $0080W $0000W
              $10CC026ARL   $0EFC1A37RL   $1A5028C1RL    $1F7CW

#Collapser shoot behavior =$10CC026ARL
%patch $10F2A $55 $8B $EC $83 $EC $04 $56 $57 $8B $76 $06 $B8 $0001W  $50 $9A $069A1E25RL     $83 $C4
              $02 $8B $1E $66 $A9 $C7 $47 $02 $0003W  $C7 $07 $0004W  $8B $44
              $0C $05 $0040W  $89 $47 $0C $8B $44 $0E $89 $47 $0E $83 $7C $0E
              $01 $75 $0B $8B $44 $0A $05 $0100W  $89 $47 $0A $EB $0D $8B $44
              $0A $05 $00B0W  $8B $1E $66 $A9 $89 $47 $0A $8B $1E $66 $A9 $8B
              $47 $0E $B1 $05 $D3 $E0 $89 $47 $16 $B8 $021FW  $50 $53 $9A
           $08F41219RL    $83 $C4 $04 $8B $1E $66 $A9 $C7 $47 $02 $0002W
              $5F $5E $8B $E5 $5D $CB

#Collapser shot-bomb initial action = $021FW
%patch $30F4F $0109W $0109W $0001W $0000W $0000W $0001W $0000W $0000W
              $1A5029A2RL   $069A0191RL   $0CA60FB1RL   $256EW

#Bomb cycle, 2 actions =$0293W
%patch $30FC3 $0118W $0118W $0003W $0000W $0000W $000FW $0000W $0000W
              $08F41765RL   $069A0191RL   $08F4180ARL   $039FW
%patch $310CF $0119W $0119W $0003W $0000W $0000W $000FW $0000W $0000W
              $08F41765RL   $069A0191RL   $08F4180ARL   $0293W

#Colshot start behavior, randomly choose action, dec bomb var, make noise =$1A5029A2RL
%patch $1CEA2 $55 $8B $EC $56 $8B $76 $06 $83 $3E $7594W  $00 $76 $1D
              $9A $1CF30034RL     $3D $0060W  $7D $13 $FF $0E $7594W
              $C7 $44 $1C $0293W  $C7 $44 $16 $0000W  $B8 $001AW  $EB
              $03 $B8 $001FW  $50 $9A $183B09F1RL     $83 $C4 $02 $5E
              $5D $CB

#Bomb collision, Keen's shots, Keen detonate (Incs bomb var) =$069A0191RL
%patch $6B31 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $83 $3D $02 $74 $0E
             $83 $3D $03 $75 $12 $56 $9A $0CA60EC2RL     $83 $C4 $02
             $C7 $44 $1C $03BDW  $FF $06 $7594W  $5F $5E $5D $CB

#Bomb detonate behavior =$069A01BCRL spawns explosion level with ground
%patch $6B5C $55 $8B $EC $83 $EC $04 $56 $57 $8B $76 $06 $B8 $0001W  $50 $9A
             $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $02 $0003W
             $C7 $07 $0004W  $8B $44 $0C $05 $FF00W  $89 $47 $0C $8B $44 $0E
             $89 $47 $0E $8B $44 $0A $05 $00B0W  $8B $1E $66 $A9 $89 $47
             $0A $8B $1E $66 $A9 $8B $47 $0E $B1 $05 $D3 $E0 $89 $47 $16 $B8
             $31DCW  $50 $53 $9A $08F41219RL     $83 $C4 $04 $8B $1E $66 $A9
             $C7 $47 $20 $0002W  $5F $5E $8B $E5 $5D $CB

#Bomb detonate action (use OSHI Keen beh) =$03BDW
%patch $310ED $0119W $0119W $0000W $0000W $0000W $0001W $0000W $0000W
              $069A01BCRL   $00000000L    $08F4180ARL   $0000W

#Shot cycle, 4 actions =$256EW
%patch $3329E $0106W $0106W $0001W $0000W $0000W $0006W $0040W $0000W
              $0CA60EE9RL   $11CF0306RL   $1A5029DCRL   $258CW
%patch $332BC $0107W $0107W $0001W $0000W $0000W $0006W $0040W $0000W
              $0CA60EE9RL   $11CF0306RL   $1A5029DCRL   $25AAW
%patch $332DA $0108W $0108W $0001W $0000W $0000W $0006W $0040W $0000W
              $0CA60EE9RL   $11CF0306RL   $1A5029DCRL   $25C8W
%patch $332F8 $0109W $0109W $0001W $0000W $0000W $0006W $0040W $0000W
              $0CA60EE9RL   $11CF0306RL   $1A5029DCRL   $256EW

#Collapser hit ground tile collision =$10CC02E5RL
%patch $10FA5 $55 $8B $EC $56 $8B $76 $06 $83 $7C $38 $00 $74 $0F $C7 $44 $0E
              $01 $00 $8B $44 $16 $F7 $D8 $89 $44 $16 $EB $13 $83 $7C $3C $00
              $74 $0D $C7 $44 $0E $FF $FF $8B $44 $16 $F7 $D8 $89 $44 $16 $83
              $7C $3A $00 $74 $05 $C7 $44 $18 $00 $00 $83 $7C $36 $00 $74 $19
              $B8 $001BW  $50 $9A $183B09F1RL     $83 $C4 $02 $B8 $1FF4W  $50
              $56 $9A $08F41297RL     $83 $C4 $04 $FF $74 $20 $33 $C0 $50 $FF
              $74 $1E $FF $74 $0C $FF $74 $0A $8B $C6 $05 $46 $00 $50 $9A
          $16081770RL     $83 $C4 $0C $5E $5D $CB

#Collapser telestart behavior =$10CC035ERL
%patch $1101E $55 $8B $EC $83 $EC $04 $56 $57 $8B $76 $06 $B8 $0001W  $50 $9A $069A1E25RL     $83 $C4
              $02 $8B $1E $66 $A9 $C7 $47 $02 $0003W  $C7 $07 $0004W  $8B $44
              $0C $05 $0020W  $89 $47 $0C $8B $44 $0E $89 $47 $0E $83 $7C $0E
              $01 $75 $0B $8B $44 $0A $05 $0000W  $89 $47 $0A $EB $0D $8B $44
              $0A $05 $0000W  $8B $1E $66 $A9 $89 $47 $0A $8B $1E $66 $A9 $8B
              $47 $0E $B1 $05 $D3 $E0 $89 $47 $16 $B8 $3466W  $50 $53 $9A
           $08F41219RL    $83 $C4 $04 $8B $1E $66 $A9 $C7 $47 $20 $0002W
              $5F $5E $8B $E5 $5D $CB

#Start teleport collapser; hold animation, spawn telestart=$2012W
%patch $32D42 $0000W $0000W $0000W $0000W $0000W $0001W $0000W $0000W
              $10CC035ERL   $0EFC1A37RL   $08F4180ARL   $353EW

#Telepause behavior =$353EW
%patch $3426E $0000W $0000W $0000W $0000W $0000W $0012W $0000W $0000W
              $00000000L    $0EFC1A37RL   $08F4180ARL   $2030W

#Teleporting Collapser=$2030W (4th vivagot frame, nearly invisible)
%patch $32D60 $0095W $0095W $0001W $0000W $0000W $0010W $0060W $FF80W
              $00000000L    $00000000L    $08F4180ARL   $355CW

#Reappearing Collapser =$355CW (Invisible!)
%patch $3428C $0000W $0000W $0001W $0000W $0000W $0001W $0000W $0000W
              $10CC035ERL   $00000000L    $08F4180ARL   $357AW

#Backpause Collapser =$357AW (Still invisible!)
%patch $342AA $0000W $0000W $0001W $0000W $0000W $0012W $0000W $0000W
              $10CC03D9RL   $00000000L    $08F4180ARL   $204EW

#Falling Collapser=$204EW
%patch $32D7E $010EW $010EW $0002W $0000W $0000W $0008W $0000W $0000W
              $08F41765RL   $0EFC1A37RL   $10CC02E5RL   $0000W

#Teleport sequence, 6 actions =$3466W
%patch $34196 $010FW $010FW $0001W $0000W $0000W $0006W $0000W $0000W #Makes boom noise!
              $11CF084CRL   $11CF0306RL   $08F4180ARL   $3484W
%patch $341B4 $0110W $0110W $0001W $0000W $0000W $0006W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $34A2W
%patch $341D2 $0111W $0111W $0001W $0000W $0000W $0006W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $34C0W
%patch $341F0 $0112W $0112W $0001W $0000W $0000W $0006W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $34DEW
%patch $3420E $0113W $0113W $0001W $0000W $0000W $0006W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $34FCW
%patch $3422C $0114W $0114W $0001W $0000W $0000W $0006W $0000W $0000W
              $00000000L    $11CF0306RL   $08F4180ARL   $0000W

#Collapser telepause behavior: turn to face Keen =$10CC03D9RL
%patch $11099 $55 $8B $EC $56 $8B $76 $06 $8B $44 $0A $8B $1E $64 $A9 $3B $47
              $0A $73 $08 $C7 $44 $0E $0001W  $5E $5D $CB $C7 $44 $0E $FFFFW
              $5E $5D $CB

#Move filenames for patchspace
%patch $12CF4  $351AW #Text called from
%patch $3424A "EGAGRAPH.CK6" $00
%patch $12EC4  $3527W #Text called from
%patch $34257 "AUDIO.CK6" $00
%patch $12E80  $3531W #Text called from
%patch $34261 "GAMEMAPS.CK6" $00

#Change initial stun action to vertical freezing frame
%patch $10A17 $061FW

#Stunned Collapser (No stars, new collision) =$206CW
%patch $3134F $010CW $010CW $0000W $0000W $0000W $0001W $0000W $0000W #Cancel horz motion
              $069A0168RL   $10CC0079RL   $08F4180ARL   $206CW
%patch $32D9C $010CW $010CW $0002W $0000W $0000W $0000W $0000W $0000W #Actually stunned
              $08F41765RL   $10CC0079RL   $08F4180ARL   $206CW

#Cancel horz speed behavior for stunned Collapser =$069A0168RL
%patch $6B08 $55 $8B $EC $56 $8B $76 $06 $C7 $44 $16 $0000W  $5E $5D $CB

#Stunned Collapser collision (React to Keen, block his shots)
%patch $10D39 $55 $8B $EC $56 $57 $8B $7E $06 $8B $76 $08 $83 $3C $02 $75 $07
              $C7 $45 $1C $2EB2W  $EB $0E $83 $3C $03 $75  $09 $56 $9A $0CA60EC2RL
                      $83 $C4 $02 $5F $5E $5D $CB

#Bomb teleports in sequence =$2EB2W
%patch $33BE2 $0115W $0115W $0000W $0000W $0000W $0008W $0000W $0000W
              $08F41765RL   $00000000L    $08F4180ARL   $2ED0W
%patch $33C00 $0116W $0116W $0000W $0000W $0000W $0008W $0000W $0000W
              $08F41765RL   $00000000L    $08F4180ARL   $2E58W

#Bombing Collapser =$2E58W: wait
%patch $33B88 $010DW $010DW $0000W $0000W $0000W $0030W $0000W $0000W
              $08F41765RL   $00000000L    $08F4180ARL   $2E76W

#Attack Collapser =$2E76W: spawns explosion
%patch $33BA6 $010DW $010DW $0000W $0000W $0000W $0001W $0000W $0000W
              $10CC00A2RL   $00000000L    $08F4180ARL   $2E94W

#Attack behavior (Modified Babobba shoot) =$10CC00A2RL
%patch $10D62 $55 $8B $EC $83 $EC $04 $56 $57 $8B $76 $06 $B8 $0001W  $50 $9A
              $069A1E25RL     $83 $C4 $02 $8B $1E $66 $A9 $C7 $47 $02 $0003W
              $C7 $07 $0004W  $8B $44 $0C $05 $FFC0W  $89 $47 $0C $8B $44 $0E
              $89 $47 $0E $8B $44 $0A $05 $00B0W  $8B $1E $66 $A9 $89 $47
              $0A $8B $1E $66 $A9 $8B $47 $0E $B1 $05 $D3 $E0 $89 $47 $16 $B8
              $31DCW  $50 $53 $9A $08F41219RL     $83 $C4 $04 $8B $1E $66 $A9
              $C7 $47 $20 $0002W  $5F $5E $8B $E5 $5D $CB

#OH SHI- collapser (Change on 3rd explos frame) =$2E94W
%patch $33BC4 $010DW $010DW $0000W $0000W $0000W $0018W $0000W $0000W
              $10CC010CRL   $00000000L    $08F4180ARL   $2EEEW

#OH SHI- behavior: Change Collapser type to item (Red gem)
%patch $10DCC $55 $8B $EC $56 $8B $76 $06 $C7 $04 $0005W  $5E $5D $CB

#Collapser gem loop (Imitates red gem, loops) =$2EEEW
%patch $33C1E $00A4W $00A4W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $2F0CW
%patch $33C3C $00A5W $00A5W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $2EEEW

#Collapser turn action (A disguised fall action) =$05E3W
%patch $31313 $010EW $010EW $0002W $0000W $0000W $0008W $0000W $0000W
              $08F41765RL   $0EFC1A37RL   $10CC02E5RL   $0000W

#Boss tile collision (Can't ever get stuck in air, instead turns) =$1A5028C1RL
%patch $1CDC1 $55 $8B $EC $56 $8B $76 $06 $83 $7C $0E $01 $75 $2B $83 $7C $3C
              $00 $74 $25 $8B $44 $12 $29 $44 $0A $C7 $44 $0E $FF $FF $9A
          $1CF30034RL     $B1 $05 $D3 $F8 $89 $44 $08 $FF $74 $1C $56 $9A
          $08F41297RL     $83 $C4 $04 $EB $5F $83 $7C $0E $FF $75 $2B $83 $7C
              $38 $00 $74 $25 $8B $44 $12 $29 $44 $0A $C7 $44 $0E $01 $00 $9A
              $1CF30034RL     $B1 $05 $D3 $F8 $89 $44 $08 $FF $74 $1C $56 $9A
              $08F41297RL     $83 $C4 $04 $EB $2E $83 $7C $36 $00 $75 $28 $8B
              $44 $12 $D1 $E0 $29 $44 $0A $8B $44 $0E $F7 $D8 $89 $44 $0E $9A
              $1CF30034RL     $C7 $44 $1C $05E3W  $EB $0C $FF $74 $1C $56 $9A
              $08F41297RL     $83 $C4 $04 $83 $7C $3E $00 $74 $24 $FF $4C $3E
              $FF $74 $20 $B8 $0001W  $50 $FF $74 $1E $FF $74 $0C $FF $74 $0A
              $8B $C6 $05 $46 $00 $50 $9A $16081770RL     $83 $C4 $0C $5E $5D
              $CB
                  $FF $74 $20 $33 $C0 $50 $FF $74 $1E $FF $74 $0C $FF $74 $0A
              $8B $C6 $05 $46 $00 $50 $9A $16081770RL     $83 $C4 $0C $5E $5D
              $CB

#Boss uses new tile interaction (Also when shooting, never else)
%patch $32CC4 $1A5028C1RL
%patch $32CE2 $1A5028C1RL
%patch $32D00 $1A5028C1RL
%patch $32D1E $1A5028C1RL

#Collapser's shot tile collision (Pseudo pink shot) =$1A5029DCRL
%patch $1CEDC $55 $8B $EC $56 $8B $76 $06 $83 $7C $36 $00 $75 $12 $83 $7C $38
              $00 $75 $0C $83 $7C $3A $00 $75 $06 $83 $7C $3C $00 $74 $19 $B8
              $001EW  $50 $9A $183B09F1RL     $83 $C4 $02 $B8 $0601W  $50 $56
              $9A $08F41297RL     $83 $C4 $04 $FF $74 $20 $33 $C0 $50 $FF $74
              $1E $FF $74 $0C $FF $74 $0A $8B $C6 $05 $46 $00 $50 $9A $16081770RL
                      $83 $C4 $0C $5E $5D $CB

#Smashed shot action =$0601W
%patch $31331 $011CW $011CW $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $0000W


#################################
#Colldown sprite		#
#################################

#Init pointer
%patch $E9AA $1C11W

#Init code
%patch $10031 $57 $56 $9A $11CF0479RL     $83 $C4 $04 $E9 $E889W

#Spawn code = $11CF0479RL Sets sandwich\bomb variable (0, 15 or 30 bombs)
%patch $12169 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
              $66 $A9 $C7 $07 $001CW  $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A
              $8B $46 $08 $D3 $E0 $89 $47 $0C $C7 $06 $7594W  $001EW  $83 $3E
              $75A8W  $03 $74 $0F $83 $3E $75A8W  $02 $75 $0E $C7 $06 $7594W
              $000FW  $EB $06 $C7 $06 $7594W  $0000W  $B8 $2FA2W  $50 $53 $9A
              $08F41219RL     $83 $C4 $04 $5D $CB

#Colldown action: Uses 4th vivagot, sits = $2FA2W
%patch $33CD2 $0095W $0095W $0002W $0000W $0000W $0000W $0000W $0000W
              $00000000L    $11CF04D2RL   $08F4180ARL   $2FA2W

#Coldown collision, if Collapser Keen touches and is higher than Keen he falls down =$11CF04D2RL
%patch $121C2 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $83 $3D $18 $75 $16
              $8B $44 $0C $8B $1E $64 $A9 $3B $47 $0C $77 $0A $C7 $45 $1C $2FFCW
                  $C7 $45 $06 $0000W  $5F $5E $5D $CB

#Collapser Keen falldown action =$2FFCW, turns to pre-fall colKeen after short time =$2FFCW
%patch $33D2C $0117W $0117W $0003W $0000W $0000W $0008W $0000W $0000W
              $08F41765RL   $0EFC1A37RL   $08F4180ARL   $0201W

#Collapser Keen transform into fall action = $0201W
%patch $30F31 $0117W $0117W $0000W $0000W $0000W $0001W $0000W $0000W
              $11CF04FCRL   $0EFC1A37RL   $08F4180ARL   $204EW

#Restore clipping behavior for prefall action = $11CF04FCRL
%patch $121EC $55 $8B $EC $56 $8B $76 $06 $C7 $44 $06 $0001W  $5E $5D $CB



#################
#Bobba		#
#################

#Bobba never shoots
%patch $11ED3 $EB $78

#Bobba collision code- Kill Keen, block shots
%patch $11FF6 $55 $8B $EC $56 $57 $8B $7E $06 $8B $76 $08 $83 $3C $02 $75 $07
              $9A $0AA213CARL     $EB $0E $83 $3C $03 $75 $09 $56 $9A $0CA60EC2RL
                  $83 $C4 $02 $5F $5E $5D $CB

#Cache (2 frames!)
%patch $3243C $00EBW #Bobba cache start
%patch $3248C $00ECW #Bobba cache end

#Change action anims to fit new cache
%patch $33AB6 $00EBW $00ECW
%patch $33AD4 $00ECW $00EBW
%patch $33AF2 $00EBW $00ECW

#Bobba jumps vertically only
%patch $11FDE $18

#Bobba jump speeds
%patch $11FE2 $FFC0W #Height


#################
#Molly: Mart	#
#################

#Fix Molly's spawn height:
%patch $1009B $FEF0W

#Cache: expanded to include all Keen's friends and portraits
%patch $3245A $019FW #Molly cache start
%patch $324AA $01B3W #Molly cache end

#Mart has 1 animation, different collision
%patch $32A90 $01B3W $01B3W
%patch $32AAC $1D60W
%patch $32AA4 $0EFC107ERL

#Mart collision, if Keen win game =$0EFC107ERL
%patch $1003E $55 $8B $EC $56 $57 $8B $7E $06 $8B $76 $08 $83 $3C $02 $75 $06
              $C7 $06 $75ACW  $000CW  $5F $5E $5D $CB

#Friends collision, if Keen call window, vanish =$0EFC1053RL
#%patch $10013 $55 $8B $EC $56 $57 $8B $7E $06 $8B $76 $08 $83 $3C $02 $75 $0A
#              $9A $069A0226RL     $C7 $45 $1C $0000W  $5F $5E $5D $CB
# K1n9_Duk3 fix: the old patch set the state to NULL which might cause crashes!
%patch $10013
	$55		#	push	bp
	$8B $EC		#	mov	bp, sp
	$8B $5E $08	#	mov	bx, [bp+8]
	$83 $3F $02	#	cmp	[bx], 2
	$75 $0E		#	jnz	done
	$FF $76 $06	#	push	[bp+6]
	$9A $069A1E9Frl	#	call	RemoveObj
	$58		#	pop	ax
	$9A $069A0226rl	#	call	FriendMessage
	$5D		#done:	pop	bp
	$CB		#	retf

#Rope spawns noncontact Janitor
%patch $EA16 $01E5W

#Rope has clipping
%patch $FFA6 $0001W

#Rope initiation code
%patch $E605 $57 $56 $9A $0EFC0FD1RL     $EB $07

#Two rope actions, pseudoblooglet, uses 2nd Molly action
%patch $32A54 $01B1W $01AFW $0000W $0000W $0001W $000AW $0040W $0000W
              $0EFC18D5RL   $0EFC1053RL   $08F4180ARL   $1D7EW
%patch $32AAE $01B2W $01B0W $0000W $0000W $0001W $000AW $0040W $0000W
              $0EFC18D5RL   $0EFC1053RL   $08F4180ARL   $1D24W

#Lindsey init pointer (Replaces Rocket 1)
%patch $EA22 $01DCW

#Lindsey initiation code (Call Sat drop spawn)
%patch $E5FC $57 $56 $9A $0EFC0CF3RL     $EB $10

#Lindsey spawn (Copy of item spawn, overwrites Sat Drop spawn)
%patch $FCB3 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
             $66 $A9 $C7 $47 $06 $0001W  $C7 $47 $20 $0002W  $C7 $07 $001CW
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89
             $47 $0C $B8 $1D9CW  $EB $35

#Two Lindsey actions, pseudoblooglet, uses 3/4 Molly actions
%patch $32ACC $01ADW $01ABW $0000W $0000W $0001W $000AW $0038W $0000W
              $0EFC18D5RL   $0EFC1053RL   $08F4180ARL   $1DBAW
%patch $32AEA $01AEW $01ACW $0000W $0000W $0001W $000AW $0038W $0000W
              $0EFC18D5RL   $0EFC1053RL   $08F4180ARL   $1D9CW

#Norp init pointer (Replaces Rocket 2)
%patch $EA24 $01D3W

#Norp initiation code (Call Sat drop spawn-2)
%patch $E5F3 $57 $56 $9A $0EFC0D2ARL     $EB $19

#Norp spawn (Copy of item spawn, overwrites remaining Sat Drop spawn)
%patch $FCEA $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
             $66 $A9 $C7 $47 $06 $0001W  $C7 $47 $20 $0002W  $C7 $07 $001CW
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89
             $47 $0C $B8 $2DE0W  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D
             $CB

#Two Norp actions, pseudoblooglet, uses 2 Bobba actions
%patch $33B10 $01A9W $01A7W $0000W $0000W $0001W $000AW $0040W $0000W
              $0EFC18D5RL   $0EFC1053RL   $08F4180ARL   $2DFEW
%patch $33B2E $01AAW $01A8W $0000W $0000W $0001W $000AW $0040W $0000W
              $0EFC18D5RL   $0EFC1053RL   $08F4180ARL   $2DE0W

#Barker init pointer (Replaces last BLANK)
%patch $EA04 $01CAW

#Barker initiation code (Call Sat spawn-2)
%patch $E5EA $57 $56 $9A $0EFC0DB4RL     $EB $22

#Barker spawn (Copy of item spawn, overwrites remaining Sat spawn)
%patch $FD74 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
             $66 $A9 $C7 $47 $06 $0001W  $C7 $47 $20 $0002W  $C7 $07 $001CW
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89
             $47 $0C $B8 $2E1CW  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D
             $CB

#Two Barker actions, pseudoblooglet, uses 2 more Bobba actions
%patch $33B4C $01A5W $01A3W $0000W $0000W $0001W $000AW $0060W $0000W
              $0EFC18D5RL   $0EFC1053RL   $08F4180ARL   $2E3AW
%patch $33B6A $01A6W $01A4W $0000W $0000W $0001W $000AW $0060W $0000W
              $0EFC18D5RL   $0EFC1053RL   $08F4180ARL   $2E1CW

#Friends window, display 4 different sprites, mesages
%patch $6BC6 $55 $8B $EC $9A $183B0AFDRL     $B8 $002DW  $50 $9A $183B09F1RL
             $83 $C4 $02 $B8 $0008W  $50 $B8 $001CW  $50
             $9A $18F81070RL     $83 $C4 $04 $83 $3E $75A4W  $07 $74 $41 $83
             $3E $75A4W  $03 $74 $29 $83 $3E $75A4W  $0B $74 $11 $B8 $3B00W
             $50 $9A $18F80EBDRL     $83 $C4 $02 $B8 $019FW  $EB $31 $B8 $3A80W
                 $50 $9A $18F80EBDRL     $83 $C4 $02 $B8 $01A0W  $EB $20 $B8
             $39D1W  $50 $9A $18F80EBDRL     $83 $C4 $02 $B8 $01A1W  $EB $0F
             $B8 $1652W  $50 $9A $18F80EBDRL     $83 $C4 $02 $B8 $01A2W  $50
             $B8 $0048W  $50 $B8 $0030W  $50 $9A $1CF70E7FRL     $83 $C4 $06
             $9A $1CF70AA5RL     $B8 $001EW  $50 $9A $1DFB0ADDRL     $83 $C4    
             $02 $9A $14130EE0RL     $9A $16080E88RL     $5D $CB

#Norp's text (Level 3) =$39D1W
%patch $34701 $0A "___Collapser Keen is a" $0A
              "___coward! He won't attack" $0A
              "___until YOU come to him! But" $0A
              "___he IS very tricky!" $00

#Lindsey's text (Level 7) =$1652W
%patch $32382 $0A "___The left switch is a fake" $0A
              "___but the right one turns" $0A
              "___all the turrets off!" $00

#Janitor's text (Level 11) =$3A80W
%patch $347B0 $0A "___Barker and I almost had" $0A
              "___'im! But he played possum" $0A
              "___and bombed us! Watch out" $0A
              "___ for them, they pack a" $0A
              "___lethal punch!" $00

#Barker's text (Any other level) =$3B00W
%patch $34830 $0A "___I just couldn't hit him!" $0A
              "___He has some sort of" $0A
              "___personal teleporter!" $0A
              "___Every time I shot at him" $0A
              "___he vanished!" $00


#################
#Fleex		#
#################

#Fleex strength
%patch $11D6F $0006W

#Fleex just chases Keen
%patch $11D82 $EB

#Fleex stunned is -4 images
%patch $33A98 $00F1W $00F1W

#Fleex cache end is -4 images
%patch $324A0 $00F1W

#Chasing loop is 2 actions long
%patch $33A1E $2CB4W
%patch $339E4 $00F0W $00EFW #Fleex chase 1
%patch $33A02 $00EFW $00F0W #Fleex chase 2

#When spawned chasing
%patch $11D5C $2CB4W

#Spawn height
%patch $11D2F $FE20W #8 pixels down


#################
#Orbatrix	#
#################

#Orbatrix float behavior: no curl\uncurl -keep away from Keen
#%patch $1154E $55 $8B $EC $56 $57 $8B $76 $06 $8B $44 $28 $8B $1E
#              $64 $A9 $3B $47 $28 $75 $1C $8B $1E $64 $A9 $8B $47 $0A $2B $44
#              $0A $8B $F8 $0B $FF $7D $05 $B8 $0001W  $EB $03 $B8 $FFFFW  $89
#              $44 $0E $5F $5E $5D $CB
# K1n9_Duk3 mod: is overwritten below

#Orbatrix float behavior
%patch $1154E $55 $8B $EC $56 $57 $8B $76 $06 $9A $1CF30034RL     $3D $0040W
              $7D $15 $9A $1CF30034RL     $3D $0080W  $7D $05 $B8 $0001W
              $EB $03 $B8 $FFFFW  $89 $44 $0E $5F $5E $5D $CB

#Speed up the Orbatrix
%patch $33522 $0020W $0000W
%patch $33540 $0020W $0000W

#1 float loop
%patch $33532 $27E6W

#When shot: bounce
%patch $115BB $2930W

#Shrink Cache
%patch $3249C $014DW

#Animations
%patch $33516 $0149W $0149W #Floating
%patch $33660 $014AW $014DW #Bouncing
%patch $3367E $014BW $014CW 
%patch $3369C $014CW $014BW  
%patch $336BA $014DW $014AW

#Never stop bouncing
%patch $11683 $EB

#No impossible bullet
%patch $BE7A $EB

#Disable Grabbiter fed window
%patch $F5FF $EB $6B

#Keen's head appears on the left side of both windows
%patch $F58A $00D0W
%patch $F599 $D0
%patch $F630 $00D0W
%patch $F63F $D0

#Grabbiter Text
%patch $3301A "       "
%patch $33022 " It seems this  "
%patch $33033 "security door needs"
%patch $33047 "    a chip.      "
%patch $33059 "                       "

#Walking Flect doesn't chase Keen
%patch $33922 $00000000L
%patch $33940 $00000000L
%patch $3395E $00000000L
%patch $3397C $00000000L

#Flect doesn't push Keen
%patch $11C06 $EB

#Cannot warp to High scores level
%patch $75B9 $12

#Text
%patch $31250 " Warp to which level(1-18):" $00

#BwB levels: none
#%patch $5ECD $11 $90 $90
# K1n9_Duk3 fix: the patch above caused teleporter issues, this is is better:
%patch $5ECD $12 # max level is 18


#################
#Sandwich	#
#################

#Sandwich Text
%patch $325B6 "A chip! I can now" $0A
              "board the space" $0A
              "station!" $00

#Keen's portrait is on the left in the sandwhich window
%patch $EE61  $00D0W #Rightwards location of Keen's head bitmap
%patch $EE70  $D0    #Leftwards location of text

#Keen's portrait is on the left in the cliff window
%patch $FBE3  $00D0W #Rightwards location of Keen's head bitmap
%patch $FBF2  $D0    #Leftwards location of text	

#F10-I cheat doesn't give: 
%patch $7331 $90 $90 $90 #Grappling hook
%patch $7334 $90 $90 $90 #Rocket card

#New sandwich collision
%patch $32A4A $10CC0508RL

#Collision code: set level state to 9 = $10CC0508RL
%patch $111C8 $55 $8B $EC $56 $57 $8B $7E $06 $8B $76 $08 $83 $3C $02 $75 $06
              $C7 $06 $75ACW  $0009W  $5F $5E $5D $CB


#################
#Pink shots	#
#################

#When spawned shooters set LasOn=0 (Target $114CA)
%patch $113D3 $E9 $00F4W
%patch $114CA $C7 $06 $7598W  $0000W  $5F $5E $5D $CB


#Gun use new shot behavior
%patch $33454 $10CC011ARL

#Spawn pink shot behavior code: New, allows several new types =$10CC011ARL (Now checks if LasOn var not 1)
%patch $10DDA $55 $8B $EC $56 $8B $76 $06 $83 $3E $7598W  $01 $74 $42 $B8 $0001W  $50 $9A $069A1E25RL   
              $83 $C4 $02 $8B $1E $66 $A9 $C7 $07 $0004W  $C7 $47 $02 $0002W
              $8B $44 $0A $89 $47 $0A $8B $44 $0C $89 $47 $0C $8B $5C $3E
              $D1 $E3 $2E $FF $A7 $015CW

#Directions shots are spawned:
%patch $10E1C $0717W #Up (At $113D7)
%patch $10E1E $0733W #Right (At $113F3)
%patch $10E20 $0725W #Down (At $113E5)
%patch $10E22 $073EW #Left (At $113FE)

#Use old behavior space to allow three kinds of shot (Up, Down, horizontal)
%patch $113D7 $8B $1E $66 $A9 $C7 $47 $10 $FFFFW  $B8 $33DAW  $EB $25 $8B $1E
              $66 $A9 $C7 $47 $10 $0001W  $B8 $3326W  $EB $17 $8B $1E $66 $A9
              $C7 $47 $0E $0001W  $EB $09 $8B $1E $66 $A9 $C7 $47 $0E $FFFFW
              $B8 $2732W  $50 $FF $36 $66 $A9 $9A $08F41219RL     $83 $C4 $04
              $B8 $001DW  $50 $9A $183B09F1RL     $83 $C4 $02 $5E $5D $CB

#Down Pink shots: can be destroyed by Keen's shots =$10CC0766RL
%patch $11426 $55 $8B $EC $56 $8B $76 $08 $83 $3C $03 $75 $2B $B8 $3380W  $50 $EB $22

#Up pink shots  =$10CC0778RL
%patch $11438 $55 $8B $EC $56 $8B $76 $08 $83 $3C $03 $75 $19 $B8 $3434W  $50 $EB $10

#Horz pink shots =$10CC078ARL
%patch $1144A $55 $8B $EC $56 $8B $76 $08 $83 $3C $03 $75 $07 $B8 $278CW  $50
              $E9 $0161W  $83 $3C $02 $75 $05 $9A $0AA213CARL     $5E $5D $CB

#Horz Pink shot tile interaction code =$10CC07AARL
%patch $1146A $55 $8B $EC $56 $8B $76 $06 $83 $7C $36 $00 $75 $12 $83 $7C $38
              $00 $75 $0C $83 $7C $3A $00 $75 $06 $83 $7C $3C $00 $74 $19 $B8
              $278CW  $50 $56 $9A $08F41297RL     $83 $C4 $04 $B8 $001EW  $50
              $9A $183B09F1RL     $83 $C4 $02 $E9 $03B5W

#Down Pink shot tile interaction code =$10CC07E5RL
%patch $114A5 $55 $8B $EC $56 $8B $76 $06 $83 $7C $36 $00 $75 $12 $83 $7C $38
              $00 $75 $0C $83 $7C $3A $00 $75 $06 $83 $7C $3C $00 $74 $DE $B8
              $3380W  $50 $EB $C3

#Cache moved for 24 animations!
%patch $32456 $0187W #Shooter cache start
%patch $324A6 $019EW #Cache end

#Horizontal shot animations, shot cycle is 3, collide is 3 =$2732W
%patch $33462 $0191W $018BW $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC078ARL   $10CC07AARL   $2750W
%patch $33480 $0192W $018CW $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC078ARL   $10CC07AARL   $276EW
%patch $3349E $0193W $018DW $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC078ARL   $10CC07AARL   $2732W

#Horizontal smash, 3 cycle =$278CW
%patch $334BC $0194W $018EW $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $27AAW
%patch $334DA $0195W $018FW $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $27C8W
%patch $334F8 $0196W $0190W $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $0000W

#Downwards shot animations, shot cycle is 3, collide is 3 =$3326W
%patch $34056 $019DW $019DW $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC0766RL   $10CC07E5RL   $3344W
%patch $34074 $019EW $019EW $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC0766RL   $10CC07E5RL   $3362W
%patch $34092 $0187W $0187W $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC0766RL   $10CC07E5RL   $3326W

#Downwards smash, 3 cycle =$3380W
%patch $340B0 $0188W $0188W $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $339EW
%patch $340CE $0189W $0189W $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $33BCW
%patch $340EC $018AW $018AW $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $0000W

#Upwards shot animations, shot cycle is 3, collide is 3 =$33DAW
%patch $3410A $0197W $0197W $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC0778RL   $069A0AFCRL   $33F8W
%patch $34128 $0198W $0198W $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC0778RL   $069A0AFCRL   $3416W
%patch $34146 $0199W $0199W $0003W $0000W $0000W $0006W $01A0W $01A0W
              $00000000L    $10CC0778RL   $069A0AFCRL   $33DAW

#Upwards smash, 3 cycle =$3434W
%patch $34164 $019AW $019AW $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $2C78W
%patch $339A8 $019BW $019BW $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $2C96W
%patch $339C6 $019CW $019CW $0000W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $0000W

#Disable Add VBLs (Free $749C-$7535)  and Up tile collision = $069A0AFCRL
%patch $7499  $E9 $009AW  $55 $8B $EC $56 $8B $76 $06 $83 $7C $36 $00 $75 $12 $83 $7C $38
              $00 $75 $0C $83 $7C $3A $00 $75 $06 $83 $7C $3C $00 $74 $19 $B8
              $001EW  $50 $9A $183B09F1RL     $83 $C4 $02 $B8 $3434W  $50 $56
              $9A $08F41297RL     $83 $C4 $04 $FF $74 $20 $33 $C0 $50 $FF $74
              $1E $FF $74 $0C $FF $74 $0A $8B $C6 $05 $46 $00 $50 $9A $16081770RL
                      $83 $C4 $0C $5E $5D $CB


#################
#Satelite	#
#################

#Keen cannot ride the Satellite, it doesn't move
%patch $329EC $00000000L
%patch $32A0A $00000000L
%patch $32A28 $00000000L

#Sitting Sat doesn't animate
%patch $329BE $00D5W $00D5W $0003W $0000W $0000W $000AW $0000W $0000W
              $0EFC0E08RL   $00000000L    $08F4180ARL   $1C8EW

#Zapping Satelite sequence: 6 frames
%patch $329DC $00D6W $00D6W $0003W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $1CCAW
%patch $329FA $00D7W $00D7W $0003W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $1CE8W
%patch $32A18 $00D8W $00D8W $0003W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $1B08W
%patch $32838 $00D2W $00D2W $0003W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $1B26W
%patch $32856 $00D3W $00D3W $0003W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $1B44W
%patch $32874 $00D4W $00D4W $0003W $0000W $0000W $000AW $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $1C8EW

#Tweak Satelite behavior to randomly zap
%patch $FDC8 $55 $8B $EC $56 $8B $76 $06 $9A $1CF30034RL     $3D $0004W  $7D
             $05 $C7 $44 $1C $1CACW  $5E $5D $CB

#Satellite spawning code: item-type now for space
%patch $FD33 $55 $8B $EC $33 $C0 $50 $9A $069A1E25RL     $83 $C4 $02 $8B $1E
             $66 $A9 $C7 $47 $06 $0000W  $C7 $47 $02 $0002W  $C7 $07 $0021W	# K1n9_Duk3 fix: always active instead of priority 2
             $8B $46 $06 $B1 $08 $D3 $E0 $89 $47 $0A $8B $46 $08 $D3 $E0 $89
             $47 $0C $B8 $1C8EW  $50 $53 $9A $08F41219RL     $83 $C4 $04 $5D
             $CB


#################
#Rope window	#
#################

#Complete Rope got window code
%patch $EEAA $55 $8B $EC $9A $183B0AFDRL    $B8 $002DW  $50 $9A $183B09F1RL
                 $83 $C4 $02 $9A $125A14BERL     $B8 $0013W  $50 $9A $125A1108RL
                     $83 $C4 $02 $B8 $0008W  $50 $B8 $001AW  $50 $9A $18F81070RL
                     $83 $C4 $04 $B8 $0013W  $50 $FF $36 $6C $A9 $A1 $C1 $A6
             $03 $06 $BF $A6 $2D $0030W  $50 $9A $1CF70C83RL     $83 $C4 $06
             $83 $2E $BF $A6 $30 $83 $06 $C3 $A6 $0C $B8 $3B78W  $50 $9A 
          $18F80EBDRL    $83 $C4 $02 $9A $1CF70AA5RL     $B8 $001EW  $50 $9A
             $1DFB0ADDRL     $83 $C4 $02 $9A $141308A9RL     $9A $14130EE0RL
             $9A $125A14DERL     $C7 $06 $7580W  $0001W  $5D $CB



#Colldown behavior (Play boss message if not palyed before) =$1A50278CRL
%patch $1CC8C $55 $8B $EC $83 $3E $7580W  $00 $75 $0F $9A $0E420A8ARL
          $9A $1A5027A7RL     $9A $16080E88RL $5D $CB

#New initial boss action (Play conv) =$1B9EW,$3C33W (For screen clear)
%patch $328CE $00FEW $0102W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $00000000L    $08F4180ARL   $3C33W
%patch $34963 $00FEW $0102W $0000W $0000W $0000W $0008W $0000W $0000W
              $1A50278CRL   $00000000L    $08F4180ARL   $1F7CW

#First window text = $3B78W
%patch $348A8 "Is this some sort of" $0A
              "joke? YOU are the pest" $0A
              "who's been causing all" $0A
              "this trouble? Who ARE" $0A
              "you, Captain Copycat?" $00

#Second window code =$1A5027A7RL
%patch $1CCA7 $55 $8B $EC $9A $183B0AFDRL
              $9A $125A14BERL     $B8 $000AW  $50 $9A $125A1108RL
                      $83 $C4 $02 $B8 $0008W  $50 $B8 $001AW  $50 $9A $18F81070RL
                      $83 $C4 $04 $B8 $000AW  $50 $FF $36 $6C $A9 $A1 $C1 $A6
              $03 $06 $BF $A6 $2D $00D0W  $50 $9A $1CF70C83RL     $83 $C4 $06
              $83 $2E $BF $A6 $D0 $83 $06 $C3 $A6 $0C $B8 $3BE7W  $50 $9A 
           $18F80EBDRL    $83 $C4 $02 $9A $1CF70AA5RL     $B8 $001EW  $50 $9A
              $1DFB0ADDRL     $83 $C4 $02 $9A $141308A9RL     $9A $14130EE0RL
              $9A $125A14DERL     $5D $CB

#First window text = $3BE7W
%patch $34917 "I am Commander Keen!" $0A $0A
              "And I'm your worst" $0A
              "nightmare you" $0A
              "dastardly duplicate!" $00


#################
#Bipship	#
#################

#Cache
%patch $32448 $00E0W #Bipship cache start
%patch $32498 $00EAW #Bipship cache end

#Bipship doesn't bounce at all, six action loop
%patch $3378C $00E5W $00E0W $0001W $0000W $0000W $0014W $0010W $0010W
              $00000000L    $10CC0BF7RL   $11CF0735RL   $2A7AW
%patch $337AA $00E4W $00E1W $0001W $0000W $0000W $0014W $0010W $0010W
              $00000000L    $10CC0BF7RL   $11CF0735RL   $2A98W
%patch $337C8 $00E3W $00E2W $0001W $0000W $0000W $0014W $0010W $0010W
              $00000000L    $10CC0BF7RL   $11CF0735RL   $2AB6W
%patch $337E6 $00E2W $00E3W $0001W $0000W $0000W $0014W $0010W $0010W
              $00000000L    $10CC0BF7RL   $11CF0735RL   $2AD4W
%patch $33804 $00E1W $00E4W $0001W $0000W $0000W $0014W $0010W $0010W
              $00000000L    $10CC0BF7RL   $11CF0735RL   $2AF2W
%patch $33822 $00E0W $00E5W $0001W $0000W $0000W $0014W $0010W $0010W
              $00000000L    $10CC0BF7RL   $11CF0735RL   $2A5CW

#Bipship can hurt Keen = $10CC0BF7RL
%patch $118B7 $55 $8B $EC $56 $8B $76 $08 $83 $3C $02 $75 $08 $9A $0AA213CARL
                  $5E $5D $CB $83 $3C $03 $75 $18 $56 $9A $0CA60EC2RL
                      $83 $C4 $02 $B8 $2B10W  $50 $FF $76 $06 $9A $08F41297RL
                  $83 $C4 $04 $5E $5D $CB

#Crashing ship: explosion - 5 frames
%patch $33840 $00E6W $00E6W $0000W $0000W $0000W $0008W $0000W $0000W
              $11CF084CRL   $08F417EERL   $08F4180ARL   $2B2EW
%patch $3385E $00E7W $00E7W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $08F417EERL   $08F4180ARL   $2B4CW
%patch $3387C $00E8W $00E8W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $08F417EERL   $08F4180ARL   $2B6AW
%patch $3389A $00E9W $00E9W $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $08F417EERL   $08F4180ARL   $2B88W
%patch $338B8 $00EAW $00EAW $0000W $0000W $0000W $0008W $0000W $0000W
              $00000000L    $08F417EERL   $08F4180ARL   $0000W



#################
#Rocket pass	#
#################

#Keen can always use the Bloogstar Rocket
%patch $F6EE $E9 $00B0W

#Change animation to a (will be hidden!) splash:
%patch $32A72 $0095W $0095W

#Change initiation to spare cache (Totally redo inits)
%patch $EA1A $01EEW

#Rocket pass initiation code skips cache
%patch $E60E $57 $56 $9A $0EFC1012RL     $83 $C4 $04 $EB $6E

#Rocket Pass uses new collision
%patch $32A86 $10CC0BD4RL

#New collision: give card, don't exit level goto splash to avoid crash
%patch $11894 $55 $8B $EC $56 $57 $8B $76 $06 $8B $7E $08 $83 $3D $02 $75 $0F
              $C7 $44 $1C $1A3CW  $9A $0E420B18RL     $9A $16080E88RL $5F $5E
              $5D $CB

#Don't show Rope or Rocket card in status window
%patch $7C9C $EB $60
%patch $7C58 $000AW #Width
%patch $7C60 $0087W #Horizontal position
%patch $7C7B $0088W #Horizontal position if got
%patch $7C91 $0088W #Horizontal position if not got

#No Keen portrait - Bloogstar Rocket pass
%patch $EF6D $EB $19

#Bloogstar Rocket Text
%patch $EF93  $18B3W #Text loc
%patch $EF5E  $000DW #Window height
%patch $325E3 "Dear Whoever-you-are:" $0A $0A
              "I have my archnemesis on" $0A
              "the space station's lower levels," $0A
              "beneath my rocket. Do try and" $0A
              "rescue him, I need some" $0A
              "amusement." $0A $0A
              "CK" $00
              
#Center Rocket Pass text
%patch $EF8C $00

#Cliff sprite always brings up window, never scaling sequence
%patch $FB9C $EB

#Don't show ending sequence 'page ready' animation
%patch $E374 $90 $90 $90 $90 $90
%patch $E3A7 $90 $90 $90 $90 $90


#################
#Music		#
#################

#SONGS
# 00 Warning	01 Sea Shanty	02 Boss		03 Praise
# 04 Tick tick	05 Map		06 Ominus	07 Get to it
# 08 Do be do	09 Victory!	10 Jig-a-jig	11 Lets falling rain
# 12 Circle dan 13 Blow blow	14 Home		15 Version 2

#This is the music played in each level:
#             VALUE   LEVEL                           MUSIC PLAYED              LEVEL No
%patch $3103E $0005W  #Map                            (Aliens Ate My Babysitter)  0
              $0009W  #Central Workshop		      (Faster)                    1
              $0000W  #Computer Room                  (Brer Tar)                  2
              $000BW  #Zenuxian Ringdom               (Mamba Snake)               3
              $0000W  #Toxic Goods Store              (Mamba Snake)               4
              $0000W  #Laboratory                     (Mamba Snake)               5
              $0007W  #Beam Building                  (Metal)                     6
              $000AW  #Palace                         (To the Future)             7
              $0001W  #Pyramid                        (Metal)                     8
              $0000W  #Forbidden Zone                 (Brer Tar)                  9
              $000FW  #Swamp                          (Faster)                    10
              $0007W  #Toxic Dump                     (To the Future)             11
              $0006W  #Bean With Bacon Megarocket     (Brer Tar)                  12
              $000EW  #Crystalite                     (Space Funk)                13
              $000BW  #Stellar Surfing                (Space Funk)                14
              $000CW  #Turret Town                    (Ominous)                   15
              $000DW  #Collapser Club                 (To the Future)             16
              $0002W  #Beat With Boxing Megarocket    (A World of Wonderment)     17
              $0003W  #High Scores                    (A World of Wonderment)     18

%patch $563F $000CW #Star wars text music 
%patch $E33C $0006W #Ending sequence

#Index of first music chunk within audio chunks:
%patch $8AC9 $00ADW

#reduce start address by 2x that of "First Audio Entry"
%patch $8A59 $CA45W #Clear_music()
%patch $8A67 $CA45W #Clear_music()
%patch $8B5D $CA45W #StartMusic()
%patch $8A75 $10    #Total number of songs


#################
#Level names	#
#################

#Level texts
%patch $1F0B0 "  Keen aims planet  " $0A
              "Zenux" $00
%patch $1F0CB "Keen repairs the" $0A
              "Central Workshop" $00
%patch $1F0ED "Keen debugs the" $0A
              "Computer Room" $00
%patch $1F10B "Keen circles the" $0A
              "Zenuxian Ringdom" $00
%patch $1F12D "Keen is cautious in" $0A
              "the Dangerous Goods" $0A
              "Store" $00
%patch $1F15B "Keen beams by the" $0A
              "Laser Lab" $00
%patch $1F177 "Keen reflects on" $0A
              "entering the Beam" $0A
              "Building Block" $00
%patch $1F1A9 "Keen shines in the" $0A
              "Prismatic Palace" $00
%patch $1F1CD "Keen stumbles upon" $0A
              "the Pyramid of Zenux" $00
%patch $1F1F5 "Keen busts up the" $0A
              "Forbidden Zone" $00
%patch $1F216 " Keen fights " $0A
              "Collapser Keen at" $0A
              "the Beat-With-Boxing" $0A
              "Megarocket!" $00
%patch $1F257 "Keen dukes it out in" $0A
              "the Toxic Dump" $00
%patch $1F27B "Keen starts out from" $0A
              "his Bean-With-Bacon" $0A
              "Megarocket" $00
%patch $1F2AF "Keen sparkles" $0A
              "through the" $0A
              "Crystalite" $00
%patch $1F2D4 "Keen speedily surfs" $0A
              "through the" $0A
              "Shattered Space" $0A
              "Station" $00
%patch $1F30C "Keen shoots through" $0A
              "Turret Town" $00
%patch $1F32C "Keen discovers the" $0A
              "Collapser Clubhouse" $00
%patch $1F353 " Keen crosses the " $0A
              "Pure Lake" $00
%patch $1F370 "There's no way Keen" $0A
              "should be in the" $0A
              "High Scores" $00
%patch $1F3A1 "   Zenux    " $00
%patch $1F3AE "The Central Workshop" $00
%patch $1F3C3 "Beam Building Block" $00
%patch $1F3D7 "Beat-With-Boxing" $0A
              "Megarocket" $00
%patch $1F3F3 "Keen surfs in the" $0A
              "Space Abyss" $00

#Level entrance pointers
%patch $32516 $1F0B0000RL #Level 0
              $1F0C000BRL #Level 1
              $1F0E000DRL #Level 2
              $1F10000BRL #Level 3
              $1F12000DRL #Level 4
              $1F15000BRL #Level 5
              $1F170007RL #Level 6
              $1F1A0009RL #Level 7
              $1F1C000DRL #Level 8
              $1F1F0005RL #Level 9
              $1F350003RL #Level 10
              $1F250007RL #Level 11
              $1F27000BRL #Level 12
              $1F2A000FRL #Level 13
              $1F2D0004RL #Level 14
              $1F30000CRL #Level 15
              $1F32000CRL #Level 16
              $1F210006RL #Level 17
              $1F3F0003RL #Level 18
	      
#Level name pointers
%patch $324B2 $1F3A0001RL #Level 0
              $1F3A000ERL #Level 1
              $1F0F000DRL #Level 2
              $1F11000CRL #Level 3
              $1F140005RL #Level 4
              $1F16000DRL #Level 5
              $1F3C0003RL #Level 6
              $1F1B000CRL #Level 7
              $1F1E0004RL #Level 8
              $1F200007RL #Level 9
              $1F360006RL #Level 10
              $1F270000RL #Level 11
              $1F290004RL #Level 12
              $1F2C0009RL #Level 13
              $1F2F0004RL #Level 14
              $1F320000RL #Level 15
              $1F33000FRL #Level 16
              $1F3D0007RL #Level 17
              $1F400005RL #Level 18
              
#1 less image in credits
%patch $4EFB $03
%patch $4F2E $03
%patch $30E74 $001DW
              $001EW
              $0020W

#No Paddle War menu bitmap -Keen 6
%patch $1C351 $EB $12

#No MAIN MENU bitmap shows:
%patch $1F6B8 $0000W #Debug
%patch $1F72E $0000W #Sound effects
%patch $1F77A $0000W #Music
%patch $1F7DC $0000W #New game
%patch $1F872 $0000W #Load
%patch $1F888 $0000W #Save
%patch $1F95E $0000W #Options
%patch $1FA16 $0000W #Movement setup
%patch $1FA7C $0000W #Button setup
%patch $1FACA $0000W #Keyboard
%patch $1FAE0 $0000W #Joystick 1
%patch $1FAF6 $0000W #Joystick 2
%patch $1FB0C $0000W #Gravis Gamepad
%patch $1FBB4 $0000W #Configure
%patch $1FC86 $0000W #Main

%patch $31307 "Get a life!" $00		# K1n9_Duk3 fix: prevent text from overwriting state definition at $31313

#No Null pointer text
#%patch $30D5F $00 $B0 $B0 $B0 $B0 $B1 $B1 $C8 $CD $CD $CD $CD $CD $CD
#              $CD $CD $CD $CD $CD $CD $CD $CD $CD
# K1n9_Duk3 mod: Null pointer check works correctly again, so don't mess with the text!


#################
#Special Keen	#
#################

#Pointer to special Keen
%patch $E97E $01B4W #At $E5D4

#Special Keen initiation (If no demo mode then spawn, else nothing)
%patch $E5D4 $83 $3E $756EW  $00 $74 $03 $E9 $FEAAW  $E9 $02E6W


################################################################################
# Version Info
################################################################################

%patch $20BD1	# Keen 6 startup screen
	"U" $1B
	"n" $1B
	"o" $1B
	"f" $1B
	"f" $1B
	"i" $1B
	"c" $1B
	"i" $1B
	"a" $1B
	"l" $1B
	" " $1B
	"B" $1B
	"u" $1B
	"g" $1B
	"f" $1B
	"i" $1B
	"x" $1B
	" " $1B
	"R" $1B
	"e" $1B
	"l" $1B
	"e" $1B
	"a" $1B
	"s" $1B
	"e" $1B
	" " $1B
	"(" $1B
	"2" $1B
	"0" $1B
	"2" $1B
	"0" $1B
	"-" $1B
	"1" $1B
	"2" $1B
	"-" $1B
	"3" $1B
	"0" $1B
	")" $1B


#######################
# ADDITIONAL BUGFIXES #
#######################

%patch $FB95 $00BAw	# avoid bad jump (code at old target is replaced by new patches)

%patch $6116 $01	# don't load more than 1 pic for the loading screens
%patch $61D3 $EB	# don't ever draw chunk 42 (pic 37) on loading screens

#%patch $6D75 $B0 $01	# show page number in help text

# don't reset the switch state when loading a game:
%patch $5C16
	$74 $53			#	jz	return_0
	$8B $36 $7598w		#	mov	si, gamestate_switchstate
	$D0 $2E $7628w		#	shr	ca_levelbit, 1
	$FE $0E $A974w		#	dec	ca_levelnum
	$33 $C0			#	xor	ax, ax
	$50			#	push	ax
	$0E			#	push	cs
	$E8 $0376w		#	call	near ptr SetupGameLevel
	$58			#	pop	ax		; (AX is still 0!)
	$D0 $26 $7628w		#	shl	ca_levelbit, 1
	$FE $06 $A974w		#	inc	ca_evelnum
	$89 $36 $7598w		#	mov	gamestate_switchstate, si
	$39 $06 $A97Dw		#	cmp	mmerror, ax	; (AX is still 0!)
	$74 $3D			#	jz	read_map
	$A3 $A97Dw		#	mov	mmerror, ax	; (AX is still 0!)
	$B0 $08			#	mov	al, 8		; (AH is still 0!)

%patch $30E8D $00 $1F $1F $1F $1F $1F $1F $1F $1F $1F $1F $1F $1F $1F $1F $1F

# Only remove level entrances for finished levels on world map
# (leave elevator and teleporter coordinates intact):
%patch $5EDB
	$80 $7E $FB $C0		#	cmp	byte ptr [bp-5], 0C0h
	$75 $0D			#	jne	check_barrier
	$90 $90 $90 $90		#	nop nop nop nop

%patch $5EED $90 $80 $7E $FB $D0	# modified barrier check
%patch $5F04 $90 $80 $7E $FB $F0	# modified flag check


# Fix "pole door glitch":
%patch $AC33
	$C7 $45 $10 $0001w	#	mov	[di+objtype.ydir], 1
	$E9 $FF78w		#	jmp	loc_AA2_193


# Fix "impossible bullet" bug:
%patch $BF24 $2B
%patch $BF38 $EB $0F $90

# Grabbiter-replacement is always active (make sure it's drawn when teleporting)
%patch $F4EA $02
# UFOs have also been made always active somewhere above


################################################################################
# Customized Screen Update Code For KEEN6 v1.4 (EGA)
# Copyright (c) 2019 K1n9_Duk3
#
# This software is provided 'as-is', without any express or implied warranty. In
# no event will the authors be held liable for any damages arising from the use
# of this software.
#
# Permission is granted to anyone to use this software for any purpose, including
# commercial applications, and to alter it and redistribute it freely, subject to
# the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not claim
#    that you wrote the original software. If you use this software in a product,
#    an acknowledgment in the product documentation would be appreciated but is
#    not required.
#
# 2. Altered source versions must be plainly marked as such, and must not be
#    misrepresented as being the original software.
#
# 3. This notice may not be removed or altered from any source distribution.
################################################################################

#replace the v1.4 delay code with my custom VW_SetScreen code
#(my VW_SetScreen is bigger than the one in v1.4)
%patch $1E713
	$55			#	push	bp
	$8B $EC			#	mov	bp, sp
	$BA $03DAw		#	mov	dx, 3DAh
	$FA			#	cli
				#@l1:
	$EC			#	in	al, dx
	$A8 $01			#	test	al, 1
	$74 $FB			#	jz	@l1
				#@l2:
	$EC			#	in	al, dx
	$A8 $01			#	test	al, 1
	$75 $FB			#	jnz	@l2
	$8B $4E $06		#	mov	cx, [bp+arg_start]
	$BA $03D4w		#	mov	dx, 3D4h
	$B0 $0C			#	mov	al, 0Ch
	$EE			#	out	dx, al
	$42			#	inc	dx
	$8A $C5			#	mov	al, ch
	$EE			#	out	dx, al
	$4A			#	dec	dx
	$B0 $0D			#	mov	al, 0Dh
	$EE			#	out	dx, al
	$8A $C1			#	mov	al, cl
	$42			#	inc	dx
	$EE			#	out	dx, al
	$F7 $06 $754Cw $0001w	#	test	fixjerky, 1
	$74 $03			#	jz	@l3
	$E8 $0053w		#	call	WaitVBL
				#@l3:
	$F7 $06 $761Aw $0001w	#	test	nopan, 1
	$75 $0C			#	jnz	l4
	$BA $03C0w		#	mov	dx, 3C0h
	$B0 $33			#	mov	al, 33h
	$EE			#	out	dx, al
	$EB $00			#	jmp	$
	$8A $46 $08		#	mov	al, [bp+arg_pan]
	$EE			#	out	dx, al
				#@l4:
	$F7 $06 $754Cw $0001w	#	test	fixjerky, 1
	$75 $03			#	jnz	@l5
	$E8 $0034w		#	call	WaitVBL
				#@l5:
	$FB			#	sti
	$5D			#	pop	bp
	$CB			#	retf

#replace the start of VW_SetScreen with a jump into my new code (see above):
%patch $1E794
	$E9 $FF7Cw

#and overwrite the rest of the old VW_SetScreen code with my WaitVBL code:
	$8B $1E $A6CBw		#	mov	bx, word ptr TimeCount
	$BA $03DAw		#	mov	dx, 3DAh
				#@wait:	
	$FB			#	sti
	$EB $00			#	jmp	short $
	$FA			#	cli
	$EC			#	in	al, dx
	$A8 $08			#	test	al, 8
	$75 $0A			#	jnz	@done
	$A1 $A6CBw		#	mov	ax, word ptr TimeCount
	$2B $C3			#	sub	ax, bx
	$3D $0001w		#	cmp	ax, 1
	$76 $ED			#	jbe	@wait
				#@done:
	$C3			#	retn

################################################################################
# End of Customized Screen Update Code
################################################################################


##############################
# Load Audio Chunks Directly #
##############################

# This patch forces the game to load the audio data directly from the file into
# the final buffer without doing any Huffman decompression. This requires the
# AUDIO.CK6 file to be compressed with a "dummy" Huffman dictionary.
#
# Without this code, the game would load the "compressed" data into a temporary
# buffer and then decompress it into the final buffer. That means the memory
# requirements for music are more than TWICE(!) the size of the IMF song.

%patch $12F97
	$33 $C0			#	xor	ax, ax
	$50			#	push	ax
	$FF $76	$FE		#	push	bp+var_2
	$FF $76 $FC		#	push	bp+var_4
	$FF $36 $CD67w		#	push	audiohandle
	$9A $00001BC9rl		#	call	_lseek
	$83 $C4 $08		#	add	sp, 8
	$B8 $0004w		#	mov	ax, 4
	$50			#	push	ax
	$B8 $CD5Fw		#	mov	ax, offset chunkexplen
	$50			#	push	ax
	$FF $36 $CD67w		#	push	audiohandle
	$9A $00001F10rl		#	call	_read
	$83 $C4 $06		#	add	sp, 6
	$FF $36 $CD61w		#	push	word ptr chunkexplen+2
	$FF $36 $CD5Fw		#	push	word ptr chunkexplen
	$8B $C6			#	mov	ax, si
	$D1 $E0			#	shl	ax, 1
	$05 $C8EBw		#	add	ax, offset audiosegs
	$50			#	push	ax
	$9A $15110713rl		#	call	MM_GetPtr
	$83 $C4 $06		#	add	sp, 6
	$83 $3E $A97Dw $00	#	cmp	mmerror, 0
	$75 $1E			#	jnz	done
	$FF $36 $CD61w		#	push	word ptr chunkexplen+2
	$FF $36 $CD5Fw		#	push	word ptr chunkexplen
	$8B $DE			#	mov	bx, si
	$D1 $E3			#	shl	bx, 1
	$FF $B7 $C8EBw		#	push	audiosegs[bx]
	$33 $C0			#	xor	ax, ax
	$50			#	push	ax
	$FF $36 $CD67w		#	push	audiohandle
	$0E			#	push	cs
	$E8 $F68Bw		#	call	near ptr CA_FarRead
	$83 $C4 $0A		#	add	sp, 10
				#done:
	$5E			#	pop	si
	$8B $E5			#	mov	sp, bp
	$5D			#	pop	bp
	$CB			#	retf

# This leaves 183 bytes unused at $13002 to $130B8 (inclusive)

# With this code, the huffman tree for the audio data is no longer needed,
# so let's prevent the engine from "optimizing" the huffman tree. This frees
# up 1024 bytes in the data segment, great for adding new (near) strings or
# new object state definitions.

# Free up 1024 bytes at $36EEE (dseg:61BE):
%patch $12EA4 $EB $0F


########################################################
# Free Tile And Sprite Graphics Before Loading A Level #
########################################################

#Free sprites and tiles before loading a level
%patch $5FAD
	$74 $0A			#	jz	no_demo
	$C7 $06 $75A8w $0002w	#	mov	gamestate_difficulty, 2
	$33 $C0			#	xor	ax, ax
	$EB $03			#	jmp	init_rndt
				#no_demo:
	$B8 $0001w		#	mov	ax, 1
				#init_rndt:
	$50			#	push	ax
	$9A $1CF3000Crl		#	call	US_InitRndT
	$58			#	pop	ax
	$9A $05A1000Arl		#	call	FreeUpMemory
	$90 $90 $90 $90 $90 $90	#	(6x nop)

#Don't free the paddle war sprites (in case loading a game fails)
%patch $5A1F $0033w		# default: $002Ew


##################
# Memory Related #
##################

# Fix error in XMS size calculation
%patch $152F3
	$BB $0010w		#	mov	bx, 16
	$F7 $E3			#	mul	bx
	$01 $06 $A1A5w		#	add	..., ax
	$11 $16 $A1A7w		#	adc	..., dx


# Lock text buffers to avoid "PageLayout: Text not headed with ^P" error

# CacheAndLock routine (returns grsegs offset in AX):
%patch $18403
	$55			#	push	bp
	$8B $EC			#	mov	bp, sp
	$57			#	push	di
	$8B $7E $06		#	mov	di, [bp+arg_0]
	$57			#	push	di
	$9A $125A1108rl		#	call	CA_CacheGrChunk
	$58			#	pop	ax
	$B8 $0001w		#	mov	ax, 1
	$50			#	push	ax
	$D1 $E7			#	shl	di, 1
	$81 $C7 $7629w		#	add	di, offset grsegs
	$57			#	push	di
	$9A $15110AD6rl		#	call	MM_SetLock
	$83 $C4 $04		#	add	sp, 4
	$8B $C7			#	mov	ax, di
	$5F			#	pop	di
	$5D			#	pop	bp
	$CB			#	retf
# Note: this overwrites the unused SDL_TimingService code (2 bytes left unused)

# Use CacheAndLock instead of CA_CacheGrChunk to cache the text chunks
%patch $E321 $183B0053rl	# for the ending text


# Make CA_UpLevel flow into CA_ClearMarks so we don't load more	than we need
%patch $13A7C $EB $30


###################
# Fix Engine Bugs #
###################

# Avoid crashing when trying to draw characters that don't exist in the font:
%patch $36EE2 $08C5w

# Make VW_ClearVideo abort if screenseg is NULL:
%patch $1D29D
	$83 $3E $A93Cw $00	#	cmp	screenseg, 0
	$74 $26			#	jz	done
	$B8 $0000w		#	mov	ax, 0
#this patch overwrites some code that effectively sets AX to 0, that's why the
#new code also sets AX to 0 at the end


%end