diff options
| author | 2008-03-31 03:04:34 +0000 | |
|---|---|---|
| committer | 2008-03-31 03:04:34 +0000 | |
| commit | 2a869f86731cbe19a86842f9a85943884037f1d4 (patch) | |
| tree | 91b2fc0d44560207662a51847837fd9d7e8be7e4 /src | |
| parent | cb87356d5c68cb22a0d5162e5c0c85c1a7b46d03 (diff) | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/emu/machine/scsicd.c | 6 | ||||
| -rw-r--r-- | 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 |
