Reworked serial and LPT set up - they can now bet set to any I/O base address (though that capability is not used by anything yet);
The CD-ROM IOCTL direct pass through code now does sanity check on the requested data size before passing the command - fixes crashes with some DMA-only host DVD drives; The network poller is now in its own thread; The hack is back in the emulation of the National Semiconductors PC87306 Super I/O Chip - it's the only way right now to have serial working on that board; Fixed a part of the code that was still using NukedOPL even when OPL 3 was set to DOSBox OPL; Applied all mainline PCem commits.
This commit is contained in:
@@ -84,18 +84,18 @@ void opl_timer_over(int nr, int timer)
|
||||
void opl_write(int nr, uint16_t addr, uint8_t val)
|
||||
{
|
||||
if (!(addr & 1))
|
||||
{
|
||||
if (!opl[nr].is_opl3)
|
||||
opl[nr].addr = (int)opl[nr].chip.WriteAddr(addr, val) & 0xff;
|
||||
else
|
||||
opl[nr].addr = (int)OPL3_WriteAddr(&opl[nr].opl3chip, addr, val) & 0x1ff;
|
||||
}
|
||||
{
|
||||
if (!opl[nr].is_opl3 || !opl3_type)
|
||||
opl[nr].addr = (int)opl[nr].chip.WriteAddr(addr, val) & 0xff;
|
||||
else
|
||||
opl[nr].addr = (int)OPL3_WriteAddr(&opl[nr].opl3chip, addr, val) & 0x1ff;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!opl[nr].is_opl3)
|
||||
opl[nr].chip.WriteReg(opl[nr].addr, val);
|
||||
else
|
||||
OPL3_WriteReg(&opl[nr].opl3chip, opl[nr].addr, val);
|
||||
if (!opl[nr].is_opl3 || !opl3_type)
|
||||
opl[nr].chip.WriteReg(opl[nr].addr, val);
|
||||
else
|
||||
OPL3_WriteReg(&opl[nr].opl3chip, opl[nr].addr, val);
|
||||
|
||||
switch (opl[nr].addr)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user