Merge remote-tracking branch 'origin/master' into qt-wacom-serial

This commit is contained in:
Cacodemon345
2023-02-24 14:41:00 +06:00
15 changed files with 662 additions and 416 deletions

View File

@@ -49,6 +49,16 @@ Licensing
The emulator can also optionally make use of [munt](https://github.com/munt/munt), [FluidSynth](https://www.fluidsynth.org/), [Ghostscript](https://www.ghostscript.com/) and [Discord Game SDK](https://discord.com/developers/docs/game-sdk/sdk-starter-guide), which are distributed under their respective licenses. The emulator can also optionally make use of [munt](https://github.com/munt/munt), [FluidSynth](https://www.fluidsynth.org/), [Ghostscript](https://www.ghostscript.com/) and [Discord Game SDK](https://discord.com/developers/docs/game-sdk/sdk-starter-guide), which are distributed under their respective licenses.
Contribution requirements
-------------------------
Formal codification of the project's emulated hardware contribution requirements, which all have to be met to accept an addition:
* A ROM must be available;
* Documentation must be available or it must be feasible to reverse engineer with a reasonable amount of time and effort;
* It must be feasible to implement with a reasonable amount of time and effort;
* It has to fall inside the project's scope.
Where unsure or for more details about the project's emulated hardware contribution requirements, contact a Contributor or higher.
Donations Donations
--------- ---------
We do not charge you for the emulator but donations are still welcome: We do not charge you for the emulator but donations are still welcome:

View File

@@ -853,7 +853,7 @@ pc_init_modules(void)
/* Load the ROMs for the selected machine. */ /* Load the ROMs for the selected machine. */
if (!machine_available(machine)) { if (!machine_available(machine)) {
swprintf(temp, sizeof(temp), plat_get_string(IDS_2063), machine_getname()); swprintf(temp, sizeof_w(temp), plat_get_string(IDS_2063), machine_getname());
c = 0; c = 0;
machine = -1; machine = -1;
while (machine_get_internal_name_ex(c) != NULL) { while (machine_get_internal_name_ex(c) != NULL) {
@@ -876,7 +876,7 @@ pc_init_modules(void)
if (!video_card_available(gfxcard[0])) { if (!video_card_available(gfxcard[0])) {
memset(tempc, 0, sizeof(tempc)); memset(tempc, 0, sizeof(tempc));
device_get_name(video_card_getdevice(gfxcard[0]), 0, tempc); device_get_name(video_card_getdevice(gfxcard[0]), 0, tempc);
swprintf(temp, sizeof(temp), plat_get_string(IDS_2064), tempc); swprintf(temp, sizeof_w(temp), plat_get_string(IDS_2064), tempc);
c = 0; c = 0;
while (video_get_internal_name(c) != NULL) { while (video_get_internal_name(c) != NULL) {
gfxcard[0] = -1; gfxcard[0] = -1;
@@ -898,7 +898,7 @@ pc_init_modules(void)
if (!video_card_available(gfxcard[1])) { if (!video_card_available(gfxcard[1])) {
char tempc[512] = { 0 }; char tempc[512] = { 0 };
device_get_name(video_card_getdevice(gfxcard[1]), 0, tempc); device_get_name(video_card_getdevice(gfxcard[1]), 0, tempc);
swprintf(temp, sizeof(temp), (wchar_t *) "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card.", tempc); swprintf(temp, sizeof_w(temp), (wchar_t *) "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card.", tempc);
ui_msgbox_header(MBX_INFO, (wchar_t *) IDS_2129, temp); ui_msgbox_header(MBX_INFO, (wchar_t *) IDS_2129, temp);
gfxcard[1] = 0; gfxcard[1] = 0;
} }

View File

@@ -744,7 +744,7 @@ rop81_l(uint8_t opcode, uint32_t fetchdat, uint32_t op_32, uint32_t op_pc, codeb
host_reg = 0; host_reg = 0;
} else { } else {
SAVE_EA(); SAVE_EA();
MEM_CHECK_WRITE(target_seg); MEM_CHECK_WRITE_L(target_seg);
host_reg = MEM_LOAD_ADDR_EA_L_NO_ABRT(target_seg); host_reg = MEM_LOAD_ADDR_EA_L_NO_ABRT(target_seg);
} }
} else { } else {

View File

@@ -1733,6 +1733,12 @@ xebec_available(void)
return (rom_present(XEBEC_BIOS_FILE)); return (rom_present(XEBEC_BIOS_FILE));
} }
static int
wdxt_available(void)
{
return (rom_present(WDXT_GEN_BIOS_FILE));
}
static int static int
dtc5150x_available(void) dtc5150x_available(void)
{ {
@@ -2141,13 +2147,13 @@ const device_t st506_xt_xebec_device = {
const device_t st506_xt_wdxt_gen_device = { const device_t st506_xt_wdxt_gen_device = {
.name = "Western Digital WDXT-GEN (MFM)", .name = "Western Digital WDXT-GEN (MFM)",
.internal_name = "st506_xt", .internal_name = "st506_xt_gen",
.flags = DEVICE_ISA, .flags = DEVICE_ISA,
.local = (HDD_BUS_MFM << 8) | ST506_XT_TYPE_WDXT_GEN, .local = (HDD_BUS_MFM << 8) | ST506_XT_TYPE_WDXT_GEN,
.init = st506_init, .init = st506_init,
.close = st506_close, .close = st506_close,
.reset = NULL, .reset = NULL,
{ .available = xebec_available }, { .available = wdxt_available },
.speed_changed = NULL, .speed_changed = NULL,
.force_redraw = NULL, .force_redraw = NULL,
.config = NULL .config = NULL

View File

@@ -611,6 +611,7 @@ extern int machine_at_acerv35n_init(const machine_t *);
extern int machine_at_p55t2p4_init(const machine_t *); extern int machine_at_p55t2p4_init(const machine_t *);
extern int machine_at_m7shi_init(const machine_t *); extern int machine_at_m7shi_init(const machine_t *);
extern int machine_at_tc430hx_init(const machine_t *); extern int machine_at_tc430hx_init(const machine_t *);
extern int machine_at_infinia7200_init(const machine_t *);
extern int machine_at_equium5200_init(const machine_t *); extern int machine_at_equium5200_init(const machine_t *);
extern int machine_at_pcv90_init(const machine_t *); extern int machine_at_pcv90_init(const machine_t *);
extern int machine_at_p65up5_cp55t2d_init(const machine_t *); extern int machine_at_p65up5_cp55t2d_init(const machine_t *);

View File

@@ -199,6 +199,42 @@ machine_at_tc430hx_init(const machine_t *model)
pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3); pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
device_add(&s3_virge_375_pci_device);
device_add(&i430hx_device);
device_add(&piix3_device);
device_add(&keyboard_ps2_ami_pci_device);
device_add(&pc87306_device);
device_add(&intel_flash_bxt_ami_device);
return ret;
}
int
machine_at_infinia7200_init(const machine_t *model)
{
int ret;
ret = bios_load_linear_combined2("roms/machines/infinia7200/1008DH08.BIO",
"roms/machines/infinia7200/1008DH08.BI1",
"roms/machines/infinia7200/1008DH08.BI2",
"roms/machines/infinia7200/1008DH08.BI3",
"roms/machines/infinia7200/1008DH08.RCV",
0x3a000, 128);
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x08, PCI_CARD_VIDEO, 4, 0, 0, 0);
pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2);
pci_register_slot(0x10, PCI_CARD_NORMAL, 4, 1, 2, 3);
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
device_add(&s3_virge_375_pci_device);
device_add(&i430hx_device); device_add(&i430hx_device);
device_add(&piix3_device); device_add(&piix3_device);
device_add(&keyboard_ps2_ami_pci_device); device_add(&keyboard_ps2_ami_pci_device);

View File

@@ -37,6 +37,7 @@
#include <86box/pit.h> #include <86box/pit.h>
#include <86box/mem.h> #include <86box/mem.h>
#include <86box/device.h> #include <86box/device.h>
#include <86box/gameport.h>
#include <86box/serial.h> #include <86box/serial.h>
#include <86box/keyboard.h> #include <86box/keyboard.h>
#include <86box/rom.h> #include <86box/rom.h>
@@ -815,5 +816,8 @@ machine_pcjr_init(const machine_t *model)
device_add(&ns8250_pcjr_device); device_add(&ns8250_pcjr_device);
serial_set_next_inst(SERIAL_MAX); /* So that serial_standalone_init() won't do anything. */ serial_set_next_inst(SERIAL_MAX); /* So that serial_standalone_init() won't do anything. */
/* "All the inputs are 'read' with one 'IN' from address hex 201." - PCjr Technical Reference (Nov. 83), p.2-119 */
standalone_gameport_type = &gameport_201_device;
return ret; return ret;
} }

View File

@@ -8584,7 +8584,7 @@ const machine_t machines[] = {
{ {
.name = "[i430FX] DataExpert EXP8551", .name = "[i430FX] DataExpert EXP8551",
.internal_name = "exp8551", .internal_name = "exp8551",
.type = MACHINE_TYPE_SOCKET5, .type = MACHINE_TYPE_SOCKET7_3V,
.chipset = MACHINE_CHIPSET_INTEL_430FX, .chipset = MACHINE_CHIPSET_INTEL_430FX,
.init = machine_at_exp8551_init, .init = machine_at_exp8551_init,
.pad = 0, .pad = 0,
@@ -8906,7 +8906,7 @@ const machine_t machines[] = {
{ {
.name = "[i430FX] PC Partner MB500N", .name = "[i430FX] PC Partner MB500N",
.internal_name = "mb500n", .internal_name = "mb500n",
.type = MACHINE_TYPE_SOCKET5, .type = MACHINE_TYPE_SOCKET7_3V,
.chipset = MACHINE_CHIPSET_INTEL_430FX, .chipset = MACHINE_CHIPSET_INTEL_430FX,
.init = machine_at_mb500n_init, .init = machine_at_mb500n_init,
.pad = 0, .pad = 0,
@@ -9447,7 +9447,47 @@ const machine_t machines[] = {
.max_multi = 3.0 .max_multi = 3.0
}, },
.bus_flags = MACHINE_PS2_PCI, .bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI, .flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI,
.ram = {
.min = 8192,
.max = 131072,
.step = 8192
},
.nvrmask = 255,
.kbc_device = NULL,
.kbc_p1 = 0,
.gpio = 0,
.device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = NULL,
.net_device = NULL
},
/* OEM version of Intel TC430HX, has AMI MegaKey KBC firmware on the PC87306
Super I/O chip */
{
.name = "[i430HX] Toshiba Infinia 7200",
.internal_name = "infinia7200",
.type = MACHINE_TYPE_SOCKET7,
.chipset = MACHINE_CHIPSET_INTEL_430HX,
.init = machine_at_infinia7200_init,
.pad = 0,
.pad0 = 0,
.pad1 = MACHINE_AVAILABLE,
.pad2 = 0,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK_NONE,
.min_bus = 50000000,
.max_bus = 66666667,
.min_voltage = 2800,
.max_voltage = 3520,
.min_multi = 1.5,
.max_multi = 3.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_VIDEO | MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI,
.ram = { .ram = {
.min = 8192, .min = 8192,
.max = 131072, .max = 131072,

View File

@@ -6,20 +6,20 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>831</width> <width>800</width>
<height>595</height> <height>570</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>831</width> <width>800</width>
<height>595</height> <height>570</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>831</width> <width>800</width>
<height>595</height> <height>570</height>
</size> </size>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -29,6 +29,12 @@
<item> <item>
<widget class="QWidget" name="widget" native="true"> <widget class="QWidget" name="widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,3"> <layout class="QHBoxLayout" name="horizontalLayout" stretch="1,3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<item> <item>
<widget class="QListView" name="listView"> <widget class="QListView" name="listView">
<property name="viewMode"> <property name="viewMode">

View File

@@ -13,7 +13,7 @@
<property name="windowTitle"> <property name="windowTitle">
<string>Form</string> <string>Form</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout" columnstretch="2,1,1">
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>0</number>
</property> </property>
@@ -26,14 +26,108 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item row="3" column="0" colspan="2"> <item row="1" column="2">
<widget class="QPushButton" name="pushButtonConfigure">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxXga">
<property name="text">
<string>XGA</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Video:</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QComboBox" name="comboBoxVideo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QPushButton" name="pushButtonConfigureVoodoo">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Video #2:</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QCheckBox" name="checkBox8514"> <widget class="QCheckBox" name="checkBox8514">
<property name="text"> <property name="text">
<string>8514/A</string> <string>8514/A</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxVoodoo">
<property name="text">
<string>Voodoo Graphics</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QPushButton" name="pushButtonConfigureXga">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="pushButtonConfigureSecondary">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QComboBox" name="comboBoxVideoSecondary">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="7" column="0" colspan="3">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@@ -46,74 +140,6 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="0" column="1">
<widget class="QComboBox" name="comboBoxVideo"/>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pushButtonConfigure">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxVoodoo">
<property name="text">
<string>Voodoo Graphics</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="pushButtonConfigureVoodoo">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Video:</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxXga">
<property name="text">
<string>XGA</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QPushButton" name="pushButtonConfigureXga">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Video #2:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBoxVideoSecondary"/>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pushButtonConfigureSecondary">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<resources/> <resources/>

View File

@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>548</width> <width>548</width>
<height>458</height> <height>488</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -27,302 +27,426 @@
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
<widget class="QGroupBox" name="groupBox"> <widget class="QTabWidget" name="tabWidget">
<property name="title"> <property name="currentIndex">
<string>Network Interface Contollers</string> <number>0</number>
</property> </property>
<layout class="QGridLayout" name="gridLayout_3"> <widget class="QWidget" name="tab_1">
<item row="0" column="4"> <attribute name="title">
<widget class="QLabel" name="label_7"> <string>Network Card #1</string>
<property name="sizePolicy"> </attribute>
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> <layout class="QGridLayout" name="gridLayout_3">
<horstretch>0</horstretch> <item row="2" column="1">
<verstretch>0</verstretch> <widget class="QComboBox" name="comboBoxNIC1">
</sizepolicy> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<property name="text"> <horstretch>0</horstretch>
<string>Adapter</string> <verstretch>0</verstretch>
</property> </sizepolicy>
</widget> </property>
</item> <property name="sizeAdjustPolicy">
<item row="4" column="3"> <enum>QComboBox::AdjustToContents</enum>
<widget class="QComboBox" name="comboBoxIntf4"> </property>
<property name="sizePolicy"> </widget>
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> </item>
<horstretch>0</horstretch> <item row="2" column="0">
<verstretch>0</verstretch> <widget class="QLabel" name="label_7">
</sizepolicy> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
</widget> <horstretch>0</horstretch>
</item> <verstretch>0</verstretch>
<item row="3" column="3"> </sizepolicy>
<widget class="QComboBox" name="comboBoxIntf3"> </property>
<property name="sizePolicy"> <property name="text">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <string>Adapter</string>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> </widget>
</sizepolicy> </item>
</property> <item row="0" column="1" colspan="2">
</widget> <widget class="QComboBox" name="comboBoxNet1">
</item> <property name="sizePolicy">
<item row="3" column="5"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<widget class="QPushButton" name="pushButtonConf3"> <horstretch>0</horstretch>
<property name="sizePolicy"> <verstretch>0</verstretch>
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> </sizepolicy>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> </widget>
</sizepolicy> </item>
</property> <item row="2" column="2">
<property name="text"> <widget class="QPushButton" name="pushButtonConf1">
<string>Configure</string> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
</widget> <horstretch>0</horstretch>
</item> <verstretch>0</verstretch>
<item row="1" column="2"> </sizepolicy>
<widget class="QComboBox" name="comboBoxNet1"> </property>
<property name="sizePolicy"> <property name="text">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <string>Configure</string>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> </widget>
</sizepolicy> </item>
</property> <item row="1" column="0">
</widget> <widget class="QLabel" name="label_2">
</item> <property name="sizePolicy">
<item row="3" column="0"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<widget class="QLabel" name="label_6"> <horstretch>0</horstretch>
<property name="sizePolicy"> <verstretch>0</verstretch>
<sizepolicy hsizetype="Maximum" vsizetype="Preferred"> </sizepolicy>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="text">
</sizepolicy> <string>Interface</string>
</property> </property>
<property name="text"> </widget>
<string>Card 3:</string> </item>
</property> <item row="0" column="0">
</widget> <widget class="QLabel" name="label">
</item> <property name="sizePolicy">
<item row="4" column="4"> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<widget class="QComboBox" name="comboBoxNIC4"> <horstretch>0</horstretch>
<property name="sizePolicy"> <verstretch>0</verstretch>
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> </sizepolicy>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> <property name="text">
</sizepolicy> <string>Mode</string>
</property> </property>
<property name="sizeAdjustPolicy"> </widget>
<enum>QComboBox::AdjustToContents</enum> </item>
</property> <item row="1" column="1" colspan="2">
</widget> <widget class="QComboBox" name="comboBoxIntf1">
</item> <property name="sizePolicy">
<item row="1" column="0"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<widget class="QLabel" name="label_3"> <horstretch>0</horstretch>
<property name="sizePolicy"> <verstretch>0</verstretch>
<sizepolicy hsizetype="Maximum" vsizetype="Preferred"> </sizepolicy>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> </widget>
</sizepolicy> </item>
</property> <item row="3" column="1">
<property name="text"> <spacer name="verticalSpacer_2">
<string>Card 1:</string> <property name="orientation">
</property> <enum>Qt::Vertical</enum>
</widget> </property>
</item> <property name="sizeHint" stdset="0">
<item row="0" column="3"> <size>
<widget class="QLabel" name="label_2"> <width>20</width>
<property name="sizePolicy"> <height>40</height>
<sizepolicy hsizetype="Maximum" vsizetype="Preferred"> </size>
<horstretch>0</horstretch> </property>
<verstretch>0</verstretch> </spacer>
</sizepolicy> </item>
</property> </layout>
<property name="text"> </widget>
<string>Interface</string> <widget class="QWidget" name="tab_2">
</property> <attribute name="title">
</widget> <string>Network Card #2</string>
</item> </attribute>
<item row="1" column="4"> <layout class="QGridLayout" name="gridLayout">
<widget class="QComboBox" name="comboBoxNIC1"> <item row="1" column="0">
<property name="sizePolicy"> <widget class="QLabel" name="label_9">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <property name="sizePolicy">
<horstretch>0</horstretch> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<verstretch>0</verstretch> <horstretch>0</horstretch>
</sizepolicy> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="sizeAdjustPolicy"> </property>
<enum>QComboBox::AdjustToContents</enum> <property name="text">
</property> <string>Interface</string>
</widget> </property>
</item> </widget>
<item row="1" column="5"> </item>
<widget class="QPushButton" name="pushButtonConf1"> <item row="0" column="0">
<property name="sizePolicy"> <widget class="QLabel" name="label_8">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <property name="sizePolicy">
<horstretch>0</horstretch> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<verstretch>0</verstretch> <horstretch>0</horstretch>
</sizepolicy> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="text"> </property>
<string>Configure</string> <property name="text">
</property> <string>Mode</string>
</widget> </property>
</item> </widget>
<item row="3" column="4"> </item>
<widget class="QComboBox" name="comboBoxNIC3"> <item row="2" column="0">
<property name="sizePolicy"> <widget class="QLabel" name="label_10">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> <property name="sizePolicy">
<horstretch>0</horstretch> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<verstretch>0</verstretch> <horstretch>0</horstretch>
</sizepolicy> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="sizeAdjustPolicy"> </property>
<enum>QComboBox::AdjustToContents</enum> <property name="text">
</property> <string>Adapter</string>
</widget> </property>
</item> </widget>
<item row="4" column="2"> </item>
<widget class="QComboBox" name="comboBoxNet4"> <item row="2" column="1">
<property name="sizePolicy"> <widget class="QComboBox" name="comboBoxNIC2">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <property name="sizePolicy">
<horstretch>0</horstretch> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<verstretch>0</verstretch> <horstretch>0</horstretch>
</sizepolicy> <verstretch>0</verstretch>
</property> </sizepolicy>
</widget> </property>
</item> <property name="sizeAdjustPolicy">
<item row="4" column="0"> <enum>QComboBox::AdjustToContents</enum>
<widget class="QLabel" name="label_5"> </property>
<property name="sizePolicy"> </widget>
<sizepolicy hsizetype="Maximum" vsizetype="Preferred"> </item>
<horstretch>0</horstretch> <item row="0" column="1" colspan="2">
<verstretch>0</verstretch> <widget class="QComboBox" name="comboBoxNet2">
</sizepolicy> <property name="sizePolicy">
</property> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<property name="text"> <horstretch>0</horstretch>
<string>Card 4:</string> <verstretch>0</verstretch>
</property> </sizepolicy>
</widget> </property>
</item> </widget>
<item row="0" column="2"> </item>
<widget class="QLabel" name="label"> <item row="1" column="1" colspan="2">
<property name="sizePolicy"> <widget class="QComboBox" name="comboBoxIntf2">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred"> <property name="sizePolicy">
<horstretch>0</horstretch> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<verstretch>0</verstretch> <horstretch>0</horstretch>
</sizepolicy> <verstretch>0</verstretch>
</property> </sizepolicy>
<property name="text"> </property>
<string>Mode</string> </widget>
</property> </item>
</widget> <item row="2" column="2">
</item> <widget class="QPushButton" name="pushButtonConf2">
<item row="2" column="0"> <property name="text">
<widget class="QLabel" name="label_4"> <string>Configure</string>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="Maximum" vsizetype="Preferred"> </widget>
<horstretch>0</horstretch> </item>
<verstretch>0</verstretch> <item row="3" column="1">
</sizepolicy> <spacer name="verticalSpacer">
</property> <property name="orientation">
<property name="text"> <enum>Qt::Vertical</enum>
<string>Card 2:</string> </property>
</property> <property name="sizeHint" stdset="0">
</widget> <size>
</item> <width>20</width>
<item row="3" column="2"> <height>40</height>
<widget class="QComboBox" name="comboBoxNet3"> </size>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> </spacer>
<horstretch>0</horstretch> </item>
<verstretch>0</verstretch> </layout>
</sizepolicy> </widget>
</property> <widget class="QWidget" name="tab_3">
</widget> <attribute name="title">
</item> <string>Network Card #3</string>
<item row="2" column="2"> </attribute>
<widget class="QComboBox" name="comboBoxNet2"> <layout class="QGridLayout" name="gridLayout_2">
<property name="sizePolicy"> <item row="0" column="1" colspan="2">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <widget class="QComboBox" name="comboBoxNet3">
<horstretch>0</horstretch> <property name="sizePolicy">
<verstretch>0</verstretch> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
</sizepolicy> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
</widget> </sizepolicy>
</item> </property>
<item row="2" column="5"> </widget>
<widget class="QPushButton" name="pushButtonConf2"> </item>
<property name="sizePolicy"> <item row="2" column="0">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <widget class="QLabel" name="label_13">
<horstretch>0</horstretch> <property name="sizePolicy">
<verstretch>0</verstretch> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
</sizepolicy> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="text"> </sizepolicy>
<string>Configure</string> </property>
</property> <property name="text">
</widget> <string>Adapter</string>
</item> </property>
<item row="4" column="5"> </widget>
<widget class="QPushButton" name="pushButtonConf4"> </item>
<property name="sizePolicy"> <item row="0" column="0">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <widget class="QLabel" name="label_11">
<horstretch>0</horstretch> <property name="sizePolicy">
<verstretch>0</verstretch> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
</sizepolicy> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
<property name="text"> </sizepolicy>
<string>Configure</string> </property>
</property> <property name="text">
</widget> <string>Mode</string>
</item> </property>
<item row="1" column="3"> </widget>
<widget class="QComboBox" name="comboBoxIntf1"> </item>
<property name="sizePolicy"> <item row="1" column="0">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> <widget class="QLabel" name="label_12">
<horstretch>0</horstretch> <property name="sizePolicy">
<verstretch>0</verstretch> <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
</sizepolicy> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
</widget> </sizepolicy>
</item> </property>
<item row="2" column="3"> <property name="text">
<widget class="QComboBox" name="comboBoxIntf2"> <string>Interface</string>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="Maximum" vsizetype="Fixed"> </widget>
<horstretch>0</horstretch> </item>
<verstretch>0</verstretch> <item row="1" column="1" colspan="2">
</sizepolicy> <widget class="QComboBox" name="comboBoxIntf3">
</property> <property name="sizePolicy">
</widget> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
</item> <horstretch>0</horstretch>
<item row="2" column="4"> <verstretch>0</verstretch>
<widget class="QComboBox" name="comboBoxNIC2"> </sizepolicy>
<property name="sizePolicy"> </property>
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> </widget>
<horstretch>0</horstretch> </item>
<verstretch>0</verstretch> <item row="2" column="2">
</sizepolicy> <widget class="QPushButton" name="pushButtonConf3">
</property> <property name="sizePolicy">
<property name="sizeAdjustPolicy"> <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<enum>QComboBox::AdjustToContents</enum> <horstretch>0</horstretch>
</property> <verstretch>0</verstretch>
</widget> </sizepolicy>
</item> </property>
</layout> <property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboBoxNIC3">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Network Card #4</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_4">
<item row="2" column="1">
<widget class="QComboBox" name="comboBoxNIC4">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="pushButtonConf4">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="2">
<widget class="QComboBox" name="comboBoxNet4">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_15">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Interface</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_16">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Adapter</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="2">
<widget class="QComboBox" name="comboBoxIntf4">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_14">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Mode</string>
</property>
</widget>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget> </widget>
</item> </item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
<resources/> <resources/>

View File

@@ -4181,10 +4181,13 @@ s3_virge_init(const device_t *info)
s3_virge_overlay_draw); s3_virge_overlay_draw);
virge->svga.hwcursor.cur_ysize = 64; virge->svga.hwcursor.cur_ysize = 64;
if (info->local == S3_VIRGE_GX2) if (bios_fn != NULL)
rom_init(&virge->bios_rom, (char *) bios_fn, 0xc0000, 0x10000, 0xffff, 0, MEM_MAPPING_EXTERNAL); {
else if (info->local == S3_VIRGE_GX2)
rom_init(&virge->bios_rom, (char *) bios_fn, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL); rom_init(&virge->bios_rom, (char *) bios_fn, 0xc0000, 0x10000, 0xffff, 0, MEM_MAPPING_EXTERNAL);
else
rom_init(&virge->bios_rom, (char *) bios_fn, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
}
mem_mapping_disable(&virge->bios_rom.mapping); mem_mapping_disable(&virge->bios_rom.mapping);

View File

@@ -14,6 +14,7 @@
* *
* Copyright 2008-2020 Sarah Walker. * Copyright 2008-2020 Sarah Walker.
*/ */
#include <assert.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <stdint.h> #include <stdint.h>
@@ -2267,9 +2268,10 @@ banshee_overlay_draw(svga_t *svga, int displine)
case VIDPROCCFG_FILTER_MODE_DITHER_4X4: case VIDPROCCFG_FILTER_MODE_DITHER_4X4:
if (banshee->voodoo->scrfilter && banshee->voodoo->scrfilterEnabled) { if (banshee->voodoo->scrfilter && banshee->voodoo->scrfilterEnabled) {
uint8_t *fil = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t fil[64 * 3];
uint8_t *fil3 = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t fil3[64 * 3];
assert(svga->overlay_latch.cur_xsize <= 64);
if (banshee->vidProcCfg & VIDPROCCFG_H_SCALE_ENABLE) /* leilei HACK - don't know of real 4x1 hscaled behavior yet, double for now */ if (banshee->vidProcCfg & VIDPROCCFG_H_SCALE_ENABLE) /* leilei HACK - don't know of real 4x1 hscaled behavior yet, double for now */
{ {
for (x = 0; x < svga->overlay_latch.cur_xsize; x++) { for (x = 0; x < svga->overlay_latch.cur_xsize; x++) {
@@ -2320,9 +2322,6 @@ banshee_overlay_draw(svga_t *svga, int displine)
fil[(x) *3 + 2] = vb_filter_v1_rb[fil[x * 3 + 2]][fil3[(x + 1) * 3 + 2]]; fil[(x) *3 + 2] = vb_filter_v1_rb[fil[x * 3 + 2]][fil3[(x + 1) * 3 + 2]];
p[x] = (fil[x * 3 + 2] << 16) | (fil[x * 3 + 1] << 8) | fil[x * 3]; p[x] = (fil[x * 3 + 2] << 16) | (fil[x * 3 + 1] << 8) | fil[x * 3];
} }
free(fil);
free(fil3);
} else /* filter disabled by emulator option */ } else /* filter disabled by emulator option */
{ {
if (banshee->vidProcCfg & VIDPROCCFG_H_SCALE_ENABLE) { if (banshee->vidProcCfg & VIDPROCCFG_H_SCALE_ENABLE) {
@@ -2339,15 +2338,16 @@ banshee_overlay_draw(svga_t *svga, int displine)
case VIDPROCCFG_FILTER_MODE_DITHER_2X2: case VIDPROCCFG_FILTER_MODE_DITHER_2X2:
if (banshee->voodoo->scrfilter && banshee->voodoo->scrfilterEnabled) { if (banshee->voodoo->scrfilter && banshee->voodoo->scrfilterEnabled) {
uint8_t *fil = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t fil[64 * 3];
uint8_t *soak = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t soak[64 * 3];
uint8_t *soak2 = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t soak2[64 * 3];
uint8_t *samp1 = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t samp1[64 * 3];
uint8_t *samp2 = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t samp2[64 * 3];
uint8_t *samp3 = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t samp3[64 * 3];
uint8_t *samp4 = malloc((svga->overlay_latch.cur_xsize) * 3); uint8_t samp4[64 * 3];
assert(svga->overlay_latch.cur_xsize <= 64);
src = &svga->vram[src_addr2 & svga->vram_mask]; src = &svga->vram[src_addr2 & svga->vram_mask];
OVERLAY_SAMPLE(banshee->overlay_buffer[1]); OVERLAY_SAMPLE(banshee->overlay_buffer[1]);
for (x = 0; x < svga->overlay_latch.cur_xsize; x++) { for (x = 0; x < svga->overlay_latch.cur_xsize; x++) {
@@ -2395,14 +2395,6 @@ banshee_overlay_draw(svga_t *svga, int displine)
p[x] = (fil[x * 3 + 2] << 16) | (fil[x * 3 + 1] << 8) | fil[x * 3]; p[x] = (fil[x * 3 + 2] << 16) | (fil[x * 3 + 1] << 8) | fil[x * 3];
} }
} }
free(fil);
free(soak);
free(soak2);
free(samp1);
free(samp2);
free(samp3);
free(samp4);
} else /* filter disabled by emulator option */ } else /* filter disabled by emulator option */
{ {
if (banshee->vidProcCfg & VIDPROCCFG_H_SCALE_ENABLE) { if (banshee->vidProcCfg & VIDPROCCFG_H_SCALE_ENABLE) {

View File

@@ -14,6 +14,7 @@
* *
* Copyright 2008-2020 Sarah Walker. * Copyright 2008-2020 Sarah Walker.
*/ */
#include <assert.h>
#include <stdarg.h> #include <stdarg.h>
#include <stdio.h> #include <stdio.h>
#include <stdint.h> #include <stdint.h>
@@ -373,8 +374,9 @@ voodoo_filterline_v1(voodoo_t *voodoo, uint8_t *fil, int column, uint16_t *src,
int x; int x;
// Scratchpad for avoiding feedback streaks // Scratchpad for avoiding feedback streaks
uint8_t *fil3 = malloc((voodoo->h_disp) * 3); uint8_t fil3[4096 * 3];
assert(voodoo->h_disp <= 4096);
/* 16 to 32-bit */ /* 16 to 32-bit */
for (x = 0; x < column; x++) { for (x = 0; x < column; x++) {
fil[x * 3] = ((src[x] & 31) << 3); fil[x * 3] = ((src[x] & 31) << 3);
@@ -422,8 +424,6 @@ voodoo_filterline_v1(voodoo_t *voodoo, uint8_t *fil, int column, uint16_t *src,
fil[(x) *3 + 1] = voodoo->thefilterg[fil3[x * 3 + 1]][fil3[(x + 1) * 3 + 1]]; fil[(x) *3 + 1] = voodoo->thefilterg[fil3[x * 3 + 1]][fil3[(x + 1) * 3 + 1]];
fil[(x) *3 + 2] = voodoo->thefilter[fil3[x * 3 + 2]][fil3[(x + 1) * 3 + 2]]; fil[(x) *3 + 2] = voodoo->thefilter[fil3[x * 3 + 2]][fil3[(x + 1) * 3 + 2]];
} }
free(fil3);
} }
static void static void
@@ -432,8 +432,9 @@ voodoo_filterline_v2(voodoo_t *voodoo, uint8_t *fil, int column, uint16_t *src,
int x; int x;
// Scratchpad for blending filter // Scratchpad for blending filter
uint8_t *fil3 = malloc((voodoo->h_disp) * 3); uint8_t fil3[4096 * 3];
assert(voodoo->h_disp <= 4096);
/* 16 to 32-bit */ /* 16 to 32-bit */
for (x = 0; x < column; x++) { for (x = 0; x < column; x++) {
// Blank scratchpads // Blank scratchpads
@@ -487,8 +488,6 @@ voodoo_filterline_v2(voodoo_t *voodoo, uint8_t *fil, int column, uint16_t *src,
fil3[(column - 1) * 3] = voodoo->thefilterb[fil[(column - 1) * 3]][((src[column] & 31) << 3)]; fil3[(column - 1) * 3] = voodoo->thefilterb[fil[(column - 1) * 3]][((src[column] & 31) << 3)];
fil3[(column - 1) * 3 + 1] = voodoo->thefilterg[fil[(column - 1) * 3 + 1]][(((src[column] >> 5) & 63) << 2)]; fil3[(column - 1) * 3 + 1] = voodoo->thefilterg[fil[(column - 1) * 3 + 1]][(((src[column] >> 5) & 63) << 2)];
fil3[(column - 1) * 3 + 2] = voodoo->thefilter[fil[(column - 1) * 3 + 2]][(((src[column] >> 11) & 31) << 3)]; fil3[(column - 1) * 3 + 2] = voodoo->thefilter[fil[(column - 1) * 3 + 2]][(((src[column] >> 11) & 31) << 3)];
free(fil3);
} }
void void
@@ -537,8 +536,9 @@ voodoo_callback(void *p)
monitor->target_buffer->line[voodoo->line + 8][x] = 0x00000000; monitor->target_buffer->line[voodoo->line + 8][x] = 0x00000000;
if (voodoo->scrfilter && voodoo->scrfilterEnabled) { if (voodoo->scrfilter && voodoo->scrfilterEnabled) {
uint8_t *fil = malloc((voodoo->h_disp) * 3); /* interleaved 24-bit RGB */ uint8_t fil[4096 * 3]; /* interleaved 24-bit RGB */
assert(voodoo->h_disp <= 4096);
if (voodoo->type == VOODOO_2) if (voodoo->type == VOODOO_2)
voodoo_filterline_v2(voodoo, fil, voodoo->h_disp, src, voodoo->line); voodoo_filterline_v2(voodoo, fil, voodoo->h_disp, src, voodoo->line);
else else
@@ -547,8 +547,6 @@ voodoo_callback(void *p)
for (x = 0; x < voodoo->h_disp; x++) { for (x = 0; x < voodoo->h_disp; x++) {
p[x] = (voodoo->clutData256[fil[x * 3]].b << 0 | voodoo->clutData256[fil[x * 3 + 1]].g << 8 | voodoo->clutData256[fil[x * 3 + 2]].r << 16); p[x] = (voodoo->clutData256[fil[x * 3]].b << 0 | voodoo->clutData256[fil[x * 3 + 1]].g << 8 | voodoo->clutData256[fil[x * 3 + 2]].r << 16);
} }
free(fil);
} else { } else {
for (x = 0; x < voodoo->h_disp; x++) { for (x = 0; x < voodoo->h_disp; x++) {
p[x] = draw_voodoo->video_16to32[src[x]]; p[x] = draw_voodoo->video_16to32[src[x]];

View File

@@ -43,9 +43,9 @@ AboutDialogCreate(HWND hwnd)
}; };
wchar_t emu_version[256]; wchar_t emu_version[256];
i = swprintf(emu_version, sizeof(emu_version), L"%ls v%ls", EMU_NAME_W, EMU_VERSION_FULL_W); i = swprintf(emu_version, sizeof_w(emu_version), L"%ls v%ls", EMU_NAME_W, EMU_VERSION_FULL_W);
#ifdef EMU_GIT_HASH #ifdef EMU_GIT_HASH
i += swprintf(&emu_version[i], sizeof(emu_version) - i, L" [%ls]", EMU_GIT_HASH_W); i += swprintf(&emu_version[i], sizeof_w(emu_version) - i, L" [%ls]", EMU_GIT_HASH_W);
#endif #endif
#if defined(__arm__) || defined(__TARGET_ARCH_ARM) #if defined(__arm__) || defined(__TARGET_ARCH_ARM)
@@ -59,7 +59,7 @@ AboutDialogCreate(HWND hwnd)
#else #else
# define ARCH_STR L"unknown" # define ARCH_STR L"unknown"
#endif #endif
swprintf(&emu_version[i], sizeof(emu_version) - i, L" [%ls, %ls]", ARCH_STR, plat_get_string(IDS_DYNAREC)); swprintf(&emu_version[i], sizeof_w(emu_version) - i, L" [%ls, %ls]", ARCH_STR, plat_get_string(IDS_DYNAREC));
tdconfig.cbSize = sizeof(tdconfig); tdconfig.cbSize = sizeof(tdconfig);
tdconfig.hwndParent = hwnd; tdconfig.hwndParent = hwnd;