|  | @@ -1511,7 +1511,18 @@ extern "C" int scsiCDRomCommand()
 | 
											
												
													
														|  |          uint32_t start = (scsiDev.cdb[3] * 60 + scsiDev.cdb[4]) * 75 + scsiDev.cdb[5];
 |  |          uint32_t start = (scsiDev.cdb[3] * 60 + scsiDev.cdb[4]) * 75 + scsiDev.cdb[5];
 | 
											
												
													
														|  |          uint32_t end   = (scsiDev.cdb[6] * 60 + scsiDev.cdb[7]) * 75 + scsiDev.cdb[8];
 |  |          uint32_t end   = (scsiDev.cdb[6] * 60 + scsiDev.cdb[7]) * 75 + scsiDev.cdb[8];
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        doPlayAudio(start, end - start);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        uint32_t lba = start;
 | 
											
												
													
														|  | 
 |  | +        if (scsiDev.cdb[3] == 0xFF
 | 
											
												
													
														|  | 
 |  | +                && scsiDev.cdb[4] == 0xFF
 | 
											
												
													
														|  | 
 |  | +                && scsiDev.cdb[5] == 0xFF)
 | 
											
												
													
														|  | 
 |  | +        {
 | 
											
												
													
														|  | 
 |  | +            // request to start playback from 'current position'
 | 
											
												
													
														|  | 
 |  | +            image_config_t &img = *(image_config_t*)scsiDev.target->cfg;
 | 
											
												
													
														|  | 
 |  | +            lba = img.file.position() / 2352;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        uint32_t length = end - lba;
 | 
											
												
													
														|  | 
 |  | +        doPlayAudio(lba, length);
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      else if (command == 0x4B)
 |  |      else if (command == 0x4B)
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
										
											
												
													
														|  | @@ -1557,14 +1568,6 @@ extern "C" int scsiCDRomCommand()
 | 
											
												
													
														|  |          uint8_t main_channel = scsiDev.cdb[9];
 |  |          uint8_t main_channel = scsiDev.cdb[9];
 | 
											
												
													
														|  |          uint8_t sub_channel = scsiDev.cdb[10];
 |  |          uint8_t sub_channel = scsiDev.cdb[10];
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        if (scsiDev.cdb[3] == 0xFF
 |  | 
 | 
											
												
													
														|  | -                && scsiDev.cdb[4] == 0xFF
 |  | 
 | 
											
												
													
														|  | -                && scsiDev.cdb[5] == 0xFF)
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -            // resume from current position
 |  | 
 | 
											
												
													
														|  | -            start = 0xFFFFFFFF;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |          doReadCD(start, end - start, sector_type, main_channel, sub_channel);
 |  |          doReadCD(start, end - start, sector_type, main_channel, sub_channel);
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |      else if (command == 0x42)
 |  |      else if (command == 0x42)
 |