Skip to content

Commit 27d43c1

Browse files
committed
reflect changes in modules
1 parent 1ed2eb1 commit 27d43c1

11 files changed

Lines changed: 272 additions & 138 deletions

File tree

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,9 @@
22
path = nocrt
33
url = https://github.com/JHRobotics/nocrt
44
branch = main
5+
[submodule "regex"]
6+
path = tiny-regex-c
7+
url = https://github.com/kokke/tiny-regex-c.git
8+
[submodule "regex2"]
9+
path = regex
10+
url = https://github.com/kokke/tiny-regex-c.git

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ else
1313
CFLAGS=-std=c99 -Wall -Wextra -Os -march=pentium2 -fdata-sections -ffunction-sections
1414
endif
1515

16-
SOFTGPU_PATCH=2024
16+
SOFTGPU_PATCH=2025
1717

1818
ifdef EXTRA_INFO
1919
CFLAGS += -DEXTRA_INFO="$(EXTRA_INFO)"

actions.c

Lines changed: 72 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ BOOL failure_continue(HWND hwnd)
7777
strcat(buf, "\n");
7878
i++;
7979
}
80-
80+
8181
int t = MessageBoxA(hwnd, buf, "FAIL", MB_ICONINFORMATION | MB_YESNO | MB_DEFBUTTON2);
8282

8383
if(t == IDNO)
@@ -380,12 +380,14 @@ void delete_bad_dx_files()
380380
strcpy(syspath+syspath_len, "\\ddraw.dll");
381381
if(is_wrapper(syspath, FALSE))
382382
{
383+
removeROFlag(syspath);
383384
DeleteFileA(syspath);
384385
}
385386

386387
strcpy(syspath+syspath_len, "\\d3d8.dll");
387388
if(is_wrapper(syspath, FALSE))
388389
{
390+
removeROFlag(syspath);
389391
DeleteFileA(syspath);
390392
}
391393

@@ -460,6 +462,7 @@ void setInstallSrc(const char *path)
460462
src_path = path;
461463
}
462464

465+
#if 0
463466
static void fix_ddraw(const char* file)
464467
{
465468
const uint8_t search[] = {
@@ -521,10 +524,12 @@ static void fix_ddraw(const char* file)
521524
if(fr != NULL) fclose(fr);
522525
};
523526
}
527+
#endif
524528

525529
static HANDLE filescopy_thread = 0;
526530
static int copiedfiles = 0;
527531

532+
#if 0
528533
static BOOL has_sys_ddraw = FALSE;
529534
static BOOL has_sys_d3d8 = FALSE;
530535
static BOOL has_sys_d3d9 = FALSE;
@@ -636,6 +641,7 @@ void backup_sysfiles()
636641
}
637642
}
638643
}
644+
#endif
639645

640646
BOOL voodoo_copy(HWND hwnd)
641647
{
@@ -685,7 +691,7 @@ DWORD WINAPI filescopy_proc(LPVOID lpParameter)
685691

686692
copiedfiles = copydir(src_path, install_path);
687693

688-
backup_sysfiles();
694+
//backup_sysfiles();
689695

690696
return 0;
691697
}
@@ -955,6 +961,7 @@ BOOL setLimitVRAM(char *buf, size_t bufs)
955961
return FALSE;
956962
}
957963

964+
#if 0
958965
BOOL setLineSyscopy(char *buf, size_t bufs)
959966
{
960967
(void)bufs;
@@ -998,6 +1005,7 @@ BOOL setLineSyscopy(char *buf, size_t bufs)
9981005

9991006
return TRUE;
10001007
}
1008+
#endif
10011009

10021010
BOOL setLine3DFX(char *buf, size_t bufs)
10031011
{
@@ -1018,11 +1026,32 @@ BOOL setLine3DFX(char *buf, size_t bufs)
10181026
return TRUE;
10191027
}
10201028

1021-
BOOL setMesaDowngrade(char *buf, size_t bufs)
1029+
BOOL setLineSwitcher(char *buf, size_t bufs)
10221030
{
10231031
(void)bufs;
10241032

1025-
if(isSettingSet(CHBX_MESA_DOWNGRADE))
1033+
BOOL all_on_hal = isSettingSet(RAD_DD_HAL) && isSettingSet(RAD_D8_HAL) && isSettingSet(RAD_D9_HAL);
1034+
1035+
if(!all_on_hal)
1036+
{
1037+
int line_start = sizeof(";switcher:")-1;
1038+
int line_len = strlen(buf);
1039+
int i;
1040+
1041+
for(i = 0; i < line_len - line_start + 1; i++)
1042+
{
1043+
buf[i] = buf[i + line_start];
1044+
}
1045+
}
1046+
1047+
return TRUE;
1048+
}
1049+
1050+
BOOL setMesaAlternate(char *buf, size_t bufs)
1051+
{
1052+
(void)bufs;
1053+
1054+
if(isSettingSet(CHBX_MESA_ALT))
10261055
{
10271056
const char *mesadir = iniValue("[softgpu]", "mesa_alt");
10281057
if(mesadir)
@@ -1036,21 +1065,24 @@ BOOL setMesaDowngrade(char *buf, size_t bufs)
10361065
}
10371066

10381067
linerRule_t infFixRules[] = {
1039-
{"CopyFiles=VBox.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy", TRUE, TRUE, setLineVbox},
1040-
{"CopyFiles=VMSvga.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy", TRUE, TRUE, setLineSvga},
1041-
{"CopyFiles=Qemu.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy", TRUE, TRUE, setLineQemu},
1042-
{"AddReg=VBox.AddReg,VM.AddReg,DX.addReg,VM.regextra", TRUE, TRUE, setLineVboxReg},
1043-
{"AddReg=VMSvga.AddReg,VM.AddReg,DX.addReg,VM.regextra", TRUE, TRUE, setLineSvgaReg},
1044-
{"AddReg=Qemu.AddReg,VM.AddReg,DX.addReg,VM.regextra", TRUE, TRUE, setLineQemuReg},
1045-
{"HKLM,Software\\VMWSVGA,RGB565bug,,0", TRUE, TRUE, setBug565},
1046-
{"HKLM,Software\\VMWSVGA,PreferFIFO,,0", TRUE, TRUE, setBugPreferFifo},
1047-
{"HKLM,Software\\Mesa3D\\global,SVGA_CLEAR_DX_FLAGS,,1", TRUE, TRUE, setBugDxFlags},
1048-
{"HKLM,Software\\VMWSVGA,VRAMLimit,,", FALSE, TRUE, setLimitVRAM},
1049-
{";mefix:", FALSE, TRUE, setLineMeFix},
1050-
{";syscopy:", FALSE, TRUE, setLineSyscopy},
1051-
{";3dfx:", FALSE, TRUE, setLine3DFX},
1052-
{"mesa3d.dll=1", TRUE, TRUE, setMesaDowngrade},
1053-
{"vmwsgl32.dll=1", TRUE, TRUE, setMesaDowngrade},
1068+
{"CopyFiles=VBox.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy", TRUE, TRUE, setLineVbox},
1069+
{"CopyFiles=VMSvga.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy", TRUE, TRUE, setLineSvga},
1070+
{"CopyFiles=Qemu.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy", TRUE, TRUE, setLineQemu},
1071+
{"AddReg=VBox.AddReg,VM.AddReg,DX.addReg,VM.regextra", TRUE, TRUE, setLineVboxReg},
1072+
{"AddReg=VMSvga.AddReg,VM.AddReg,DX.addReg,VM.regextra", TRUE, TRUE, setLineSvgaReg},
1073+
{"AddReg=Qemu.AddReg,VM.AddReg,DX.addReg,VM.regextra", TRUE, TRUE, setLineQemuReg},
1074+
{"HKLM,Software\\vmdisp9x\\svga,RGB565bug,,0", TRUE, TRUE, setBug565},
1075+
{"HKLM,Software\\vmdisp9x\\svga,PreferFIFO,,1", TRUE, TRUE, setBugPreferFifo},
1076+
{"HKLM,Software\\vmdisp9x\\apps\\global\\mesa,SVGA_CLEAR_DX_FLAGS,,0", TRUE, TRUE, setBugDxFlags},
1077+
{"HKLM,Software\\vmdisp9x\\svga,VRAMLimit,,128", FALSE, TRUE, setLimitVRAM},
1078+
//{";mefix:", FALSE, TRUE, setLineMeFix},
1079+
//{";syscopy:", FALSE, TRUE, setLineSyscopy},
1080+
{";switcher:", FALSE, TRUE, setLineSwitcher},
1081+
{";3dfx:", FALSE, TRUE, setLine3DFX},
1082+
{"mesa3d.dll=1", TRUE, TRUE, setMesaAlternate},
1083+
{"vmwsgl32.dll=1", TRUE, TRUE, setMesaAlternate},
1084+
{"mesa98.dll=1", TRUE, TRUE, setMesaAlternate},
1085+
{"mesa99.dll=1", TRUE, TRUE, setMesaAlternate},
10541086
{NULL, FALSE, FALSE, NULL}
10551087
};
10561088

@@ -1116,35 +1148,39 @@ BOOL set_inf_regs(HWND hwnd)
11161148
strcat(dstfile, "\\");
11171149
strcat(dstfile, iniValue("[softgpu]", "drvfile"));
11181150

1119-
if(isSettingSet(RAD_DD_HAL))
1120-
registryWriteInf("HKLM\\Software\\DDSwitcher\\global", "system", WINREG_STR, dstfile);
1151+
if(isSettingSet(RAD_DD_WINE))
1152+
registryWriteInf("HKLM\\Software\\vmdisp9x\\global\\global\\ddraw", "wine", WINREG_STR, dstfile);
11211153
else
1122-
registryWriteInf("HKLM\\Software\\DDSwitcher\\global", "wine", WINREG_STR, dstfile);
1154+
registryWriteInf("HKLM\\Software\\vmdisp9x\\global\\global\\ddraw", "system", WINREG_STR, dstfile);
11231155

11241156
if(isSettingSet(RAD_D8_NINE))
1125-
registryWriteInf("HKLM\\Software\\D8Switcher\\global", "ninemore", WINREG_STR, dstfile);
1157+
registryWriteInf("HKLM\\Software\\vmdisp9x\\global\\global\\d3d8", "nine", WINREG_STR, dstfile);
1158+
else if(isSettingSet(RAD_D8_NINE))
1159+
registryWriteInf("HKLM\\Software\\vmdisp9x\\global\\global\\d3d8", "wine", WINREG_STR, dstfile);
11261160
else
1127-
registryWriteInf("HKLM\\Software\\D8Switcher\\global", "wine", WINREG_STR, dstfile);
1161+
registryWriteInf("HKLM\\Software\\vmdisp9x\\global\\global\\d3d8", "system", WINREG_STR, dstfile);
11281162

11291163
if(isSettingSet(RAD_D9_NINE))
1130-
registryWriteInf("HKLM\\Software\\D9Switcher\\global", "nine", WINREG_STR, dstfile);
1164+
registryWriteInf("HKLM\\Software\\vmdisp9x\\global\\global\\d3d9", "nine", WINREG_STR, dstfile);
1165+
else if(isSettingSet(RAD_D8_NINE))
1166+
registryWriteInf("HKLM\\Software\\vmdisp9x\\global\\global\\d3d9", "wine", WINREG_STR, dstfile);
11311167
else
1132-
registryWriteInf("HKLM\\Software\\D9Switcher\\global", "wine", WINREG_STR, dstfile);
1168+
registryWriteInf("HKLM\\Software\\vmdisp9x\\global\\global\\d3d9", "system", WINREG_STR, dstfile);
11331169

1134-
registryWriteInfDWORD("HKLM\\Software\\VMWSVGA\\NoMultisample", settingReadDW(CHBX_NO_MULTISAMPLE), dstfile);
1135-
registryWriteInfDWORD("HKLM\\Software\\VMWSVGA\\AsyncMOBs", settingReadDW(INP_ASYNCMOBS), dstfile);
1170+
registryWriteInfDWORD("HKLM\\Software\\vmdisp9x\\svga\\NoMultisample", settingReadDW(CHBX_NO_MULTISAMPLE), dstfile);
1171+
registryWriteInfDWORD("HKLM\\Software\\vmdisp9x\\svga\\AsyncMOBs", settingReadDW(INP_ASYNCMOBS), dstfile);
11361172

1137-
registryWriteInfDWORD("HKLM\\Software\\Mesa3d\\SVGA_GMR_CACHE_ENABLED", settingReadDW(CHBX_GMR_CACHE), dstfile);
1173+
registryWriteInfDWORD("HKLM\\Software\\vmdisp9x\\global\\mesa\\SVGA_GMR_CACHE_ENABLED", settingReadDW(CHBX_GMR_CACHE), dstfile);
11381174

11391175
if(settingReadDW(IMP_SVGA_MEM_MAX) != 400)
11401176
{
1141-
registryWriteInfDWORD("HKLM\\Software\\Mesa3D\\global\\SVGA_MEM_MAX", settingReadDW(IMP_SVGA_MEM_MAX), dstfile);
1177+
registryWriteInfDWORD("HKLM\\Software\\vmdisp9x\\global\\mesa\\SVGA_MEM_MAX", settingReadDW(IMP_SVGA_MEM_MAX), dstfile);
11421178
}
1143-
1144-
registryWriteInfDWORD("HKLM\\Software\\Mesa3D\\global\\MESA_SW_GAMMA_ENABLED", settingReadDW(CHBX_SW_GAMMA), dstfile);
1145-
registryWriteInfDWORD("HKLM\\Software\\Mesa3D\\global\\SVGA_DMA_TO_FB", settingReadDW(CHBX_DMA_TO_FB), dstfile);
11461179

1147-
registryWriteInfDWORD("HKLM\\Software\\VMWSVGA\\HWCursor", settingReadDW(CHBX_HWCURSOR), dstfile);
1180+
registryWriteInfDWORD("HKLM\\Software\\vmdisp9x\\global\\mesa\\MESA_SW_GAMMA_ENABLED", settingReadDW(CHBX_SW_GAMMA), dstfile);
1181+
registryWriteInfDWORD("HKLM\\Software\\vmdisp9x\\global\\mesa\\SVGA_DMA_TO_FB", settingReadDW(CHBX_DMA_TO_FB), dstfile);
1182+
1183+
registryWriteInfDWORD("HKLM\\Software\\vmdisp9x\\svga\\HWCursor", settingReadDW(CHBX_HWCURSOR), dstfile);
11481184

11491185
return TRUE;
11501186
}
@@ -1161,7 +1197,8 @@ BOOL apply_reg_fixes(HWND hwnd)
11611197
strcat(dstfile, "\\");
11621198
strcat(dstfile, iniValue("[softgpu]", "drvfile"));
11631199

1164-
if(version_compare(&sysver, &WINVERME) < 0)
1200+
//if(version_compare(&sysver, &WINVERME) < 0)
1201+
if(1) /* delete in all cases */
11651202
{
11661203
registryDeleteInf("HKLM\\System\\CurrentControlSet\\Control\\SessionManager\\KnownDLLs\\DDRAW", dstfile);
11671204
}

changelog.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
0.8.2025.xx
2+
! DirectX native driver
3+
- Wine fully optional
4+
15
0.6.2024.39
26
! stability fixes
37
! double buffering support (or emulation)

nocrt

settings.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,13 @@ static const settings_item_t settings_def[] =
7474
{CHBX_1440, T_CHECKBOX, 12, "res_1440", 0, NULL, NULL, 0, 0},
7575
{CHBX_4K, T_CHECKBOX, 13, "res_2160", 0, NULL, NULL, 0, 0},
7676
{CHBX_5K, T_CHECKBOX, 14, "res_2880", 0, NULL, NULL, 0, 0},
77-
{RAD_DD_HAL, T_RADIO, 15, "dd_hal", 0, NULL, NULL, 2, 0},
78-
{RAD_DD_WINE, T_RADIO, 16, "dd_wine", 1, NULL, NULL, 2, 0},
79-
{RAD_D8_WINE, T_RADIO, 17, "d8_wine", 1, NULL, NULL, 3, 0},
77+
{RAD_DD_HAL, T_RADIO, 15, "dd_hal", 1, NULL, NULL, 2, 0},
78+
{RAD_DD_WINE, T_RADIO, 16, "dd_wine", 0, NULL, NULL, 2, 0},
79+
{RAD_D8_HAL, T_RADIO, 45, "d8_hal", 1, NULL, NULL, 3, 0},
80+
{RAD_D8_WINE, T_RADIO, 17, "d8_wine", 0, NULL, NULL, 3, 0},
8081
{RAD_D8_NINE, T_RADIO, 18, "d8_nine", 0, NULL, NULL, 3, 0},
81-
{RAD_D9_WINE, T_RADIO, 19, "d9_wine", 1, NULL, NULL, 4, 0},
82+
{RAD_D9_HAL, T_RADIO, 46, "d9_hal", 1, NULL, NULL, 4, 0},
83+
{RAD_D9_WINE, T_RADIO, 19, "d9_wine", 0, NULL, NULL, 4, 0},
8284
{RAD_D9_NINE, T_RADIO, 20, "d9_nine", 0, NULL, NULL, 4, 0},
8385
{CHBX_BUG_PREFER_FIFO, T_CHECKBOX, 21, "fifo", 1, NULL, NULL, 0, 0},
8486
{CHBX_BUG_RGB565, T_CHECKBOX, 22, "rgb565", 1, NULL, NULL, 0, 0},
@@ -95,7 +97,7 @@ static const settings_item_t settings_def[] =
9597
{CHBX_SW_GAMMA, T_CHECKBOX, 40, "swgamma", 0, NULL, NULL, 0, 0},
9698
{CHBX_DMA_TO_FB, T_CHECKBOX, 41, "dmatofb", 0, NULL, NULL, 0, 0},
9799
{CHBX_HWCURSOR, T_CHECKBOX, 42, "hwcursor", 0, NULL, NULL, 0, 0},
98-
{CHBX_MESA_DOWNGRADE, T_CHECKBOX, 43, "mesa_downgrade", 0, NULL, NULL, 0, 0},
100+
{CHBX_MESA_ALT, T_CHECKBOX, 44, "mesa_alt", 0, NULL, NULL, 0, 0},
99101
{0, 0, 0, NULL, 0, NULL, NULL, 0, 0}
100102
};
101103

softgpu.c

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -160,33 +160,27 @@ BOOL checkDXReinstall()
160160
strcat(syspath, "\\ddraw.dll");
161161
if(is_wrapper(syspath, FALSE))
162162
{
163-
strcpy(syspath+syspath_len, "\\ddsys.dll");
164-
if(is_wrapper(syspath, TRUE))
165-
{
166-
return TRUE;
167-
}
163+
//strcpy(syspath+syspath_len, "\\ddsys.dll");
164+
//if(is_wrapper(syspath, TRUE))
165+
return TRUE;
168166
}
169167

170168
strcpy(syspath+syspath_len, "\\d3d8.dll");
171169
if(is_wrapper(syspath, FALSE))
172170
{
173-
strcpy(syspath+syspath_len, "\\msd3d8.dll");
174-
if(is_wrapper(syspath, TRUE))
175-
{
176-
return TRUE;
177-
}
171+
//strcpy(syspath+syspath_len, "\\msd3d8.dll");
172+
//if(is_wrapper(syspath, TRUE))
173+
return TRUE;
178174
}
179175

180176
if(version_compare(&sysver, &WINVER98) >= 0)
181177
{
182178
strcpy(syspath+syspath_len, "\\d3d9.dll");
183179
if(is_wrapper(syspath, FALSE))
184180
{
185-
strcpy(syspath+syspath_len, "\\msd3d9.dll");
186-
if(is_wrapper(syspath, TRUE))
187-
{
188-
return TRUE;
189-
}
181+
//strcpy(syspath+syspath_len, "\\msd3d9.dll");
182+
//if(is_wrapper(syspath, TRUE))
183+
return TRUE;
190184
}
191185
}
192186

softgpu.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
//#define CHBX_BLIT_SURF 47
104104
//#define CHBX_DMA_NEED_REREAD 48
105105

106-
#define CHBX_MESA_DOWNGRADE 49
106+
//#define CHBX_MESA_DOWNGRADE 49
107107
#define CHBX_NO_MULTISAMPLE 50
108108
#define INP_ASYNCMOBS 51
109109

@@ -113,6 +113,11 @@
113113
#define CHBX_DMA_TO_FB 55
114114
#define CHBX_HWCURSOR 56
115115

116+
#define RAD_D8_HAL 57
117+
#define RAD_D9_HAL 58
118+
119+
#define CHBX_MESA_ALT 59
120+
116121
BOOL isSettingSet(DWORD menu);
117122
void writeSettings();
118123
int intSettings(int type);

0 commit comments

Comments
 (0)