This kinda piqued my interest, so taking a look at it.
Just testing by forcing 3-4 player VS into GP, and there's only maybe two problems to work out. By the way, for a Nintendo game the code is surprisingly redundant. That really works in our favour, simply because it means there's a lot of potential room that can be cleaned out for custom code. Addresses mentioned below are from NMKE00
The reason it doesn't inherantly work is that there isn't a specific handler for GP 3-4 player. The racers are never initialized, so you'd get whatever racer setup happened to be loaded last--they don't reinitialize memory inbetween.
Initialization occurs via 8003C0F0. At 8003C1F0 it branches outward into the specific setups, and each of these branches based on mode. The funny thing about that is the redundant code. Not only is almost everything leading up the initializer routines about the same, but the initializers themselves (80039F44: 1P, 7NPC; 8003A9F0: 2P, 6NPC) are virtually mirrors of one another.
For testing purposes, rerouting 3-4 player to one of these will load 3-4 player screen setup with the given number of bots for whichever initializer you called. So, yes, you'd be watching a bot in said slot.
If you wanted to patch it really quick, just pass 800393C0 E000 instead of B000 in SP+1C. The flags indicate which are player or bot controlled, and this is part of the change required to patch it up.
This is surprisingly easy to fix. Since both initializers are little more than clones, you only need to write one that loops for the number of players with player initialization values, then loops for remaining count with bot values.
There is one other bug that hasn't been traced yet. Although the full compliment of bots is loaded in a 3-4P GP and they appear in the little bar at the bottom, only four racers are used in the race. The rest are spawned in but not rendered, though collisions obviously would work fine. Probably nothing more than a #players branch someplace. Until it gets fixed though none of these courses would ever finish. The horror!
So, I'll take a whack at it Sunday and see if it can't be patched in. Oh, and I'll see what's involved in doing the menu. Depends how they built it, but probably not a huge ordeal.