Overhauled and unified CD-ROM emulation;

Four CD-ROM drives are now emulated;
ATAPI DMA is now emulated;
Unified CD-ROM pass through to host drive handling;
Applied all (applicable) mainline PCem commits.
This commit is contained in:
OBattler
2017-01-16 01:49:19 +01:00
parent 0a11edd343
commit 4f7fd84229
41 changed files with 5953 additions and 5129 deletions

View File

@@ -35,44 +35,158 @@
#define IDM_EJECT_4 40082
#define IDM_DISC_3_WP 40083
#define IDM_DISC_4_WP 40084
#define IDM_CDROM_ISO 40100
#define IDM_CDROM_RELOAD 40101
#define IDM_CDROM_EMPTY 40200
#define IDM_CDROM_REAL 40200
#define IDM_CDROM_ENABLED 40300
#define IDM_CDROM_SCSI 40400
#define IDM_IDE_TER_ENABLED 40500
#define IDM_IDE_TER_IRQ9 40501
#define IDM_IDE_TER_IRQ10 40502
#define IDM_IDE_TER_IRQ11 40503
#define IDM_IDE_TER_IRQ12 40504
#define IDM_IDE_TER_IRQ14 40505
#define IDM_IDE_TER_IRQ15 40506
#define IDM_IDE_QUA_ENABLED 40507
#define IDM_IDE_QUA_IRQ9 40508
#define IDM_IDE_QUA_IRQ10 40509
#define IDM_IDE_QUA_IRQ11 40510
#define IDM_IDE_QUA_IRQ12 40511
#define IDM_IDE_QUA_IRQ14 40512
#define IDM_IDE_QUA_IRQ15 40513
#define IDM_SCSI_ENABLED 40600
#define IDM_SCSI_MODEL0 40601
#define IDM_SCSI_MODEL1 40602
#define IDM_SCSI_BASE130 40603
#define IDM_SCSI_BASE134 40604
#define IDM_SCSI_BASE230 40605
#define IDM_SCSI_BASE234 40606
#define IDM_SCSI_BASE330 40607
#define IDM_SCSI_BASE334 40608
#define IDM_SCSI_IRQ9 40609
#define IDM_SCSI_IRQ10 40610
#define IDM_SCSI_IRQ11 40611
#define IDM_SCSI_IRQ12 40612
#define IDM_SCSI_IRQ14 40613
#define IDM_SCSI_IRQ15 40614
#define IDM_SCSI_DMA5 40615
#define IDM_SCSI_DMA6 40616
#define IDM_SCSI_DMA7 40617
#define IDM_CDROM_1_ISO 40100
#define IDM_CDROM_1_RELOAD 40101
#define IDM_CDROM_1_EMPTY 40200
#define IDM_CDROM_1_REAL 40200
#define IDM_CDROM_1_ENABLED 40300
#define IDM_CDROM_1_SOUND_ON 40400
#define IDM_CDROM_1_SCSI 40500
#define IDM_CDROM_1_C 40600
#define IDM_CDROM_1_D 40601
#define IDM_CDROM_1_E 40602
#define IDM_CDROM_1_F 40603
#define IDM_CDROM_1_G 40604
#define IDM_CDROM_1_H 40605
#define IDM_CDROM_1_I 40606
#define IDM_CDROM_1_J 40607
#define IDM_CDROM_1_0 40700
#define IDM_CDROM_1_1 40701
#define IDM_CDROM_1_2 40702
#define IDM_CDROM_1_3 40703
#define IDM_CDROM_1_4 40704
#define IDM_CDROM_1_5 40705
#define IDM_CDROM_1_6 40706
#define IDM_CDROM_1_8 40708
#define IDM_CDROM_1_9 40709
#define IDM_CDROM_1_10 40710
#define IDM_CDROM_1_11 40711
#define IDM_CDROM_1_12 40712
#define IDM_CDROM_1_13 40713
#define IDM_CDROM_1_14 40714
#define IDM_CDROM_1_15 40715
#define IDM_CDROM_2_ISO 41100
#define IDM_CDROM_2_RELOAD 41101
#define IDM_CDROM_2_EMPTY 41200
#define IDM_CDROM_2_REAL 41200
#define IDM_CDROM_2_ENABLED 41300
#define IDM_CDROM_2_SOUND_ON 41400
#define IDM_CDROM_2_SCSI 41500
#define IDM_CDROM_2_C 41600
#define IDM_CDROM_2_D 41601
#define IDM_CDROM_2_E 41602
#define IDM_CDROM_2_F 41603
#define IDM_CDROM_2_G 41604
#define IDM_CDROM_2_H 41605
#define IDM_CDROM_2_I 41606
#define IDM_CDROM_2_J 41607
#define IDM_CDROM_2_0 41700
#define IDM_CDROM_2_1 41701
#define IDM_CDROM_2_2 41702
#define IDM_CDROM_2_3 41703
#define IDM_CDROM_2_4 41704
#define IDM_CDROM_2_5 41705
#define IDM_CDROM_2_6 41706
#define IDM_CDROM_2_8 41708
#define IDM_CDROM_2_9 41709
#define IDM_CDROM_2_10 41710
#define IDM_CDROM_2_11 41711
#define IDM_CDROM_2_12 41712
#define IDM_CDROM_2_13 41713
#define IDM_CDROM_2_14 41714
#define IDM_CDROM_2_15 41715
#define IDM_CDROM_3_ISO 42100
#define IDM_CDROM_3_RELOAD 42101
#define IDM_CDROM_3_EMPTY 42200
#define IDM_CDROM_3_REAL 42200
#define IDM_CDROM_3_ENABLED 42300
#define IDM_CDROM_3_SOUND_ON 42400
#define IDM_CDROM_3_SCSI 42500
#define IDM_CDROM_3_C 42600
#define IDM_CDROM_3_D 42601
#define IDM_CDROM_3_E 42602
#define IDM_CDROM_3_F 42603
#define IDM_CDROM_3_G 42604
#define IDM_CDROM_3_H 42605
#define IDM_CDROM_3_I 42606
#define IDM_CDROM_3_J 42607
#define IDM_CDROM_3_0 42700
#define IDM_CDROM_3_1 42701
#define IDM_CDROM_3_2 42702
#define IDM_CDROM_3_3 42703
#define IDM_CDROM_3_4 42704
#define IDM_CDROM_3_5 42705
#define IDM_CDROM_3_6 42706
#define IDM_CDROM_3_8 42708
#define IDM_CDROM_3_9 42709
#define IDM_CDROM_3_10 42710
#define IDM_CDROM_3_11 42711
#define IDM_CDROM_3_12 42712
#define IDM_CDROM_3_13 42713
#define IDM_CDROM_3_14 42714
#define IDM_CDROM_3_15 42715
#define IDM_CDROM_4_ISO 43100
#define IDM_CDROM_4_RELOAD 43101
#define IDM_CDROM_4_EMPTY 43200
#define IDM_CDROM_4_REAL 43200
#define IDM_CDROM_4_ENABLED 43300
#define IDM_CDROM_4_SOUND_ON 43400
#define IDM_CDROM_4_SCSI 43500
#define IDM_CDROM_4_C 43600
#define IDM_CDROM_4_D 43601
#define IDM_CDROM_4_E 43602
#define IDM_CDROM_4_F 43603
#define IDM_CDROM_4_G 43604
#define IDM_CDROM_4_H 43605
#define IDM_CDROM_4_I 43606
#define IDM_CDROM_4_J 43607
#define IDM_CDROM_4_0 43700
#define IDM_CDROM_4_1 43701
#define IDM_CDROM_4_2 43702
#define IDM_CDROM_4_3 43703
#define IDM_CDROM_4_4 43704
#define IDM_CDROM_4_5 43705
#define IDM_CDROM_4_6 43706
#define IDM_CDROM_4_8 43708
#define IDM_CDROM_4_9 43709
#define IDM_CDROM_4_10 43710
#define IDM_CDROM_4_11 43711
#define IDM_CDROM_4_12 43712
#define IDM_CDROM_4_13 43713
#define IDM_CDROM_4_14 43714
#define IDM_CDROM_4_15 43715
#define IDM_IDE_TER_ENABLED 44000
#define IDM_IDE_TER_IRQ9 44009
#define IDM_IDE_TER_IRQ10 44010
#define IDM_IDE_TER_IRQ11 44011
#define IDM_IDE_TER_IRQ12 44012
#define IDM_IDE_TER_IRQ14 44014
#define IDM_IDE_TER_IRQ15 44015
#define IDM_IDE_QUA_ENABLED 44020
#define IDM_IDE_QUA_IRQ9 44029
#define IDM_IDE_QUA_IRQ10 44030
#define IDM_IDE_QUA_IRQ11 44031
#define IDM_IDE_QUA_IRQ12 44032
#define IDM_IDE_QUA_IRQ14 44033
#define IDM_IDE_QUA_IRQ15 44035
#define IDM_SCSI_ENABLED 45000
#define IDM_SCSI_MODEL0 45100
#define IDM_SCSI_MODEL1 45101
#define IDM_SCSI_BASE130 45200 + 0x130
#define IDM_SCSI_BASE134 45200 + 0x134
#define IDM_SCSI_BASE230 45200 + 0x230
#define IDM_SCSI_BASE234 45200 + 0x234
#define IDM_SCSI_BASE330 45200 + 0x330
#define IDM_SCSI_BASE334 45200 + 0x334
#define IDM_SCSI_IRQ9 45309
#define IDM_SCSI_IRQ10 45310
#define IDM_SCSI_IRQ11 45311
#define IDM_SCSI_IRQ12 45312
#define IDM_SCSI_IRQ14 45314
#define IDM_SCSI_IRQ15 45315
#define IDM_SCSI_DMA5 45405
#define IDM_SCSI_DMA6 45406
#define IDM_SCSI_DMA7 45407
#define IDC_COMBO1 1000
#define IDC_COMBOVID 1001
@@ -113,8 +227,6 @@
#define IDC_EDITC 1050
#define IDC_CFILE 1060
#define IDC_CNEW 1070
#define IDC_CHDD 1080
#define IDC_CCDROM 1090
#define IDC_EDIT_C_SPT 1200
#define IDC_EDIT_C_HPC 1210
#define IDC_EDIT_C_CYL 1220
@@ -125,8 +237,6 @@
#define IDC_EDITD 1051
#define IDC_DFILE 1061
#define IDC_DNEW 1071
#define IDC_DHDD 1081
#define IDC_DCDROM 1091
#define IDC_EDIT_D_SPT 1201
#define IDC_EDIT_D_HPC 1211
#define IDC_EDIT_D_CYL 1221
@@ -137,8 +247,6 @@
#define IDC_EDITE 1052
#define IDC_EFILE 1062
#define IDC_ENEW 1072
#define IDC_EHDD 1082
#define IDC_ECDROM 1092
#define IDC_EDIT_E_SPT 1202
#define IDC_EDIT_E_HPC 1212
#define IDC_EDIT_E_CYL 1222
@@ -149,8 +257,6 @@
#define IDC_EDITF 1053
#define IDC_FFILE 1063
#define IDC_FNEW 1073
#define IDC_FHDD 1083
#define IDC_FCDROM 1093
#define IDC_EDIT_F_SPT 1203
#define IDC_EDIT_F_HPC 1213
#define IDC_EDIT_F_CYL 1223
@@ -161,8 +267,6 @@
#define IDC_EDITG 1054
#define IDC_GFILE 1064
#define IDC_GNEW 1074
#define IDC_GHDD 1084
#define IDC_GCDROM 1094
#define IDC_EDIT_G_SPT 1204
#define IDC_EDIT_G_HPC 1214
#define IDC_EDIT_G_CYL 1224
@@ -173,8 +277,6 @@
#define IDC_EDITH 1055
#define IDC_HFILE 1065
#define IDC_HNEW 1075
#define IDC_HHDD 1085
#define IDC_HCDROM 1095
#define IDC_EDIT_H_SPT 1205
#define IDC_EDIT_H_HPC 1215
#define IDC_EDIT_H_CYL 1225
@@ -185,8 +287,6 @@
#define IDC_EDITI 1056
#define IDC_IFILE 1066
#define IDC_INEW 1076
#define IDC_IHDD 1086
#define IDC_ICDROM 1096
#define IDC_EDIT_I_SPT 1206
#define IDC_EDIT_I_HPC 1216
#define IDC_EDIT_I_CYL 1226
@@ -197,8 +297,6 @@
#define IDC_EDITJ 1057
#define IDC_JFILE 1067
#define IDC_JNEW 1077
#define IDC_JHDD 1087
#define IDC_JCDROM 1097
#define IDC_EDIT_J_SPT 1207
#define IDC_EDIT_J_HPC 1217
#define IDC_EDIT_J_CYL 1227