I've been looking into whether it's possible to:
- Make a different vehicle carry the hovercraft
- Make the Enterprise carry a different vehicle
Mixed results.
The hovercraft pickup is part of the Enterprise's landing routine. It checks to see if the current x,y matches the stored x,y of the Hovercraft, then checks to see if the proper event flag is set. If so, then the crane lowers and the Hovercraft is grappled.
Now, this whole subroutine is preceded by a routine that essentially doles out instructions for what to do if you press A while in a world map, which looks like this:
$00/9C87 AD 04 17 LDA $1704 [$00:1704];Look at 1704 in RAM (mode of transport)
$00/9C8A F0 2B BEQ $2B [$9CB7] ;If Zero, return
$00/9C8C C9 01 CMP #$01 ;compare with 01 (Yellow Choc)
$00/9C8E D0 03 BNE $03 [$9C93] ;If not equal, skip to next check
$00/9C90 4C 5D 9E JMP $9E5D [$00:9E5D];If equal, run Yellow Choc dismount routine
$00/9C93 C9 02 CMP #$02 ;compare with 02 (Black Choc)
$00/9C95 D0 03 BNE $03 [$9C9A] ;If not equal, skip to next check
$00/9C97 4C 02 9F JMP $9F02 [$00:9F02];If equal, run Black Choc dismount routine
$00/9C9A C9 03 CMP #$03 ;compare with 03 (Hovercraft)
$00/9C9C D0 03 BNE $03 [$9CA1] ;If not equal, skip to next check
$00/9C9E 4C C0 9F JMP $9FC0 [$00:9FC0];If equal, run Hovercraft landing routine
$00/9CA1 C9 04 CMP #$04 ;compare with 04 (Enterprise)
$00/9CA3 D0 03 BNE $03 [$9CA8] ;If not equal, skip to next check
$00/9CA5 4C ED A3 JMP $A3ED [$00:A3ED];If equal, run Enterprise landing routine
$00/9CA8 C9 05 CMP #$05 ;compare with 05 (Falcon)
$00/9CAA D0 03 BNE $03 [$9CAF] ;If not equal, skip to next check
$00/9CAC 4C 3C A5 JMP $A53C [$00:A53C];If equal, run Falcon landing routine
$00/9CAF C9 06 CMP #$06 ;compare with 06 (Lunar Whale)
$00/9CB1 D0 03 BNE $03 [$9CB6] ;If not equal, skip to end
$00/9CB3 4C C4 A5 JMP $A5C4 [$00:A5C4];If equal, run Lunar Whale landing routine
$00/9CB6 60 RTSNow it is possible, in theory, to make the Falcon pick up the Hovercraft instead of the Enterprise by changing the 04 at 9CA2 to 05 and the 05 at 9CA9 to 04, but then you would have to switch all of the vehicle specific ram references in each landing routine to represent the correct vehicle. That would include vehicle height, stored world location, stored x position, stored y position (I think that's it). You'd have to do this both for the Falcon's and the Enterprise's landing routine, or else you'd have some crazy glitching when you try to land. You could probably do this with the Whale, too, but then you'd have to change a
lot more coding.
Seems like a lot of work for not a lot of payoff...
As for the other side of the coin, carrying a different vehicle:
I can change which vehicle's location is checked from Hovercraft to anything else (except Yellow Choc - because it always runs away, the game does not store its location). This is done by changing the 19 17 at A407-8 to any other vehicle's stored x,y (15 17 for Black Choc, 21 17 for Falcon, 25 17 for Lunar Whale). Likewise, the stored location of the Hovercraft when releasing it can be changed to the stored location of any other vehicle by changing the 19 17 at A506 in the same fashion. There are still problems with these changes, though. The Hovercraft still disappears instead of whichever vehicle you are trying to pick up, and the carried vehicle still looks like the hovercraft. I haven't been able to figure out how (if possible) to "fix" these issues.
Honestly, I'm kind of running out of steam on my vehicle research. I've figured out how to change pretty much everything I really wanted to be able to edit, and it seems like everything else I find can't be edited without significant glitches. So... I think I'm gonna put vehicles to bed for now.