Compare commits

...
5 Commits
Author SHA1 Message Date
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
6 changed files with 39 additions and 152 deletions
+10 -2
View File
@@ -35,14 +35,22 @@ jobs:
- name: Display Downloaded 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: Display Updated Number
# run: echo "Updated Run Number: ${{ env.NEW_RUN_NUMBER }}"
- name: Create Preview Release
if: github.ref == 'refs/heads/master'
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: v${{ github.run_number }}
automatic_release_tag: v${{ env.NEW_RUN_NUMBER }}
prerelease: false
title: "Build v${{ github.run_number }}"
title: "Build v${{ env.NEW_RUN_NUMBER }}"
files: |
./artifacts/linux-flatpak/lindbergh-loader.flatpak
./artifacts/linux-build/build.tar.gz
+16 -129
View File
@@ -922,11 +922,6 @@ static ControllerStatus listControllers(Controllers *controllers)
strcat(controllerInput->inputName, "_");
strcat(controllerInput->inputName, codename(EV_KEY, code));
normaliseName(controllerInput->inputName);
// if(snprintf(controllerInput->inputTechName, SIZE, "%s:KEY:%i", controllers->controller[i].path,
// code) >= 1024) {
// // hum ok, truncated value
// }
// strcpy(controllerInput->inputTechNegName, "-"); // unassignable value (not "" while some conf are empty)
}
}
}
@@ -948,14 +943,6 @@ static ControllerStatus listControllers(Controllers *controllers)
strcat(controllerInput->inputName, "_");
strcat(controllerInput->inputName, codename(EV_ABS, code));
normaliseName(controllerInput->inputName);
// if(snprintf(controllerInput->inputTechName, SIZE, "%s:ABS:%i", controllers->controller[i].path,
// code) >= 1024) {
// // hum ok, truncated value
// }
// if(snprintf(controllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i",
// controllers->controller[i].path, code) >= 1024) {
// // hum ok, truncated value
// }
ControllerInput *minControllerInput =
&controllers->controller[i].inputs[controllers->controller[i].inputCount++];
@@ -964,14 +951,6 @@ static ControllerStatus listControllers(Controllers *controllers)
minControllerInput->specialFunction = ANALOGUE_TO_DIGITAL_MIN;
strcpy(minControllerInput->inputName, controllerInput->inputName);
strcat(minControllerInput->inputName, "_MIN");
// if(snprintf(minControllerInput->inputTechName, SIZE, "%s:ABS:%i:MIN",
// controllers->controller[i].path, code) >= 1024) {
// // hum ok, truncated value
// }
// if(snprintf(minControllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i:MIN",
// controllers->controller[i].path, code) >= 1024) {
// // hum ok, truncated value
// }
ControllerInput *maxControllerInput =
&controllers->controller[i].inputs[controllers->controller[i].inputCount++];
@@ -980,27 +959,7 @@ static ControllerStatus listControllers(Controllers *controllers)
maxControllerInput->specialFunction = ANALOGUE_TO_DIGITAL_MAX;
strcpy(maxControllerInput->inputName, controllerInput->inputName);
strcat(maxControllerInput->inputName, "_MAX");
// if(snprintf(maxControllerInput->inputTechName, SIZE, "%s:ABS:%i:MAX",
// controllers->controller[i].path, code) >= 1024) {
// // hum ok, truncated value
// }
// if(snprintf(maxControllerInput->inputTechNegName, SIZE, "%s:ABS_NEG:%i:MAX",
// 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;
ioctl(controller, EVIOCGABS(code), &absoluteFeatures);
controllers->controller[i].absMin[code] = absoluteFeatures.minimum;
@@ -1107,67 +1066,31 @@ void *controllerThread(void *_args)
((double)event.value - (double)args->controller->absMin[event.code]) /
((double)args->controller->absMax[event.code] - (double)args->controller->absMin[event.code]);
if(args->controller->absTriggers[event.code].isNeg == 1) {
scaled = 1.0 - scaled;
}
if (args->controller->absTriggers[event.code].enabled)
{
int channel = args->controller->absTriggers[event.code].channel;
if (args->controller->absTriggers[event.code].isAnalogue) {
// Deadzone handling
if (scaled < analogue_deadzones[channel].start_max)
// Deadzone handling
if (scaled < analogue_deadzones[channel].start_max)
scaled = 0.0;
if (scaled > analogue_deadzones[channel].middle_min && scaled < analogue_deadzones[channel].middle_max)
if (scaled > analogue_deadzones[channel].middle_min && scaled < analogue_deadzones[channel].middle_max)
scaled = 0.5;
if (scaled > analogue_deadzones[channel].end_min)
if (scaled > analogue_deadzones[channel].end_min)
scaled = 1.0;
setAnalogue(channel, scaled * (pow(2, jvsBits) - 1));
} else {
setSwitch(args->controller->absTriggers[event.code].player,
args->controller->absTriggers[event.code].channel, scaled < 0.8 ? 0 : 1);
}
setAnalogue(channel, scaled * (pow(2, jvsBits) - 1));
}
if(event.value <= ((args->controller->absMin[event.code] + args->controller->absMax[event.code]) / 2)) {
if (args->controller->absTriggers[event.code].minEnabled)
{
int channel = args->controller->absTriggers[event.code].minChannel;
if (args->controller->absTriggers[event.code].isAnalogue) {
setAnalogue(channel, scaled < 0.2 ? 0.0 : pow(2, jvsBits) * 1.0);
} else {
setSwitch(args->controller->absTriggers[event.code].minPlayer,
args->controller->absTriggers[event.code].minChannel, scaled < 0.2 ? 1 : 0);
}
}
if (args->controller->absTriggers[event.code].minEnabled)
{
setSwitch(args->controller->absTriggers[event.code].minPlayer,
args->controller->absTriggers[event.code].minChannel, scaled < 0.2);
}
if(event.value >= ((args->controller->absMin[event.code] + args->controller->absMax[event.code]) / 2)) {
if (args->controller->absTriggers[event.code].maxEnabled)
{
int channel = args->controller->absTriggers[event.code].maxChannel;
if (args->controller->absTriggers[event.code].isAnalogue) {
setAnalogue(channel, scaled > 0.8 ? pow(2, jvsBits) : 0.0);
} else {
setSwitch(args->controller->absTriggers[event.code].maxPlayer,
args->controller->absTriggers[event.code].maxChannel, scaled > 0.8 ? 1 : 0);
}
}
if (args->controller->absTriggers[event.code].maxEnabled)
{
setSwitch(args->controller->absTriggers[event.code].maxPlayer,
args->controller->absTriggers[event.code].maxChannel, scaled > 0.8);
}
if (args->controller->absTriggers[event.code].shakeEnabled)
{
int channel = args->controller->absTriggers[event.code].shakeChannel;
if( (scaled > args->controller->absTriggers[event.code].shakePreviousScaled && scaled - args->controller->absTriggers[event.code].shakePreviousScaled > 0.1) ||
(scaled < args->controller->absTriggers[event.code].shakePreviousScaled && -scaled + args->controller->absTriggers[event.code].shakePreviousScaled > 0.1)) {
setAnalogue(channel, 0);
} else {
setAnalogue(channel, pow(2, jvsBits) / 2);
}
args->controller->absTriggers[event.code].shakePreviousScaled = scaled;
}
}
break;
@@ -1320,9 +1243,6 @@ ControllerStatus startControllerThreads(Controllers *controllers)
controllers->controller[i].absTriggers[j].enabled = 0;
controllers->controller[i].absTriggers[j].minEnabled = 0;
controllers->controller[i].absTriggers[j].maxEnabled = 0;
controllers->controller[i].absTriggers[j].shakeEnabled = 0;
controllers->controller[i].absTriggers[j].isNeg = 0;
controllers->controller[i].absTriggers[j].isAnalogue = 1;
}
for (int j = 0; j < KEY_MAX; j++)
@@ -1335,20 +1255,8 @@ ControllerStatus startControllerThreads(Controllers *controllers)
for (int j = 0; j < controllers->controller[i].inputCount; j++)
{
char *mapping = getMapping(controllers->controller[i].inputs[j].inputName);
int negabs = 0;
if (mapping == NULL) {
// give a 2nd chance with a techninal mapping
mapping = getMapping(controllers->controller[i].inputs[j].inputTechName);
if (mapping == NULL) {
// give a 3rd change with negativ technical mapping
mapping = getMapping(controllers->controller[i].inputs[j].inputTechNegName);
negabs = 1;
if (mapping == NULL) {
continue;
}
}
}
if (mapping == NULL)
continue;
ArcadeInput input = {0};
ControllerStatus status = getArcadeInputByName(mapping, &input);
@@ -1373,9 +1281,6 @@ ControllerStatus startControllerThreads(Controllers *controllers)
input.name);
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].player =
input.player;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs;
if (strstr(input.name, "ANALOGUE") == NULL)
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isAnalogue = 0;
}
break;
@@ -1388,9 +1293,6 @@ ControllerStatus startControllerThreads(Controllers *controllers)
input.name);
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].maxPlayer =
input.player;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs;
if (strstr(input.name, "ANALOGUE") == NULL)
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isAnalogue = 0;
}
break;
@@ -1403,21 +1305,6 @@ ControllerStatus startControllerThreads(Controllers *controllers)
input.name);
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].minPlayer =
input.player;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isNeg = negabs;
if (strstr(input.name, "ANALOGUE") == NULL)
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].isAnalogue = 0;
}
break;
case ANALOGUE_SHAKE:
{
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeEnabled = 1;
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeChannel =
input.channel;
strcpy(controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakeName,
input.name);
controllers->controller[i].absTriggers[controllers->controller[i].inputs[j].evCode].shakePlayer =
input.player;
}
break;
+5 -16
View File
@@ -2,7 +2,7 @@
#include <linux/input-event-codes.h>
#define SIZE 128
#define SIZE 1024
#define CONTROLLER_THREAD_MAX 256
@@ -31,14 +31,6 @@ typedef struct
int maxEnabled;
int isAnalogue;
int isNeg; // reversed axis
char shakeName[SIZE];
int shakeChannel;
int shakeEnabled;
int shakePlayer;
double shakePreviousScaled;
int isCoin;
} ArcadeInput;
@@ -52,15 +44,12 @@ typedef enum {
NO_SPECIAL_FUNCTION = 0,
ANALOGUE_TO_DIGITAL_MAX,
ANALOGUE_TO_DIGITAL_MIN,
DIGITAL_TO_ANALOGUE,
ANALOGUE_SHAKE
DIGITAL_TO_ANALOGUE
} SpecialFunction;
typedef struct
{
char inputName[SIZE];
char inputTechName[SIZE];
char inputTechNegName[SIZE];
int evType;
int evCode;
SpecialFunction specialFunction;
@@ -69,12 +58,12 @@ typedef struct
typedef struct
{
char name[SIZE];
char path[320];
char physicalLocation[128];
char path[SIZE];
char physicalLocation[SIZE];
int absMax[ABS_MAX];
int absMin[ABS_MAX];
ControllerInput inputs[320];
ControllerInput inputs[SIZE];
int inputCount;
ArcadeInput keyTriggers[KEY_MAX];
+5 -2
View File
@@ -621,10 +621,13 @@ void sdlEventShooting(SDL_Event *event)
setSwitch(PLAYER_2, BUTTON_1, event->type == SDL_KEYDOWN);
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)
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)
setSwitch(PLAYER_2, BUTTON_UP, event->type == SDL_KEYDOWN);
+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;
+2 -2
View File
@@ -370,8 +370,8 @@ int isTestMode()
void myGlBindTexture(GLenum target, GLuint texture)
{
// const char *targetName = "";
// switch (target)
curTarget = target;
curTextureID = texture;
void (*_glBindTexture)(GLenum, GLuint) = dlsym(RTLD_NEXT, "glBindTexture");
_glBindTexture(target, texture);