I've had a night to mull over the grappling hook idea, and I would like to air a few more thoughts I had over it (I have a lot to say so please bear with me).
The grappling hook is generally a good idea (in my opinion anyways
), but aiming via the use of a crosshair would probably mean adding mouse support, and I feel that would detract from the retro feel of the game engine, as well as making the controls unwieldy in what is normally a fast paced game.
What I suggest is that while the player is on the ground, that the item is treated like any other weapon (i.e. it is only aimed horizontally or vertically), but when the player jumps into the air or is in freefall, the rope is fired in an upwards 45 degree angle (like the ninja rope in 'Worms 2'). It would make swinging from the ceiling much easier.
As for implementing this idea, I have extremely little experience working with assembly. Nevertheless, I have some advice which may be useful.
The generation of the rope could be done in one of two ways, either by drawing a freeform line, or by using small sprites in a chain-link effect. The easiest of the two would be the chain-link idea since the game already accommodates sprite management. The drawing of a freeform line is definitely harder to implement, but would be more aesthetically pleasing. Its possible to do in C, so it may be doable in assembly as well.
As for the matter of object detection, there are 3 ways to approach this. The first one is not at all (i.e. the rope goes through terrain), the second is to destroy the rope the second it hits any terrain, and the third is to make the rope 'bend' when it hits terrain.
This can be achieved by the use of 'nodes'. Basically a node is a pair of co-ordinates which are saved when the rope makes contact with the terrain. The node is generated where the contact is made, and any rope between this node and the end of the rope (or a previous node) remains stationary. The node then acts as the new pivot point for the rope. When the rope becomes parallel with the previous section of rope (that was separated by the node), the node is deleted and the previous pivot point is restored. Now I'm no expert on rope physics, but that was how it was done in the 'Worms' series.
I hope you find any of this useful, RuneLancer (if not, then ignore my babbling
).