1.1 --- a/src/maple/maple.c Tue Sep 02 00:42:43 2008 +0000
1.2 +++ b/src/maple/maple.c Mon Sep 08 07:56:33 2008 +0000
1.6 struct maple_device_class *maple_device_classes[] = {
1.7 - &controller_class, &keyboard_class, &mouse_class, NULL };
1.8 + &controller_class, &keyboard_class, &lightgun_class, &mouse_class, NULL };
1.10 void maple_init( void )
1.13 unsigned int cmd, recv_addr, send_addr;
1.14 uint32_t return_addr;
1.15 unsigned char *return_buf;
1.16 + maple_device_t dev;
1.18 last = GETBYTE(3) & 0x80; /* indicates last packet */
1.19 port = GETBYTE(2) & 0x03;
1.20 @@ -122,9 +123,19 @@
1.21 length = GETBYTE(0) & 0xFF;
1.22 return_addr = GETWORD(4);
1.24 - if( mode == 0x07 ) {
1.26 + case 2: /* lightgun */
1.27 + dev = maple_devices[port][0];
1.28 + if( dev != NULL && dev->start_gun != NULL ) {
1.29 + dev->start_gun(dev);
1.30 + return; // Pending
1.32 + asic_event( EVENT_MAPLE_DMA );
1.35 + case 7: /* skip */
1.37 - address +=4; /* skip? */
1.41 if( (return_addr & 0x1C000000) != 0x0C000000 ) {
1.46 - maple_device_t dev = maple_devices[port][periph];
1.47 + dev = maple_devices[port][periph];
1.49 /* no device attached */
1.50 *((uint32_t *)return_buf) = -1;