Merge NP21/W rev.48,49

This commit is contained in:
Tomohiro Yoshidomi 2018-12-11 02:25:53 +09:00
parent 24bc441181
commit 98841f9009
57 changed files with 1674 additions and 795 deletions

View File

@ -1,6 +1,6 @@
Neko Project II 0.86 kai rev.17
Neko Project II 0.86 kai rev.18
===
Nov 29, 2018
Dec 10, 2018
Build SDL2 port
---
@ -601,6 +601,8 @@ WAB Type normally uses 'PC-9821Xe10,Xa7e,Xb10 built-in'.
Release
---
* Dec 10, 2018 (rev.18)
- Merge NP21/W 0.86 rev.48,49
* Nov 29, 2018
- Add MIDI support
* Nov 25, 2018

View File

@ -379,6 +379,7 @@ void bios_initialize(void) {
mem[ITF_ADRS + 5924] = 0x90;
}
#endif
np2cfg.memchkmx = 0; // 無効化 (obsolete)
if(np2cfg.memchkmx){ // メモリカウント最大値変更
mem[ITF_ADRS + 6057] = mem[ITF_ADRS + 6061] = (UINT8)np2max((int)np2cfg.memchkmx-14, 1); // XXX: 場所決め打ち
}else{
@ -603,7 +604,7 @@ UINT MEMCALL biosfunc(UINT32 adrs) {
// 高速メモリチェック
if (CPU_ITFBANK && adrs == 0xf9724) {
UINT16 subvalue = LOADINTELWORD((mem + ITF_ADRS + 5886)) / 128;
UINT16 memaddr = cpu_codefetch_w(CPU_EIP);
UINT16 memaddr = MEMP_READ16(CPU_EIP);
UINT16 counter = MEMR_READ16(CPU_SS, CPU_EBP + 6);
if(subvalue == 0) subvalue = 1;
if(counter >= subvalue){

View File

@ -961,9 +961,9 @@ void bios0x18(void) {
#if defined(BIOS_IO_EMULATION) && defined(CPUCORE_IA32)
// np21w ver0.86 rev47 BIOS I/O emulation
if (CPU_STAT_PM && CPU_STAT_VM86) {
biosioemu_push8(0x43, 0x3a);
biosioemu_push8(0x43, 0x32);
biosioemu_push8(0x43, 0x16);
biosioemu_enq8(0x43, 0x3a);
biosioemu_enq8(0x43, 0x32);
biosioemu_enq8(0x43, 0x16);
ZeroMemory(mem + 0x00502, 0x20);
ZeroMemory(mem + 0x00528, 0x13);
SETBIOSMEM16(MEMW_KB_SHIFT_TBL, 0x0e00);

View File

@ -28,7 +28,7 @@ void bios0x1c(void) {
SETBIOSMEM16(0x0001c, CPU_BX);
SETBIOSMEM16(0x0001e, CPU_ES);
SETBIOSMEM16(0x0058a, CPU_CX);
#if defined(BIOS_IO_EMULATION)
#if defined(BIOS_IO_EMULATION) && defined(CPUCORE_IA32)
if (CPU_STAT_PM && CPU_STAT_VM86) {
biosioemu_enq8(0x77, 0x36);
} else
@ -39,7 +39,7 @@ void bios0x1c(void) {
/*FALLTHROUGH*/
case 0x03: // continue interval timer
#if defined(BIOS_IO_EMULATION)
#if defined(BIOS_IO_EMULATION) && defined(CPUCORE_IA32)
if (CPU_STAT_PM && CPU_STAT_VM86) {
biosioemu_enq8(0x71, 0x00);
if (pccore.cpumode & CPUMODE_8MHZ) {

View File

@ -342,6 +342,7 @@ void gpibio_reset(const NP2CFG *pConfig) {
if (fh != FILEH_INVALID) {
// GP-IB BIOS
if (file_read(fh, mem + 0x0d4000, 0x2000) == 0x2000) {
CPU_RAM_D000 &= ~(0x3 << 4);
TRACEOUT(("load gpib.rom"));
}else{
//CopyMemory(mem + 0x0d4000, gpibbios, sizeof(gpibbios));

View File

@ -1891,6 +1891,7 @@ void ideio_reset(const NP2CFG *pConfig) {
CopyMemory(mem + 0xd8000, idebios, sizeof(idebios));
TRACEOUT(("use simulate ide.rom"));
}
CPU_RAM_D000 &= ~(0x3 << 8);
//if(ideio.bios==IDETC_NOBIOS){
// UINT16 param_2[] = {0x0598, 0x05b1, 0x058c, 0x058e};

View File

@ -44,7 +44,9 @@ static const OEMCHAR *str_cl_gd54xx_type[] = {
OEMTEXT("PC-9821Xe10,Xa7e,Xb10 built-in"),
OEMTEXT("PC-9821Cb2 built-in"),
OEMTEXT("PC-9821Cx2 built-in"),
#ifdef SUPPORT_PCI
OEMTEXT("PC-9821 PCI CL-GD5446 built-in"),
#endif
OEMTEXT("MELCO WAB-S"),
OEMTEXT("MELCO WSN-A2F"),
OEMTEXT("MELCO WSN-A4F"),
@ -52,9 +54,14 @@ static const OEMCHAR *str_cl_gd54xx_type[] = {
OEMTEXT("I-O DATA GA-98NBII"),
OEMTEXT("I-O DATA GA-98NBIV"),
OEMTEXT("PC-9801-96(PC-9801B3-E02)"),
#ifdef SUPPORT_PCI
OEMTEXT("Auto Select(Xe10, GA-98NBI/C), PCI"),
OEMTEXT("Auto Select(Xe10, GA-98NBII), PCI"),
OEMTEXT("Auto Select(Xe10, GA-98NBIV), PCI"),
OEMTEXT("Auto Select(Xe10, WAB-S), PCI"),
OEMTEXT("Auto Select(Xe10, WSN-A2F), PCI"),
OEMTEXT("Auto Select(Xe10, WSN-A4F), PCI"),
#endif
OEMTEXT("Auto Select(Xe10, WAB-S)"),
OEMTEXT("Auto Select(Xe10, WSN-A2F)"),
OEMTEXT("Auto Select(Xe10, WSN-A4F)"),
@ -142,6 +149,7 @@ const TABLISTS *tl;
case CIRRUS_98ID_Cx2:
type = 6;
break;
#ifdef SUPPORT_PCI
case CIRRUS_98ID_PCI:
type = 7;
break;
@ -166,24 +174,65 @@ const TABLISTS *tl;
case CIRRUS_98ID_96:
type = 14;
break;
case CIRRUS_98ID_AUTO_XE_WA_PCI:
case CIRRUS_98ID_AUTO_XE_G1_PCI:
type = 15;
break;
case CIRRUS_98ID_AUTO_XE_WS_PCI:
case CIRRUS_98ID_AUTO_XE_G2_PCI:
type = 16;
break;
case CIRRUS_98ID_AUTO_XE_W4_PCI:
case CIRRUS_98ID_AUTO_XE_G4_PCI:
type = 17;
break;
case CIRRUS_98ID_AUTO_XE10_WABS:
case CIRRUS_98ID_AUTO_XE_WA_PCI:
type = 18;
break;
case CIRRUS_98ID_AUTO_XE10_WSN2:
case CIRRUS_98ID_AUTO_XE_WS_PCI:
type = 19;
break;
case CIRRUS_98ID_AUTO_XE10_WSN4:
case CIRRUS_98ID_AUTO_XE_W4_PCI:
type = 20;
break;
case CIRRUS_98ID_AUTO_XE10_WABS:
type = 21;
break;
case CIRRUS_98ID_AUTO_XE10_WSN2:
type = 22;
break;
case CIRRUS_98ID_AUTO_XE10_WSN4:
type = 23;
break;
#else
case CIRRUS_98ID_WAB:
type = 7;
break;
case CIRRUS_98ID_WSN_A2F:
type = 8;
break;
case CIRRUS_98ID_WSN:
type = 9;
break;
case CIRRUS_98ID_GA98NBIC:
type = 10;
break;
case CIRRUS_98ID_GA98NBII:
type = 11;
break;
case CIRRUS_98ID_GA98NBIV:
type = 12;
break;
case CIRRUS_98ID_96:
type = 13;
break;
case CIRRUS_98ID_AUTO_XE10_WABS:
type = 14;
break;
case CIRRUS_98ID_AUTO_XE10_WSN2:
type = 15;
break;
case CIRRUS_98ID_AUTO_XE10_WSN4:
type = 16;
break;
#endif
}
menudlg_appends(res_wab0, NELEMENTS(res_wab0));
@ -257,6 +306,7 @@ static void dlgupdate(void) {
case 6:
type = CIRRUS_98ID_Cx2;
break;
#ifdef SUPPORT_PCI
case 7:
type = CIRRUS_98ID_PCI;
break;
@ -282,23 +332,64 @@ static void dlgupdate(void) {
type = CIRRUS_98ID_96;
break;
case 15:
type = CIRRUS_98ID_AUTO_XE_WA_PCI;
type = CIRRUS_98ID_AUTO_XE_G1_PCI;
break;
case 16:
type = CIRRUS_98ID_AUTO_XE_WS_PCI;
type = CIRRUS_98ID_AUTO_XE_G2_PCI;
break;
case 17:
type = CIRRUS_98ID_AUTO_XE_W4_PCI;
type = CIRRUS_98ID_AUTO_XE_G4_PCI;
break;
case 18:
type = CIRRUS_98ID_AUTO_XE10_WABS;
type = CIRRUS_98ID_AUTO_XE_WA_PCI;
break;
case 19:
type = CIRRUS_98ID_AUTO_XE10_WSN2;
type = CIRRUS_98ID_AUTO_XE_WS_PCI;
break;
case 20:
type = CIRRUS_98ID_AUTO_XE_W4_PCI;
break;
case 21:
type = CIRRUS_98ID_AUTO_XE10_WABS;
break;
case 22:
type = CIRRUS_98ID_AUTO_XE10_WSN2;
break;
case 23:
type = CIRRUS_98ID_AUTO_XE10_WSN4;
break;
#else
case 7:
type = CIRRUS_98ID_WAB;
break;
case 8:
type = CIRRUS_98ID_WSN_A2F;
break;
case 9:
type = CIRRUS_98ID_WSN;
break;
case 10:
type = CIRRUS_98ID_GA98NBIC;
break;
case 11:
type = CIRRUS_98ID_GA98NBII;
break;
case 12:
type = CIRRUS_98ID_GA98NBIV;
break;
case 13:
type = CIRRUS_98ID_96;
break;
case 14:
type = CIRRUS_98ID_AUTO_XE10_WABS;
break;
case 15:
type = CIRRUS_98ID_AUTO_XE10_WSN2;
break;
case 16:
type = CIRRUS_98ID_AUTO_XE10_WSN4;
break;
#endif
}
if (np2cfg.gd5430type != (UINT16)type) {
np2cfg.gd5430type = (UINT16)val;

View File

@ -214,7 +214,7 @@ void newdisk_nhd_ex_CHS(const OEMCHAR *fname, UINT32 C, UINT16 H, UINT16 S, UINT
hddsize = (FILELEN)C * H * S * SS / 1024 / 1024;
if ((fname == NULL) || (hddsize < 5) || (hddsize > NHD_MAXSIZE2)) {
if ((fname == NULL) || (hddsize < 1) || (hddsize > NHD_MAXSIZE2)) {
goto ndnhd_err;
}
fh = file_create(fname);
@ -385,7 +385,7 @@ void newdisk_vpcvhd_ex_CHS(const OEMCHAR *fname, UINT32 C, UINT16 H, UINT16 S, U
hddsize = (UINT32)((FILELEN)C * H * S * SS / 1024 / 1024);
if ((fname == NULL) || (hddsize < 5) || (hddsize > NHD_MAXSIZE2)) {
if ((fname == NULL) || (hddsize < 1) || (hddsize > NHD_MAXSIZE2)) {
goto vpcvhd_err;
}
fh = file_create(fname);

View File

@ -133,7 +133,7 @@ BOOL memdbg32_paint(CMNVRAM *vram, CMNPALCNV cnv, BOOL redraw) {
FillMemory(use, 256, MEMDBG32_PALREAL);
FillMemory(use + (0xfa0000 >> 12), (0x60000 >> 12), MEMDBG32_PALREAL);
if ((CPU_STAT_PM) && (pccore.extmem)) {
FillMemory(use + 256, 256 * pccore.extmem, MEMDBG32_PALPM);
FillMemory(use + 256, np2min(256 * pccore.extmem, sizeof(use) - 256), MEMDBG32_PALPM);
}
}
for (i=0; i<32; i++) {

View File

@ -11,6 +11,9 @@
#if defined(SUPPORT_IDEIO)
#include "ideio.h"
#endif
#if defined(SUPPORT_GPIB)
#include "gpibio.h"
#endif
static const OEMCHAR str_comma[] = OEMTEXT(", ");
static const OEMCHAR str_2halfMHz[] = OEMTEXT("2.5MHz");
@ -257,6 +260,10 @@ static void info_sound(OEMCHAR *str, int maxlen, const NP2INFOEX *ex)
lpBoard = OEMTEXT("PC-9801-86 + Mate-X PCM");
break;
case SOUNDID_PC_9801_86_118:
lpBoard = OEMTEXT("PC-9801-86 + PC-9801-118");
break;
case SOUNDID_MATE_X_PCM:
lpBoard = OEMTEXT("Mate-X PCM");
break;
@ -354,6 +361,14 @@ static void info_bios(OEMCHAR *str, int maxlen, const NP2INFOEX *ex) {
}
milstr_ncat(str, pcidev.biosname, maxlen);
}
#endif
#if defined(SUPPORT_GPIB)
if (gpib.enable) {
if (str[0]) {
milstr_ncat(str, str_comma, maxlen);
}
milstr_ncat(str, OEMTEXT("gpib.rom"), maxlen);
}
#endif
if (str[0] == '\0') {
milstr_ncat(str, str_notexist, maxlen);

View File

@ -446,24 +446,53 @@ REG8 MEMCALL memp_read8(UINT32 address) {
}
else {
#if defined(SUPPORT_CL_GD5430)
if(np2cfg.usegd5430 && cirrusvga_opaque){
if(np2clvga.VRAMWindowAddr){
if(np2clvga.VRAMWindowAddr <= address){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE){
return cirrus_linear_readb(cirrusvga_opaque, address);
}else if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT) return 0;
return cirrus_linear_readb(cirrusvga_opaque, address);
}
}
if(np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH <= address){
if(address < np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH + BBLTWINDOW_SIZE){
return cirrus_linear_bitblt_readb(cirrusvga_opaque, address);
}
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
if(np2clvga.pciLFB_Addr && (address & np2clvga.pciLFB_Mask) == np2clvga.pciLFB_Addr){
UINT32 addrofs = address - np2clvga.pciLFB_Addr;
if(addrofs < 0x1000000){
return cirrus_linear_readb(cirrusvga_opaque, address);
}else if( addrofs < 0x1000000 + 0x400000){
return cirrus_linear_bitblt_readb(cirrusvga_opaque, address);
}else{
return 0xff;
}
}else if(np2clvga.pciMMIO_Addr && (address & np2clvga.pciMMIO_Mask) == np2clvga.pciMMIO_Addr){
if(np2clvga.gd54xxtype==CIRRUS_98ID_PCI || ((np2clvga.pciMMIO_Addr & 0xfff00000) != 0xf00000 || !(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))))
return cirrus_mmio_read[0](cirrusvga_opaque, address);
}
if(np2clvga.VRAMWindowAddr2 && np2clvga.VRAMWindowAddr2 <= address && address < np2clvga.VRAMWindowAddr2 + 0x10000){
return CIRRUS_VRAMWND2_FUNC_rb(cirrusvga_opaque, address);
if(np2clvga.gd54xxtype!=CIRRUS_98ID_PCI){
if(vramWndAddr){
if(vramWndAddr <= address){
if(address < vramWndAddr + VRAMWINDOW_SIZE){
return cirrus_linear_readb(cirrusvga_opaque, address);
}else if(address < vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address >= vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT)
return cirrus_linear_readb(cirrusvga_opaque, address);
}
}
}
if(vramWndAddr3){
UINT32 addr3 = address;
if(vramWndAddr3 <= addr3 && addr3 < vramWndAddr3 + VRA3WINDOW_SIZEX && !(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))){
return CIRRUS_VRAMWND3_FUNC_rb(cirrusvga_opaque, addr3);
}
}
if(vramWndAddr2 && (vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))){
UINT32 addr2 = address;
if((vramWndAddr2 & 0xfff00000UL) == 0){
UINT32 addrtmp = addr2 & 0xfff80000UL;
if(addrtmp == 0xfff80000UL || addrtmp == 0x00f80000UL){
// XXX: 0xFFFA0000 - 0xFFFFFFFF or 0xFA0000 - 0xFFFFFF
addr2 = addr2 & 0xfffff;
}
}
if((addr2 & CIRRUS_VRAMWINDOW2MASK) == vramWndAddr2){
return CIRRUS_VRAMWND2_FUNC_rb(cirrusvga_opaque, addr2);
}
}
}
}
#endif
@ -506,24 +535,53 @@ REG16 MEMCALL memp_read16(UINT32 address) {
}
else if ((address + 1) & 0x7fff) { // non 32kb boundary
#if defined(SUPPORT_CL_GD5430)
if(np2cfg.usegd5430 && cirrusvga_opaque){
if(np2clvga.VRAMWindowAddr){
if(np2clvga.VRAMWindowAddr <= address){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE){
return cirrus_linear_readw(cirrusvga_opaque, address);
}else if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT) return 0;
return cirrus_linear_readw(cirrusvga_opaque, address);
}
}
if(np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH <= address){
if(address < np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH + BBLTWINDOW_SIZE){
return cirrus_linear_bitblt_readw(cirrusvga_opaque, address);
}
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
if(np2clvga.pciLFB_Addr && (address & np2clvga.pciLFB_Mask) == np2clvga.pciLFB_Addr){
UINT32 addrofs = address - np2clvga.pciLFB_Addr;
if(addrofs < 0x1000000){
return cirrus_linear_readw(cirrusvga_opaque, address);
}else if( addrofs < 0x1000000 + 0x400000){
return cirrus_linear_bitblt_readw(cirrusvga_opaque, address);
}else{
return 0xffff;
}
}else if(np2clvga.pciMMIO_Addr && (address & np2clvga.pciMMIO_Mask) == np2clvga.pciMMIO_Addr){
if(np2clvga.gd54xxtype==CIRRUS_98ID_PCI || ((np2clvga.pciMMIO_Addr & 0xfff00000) != 0xf00000 || !(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))))
return cirrus_mmio_read[1](cirrusvga_opaque, address);
}
if(np2clvga.VRAMWindowAddr2 && np2clvga.VRAMWindowAddr2 <= address && address < np2clvga.VRAMWindowAddr2 + 0x10000){
return CIRRUS_VRAMWND2_FUNC_rw(cirrusvga_opaque, address);
if(np2clvga.gd54xxtype!=CIRRUS_98ID_PCI){
if(vramWndAddr){
if(vramWndAddr <= address){
if(address < vramWndAddr + VRAMWINDOW_SIZE){
return cirrus_linear_readw(cirrusvga_opaque, address);
}else if(address < vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address >= vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT)
return cirrus_linear_readw(cirrusvga_opaque, address);
}
}
}
if(vramWndAddr3){
UINT32 addr3 = address;
if(vramWndAddr3 <= addr3 && addr3 < vramWndAddr3 + VRA3WINDOW_SIZEX && !(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))){
return CIRRUS_VRAMWND3_FUNC_rw(cirrusvga_opaque, addr3);
}
}
if(vramWndAddr2 && (vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))){
UINT32 addr2 = address;
if((vramWndAddr2 & 0xfff00000UL) == 0){
UINT32 addrtmp = addr2 & 0xfff80000UL;
if(addrtmp == 0xfff80000UL || addrtmp == 0x00f80000UL){
// XXX: 0xFFFA0000 - 0xFFFFFFFF or 0xFA0000 - 0xFFFFFF
addr2 = addr2 & 0xfffff;
}
}
if((addr2 & CIRRUS_VRAMWINDOW2MASK) == vramWndAddr2){
return CIRRUS_VRAMWND2_FUNC_rw(cirrusvga_opaque, addr2);
}
}
}
}
#endif
@ -567,35 +625,66 @@ UINT32 MEMCALL memp_read32(UINT32 address) {
UINT32 pos;
UINT32 ret;
#if defined(SUPPORT_CL_GD5430)
if(np2cfg.usegd5430 && cirrusvga_opaque){
if(np2clvga.VRAMWindowAddr){
if(np2clvga.VRAMWindowAddr <= address){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE){
return cirrus_linear_readl(cirrusvga_opaque, address);
}else if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT) return 0;
return cirrus_linear_readl(cirrusvga_opaque, address);
}
}
if(np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH <= address){
if(address < np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH + BBLTWINDOW_SIZE){
return cirrus_linear_bitblt_readl(cirrusvga_opaque, address);
}
}
}
if(np2clvga.VRAMWindowAddr2 && np2clvga.VRAMWindowAddr2 <= address && address < np2clvga.VRAMWindowAddr2 + 0x10000){
return CIRRUS_VRAMWND2_FUNC_rl(cirrusvga_opaque, address);
}
}
#endif
if (address < (I286_MEMREADMAX - 3)) {
return(LOADINTELDWORD(mem + address));
}
else if (address >= USE_HIMEM) {
pos = address & CPU_ADRSMASK;
if ((pos >= USE_HIMEM) && ((pos + 3) < CPU_EXTLIMIT16)) {
return(LOADINTELDWORD(CPU_EXTMEMBASE + pos));
else{
#if defined(SUPPORT_CL_GD5430)
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
if(np2clvga.pciLFB_Addr && (address & np2clvga.pciLFB_Mask) == np2clvga.pciLFB_Addr){
UINT32 addrofs = address - np2clvga.pciLFB_Addr;
if(addrofs < 0x1000000){
return cirrus_linear_readl(cirrusvga_opaque, address);
}else if( addrofs < 0x1000000 + 0x400000){
return cirrus_linear_bitblt_readl(cirrusvga_opaque, address);
}else{
return 0xffffffff;
}
}else if(np2clvga.pciMMIO_Addr && (address & np2clvga.pciMMIO_Mask) == np2clvga.pciMMIO_Addr){
if(np2clvga.gd54xxtype==CIRRUS_98ID_PCI || ((np2clvga.pciMMIO_Addr & 0xfff00000) != 0xf00000 || !(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))))
return cirrus_mmio_read[2](cirrusvga_opaque, address);
}
if(np2clvga.gd54xxtype!=CIRRUS_98ID_PCI){
if(vramWndAddr){
if(vramWndAddr <= address){
if(address < vramWndAddr + VRAMWINDOW_SIZE){
return cirrus_linear_readl(cirrusvga_opaque, address);
}else if(address < vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address >= vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT)
return cirrus_linear_readl(cirrusvga_opaque, address);
}
}
}
if(vramWndAddr3){
UINT32 addr3 = address;
if(vramWndAddr3 <= addr3 && addr3 < vramWndAddr3 + VRA3WINDOW_SIZEX && !(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))){
return CIRRUS_VRAMWND3_FUNC_rl(cirrusvga_opaque, addr3);
}
}
if(vramWndAddr2 && (vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))){
UINT32 addr2 = address;
if((vramWndAddr2 & 0xfff00000UL) == 0){
UINT32 addrtmp = addr2 & 0xfff80000UL;
if(addrtmp == 0xfff80000UL || addrtmp == 0x00f80000UL){
// XXX: 0xFFFA0000 - 0xFFFFFFFF or 0xFA0000 - 0xFFFFFF
addr2 = addr2 & 0xfffff;
}
}
if((addr2 & CIRRUS_VRAMWINDOW2MASK) == vramWndAddr2){
return CIRRUS_VRAMWND2_FUNC_rl(cirrusvga_opaque, addr2);
}
}
}
}
#endif
if (address >= USE_HIMEM) {
pos = address & CPU_ADRSMASK;
if ((pos >= USE_HIMEM) && ((pos + 3) < CPU_EXTLIMIT16)) {
return(LOADINTELDWORD(CPU_EXTMEMBASE + pos));
}
}
}
if (!(address & 1)) {
@ -617,28 +706,64 @@ void MEMCALL memp_write8(UINT32 address, REG8 value) {
}
else {
#if defined(SUPPORT_CL_GD5430)
if(np2cfg.usegd5430 && cirrusvga_opaque){
if(np2clvga.VRAMWindowAddr){
if(np2clvga.VRAMWindowAddr <= address){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE){
g_cirrus_linear_write[0](cirrusvga_opaque, address, value);
return;
}else if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT);
g_cirrus_linear_write[0](cirrusvga_opaque, address, value);
return;
}
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
if(np2clvga.pciLFB_Addr && (address & np2clvga.pciLFB_Mask) == np2clvga.pciLFB_Addr){
UINT32 addrofs = address - np2clvga.pciLFB_Addr;
if(addrofs < 0x1000000){
cirrus_linear_writeb(cirrusvga_opaque, address, value);
}else if( addrofs < 0x1000000 + 0x400000){
cirrus_linear_bitblt_writeb(cirrusvga_opaque, address, value);
}
if(np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH <= address){
if(address < np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH + BBLTWINDOW_SIZE){
cirrus_linear_bitblt_writeb(cirrusvga_opaque, address, value);
return;
}
}
}
if(np2clvga.VRAMWindowAddr2 && np2clvga.VRAMWindowAddr2 <= address && address < np2clvga.VRAMWindowAddr2 + 0x10000){
CIRRUS_VRAMWND2_FUNC_wb(cirrusvga_opaque, address, value);
return;
}else if(np2clvga.pciMMIO_Addr && (address & np2clvga.pciMMIO_Mask) == np2clvga.pciMMIO_Addr){
cirrus_mmio_write[0](cirrusvga_opaque, address, value);
if(np2clvga.gd54xxtype==CIRRUS_98ID_PCI)
return;
}
//if(TEST_START_ADDR < address && address <= TEST_END_ADDR){
// printf("%d: %d\n", address, value);
//}
if(np2clvga.gd54xxtype!=CIRRUS_98ID_PCI){
if(vramWndAddr){
if(vramWndAddr <= address){
if(address < vramWndAddr + VRAMWINDOW_SIZE){
g_cirrus_linear_write[0](cirrusvga_opaque, address, value);
return;
}else if(address < vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address >= vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT){
g_cirrus_linear_write[0](cirrusvga_opaque, address, value);
return;
}
}
}
}
if(vramWndAddr3){
UINT32 addr3 = address;
if(vramWndAddr3 <= addr3 && addr3 < vramWndAddr3 + VRA3WINDOW_SIZEX){
CIRRUS_VRAMWND3_FUNC_wb(cirrusvga_opaque, addr3, value);
TRACEOUT(("mem (write8): %x", address));
//if(!(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))
// return;
}
}
if(vramWndAddr2 && (vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))){
UINT32 addr2 = address;
if((vramWndAddr2 & 0xfff00000UL) == 0){
UINT32 addrtmp = addr2 & 0xfff80000UL;
if(addrtmp == 0xfff80000UL || addrtmp == 0x00f80000UL){
// XXX: 0xFFFA0000 - 0xFFFFFFFF or 0xFA0000 - 0xFFFFFF
addr2 = addr2 & 0xfffff;
}
}
if((addr2 & CIRRUS_VRAMWINDOW2MASK) == vramWndAddr2){
CIRRUS_VRAMWND2_FUNC_wb(cirrusvga_opaque, addr2, value);
//if((vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))) && !(gdc.display & (1 << GDCDISP_31)))
// return;
}
}
}
}
#endif
@ -684,28 +809,64 @@ void MEMCALL memp_write16(UINT32 address, REG16 value) {
}
else if ((address + 1) & 0x7fff) { // non 32kb boundary
#if defined(SUPPORT_CL_GD5430)
if(np2cfg.usegd5430 && cirrusvga_opaque){
if(np2clvga.VRAMWindowAddr){
if(np2clvga.VRAMWindowAddr <= address){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE){
g_cirrus_linear_write[1](cirrusvga_opaque, address, value);
return;
}else if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT);
g_cirrus_linear_write[1](cirrusvga_opaque, address, value);
return;
}
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
if(np2clvga.pciLFB_Addr && (address & np2clvga.pciLFB_Mask) == np2clvga.pciLFB_Addr){
UINT32 addrofs = address - np2clvga.pciLFB_Addr;
if(addrofs < 0x1000000){
cirrus_linear_writew(cirrusvga_opaque, address, value);
}else if( addrofs < 0x1000000 + 0x400000){
cirrus_linear_bitblt_writew(cirrusvga_opaque, address, value);
}
if(np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH <= address){
if(address < np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH + BBLTWINDOW_SIZE){
cirrus_linear_bitblt_writew(cirrusvga_opaque, address, value);
return;
}
}
}
if(np2clvga.VRAMWindowAddr2 && np2clvga.VRAMWindowAddr2 <= address && address < np2clvga.VRAMWindowAddr2 + 0x10000){
CIRRUS_VRAMWND2_FUNC_ww(cirrusvga_opaque, address, value);
return;
}else if(np2clvga.pciMMIO_Addr && (address & np2clvga.pciMMIO_Mask) == np2clvga.pciMMIO_Addr){
cirrus_mmio_write[1](cirrusvga_opaque, address, value);
if(np2clvga.gd54xxtype==CIRRUS_98ID_PCI)
return;
}
//if(TEST_START_ADDR < address && address <= TEST_END_ADDR){
// printf("%d: %d\n", address, value);
//}
if(np2clvga.gd54xxtype!=CIRRUS_98ID_PCI){
if(vramWndAddr){
if(vramWndAddr <= address){
if(address < vramWndAddr + VRAMWINDOW_SIZE){
g_cirrus_linear_write[1](cirrusvga_opaque, address, value);
return;
}else if(address < vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address >= vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT){
g_cirrus_linear_write[1](cirrusvga_opaque, address, value);
return;
}
}
}
}
if(vramWndAddr3){
UINT32 addr3 = address;
if(vramWndAddr3 <= addr3 && addr3 < vramWndAddr3 + VRA3WINDOW_SIZEX){
CIRRUS_VRAMWND3_FUNC_ww(cirrusvga_opaque, addr3, value);
TRACEOUT(("mem (write16): %x", address));
//if(!(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))
// return;
}
}
if(vramWndAddr2 && (vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))){
UINT32 addr2 = address;
if((vramWndAddr2 & 0xfff00000UL) == 0){
UINT32 addrtmp = addr2 & 0xfff80000UL;
if(addrtmp == 0xfff80000UL || addrtmp == 0x00f80000UL){
// XXX: 0xFFFA0000 - 0xFFFFFFFF or 0xFA0000 - 0xFFFFFF
addr2 = addr2 & 0xfffff;
}
}
if((addr2 & CIRRUS_VRAMWINDOW2MASK) == vramWndAddr2){
CIRRUS_VRAMWND2_FUNC_ww(cirrusvga_opaque, addr2, value);
//if((vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))) && !(gdc.display & (1 << GDCDISP_31)))
// return;
}
}
}
}
#endif
@ -768,41 +929,79 @@ void MEMCALL memp_write32(UINT32 address, UINT32 value) {
UINT32 pos;
#if defined(SUPPORT_CL_GD5430)
if(np2cfg.usegd5430 && cirrusvga_opaque){
if(np2clvga.VRAMWindowAddr){
if(np2clvga.VRAMWindowAddr <= address){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE){
g_cirrus_linear_write[2](cirrusvga_opaque, address, value);
return;
}else if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address < np2clvga.VRAMWindowAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT);
g_cirrus_linear_write[2](cirrusvga_opaque, address, value);
return;
}
}
if(np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH <= address){
if(address < np2clvga.VRAMWindowAddr + BBLTWINDOW_ADSH + BBLTWINDOW_SIZE){
cirrus_linear_bitblt_writel(cirrusvga_opaque, address, value);
return;
}
}
}
if(np2clvga.VRAMWindowAddr2 && np2clvga.VRAMWindowAddr2 <= address && address < np2clvga.VRAMWindowAddr2 + 0x10000){
CIRRUS_VRAMWND2_FUNC_wl(cirrusvga_opaque, address, value);
return;
}
}
#endif
if (address < (I286_MEMWRITEMAX - 3)) {
STOREINTELDWORD(mem + address, value);
return;
}
else if (address >= USE_HIMEM) {
pos = address & CPU_ADRSMASK;
if ((pos >= USE_HIMEM) && ((pos + 3) < CPU_EXTLIMIT16)) {
STOREINTELDWORD(CPU_EXTMEMBASE + pos, value);
return;
else{
#if defined(SUPPORT_CL_GD5430)
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
if(np2clvga.pciLFB_Addr && (address & np2clvga.pciLFB_Mask) == np2clvga.pciLFB_Addr){
UINT32 addrofs = address - np2clvga.pciLFB_Addr;
if(addrofs < 0x1000000){
cirrus_linear_writel(cirrusvga_opaque, address, value);
}else if( addrofs < 0x1000000 + 0x400000){
cirrus_linear_bitblt_writel(cirrusvga_opaque, address, value);
}
return;
}else if(np2clvga.pciMMIO_Addr && (address & np2clvga.pciMMIO_Mask) == np2clvga.pciMMIO_Addr){
cirrus_mmio_write[2](cirrusvga_opaque, address, value);
if(np2clvga.gd54xxtype==CIRRUS_98ID_PCI)
return;
}
//if(TEST_START_ADDR < address && address <= TEST_END_ADDR){
// printf("%d: %d\n", address, value);
//}
if(np2clvga.gd54xxtype!=CIRRUS_98ID_PCI){
if(vramWndAddr){
if(vramWndAddr <= address){
if(address < vramWndAddr + VRAMWINDOW_SIZE){
g_cirrus_linear_write[2](cirrusvga_opaque, address, value);
return;
}else if(address < vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SIZE){
if(address >= vramWndAddr + VRAMWINDOW_SIZE + EXT_WINDOW_SHFT){
g_cirrus_linear_write[2](cirrusvga_opaque, address, value);
return;
}
}
}
}
if(vramWndAddr3){
UINT32 addr3 = address;
if(vramWndAddr3 <= addr3 && addr3 < vramWndAddr3 + VRA3WINDOW_SIZEX){
CIRRUS_VRAMWND3_FUNC_wl(cirrusvga_opaque, addr3, value);
TRACEOUT(("mem (write32): %x", address));
//if(!(gdc.analog & ((1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))
// return;
}
}
if(vramWndAddr2 && (vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E))))){
UINT32 addr2 = address;
if((vramWndAddr2 & 0xfff00000UL) == 0){
UINT32 addrtmp = addr2 & 0xfff80000UL;
if(addrtmp == 0xfff80000UL || addrtmp == 0x00f80000UL){
// XXX: 0xFFFA0000 - 0xFFFFFFFF or 0xFA0000 - 0xFFFFFF
addr2 = addr2 & 0xfffff;
}
}
if((addr2 & CIRRUS_VRAMWINDOW2MASK) == vramWndAddr2){
CIRRUS_VRAMWND2_FUNC_wl(cirrusvga_opaque, addr2, value);
//if((vramWndAddr2 != 0xE0000 || !(gdc.analog & ((1 << GDCANALOG_16) | (1 << GDCANALOG_256) | (1 << GDCANALOG_256E)))) && !(gdc.display & (1 << GDCDISP_31)))
// return;
}
}
}
}
#endif
if (address >= USE_HIMEM) {
pos = address & CPU_ADRSMASK;
if ((pos >= USE_HIMEM) && ((pos + 3) < CPU_EXTLIMIT16)) {
STOREINTELDWORD(CPU_EXTMEMBASE + pos, value);
return;
}
}
}
if (!(address & 1)) {

View File

@ -82,6 +82,8 @@ void MEMCALL memr_writes(UINT seg, UINT off, const void *dat, UINT leng);
#define MEMP_READ8(addr) \
memp_read8((addr))
#define MEMP_READ16(addr) \
memp_read16((addr))
#define MEMP_WRITE8(addr, dat) \
memp_write8((addr), (dat))

View File

@ -475,7 +475,7 @@ REG8 MEMCALL memp_read8(UINT32 address) {
}
else {
#if defined(SUPPORT_CL_GD5430)
if(np2clvga.enabled && cirrusvga_opaque){
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
@ -580,7 +580,7 @@ REG16 MEMCALL memp_read16(UINT32 address) {
else {
if ((address + 1) & 0x7fff) { // non 32kb boundary
#if defined(SUPPORT_CL_GD5430)
if(np2clvga.enabled && cirrusvga_opaque){
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
@ -691,7 +691,7 @@ UINT32 MEMCALL memp_read32(UINT32 address) {
else{
if ((address + 1) & 0x7fff) { // non 32kb boundary
#if defined(SUPPORT_CL_GD5430)
if(np2clvga.enabled && cirrusvga_opaque){
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
@ -953,7 +953,7 @@ void MEMCALL memp_write8(UINT32 address, REG8 value) {
}
else {
#if defined(SUPPORT_CL_GD5430)
if(np2clvga.enabled && cirrusvga_opaque){
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
@ -1066,7 +1066,7 @@ void MEMCALL memp_write16(UINT32 address, REG16 value) {
else{
if ((address + 1) & 0x7fff) { // non 32kb boundary
#if defined(SUPPORT_CL_GD5430)
if(np2clvga.enabled && cirrusvga_opaque){
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;
@ -1202,7 +1202,7 @@ void MEMCALL memp_write32(UINT32 address, UINT32 value) {
else{
if ((address + 1) & 0x7fff) { // non 32kb boundary
#if defined(SUPPORT_CL_GD5430)
if(np2clvga.enabled && cirrusvga_opaque){
if(np2clvga.enabled && cirrusvga_opaque && (cirrusvga_wab_46e8 & 0x08)){
UINT32 vramWndAddr = np2clvga.VRAMWindowAddr;
UINT32 vramWndAddr2 = np2clvga.VRAMWindowAddr2;
UINT32 vramWndAddr3 = np2clvga.VRAMWindowAddr3;

View File

@ -83,16 +83,47 @@ ia32_init(void)
void
ia32_setextsize(UINT32 size)
{
//#if defined(SUPPORT_LARGE_MEMORY)&&defined(_WIN32) && !defined(MEMTRACE) && !defined(MEMCHECK)
// static int vallocflag = 0;
// static int vallocsize = 0;
// static LPVOID memblock = NULL;
//#endif
if (CPU_EXTMEMSIZE != size) {
UINT8 *extmem;
extmem = CPU_EXTMEM;
if (extmem != NULL) {
_MFREE(extmem);
//#if defined(SUPPORT_LARGE_MEMORY) && defined(_WIN32) && !defined(MEMTRACE) && !defined(MEMCHECK)
// if(vallocflag){
// VirtualFree((LPVOID)extmem, vallocsize, MEM_DECOMMIT);
// VirtualFree(memblock, 0, MEM_RELEASE);
// vallocflag = 0;
// }else
//#endif
{
_MFREE(extmem);
}
extmem = NULL;
}
if (size != 0) {
extmem = (UINT8 *)_MALLOC(size + 16, "EXTMEM");
//#if defined(SUPPORT_LARGE_MEMORY) && defined(_WIN32) && !defined(MEMTRACE) && !defined(MEMCHECK)
// if(size > (255 << 20)){
// HANDLE hp = OpenProcess(PROCESS_ALL_ACCESS, TRUE, GetCurrentProcessId());
// vallocsize = size + 16;
// SetProcessWorkingSetSize(hp, vallocsize + 50*1024*1024, vallocsize + 50*1024*1024);
// CloseHandle(hp);
// memblock = VirtualAlloc(NULL, vallocsize, MEM_RESERVE, PAGE_READWRITE);
// extmem = (UINT8 *)VirtualAlloc(memblock, vallocsize, MEM_COMMIT, PAGE_READWRITE);
// if(!extmem){
// extmem = (UINT8 *)_MALLOC(size + 16, "EXTMEM");
// }else{
// vallocflag = 1;
// }
// }else
//#endif
{
extmem = (UINT8 *)_MALLOC(size + 16, "EXTMEM");
}
}
if (extmem != NULL) {
ZeroMemory(extmem, size + 16);

View File

@ -48,7 +48,7 @@ void emsio_reset(const NP2CFG *pConfig) {
ZeroMemory(&emsio, sizeof(emsio));
#if 1 || !defined(CPUCORE_IA32)
emsio.maxmem = pccore.extmem;
emsio.maxmem = (pccore.extmem > 255 ? 255 : pccore.extmem); // XXX: 256MB以上のときどうなる
#endif
emsio.addr[0] = 0xc0000;
emsio.addr[1] = 0xc4000;

View File

@ -3,7 +3,7 @@
* @brief The version
*/
#define NP2VER_CORE "ver.0.86 kai rev.17"
#define NP2VER_CORE "ver.0.86 kai rev.18"
// #define NP2VER_WIN9X
// #define NP2VER_MACOSX

View File

@ -146,7 +146,7 @@ const OEMCHAR np2version[] = OEMTEXT(NP2VER_CORE);
#endif
#endif
#if defined(SUPPORT_CL_GD5430)
0, 0x5B, 0, CIRRUS_MELCOWAB_OFS_DEFAULT,
0, 0x5B, 0, CIRRUS_MELCOWAB_OFS_DEFAULT, 0,
#endif
#if defined(SUPPORT_GPIB)
0, 12, 1, 0, 0,
@ -166,6 +166,7 @@ const OEMCHAR np2version[] = OEMTEXT(NP2VER_CORE);
#if defined(SUPPORT_FAST_MEMORYCHECK)
1,
#endif
0,
};
PCCORE pccore = { PCBASECLOCK25, PCBASEMULTIPLE,
@ -637,7 +638,7 @@ void pccore_reset(void) {
#endif
epson = (pccore.model & PCMODEL_EPSON) ? TRUE : FALSE;
if (epson) {
if (epson || np2cfg.useram_d) {
/* enable RAM (D0000-DFFFF) */
CPU_RAM_D000 = 0xffff;
}

View File

@ -224,6 +224,7 @@ struct tagNP2Config
UINT16 gd5430type;
UINT8 gd5430fakecur;
UINT8 gd5430melofs;
UINT8 ga98nb_bigscrn_ex;
#endif
#if defined(SUPPORT_GPIB)
UINT8 usegpib; // GPIB使用
@ -270,6 +271,8 @@ struct tagNP2Config
#if defined(SUPPORT_FAST_MEMORYCHECK)
UINT8 memcheckspeed; // メモリチェック速度
#endif
UINT8 useram_d; // EPSONでなくてもD0000h-DFFFFhをRAMにただしIDE BIOS D8000h-DBFFFhは駄目
};
typedef struct tagNP2Config NP2CFG; /*!< The define of config */

View File

@ -31,8 +31,8 @@ SOURCES_C += $(wildcard $(NP2_PATH)/i286c/*.c) \
$(NP2_PATH)/sdl2/unix/main.c
OBJECTS = $(SOURCES_CXX:.cpp=.o) $(SOURCES_C:.c=.o)
CXXFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16
CFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16
CXXFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_FMGEN -DSUPPORT_GPIB -DSUPPORT_FAST_MEMORYCHECK
CFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_FMGEN -DSUPPORT_GPIB -DSUPPORT_FAST_MEMORYCHECK
LDFLAGS += $(fpic) -lm -lpthread $(SDL_LIBS) -lSDL2_ttf -lSDL2_mixer
ifeq ($(SUPPORT_NET), 1)

View File

@ -31,8 +31,8 @@ SOURCES_C += $(wildcard $(NP2_PATH)/i286c/*.c) \
$(NP2_PATH)/sdl2/unix/main.c
OBJECTS = $(SOURCES_CXX:.cpp=.o) $(SOURCES_C:.c=.o)
CXXFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES
CFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES
CXXFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES -DSUPPORT_FMGEN -DSUPPORT_GPIB -DSUPPORT_FAST_MEMORYCHECK
CFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES -DSUPPORT_FMGEN -DSUPPORT_GPIB -DSUPPORT_FAST_MEMORYCHECK
LDFLAGS += $(fpic) -lm -lpthread $(SDL_LIBS) -lSDL2_ttf -lSDL2_mixer -ldl
ifeq ($(SUPPORT_NET), 1)

View File

@ -32,8 +32,8 @@ SOURCES_C += $(wildcard $(NP2_PATH)/i286c/*.c) \
$(NP2_PATH)/sdl2/win32/main.c
OBJECTS = $(SOURCES_CXX:.cpp=.o) $(SOURCES_C:.c=.o)
CXXFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES
CFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES
CXXFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES -DSUPPORT_FMGEN -DSUPPORT_GPIB -DSUPPORT_FAST_MEMORYCHECK
CFLAGS += $(fpic) $(INCFLAGS) $(COMMONFLAGS) -DNP2_SDL2 -DUSE_SDLAUDIO -DUSE_SDLMIXER -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES -DSUPPORT_FMGEN -DSUPPORT_GPIB -DSUPPORT_FAST_MEMORYCHECK
LDFLAGS += $(fpic) -lm $(SDL_LIBS) -lSDL2_ttf -lSDL2_mixer
ifeq ($(SUPPORT_NET), 1)

View File

@ -395,7 +395,7 @@ midireset(CMMIDI midi)
work[1] = 0x7b;
work[2] = 0x00;
for (work[0] = 0xb0; work[0] < 0xc0; work[0]++) {
keydisp_midi(work);
//keydisp_midi(work);
(*midi->outfn)(midi, MIDIOUTS3(work), 3);
}
}
@ -541,7 +541,7 @@ midiwrite(COMMNG self, UINT8 data)
mch->prog = midi->buffer[1];
break;
}
keydisp_midi(midi->buffer);
//keydisp_midi(midi->buffer);
(*midi->outfn)(midi, MIDIOUTS2(midi->buffer), 2);
midi->midictrl = MIDICTRL_READY;
return 2;
@ -573,7 +573,7 @@ midiwrite(COMMNG self, UINT8 data)
mch->bend = LOADINTELWORD(midi->buffer + 1);
break;
}
keydisp_midi(midi->buffer);
//keydisp_midi(midi->buffer);
(*midi->outfn)(midi, MIDIOUTS3(midi->buffer), 3);
midi->midictrl = MIDICTRL_READY;
return 3;

View File

@ -665,6 +665,8 @@ static const INITBL iniitem[] = {
{"USE_CLGD", INITYPE_BOOL, &np2cfg.usegd5430, 0},
{"CLGDTYPE", INITYPE_UINT16, &np2cfg.gd5430type, 0},
{"CLGDFCUR", INITYPE_BOOL, &np2cfg.gd5430fakecur, 0},
{"GDMELOFS", INITYPE_UINT8, &np2cfg.gd5430melofs, 0},
{"GANBBSEX", INITYPE_BOOL, &np2cfg.ga98nb_bigscrn_ex, 0},
#endif
{"TIMERFIX", INITYPE_BOOL, &np2cfg.timerfix, 0},
@ -685,6 +687,10 @@ static const INITBL iniitem[] = {
{"cpu_bran", INIRO_STR, np2cfg.cpu_brandstring_o, 63},
{"FPU_TYPE", INITYPE_UINT8, &np2cfg.fpu_type, 0},
#if defined(SUPPORT_FAST_MEMORYCHECK)
{"memckspd", INITYPE_UINT8, &np2cfg.memcheckspeed, 0},
#endif
{"USERAM_D", INITYPE_BOOL, &np2cfg.useram_d, 0},
{"keyboard", INITYPE_KB, &np2oscfg.KEYBOARD, 0},
#if !defined(__LIBRETRO__)

View File

@ -847,7 +847,7 @@ void retro_set_environment(retro_environment_t cb)
{ "np2kai_BEEP_vol" , "Volume Beep; 3|0|1|2" },
#if defined(SUPPORT_WAB)
{ "np2kai_CLGD_en" , "Enable WAB (Restart App); OFF|ON" },
{ "np2kai_CLGD_type" , "WAB Type; PC-9821Xe10,Xa7e,Xb10 built-in|PC-9821Bp,Bs,Be,Bf built-in|PC-9821Xe built-in|PC-9821Cb built-in|PC-9821Cf built-in|PC-9821Cb2 built-in|PC-9821Cx2 built-in|PC-9821 PCI CL-GD5446 built-in|MELCO WAB-S|MELCO WSN-A2F|MELCO WSN-A4F|I-O DATA GA-98NBI/C|I-O DATA GA-98NBII|I-O DATA GA-98NBIV|PC-9801-96(PC-9801B3-E02)|Auto Select(Xe10, WAB-S), PCI|Auto Select(Xe10, WSN-A2F), PCI|Auto Select(Xe10, WSN-A4F), PCI|Auto Select(Xe10, WAB-S)|Auto Select(Xe10, WSN-A2F)|Auto Select(Xe10, WSN-A4F)" },
{ "np2kai_CLGD_type" , "WAB Type; PC-9821Xe10,Xa7e,Xb10 built-in|PC-9821Bp,Bs,Be,Bf built-in|PC-9821Xe built-in|PC-9821Cb built-in|PC-9821Cf built-in|PC-9821Cb2 built-in|PC-9821Cx2 built-in|PC-9821 PCI CL-GD5446 built-in|MELCO WAB-S|MELCO WSN-A2F|MELCO WSN-A4F|I-O DATA GA-98NBI/C|I-O DATA GA-98NBII|I-O DATA GA-98NBIV|PC-9801-96(PC-9801B3-E02)|Auto Select(Xe10, GA-98NBI/C), PCI|Auto Select(Xe10, GA-98NBII), PCI|Auto Select(Xe10, GA-98NBIV), PCI|Auto Select(Xe10, WAB-S), PCI|Auto Select(Xe10, WSN-A2F), PCI|Auto Select(Xe10, WSN-A4F), PCI|Auto Select(Xe10, WAB-S)|Auto Select(Xe10, WSN-A2F)|Auto Select(Xe10, WSN-A4F)" },
{ "np2kai_CLGD_fc" , "Use Fake Hardware Cursor; OFF|ON" },
#endif /* defined(SUPPORT_WAB) */
#if defined(SUPPORT_PCI)
@ -1195,6 +1195,12 @@ static void update_variables(void)
np2cfg.gd5430type = CIRRUS_98ID_GA98NBIV;
else if (strcmp(var.value, "PC-9801-96(PC-9801B3-E02)") == 0)
np2cfg.gd5430type = CIRRUS_98ID_96;
else if (strcmp(var.value, "Auto Select(Xe10, GA-98NBI/C), PCI") == 0)
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_G1_PCI;
else if (strcmp(var.value, "Auto Select(Xe10, GA-98NBII), PCI") == 0)
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_G2_PCI;
else if (strcmp(var.value, "Auto Select(Xe10, GA-98NBIV), PCI") == 0)
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_G4_PCI;
else if (strcmp(var.value, "Auto Select(Xe10, WAB-S), PCI") == 0)
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_WA_PCI;
else if (strcmp(var.value, "Auto Select(Xe10, WSN-A2F), PCI") == 0)

View File

@ -281,6 +281,11 @@ void fmboard_bind(void) {
board86_bind();
break;
case SOUNDID_PC_9801_86_118:
board118_bind();
board86_bind();
break;
case SOUNDID_MATE_X_PCM:
board118_bind();
break;

View File

@ -834,6 +834,9 @@ static UINT GetSoundFlags(SOUNDID nSoundID)
return FLAG_OPNA1 | FLAG_PCM86 | FLAG_CS4231;
break;
case SOUNDID_PC_9801_86_118:
return FLAG_OPNA1 | FLAG_OPNA2 | FLAG_PCM86 | FLAG_CS4231;
case SOUNDID_MATE_X_PCM:
return FLAG_OPNA1 | FLAG_CS4231;

File diff suppressed because it is too large Load Diff

View File

@ -53,6 +53,9 @@
#define CIRRUS_98ID_GA98NBIV 0x202
#define CIRRUS_98ID_GA98NBMASK 0xfffc
#define CIRRUS_98ID_AUTOMSK 0xFFF0
#define CIRRUS_98ID_AUTO_XE_G1_PCI 0xFFF7
#define CIRRUS_98ID_AUTO_XE_G2_PCI 0xFFF8
#define CIRRUS_98ID_AUTO_XE_G4_PCI 0xFFF9
#define CIRRUS_98ID_AUTO_XE_WA_PCI 0xFFFA
#define CIRRUS_98ID_AUTO_XE_W4_PCI 0xFFFB
#define CIRRUS_98ID_AUTO_XE_WS_PCI 0xFFFC
@ -112,6 +115,8 @@ extern CPUWriteMemoryFunc *g_cirrus_linear_write[3];
extern int pcidev_cirrus_deviceid;
extern int cirrusvga_wab_46e8;
void cirrus_linear_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t_ val);
void cirrus_linear_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t_ val);
void cirrus_linear_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t_ val);

View File

@ -39,10 +39,6 @@
#include "xnp2.h"
#endif
// XXX: 1280x1024以上にならないので差し当たってはこれで十分
#define WAB_MAX_WIDTH 1280
#define WAB_MAX_HEIGHT 1024
#if !defined(_countof)
#define _countof(a) (sizeof(a)/sizeof(a[0]))
#endif
@ -72,9 +68,11 @@ static int ga_lastwabheight = 480;
static int ga_reqChangeWindowSize = 0;
static int ga_reqChangeWindowSize_w = 0;
static int ga_reqChangeWindowSize_h = 0;
//
//int np2wab.relaystateint = 0;
//int np2wab.relaystateext = 0;
static int ga_lastscalemode = 0;
static int ga_lastrealwidth = 0;
static int ga_lastrealheight = 0;
static int ga_screenupdated = 0;
/**
*
@ -173,11 +171,19 @@ void np2wab_setScreenSize(int width, int height)
np2wab.wndHeight = ga_lastwabheight = height;
if(np2wab.relay & 0x3){
if(width < 32 || height < 32){
#if !defined(NP2_X11) && !defined(NP2_SDL2) && !defined(__LIBRETRO__)
scrnmng_setsize(0, 0, 640, 480);
#else
scrnmng_setwidth(0, 640);
scrnmng_setheight(0, 480);
#endif
}else{
#if !defined(NP2_X11) && !defined(NP2_SDL2) && !defined(__LIBRETRO__)
scrnmng_setsize(0, 0, width, height);
#else
scrnmng_setwidth(0, width);
scrnmng_setheight(0, height);
#endif
}
scrnmng_updatefsres(); // フルスクリーン解像度更新
#if !defined(NP2_X11) && !defined(NP2_SDL2) && !defined(__LIBRETRO__)
@ -196,6 +202,8 @@ void np2wab_setScreenSizeMT(int width, int height)
if(!ga_threadmode){
// マルチスレッドモードでなければ直接呼び出し
np2wab_setScreenSize(width, height);
ga_lastrealwidth = width;
ga_lastrealheight = height;
}else{
// マルチスレッドモードなら画面サイズ変更要求を出す
ga_reqChangeWindowSize_w = width;
@ -368,10 +376,6 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
/**
*
*/
static int ga_lastscalemode = 0;
static int ga_lastrealwidth = 0;
static int ga_lastrealheight = 0;
static int ga_screenupdated = 0;
#if defined(NP2_X11) || defined(NP2_SDL2) || defined(__LIBRETRO__)
void np2wab_drawWABWindow(void)
#else
@ -383,10 +387,10 @@ void np2wab_drawWABWindow(HDC hdc)
int srcheight = np2wab.realHeight;
if(ga_lastrealwidth != srcwidth || ga_lastrealheight != srcheight){
// 解像度が変わっていたらウィンドウサイズも変える
np2wab.paletteChanged = 1;
np2wab_setScreenSizeMT(srcwidth, srcheight);
ga_lastrealwidth = srcwidth;
ga_lastrealheight = srcheight;
if(!ga_reqChangeWindowSize){
np2wab.paletteChanged = 1;
np2wab_setScreenSizeMT(srcwidth, srcheight);
}
if(!np2wabwnd.ready) return;
}
if(np2wabwnd.multiwindow){ // 別窓モード判定
@ -481,8 +485,10 @@ void np2wab_drawframe()
if(np2wabwnd.hWndWAB!=NULL){
if(ga_reqChangeWindowSize){
// 画面サイズ変更要求が来ていたら画面サイズを変える
ga_reqChangeWindowSize = 0;
np2wab_setScreenSize(ga_reqChangeWindowSize_w, ga_reqChangeWindowSize_h);
ga_lastrealwidth = ga_reqChangeWindowSize_w;
ga_lastrealheight = ga_reqChangeWindowSize_h;
ga_reqChangeWindowSize = 0;
np2wabwnd.ready = 1;
}
if(np2wabwnd.ready && (np2wab.relay&0x3)!=0){
@ -621,6 +627,8 @@ void np2wab_reset(const NP2CFG *pConfig)
ga_screenupdated = 0;
np2wab.lastWidth = 0;
np2wab.lastHeight = 0;
np2wab.realWidth = 0;
np2wab.realHeight = 0;
np2wab.relaystateint = 0;
np2wab_setRelayState(np2wab.relaystateint|np2wab.relaystateext);
@ -754,8 +762,12 @@ void np2wab_setRelayState(REG8 state)
// 統合モードなら画面を戻す
np2wab.lastWidth = 0;
np2wab.lastHeight = 0;
#if !defined(NP2_X11) && !defined(NP2_SDL2) && !defined(__LIBRETRO__)
scrnmng_setsize(dsync.scrnxpos, 0, dsync.scrnxmax, dsync.scrnymax);// XXX: 画面サイズを乗っ取る前に戻す
#else
scrnmng_setwidth(dsync.scrnxpos, dsync.scrnxmax); // XXX: 画面幅を乗っ取る前に戻す
scrnmng_setheight(0, dsync.scrnymax); // XXX: 画面高さを乗っ取る前に戻す
#endif
scrnmng_updatefsres(); // フルスクリーン解像度更新
#if !defined(NP2_X11) && !defined(NP2_SDL2) && !defined(__LIBRETRO__)
mousemng_updateclip(); // マウスキャプチャのクリップ範囲を修正

View File

@ -11,6 +11,10 @@
#include <gtk/gtk.h>
#endif
// XXX: 1600x1024以上にならないので差し当たってはこれで十分
#define WAB_MAX_WIDTH 1600
#define WAB_MAX_HEIGHT 1024
#ifdef __cplusplus
extern "C" {
#endif

View File

@ -79,6 +79,10 @@ BOOL SndOptMixerPage::OnInitDialog()
m_master.SetStaticId(IDC_VOLMASTERSTR);
m_master.SetRange(0, 100);
m_master.SetPos(np2cfg.vol_master);
if(!np2oscfg.usemastervolume){
m_master.SetPos(100);
m_master.EnableWindow(FALSE);
}
m_fm.SubclassDlgItem(IDC_VOLFM, this);
m_fm.SetStaticId(IDC_VOLFMSTR);
@ -120,12 +124,14 @@ void SndOptMixerPage::OnOK()
{
bool bUpdated = false;
const UINT8 cMaster = static_cast<UINT8>(m_master.GetPos());
if (np2cfg.vol_master != cMaster)
{
np2cfg.vol_master = cMaster;
soundmng_setvolume(cMaster);
bUpdated = true;
if(np2oscfg.usemastervolume){
const UINT8 cMaster = static_cast<UINT8>(m_master.GetPos());
if (np2cfg.vol_master != cMaster)
{
np2cfg.vol_master = cMaster;
soundmng_setvolume(cMaster);
bUpdated = true;
}
}
const UINT8 cFM = static_cast<UINT8>(m_fm.GetPos());

View File

@ -218,7 +218,9 @@ static const CComboData::Entry s_type[] =
{MAKEINTRESOURCE(IDS_GD5430_XE10), CIRRUS_98ID_Xe10},
{MAKEINTRESOURCE(IDS_GD5430_CB2), CIRRUS_98ID_Cb2},
{MAKEINTRESOURCE(IDS_GD5430_CX2), CIRRUS_98ID_Cx2},
#ifdef SUPPORT_PCI
{MAKEINTRESOURCE(IDS_GD5430_PCI), CIRRUS_98ID_PCI},
#endif
{MAKEINTRESOURCE(IDS_GD5430_WAB), CIRRUS_98ID_WAB},
{MAKEINTRESOURCE(IDS_GD5430_WSN_A2F), CIRRUS_98ID_WSN_A2F},
{MAKEINTRESOURCE(IDS_GD5430_WSN), CIRRUS_98ID_WSN},
@ -226,9 +228,14 @@ static const CComboData::Entry s_type[] =
{MAKEINTRESOURCE(IDS_GD5430_GA98NBII), CIRRUS_98ID_GA98NBII},
{MAKEINTRESOURCE(IDS_GD5430_GA98NBIV), CIRRUS_98ID_GA98NBIV},
{MAKEINTRESOURCE(IDS_GD5430_96), CIRRUS_98ID_96},
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE_G1_PCI), CIRRUS_98ID_AUTO_XE_G1_PCI},
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE_G2_PCI), CIRRUS_98ID_AUTO_XE_G2_PCI},
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE_G4_PCI), CIRRUS_98ID_AUTO_XE_G4_PCI},
#ifdef SUPPORT_PCI
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE_WA_PCI), CIRRUS_98ID_AUTO_XE_WA_PCI},
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE_WS_PCI), CIRRUS_98ID_AUTO_XE_WS_PCI},
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE_W4_PCI), CIRRUS_98ID_AUTO_XE_W4_PCI},
#endif
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE10_WABS), CIRRUS_98ID_AUTO_XE10_WABS},
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE10_WSN2), CIRRUS_98ID_AUTO_XE10_WSN2},
{MAKEINTRESOURCE(IDS_GD5430_AUTO_XE10_WSN4), CIRRUS_98ID_AUTO_XE10_WSN4},

View File

@ -470,7 +470,11 @@ static const PFTBL s_IniItems[] =
PFEXT("DIPswtch", PFTYPE_BIN, np2cfg.dipsw, 3),
PFEXT("MEMswtch", PFTYPE_BIN, np2cfg.memsw, 8),
PFMAX("ExMemory", PFTYPE_UINT8, &np2cfg.EXTMEM, 244),
#if defined(SUPPORT_LARGE_MEMORY)
PFMAX("ExMemory", PFTYPE_UINT16, &np2cfg.EXTMEM, MEMORY_MAXSIZE),
#else
PFMAX("ExMemory", PFTYPE_UINT8, &np2cfg.EXTMEM, MEMORY_MAXSIZE),
#endif
PFVAL("ITF_WORK", PFTYPE_BOOL, &np2cfg.ITF_WORK),
PFVAL("USE_BIOS", PFTYPE_BOOL, &np2cfg.usebios), // 実機BIOS使用
@ -609,6 +613,8 @@ static const PFTBL s_IniItems[] =
PFVAL("USEGD5430", PFTYPE_BOOL, &np2cfg.usegd5430),
PFVAL("GD5430TYPE",PFTYPE_UINT16, &np2cfg.gd5430type),
PFVAL("GD5430FCUR",PFTYPE_BOOL, &np2cfg.gd5430fakecur),
PFVAL("GDMELOFS", PFTYPE_UINT8, &np2cfg.gd5430melofs),
PFVAL("GANBBSEX", PFTYPE_BOOL, &np2cfg.ga98nb_bigscrn_ex),
#endif
#if defined(SUPPORT_GPIB)
PFVAL("USE_GPIB", PFTYPE_BOOL, &np2cfg.usegpib),
@ -649,7 +655,13 @@ static const PFTBL s_IniItems[] =
PFVAL("cpu_fecx", PFTYPE_HEX32, &np2cfg.cpu_feature_ecx),
PFMAX("FPU_TYPE", PFTYPE_UINT8, &np2cfg.fpu_type, 0), // FPU種類
#if defined(SUPPORT_FAST_MEMORYCHECK)
PFVAL("memckspd", PFTYPE_UINT8, &np2cfg.memcheckspeed),
#endif
PFMAX("USERAM_D", PFTYPE_BOOL, &np2cfg.useram_d, 0), // EPSONでなくてもD0000h-DFFFFhをRAMにただしIDE BIOS D8000h-DBFFFhは駄目
// OS依存
PFVAL("keyboard", PFRO_KB, &np2oscfg.KEYBOARD),
@ -702,6 +714,7 @@ static const PFTBL s_IniItems[] =
PFVAL("toolwind", PFTYPE_BOOL, &np2oscfg.toolwin),
PFVAL("keydispl", PFTYPE_BOOL, &np2oscfg.keydisp),
PFVAL("skbdwind", PFTYPE_BOOL, &np2oscfg.skbdwin),
PFVAL("I286SAVE", PFRO_BOOL, &np2oscfg.I286SAVE),
PFVAL("jast_snd", PFTYPE_BOOL, &np2oscfg.jastsnd),
PFVAL("useromeo", PFTYPE_BOOL, &np2oscfg.useromeo),
PFVAL("thickfrm", PFTYPE_BOOL, &np2oscfg.thickframe),
@ -712,7 +725,7 @@ static const PFTBL s_IniItems[] =
PFVAL("fscrnmod", PFTYPE_HEX8, &np2oscfg.fscrnmod),
#if defined(SUPPORT_SCRN_DIRECT3D)
PFVAL("D3D_IMODE", PFTYPE_UINT8, &np2oscfg.d3d_imode),
PFVAL("D3D_IMODE", PFTYPE_UINT8, &np2oscfg.d3d_imode), // Direct3D 拡大縮小補間モード
#endif
PFVAL("snddev_t", PFTYPE_UINT8, &np2oscfg.cSoundDeviceType),
@ -723,7 +736,7 @@ static const PFTBL s_IniItems[] =
#endif // defined(SUPPORT_VSTi)
PFVAL("EMUDDRAW", PFTYPE_BOOL, &np2oscfg.emuddraw), // 最近はEMULATIONONLYにした方速かったりする特にピクセル操作する場合とか
PFVAL("DRAWTYPE", PFTYPE_UINT8, &np2oscfg.drawtype),
PFVAL("DRAWTYPE", PFTYPE_UINT8, &np2oscfg.drawtype), // 画面レンダラ (0: DirectDraw, 1: reserved(DirecrDraw), 2: Direct3D)
PFVAL("DRAGDROP", PFRO_BOOL, &np2oscfg.dragdrop), // ドラッグアンドドロップサポート
PFVAL("MAKELHDD", PFRO_BOOL, &np2oscfg.makelhdd), // 巨大HDDイメージ作成サポート
@ -739,12 +752,11 @@ static const PFTBL s_IniItems[] =
PFVAL("SCRN_MUL", PFTYPE_UINT8, &np2oscfg.scrn_mul), // 画面表示倍率8が等倍
PFVAL("MOUSE_NC", PFTYPE_BOOL, &np2oscfg.mouse_nc), // マウスキャプチャ無しコントロール
PFVAL("CPUSTABF", PFTYPE_UINT16, &np2oscfg.cpustabf), // クロック安定器適用限界時間(フレーム)
PFVAL("READONLY", PFRO_BOOL, &np2oscfg.readonly), // 変更を設定ファイルに書き込まない
PFVAL("I286SAVE", PFRO_BOOL, &np2oscfg.I286SAVE)
PFVAL("TICKMODE", PFRO_UINT8, &np2oscfg.tickmode), // Tickカウンタのモードを強制的に設定する
PFVAL("USEWHEEL", PFRO_BOOL, &np2oscfg.usewheel), // マウスホイールによる音量・マウス速度設定を使用する
PFVAL("USE_MVOL", PFRO_BOOL, &np2oscfg.usemastervolume), // マスタボリューム設定を使用する
};
//! .ini 拡張子

View File

@ -286,8 +286,8 @@ void xmenu_initialize(HMENU hMenu)
EnableMenuItem(hMenu, IDM_WABOPT, MF_BYCOMMAND|MFS_GRAYED);
#endif
#ifndef SUPPORT_PHYSICAL_CDDRV
EnableMenuItem(hMenu, IDM_WABOPT, MF_BYCOMMAND|MFS_GRAYED);
#ifndef SUPPORT_PCI
EnableMenuItem(hMenu, IDM_PCIOPT, MF_BYCOMMAND|MFS_GRAYED);
#endif
if (np2oscfg.I286SAVE)
@ -459,4 +459,22 @@ void xmenu_update(HMENU hMenu)
#if defined(SUPPORT_FAST_MEMORYCHECK)
CheckMenuItem(hMenu, IDM_FASTMEMCHK, MF_BYCOMMAND | MFCHECK(np2cfg.memcheckspeed != 1));
#endif
#if !defined(USE_FPU)
EnableMenuItem(hMenu, IDM_FPU80, MF_GRAYED);
EnableMenuItem(hMenu, IDM_FPU64, MF_GRAYED);
EnableMenuItem(hMenu, IDM_FPU64INT, MF_GRAYED);
#endif
#if !defined(SUPPORT_NET)
EnableMenuItem(hMenu, IDM_NETOPT, MF_GRAYED);
#endif
#if !defined(SUPPORT_WAB)
EnableMenuItem(hMenu, IDM_WABOPT, MF_GRAYED);
#endif
#if !defined(SUPPORT_PCI)
EnableMenuItem(hMenu, IDM_PCIOPT, MF_GRAYED);
#endif
#if !defined(SUPPORT_HOSTDRV)
EnableMenuItem(hMenu, IDM_HOSTDRVOPT, MF_GRAYED);
#endif
}

View File

@ -96,6 +96,8 @@
#include "Dbt.h"
#endif
#include <process.h>
#ifdef BETA_RELEASE
#define OPENING_WAIT 1500
#endif
@ -146,7 +148,7 @@ static TCHAR szClassName[] = _T("NP2-MainWindow");
0, 0, 1, 0, 1, 1,
0, 0,
0, 8,
0, 0, 0, TCMODE_DEFAULT, 0
0, 0, 0, TCMODE_DEFAULT, 0, 1
};
OEMCHAR fddfolder[MAX_PATH];
@ -188,20 +190,75 @@ static int WM_QueryCancelAutoPlay;
// システムキーフック用
#ifdef HOOK_SYSKEY
static HANDLE np2_hThreadKeyHook = NULL; // キーフック用スレッド
static int np2_hThreadKeyHookexit = 0; // スレッド終了フラグ
static HWND np2_hThreadKeyHookhWnd = 0;
LRESULT CALLBACK LowLevelKeyboardProc(INT nCode, WPARAM wParam, LPARAM lParam);
HHOOK hHook = NULL;
static void start_hook_systemey()
LRESULT CALLBACK np2_ThreadFuncKeyHook_WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch(msg){
case WM_CLOSE:
if(!np2_hThreadKeyHookexit) return 0;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
static unsigned int __stdcall np2_ThreadFuncKeyHook(LPVOID vdParam)
{
MSG msg;
LPCTSTR wndclassname = _T("NP2 Key Hook");
WNDCLASSEX wcex ={sizeof(WNDCLASSEX), CS_HREDRAW | CS_VREDRAW, np2_ThreadFuncKeyHook_WndProc, 0, 0, g_hInstance, NULL, NULL, (HBRUSH)(COLOR_WINDOW), NULL, wndclassname, NULL};
if(!RegisterClassEx(&wcex)) return 0;
if(!(np2_hThreadKeyHookhWnd = CreateWindow(wndclassname, _T("NP2 Key Hook"), WS_POPUPWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, g_hInstance, NULL))) return 0;
ShowWindow( np2_hThreadKeyHookhWnd, SW_HIDE ); // 念のため
if(!hHook){
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hInstance, 0);
}
}
static void stop_hook_systemey()
{
// メイン メッセージ ループ
while( GetMessage(&msg, NULL, 0, 0) > 0 ) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if(hHook){
UnhookWindowsHookEx(hHook);
hHook = NULL;
}
np2_hThreadKeyHookhWnd = NULL;
np2_hThreadKeyHook = NULL;
UnregisterClass(wndclassname, g_hInstance);
return 0;
}
static void start_hook_systemkey()
{
unsigned int dwID;
if(!np2_hThreadKeyHook){
np2_hThreadKeyHook = (HANDLE)_beginthreadex(NULL, 0, np2_ThreadFuncKeyHook, NULL, 0, &dwID);
}
//if(!hHook){
// hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hInstance, 0);
//}
}
static void stop_hook_systemkey()
{
if(np2_hThreadKeyHook && np2_hThreadKeyHookhWnd){
np2_hThreadKeyHookexit = 1;
SendMessage(np2_hThreadKeyHookhWnd , WM_CLOSE , 0 , 0);
WaitForSingleObject(np2_hThreadKeyHook, INFINITE);
np2_hThreadKeyHook = NULL;
np2_hThreadKeyHookexit = 0;
}
//if(hHook){
// UnhookWindowsHookEx(hHook);
// hHook = NULL;
//}
}
#endif
@ -518,6 +575,7 @@ static void OpenSoundDevice(HWND hWnd)
pSoundMng->SetPCMVolume(SOUND_PCMSEEK, np2cfg.MOTORVOL);
pSoundMng->SetPCMVolume(SOUND_PCMSEEK1, np2cfg.MOTORVOL);
pSoundMng->SetPCMVolume(SOUND_RELAY1, np2cfg.MOTORVOL);
pSoundMng->SetMasterVolume(np2cfg.vol_master);
}
}
@ -663,7 +721,7 @@ static void OnCommand(HWND hWnd, WPARAM wParam)
OpenSoundDevice(hWnd);
}
#ifdef HOOK_SYSKEY
stop_hook_systemey();
stop_hook_systemkey();
#endif
pccore_cfgupdate();
pccore_reset();
@ -672,7 +730,7 @@ static void OnCommand(HWND hWnd, WPARAM wParam)
np2updatemenu();
#endif
#ifdef HOOK_SYSKEY
start_hook_systemey();
start_hook_systemkey();
#endif
}
break;
@ -1487,10 +1545,17 @@ static void OnCommand(HWND hWnd, WPARAM wParam)
update |= SYS_UPDATECFG;
break;
#ifdef HOOK_SYSKEY
case IDM_SYSKHOOK:
np2oscfg.syskhook = !np2oscfg.syskhook;
if(np2oscfg.syskhook){
start_hook_systemkey();
}else{
stop_hook_systemkey();
}
update |= SYS_UPDATECFG;
break;
#endif
case IDM_DISPCLOCK:
np2oscfg.DISPCLK ^= 1;
@ -1785,11 +1850,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
// Shiftキーが押下されていればリセット
pccore_cfgupdate();
#ifdef HOOK_SYSKEY
stop_hook_systemey();
stop_hook_systemkey();
#endif
pccore_reset();
#ifdef HOOK_SYSKEY
start_hook_systemey();
start_hook_systemkey();
#endif
}
}
@ -2382,18 +2447,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
sysmng_updatecaption(SYS_UPDATECAPTION_MISC);
tmrSysMngHide = SetTimer(hWnd, TMRSYSMNG_ID, 5000, SysMngHideTimerProc);
}else{
int cMaster = np2cfg.vol_master;
cMaster += GET_WHEEL_DELTA_WPARAM(wParam) / WHEEL_DELTA * 5;
if(cMaster < 0) cMaster = 0;
if(cMaster > 100) cMaster = 100;
if (np2cfg.vol_master != cMaster)
{
np2cfg.vol_master = cMaster;
soundmng_setvolume(cMaster);
if(np2oscfg.usemastervolume){
int cMaster = np2cfg.vol_master;
cMaster += GET_WHEEL_DELTA_WPARAM(wParam) / WHEEL_DELTA * 2;
if(cMaster < 0) cMaster = 0;
if(cMaster > 100) cMaster = 100;
if (np2cfg.vol_master != cMaster)
{
np2cfg.vol_master = cMaster;
soundmng_setvolume(cMaster);
}
sys_miscinfo.showvolume = 1;
sysmng_updatecaption(SYS_UPDATECAPTION_MISC);
tmrSysMngHide = SetTimer(hWnd, TMRSYSMNG_ID, 5000, SysMngHideTimerProc);
}
sys_miscinfo.showvolume = 1;
sysmng_updatecaption(SYS_UPDATECAPTION_MISC);
tmrSysMngHide = SetTimer(hWnd, TMRSYSMNG_ID, 5000, SysMngHideTimerProc);
}
}
break;
@ -2439,11 +2506,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
case NP2CMD_RESET:
pccore_cfgupdate();
#ifdef HOOK_SYSKEY
stop_hook_systemey();
stop_hook_systemkey();
#endif
pccore_reset();
#ifdef HOOK_SYSKEY
start_hook_systemey();
start_hook_systemkey();
#endif
break;
}
@ -2828,7 +2895,7 @@ void loadNP2INI(const OEMCHAR *fname){
#endif
#ifdef HOOK_SYSKEY
stop_hook_systemey();
stop_hook_systemkey();
#endif
LPTSTR lpFilenameBuf = (LPTSTR)malloc((_tcslen(fname)+1)*sizeof(TCHAR));
@ -3080,7 +3147,7 @@ void loadNP2INI(const OEMCHAR *fname){
sysmng_updatecaption(SYS_UPDATECAPTION_ALL);
#ifdef HOOK_SYSKEY
start_hook_systemey();
start_hook_systemkey();
#endif
}
@ -3394,7 +3461,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
sysmng_updatecaption(SYS_UPDATECAPTION_ALL);
#ifdef HOOK_SYSKEY
start_hook_systemey();
start_hook_systemkey();
#endif
lateframecount = 0;
@ -3485,7 +3552,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
}
#ifdef HOOK_SYSKEY
stop_hook_systemey();
stop_hook_systemkey();
#endif
// 画面表示倍率を保存

View File

@ -110,6 +110,7 @@ typedef struct {
UINT8 readonly; // No save changed settings
UINT8 usewheel; // Use mouse wheel
UINT8 tickmode; // Force Set Tick Counter Mode
UINT8 usemastervolume; // Use MAster Volume
} NP2OSCFG;

View File

@ -96,7 +96,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions);SUPPORT_KAI_IMAGES</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;SUPPORT_LARGE_HDD;SUPPORT_NET;SUPPORT_LGY98;SUPPORT_WAB;SUPPORT_CL_GD5430;SUPPORT_VPCVHD;SUPPORT_KAI_IMAGES;SUPPORT_NVL_IMAGES;SUPPORT_FMGEN;SUPPORT_SOUND_SB16;SUPPORT_GPIB;SUPPORT_SCRN_DIRECT3D;HOOK_SYSKEY;ALLOW_MULTIRUN;USE_MAME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.\;.\x86;..\;..\common;..\fdd;..\i286x;..\mem;..\io;..\cbus;..\network;..\vram;..\sound;..\generic;..\zlib;\VST_SDK</AdditionalIncludeDirectories>
</ClCompile>
<Link>
@ -113,7 +113,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;SUPPORT_LARGE_HDD;SUPPORT_NET;SUPPORT_LGY98;SUPPORT_WAB;SUPPORT_CL_GD5430;SUPPORT_VPCVHD;SUPPORT_KAI_IMAGES;SUPPORT_NVL_IMAGES;SUPPORT_FMGEN;SUPPORT_SOUND_SB16;SUPPORT_GPIB;SUPPORT_SCRN_DIRECT3D;HOOK_SYSKEY;ALLOW_MULTIRUN;USE_MAME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.\;.\x64;..\;..\common;..\fdd;..\i286c;..\mem;..\io;..\cbus;..\network;..\vram;..\sound;..\generic;..\zlib;\VST_SDK</AdditionalIncludeDirectories>
</ClCompile>
<Link>
@ -139,7 +139,7 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;SUPPORT_KAI_IMAGES;ALLOW_MULTIRUN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;SUPPORT_LARGE_HDD;SUPPORT_NET;SUPPORT_LGY98;SUPPORT_WAB;SUPPORT_CL_GD5430;SUPPORT_VPCVHD;SUPPORT_KAI_IMAGES;SUPPORT_NVL_IMAGES;SUPPORT_FMGEN;SUPPORT_SOUND_SB16;SUPPORT_GPIB;SUPPORT_SCRN_DIRECT3D;HOOK_SYSKEY;ALLOW_MULTIRUN;USE_MAME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.\;.\x86;..\;..\common;..\fdd;..\i286x;..\mem;..\io;..\cbus;..\network;..\vram;..\sound;..\generic;..\zlib;\VST_SDK</AdditionalIncludeDirectories>
</ClCompile>
<Link>
@ -160,7 +160,7 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;SUPPORT_KAI_IMAGES;SUPPORT_WAB;SUPPORT_CL_GD5430;SUPPORT_NET;SUPPORT_LGY98;SUPPORT_VPCVHD;HOOK_SYSKEY;ALLOW_MULTIRUN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;SUPPORT_LARGE_HDD;SUPPORT_NET;SUPPORT_LGY98;SUPPORT_WAB;SUPPORT_CL_GD5430;SUPPORT_VPCVHD;SUPPORT_KAI_IMAGES;SUPPORT_NVL_IMAGES;SUPPORT_FMGEN;SUPPORT_SOUND_SB16;SUPPORT_GPIB;SUPPORT_SCRN_DIRECT3D;HOOK_SYSKEY;ALLOW_MULTIRUN;USE_MAME;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>.\;.\x64;..\;..\common;..\fdd;..\i286c;..\mem;..\io;..\cbus;..\network;..\vram;..\sound;..\generic;..\zlib;\VST_SDK</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile>
@ -202,11 +202,14 @@
<ClCompile Include="..\cbus\board26k.c" />
<ClCompile Include="..\cbus\board86.c" />
<ClCompile Include="..\cbus\boardpx.c" />
<ClCompile Include="..\cbus\boardsb16.c" />
<ClCompile Include="..\cbus\boardso.c" />
<ClCompile Include="..\cbus\boardspb.c" />
<ClCompile Include="..\cbus\boardx2.c" />
<ClCompile Include="..\cbus\cbuscore.c" />
<ClCompile Include="..\cbus\cs4231io.c" />
<ClCompile Include="..\cbus\ct1741io.c" />
<ClCompile Include="..\cbus\ct1745io.c" />
<ClCompile Include="..\cbus\ideio.c" />
<ClCompile Include="..\cbus\mpu98ii.c" />
<ClCompile Include="..\cbus\pc9861k.c" />
@ -257,6 +260,7 @@
<ClCompile Include="..\fdd\sxsi.c" />
<ClCompile Include="..\fdd\sxsicd.c" />
<ClCompile Include="..\fdd\sxsihdd.c" />
<ClCompile Include="..\fdd\sxsihdd_nvl.c" />
<ClCompile Include="..\font\font.c" />
<ClCompile Include="..\font\fontdata.c" />
<ClCompile Include="..\font\fontfm7.c" />
@ -596,11 +600,14 @@
<ClInclude Include="..\cbus\board26k.h" />
<ClInclude Include="..\cbus\board86.h" />
<ClInclude Include="..\cbus\boardpx.h" />
<ClInclude Include="..\cbus\boardsb16.h" />
<ClInclude Include="..\cbus\boardso.h" />
<ClInclude Include="..\cbus\boardspb.h" />
<ClInclude Include="..\cbus\boardx2.h" />
<ClInclude Include="..\cbus\cbuscore.h" />
<ClInclude Include="..\cbus\cs4231io.h" />
<ClInclude Include="..\cbus\ct1741io.h" />
<ClInclude Include="..\cbus\ct1745io.h" />
<ClInclude Include="..\cbus\ideio.h" />
<ClInclude Include="..\cbus\mpu98ii.h" />
<ClInclude Include="..\cbus\pc9861k.h" />
@ -724,7 +731,24 @@
<ClInclude Include="..\sound\beep.h" />
<ClInclude Include="..\sound\cs4231.h" />
<ClInclude Include="..\sound\fmboard.h" />
<ClInclude Include="..\sound\fmgen\fmgen_diag.h" />
<ClInclude Include="..\sound\fmgen\fmgen_file.h" />
<ClInclude Include="..\sound\fmgen\fmgen_fmgen.h" />
<ClInclude Include="..\sound\fmgen\fmgen_fmgeninl.h" />
<ClInclude Include="..\sound\fmgen\fmgen_fmgwrap.h" />
<ClInclude Include="..\sound\fmgen\fmgen_fmtimer.h" />
<ClInclude Include="..\sound\fmgen\fmgen_headers.h" />
<ClInclude Include="..\sound\fmgen\fmgen_misc.h" />
<ClInclude Include="..\sound\fmgen\fmgen_opm.h" />
<ClInclude Include="..\sound\fmgen\fmgen_opna.h" />
<ClInclude Include="..\sound\fmgen\fmgen_psg.h" />
<ClInclude Include="..\sound\fmgen\fmgen_types.h" />
<ClInclude Include="..\sound\getsnd\getsnd.h" />
<ClInclude Include="..\sound\mame\driver.h" />
<ClInclude Include="..\sound\mame\fm.h" />
<ClInclude Include="..\sound\mame\fmopl.h" />
<ClInclude Include="..\sound\mame\ymdeltat.h" />
<ClInclude Include="..\sound\mame\ymf262.h" />
<ClInclude Include="..\sound\opl3.h" />
<ClInclude Include="..\sound\oplgen.h" />
<ClInclude Include="..\sound\oplgencfg.h" />

View File

@ -247,6 +247,12 @@
<Filter Include="ソース ファイル\sound\mame">
<UniqueIdentifier>{6733dfde-dbb2-424e-971c-aa456d15000c}</UniqueIdentifier>
</Filter>
<Filter Include="ヘッダー ファイル\sound\fmgen">
<UniqueIdentifier>{1fbae04d-6163-4fc0-99e3-af4a99fad012}</UniqueIdentifier>
</Filter>
<Filter Include="ヘッダー ファイル\sound\mame">
<UniqueIdentifier>{69e55071-1b40-4cc2-928d-d45bc986a5af}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\calendar.c">
@ -1182,6 +1188,18 @@
<ClCompile Include="scrnmng_d3d.cpp">
<Filter>ソース ファイル\win9x</Filter>
</ClCompile>
<ClCompile Include="..\fdd\sxsihdd_nvl.c">
<Filter>ソース ファイル\fdd</Filter>
</ClCompile>
<ClCompile Include="..\cbus\boardsb16.c">
<Filter>ソース ファイル\cbus</Filter>
</ClCompile>
<ClCompile Include="..\cbus\ct1741io.c">
<Filter>ソース ファイル\cbus</Filter>
</ClCompile>
<ClCompile Include="..\cbus\ct1745io.c">
<Filter>ソース ファイル\cbus</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\calendar.h">
@ -2021,6 +2039,66 @@
<ClInclude Include="scrnmng_d3d.h">
<Filter>ヘッダー ファイル\win9x</Filter>
</ClInclude>
<ClInclude Include="..\sound\mame\driver.h">
<Filter>ヘッダー ファイル\sound\mame</Filter>
</ClInclude>
<ClInclude Include="..\sound\mame\fm.h">
<Filter>ヘッダー ファイル\sound\mame</Filter>
</ClInclude>
<ClInclude Include="..\sound\mame\fmopl.h">
<Filter>ヘッダー ファイル\sound\mame</Filter>
</ClInclude>
<ClInclude Include="..\sound\mame\ymdeltat.h">
<Filter>ヘッダー ファイル\sound\mame</Filter>
</ClInclude>
<ClInclude Include="..\sound\mame\ymf262.h">
<Filter>ヘッダー ファイル\sound\mame</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_diag.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_file.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_fmgen.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_fmgeninl.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_fmgwrap.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_fmtimer.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_headers.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_misc.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_opm.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_opna.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_psg.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\sound\fmgen\fmgen_types.h">
<Filter>ヘッダー ファイル\sound\fmgen</Filter>
</ClInclude>
<ClInclude Include="..\cbus\boardsb16.h">
<Filter>ヘッダー ファイル\cbus</Filter>
</ClInclude>
<ClInclude Include="..\cbus\ct1741io.h">
<Filter>ヘッダー ファイル\cbus</Filter>
</ClInclude>
<ClInclude Include="..\cbus\ct1745io.h">
<Filter>ヘッダー ファイル\cbus</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<NASM Include="..\i286x\cpumem.x86">

View File

@ -413,6 +413,9 @@
#define IDS_GD5430_GA98NBIC 30620
#define IDS_GD5430_GA98NBII 30621
#define IDS_GD5430_GA98NBIV 30622
#define IDS_GD5430_AUTO_XE_G1_PCI 30690
#define IDS_GD5430_AUTO_XE_G2_PCI 30691
#define IDS_GD5430_AUTO_XE_G4_PCI 30692
#define IDS_GD5430_AUTO_XE_WA_PCI 30693
#define IDS_GD5430_AUTO_XE_W4_PCI 30694
#define IDS_GD5430_AUTO_XE_WS_PCI 30695
@ -682,9 +685,6 @@
#define IDM_MEM646 40669
#define IDM_MEM1206 40670
#define IDM_MEM2306 49671
#define IDM_FPU80 49680
#define IDM_FPU64 49681
#define IDM_FPU64INT 49682
#define IDM_MOUSE 40671
#define IDM_SERIAL1 40672
#define IDM_MPUPC98 40673
@ -694,6 +694,9 @@
#define IDM_WABOPT 40677
#define IDM_HOSTDRVOPT 40678
#define IDM_PCIOPT 40679
#define IDM_FPU80 49680
#define IDM_FPU64 49681
#define IDM_FPU64INT 49682
#define IDM_MOUSENC 40689
#define IDM_MOUSERAW 40690
#define IDM_MOUSE30X 40691

View File

@ -550,7 +550,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "LGY-98"
FONT 9, "MS Sans Serif", 0, 0, 0x0
BEGIN
CONTROL "Enabled",IDC_LGY98ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,40,10
CONTROL "Enable",IDC_LGY98ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,40,10
LTEXT "I/O port",IDC_STATIC,8,26,30,8
COMBOBOX IDC_LGY98IO,40,24,40,52,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Interrupt",IDC_STATIC,104,26,30,8
@ -573,7 +573,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "CL-GD5430"
FONT 9, "MS Sans Serif", 0, 0, 0x0
BEGIN
CONTROL "Enabled",IDC_GD5430ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,40,10
CONTROL "Enable",IDC_GD5430ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,40,10
LTEXT "Type",IDC_STATIC,8,26,30,8
COMBOBOX IDC_GD5430TYPE,40,24,136,52,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Use Fake Hardware Cursor",IDC_GD5430FAKECURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,44,100,10
@ -616,7 +616,7 @@ CAPTION "Hostdrv Configure"
CLASS "np2dialog"
FONT 9, "MS Sans Serif", 0, 0, 0x0
BEGIN
CONTROL "Enabled",IDC_HOSTDRVENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
CONTROL "Enable",IDC_HOSTDRVENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
LTEXT "Shared Directory",IDC_STATIC,8,23,76,8
COMBOBOX IDC_HOSTDRVDIR,8,33,130,12, CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Browse...",IDC_HOSTDRVBROWSE,140,32,44,14
@ -633,7 +633,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "General"
FONT 9, "MS Sans Serif", 0, 0, 0x0
BEGIN
CONTROL "Enabled",IDC_PCIENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
CONTROL "Enable",IDC_PCIENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
LTEXT "PCMC Type",IDC_STATIC,8,26,30,8
COMBOBOX IDC_PCIPCMCTYPE,40,24,136,52,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Use BIOS32 (not recommended)",IDC_PCIBIOS32,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,44,140,10
@ -1577,6 +1577,9 @@ BEGIN
IDS_GD5430_GA98NBII "I-O DATA GA-98NBII"
IDS_GD5430_GA98NBIV "I-O DATA GA-98NBIV"
IDS_GD5430_96 "PC-9801-96(PC-9801B3-E02)"
IDS_GD5430_AUTO_XE_G1_PCI "Auto Select(Xe10, GA-98NBI/C, PCI)"
IDS_GD5430_AUTO_XE_G2_PCI "Auto Select(Xe10, GA-98NBII, PCI)"
IDS_GD5430_AUTO_XE_G4_PCI "Auto Select(Xe10, GA-98NBIV, PCI)"
IDS_GD5430_AUTO_XE_WA_PCI "Auto Select(Xe10, WAB-S, PCI)"
IDS_GD5430_AUTO_XE_WS_PCI "Auto Select(Xe10, WSN-A2F, PCI)"
IDS_GD5430_AUTO_XE_W4_PCI "Auto Select(Xe10, WSN-A4F, PCI)"

View File

@ -25,8 +25,8 @@ IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np2.mnf"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,8,6,47
PRODUCTVERSION 0,8,6,47
FILEVERSION 0,8,6,48
PRODUCTVERSION 0,8,6,48
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -42,10 +42,10 @@ BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileVersion", "0, 8, 6, 47\0"
VALUE "FileVersion", "0, 8, 6, 48\0"
VALUE "LegalCopyright", "Nekosan development team\0"
VALUE "ProductVersion", "0, 8, 6, 47\0"
VALUE "ProductVersion", "0, 8, 6, 48\0"
#ifdef _USRDLL
VALUE "FileDescription", "PC-98x1series emulator resource file\0"
VALUE "ProductName", "Neko Project II resource file\0"

View File

@ -543,7 +543,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "LGY-98"
FONT 9, " Pゴシック", 0, 0, 0x0
BEGIN
CONTROL "Enabled",IDC_LGY98ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,40,10
CONTROL "Enable",IDC_LGY98ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,40,10
LTEXT "I/O port",IDC_STATIC,8,26,30,8
COMBOBOX IDC_LGY98IO,40,24,40,52,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "Interrupt",IDC_STATIC,104,26,30,8
@ -566,7 +566,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "CL-GD54xx"
FONT 9, " Pゴシック", 0, 0, 0x0
BEGIN
CONTROL "Enabled",IDC_GD5430ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,40,10
CONTROL "Enable",IDC_GD5430ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,40,10
LTEXT "Type",IDC_STATIC,8,26,30,8
COMBOBOX IDC_GD5430TYPE,40,24,136,52,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Use Fake Hardware Cursor",IDC_GD5430FAKECURSOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,44,100,10
@ -609,7 +609,7 @@ CAPTION "Hostdrv Configure"
CLASS "np2dialog"
FONT 9, " Pゴシック", 0, 0, 0x0
BEGIN
CONTROL "Enabled",IDC_HOSTDRVENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
CONTROL "Enable",IDC_HOSTDRVENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
LTEXT "Shared Directory",IDC_STATIC,8,23,76,8
COMBOBOX IDC_HOSTDRVDIR,8,33,130,12, CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Browse...",IDC_HOSTDRVBROWSE,140,32,44,14
@ -626,7 +626,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "General"
FONT 9, " Pゴシック", 0, 0, 0x0
BEGIN
CONTROL "Enabled",IDC_PCIENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
CONTROL "Enable",IDC_PCIENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,140,10
LTEXT "PCMC Type",IDC_STATIC,8,26,30,8
COMBOBOX IDC_PCIPCMCTYPE,40,24,136,52,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
CONTROL "Use BIOS32 (not recommended)",IDC_PCIBIOS32,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,44,140,10
@ -1081,7 +1081,7 @@ BEGIN
MENUITEM "&Mouse rapid", IDM_MSRAPID
MENUITEM "&ITF work", IDM_ITFWORK
// MENUITEM "Fix &MMTimer", IDM_TIMERFIX
MENUITEM "&Skip over 16MB memcheck", IDM_SKIP16MEMCHK
// MENUITEM "&Skip over 16MB memcheck", IDM_SKIP16MEMCHK
MENUITEM "Fast m&emcheck", IDM_FASTMEMCHK
MENUITEM SEPARATOR
MENUITEM "&Help...", IDM_HELP
@ -1582,6 +1582,9 @@ BEGIN
IDS_GD5430_GA98NBII "I-O DATA GA-98NBII"
IDS_GD5430_GA98NBIV "I-O DATA GA-98NBIV"
IDS_GD5430_96 "PC-9801-96(PC-9801B3-E02)"
IDS_GD5430_AUTO_XE_G1_PCI "Auto Select(Xe10, GA-98NBI/C, PCI)"
IDS_GD5430_AUTO_XE_G2_PCI "Auto Select(Xe10, GA-98NBII, PCI)"
IDS_GD5430_AUTO_XE_G4_PCI "Auto Select(Xe10, GA-98NBIV, PCI)"
IDS_GD5430_AUTO_XE_WA_PCI "Auto Select(Xe10, WAB-S, PCI)"
IDS_GD5430_AUTO_XE_WS_PCI "Auto Select(Xe10, WSN-A2F, PCI)"
IDS_GD5430_AUTO_XE_W4_PCI "Auto Select(Xe10, WSN-A4F, PCI)"

View File

@ -25,8 +25,8 @@ IDR_MANIFEST IRT_MANIFEST MOVEABLE PURE "..\\np2.mnf"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,8,6,46
PRODUCTVERSION 0,8,6,46
FILEVERSION 0,8,6,48
PRODUCTVERSION 0,8,6,48
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -42,10 +42,10 @@ BEGIN
BLOCK "041103a4"
BEGIN
VALUE "CompanyName", "\0"
VALUE "FileVersion", "0, 8, 6, 46\0"
VALUE "FileVersion", "0, 8, 6, 48\0"
VALUE "LegalCopyright", "ねこさん開発ちーむ\0"
VALUE "ProductVersion", "0, 8, 6, 46\0"
VALUE "ProductVersion", "0, 8, 6, 48\0"
#ifdef _USRDLL
VALUE "FileDescription", "PC-98x1series emulator resource file\0"
VALUE "ProductName", "Neko Project II resource file\0"

Binary file not shown.

View File

@ -1579,6 +1579,9 @@ BEGIN
IDS_GD5430_GA98NBII "I-O DATA GA-98NBII"
IDS_GD5430_GA98NBIV "I-O DATA GA-98NBIV"
IDS_GD5430_96 "PC-9801-96(PC-9801B3-E02)"
IDS_GD5430_AUTO_XE_G1_PCI "Ž©“®Ið(Xe10, GA-98NBI/C, PCI)"
IDS_GD5430_AUTO_XE_G2_PCI "Ž©“®Ið(Xe10, GA-98NBII, PCI)"
IDS_GD5430_AUTO_XE_G4_PCI "Ž©“®Ið(Xe10, GA-98NBIV, PCI)"
IDS_GD5430_AUTO_XE_WA_PCI "Ž©“®Ið(Xe10, WAB-S, PCI)"
IDS_GD5430_AUTO_XE_WS_PCI "Ž©“®Ið(Xe10, WSN-A2F, PCI)"
IDS_GD5430_AUTO_XE_W4_PCI "Ž©“®Ið(Xe10, WSN-A4F, PCI)"

View File

@ -256,6 +256,19 @@ void scrnmng_setheight(int posy, int height) {
}
}
void scrnmng_setsize(int posx, int posy, int width, int height) {
#ifdef SUPPORT_SCRN_DIRECT3D
if(scrnmng_current_drawtype==DRAWTYPE_INVALID) return;
if(scrnmng_current_drawtype==DRAWTYPE_DIRECT3D){
scrnmngD3D_setsize(posx, posy, width, height);
}else
#endif
{
scrnmngDD_setsize(posx, posy, width, height);
}
}
const SCRNSURF *scrnmng_surflock(void) {
#ifdef SUPPORT_SCRN_DIRECT3D

View File

@ -92,6 +92,7 @@ void scrnmng_destroy(void);
void scrnmng_setwidth(int posx, int width);
void scrnmng_setextend(int extend);
void scrnmng_setheight(int posy, int height);
void scrnmng_setsize(int posx, int posy, int width, int height);
#define scrnmng_setbpp(commendablebpp)
const SCRNSURF *scrnmng_surflock(void);
void scrnmng_surfunlock(const SCRNSURF *surf);

View File

@ -788,9 +788,12 @@ BRESULT scrnmngD3D_create(UINT8 scrnmode) {
height = np2oscfg.fscrn_cy;
#ifdef SUPPORT_WAB
if(!np2wabwnd.multiwindow && (np2wab.relay&0x3)){
if(np2wab.realWidth>=640 && np2wab.realHeight>=400){
width = np2wab.realWidth;
height = np2wab.realHeight;
if(scrnstat.width>=640 && scrnstat.height>=400){
//if(np2wab.realWidth>=640 && np2wab.realHeight>=400){
//width = np2wab.realWidth;
//height = np2wab.realHeight;
width = scrnstat.width;//np2wab.realWidth;
height = scrnstat.height;//np2wab.realHeight;
}else{
width = 640;
height = 480;
@ -868,10 +871,11 @@ BRESULT scrnmngD3D_create(UINT8 scrnmode) {
RECT crect;
#ifdef SUPPORT_WAB
if(!np2wabwnd.multiwindow && (np2wab.relay&0x3)!=0 && np2wab.realWidth>=640 && np2wab.realHeight>=400){
//if(!np2wabwnd.multiwindow && (np2wab.relay&0x3)!=0 && np2wab.realWidth>=640 && np2wab.realHeight>=400){
if(!np2wabwnd.multiwindow && (np2wab.relay&0x3)!=0 && scrnstat.width>=640 && scrnstat.height>=400){
// 実サイズに
width = bufwidth = np2wab.realWidth;
height = bufheight = np2wab.realHeight;
width = bufwidth = scrnstat.width;//np2wab.realWidth;
height = bufheight = scrnstat.height;//np2wab.realHeight;
bufwidth++; // +1しないと駄目らしい
bufheight++; // +1しないと駄目らしい
}else{
@ -1182,6 +1186,33 @@ void scrnmngD3D_setheight(int posy, int height) {
}
}
void scrnmngD3D_setsize(int posx, int posy, int width, int height) {
if(scrnstat.width != width || scrnstat.height != height){
scrnstat.width = width;
scrnstat.height = height;
if(d3d.d3dbacksurf){
if (d3d.scrnmode & SCRNMODE_FULLSCREEN) {
renewalclientsize(TRUE);
update_backbuffer2size();
clearoutfullscreen();
}else{
DEVMODE devmode;
if (EnumDisplaySettings(NULL, ENUM_REGISTRY_SETTINGS, &devmode)) {
while (((width * scrnstat.multiple) >> 3) >= (int)devmode.dmPelsWidth-32){
scrnstat.multiple--;
if(scrnstat.multiple==1) break;
}
}
d3d_enter_criticalsection();
scrnmngD3D_destroy();
scrnmngD3D_create(g_scrnmode);
d3d_leave_criticalsection();
}
}
}
}
const SCRNSURF *scrnmngD3D_surflock(void) {
D3DLOCKED_RECT destrect;

View File

@ -11,6 +11,7 @@ void scrnmngD3D_destroy(void);
void scrnmngD3D_setwidth(int posx, int width);
void scrnmngD3D_setextend(int extend);
void scrnmngD3D_setheight(int posy, int height);
void scrnmngD3D_setsize(int posx, int posy, int width, int height);
#define scrnmngD3D_setbpp(commendablebpp)
const SCRNSURF *scrnmngD3D_surflock(void);
void scrnmngD3D_surfunlock(const SCRNSURF *surf);

View File

@ -972,6 +972,13 @@ void scrnmngDD_setheight(int posy, int height) {
renewalclientsize(TRUE);
}
void scrnmngDD_setsize(int posx, int posy, int width, int height) {
scrnstat.width = width;
scrnstat.height = height;
renewalclientsize(TRUE);
}
const SCRNSURF *scrnmngDD_surflock(void) {
DDSURFACEDESC destscrn;

View File

@ -9,6 +9,7 @@ void scrnmngDD_destroy(void);
void scrnmngDD_setwidth(int posx, int width);
void scrnmngDD_setextend(int extend);
void scrnmngDD_setheight(int posy, int height);
void scrnmngDD_setsize(int posx, int posy, int width, int height);
#define scrnmngDD_setbpp(commendablebpp)
const SCRNSURF *scrnmngDD_surflock(void);
void scrnmngDD_surfunlock(const SCRNSURF *surf);

View File

@ -58,6 +58,7 @@ void CSoundMng::Initialize()
::CoInitializeEx(NULL, COINIT_MULTITHREADED);
#endif // defined(SUPPORT_ASIO) || defined(SUPPORT_WASAPI)
CSoundDeviceDSound3::s_mastervol_available = np2oscfg.usemastervolume ? true : false;
CSoundDeviceDSound3::Initialize();
#if defined(SUPPORT_WASAPI)
CSoundDeviceWasapi::Initialize();

View File

@ -20,11 +20,15 @@
#define DSBVOLUME_MIN (-10000) /*!< ヴォリューム最小値 */
#endif
#define NP2VOLUME2DSDB(a) ((LONG)(10*log10((a)/100.0f)*100))
#define NP2VOLUME2DSDB(a) ((LONG)(10*log((a)/100.0f)/log(2.0)*100))
//! デバイス リスト
std::vector<DSound3Device> CSoundDeviceDSound3::sm_devices;
//! マスタボリューム使用可能?
bool CSoundDeviceDSound3::s_mastervol_available = true;
/**
* @brief RIFF chunk
*/
@ -206,7 +210,7 @@ UINT CSoundDeviceDSound3::CreateStream(UINT nSamplingRate, UINT nChannels, UINT
DSBUFFERDESC dsbdesc;
ZeroMemory(&dsbdesc, sizeof(dsbdesc));
dsbdesc.dwSize = sizeof(dsbdesc);
dsbdesc.dwFlags = DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME |
dsbdesc.dwFlags = DSBCAPS_CTRLPAN | (s_mastervol_available ? DSBCAPS_CTRLVOLUME : 0) |
DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLPOSITIONNOTIFY |
DSBCAPS_STICKYFOCUS | DSBCAPS_GETCURRENTPOSITION2;
dsbdesc.lpwfxFormat = reinterpret_cast<LPWAVEFORMATEX>(&pcmwf);
@ -344,27 +348,33 @@ void CSoundDeviceDSound3::SetMasterVolume(int nVolume)
{
m_mastervolume = nVolume;
if (m_lpDSStream)
{
if(m_mastervolume == 0){
m_lpDSStream->SetVolume(DSBVOLUME_MIN);
}else{
m_lpDSStream->SetVolume(NP2VOLUME2DSDB(m_mastervolume));
if(s_mastervol_available){
if (m_lpDSStream)
{
if(m_mastervolume == 0){
m_lpDSStream->SetVolume(DSBVOLUME_MIN);
}else if(m_mastervolume == 100){
m_lpDSStream->SetVolume(DSBVOLUME_MAX);
}else{
m_lpDSStream->SetVolume(NP2VOLUME2DSDB(m_mastervolume));
}
}
for( auto it = m_pcm.begin(); it != m_pcm.end() ; ++it ) {
LPDIRECTSOUNDBUFFER lpDSBuffer = it->second;
int volume = 100;
if(it->first < PCMVOLUME_MAXCOUNT){
volume = m_pcmvolume[it->first];
}
volume *= m_mastervolume;
if(volume == 0){
lpDSBuffer->SetVolume(DSBVOLUME_MIN);
}else if(volume == 100){
lpDSBuffer->SetVolume(DSBVOLUME_MAX);
}else{
lpDSBuffer->SetVolume(NP2VOLUME2DSDB(volume));
}
}
}
for( auto it = m_pcm.begin(); it != m_pcm.end() ; ++it ) {
LPDIRECTSOUNDBUFFER lpDSBuffer = it->second;
int volume = 100;
if(it->first < PCMVOLUME_MAXCOUNT){
volume = m_pcmvolume[it->first];
}
volume *= m_mastervolume;
if(volume == 0){
lpDSBuffer->SetVolume(DSBVOLUME_MIN);
}else{
lpDSBuffer->SetVolume(NP2VOLUME2DSDB(volume));
}
}
}
/**
@ -550,7 +560,7 @@ LPDIRECTSOUNDBUFFER CSoundDeviceDSound3::CreateWaveBuffer(LPCTSTR lpFilename)
DSBUFFERDESC dsbdesc;
ZeroMemory(&dsbdesc, sizeof(dsbdesc));
dsbdesc.dwSize = sizeof(dsbdesc);
dsbdesc.dwFlags = DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY | DSBCAPS_STATIC | DSBCAPS_STICKYFOCUS | DSBCAPS_GETCURRENTPOSITION2;
dsbdesc.dwFlags = DSBCAPS_CTRLPAN | (s_mastervol_available ? DSBCAPS_CTRLVOLUME : 0) | DSBCAPS_CTRLFREQUENCY | DSBCAPS_STATIC | DSBCAPS_STICKYFOCUS | DSBCAPS_GETCURRENTPOSITION2;
dsbdesc.dwBufferBytes = chunk.nSize;
dsbdesc.lpwfxFormat = reinterpret_cast<LPWAVEFORMATEX>(&pcmwf);
@ -617,22 +627,26 @@ void CSoundDeviceDSound3::UnloadPCM(UINT nNum)
*/
void CSoundDeviceDSound3::SetPCMVolume(UINT nNum, int nVolume)
{
std::map<UINT, LPDIRECTSOUNDBUFFER>::iterator it = m_pcm.find(nNum);
if (it != m_pcm.end())
{
LPDIRECTSOUNDBUFFER lpDSBuffer = it->second;
int volume = nVolume;
if(nNum < PCMVOLUME_MAXCOUNT){
m_pcmvolume[nNum] = nVolume;
}
volume *= m_mastervolume;
if(s_mastervol_available){
std::map<UINT, LPDIRECTSOUNDBUFFER>::iterator it = m_pcm.find(nNum);
if (it != m_pcm.end())
{
LPDIRECTSOUNDBUFFER lpDSBuffer = it->second;
int volume = nVolume;
if(nNum < PCMVOLUME_MAXCOUNT){
m_pcmvolume[nNum] = nVolume;
}
volume *= m_mastervolume;
if(volume == 0){
lpDSBuffer->SetVolume(DSBVOLUME_MIN);
}else{
lpDSBuffer->SetVolume(NP2VOLUME2DSDB(volume));
if(volume == 0){
lpDSBuffer->SetVolume(DSBVOLUME_MIN);
}else if(volume == 100){
lpDSBuffer->SetVolume(DSBVOLUME_MAX);
}else{
lpDSBuffer->SetVolume(NP2VOLUME2DSDB(volume));
}
//lpDSBuffer->SetVolume((((DSBVOLUME_MAX - DSBVOLUME_MIN) * nVolume) / 100) + DSBVOLUME_MIN);
}
//lpDSBuffer->SetVolume((((DSBVOLUME_MAX - DSBVOLUME_MIN) * nVolume) / 100) + DSBVOLUME_MIN);
}
}

View File

@ -28,6 +28,8 @@ struct DSound3Device
class CSoundDeviceDSound3 : public CSoundDeviceBase, protected CThreadBase
{
public:
static bool s_mastervol_available; //!< マスタボリューム使用可能?
static void Initialize();
static void EnumerateDevices(std::vector<LPCTSTR>& devices);

View File

@ -321,7 +321,7 @@ AM_CPPFLAGS= -I$(real_topsrcdir) \
-I$(real_topsrcdir)/wab \
$(GTK_CFLAGS) $(GDK_CFLAGS) $(GDK_PIXBUF_CFLAGS) $(SDL_CFLAGS) $(LIBUSB1_CFLAGS) \
$(X11_CFLAGS) $(XEXT_CFLAGS) \
-DNP2_X11 -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DSUPPORT_NET -DSUPPORT_LGY98 -DSUPPORT_WAB -DSUPPORT_CL_GD5430 -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES
-DNP2_X11 -DSUPPORT_LARGE_HDD -DSUPPORT_VPCVHD -DSUPPORT_KAI_IMAGES -DHOOK_SYSKEY -DALLOW_MULTIRUN -DSUPPORT_NET -DSUPPORT_LGY98 -DUSE_MAME -DSUPPORT_SOUND_SB16 -DSUPPORT_NVL_IMAGES -DSUPPORT_FMGEN -DSUPPORT_GPIB -DSUPPORT_FAST_MEMORYCHECK
if BUILD_ALL
AM_CPPFLAGS+= -DX11_BUILD_ALL
endif
@ -406,7 +406,7 @@ IA32_CPPFLAGS= -I$(real_topsrcdir)/i386c \
-I$(real_topsrcdir)/i386c/ia32/instructions/sse \
-I$(real_topsrcdir)/i386c/ia32/instructions/sse2 \
-I$(real_topsrcdir)/i386c/ia32/instructions/sse3 \
-DCPUCORE_IA32 -DUSE_FPU -DSUPPORT_FPU_DOSBOX -DSUPPORT_FPU_DOSBOX2 -DSUPPORT_FPU_SOFTFLOAT -DSUPPORT_LARGE_MEMORY -DSUPPORT_GPIB -DSUPPORT_PCI -DUSE_MMX -DUSE_3DNOW -DUSE_SSE -DUSE_SSE2 -DUSE_SSE3 -DUSE_TSC -DUSE_FASTPAGING -DUSE_VME -DBIOS_IO_EMULATION -DSUPPORT_FAST_MEMORYCHECK
-DCPUCORE_IA32 -DUSE_FPU -DSUPPORT_FPU_DOSBOX -DSUPPORT_FPU_DOSBOX2 -DSUPPORT_FPU_SOFTFLOAT -DSUPPORT_LARGE_MEMORY -DSUPPORT_PCI -DUSE_MMX -DUSE_3DNOW -DUSE_SSE -DUSE_SSE2 -DUSE_SSE3 -DUSE_TSC -DUSE_FASTPAGING -DUSE_VME -DSUPPORT_WAB -DSUPPORT_CL_GD5430 -DBIOS_IO_EMULATION
if CPUCORE_IA32
if BUILD_ALL

View File

@ -39,17 +39,24 @@ static const char *cl_gd54xx_type_str[] = {
"PC-9821Xe10,Xa7e,Xb10 built-in",
"PC-9821Cb2 built-in",
"PC-9821Cx2 built-in",
#ifdef SUPPORT_PCI
"PC-9821 PCI CL-GD5446 built-in",
#endif
"MELCO WAB-S",
"MELCO WSN-A2F",
"MELCO WSN-A4F",
"I-O DATA GA-98NBI/C",
"I-O DATA GA-98NBII,IV",
"I-O DATA GA-98NBII",
"I-O DATA GA-98NBIV",
"PC-9801-96(PC-9801B3-E02)",
#ifdef SUPPORT_PCI
"Auto Select(Xe10, GA-98NBI/C), PCI",
"Auto Select(Xe10, GA-98NBII), PCI",
"Auto Select(Xe10, GA-98NBIV), PCI",
"Auto Select(Xe10, WAB-S), PCI",
"Auto Select(Xe10, WSN-A2F), PCI",
"Auto Select(Xe10, WSN-A4F), PCI",
#endif
"Auto Select(Xe10, WAB-S)",
"Auto Select(Xe10, WSN-A2F)",
"Auto Select(Xe10, WSN-A4F)",
@ -165,6 +172,7 @@ ok_button_clicked(GtkButton *b, gpointer d)
renewal = TRUE;
}
break;
#ifdef SUPPORT_PCI
case 7:
if(np2cfg.gd5430type != CIRRUS_98ID_PCI) {
np2cfg.gd5430type = CIRRUS_98ID_PCI;
@ -214,41 +222,121 @@ ok_button_clicked(GtkButton *b, gpointer d)
}
break;
case 15:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE_G1_PCI) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_G1_PCI;
renewal = TRUE;
}
break;
case 16:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE_G2_PCI) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_G2_PCI;
renewal = TRUE;
}
break;
case 17:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE_G4_PCI) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_G4_PCI;
renewal = TRUE;
}
break;
case 18:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE_WA_PCI) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_WA_PCI;
renewal = TRUE;
}
break;
case 16:
case 19:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE_WS_PCI) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_WS_PCI;
renewal = TRUE;
}
break;
case 17:
case 20:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE_W4_PCI) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE_W4_PCI;
renewal = TRUE;
}
break;
case 18:
case 21:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE10_WABS) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE10_WABS;
renewal = TRUE;
}
break;
case 19:
case 22:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE10_WSN2) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE10_WSN2;
renewal = TRUE;
}
break;
case 20:
case 23:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE10_WSN4) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE10_WSN4;
renewal = TRUE;
}
break;
#else
case 7:
if(np2cfg.gd5430type != CIRRUS_98ID_WAB) {
np2cfg.gd5430type = CIRRUS_98ID_WAB;
renewal = TRUE;
}
break;
case 8:
if(np2cfg.gd5430type != CIRRUS_98ID_WSN_A2F) {
np2cfg.gd5430type = CIRRUS_98ID_WSN_A2F;
renewal = TRUE;
}
break;
case 9:
if(np2cfg.gd5430type != CIRRUS_98ID_WSN) {
np2cfg.gd5430type = CIRRUS_98ID_WSN;
renewal = TRUE;
}
break;
case 10:
if(np2cfg.gd5430type != CIRRUS_98ID_GA98NBIC) {
np2cfg.gd5430type = CIRRUS_98ID_GA98NBIC;
renewal = TRUE;
}
break;
case 11:
if(np2cfg.gd5430type != CIRRUS_98ID_GA98NBII) {
np2cfg.gd5430type = CIRRUS_98ID_GA98NBII;
renewal = TRUE;
}
break;
case 12:
if(np2cfg.gd5430type != CIRRUS_98ID_GA98NBIV) {
np2cfg.gd5430type = CIRRUS_98ID_GA98NBIV;
renewal = TRUE;
}
break;
case 13:
if(np2cfg.gd5430type != CIRRUS_98ID_96) {
np2cfg.gd5430type = CIRRUS_98ID_96;
renewal = TRUE;
}
break;
case 14:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE10_WABS) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE10_WABS;
renewal = TRUE;
}
break;
case 15:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE10_WSN2) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE10_WSN2;
renewal = TRUE;
}
break;
case 16:
if(np2cfg.gd5430type != CIRRUS_98ID_AUTO_XE10_WSN4) {
np2cfg.gd5430type = CIRRUS_98ID_AUTO_XE10_WSN4;
renewal = TRUE;
}
break;
#endif
}
break;
}
@ -368,6 +456,7 @@ create_cl_gd54xx_note(void)
case CIRRUS_98ID_Cx2:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[6]);
break;
#ifdef SUPPORT_PCI
case CIRRUS_98ID_PCI:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[7]);
break;
@ -392,24 +481,65 @@ create_cl_gd54xx_note(void)
case CIRRUS_98ID_96:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[14]);
break;
case CIRRUS_98ID_AUTO_XE_WA_PCI:
case CIRRUS_98ID_AUTO_XE_G1_PCI:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[15]);
break;
case CIRRUS_98ID_AUTO_XE_WS_PCI:
case CIRRUS_98ID_AUTO_XE_G2_PCI:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[16]);
break;
case CIRRUS_98ID_AUTO_XE_W4_PCI:
case CIRRUS_98ID_AUTO_XE_G4_PCI:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[17]);
break;
case CIRRUS_98ID_AUTO_XE10_WABS:
case CIRRUS_98ID_AUTO_XE_WA_PCI:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[18]);
break;
case CIRRUS_98ID_AUTO_XE10_WSN2:
case CIRRUS_98ID_AUTO_XE_WS_PCI:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[19]);
break;
case CIRRUS_98ID_AUTO_XE10_WSN4:
case CIRRUS_98ID_AUTO_XE_W4_PCI:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[20]);
break;
case CIRRUS_98ID_AUTO_XE10_WABS:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[21]);
break;
case CIRRUS_98ID_AUTO_XE10_WSN2:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[22]);
break;
case CIRRUS_98ID_AUTO_XE10_WSN4:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[23]);
break;
#else
case CIRRUS_98ID_WAB:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[7]);
break;
case CIRRUS_98ID_WSN_A2F:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[8]);
break;
case CIRRUS_98ID_WSN:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[9]);
break;
case CIRRUS_98ID_GA98NBIC:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[10]);
break;
case CIRRUS_98ID_GA98NBII:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[11]);
break;
case CIRRUS_98ID_GA98NBIV:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[12]);
break;
case CIRRUS_98ID_96:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[13]);
break;
case CIRRUS_98ID_AUTO_XE10_WABS:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[14]);
break;
case CIRRUS_98ID_AUTO_XE10_WSN2:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[15]);
break;
case CIRRUS_98ID_AUTO_XE10_WSN4:
gtk_entry_set_text(GTK_ENTRY(cl_gd54xx_type_entry), cl_gd54xx_type_str[16]);
break;
#endif
}
/* Use Fake Hardware Cursor */

View File

@ -663,6 +663,8 @@ static INITBL iniitem[] = {
{"USE_CLGD", INITYPE_BOOL, &np2cfg.usegd5430, 0},
{"CLGDTYPE", INITYPE_UINT16, &np2cfg.gd5430type, 0},
{"CLGDFCUR", INITYPE_BOOL, &np2cfg.gd5430fakecur, 0},
{"GDMELOFS", INITYPE_UINT8, &np2cfg.gd5430melofs, 0},
{"GANBBSEX", INITYPE_BOOL, &np2cfg.ga98nb_bigscrn_ex, 0},
#endif
{"TIMERFIX", INITYPE_BOOL, &np2cfg.timerfix, 0},
@ -683,6 +685,10 @@ static INITBL iniitem[] = {
{"cpu_bran", INIRO_STR, np2cfg.cpu_brandstring_o, 63},
{"FPU_TYPE", INITYPE_UINT8, &np2cfg.fpu_type, 0},
#if defined(SUPPORT_FAST_MEMORYCHECK)
{"memckspd", INITYPE_UINT8, &np2cfg.memcheckspeed, 0},
#endif
{"USERAM_D", INITYPE_BOOL, &np2cfg.useram_d, 0},
{"keyboard", INITYPE_KB, &np2oscfg.KEYBOARD, 0},
{"F12_COPY", INITYPE_UINT8, &np2oscfg.F12KEY, 0},