From 2a869f86731cbe19a86842f9a85943884037f1d4 Mon Sep 17 00:00:00 2001 From: "R. Belmont" Date: Mon, 31 Mar 2008 03:04:34 +0000 Subject: [PATCH] Various SCSI devices register state items by their disk ID, which are not unique across device types. This introduces a device-type offset for CD-ROMs so their registrations don't clash with harddisks. --- src/emu/machine/scsicd.c | 6 +++--- src/emu/machine/scsicd.h | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/emu/machine/scsicd.c b/src/emu/machine/scsicd.c index 060be974fc0..d2e1e7bc1b5 100644 --- a/src/emu/machine/scsicd.c +++ b/src/emu/machine/scsicd.c @@ -735,14 +735,14 @@ static int scsicd_dispatch(int operation, void *file, INT64 intparm, void *ptrpa case SCSIOP_READ_DATA: scsicd_read_data( file, ptrparm, intparm ); return 0; - + case SCSIOP_WRITE_DATA: scsicd_write_data( file, ptrparm, intparm ); return 0; case SCSIOP_ALLOC_INSTANCE: - SCSIBase( &SCSIClassCDROM, operation, file, intparm, ptrparm ); - scsicd_alloc_instance( *((SCSIInstance **) ptrparm), intparm ); + SCSIBase( &SCSIClassCDROM, operation, file, intparm + SCSI_DEVICE_CDROM_STATE_BASE, ptrparm ); + scsicd_alloc_instance( *((SCSIInstance **) ptrparm), intparm + SCSI_DEVICE_CDROM_STATE_BASE ); return 0; case SCSIOP_DELETE_INSTANCE: diff --git a/src/emu/machine/scsicd.h b/src/emu/machine/scsicd.h index 67998398631..dc1b682b184 100644 --- a/src/emu/machine/scsicd.h +++ b/src/emu/machine/scsicd.h @@ -13,5 +13,10 @@ extern const SCSIClass SCSIClassCDROM; #define SCSI_DEVICE_CDROM &SCSIClassCDROM +// we pass in the disk ID for each SCSI device, but that's not unique across device types. +// to avoid collisions, each non-HDD SCSI device type should have it's own BASE to prevent +// this problem. +#define SCSI_DEVICE_CDROM_STATE_BASE (32) + #endif