@@ -354,6 +354,11 @@ DmdType detect_dmd() {
354354 (de < 9600 ) && (rdata > 65 ) && (rdata < 80 )) {
355355 return DMD_ALVING;
356356
357+ // Island/SPinball(?) -> DOTCLK: 2323000 | DE: 18150 | RDATA: 565
358+ } else if ((dotclk > 2200000 ) && (dotclk < 2450000 ) && (de > 17650 ) &&
359+ (de < 18500 ) && (rdata > 540 ) && (rdata < 590 )) {
360+ return DMD_ISLAND;
361+
357362 // Capcom -> DOTCLK: 4168000 | DE: 16280 | RDATA: 510
358363 } else if ((dotclk > 4000000 ) && (dotclk < 4300000 ) && (de > 16000 ) &&
359364 (de < 16500 ) && (rdata > 490 ) && (rdata < 530 )) {
@@ -877,6 +882,26 @@ bool dmdreader_init(bool return_on_no_detection) {
877882 break ;
878883 }
879884
885+ case DMD_ISLAND: {
886+ uint input_pins[] = {RDATA};
887+ dmdreader_programs_init (
888+ &dmd_reader_gottlieb_program,
889+ dmd_reader_gottlieb_program_get_default_config,
890+ &dmd_framedetect_gottlieb_program,
891+ dmd_framedetect_gottlieb_program_get_default_config, input_pins, 1 ,
892+ 0 );
893+
894+ source_width = 128 ;
895+ source_height = 32 ;
896+ source_bitsperpixel = 4 ;
897+ target_bitsperpixel = 4 ;
898+ source_planesperframe = 4 ;
899+ source_planehistoryperframe = 0 ;
900+ source_lineoversampling = LINEOVERSAMPLING_NONE;
901+ source_mergeplanes = MERGEPLANES_ADD;
902+ break ;
903+ }
904+
880905 case DMD_CAPCOM: {
881906 uint input_pins[] = {RDATA, RCLK};
882907 dmdreader_programs_init (&dmd_reader_capcom_program,
0 commit comments