There's a patch to fix the reload situation; I've installed it and it works great... of course, you have to recompile MAME to do it....
This part goes in src/drivers/cojag.c:
PORT_ANALOG( 0xff, 0x80, IPT_LIGHTGUN_Y, 70, 10, 0, 255 )
PORT_START /* fake analog X */
PORT_ANALOG( 0xff, 0x80, IPT_LIGHTGUN_X | IPF_PLAYER2, 50, 10, 0, 255 )
PORT_START /* fake analog Y */
PORT_ANALOG( 0xff, 0x80, IPT_LIGHTGUN_Y | IPF_PLAYER2, 70, 10, 0, 255 )
PORT_START /* gun triggers */
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SPECIAL ) /* gun data valid */
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SPECIAL ) /* gun data valid */
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START /* fake reload triggers */
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SPECIAL ) /* gun data valid */
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SPECIAL ) /* gun data valid */
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
and in src/vidhrdw/jaguar.c change READ32_HANDLER( cojag_gun_input_r ) to:
READ32_HANDLER( cojag_gun_input_r )
{
int beamx, beamy;
switch (offset)
{
case 0:
if (!(readinputport(
& 0x04)) return 0;
get_crosshair_xy(1, &beamx, &beamy);
beamx += 52;
beamy += 17;
return (beamy << 16) | (beamx ^ 0x1ff);
case 1:
if (!(readinputport(
& 0x08)) return 0;
get_crosshair_xy(0, &beamx, &beamy);
beamx += 52;
beamy += 17;
return (beamy << 16) | (beamx ^ 0x1ff);
case 2:
return (readinputport(7) & readinputport(
) << 16;
}
return 0;
}