Merge branch '86Box:master' into nec-v20
This commit is contained in:
@@ -64,6 +64,7 @@ AppDir:
|
||||
- usr/lib/cmake
|
||||
- usr/lib/pkgconfig
|
||||
- usr/sbin
|
||||
- usr/share/aclocal
|
||||
- usr/share/alsa
|
||||
- usr/share/apport
|
||||
- usr/share/bug
|
||||
|
||||
@@ -232,7 +232,7 @@ else
|
||||
then
|
||||
pkgs="$pkgs build-essential"
|
||||
else
|
||||
sudo dpkg --add-architecture $arch_deb
|
||||
sudo dpkg --add-architecture "$arch_deb"
|
||||
pkgs="$pkgs crossbuild-essential-$arch_deb"
|
||||
fi
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ if(MUNT_EXTERNAL)
|
||||
endif()
|
||||
|
||||
project(86Box
|
||||
VERSION 3.2
|
||||
VERSION 3.2.1
|
||||
DESCRIPTION "Emulator of x86-based systems"
|
||||
HOMEPAGE_URL "https://86box.net"
|
||||
LANGUAGES C CXX)
|
||||
|
||||
@@ -15,14 +15,16 @@ Features
|
||||
System requirements and recommendations
|
||||
---------------------------------------
|
||||
* Intel Core 2 or AMD Athlon 64 processor
|
||||
* Windows 7 Service Pack 1, Windows 8.1 or Windows 10
|
||||
* Windows version: Windows 7 Service Pack 1, Windows 8.1 or Windows 10
|
||||
* Linux version: Ubuntu 16.04, Debian 9.0 or other distributions from 2016 onwards
|
||||
* 4 GB of RAM
|
||||
|
||||
Performance may vary depending on both host and guest configuration. Most emulation logic is executed in a single thread, therefore generally systems with better IPC (instructions per clock) should be able to emulate higher clock speeds.
|
||||
|
||||
It is also recommended to use a manager application with 86Box for easier handling of multiple virtual machines.
|
||||
It is also recommended to use a manager application (**Windows only**) with 86Box for easier handling of multiple virtual machines.
|
||||
* [WinBox for 86Box](https://github.com/86Box/WinBox-for-86Box) by Laci bá'
|
||||
* The new manager with improved new user experience; installer, automatic updates of emulator files and more.
|
||||
* While development is suspended and the repository is archived, the latest version is fully functional.
|
||||
* [86Box Manager](https://github.com/86Box/86BoxManager) by [daviunic](https://github.com/daviunic) (Overdoze)
|
||||
* The traditional 86Box manager with simple interface.
|
||||
|
||||
|
||||
@@ -1577,7 +1577,7 @@ pipc_init(const device_t *info)
|
||||
dev->ac97 = device_add(&ac97_via_device);
|
||||
ac97_via_set_slot(dev->ac97, dev->slot, PCI_INTC);
|
||||
|
||||
dev->sb = device_add(&sb_pro_compat_device);
|
||||
dev->sb = device_add_inst(&sb_pro_compat_device, 2);
|
||||
#ifndef VIA_PIPC_FM_EMULATION
|
||||
dev->sb->opl_enabled = 1;
|
||||
#endif
|
||||
|
||||
@@ -268,7 +268,7 @@ isapnp_read_data(uint16_t addr, void *priv)
|
||||
case 0x01: /* Serial Isolation */
|
||||
card = dev->first_card;
|
||||
while (card) {
|
||||
if (card->enable && (card->state == PNP_STATE_ISOLATION))
|
||||
if (card->enable && card->rom && (card->state == PNP_STATE_ISOLATION))
|
||||
break;
|
||||
card = card->next;
|
||||
}
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
#define EMU_NAME "86Box"
|
||||
#define EMU_NAME_W LSTR(EMU_NAME)
|
||||
|
||||
#define EMU_VERSION "3.2"
|
||||
#define EMU_VERSION "3.2.1"
|
||||
#define EMU_VERSION_W LSTR(EMU_VERSION)
|
||||
#define EMU_VERSION_EX "3.02"
|
||||
#define EMU_VERSION_EX "3.21"
|
||||
#define EMU_VERSION_MAJ 3
|
||||
#define EMU_VERSION_MIN 0
|
||||
#define EMU_VERSION_PATCH 0
|
||||
#define EMU_VERSION_MIN 2
|
||||
#define EMU_VERSION_PATCH 1
|
||||
|
||||
#define EMU_BUILD_NUM 0
|
||||
|
||||
|
||||
@@ -442,7 +442,7 @@ sst_init(const device_t *info)
|
||||
f = nvr_fopen(flash_path, "rb");
|
||||
if (f) {
|
||||
if (fread(&(dev->array[0x00000]), 1, dev->size, f) != dev->size)
|
||||
fatal("Less than %i bytes read from the SST Flash ROM file\n", dev->size);
|
||||
pclog("Less than %i bytes read from the SST Flash ROM file\n", dev->size);
|
||||
fclose(f);
|
||||
} else
|
||||
dev->dirty = 1; /* It is by definition dirty on creation. */
|
||||
|
||||
@@ -259,8 +259,8 @@ void MachineStatus::iterateCDROM(const std::function<void (int)> &cb) {
|
||||
for (size_t i = 0; i < CDROM_NUM; i++) {
|
||||
/* Could be Internal or External IDE.. */
|
||||
if ((cdrom[i].bus_type == CDROM_BUS_ATAPI) &&
|
||||
!hasIDE() && hdc_name != QStringLiteral("ide") &&
|
||||
hdc_name != QStringLiteral("xtide"))
|
||||
!hasIDE() && hdc_name.left(3) != QStringLiteral("ide") &&
|
||||
hdc_name.left(5) != QStringLiteral("xtide"))
|
||||
continue;
|
||||
if ((cdrom[i].bus_type == CDROM_BUS_SCSI) && !hasSCSI() &&
|
||||
(scsi_card_current[0] == 0) && (scsi_card_current[1] == 0) &&
|
||||
@@ -277,8 +277,8 @@ void MachineStatus::iterateZIP(const std::function<void (int)> &cb) {
|
||||
for (size_t i = 0; i < ZIP_NUM; i++) {
|
||||
/* Could be Internal or External IDE.. */
|
||||
if ((zip_drives[i].bus_type == ZIP_BUS_ATAPI) &&
|
||||
!hasIDE() && hdc_name != QStringLiteral("ide") &&
|
||||
hdc_name != QStringLiteral("xtide"))
|
||||
!hasIDE() && hdc_name.left(3) != QStringLiteral("ide") &&
|
||||
hdc_name.left(5) != QStringLiteral("xtide"))
|
||||
continue;
|
||||
if ((zip_drives[i].bus_type == ZIP_BUS_SCSI) && !hasSCSI() &&
|
||||
(scsi_card_current[0] == 0) && (scsi_card_current[1] == 0) &&
|
||||
@@ -295,8 +295,8 @@ void MachineStatus::iterateMO(const std::function<void (int)> &cb) {
|
||||
for (size_t i = 0; i < MO_NUM; i++) {
|
||||
/* Could be Internal or External IDE.. */
|
||||
if ((mo_drives[i].bus_type == MO_BUS_ATAPI) &&
|
||||
!hasIDE() && hdc_name != QStringLiteral("ide") &&
|
||||
hdc_name != QStringLiteral("xtide"))
|
||||
!hasIDE() && hdc_name.left(3) != QStringLiteral("ide") &&
|
||||
hdc_name.left(5) != QStringLiteral("xtide"))
|
||||
continue;
|
||||
if ((mo_drives[i].bus_type == MO_BUS_SCSI) && !hasSCSI() &&
|
||||
(scsi_card_current[0] == 0) && (scsi_card_current[1] == 0) &&
|
||||
|
||||
@@ -445,6 +445,10 @@ void MainWindow::closeEvent(QCloseEvent *event) {
|
||||
}
|
||||
qt_nvr_save();
|
||||
config_save();
|
||||
#ifdef __unix__
|
||||
extern void xinput2_exit();
|
||||
if (QApplication::platformName() == "xcb") xinput2_exit();
|
||||
#endif
|
||||
event->accept();
|
||||
}
|
||||
|
||||
|
||||
@@ -337,6 +337,7 @@ extern int nvr_save(void);
|
||||
void
|
||||
plat_power_off(void)
|
||||
{
|
||||
plat_mouse_capture(0);
|
||||
confirm_exit = 0;
|
||||
nvr_save();
|
||||
config_save();
|
||||
|
||||
@@ -120,6 +120,14 @@ void xinput2_proc()
|
||||
prev_rel_coords[0] = relative_coords[0];
|
||||
prev_rel_coords[1] = relative_coords[1];
|
||||
prev_time = rawev->time;
|
||||
if (!mouse_capture) break;
|
||||
XWindowAttributes winattrib{};
|
||||
if (XGetWindowAttributes(disp, main_window->winId(), &winattrib)) {
|
||||
auto globalPoint = main_window->mapToGlobal(QPoint(main_window->width() / 2, main_window->height() / 2));
|
||||
XWarpPointer(disp, XRootWindow(disp, XScreenNumberOfScreen(winattrib.screen)), XRootWindow(disp, XScreenNumberOfScreen(winattrib.screen)), 0, 0, 0, 0, globalPoint.x(), globalPoint.y());
|
||||
XFlush(disp);
|
||||
}
|
||||
|
||||
}
|
||||
case XI_Motion: {
|
||||
if (XKeysymToKeycode(disp, XK_Home) == 69) {
|
||||
@@ -144,9 +152,12 @@ void xinput2_proc()
|
||||
|
||||
void xinput2_exit()
|
||||
{
|
||||
exitthread = true;
|
||||
procThread->wait(5000);
|
||||
procThread->terminate();
|
||||
if (!exitthread)
|
||||
{
|
||||
exitthread = true;
|
||||
procThread->wait(5000);
|
||||
procThread->terminate();
|
||||
}
|
||||
}
|
||||
|
||||
void xinput2_init()
|
||||
@@ -175,13 +186,6 @@ void xinput2_poll()
|
||||
{
|
||||
mouse_x = xi2_mouse_x;
|
||||
mouse_y = xi2_mouse_y;
|
||||
XWindowAttributes winattrib{};
|
||||
if (XGetWindowAttributes(disp, main_window->winId(), &winattrib))
|
||||
{
|
||||
auto globalPoint = main_window->mapToGlobal(QPoint(main_window->width() / 2, main_window->height() / 2));
|
||||
XWarpPointer(disp, XRootWindow(disp, XScreenNumberOfScreen(winattrib.screen)), XRootWindow(disp, XScreenNumberOfScreen(winattrib.screen)), 0, 0, 0, 0, globalPoint.x(), globalPoint.y());
|
||||
XFlush(disp);
|
||||
}
|
||||
}
|
||||
xi2_mouse_x = 0;
|
||||
xi2_mouse_y = 0;
|
||||
|
||||
@@ -708,7 +708,7 @@ cs423x_reset(void *priv)
|
||||
/* Reset PnP resource data, state and logical devices. */
|
||||
dev->pnp_enable = 1;
|
||||
cs423x_pnp_enable(dev, 1, 1);
|
||||
if (dev->pnp_card)
|
||||
if (dev->pnp_card && dev->sb)
|
||||
isapnp_reset_card(dev->pnp_card);
|
||||
|
||||
/* Reset SLAM. */
|
||||
@@ -780,7 +780,7 @@ cs423x_init(const device_t *info)
|
||||
dev->pnp_card = isapnp_add_card(NULL, 0, cs423x_pnp_config_changed, NULL, NULL, NULL, dev);
|
||||
|
||||
/* Initialize SBPro codec. The WSS codec is initialized later by cs423x_reset */
|
||||
dev->sb = device_add(&sb_pro_compat_device);
|
||||
dev->sb = device_add_inst(&sb_pro_compat_device, 1);
|
||||
sound_set_cd_audio_filter(sbpro_filter_cd_audio, dev->sb); /* CD audio filter for the default context */
|
||||
|
||||
/* Initialize RAM, registers and WSS codec. */
|
||||
|
||||
@@ -39,7 +39,7 @@ AboutDialogCreate(HWND hwnd)
|
||||
int i;
|
||||
TASKDIALOGCONFIG tdconfig = {0};
|
||||
TASKDIALOG_BUTTON tdbuttons[] = {
|
||||
{IDOK, EMU_SITE},
|
||||
{IDOK, EMU_SITE_W},
|
||||
{IDCANCEL, MAKEINTRESOURCE(IDS_2127)}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user