Compare commits

...
14 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
dkeruza f677f1cd3f Merge pull request #76 from nadenislamarre/fixevdevarrays
evdev: add array allocation checks on snprintf and for loops
2025-03-29 15:22:39 -04:00
Nicolas Adenis-Lamarre 3cd8e7019f evdev: add array allocation checks on snprintf and for loops
Signed-off-by: Nicolas Adenis-Lamarre <nicolas.adenis.lamarre@gmail.com>
2025-03-26 08:00:31 +01:00
Nicolas Adenis-Lamarre 38643436f2 Revert Reverted reverse axis and shake in evdev.
Signed-off-by: Nicolas Adenis-Lamarre <nicolas.adenis.lamarre@gmail.com>
2025-03-26 07:59:11 +01:00
dkeruza-neo 527bdc418f Fixed LGJ, VT3 and ID4/ID5 JVS passthrough. 2025-03-25 15:36:26 -04:00
Bobby Dilley a3e3f51003 Attempt to fix LGJ with JVS 2025-03-25 18:50:16 +00:00
dkeruza-neo a96b1fcf30 Reverted reverse axis and shake in evdev. 2025-03-13 20:07:29 -04:00
dkeruza-neo 6e751f16f0 Fixed bug in ABC res patch after cleaning up code. 2025-03-09 16:19:41 -04:00
dkeruza-neo 03ccfd3449 Forgot to uncomment code. 2025-03-09 03:42:05 -04:00
dkeruza-neo 4e82f6fdef Again 2025-03-09 01:53:29 -05:00
dkeruza-neo ccf54ab6ad Fix release number? 2025-03-09 01:50:41 -05:00
10 changed files with 176 additions and 72 deletions
+9 -2
View File
@@ -6,12 +6,14 @@ on:
paths-ignore: paths-ignore:
- '**.md' - '**.md'
- '.github/ISSUE_TEMPLATE/*' - '.github/ISSUE_TEMPLATE/*'
- '.docs/changelog'
push: push:
branches: branches:
- master - master
paths-ignore: paths-ignore:
- '**.md' - '**.md'
- '.github/ISSUE_TEMPLATE/*' - '.github/ISSUE_TEMPLATE/*'
- '.docs/changelog'
jobs: jobs:
linux-build: linux-build:
@@ -35,14 +37,19 @@ jobs:
- name: Display Downloaded Artifacts - name: Display Downloaded Artifacts
run: find ./artifacts/ run: find ./artifacts/
- name: Add 161 to github.run_number
run: |
NEW_RUN_NUMBER=$(( ${{ github.run_number }} + 161 ))
echo "NEW_RUN_NUMBER=$NEW_RUN_NUMBER" >> $GITHUB_ENV
- name: Create Preview Release - name: Create Preview Release
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
uses: "marvinpinto/action-automatic-releases@latest" uses: "marvinpinto/action-automatic-releases@latest"
with: with:
repo_token: "${{ secrets.GITHUB_TOKEN }}" repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: v${{ github.run_number }} automatic_release_tag: v${{ env.NEW_RUN_NUMBER }}
prerelease: false prerelease: false
title: "Build v${{ github.run_number }}" title: "Build v${{ env.NEW_RUN_NUMBER }}"
files: | files: |
./artifacts/linux-flatpak/lindbergh-loader.flatpak ./artifacts/linux-flatpak/lindbergh-loader.flatpak
./artifacts/linux-build/build.tar.gz ./artifacts/linux-build/build.tar.gz
+9
View File
@@ -2,6 +2,15 @@
All notable changes to this project will be documented in this file. 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.
## [2.0.4] ## [2.0.4]
### Added ### Added
- Boost render res option for Rambo, LGJ, HOD4, HOD-EX, ID4/ID5, 2Spicy and Harley. - Boost render res option for Rambo, LGJ, HOD4, HOD-EX, ID4/ID5, 2Spicy and Harley.
+4
View File
@@ -90,6 +90,10 @@ sudo ln -s /lib/i386-linux-gnu/libglut.so /lib/i386-linux-gnu/libglut.so.3
- You need to set `SKIP_OUTRUN_CABINET_CHECK` to 1 in `lindbergh.conf` to play in DX, SDX or Standard cabinet types. - You need to set `SKIP_OUTRUN_CABINET_CHECK` to 1 in `lindbergh.conf` to play in DX, SDX or Standard cabinet types.
### Hummer (all versions)
The games will ask for libGLcore.so.1 and libnvidia-tls.so.1 you can copy for example libkswapapi.so as libGLcore.so.1 and libnvidia-tls.so.1 and the game will work fine.
## Configuration File : lindbergh.conf ## Configuration File : lindbergh.conf
All configurable options are set and explained in the [`lindbergh.conf`](lindbergh.conf) file itself, and should be reasonably easy to understand. This chapter further explains some of those setup options. All configurable options are set and explained in the [`lindbergh.conf`](lindbergh.conf) file itself, and should be reasonably easy to understand. This chapter further explains some of those setup options.
+65 -57
View File
@@ -862,7 +862,7 @@ static ControllerStatus listControllers(Controllers *controllers)
int controller = open(controllers->controller[i].path, O_RDONLY); int controller = open(controllers->controller[i].path, O_RDONLY);
if (controller < 0) if (controller < 0)
{ {
strcpy(controllers->controller[i].name, "Unknown"); strncpy(controllers->controller[i].name, "Unknown", SIZE);
continue; continue;
} }
@@ -912,21 +912,26 @@ static ControllerStatus listControllers(Controllers *controllers)
{ {
if (test_bit(code, bit[EV_KEY])) if (test_bit(code, bit[EV_KEY]))
{ {
if(controllers->controller[i].inputCount >= MAX_INPUTS) { // the number of input is limited
fprintf(stderr, "warning, maximum number of inputs reached !\n");
break;
}
controllers->controller[i].enabled = 1; controllers->controller[i].enabled = 1;
ControllerInput *controllerInput = ControllerInput *controllerInput =
&controllers->controller[i].inputs[controllers->controller[i].inputCount++]; &controllers->controller[i].inputs[controllers->controller[i].inputCount++];
controllerInput->evType = EV_KEY; controllerInput->evType = EV_KEY;
controllerInput->evCode = code; controllerInput->evCode = code;
controllerInput->specialFunction = NO_SPECIAL_FUNCTION; controllerInput->specialFunction = NO_SPECIAL_FUNCTION;
strcpy(controllerInput->inputName, controllers->controller[i].name); strncpy(controllerInput->inputName, controllers->controller[i].name, SIZE);
strcat(controllerInput->inputName, "_"); strcat(controllerInput->inputName, "_");
strcat(controllerInput->inputName, codename(EV_KEY, code)); strcat(controllerInput->inputName, codename(EV_KEY, code));
normaliseName(controllerInput->inputName); normaliseName(controllerInput->inputName);
// if(snprintf(controllerInput->inputTechName, SIZE, "%s:KEY:%i", controllers->controller[i].path, if (snprintf(controllerInput->inputTechName, SIZE, "%s:KEY:%i", controllers->controller[i].path, code) >= 1024)
// code) >= 1024) { {
// // hum ok, truncated value // hum ok, truncated value
// } }
// strcpy(controllerInput->inputTechNegName, "-"); // unassignable value (not "" while some conf are empty) strncpy(controllerInput->inputTechNegName, "-", SIZE); // unassignable value (not "" while some conf are empty)
} }
} }
} }
@@ -944,67 +949,70 @@ static ControllerStatus listControllers(Controllers *controllers)
controllerInput->evType = EV_ABS; controllerInput->evType = EV_ABS;
controllerInput->evCode = code; controllerInput->evCode = code;
controllerInput->specialFunction = NO_SPECIAL_FUNCTION; controllerInput->specialFunction = NO_SPECIAL_FUNCTION;
strcpy(controllerInput->inputName, controllers->controller[i].name); strncpy(controllerInput->inputName, controllers->controller[i].name, SIZE);
strcat(controllerInput->inputName, "_"); strcat(controllerInput->inputName, "_");
strcat(controllerInput->inputName, codename(EV_ABS, code)); strcat(controllerInput->inputName, codename(EV_ABS, code));
normaliseName(controllerInput->inputName); normaliseName(controllerInput->inputName);
// if(snprintf(controllerInput->inputTechName, SIZE, "%s:ABS:%i", controllers->controller[i].path, if (snprintf(controllerInput->inputTechName, SIZE, "%s:ABS:%i", controllers->controller[i].path, code) >= 1024)
// code) >= 1024) { {
// // hum ok, truncated value // hum ok, truncated value
// } }
// if(snprintf(controllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i", if (snprintf(controllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i", controllers->controller[i].path, code) >= 1024)
// controllers->controller[i].path, code) >= 1024) { {
// // hum ok, truncated value // hum ok, truncated value
// } }
ControllerInput *minControllerInput = ControllerInput *minControllerInput =
&controllers->controller[i].inputs[controllers->controller[i].inputCount++]; &controllers->controller[i].inputs[controllers->controller[i].inputCount++];
minControllerInput->evType = EV_ABS; minControllerInput->evType = EV_ABS;
minControllerInput->evCode = code; minControllerInput->evCode = code;
minControllerInput->specialFunction = ANALOGUE_TO_DIGITAL_MIN; minControllerInput->specialFunction = ANALOGUE_TO_DIGITAL_MIN;
strcpy(minControllerInput->inputName, controllerInput->inputName); strncpy(minControllerInput->inputName, controllerInput->inputName, SIZE);
strcat(minControllerInput->inputName, "_MIN"); strcat(minControllerInput->inputName, "_MIN");
// if(snprintf(minControllerInput->inputTechName, SIZE, "%s:ABS:%i:MIN", if (snprintf(minControllerInput->inputTechName, SIZE, "%s:ABS:%i:MIN", controllers->controller[i].path, code) >= 1024)
// controllers->controller[i].path, code) >= 1024) { {
// // hum ok, truncated value // hum ok, truncated value
// } }
// if(snprintf(minControllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i:MIN", if (snprintf(minControllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i:MIN", controllers->controller[i].path, code) >=
// controllers->controller[i].path, code) >= 1024) { 1024)
// // hum ok, truncated value {
// } // hum ok, truncated value
}
ControllerInput *maxControllerInput = ControllerInput *maxControllerInput =
&controllers->controller[i].inputs[controllers->controller[i].inputCount++]; &controllers->controller[i].inputs[controllers->controller[i].inputCount++];
maxControllerInput->evType = EV_ABS; maxControllerInput->evType = EV_ABS;
maxControllerInput->evCode = code; maxControllerInput->evCode = code;
maxControllerInput->specialFunction = ANALOGUE_TO_DIGITAL_MAX; maxControllerInput->specialFunction = ANALOGUE_TO_DIGITAL_MAX;
strcpy(maxControllerInput->inputName, controllerInput->inputName); strncpy(maxControllerInput->inputName, controllerInput->inputName, SIZE);
strcat(maxControllerInput->inputName, "_MAX"); strcat(maxControllerInput->inputName, "_MAX");
// if(snprintf(maxControllerInput->inputTechName, SIZE, "%s:ABS:%i:MAX", if (snprintf(maxControllerInput->inputTechName, SIZE, "%s:ABS:%i:MAX", controllers->controller[i].path, code) >= 1024)
// controllers->controller[i].path, code) >= 1024) { {
// // hum ok, truncated value // hum ok, truncated value
// } }
// if(snprintf(maxControllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i:MAX", if (snprintf(maxControllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i:MAX", controllers->controller[i].path, code) >=
// controllers->controller[i].path, code) >= 1024) { 1024)
// // hum ok, truncated value {
// } // hum ok, truncated value
}
ControllerInput *shakeControllerInput = &controllers->controller[i].inputs[controllers->controller[i].inputCount++];
shakeControllerInput->evType = EV_ABS;
shakeControllerInput->evCode = code;
shakeControllerInput->specialFunction = ANALOGUE_SHAKE;
strncpy(shakeControllerInput->inputName, controllerInput->inputName, SIZE);
strcat(shakeControllerInput->inputName, "_SHAKE");
if (snprintf(shakeControllerInput->inputTechName, SIZE, "%s:ABS:%i:SHAKE", controllers->controller[i].path, code) >=
1024)
{
// hum ok, truncated value
}
// ControllerInput *shakeControllerInput =
// &controllers->controller[i].inputs[controllers->controller[i].inputCount++];
// shakeControllerInput->evType = EV_ABS;
// shakeControllerInput->evCode = code;
// shakeControllerInput->specialFunction = ANALOGUE_SHAKE;
// strcpy(shakeControllerInput->inputName, controllerInput->inputName);
// strcat(shakeControllerInput->inputName, "_SHAKE");
// if(snprintf(shakeControllerInput->inputTechName, SIZE, "%s:ABS:%i:SHAKE",
// controllers->controller[i].path, code) >= 1024) {
// // hum ok, truncated value
// }
//
struct input_absinfo absoluteFeatures; struct input_absinfo absoluteFeatures;
ioctl(controller, EVIOCGABS(code), &absoluteFeatures); ioctl(controller, EVIOCGABS(code), &absoluteFeatures);
controllers->controller[i].absMin[code] = absoluteFeatures.minimum; controllers->controller[i].absMin[code] = absoluteFeatures.minimum;
controllers->controller[i].absMax[code] = absoluteFeatures.maximum; controllers->controller[i].absMax[code] = absoluteFeatures.maximum;
} }
} }
} }
@@ -1292,7 +1300,7 @@ ControllerStatus getArcadeInputByName(char *name, ArcadeInput *input)
{ {
if (strcmp(tempName, name) == 0) if (strcmp(tempName, name) == 0)
{ {
strcpy(input->name, arcadeInputs[index].name); strncpy(input->name, arcadeInputs[index].name, SIZE);
input->channel = arcadeInputs[index].channel; input->channel = arcadeInputs[index].channel;
input->player = arcadeInputs[index].player; input->player = arcadeInputs[index].player;
return CONTROLLER_STATUS_SUCCESS; return CONTROLLER_STATUS_SUCCESS;
@@ -1369,8 +1377,8 @@ ControllerStatus startControllerThreads(Controllers *controllers)
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].enabled = 1; controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].enabled = 1;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].channel = controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].channel =
input.channel; input.channel;
strcpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].name, strncpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].name,
input.name); input.name, SIZE);
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].player = controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].player =
input.player; input.player;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs; controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs;
@@ -1384,8 +1392,8 @@ ControllerStatus startControllerThreads(Controllers *controllers)
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxEnabled = 1; controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxEnabled = 1;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxChannel = controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxChannel =
input.channel; input.channel;
strcpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxName, strncpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxName,
input.name); input.name, SIZE);
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxPlayer = controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxPlayer =
input.player; input.player;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs; controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs;
@@ -1399,8 +1407,8 @@ ControllerStatus startControllerThreads(Controllers *controllers)
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minEnabled = 1; controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minEnabled = 1;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minChannel = controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minChannel =
input.channel; input.channel;
strcpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minName, strncpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minName,
input.name); input.name, SIZE);
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minPlayer = controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minPlayer =
input.player; input.player;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs; controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs;
@@ -1414,8 +1422,8 @@ ControllerStatus startControllerThreads(Controllers *controllers)
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeEnabled = 1; controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeEnabled = 1;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeChannel = controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeChannel =
input.channel; input.channel;
strcpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeName, strncpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeName,
input.name); input.name, SIZE);
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakePlayer = controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakePlayer =
input.player; input.player;
} }
@@ -1432,8 +1440,8 @@ ControllerStatus startControllerThreads(Controllers *controllers)
controllers->controller[i].keyTriggers[controllers->controller[i].inputs[j].evCode].enabled = 1; controllers->controller[i].keyTriggers[controllers->controller[i].inputs[j].evCode].enabled = 1;
controllers->controller[i].keyTriggers[controllers->controller[i].inputs[j].evCode].channel = controllers->controller[i].keyTriggers[controllers->controller[i].inputs[j].evCode].channel =
input.channel; input.channel;
strcpy(controllers->controller[i].keyTriggers[controllers->controller[i].inputs[j].evCode].name, strncpy(controllers->controller[i].keyTriggers[controllers->controller[i].inputs[j].evCode].name,
input.name); input.name, SIZE);
controllers->controller[i].keyTriggers[controllers->controller[i].inputs[j].evCode].player = controllers->controller[i].keyTriggers[controllers->controller[i].inputs[j].evCode].player =
input.player; input.player;
+5 -5
View File
@@ -2,9 +2,9 @@
#include <linux/input-event-codes.h> #include <linux/input-event-codes.h>
#define SIZE 128 #define SIZE 300
#define CONTROLLER_THREAD_MAX 256 #define CONTROLLER_THREAD_MAX 256
#define MAX_INPUTS 512
typedef struct typedef struct
{ {
@@ -69,12 +69,12 @@ typedef struct
typedef struct typedef struct
{ {
char name[SIZE]; char name[SIZE];
char path[320]; char path[SIZE];
char physicalLocation[128]; char physicalLocation[SIZE];
int absMax[ABS_MAX]; int absMax[ABS_MAX];
int absMin[ABS_MAX]; int absMin[ABS_MAX];
ControllerInput inputs[320]; ControllerInput inputs[MAX_INPUTS];
int inputCount; int inputCount;
ArcadeInput keyTriggers[KEY_MAX]; ArcadeInput keyTriggers[KEY_MAX];
+74
View File
@@ -337,9 +337,67 @@ DIR *opendir(const char *dirname)
return _opendir(dirname + 1); 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); 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)
{ {
int (*___xstat64)(int ver, const char *path, struct stat64 *stat_buf) = dlsym(RTLD_NEXT, "__xstat64"); 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; 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. // 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)) if ((strstr(pathname, "asm_lbg") != NULL) || (strstr(pathname, "asm_gl") != NULL))
{ {
+5 -2
View File
@@ -621,10 +621,13 @@ void sdlEventShooting(SDL_Event *event)
setSwitch(PLAYER_2, BUTTON_1, event->type == SDL_KEYDOWN); setSwitch(PLAYER_2, BUTTON_1, event->type == SDL_KEYDOWN);
else if (event->key.keysym.sym == SDLK_x) else if (event->key.keysym.sym == SDLK_x)
setSwitch(PLAYER_2, BUTTON_1, event->type == SDL_KEYDOWN); setSwitch(PLAYER_2, BUTTON_2, event->type == SDL_KEYDOWN);
else if (event->key.keysym.sym == SDLK_c) else if (event->key.keysym.sym == SDLK_c)
setSwitch(PLAYER_2, BUTTON_1, event->type == SDL_KEYDOWN); setSwitch(PLAYER_2, BUTTON_3, event->type == SDL_KEYDOWN);
else if (event->key.keysym.sym == SDLK_v)
setSwitch(PLAYER_2, BUTTON_4, event->type == SDL_KEYDOWN);
else if (event->key.keysym.sym == SDLK_u) else if (event->key.keysym.sym == SDLK_u)
setSwitch(PLAYER_2, BUTTON_UP, event->type == SDL_KEYDOWN); setSwitch(PLAYER_2, BUTTON_UP, event->type == SDL_KEYDOWN);
+1 -1
View File
@@ -444,7 +444,7 @@ int main(int argc, char *argv[])
continue; 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; zink = 1;
continue; continue;
+2 -3
View File
@@ -159,7 +159,8 @@ void *readJVSFrameThread(void * arg)
ackSize = 0; ackSize = 0;
waitForEnd = 0; waitForEnd = 0;
do { do
{
// printf("SERIAL thread debug: trying to read byte.\n"); // 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 // Try to read a byte from serial, this call will be blocking if VMIN > 0 and VTIME = 0
bytesRead = read(fd, &localBuffer[byteCount], 1); bytesRead = read(fd, &localBuffer[byteCount], 1);
@@ -194,7 +195,6 @@ void *readJVSFrameThread(void * arg)
} }
} while (waitForEnd); } while (waitForEnd);
// Lock the buffer while we write to it // Lock the buffer while we write to it
pthread_mutex_lock(&jvsBuffer_lock); pthread_mutex_lock(&jvsBuffer_lock);
memcpy(jvsFrameBuffer.buffer, localBuffer, byteCount); memcpy(jvsFrameBuffer.buffer, localBuffer, byteCount);
@@ -237,7 +237,6 @@ int startJVSFrameThread(int * fd) {
* @return * @return
*/ */
JVSFrame readJVSFrameFromThread() { JVSFrame readJVSFrameFromThread() {
JVSFrame frame; JVSFrame frame;
// Lock while reading/writing to shared frame // Lock while reading/writing to shared frame
pthread_mutex_lock(&jvsBuffer_lock); pthread_mutex_lock(&jvsBuffer_lock);
+2 -2
View File
@@ -370,8 +370,8 @@ int isTestMode()
void myGlBindTexture(GLenum target, GLuint texture) void myGlBindTexture(GLenum target, GLuint texture)
{ {
// const char *targetName = ""; curTarget = target;
// switch (target) curTextureID = texture;
void (*_glBindTexture)(GLenum, GLuint) = dlsym(RTLD_NEXT, "glBindTexture"); void (*_glBindTexture)(GLenum, GLuint) = dlsym(RTLD_NEXT, "glBindTexture");
_glBindTexture(target, texture); _glBindTexture(target, texture);