To get things started, you'll want one variable containing the boss' HP (usually this would be $1528,x) and one variable that indicates the boss is hurt/stunned (hint: $1540,x is decrements itself and is perfect for this). You'll want to store the boss' maximum HP to the Hp counter in the INIT routine to set things up.
For the movement, you can just copy-paste the code from Rip Van Fish. Before that, though, you'll want to put LDA !StunTimer : BNE NoMovement, where !StunTimer is whatever address you use to track how long the boss should be stunned after getting hit, and NoMovement is a label after the movement routine.
To make it 32x32, just add Xdisp to your graphics loop. It's four 16x16 tiles, so set up your tables like this:
Code
Tilemap: db !Tile1,!Tile2
db !Tile3,!Tile4
Xdisp: db $00,$10
db $00,$10
Ydisp: db $00,$00
db $10,$10
Then start off your graphics loop by setting some address (the X register is probably better) to 3. At the end of the graphics loop (before the JSL!) put INY#4 : DEX : BPL .Loop. .Loop is obviously the label you loop to. Note that you need the sprite index back in X before the JSL (I think, not sure).
Oh, yeah, the hitbox detection! There are routines for that in SMW, actually. They're located at $03B6F9, $03B6E5, and $03B72B. What you do is this:
Code
CHECK_CONTACT:
JSL $03B6F9 ; Get sprite A clipping
PHX
LDX #$0B ; Start at highest sprite index
.Loop LDA $14C8,x
BEQ .Next
JSL $03B6E5 ; Get sprite B clipping
JSL $03B72B ; Check for contact
.Next DEX
BPL .Loop
PLX
RTS
.Contact: !MoreCode
BRA .Next
Instead of !MoreCode you put check if the sprite is a thrown object (probably means $14C8,x = $0A). If it is, decrement the boss' HP and store some value to the stun timer (to stun it, duh).
I think that's all. Hopefully it's helpful.