From 3861bfc00c50a62748bad17338d02b62c8b360ed Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Fri, 12 Mar 2021 00:14:05 -0500 Subject: [PATCH] Add the option to change the keys used to navigate the gem board. --- .../UserInterfaceState.xcuserstate | Bin 73426 -> 93719 bytes a2bejwld/anim.c | 11 - a2bejwld/joystick.c | 25 +- a2bejwld/joystick.h | 11 +- a2bejwld/machine.c | 21 +- a2bejwld/make/DevApple.vii | Bin 6608 -> 6608 bytes a2bejwld/ui.c | 305 ++++++++++++------ 7 files changed, 222 insertions(+), 151 deletions(-) diff --git a/a2bejwld.xcodeproj/project.xcworkspace/xcuserdata/jrand.xcuserdatad/UserInterfaceState.xcuserstate b/a2bejwld.xcodeproj/project.xcworkspace/xcuserdata/jrand.xcuserdatad/UserInterfaceState.xcuserstate index 240bc6a99ea60b01e059e3257fdc5161d34ebd19..7f0a893b9aba1594585eb2b37eb2ed359baad861 100644 GIT binary patch literal 93719 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 ~=z)`fLt-GCtMCjrR-k_iMO%L0O_=K#sAXFV*k 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 literal 73426 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 diff --git a/a2bejwld/anim.c b/a2bejwld/anim.c index bcfb47f..9880286 100644 --- a/a2bejwld/anim.c +++ b/a2bejwld/anim.c @@ -265,17 +265,6 @@ void swapSquares(tSquare square1, tGemType gemType1, bool starred1, temp = y2; y2 = y1; y1 = temp; - -#if 0 - // We don't need to swap square numbers. The code from here on - // doesn't distinguish between the two square numbers. So, save - // some time and don't swap. - // - // Be careful if this assumption is no longer true. - temp = square2; - square2 = square1; - square1 = temp; -#endif temp = gemType2; gemType2 = gemType1; diff --git a/a2bejwld/joystick.c b/a2bejwld/joystick.c index aa4d1fb..48770f0 100644 --- a/a2bejwld/joystick.c +++ b/a2bejwld/joystick.c @@ -32,7 +32,6 @@ static tJoyCallbacks *gJoyCallbacks = NULL; static tJoyState gJoyState = { JOY_POS_CENTER, - false, false }; @@ -52,17 +51,15 @@ void initJoystick(tJoyCallbacks *callbacks) } -bool isButtonPressed(tJoyButtonNum buttonNum) +bool isButtonPressed(void) { - if (buttonNum == JOY_BUTTON_0) { - __asm__ volatile("LDA %w", BTN0); - __asm__ volatile("STA %v", gJoystickTemp); - } else if (buttonNum == JOY_BUTTON_1) { - __asm__ volatile("LDA %w", BTN1); - __asm__ volatile("STA %v", gJoystickTemp); - } else { - return false; - } + __asm__ volatile("LDA %w", BTN0); + __asm__ volatile("STA %v", gJoystickTemp); + if (gJoystickTemp > 127) + return true; + + __asm__ volatile("LDA %w", BTN1); + __asm__ volatile("STA %v", gJoystickTemp); return ((gJoystickTemp > 127) ? true : false); } @@ -123,8 +120,7 @@ static void readJoystickState(tJoyState *state) pos = JOY_POS_RIGHT; } - state->button0 = isButtonPressed(0); - state->button1 = isButtonPressed(1); + state->button = isButtonPressed(); if (axisUpDown < LOWER_THRESHOLD) { switch (pos) { @@ -157,8 +153,7 @@ static void readJoystickState(tJoyState *state) static bool joystickStateChanged(tJoyState *state1, tJoyState *state2) { if ((state1->position != state2->position) || - (state1->button0 != state2->button0) || - (state1->button1 != state2->button1)) { + (state1->button != state2->button)) { return true; } return false; diff --git a/a2bejwld/joystick.h b/a2bejwld/joystick.h index 6e8eb27..b7afb75 100644 --- a/a2bejwld/joystick.h +++ b/a2bejwld/joystick.h @@ -26,21 +26,14 @@ #define JOY_POS_DOWN_RIGHT 8 #define NUM_JOY_POSITIONS 9 -#define JOY_BUTTON_0 0 -#define JOY_BUTTON_1 1 -#define NUM_JOY_BUTTONS 2 - // Typedefs -typedef int8_t tJoyButtonNum; - typedef int8_t tJoyPos; typedef struct tJoyState { tJoyPos position; - bool button0; - bool button1; + bool button; } tJoyState; typedef struct tJoyCallbacks { @@ -64,6 +57,6 @@ typedef struct tJoyCallbacks { extern void initJoystick(tJoyCallbacks *callbacks); -extern bool isButtonPressed(tJoyButtonNum buttonNum); +extern bool isButtonPressed(void); extern bool pollJoystick(void); diff --git a/a2bejwld/machine.c b/a2bejwld/machine.c index 651d431..020cc01 100644 --- a/a2bejwld/machine.c +++ b/a2bejwld/machine.c @@ -33,21 +33,6 @@ static tMachineGSSpeed gOldSpeed = GS_SPEED_SLOW; // Implementation -static bool machineIs2c(uint8_t machineType) -{ - switch (machineType) { - case APPLE_IIC: - case APPLE_IIC35: - case APPLE_IICEXP: - case APPLE_IICREV: - case APPLE_IICPLUS: - return true; - } - - return false; -} - - static bool machineIs2GS(uint8_t machineType) { switch (machineType) { @@ -89,7 +74,11 @@ void initMachine(void) { uint8_t machineType = get_ostype(); - if (machineIs2c(machineType)) { + if ((machineType == APPLE_IIC) || + (machineType == APPLE_IIC35) || + (machineType == APPLE_IICEXP) || + (machineType == APPLE_IICREV) || + (machineType == APPLE_IICPLUS)) { gVblWait = vblWait2c; } else if (machineIs2GS(machineType)) { vblInit2gs(); diff --git a/a2bejwld/make/DevApple.vii b/a2bejwld/make/DevApple.vii index 5f165dfa9f849f8154277c82598cbc8262ed94ba..59e65a78af5d97a2cdd6f9624634a9929281f3a5 100644 GIT binary patch literal 6608 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 +#include #include #include #include @@ -26,20 +27,36 @@ // Defines #define SAVE_OPTIONS_FILE "A2BEJWLD.OPTS" -#define VERSION "v2.6" +#define VERSION "v2.7" #define OPTIONS_VERSION_UNSAVED 0 -#define OPTIONS_VERSION 2 +#define OPTIONS_VERSION_V2 2 +#define OPTIONS_VERSION 3 + +#define OPTION_JOYSTICK_ENABLED (1 << 0) +#define OPTION_MOUSE_ENABLED (1 << 1) +#define OPTION_SOUND_ENABLED (1 << 2) +#define OPTION_MOCKINGBOARD_ENABLED (1 << 3) +#define OPTION_MOCKINGBOARD_SPEECH_ENABLED (1 << 4) // Typedefs -typedef struct tGameOptions { +typedef struct tGameOptionsV2 { uint8_t optionsVersion; bool enableJoystick; bool enableMouse; bool enableSound; bool enableMockingboard; bool enableMockingboardSpeech; +} tGameOptionsV2; + +typedef struct tGameOptions { + uint8_t optionsVersion; + uint8_t flags; + char upChar; + char downChar; + char leftChar; + char rightChar; } tGameOptions; @@ -104,27 +121,32 @@ static bool gShouldSave = false; static tGameOptions gGameOptions = { OPTIONS_VERSION_UNSAVED, // optionsVersion - false, // enableJoystick - true, // enableMouse - true, // enableSound - true, // enableMockingboard - true // enableMockingboardSpeech + (OPTION_MOUSE_ENABLED | OPTION_SOUND_ENABLED | OPTION_MOCKINGBOARD_ENABLED | OPTION_MOCKINGBOARD_SPEECH_ENABLED), // flags + 'I', // upChar + 'M', // downChar + 'J', // leftChar + 'K' // rightChar }; // Implementation +static void printChar (char ch) +{ + if (ch == '\n') + ch = '\r'; + ch |= 0x80; + cout(ch); +} + static void printString(char * buffer) { char ch; while (*buffer != '\0') { ch = *buffer; - if (ch == '\n') - ch = '\r'; - ch |= 0x80; - cout(ch); + printChar(ch); buffer++; } } @@ -140,7 +162,7 @@ static void printInteger(uint16_t val) static void badThingHappened(void) { - if (gGameOptions.enableSound) + if ((gGameOptions.flags & OPTION_SOUND_ENABLED) != 0) printString("\007"); } @@ -179,7 +201,7 @@ static bool loadOptions(void) fclose(optionsFile); - // If we are upgrading from v1 of the options file, then: + // If we are upgrading from v1 to v2 of the options file, then: // - Force the mouse option on. This option is now only used to disable the mouse when one is // present. When no mouse is installed, this option does nothing. // - There used to be a tSlot of the mockingboard where we now have the enableMockingboard boolean. @@ -188,9 +210,31 @@ static bool loadOptions(void) // true if the user enabled it. Now that we can detect the speech chip, the value is default true // and the user can disable speech if they want. if (gGameOptions < OPTIONS_VERSION) { - gGameOptions.enableMouse = true; - gGameOptions.enableMockingboard = true; - gGameOptions.enableMockingboardSpeech = true; + tGameOptionsV2 * oldOptions = (tGameOptionsV2 *)&gGameOptions; + if (oldOptions->enableJoystick) + gGameOptions.flags = OPTION_JOYSTICK_ENABLED; + else + gGameOptions.flags = 0; + + if (oldOptions->enableMouse) + gGameOptions.flags |= OPTION_MOUSE_ENABLED; + + if (oldOptions->enableSound) + gGameOptions.flags |= OPTION_SOUND_ENABLED; + + if (oldOptions->enableMockingboard) + gGameOptions.flags |= OPTION_MOCKINGBOARD_ENABLED; + + if (oldOptions->enableMockingboardSpeech) + gGameOptions.flags |= OPTION_MOCKINGBOARD_SPEECH_ENABLED; + + if (gGameOptions < OPTIONS_VERSION_V2) + gGameOptions.flags |= (OPTION_MOUSE_ENABLED | OPTION_MOCKINGBOARD_ENABLED | OPTION_MOCKINGBOARD_SPEECH_ENABLED); + + gGameOptions.upChar = 'I'; + gGameOptions.downChar = 'M'; + gGameOptions.leftChar = 'J'; + gGameOptions.rightChar = 'K'; } return true; @@ -206,11 +250,12 @@ static void applyNewOptions(tGameOptions *newOptions) printString("\n\n\n Saving options..."); - if ((gGameOptions.enableSound != newOptions->enableSound) || - (gGameOptions.enableMockingboard != newOptions->enableMockingboard) || - (gGameOptions.enableMockingboardSpeech != newOptions->enableMockingboardSpeech)) { + if ((gGameOptions.flags & (OPTION_SOUND_ENABLED | OPTION_MOCKINGBOARD_ENABLED | OPTION_MOCKINGBOARD_SPEECH_ENABLED)) != + (newOptions->flags & (OPTION_SOUND_ENABLED | OPTION_MOCKINGBOARD_ENABLED | OPTION_MOCKINGBOARD_SPEECH_ENABLED))) { // If the sound parameters have changed, then re-init sounds - soundInit(newOptions->enableSound, newOptions->enableMockingboard, newOptions->enableMockingboardSpeech); + soundInit(((newOptions->flags & OPTION_SOUND_ENABLED) != 0), + ((newOptions->flags & OPTION_MOCKINGBOARD_ENABLED) != 0), + ((newOptions->flags & OPTION_MOCKINGBOARD_SPEECH_ENABLED) !=0)); } memcpy(&gGameOptions, newOptions, sizeof(gGameOptions)); @@ -228,7 +273,13 @@ static void showCursor(void) static void replaceCursor(char ch) { cout(CH_CURS_LEFT); - cout(ch | 0x80); + printChar(ch); +} + + +static char getKey(void) +{ + return toupper(cgetc()); } @@ -239,16 +290,14 @@ static bool yorn(void) showCursor(); while (true) { - ch = cgetc(); + ch = getKey(); - if ((ch == 'N') || - (ch == 'n')) { + if (ch == 'N') { result = false; break; } - if ((ch == 'Y') || - (ch == 'y')) + if (ch == 'Y') break; badThingHappened(); @@ -265,9 +314,12 @@ static void getSoundOptions(tGameOptions *newOptions) tSlot slot; printString("\n\nEnable sounds? (Y/N) "); - newOptions->enableSound = yorn(); - if (!newOptions->enableSound) + if (yorn()) { + newOptions->flags |= OPTION_SOUND_ENABLED; + } else { + newOptions->flags &= ~OPTION_SOUND_ENABLED; return; + } // If no mockingboard present, don't bother to ask whether to enable/disable it. slot = mockingBoardSlot(); @@ -277,9 +329,12 @@ static void getSoundOptions(tGameOptions *newOptions) printString("\nEnable MockingBoard sound found in slot "); printInteger(slot); printString("? (Y/N) "); - newOptions->enableMockingboard = yorn(); - if (!newOptions->enableMockingboard) + if (yorn()) { + newOptions->flags |= OPTION_MOCKINGBOARD_ENABLED; + } else { + newOptions->flags &= ~OPTION_MOCKINGBOARD_ENABLED; return; + } // If the mockingboard does not have a speech chip, do not prompt whether to // enable/disable it. @@ -287,7 +342,50 @@ static void getSoundOptions(tGameOptions *newOptions) return; printString("\nEnable speech on the Mockingboard? (Y/N) "); - newOptions->enableMockingboardSpeech = yorn(); + if (yorn()) { + newOptions->flags |= OPTION_MOCKINGBOARD_SPEECH_ENABLED; + } else { + newOptions->flags &= ~OPTION_MOCKINGBOARD_SPEECH_ENABLED; + } +} + + +static char getKeyDirection(char *dir, char current, char other1, char other2, char other3) +{ + char ch; + + printString("\nKey for "); + printString(dir); + printString(" movement (current "); + printChar(current); + printString(") "); + showCursor(); + while (true) { + ch = getKey(); + if ((isalnum(ch)) && + (ch != 'Q') && + (ch != 'R') && + (ch != 'O') && + (ch != 'H') && + (ch != other1) && + (ch != other2) && + (ch != other3)) + break; + + badThingHappened(); + } + replaceCursor(ch); + + return ch; +} + +static void getKeyboardOptions(tGameOptions *newOptions) +{ + printChar('\n'); + newOptions->upChar = getKeyDirection("up", newOptions->upChar, 0, 0, 0); + newOptions->downChar = getKeyDirection("down", newOptions->downChar, newOptions->upChar, 0, 0); + newOptions->leftChar = getKeyDirection("left", newOptions->leftChar, newOptions->upChar, newOptions->downChar, 0); + newOptions->rightChar = getKeyDirection("right", newOptions->rightChar, newOptions->upChar, newOptions->downChar, newOptions->leftChar); } @@ -302,6 +400,9 @@ static void selectOptions(void) memcpy(&newOptions, &gGameOptions, sizeof(newOptions)); while (true) { + bool enableSound = ((newOptions.flags & OPTION_SOUND_ENABLED) != 0); + bool enableMockingboard = ((newOptions.flags & OPTION_MOCKINGBOARD_ENABLED) != 0); + clrscr(); printString( // 0000000001111111111222222222233333333334444444444555555555566666666667 @@ -309,19 +410,31 @@ static void selectOptions(void) " Apple // Bejeweled\n" " Options\n" "\n" + " K - Keyboard control - "); + printChar(newOptions.upChar); + printChar('\n'); + printString(" "); + printChar(newOptions.leftChar); + printChar(' '); + printChar(newOptions.rightChar); + printChar('\n'); + printString(" "); + printChar(newOptions.downChar); + printChar('\n'); + printString( " J - Joystick control - "); - printString(newOptions.enableJoystick ? "Enabled\n" : "Disabled\n"); + printString(((newOptions.flags & OPTION_JOYSTICK_ENABLED) != 0) ? "Enabled\n" : "Disabled\n"); if (hasMouse()) { printString( " M - Mouse control - "); - printString(newOptions.enableMouse ? "Enabled\n" : "Disabled\n"); + printString(((newOptions.flags & OPTION_MOUSE_ENABLED) != 0) ? "Enabled\n" : "Disabled\n"); } printString( " S - Sound - "); - printString(newOptions.enableSound ? "Enabled\n" : "Disabled\n"); + printString(enableSound ? "Enabled\n" : "Disabled\n"); - if (newOptions.enableSound) { + if (enableSound) { tSlot slot = mockingBoardSlot(); if (slot != 0) { @@ -329,18 +442,18 @@ static void selectOptions(void) // 0000000001111111111222222222233333333334444444444555555555566666666667 // 1234567890123456789012345678901234567890123456789012345678901234567890 " MockingBoard - "); - printString(newOptions.enableMockingboard ? "Enabled (Slot " : "Disabled (Slot "); + printString(enableMockingboard ? "Enabled (Slot " : "Disabled (Slot "); printInteger(slot); printString(")\n"); - if ((newOptions.enableMockingboard) && + if ((enableMockingboard) && (mockingBoardHasSpeechChip())) { printString( // 0000000001111111111222222222233333333334444444444555555555566666666667 // 1234567890123456789012345678901234567890123456789012345678901234567890 " Speech - "); - printString(newOptions.enableMockingboardSpeech ? "Enabled\n" : "Disabled\n"); + printString(((newOptions.flags & OPTION_MOCKINGBOARD_SPEECH_ENABLED) != 0) ? "Enabled\n" : "Disabled\n"); } } } @@ -351,21 +464,22 @@ static void selectOptions(void) " Type a letter to change a setting or any other key to save settings\n" " and continue"); - switch (cgetc()) { - case 'j': + switch (getKey()) { case 'J': - newOptions.enableJoystick = !newOptions.enableJoystick; + newOptions.flags ^= OPTION_JOYSTICK_ENABLED; break; - case 's': case 'S': getSoundOptions(&newOptions); break; + + case 'K': + getKeyboardOptions(&newOptions); + break; - case 'm': case 'M': if (hasMouse()) { - newOptions.enableMouse = !newOptions.enableMouse; + newOptions.flags ^= OPTION_MOUSE_ENABLED; break; } // Fall through. If no mouse, then pressing m is a fall through into the save code. @@ -392,7 +506,18 @@ void printInstructions(void) " Apple // Bejeweled (" VERSION ")\n" " by Jeremy Rand\n" "\n" - " Use I-J-K-M, the arrow keys, joystick or mouse to move your selection.\n" + " Use "); + + printChar(gGameOptions.upChar); + printChar('-'); + printChar(gGameOptions.leftChar); + printChar('-'); + printChar(gGameOptions.rightChar); + printChar('-'); + printChar(gGameOptions.downChar); + + printString( + " the arrow keys, joystick or mouse to move your selection.\n" " Hold either apple key, joystick or mouse button and move your selection\n" " to swap two jewels and match 3 or more jewels. When you match three\n" " jewels, they disappear and new jewels will drop from the top.\n" @@ -420,8 +545,7 @@ void printInstructions(void) srand(seed); - switch (cgetc()) { - case 'o': + switch (getKey()) { case 'O': selectOptions(); break; @@ -609,12 +733,6 @@ static bool swapDir(tDirection dir) } -static bool isAppleButtonPressed(void) -{ - return (isButtonPressed(JOY_BUTTON_0) || isButtonPressed(JOY_BUTTON_1)); -} - - static void endGame(void) { char ch; @@ -632,18 +750,15 @@ static void endGame(void) showCursor(); while (true) { - ch = cgetc(); + ch = getKey(); switch (ch) { - case 'y': case 'Y': replaceCursor(ch); printString("\n"); return; - case 'n': case 'N': case CH_ESC: - case 'q': case 'Q': replaceCursor(ch); quitGame(); @@ -717,7 +832,9 @@ void initUI(void) optionsLoaded = loadOptions(); - soundInit(gGameOptions.enableSound, gGameOptions.enableMockingboard, gGameOptions.enableMockingboardSpeech); + soundInit(((gGameOptions.flags & OPTION_SOUND_ENABLED) != 0), + ((gGameOptions.flags & OPTION_MOCKINGBOARD_ENABLED) != 0), + ((gGameOptions.flags & OPTION_MOCKINGBOARD_SPEECH_ENABLED) != 0)); initGameEngine(&gCallbacks); @@ -789,8 +906,7 @@ static bool joystickChangedCallback(tJoyState *oldState, tJoyState *newState) if (oldState->position != JOY_POS_CENTER) return false; - if ((newState->button0) || - (newState->button1)) { + if (newState->button) { switch (newState->position) { case JOY_POS_UP: return swapDir(DIR_UP); @@ -818,10 +934,7 @@ static bool joystickChangedCallback(tJoyState *oldState, tJoyState *newState) static bool joystickNoChangeCallback(tJoyState *oldState) { - if (oldState->button0) - return false; - - if (oldState->button1) + if (oldState->button) return false; joystickMove(oldState->position); @@ -837,60 +950,55 @@ static bool pollKeyboard(void) if (!kbhit()) return result; - ch = cgetc(); + ch = getKey(); + if (ch == gGameOptions.upChar) + ch = 0x0b; + else if (ch == gGameOptions.downChar) + ch = 0x0a; + else if (ch == gGameOptions.leftChar) + ch = CH_CURS_LEFT; + else if (ch == gGameOptions.rightChar) + ch = CH_CURS_RIGHT; + + if (isButtonPressed()) + ch += 128; + switch (ch) { - case 'i': - case 'I': // case CH_CURS_UP: case 0x0b: - if (!isAppleButtonPressed()) { - moveDir(DIR_UP); - break; - } - // Fallthrough... + moveDir(DIR_UP); + break; + case 139: result = swapDir(DIR_UP); break; - case 'j': - case 'J': case CH_CURS_LEFT: - if (!isAppleButtonPressed()) { - moveDir(DIR_LEFT); - break; - } - // Fallthrough... + moveDir(DIR_LEFT); + break; + case 136: result = swapDir(DIR_LEFT); break; - case 'k': - case 'K': case CH_CURS_RIGHT: - if (!isAppleButtonPressed()) { - moveDir(DIR_RIGHT); - break; - } - // Fallthrough... + moveDir(DIR_RIGHT); + break; + case 149: result = swapDir(DIR_RIGHT); break; - case 'm': - case 'M': // case CH_CURS_DOWN: case 0x0a: - if (!isAppleButtonPressed()) { - moveDir(DIR_DOWN); - break; - } - // Fallthrough... + moveDir(DIR_DOWN); + break; + case 138: result = swapDir(DIR_DOWN); break; case CH_ESC: - case 'q': case 'Q': if (gShouldSave) { videomode(0x12); @@ -901,21 +1009,18 @@ static bool pollKeyboard(void) quitGame(); break; - case 'r': case 'R': refreshScore(0); startNewGame(); gShouldSave = false; return true; - case 'o': case 'O': selectOptions(); showAndClearDblLoRes(); drawBoard(); break; - case 'h': case 'H': getHint(); break; @@ -982,12 +1087,12 @@ void playGame(void) break; } - if ((gGameOptions.enableJoystick) && + if (((gGameOptions.flags & OPTION_JOYSTICK_ENABLED) != 0) && (pollJoystick())) { break; } - if ((gGameOptions.enableMouse) && + if (((gGameOptions.flags & OPTION_MOUSE_ENABLED) != 0) && (pollMouse())) { break; }