Merge remote-tracking branch 'origin/master' into ls120
@@ -388,6 +388,7 @@ extern const device_t gd5426_onboard_isa_device;
|
||||
extern const device_t gd5426_onboard_device;
|
||||
extern const device_t gd5428_isa_device;
|
||||
extern const device_t gd5428_vlb_onboard_device;
|
||||
extern const device_t gd5428_vlb_onboard_pb450_device;
|
||||
extern const device_t gd5428_vlb_onboard_tandy_device;
|
||||
extern const device_t gd5428_vlb_device;
|
||||
extern const device_t gd5428_diamond_speedstar_pro_b1_vlb_device;
|
||||
@@ -410,6 +411,7 @@ extern const device_t gd5434_vlb_device;
|
||||
extern const device_t gd5434_pci_device;
|
||||
extern const device_t gd5436_pci_device;
|
||||
extern const device_t gd5436_onboard_pci_device;
|
||||
extern const device_t gd5436_onboard_pci_ics_device;
|
||||
extern const device_t gd5440_pci_device;
|
||||
extern const device_t gd5440_onboard_pci_device;
|
||||
extern const device_t gd5446_pci_device;
|
||||
|
||||
@@ -11070,7 +11070,7 @@ const machine_t machines[] = {
|
||||
.device = &sb486pv_device,
|
||||
.kbd_device = NULL,
|
||||
.fdc_device = NULL,
|
||||
.vid_device = &gd5436_onboard_pci_device,
|
||||
.vid_device = &gd5436_onboard_pci_ics_device,
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
@@ -11213,7 +11213,7 @@ const machine_t machines[] = {
|
||||
.device = &pb450_device,
|
||||
.kbd_device = NULL,
|
||||
.fdc_device = NULL,
|
||||
.vid_device = &gd5428_vlb_onboard_device,
|
||||
.vid_device = &gd5428_vlb_onboard_pb450_device,
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
|
||||
|
Before Width: | Height: | Size: 846 B |
|
Before Width: | Height: | Size: 115 B |
|
Before Width: | Height: | Size: 123 B |
|
Before Width: | Height: | Size: 156 B |
|
Before Width: | Height: | Size: 174 B |
|
Before Width: | Height: | Size: 118 B |
|
Before Width: | Height: | Size: 120 B |
|
Before Width: | Height: | Size: 117 B |
@@ -19,6 +19,7 @@
|
||||
* Copyright 2022 dob205
|
||||
*/
|
||||
#include "qt_about.hpp"
|
||||
#include "qt_defs.hpp"
|
||||
|
||||
extern "C" {
|
||||
#include <86box/86box.h>
|
||||
@@ -57,15 +58,7 @@ About::About(QWidget *parent)
|
||||
webSiteButton->connect(webSiteButton, &QPushButton::released, []() {
|
||||
QDesktopServices::openUrl(QUrl("https://" EMU_SITE));
|
||||
});
|
||||
#ifdef RELEASE_BUILD
|
||||
setIconPixmap(QIcon(":/settings/qt/icons/86Box-green.ico").pixmap(32, 32));
|
||||
#elif defined ALPHA_BUILD
|
||||
setIconPixmap(QIcon(":/settings/qt/icons/86Box-red.ico").pixmap(32, 32));
|
||||
#elif defined BETA_BUILD
|
||||
setIconPixmap(QIcon(":/settings/qt/icons/86Box-yellow.ico").pixmap(32, 32));
|
||||
#else
|
||||
setIconPixmap(QIcon(":/settings/qt/icons/86Box-gray.ico").pixmap(32, 32));
|
||||
#endif
|
||||
setIconPixmap(QIcon(EMU_ICON_PATH).pixmap(32, 32));
|
||||
setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,19 @@
|
||||
#define QT_DEFS_HPP
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
||||
#define CHECK_STATE_CHANGED checkStateChanged
|
||||
# define CHECK_STATE_CHANGED checkStateChanged
|
||||
#else
|
||||
#define CHECK_STATE_CHANGED stateChanged
|
||||
# define CHECK_STATE_CHANGED stateChanged
|
||||
#endif
|
||||
|
||||
#ifdef RELEASE_BUILD
|
||||
# define EMU_ICON_PATH ":/settings/qt/icons/86Box-green.ico"
|
||||
#elif defined ALPHA_BUILD
|
||||
# define EMU_ICON_PATH ":/settings/qt/icons/86Box-red.ico"
|
||||
#elif defined BETA_BUILD
|
||||
# define EMU_ICON_PATH ":/settings/qt/icons/86Box-yellow.ico"
|
||||
#else
|
||||
# define EMU_ICON_PATH ":/settings/qt/icons/86Box-gray.ico"
|
||||
#endif
|
||||
|
||||
#endif // QT_DEFS_HPP
|
||||
|
||||
@@ -809,9 +809,9 @@ MachineStatus::refresh(QStatusBar *sbar)
|
||||
if (rdisk_drives[i].bus_type == RDISK_BUS_DISABLED) {
|
||||
d->rdisk[i].pixmaps = &d->pixmaps.rdisk_disabled;
|
||||
} else if ((t == RDISK_TYPE_ZIP_100) || (t == RDISK_TYPE_ZIP_250)) {
|
||||
d->fdd[i].pixmaps = &d->pixmaps.zip;
|
||||
d->rdisk[i].pixmaps = &d->pixmaps.zip;
|
||||
} else {
|
||||
d->fdd[i].pixmaps = &d->pixmaps.rdisk;
|
||||
d->rdisk[i].pixmaps = &d->pixmaps.rdisk;
|
||||
}
|
||||
d->rdisk[i].label = std::make_unique<ClickableLabel>();
|
||||
d->rdisk[i].setEmpty(QString(rdisk_drives[i].image_path).isEmpty());
|
||||
|
||||
@@ -75,6 +75,7 @@ extern "C" {
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
|
||||
#include "qt_defs.hpp"
|
||||
#include "qt_mainwindow.hpp"
|
||||
#include "qt_progsettings.hpp"
|
||||
#include "qt_settings.hpp"
|
||||
@@ -627,16 +628,7 @@ main(int argc, char *argv[])
|
||||
#endif
|
||||
|
||||
#ifndef Q_OS_MACOS
|
||||
# ifdef RELEASE_BUILD
|
||||
app.setWindowIcon(QIcon(":/settings/qt/icons/86Box-green.ico"));
|
||||
# elif defined ALPHA_BUILD
|
||||
app.setWindowIcon(QIcon(":/settings/qt/icons/86Box-red.ico"));
|
||||
# elif defined BETA_BUILD
|
||||
app.setWindowIcon(QIcon(":/settings/qt/icons/86Box-yellow.ico"));
|
||||
# else
|
||||
app.setWindowIcon(QIcon(":/settings/qt/icons/86Box-gray.ico"));
|
||||
# endif
|
||||
|
||||
app.setWindowIcon(QIcon(EMU_ICON_PATH));
|
||||
# ifdef Q_OS_UNIX
|
||||
app.setDesktopFileName("net.86box.86Box");
|
||||
# endif
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
*/
|
||||
#include "qt_updatedetails.hpp"
|
||||
#include "ui_qt_updatedetails.h"
|
||||
#include "qt_defs.hpp"
|
||||
|
||||
#include <QDesktopServices>
|
||||
#include <QPushButton>
|
||||
@@ -52,7 +53,7 @@ UpdateDetails::
|
||||
connect(ui->buttonBox, &QDialogButtonBox::accepted, [updateResult] {
|
||||
visitDownloadPage(updateResult.channel);
|
||||
});
|
||||
const auto logo = QPixmap(":/assets/86box.png").scaled(QSize(64, 64), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
const auto logo = QIcon(EMU_ICON_PATH).pixmap(QSize(64, 64));
|
||||
|
||||
ui->icon->setPixmap(logo);
|
||||
}
|
||||
|
||||
@@ -38,11 +38,6 @@ VMManagerAddMachine::
|
||||
setPage(Page_NameAndLocation, new NameAndLocationPage);
|
||||
setPage(Page_Conclusion, new ConclusionPage);
|
||||
|
||||
// Need to create a better image
|
||||
// QPixmap originalPixmap(":/assets/86box.png");
|
||||
// QPixmap scaledPixmap = originalPixmap.scaled(150, 150, Qt::KeepAspectRatio);
|
||||
QPixmap wizardPixmap(":/assets/86box-wizard.png");
|
||||
|
||||
#ifndef Q_OS_MACOS
|
||||
setWizardStyle(ModernStyle);
|
||||
setPixmap(LogoPixmap, QPixmap(":assets/addvm-logo.png"));
|
||||
|
||||
@@ -88,7 +88,6 @@
|
||||
<file alias="/texture_frag.spv">qt/texture_frag.spv</file>
|
||||
</qresource>
|
||||
<qresource prefix="/assets">
|
||||
<file alias="86box.png">qt/assets/86box.png</file>
|
||||
<file alias="86box-wizard.png">qt/assets/86box-wizard.png</file>
|
||||
<file alias="addvm-logo.png">qt/assets/addvm-logo.png</file>
|
||||
<file alias="addvm-watermark.png">qt/assets/addvm-watermark.png</file>
|
||||
|
||||
@@ -7744,6 +7744,40 @@ static const device_config_t mach32_pci_config[] = {
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
|
||||
static const device_config_t mach32_pci_onboard_config[] = {
|
||||
{
|
||||
.name = "ramdac",
|
||||
.description = "RAMDAC type",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = NULL,
|
||||
.default_int = ATI_68860,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "ATI 68860", .value = ATI_68860 },
|
||||
{ .description = "ATI 68875", .value = ATI_68875 },
|
||||
{ .description = "" }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = NULL,
|
||||
.default_int = 2048,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "1 MB", .value = 1024 },
|
||||
{ .description = "2 MB", .value = 2048 },
|
||||
{ .description = "" }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
const device_t mach8_vga_isa_device = {
|
||||
@@ -7827,5 +7861,5 @@ const device_t mach32_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = mach_speed_changed,
|
||||
.force_redraw = mach_force_redraw,
|
||||
.config = mach32_pci_config
|
||||
.config = mach32_pci_onboard_config
|
||||
};
|
||||
|
||||
@@ -4439,6 +4439,8 @@ gd54xx_init(const device_t *info)
|
||||
vram = 1024;
|
||||
else if ((id == CIRRUS_ID_CLGD5426) && (info->local & 0x200) && (info->local & 0x1000))
|
||||
vram = 1024;
|
||||
else if ((id == CIRRUS_ID_CLGD5420) && (info->local & 0x200))
|
||||
vram = 512;
|
||||
else if (id == CIRRUS_ID_CLGD5401)
|
||||
vram = 256;
|
||||
else
|
||||
@@ -4446,7 +4448,10 @@ gd54xx_init(const device_t *info)
|
||||
|
||||
gd54xx->vram_size = vram << 10;
|
||||
} else {
|
||||
vram = device_get_config_int("memory");
|
||||
if ((id == CIRRUS_ID_CLGD5436) && (info->local & 0x200) && (info->local & 0x1000))
|
||||
vram = 1;
|
||||
else
|
||||
vram = device_get_config_int("memory");
|
||||
gd54xx->vram_size = vram << 20;
|
||||
}
|
||||
}
|
||||
@@ -4834,6 +4839,25 @@ static const device_config_t gd5426_config[] = {
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
|
||||
static const device_config_t gd5428_1mb_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = NULL,
|
||||
.default_int = 2048,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "1 MB", .value = 1024 },
|
||||
{ .description = "2 MB", .value = 2048 },
|
||||
{ .description = "" }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
|
||||
static const device_config_t gd5429_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
@@ -4969,13 +4993,12 @@ static const device_config_t gd5434_onboard_config[] = {
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = NULL,
|
||||
.default_int = 4,
|
||||
.default_int = 2,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "1 MB", .value = 1 },
|
||||
{ .description = "2 MB", .value = 2 },
|
||||
{ .description = "4 MB", .value = 4 },
|
||||
{ .description = "" }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
@@ -5098,7 +5121,7 @@ const device_t gd5420_onboard_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = gd54xx_speed_changed,
|
||||
.force_redraw = gd54xx_force_redraw,
|
||||
.config = gd542x_config,
|
||||
.config = NULL,
|
||||
};
|
||||
|
||||
const device_t gd5422_isa_device = {
|
||||
@@ -5341,6 +5364,20 @@ const device_t gd5428_onboard_vlb_device = {
|
||||
.config = gd542x_config
|
||||
};
|
||||
|
||||
const device_t gd5428_vlb_onboard_pb450_device = {
|
||||
.name = "Cirrus Logic GD5428 (VLB) (On-Board) (PB450)",
|
||||
.internal_name = "cl_gd5428_vlb_onboard_pb450",
|
||||
.flags = DEVICE_VLB,
|
||||
.local = CIRRUS_ID_CLGD5428 | 0x200,
|
||||
.init = gd54xx_init,
|
||||
.close = gd54xx_close,
|
||||
.reset = gd54xx_reset,
|
||||
.available = NULL,
|
||||
.speed_changed = gd54xx_speed_changed,
|
||||
.force_redraw = gd54xx_force_redraw,
|
||||
.config = gd5428_1mb_config
|
||||
};
|
||||
|
||||
const device_t gd5428_vlb_onboard_tandy_device = {
|
||||
.name = "Cirrus Logic GD5428 (VLB) (On-Board) (Tandy)",
|
||||
.internal_name = "cl_gd5428_vlb_onboard_tandy",
|
||||
@@ -5536,7 +5573,21 @@ const device_t gd5436_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = gd54xx_speed_changed,
|
||||
.force_redraw = gd54xx_force_redraw,
|
||||
.config = gd5434_config
|
||||
.config = gd5434_onboard_config
|
||||
};
|
||||
|
||||
const device_t gd5436_onboard_pci_ics_device = {
|
||||
.name = "Cirrus Logic GD5436 (PCI) (On-Board) (ICS)",
|
||||
.internal_name = "cl_gd5436_onboard_pci_ics",
|
||||
.flags = DEVICE_PCI,
|
||||
.local = CIRRUS_ID_CLGD5436 | 0x200 | 0x1000,
|
||||
.init = gd54xx_init,
|
||||
.close = gd54xx_close,
|
||||
.reset = gd54xx_reset,
|
||||
.available = NULL,
|
||||
.speed_changed = gd54xx_speed_changed,
|
||||
.force_redraw = gd54xx_force_redraw,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t gd5436_pci_device = {
|
||||
|
||||
@@ -64,7 +64,11 @@
|
||||
#define DA2_MASK_GAIJIRAM 0x3ffff /* 0x3FFFF */
|
||||
#define DA2_MASK_VRAM 0xfffff /* 0xFFFFF */
|
||||
#define DA2_MASK_VRAMPLANE 0x1ffff /* 0x1FFFF */
|
||||
#define DA2_PIXELCLOCK 58000000.0 /* 58 MHz interlaced */
|
||||
#define DA2_CLOCK_58MHZ 58000000.0 /* 58.000 MHz interlaced */
|
||||
#define DA2_CLOCK_45MHZ 45570000.0 /* 45.570 MHz interlaced */
|
||||
/* The DA-3 and later have the capability of monitor ID detection and 45.57/47.424 MHz OSCs.
|
||||
They must be used for IBM 8515 monitor, but I don't know which OSC is used (or both). */
|
||||
|
||||
#define DA2_BLT_MEMSIZE 0x10
|
||||
#define DA2_BLT_REGSIZE 0x40
|
||||
#define DA2_DEBUG_BLTLOG_SIZE (DA2_BLT_REGSIZE + 1)
|
||||
@@ -77,9 +81,9 @@
|
||||
/* These ROMs are currently not found.
|
||||
At least, IBM-J released a Korean and PRC version of PS/55 for each market. */
|
||||
#define DA2_DCONFIG_CHARSET_HANT 3 /* for Code page 938 Traditional Chinese */
|
||||
#define DA2_DCONFIG_MONTYPE_COLOR 0x0A
|
||||
#define DA2_DCONFIG_MONTYPE_8515 0x0B
|
||||
#define DA2_DCONFIG_MONTYPE_MONO 0x09
|
||||
#define DA2_DCONFIG_MONTYPE_COLOR 0x0A /* 1010: IBM 8514 */
|
||||
#define DA2_DCONFIG_MONTYPE_8515 0x0B /* 1011: IBM 8515 */
|
||||
#define DA2_DCONFIG_MONTYPE_MONO 0x09 /* 1001: IBM 8604 */
|
||||
|
||||
#define DA2_BLT_CIDLE 0
|
||||
#define DA2_BLT_CFILLRECT 1
|
||||
@@ -263,8 +267,8 @@
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_DA2_LOG
|
||||
# define ENABLE_DA2_DEBUGIO 1
|
||||
# define ENABLE_DA2_DEBUGBLT 1
|
||||
// # define ENABLE_DA2_DEBUGIO 1
|
||||
// # define ENABLE_DA2_DEBUGBLT 1
|
||||
// # define ENABLE_DA2_DEBUGVRAM 1
|
||||
// # define ENABLE_DA2_DEBUGFULLSCREEN 1
|
||||
// # define ENABLE_DA2_DEBUGMONWAIT 1
|
||||
@@ -347,7 +351,7 @@ typedef struct da2_t {
|
||||
int hdisp, htotal, hdisp_time, rowoffset;
|
||||
int lowres;
|
||||
int rowcount;
|
||||
double clock;
|
||||
double clock, pixelclock;
|
||||
uint32_t memaddr_latch, ca_adj;
|
||||
|
||||
uint64_t dispontime, dispofftime;
|
||||
@@ -681,7 +685,7 @@ static uint8_t
|
||||
pixel1tohex(uint32_t addr, int index, da2_t *da2)
|
||||
{
|
||||
uint8_t pixeldata = 0;
|
||||
for (uint8_t i = 0; i < 8; j++) {
|
||||
for (uint8_t i = 0; i < 8; i++) {
|
||||
if (da2_vram_r(((addr << 3) | i) & (1 << (7 - index)), da2))
|
||||
pixeldata++;
|
||||
}
|
||||
@@ -1375,7 +1379,7 @@ da2_out(uint16_t addr, uint16_t val, void *priv)
|
||||
case LC_START_H_DISPLAY_ENAB:
|
||||
case LC_START_V_DISPLAY_ENAB:
|
||||
case LC_VIEWPORT_SELECT:
|
||||
case LC_VIEWPORT_PRIORITY:
|
||||
case LC_COMMAND:
|
||||
da2->fullchange = 3;
|
||||
da2_recalctimings(da2);
|
||||
break;
|
||||
@@ -2330,14 +2334,18 @@ da2_recalctimings(da2_t *da2)
|
||||
/* In the video mode 3, you'll see a blank below the screen. It's NOT a bug. */
|
||||
da2->hdisp -= da2->crtc[LC_START_H_DISPLAY_ENAB];
|
||||
da2->dispend -= da2->crtc[LC_START_V_DISPLAY_ENAB];
|
||||
da2->dispend += 1;
|
||||
|
||||
da2->htotal = da2->crtc[LC_HORIZONTAL_TOTAL];
|
||||
da2->htotal += 1;
|
||||
da2->htotal += 2;
|
||||
|
||||
da2->rowoffset = da2->crtc[LC_OFFSET]; /* number of bytes in a scanline */
|
||||
|
||||
da2->clock = da2->da2const;
|
||||
if (da2->crtc[LC_END_HSYNC_PULSE] & 0x8000)
|
||||
da2->pixelclock = DA2_CLOCK_45MHZ;
|
||||
else
|
||||
da2->pixelclock = DA2_CLOCK_58MHZ;
|
||||
da2->da2const = (uint64_t) ((cpuclock / da2->pixelclock) * (double) (1ull << 32));
|
||||
da2->clock = (double)da2->da2const;
|
||||
|
||||
if (da2->vtotal == 0)
|
||||
da2->vtotal = da2->vsyncstart = da2->vblankstart = 256;
|
||||
@@ -2360,7 +2368,8 @@ da2_recalctimings(da2_t *da2)
|
||||
if (!(da2->ioctl[LS_MODE] & 0x01)) {
|
||||
da2->hdisp *= 16;
|
||||
da2->char_width = 13;
|
||||
if (da2->crtc[LC_VIEWPORT_PRIORITY] & 0x80) {
|
||||
// if (da2->crtc[LC_VIEWPORT_PRIORITY] & 0x80) {
|
||||
if (da2->crtc[LC_COMMAND] & 0x40) {
|
||||
da2_log("Set videomode to PS/55 8 bpp graphics.\n");
|
||||
da2->render = da2_render_color_8bpp;
|
||||
da2->vram_display_mask = DA2_MASK_A000;
|
||||
@@ -2407,9 +2416,11 @@ da2_recalctimings(da2_t *da2)
|
||||
da2->dispontime = TIMER_USEC;
|
||||
if (da2->dispofftime < TIMER_USEC)
|
||||
da2->dispofftime = TIMER_USEC;
|
||||
da2_log("da2 horiz total %i display end %i vidclock %f\n", da2->crtc[0], da2->crtc[1], da2->clock);
|
||||
da2_log("da2 horiz total %i display end %i vidclock %f\n", da2->htotal, da2->hdisp, da2->clock);
|
||||
da2_log("da2 vert total %i display end %i max row %i vsync %i\n",da2->vtotal,da2->dispend,(da2->crtc[9]&31)+1,da2->vsyncstart);
|
||||
da2_log("da2 dispon %lu dispoff %lu on(us) %f off(us) %f\n",da2->dispontime, da2->dispofftime, (double)da2->dispontime / (double)cpuclock / (double) (1ULL << 32) * 1000000.0, (double)da2->dispofftime / (double)cpuclock / (double) (1ULL << 32) * 1000000.0);
|
||||
da2_log("da2 dispon %lu dispoff %lu on(us) %f off(us) %f\n",da2->dispontime, da2->dispofftime,
|
||||
(double)da2->dispontime / (double)cpuclock / (double) (1ULL << 32) * 1000000.0,
|
||||
(double)da2->dispofftime / (double)cpuclock / (double) (1ULL << 32) * 1000000.0);
|
||||
da2_log("da2 linecompare %d\n", da2->split);
|
||||
}
|
||||
|
||||
@@ -3217,6 +3228,13 @@ da2_reset_ioctl(da2_t *da2)
|
||||
da2->ioctl[LS_RESET] = 0x00; /* Bit 0: Reset sequencer */
|
||||
da2_outw(LS_INDEX, 0x0302, da2); /* Index 02, Bit 1: VGA passthrough, Bit 0: Character Mode */
|
||||
da2_outw(LS_INDEX, 0x0008, da2); /* Index 08, Bit 0: Enable MMIO */
|
||||
/* Set default color palette (Windows 3.1 display driver won't reset palette regs) */
|
||||
for (uint16_t i = 0; i < 256; i++) {
|
||||
da2->vgapal[i].r = ps55_palette_color[i & 0x3F][0];
|
||||
da2->vgapal[i].g = ps55_palette_color[i & 0x3F][1];
|
||||
da2->vgapal[i].b = ps55_palette_color[i & 0x3F][2];
|
||||
da2->pallook[i] = makecol32((da2->vgapal[i].r & 0x3f) * 4, (da2->vgapal[i].g & 0x3f) * 4, (da2->vgapal[i].b & 0x3f) * 4);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -3231,7 +3249,7 @@ da2_reset(void *priv)
|
||||
da2->pos_regs[0] = DA2_POSID_L; /* Adapter Identification Byte (Low byte) */
|
||||
da2->pos_regs[1] = DA2_POSID_H; /* Adapter Identification Byte (High byte) */
|
||||
da2->pos_regs[2] = 0x40; /* Bit 7-5: 010=Mono, 100=Color, Bit 0 : Card Enable (set by reference diskette) */
|
||||
da2->ioctl[LS_CONFIG1] = OldLSI | Page_Two; /* Configuration 1 : DA-II, 1024 KB */
|
||||
da2->ioctl[LS_CONFIG1] = Page_Two; /* Configuration 1 : DA-III, 1024 KB */
|
||||
da2->ioctl[LS_CONFIG1] |= ((da2->monitorid & 0x8) << 1); /* Configuration 1 : Monitor ID 3 */
|
||||
da2->ioctl[LS_CONFIG2] = (da2->monitorid & 0x7); /* Configuration 2: Monitor ID 0-2 */
|
||||
da2->fctl[0] = 0x2b; /* 3E3h:0 */
|
||||
@@ -3244,13 +3262,6 @@ da2_reset(void *priv)
|
||||
da2->attrc[LV_CURSOR_CONTROL] = 0x13; /* cursor options */
|
||||
da2->attr_palette_enable = 0; /* disable attribute generator */
|
||||
|
||||
/* Set default color palette (Windows 3.1 display driver won't reset palette) */
|
||||
for (uint16_t i = 0; i < 256; i++) {
|
||||
da2->vgapal[i].r = ps55_palette_color[i & 0x3F][0];
|
||||
da2->vgapal[i].g = ps55_palette_color[i & 0x3F][1];
|
||||
da2->vgapal[i].b = ps55_palette_color[i & 0x3F][2];
|
||||
da2->pallook[i] = makecol32((da2->vgapal[i].r & 0x3f) * 4, (da2->vgapal[i].g & 0x3f) * 4, (da2->vgapal[i].b & 0x3f) * 4);
|
||||
}
|
||||
da2_log("da2_reset done.\n");
|
||||
}
|
||||
|
||||
@@ -3270,7 +3281,7 @@ da2_init(UNUSED(const device_t *info))
|
||||
da2->vram = calloc(1, DA2_SIZE_VRAM);
|
||||
da2->cram = calloc(1, DA2_SIZE_CRAM);
|
||||
da2->vram_display_mask = DA2_MASK_CRAM;
|
||||
da2->monitorid = device_get_config_int("montype");
|
||||
da2->monitorid = device_get_config_int("montype");
|
||||
da2->changedvram = calloc(1, (DA2_MASK_VRAMPLANE + 1) >> 9); /* XX000h */
|
||||
|
||||
da2->mmio.charset = device_get_config_int("charset");
|
||||
@@ -3288,7 +3299,8 @@ da2_init(UNUSED(const device_t *info))
|
||||
}
|
||||
|
||||
mca_add(da2_mca_read, da2_mca_write, da2_mca_feedb, da2_mca_reset, da2);
|
||||
da2->da2const = (uint64_t) ((cpuclock / DA2_PIXELCLOCK) * (double) (1ull << 32));
|
||||
da2->pixelclock = DA2_CLOCK_58MHZ;
|
||||
da2->da2const = (uint64_t) ((cpuclock / DA2_CLOCK_58MHZ) * (double) (1ull << 32));
|
||||
video_inform(VIDEO_FLAG_TYPE_SPECIAL, &timing_da2_mca);
|
||||
memset(da2->bitblt.payload, 0x00, DA2_BLT_MEMSIZE);
|
||||
memset(da2->bitblt.reg, 0xfe, DA2_BLT_REGSIZE * sizeof(uint32_t)); /* clear memory */
|
||||
@@ -3436,7 +3448,7 @@ static void
|
||||
da2_speed_changed(void *priv)
|
||||
{
|
||||
da2_t *da2 = (da2_t *) priv;
|
||||
da2->da2const = (uint64_t) ((cpuclock / DA2_PIXELCLOCK) * (double) (1ull << 32));
|
||||
da2->da2const = (uint64_t) ((cpuclock / da2->pixelclock) * (double) (1ull << 32));
|
||||
da2_recalctimings(da2);
|
||||
}
|
||||
|
||||
|
||||
@@ -11606,6 +11606,14 @@ s3_init(const device_t *info)
|
||||
|
||||
if (vram)
|
||||
vram_size = vram << 20;
|
||||
else if (info->local == S3_86C805_ONBOARD) {
|
||||
vram_size = 1024 << 10;
|
||||
vram = 1;
|
||||
}
|
||||
else if (info->local == S3_PHOENIX_TRIO32_ONBOARD) {
|
||||
vram_size = 1024 << 10;
|
||||
vram = 1;
|
||||
}
|
||||
else
|
||||
vram_size = 512 << 10;
|
||||
|
||||
@@ -12651,6 +12659,36 @@ static const device_config_t s3_trio64v_config[] = {
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
|
||||
static const device_config_t s3_trio64v_onboard_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = NULL,
|
||||
.default_int = 2,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "1 MB", .value = 1 },
|
||||
{ .description = "2 MB", .value = 2 },
|
||||
{ .description = "" }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "colorkey",
|
||||
.description = "Video chroma-keying",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = NULL,
|
||||
.default_int = 1,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = { { 0 } },
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
|
||||
static const device_config_t s3_standard_config[] = {
|
||||
{
|
||||
.name = "memory",
|
||||
@@ -12793,7 +12831,7 @@ const device_t s3_86c805_onboard_vlb_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_9fx_config
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t s3_spea_mirage_86c805_vlb_device = {
|
||||
@@ -13172,7 +13210,7 @@ const device_t s3_phoenix_trio32_onboard_vlb_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_phoenix_trio32_config
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t s3_phoenix_trio32_vlb_device = {
|
||||
@@ -13200,7 +13238,7 @@ const device_t s3_phoenix_trio32_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_phoenix_trio32_config
|
||||
.config = s3_9fx_config
|
||||
};
|
||||
|
||||
const device_t s3_phoenix_trio32_pci_device = {
|
||||
@@ -13270,7 +13308,7 @@ const device_t s3_phoenix_trio64_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_standard_config
|
||||
.config = s3_9fx_config
|
||||
};
|
||||
|
||||
const device_t s3_phoenix_trio64_pci_device = {
|
||||
@@ -13312,7 +13350,7 @@ const device_t s3_phoenix_trio64vplus_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_trio64v_config
|
||||
.config = s3_trio64v_onboard_config
|
||||
};
|
||||
|
||||
const device_t s3_phoenix_trio64vplus_pci_device = {
|
||||
@@ -13494,5 +13532,5 @@ const device_t s3_trio64v2_dx_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = s3_speed_changed,
|
||||
.force_redraw = s3_force_redraw,
|
||||
.config = s3_trio64v_config
|
||||
.config = s3_trio64v_onboard_config
|
||||
};
|
||||
|
||||
@@ -5336,6 +5336,10 @@ s3_virge_init(const device_t *info)
|
||||
virge->dithering_enabled = device_get_config_int("dithering");
|
||||
if (virge->type >= S3_VIRGE_GX2)
|
||||
virge->memory_size = 4;
|
||||
else if (virge->type == S3_VIRGE_325 && info->local & 0x100)
|
||||
virge->memory_size = 2;
|
||||
else if (virge->type == S3_VIRGE_DX && info->local & 0x100)
|
||||
virge->memory_size = 2;
|
||||
else
|
||||
virge->memory_size = device_get_config_int("memory");
|
||||
|
||||
@@ -5749,6 +5753,43 @@ static const device_config_t s3_virge_config[] = {
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
static const device_config_t s3_virge_onboard_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "bilinear",
|
||||
.description = "Bilinear filtering",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 1,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = { { 0 } },
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "colorkey",
|
||||
.description = "Video chroma-keying",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = NULL,
|
||||
.default_int = 1,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = { { 0 } },
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "dithering",
|
||||
.description = "Dithering",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_int = 1,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = { { 0 } },
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
static const device_config_t s3_virge_stb_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
@@ -5933,7 +5974,7 @@ const device_t s3_virge_325_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = s3_virge_speed_changed,
|
||||
.force_redraw = s3_virge_force_redraw,
|
||||
.config = s3_virge_config
|
||||
.config = s3_virge_onboard_config
|
||||
};
|
||||
|
||||
const device_t s3_diamond_stealth_2000_pci_device = {
|
||||
@@ -6017,7 +6058,7 @@ const device_t s3_virge_375_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = s3_virge_speed_changed,
|
||||
.force_redraw = s3_virge_force_redraw,
|
||||
.config = s3_virge_config
|
||||
.config = s3_virge_onboard_config
|
||||
};
|
||||
|
||||
const device_t s3_diamond_stealth_2000pro_pci_device = {
|
||||
|
||||
@@ -4294,7 +4294,7 @@ const device_t tgui9660_onboard_pci_device = {
|
||||
.available = NULL,
|
||||
.speed_changed = tgui_speed_changed,
|
||||
.force_redraw = tgui_force_redraw,
|
||||
.config = tgui96xx_config
|
||||
.config = tgui9440_config
|
||||
};
|
||||
|
||||
const device_t tgui9680_pci_device = {
|
||||
|
||||