mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
added some options for swapping analog stick axis [build]
This commit is contained in:
parent
915655d75e
commit
03281c2005
15 changed files with 160 additions and 3 deletions
|
|
@ -132,6 +132,15 @@ C_DOWN = "C dolů"
|
|||
C_LEFT = "C vlevo"
|
||||
C_RIGHT = "C vpravo"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Možnosti analogové páčky"
|
||||
|
||||
ROTATE_LEFT = "Otočení levé páčky o 90 stupňů"
|
||||
INVERT_LEFT_X = "Inverze levé páčky osy X"
|
||||
INVERT_LEFT_Y = "Inverze osy Y levé páčky"
|
||||
ROTATE_RIGHT = "Otočení pravé tyče o 90 stupňů"
|
||||
INVERT_RIGHT_X = "Inverze pravé páčky osy X"
|
||||
INVERT_RIGHT_Y = "Inverze pravé páčky osy Y"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "VIDEO"
|
||||
FULLSCREEN = "Celá obrazovka"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,15 @@ C_DOWN = "C Naar Beneden"
|
|||
C_LEFT = "C Links"
|
||||
C_RIGHT = "C Rechts"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Analoge stick-opties"
|
||||
|
||||
ROTATE_LEFT = "Linker joystick 90 graden draaien"
|
||||
INVERT_LEFT_X = "Linker joystick X-as omkeren"
|
||||
INVERT_LEFT_Y = "Linker joystick Y-as omkeren"
|
||||
ROTATE_RIGHT = "Rechter joystick 90 graden draaien"
|
||||
INVERT_RIGHT_X = "Rechter joystick X-as omkeren"
|
||||
INVERT_RIGHT_Y = "Rechter joystick Y-as omkeren"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "WEERGAVE"
|
||||
FULLSCREEN = "Volledig scherm"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,15 @@ C_DOWN = "C-Down"
|
|||
C_LEFT = "C-Left"
|
||||
C_RIGHT = "C-Right"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Analog Stick Options"
|
||||
|
||||
ROTATE_LEFT = "Rotate Left Stick 90 degrees"
|
||||
INVERT_LEFT_X = "Invert Left Stick X axis"
|
||||
INVERT_LEFT_Y = "Invert Left Stick Y axis"
|
||||
ROTATE_RIGHT = "Rotate Right Stick 90 degrees"
|
||||
INVERT_RIGHT_X = "Invert Right Stick X axis"
|
||||
INVERT_RIGHT_Y = "Invert Right Stick Y axis"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "DISPLAY"
|
||||
FULLSCREEN = "Fullscreen"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,15 @@ C_DOWN = "C Bas"
|
|||
C_LEFT = "C Gauche"
|
||||
C_RIGHT = "C Droite"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Options du stick analogique"
|
||||
|
||||
ROTATE_LEFT = "Rotation du bâton gauche de 90 degrés"
|
||||
INVERT_LEFT_X = "Inverser l'axe X du stick gauche"
|
||||
INVERT_LEFT_Y = "Inverser l'axe Y du stick gauche"
|
||||
ROTATE_RIGHT = "Rotation du bâton droit de 90 degrés"
|
||||
INVERT_RIGHT_X = "Inverser l'axe X du stick droit"
|
||||
INVERT_RIGHT_Y = "Inverser l'axe Y du stick droit"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "AFFICHAGE"
|
||||
FULLSCREEN = "Plein Écran"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,15 @@ C_DOWN = "C-Unten"
|
|||
C_LEFT = "C-Links"
|
||||
C_RIGHT = "C-Rechts"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Analogstick-Optionen"
|
||||
|
||||
ROTATE_LEFT = "Linken Stick um 90 Grad drehen"
|
||||
INVERT_LEFT_X = "Linken Stick X-Achse invertieren"
|
||||
INVERT_LEFT_Y = "Linker Stick Y-Achse invertieren"
|
||||
ROTATE_RIGHT = "Rechten Stick um 90 Grad drehen"
|
||||
INVERT_RIGHT_X = "Rechter Stick X-Achse invertieren"
|
||||
INVERT_RIGHT_Y = "Rechter Stick Y-Achse invertieren"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "ANZEIGE"
|
||||
FULLSCREEN = "Vollbildmodus"
|
||||
|
|
|
|||
|
|
@ -130,6 +130,15 @@ C_DOWN = "C Giù"
|
|||
C_LEFT = "C Sinistra"
|
||||
C_RIGHT = "C Destra"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Opzioni dello stick analogico"
|
||||
|
||||
ROTATE_LEFT = "Ruota lo stick sinistro di 90 gradi"
|
||||
INVERT_LEFT_X = "Invertire l'asse X dello stick sinistro"
|
||||
INVERT_LEFT_Y = "Invertire l'asse Y dello stick sinistro"
|
||||
ROTATE_RIGHT = "Ruota lo stick destro di 90 gradi"
|
||||
INVERT_RIGHT_X = "Invertire l'asse X dello stick destro"
|
||||
INVERT_RIGHT_Y = "Invertire l'asse Y dello stick destro"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "GRAFICA"
|
||||
FULLSCREEN = "Schermo intero"
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ Y_SENSITIVITY = "Y方向の感度"
|
|||
AGGRESSION = "かたさ"
|
||||
PAN_LEVEL = "カメラのずれ"
|
||||
DECELERATION = "カメラ減速"
|
||||
ROMHACK_CAMERA_Off = "オフ"
|
||||
|
||||
[CONTROLS]
|
||||
CONTROLS = "CONTROLS"
|
||||
|
|
@ -132,6 +133,15 @@ C_DOWN = "Cボタン 下"
|
|||
C_LEFT = "Cボタン 左"
|
||||
C_RIGHT = "Cボタン 右"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "アナログスティックのオプション"
|
||||
|
||||
ROTATE_LEFT = "左スティックを90度回転させる"
|
||||
INVERT_LEFT_X = "左スティックX軸の反転"
|
||||
INVERT_LEFT_Y = "左スティックY軸の反転"
|
||||
ROTATE_RIGHT = "右スティックを90度回転"
|
||||
INVERT_RIGHT_X = "右スティックX軸の反転"
|
||||
INVERT_RIGHT_Y = "右スティックY軸の反転"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "DISPLAY"
|
||||
FULLSCREEN = "フルスクリーン"
|
||||
|
|
@ -415,6 +425,7 @@ REFRESHING = "更新中…"
|
|||
ENTER_PASSWORD = "部屋のパスワードを入力してください:"
|
||||
SEARCH = "検索"
|
||||
NONE_FOUND = "部屋が見つかりませんでした"
|
||||
NO_LOBBIES_FOUND = "ロビーは見つからなかった。"
|
||||
|
||||
[CHANGELOG]
|
||||
CHANGELOG_TITLE = "CHANGELOG"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,15 @@ C_DOWN = "Kamera w Dół"
|
|||
C_LEFT = "Kamera w Lewo"
|
||||
C_RIGHT = "Kamera w Prawo"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Opcje drążka analogowego"
|
||||
|
||||
ROTATE_LEFT = "Obrót lewego drążka o 90 stopni"
|
||||
INVERT_LEFT_X = "Odwrócenie osi X lewego drążka"
|
||||
INVERT_LEFT_Y = "Odwrócenie osi Y lewego drążka"
|
||||
ROTATE_RIGHT = "Obrót prawego drążka o 90 stopni"
|
||||
INVERT_RIGHT_X = "Odwrócenie osi X prawego drążka"
|
||||
INVERT_RIGHT_Y = "Odwrócenie osi Y prawego drążka"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "WYŚWIETLANIE"
|
||||
FULLSCREEN = "Pełny Ekran"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,15 @@ C_DOWN = "C-Baixo"
|
|||
C_LEFT = "C-Esquerda"
|
||||
C_RIGHT = "C-Direita"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Opções do manípulo analógico"
|
||||
|
||||
ROTATE_LEFT = "Rodar o manípulo esquerdo 90 graus"
|
||||
INVERT_LEFT_X = "Inverter o eixo X do manípulo esquerdo"
|
||||
INVERT_LEFT_Y = "Inverter o eixo Y do manípulo esquerdo"
|
||||
ROTATE_RIGHT = "Rodar o manípulo direito 90 graus"
|
||||
INVERT_RIGHT_X = "Inverter o eixo X do manípulo direito"
|
||||
INVERT_RIGHT_Y = "Inverter o eixo Y do manípulo direito"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "VÍDEO"
|
||||
FULLSCREEN = "Tela cheia"
|
||||
|
|
|
|||
|
|
@ -131,6 +131,15 @@ C_DOWN = "C Вниз"
|
|||
C_LEFT = "C Влево"
|
||||
C_RIGHT = "C Вправо"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Варианты аналоговых стиков"
|
||||
|
||||
ROTATE_LEFT = "Поверните левый стик на 90 градусов"
|
||||
INVERT_LEFT_X = "Инвертировать левый стик по оси X"
|
||||
INVERT_LEFT_Y = "Инвертировать ось Y левого стика"
|
||||
ROTATE_RIGHT = "Поверните правый стик на 90 градусов"
|
||||
INVERT_RIGHT_X = "Инвертировать правый стик оси X"
|
||||
INVERT_RIGHT_Y = "Инвертировать правый стик по оси Y"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "DISPLAY"
|
||||
FULLSCREEN = "Полноэкранный режим"
|
||||
|
|
|
|||
|
|
@ -132,6 +132,15 @@ C_DOWN = "C Abajo"
|
|||
C_LEFT = "C Izquierda"
|
||||
C_RIGHT = "C Derecha"
|
||||
|
||||
ANALOG_STICK_OPTIONS = "Opciones del mando analógico"
|
||||
|
||||
ROTATE_LEFT = "Gira el stick izquierdo 90 grados"
|
||||
INVERT_LEFT_X = "Invertir eje X del stick izquierdo"
|
||||
INVERT_LEFT_Y = "Invertir eje Y del stick izquierdo"
|
||||
ROTATE_RIGHT = "Gira el stick derecho 90 grados"
|
||||
INVERT_RIGHT_X = "Invertir Stick derecho eje X"
|
||||
INVERT_RIGHT_Y = "Invertir el eje Y del stick derecho"
|
||||
|
||||
[DISPLAY]
|
||||
DISPLAY = "PANTALLA"
|
||||
FULLSCREEN = "Pantalla completa"
|
||||
|
|
|
|||
|
|
@ -79,6 +79,8 @@ ConfigWindow configWindow = {
|
|||
.msaa = 0,
|
||||
};
|
||||
|
||||
ConfigStick configStick = { 0 };
|
||||
|
||||
// display settings
|
||||
unsigned int configFiltering = 2; // 0 = Nearest, 1 = Bilinear, 2 = Trilinear
|
||||
bool configShowFPS = false;
|
||||
|
|
@ -268,6 +270,12 @@ static const struct ConfigOption options[] = {
|
|||
{.name = "disable_gamepads", .type = CONFIG_TYPE_BOOL, .boolValue = &configDisableGamepads},
|
||||
#endif
|
||||
{.name = "use_standard_key_bindings_chat", .type = CONFIG_TYPE_BOOL, .boolValue = &configUseStandardKeyBindingsChat},
|
||||
{.name = "stick_rotate_left", .type = CONFIG_TYPE_BOOL, .boolValue = &configStick.rotateLeft},
|
||||
{.name = "stick_invert_left_x", .type = CONFIG_TYPE_BOOL, .boolValue = &configStick.invertLeftX},
|
||||
{.name = "stick_invert_left_y", .type = CONFIG_TYPE_BOOL, .boolValue = &configStick.invertLeftY},
|
||||
{.name = "stick_rotate_right", .type = CONFIG_TYPE_BOOL, .boolValue = &configStick.rotateRight},
|
||||
{.name = "stick_invert_right_x", .type = CONFIG_TYPE_BOOL, .boolValue = &configStick.invertRightX},
|
||||
{.name = "stick_invert_right_y", .type = CONFIG_TYPE_BOOL, .boolValue = &configStick.invertRightY},
|
||||
// free camera settings
|
||||
{.name = "bettercam_enable", .type = CONFIG_TYPE_BOOL, .boolValue = &configEnableFreeCamera},
|
||||
{.name = "bettercam_analog", .type = CONFIG_TYPE_BOOL, .boolValue = &configFreeCameraAnalog},
|
||||
|
|
@ -766,7 +774,7 @@ NEXT_OPTION:
|
|||
|
||||
if (configFrameLimit < 30) { configFrameLimit = 30; }
|
||||
if (configFrameLimit > 3000) { configFrameLimit = 3000; }
|
||||
|
||||
|
||||
gMasterVolume = (f32)configMasterVolume / 127.0f;
|
||||
|
||||
if (configPlayerModel >= CT_MAX) { configPlayerModel = 0; }
|
||||
|
|
|
|||
|
|
@ -27,10 +27,20 @@ typedef struct {
|
|||
unsigned int msaa;
|
||||
} ConfigWindow;
|
||||
|
||||
typedef struct {
|
||||
bool rotateLeft;
|
||||
bool invertLeftX;
|
||||
bool invertLeftY;
|
||||
bool rotateRight;
|
||||
bool invertRightX;
|
||||
bool invertRightY;
|
||||
} ConfigStick;
|
||||
|
||||
extern char configSaveNames[4][MAX_SAVE_NAME_STRING];
|
||||
|
||||
// display settings
|
||||
extern ConfigWindow configWindow;
|
||||
extern ConfigStick configStick;
|
||||
extern unsigned int configFiltering;
|
||||
extern bool configShowFPS;
|
||||
extern bool configUncappedFramerate;
|
||||
|
|
|
|||
|
|
@ -53,6 +53,11 @@ static u32 last_mouse = VK_INVALID;
|
|||
static u32 last_joybutton = VK_INVALID;
|
||||
static u32 last_gamepad = 0;
|
||||
|
||||
static s16 invert_s16(s16 val) {
|
||||
if (val == -0x8000) return 0x7FFF;
|
||||
return (s16)(-(s32)val);
|
||||
}
|
||||
|
||||
static inline void controller_add_binds(const u32 mask, const u32 *btns) {
|
||||
for (u32 i = 0; i < MAX_BINDS; ++i) {
|
||||
if (btns[i] >= VK_BASE_SDL_GAMEPAD && btns[i] <= VK_BASE_SDL_GAMEPAD + VK_SIZE) {
|
||||
|
|
@ -260,6 +265,21 @@ static void controller_sdl_read(OSContPad *pad) {
|
|||
}
|
||||
}
|
||||
|
||||
if (configStick.rotateLeft) {
|
||||
s16 tmp = leftx;
|
||||
leftx = invert_s16(lefty);
|
||||
lefty = tmp;
|
||||
}
|
||||
if (configStick.rotateRight) {
|
||||
s16 tmp = rightx;
|
||||
rightx = invert_s16(righty);
|
||||
righty = tmp;
|
||||
}
|
||||
if (configStick.invertLeftX) { leftx = invert_s16(leftx); }
|
||||
if (configStick.invertLeftY) { lefty = invert_s16(lefty); }
|
||||
if (configStick.invertRightX) { rightx = invert_s16(rightx); }
|
||||
if (configStick.invertRightY) { righty = invert_s16(righty); }
|
||||
|
||||
update_button(VK_LTRIGGER - VK_BASE_SDL_GAMEPAD, ltrig > AXIS_THRESHOLD);
|
||||
update_button(VK_RTRIGGER - VK_BASE_SDL_GAMEPAD, rtrig > AXIS_THRESHOLD);
|
||||
|
||||
|
|
|
|||
|
|
@ -12,12 +12,30 @@ void djui_panel_controls_value_change(UNUSED struct DjuiBase* caller) {
|
|||
controller_reconfigure();
|
||||
}
|
||||
|
||||
void djui_panel_controls_analog_stick_options_create(struct DjuiBase* caller) {
|
||||
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CONTROLS, CONTROLS), false);
|
||||
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
||||
{
|
||||
djui_checkbox_create(body, DLANG(CONTROLS, ROTATE_LEFT), &configStick.rotateLeft, NULL);
|
||||
djui_checkbox_create(body, DLANG(CONTROLS, INVERT_LEFT_X), &configStick.invertLeftX, NULL);
|
||||
djui_checkbox_create(body, DLANG(CONTROLS, INVERT_LEFT_Y), &configStick.invertLeftY, NULL);
|
||||
djui_checkbox_create(body, DLANG(CONTROLS, ROTATE_RIGHT), &configStick.rotateRight, NULL);
|
||||
djui_checkbox_create(body, DLANG(CONTROLS, INVERT_RIGHT_X), &configStick.invertRightX, NULL);
|
||||
djui_checkbox_create(body, DLANG(CONTROLS, INVERT_RIGHT_Y), &configStick.invertRightY, NULL);
|
||||
|
||||
djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back);
|
||||
}
|
||||
|
||||
djui_panel_add(caller, panel, NULL);
|
||||
}
|
||||
|
||||
void djui_panel_controls_create(struct DjuiBase* caller) {
|
||||
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(CONTROLS, CONTROLS), false);
|
||||
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
||||
{
|
||||
djui_button_create(body, DLANG(CONTROLS, N64_BINDS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_n64_create);
|
||||
djui_button_create(body, DLANG(CONTROLS, EXTRA_BINDS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_extra_create);
|
||||
djui_button_create(body, DLANG(CONTROLS, ANALOG_STICK_OPTIONS), DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_analog_stick_options_create);
|
||||
djui_checkbox_create(body, DLANG(CONTROLS, BACKGROUND_GAMEPAD), &configBackgroundGamepad, NULL);
|
||||
#ifndef HANDHELD
|
||||
djui_checkbox_create(body, DLANG(CONTROLS, DISABLE_GAMEPADS), &configDisableGamepads, NULL);
|
||||
|
|
@ -47,7 +65,7 @@ void djui_panel_controls_create(struct DjuiBase* caller) {
|
|||
if (strcmp(gamepadChoices[i], gamepadChoices[j]) == 0) {
|
||||
count++;
|
||||
char newName[256];
|
||||
|
||||
|
||||
// If the name is bigger than 9 characters, we need to truncate it first
|
||||
// Then we can append the number so it fits in the slot
|
||||
|
||||
|
|
@ -57,7 +75,7 @@ void djui_panel_controls_create(struct DjuiBase* caller) {
|
|||
} else {
|
||||
snprintf(newName, sizeof(newName), "%s (%d)", gamepadChoices[i], count);
|
||||
}
|
||||
|
||||
|
||||
// Remove the old string and replace it with the new one
|
||||
free(gamepadChoices[i]);
|
||||
gamepadChoices[i] = strdup(newName);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue