I'm still learning assembly, so I've written some of the game functions in assembly. This function seems to be faster the original in c. Here is the collision function:
checkCollision:
.set _ARGS, 4
* check y + w < y1
move.l _ARGS+4(a7), d0
add.l _ARGS+8(a7), d0
move.l _ARGS+16(a7), d1
cmp.l d1,d0
* branch if less than else continue
blt HHH
* check y > y1 + w1
move.l _ARGS+4(a7), d0
move.l _ARGS+16(a7), d1
add.l _ARGS+20(a7), d1
cmp.l d1,d0
bgt HHH
* check x > x1 + w1
move.l _ARGS(a7), d0
move.l _ARGS+12(a7), d1
add.l _ARGS+20(a7), d1
cmp.l d1,d0
bgt HHH
* check x + w < x1
move.l _ARGS(a7), d0
add.l _ARGS+8(a7), d0
move.l _ARGS+12(a7), d1
cmp.l d1 , d0
* branch if less than else continue
blt HHH
* if all are false, boxes collide
move.l #1, d0
rts
HHH:
* if any are true, boxes don't collide
move.l #0, d0
rts