Compare commits

..
4 Commits
Author SHA1 Message Date
dkeruza efe34307e3 Merge pull request #78 from lindbergh-loader/neo-pr-test
Neo-pr-test
2025-03-30 21:44:06 -04:00
dkeruza-neo 11b657e961 Update changelog 2025-03-30 21:26:00 -04:00
dkeruza-neo 5ea59a05fd Fix Outrun 2 high scores. 2025-03-30 20:58:52 -04:00
dkeruza-neo 8d1f2764f3 Reverted passthough.c changes and fixed a typo in lindbergh.c 2025-03-29 15:37:45 -04:00
5 changed files with 85 additions and 8 deletions
+2
View File
@@ -6,12 +6,14 @@ on:
paths-ignore:
- '**.md'
- '.github/ISSUE_TEMPLATE/*'
- '.docs/changelog'
push:
branches:
- master
paths-ignore:
- '**.md'
- '.github/ISSUE_TEMPLATE/*'
- '.docs/changelog'
jobs:
linux-build:
+5
View File
@@ -2,6 +2,11 @@
All notable changes to this project will be documented in this file.
## [2.0.6]
### Fixed
- Reverted (Fixed LGJ, VT3 and ID4/ID5 JVS passthrough).
- Outrun 2 High Scores.
## [2.0.5]
### Fixed
- Fixed LGJ, VT3 and ID4/ID5 JVS passthrough.
+74
View File
@@ -337,9 +337,67 @@ DIR *opendir(const char *dirname)
return _opendir(dirname + 1);
}
}
// Fix for Outrun high scores
switch (gId)
{
case OUTRUN_2_SP_SDX:
case OUTRUN_2_SP_SDX_REVA:
case OUTRUN_2_SP_SDX_TEST:
case OUTRUN_2_SP_SDX_REVA_TEST:
case OUTRUN_2_SP_SDX_REVA_TEST2:
{
if (strcmp(dirname, "/home/disk1/rankingdata") == 0)
{
return _opendir("./rankingdata");
}
}
}
return _opendir(dirname);
}
int remove(const char *path)
{
int (*_remove)(const char *path) = dlsym(RTLD_NEXT, "remove");
switch (gId)
{
case OUTRUN_2_SP_SDX:
case OUTRUN_2_SP_SDX_REVA:
case OUTRUN_2_SP_SDX_TEST:
case OUTRUN_2_SP_SDX_REVA_TEST:
case OUTRUN_2_SP_SDX_REVA_TEST2:
{
if (strcmp(path, "/home/disk1/rankingdata/%s") == 0)
{
return _remove("./rankingdata/%s");
}
}
}
return _remove(path);
}
int mkdir(const char *path, mode_t mode)
{
int (*_mkdir)(const char *path, mode_t mode) = dlsym(RTLD_NEXT, "mkdir");
switch (gId)
{
case OUTRUN_2_SP_SDX:
case OUTRUN_2_SP_SDX_REVA:
case OUTRUN_2_SP_SDX_TEST:
case OUTRUN_2_SP_SDX_REVA_TEST:
case OUTRUN_2_SP_SDX_REVA_TEST2:
{
if (strcmp(path, "/home/disk1/rankingdata") == 0)
{
return _mkdir("./rankingdata", mode);
}
}
}
return _mkdir(path, mode);
}
int __xstat64(int ver, const char *path, struct stat64 *stat_buf)
{
int (*___xstat64)(int ver, const char *path, struct stat64 *stat_buf) = dlsym(RTLD_NEXT, "__xstat64");
@@ -572,6 +630,22 @@ FILE *fopen(const char *restrict pathname, const char *restrict mode)
pathname = newPathname;
}
// Fix for Outrun high scores
switch (gId)
{
case OUTRUN_2_SP_SDX:
case OUTRUN_2_SP_SDX_REVA:
case OUTRUN_2_SP_SDX_TEST:
case OUTRUN_2_SP_SDX_REVA_TEST:
case OUTRUN_2_SP_SDX_REVA_TEST2:
{
if ((newPathname = strstr(pathname, "/home/disk1")) != NULL)
{
pathname = newPathname + 12;
}
}
}
// This forces LGJ games and ID games to not use the pre-compiled shaders.
if ((strstr(pathname, "asm_lbg") != NULL) || (strstr(pathname, "asm_gl") != NULL))
{
+1 -1
View File
@@ -444,7 +444,7 @@ int main(int argc, char *argv[])
continue;
}
if (strcmp(argv[i], "-z") == 0 || strcmp(argv[i], "--ziink") == 0)
if (strcmp(argv[i], "-z") == 0 || strcmp(argv[i], "--zink") == 0)
{
zink = 1;
continue;
+3 -7
View File
@@ -159,11 +159,8 @@ void *readJVSFrameThread(void * arg)
ackSize = 0;
waitForEnd = 0;
do {
while (jvsFrameBuffer.ready == 1)
{
usleep(1);
}
do
{
// printf("SERIAL thread debug: trying to read byte.\n");
// Try to read a byte from serial, this call will be blocking if VMIN > 0 and VTIME = 0
bytesRead = read(fd, &localBuffer[byteCount], 1);
@@ -198,7 +195,6 @@ void *readJVSFrameThread(void * arg)
}
} while (waitForEnd);
// Lock the buffer while we write to it
pthread_mutex_lock(&jvsBuffer_lock);
memcpy(jvsFrameBuffer.buffer, localBuffer, byteCount);
@@ -247,7 +243,7 @@ JVSFrame readJVSFrameFromThread() {
// Check if we have a valid frame
if (jvsFrameBuffer.ready == 1) {
memcpy(&frame, &jvsFrameBuffer, sizeof(JVSFrame));
frame = jvsFrameBuffer;
// It has been red, we disable this frame
jvsFrameBuffer.ready = 0;
} else {