More cooperative hodge podge. An experimental feature, both players are needed to kill an enemy. Sam must hold the enemy, so Dean can shoot it.
To accomodate this the changes are quite simple:
First block the hurting of enemies when they are held by Sam:
ldy SPRITE_HELD
dey
ldx SPRITE_ACTIVE,y
lda IS_TYPE_ENEMY,x
cmp #2
bne .NormalHurtByForce
;in 2p mode?
;TODO - if only one player is left?
lda GAME_MODE
cmp #2
bne .NormalHurtByForce
;no further action
jmp .NoEnemyHeld
.NormalHurtByForce
ldx PARAM6
Then, when Dean's bullet hits, check if the play mode is 2 player, and the enemy is actually held by Sam:
;is two player enemy?
ldy SPRITE_ACTIVE,x
lda IS_TYPE_ENEMY,y
cmp #2
bne .HitEnemy
;in 2p mode?
;TODO - if only one player is left?
lda GAME_MODE
cmp #2
bne .HitEnemy
ldy SPRITE_HELD
dey
sty PARAM1
cpx PARAM1
beq .HitEnemy
;enemy would be hit, but is not held
jmp .ShotDone
.HitEnemy
And obviously, when an enemy is hurt, release Sam's lock:
lda SPRITE_HELD
sta PARAM1
dec PARAM1
cpx PARAM1
bne .NotHeldEnemy
lda #0
sta SPRITE_HELD
.NotHeldEnemy
As you can see, there're still TODOs left. Also, if 2 player mode makes this behaviour general or only for special enemies is yet to be decided.