From 6899ea7514da3917c46e01a8c2f209cefc35837c Mon Sep 17 00:00:00 2001 From: Daniel Monteiro Date: Tue, 2 Jul 2024 21:33:07 +0100 Subject: [PATCH 01/10] [MZ] Fix limit for drawing horizontal lines outside the bounds --- mz_frontend/src/AmigaVersion/AmigaRenderer.c | 2 +- mz_frontend/src/AtariVersion/AtariRenderer.c | 2 +- mz_frontend/src/MSDOSVersion/msdos.c | 2 +- mz_frontend/src/MegaDriveVersion/megadrive.c | 2 +- mz_frontend/src/SDLVersion/sdl2.c | 10 +++++----- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mz_frontend/src/AmigaVersion/AmigaRenderer.c b/mz_frontend/src/AmigaVersion/AmigaRenderer.c index 9ba03f481..375127841 100644 --- a/mz_frontend/src/AmigaVersion/AmigaRenderer.c +++ b/mz_frontend/src/AmigaVersion/AmigaRenderer.c @@ -305,7 +305,7 @@ void vLine(int16_t x0, int16_t y0, int16_t y1, uint16_t colour) { } void hLine(int16_t x0, int16_t x1, int16_t y, uint16_t colour) { - if (y < 0) { + if (y < 0 || y > YRESMINUSONE) { return; } diff --git a/mz_frontend/src/AtariVersion/AtariRenderer.c b/mz_frontend/src/AtariVersion/AtariRenderer.c index d912be8d7..4c174baac 100644 --- a/mz_frontend/src/AtariVersion/AtariRenderer.c +++ b/mz_frontend/src/AtariVersion/AtariRenderer.c @@ -213,7 +213,7 @@ void vLine(int16_t x0, int16_t y0, int16_t y1, uint16_t pixel) { } void hLine(int16_t x0, int16_t x1, int16_t y, uint16_t colour) { - if (y < 0 || y >= 128) { + if (y < 0 || y > YRESMINUSONE) { return; } diff --git a/mz_frontend/src/MSDOSVersion/msdos.c b/mz_frontend/src/MSDOSVersion/msdos.c index 118d5121f..573694b08 100644 --- a/mz_frontend/src/MSDOSVersion/msdos.c +++ b/mz_frontend/src/MSDOSVersion/msdos.c @@ -59,7 +59,7 @@ void vLine(int16_t x0, int16_t y0, int16_t y1, uint16_t colour) { void hLine(int16_t x0, int16_t x1, int16_t y, uint16_t colour) { - if (y < 0) { + if (y < 0 || y > YRESMINUSONE) { return; } diff --git a/mz_frontend/src/MegaDriveVersion/megadrive.c b/mz_frontend/src/MegaDriveVersion/megadrive.c index 91d92aeab..1c63f67bb 100644 --- a/mz_frontend/src/MegaDriveVersion/megadrive.c +++ b/mz_frontend/src/MegaDriveVersion/megadrive.c @@ -115,7 +115,7 @@ void vLine(int16_t x0, int16_t y0, int16_t y1, uint16_t colour) { void hLine(int16_t x0, int16_t x1, int16_t y, uint16_t colour) { - if (y < 0) { + if (y < 0 || y > YRESMINUSONE) { return; } diff --git a/mz_frontend/src/SDLVersion/sdl2.c b/mz_frontend/src/SDLVersion/sdl2.c index 0d08ae739..281d42500 100644 --- a/mz_frontend/src/SDLVersion/sdl2.c +++ b/mz_frontend/src/SDLVersion/sdl2.c @@ -111,7 +111,7 @@ void graphicsPut(int16_t x, int16_t y, uint16_t colour) { } void hLine(int16_t x0, int16_t x1, int16_t y, uint16_t colour) { - if (y < 0) { + if (y < 0 || y > YRESMINUSONE) { return; } @@ -127,12 +127,12 @@ void hLine(int16_t x0, int16_t x1, int16_t y, uint16_t colour) { _x0 = 0; } - if (_x1 >= 128) { - _x1 = 127; + if (_x1 > XRESMINUSONE) { + _x1 = XRESMINUSONE; } for (int x = _x0; x <= _x1; ++x) { - framebuffer[(256 * y) + x] = colour; + framebuffer[(XRES_FRAMEBUFFER * y) + x] = colour; } } @@ -185,7 +185,7 @@ void realPut(int x, int y, uint8_t value) { y = 159; } assert( !(value < 0 || value >= 16)); - framebuffer[(256 * y) + x] = value; + framebuffer[(XRES_FRAMEBUFFER * y) + x] = value; } void clearGraphics(void) { From 92af78b6c90a8634a89ff2893d5fe2d0e0760498 Mon Sep 17 00:00:00 2001 From: Daniel Monteiro Date: Tue, 2 Jul 2024 22:17:49 +0100 Subject: [PATCH 02/10] [CORE] Change how the comm terminals are activated Now, you have to use a high enough rank keycard to activate it ("swipe"). --- core/src/Derelict.c | 18 ++++++++++-------- core/tests/TestDerelict.cpp | 27 +-------------------------- 2 files changed, 11 insertions(+), 34 deletions(-) diff --git a/core/src/Derelict.c b/core/src/Derelict.c index 34c3ccaf6..798fbd1ef 100644 --- a/core/src/Derelict.c +++ b/core/src/Derelict.c @@ -212,14 +212,17 @@ void inspectItemWithHelmetCallback(struct Item *helmet, struct Item *item) { #endif } -void useCommWithRank(struct Item *item) { +void useKeycardWith(struct Item *item1, struct Item *item2) { + if (item2 == getItemNamed("comm-terminal-1") || + item2 == getItemNamed("comm-terminal-2") || + item2 == getItemNamed("comm-terminal-3")) { - if (getPlayerRank() <= 1) { - defaultLogger("Insufficient rank to access"); + defaultLogger("Computer node rebooted"); + item2->active = TRUE; return; } - defaultLogger("Computer node rebooted"); - item->active = !item->active; + + defaultLogger("Keycard can't be used with that"); } /** @@ -652,6 +655,7 @@ void initStation(void) { 0, #endif TRUE, 21, 9); + newItem->useWithCallback = useKeycardWith; newItem->pickCallback = keycardPickCallback; newItem->dropCallback = keycardDropCallback; @@ -690,7 +694,6 @@ void initStation(void) { 200, #endif FALSE, 7, 2); - newItem->useCallback = useCommWithRank; addToRoom("hall-1", newItem); @@ -702,7 +705,6 @@ void initStation(void) { 200, #endif FALSE, 6, 2); - newItem->useCallback = useCommWithRank; addToRoom("hall-2", newItem); @@ -714,7 +716,6 @@ void initStation(void) { 200, #endif FALSE, 7, 2); - newItem->useCallback = useCommWithRank; addToRoom("hall-3", newItem); /* Diaries */ @@ -812,6 +813,7 @@ void initStation(void) { 0, #endif TRUE, 23, 17); + newItem->useWithCallback = useKeycardWith; newItem->pickCallback = keycardPickCallback; newItem->dropCallback = keycardDropCallback; diff --git a/core/tests/TestDerelict.cpp b/core/tests/TestDerelict.cpp index f91743362..066f1b3e5 100644 --- a/core/tests/TestDerelict.cpp +++ b/core/tests/TestDerelict.cpp @@ -265,23 +265,6 @@ TEST_F(TestDerelict, keycardsCanElevatePlayerRankIfItsHigherThanCurrent) { ASSERT_EQ(getPlayerRank(), 2); } -TEST_F(TestDerelict, canOnlyUseCommWithHigherRanks) { - setPlayerLocation(getRoomIdByName("hall-2")); - addToRoom("hall-2", getItemNamed("hacked-keycard")); - - parseCommand("use", "comm-terminal-2"); - ASSERT_FALSE(getItemNamed("comm-terminal-2")->active); - - parseCommand("pick", "low-rank-keycard"); - parseCommand("use", "comm-terminal-2"); - ASSERT_FALSE(getItemNamed("comm-terminal-2")->active); - - parseCommand("pick", "hacked-keycard"); - parseCommand("use", "comm-terminal-2"); - ASSERT_TRUE(getItemNamed("comm-terminal-2")->active); -} - - TEST_F(TestDerelict, cantUnlockSafeWithOfflineComputerNodes) { setPlayerLocation(getRoomIdByName("situation-room")); @@ -319,21 +302,13 @@ TEST_F(TestDerelict, usingTheReactorCoreWillCauseMeltdown) { ASSERT_EQ(kBadVictory, getGameStatus()); } -TEST_F(TestDerelict, canToggleCommTerminal1) { - setPlayerLocation(getRoomIdByName("hall-1")); - setPlayerRank(5); - ASSERT_FALSE(getItemNamed("comm-terminal-1")->active); - parseCommand("use", "comm-terminal-1"); - ASSERT_TRUE(getItemNamed("comm-terminal-1")->active); -} - TEST_F(TestDerelict, cantToggleMagneticBoots) { ASSERT_TRUE(getItemNamed("magnetic-boots")->active); parseCommand("use", "magnetic-boots"); ASSERT_TRUE(getItemNamed("magnetic-boots")->active); } -TEST_F(TestDerelict, cantToggleCommTerminal1ByUsingWithOthers) { +TEST_F(TestDerelict, cantToggleCommTerminal1ByUsingWithHigherRankKeycards) { setPlayerLocation(getRoomIdByName("hall-1")); addToRoom("hall-1", getItemNamed("hacked-keycard")); parseCommand("pick", "hacked-keycard"); From 340224fb585d1226546c467485b146498a97df7b Mon Sep 17 00:00:00 2001 From: Daniel Monteiro Date: Tue, 2 Jul 2024 22:29:48 +0100 Subject: [PATCH 03/10] feat: simplify 32-bit+ ports to use fire3 instead of fire4 for toggling items --- common/src/Dungeon.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/common/src/Dungeon.c b/common/src/Dungeon.c index 6d58e4869..8e7d55a54 100644 --- a/common/src/Dungeon.c +++ b/common/src/Dungeon.c @@ -213,11 +213,6 @@ struct GameSnapshot dungeonTick(const enum ECommand command) { } break; case kCommandFire3: { - needsToRedrawHUD = TRUE; - } - break; - - case kCommandFire4: { struct ObjectNode *playerItems = getPlayerItems(); int index = 0; From 563d2677d0b50b10390b7fb6e10c80865239cbe4 Mon Sep 17 00:00:00 2001 From: Daniel Monteiro Date: Sat, 6 Jul 2024 17:12:29 +0100 Subject: [PATCH 04/10] [EE] Fix Android build --- ee_frontend/NDK-version/app/src/main/cpp/native-lib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee_frontend/NDK-version/app/src/main/cpp/native-lib.c b/ee_frontend/NDK-version/app/src/main/cpp/native-lib.c index 08a48f638..b20a0dbe4 100644 --- a/ee_frontend/NDK-version/app/src/main/cpp/native-lib.c +++ b/ee_frontend/NDK-version/app/src/main/cpp/native-lib.c @@ -95,7 +95,7 @@ int soundToPlay = -1; void stopSounds(void) {} -void playSound(const int action) { +void playSound(const uint8_t action) { soundToPlay = action; } From 594551fa4c2f9374bb72fa6d02c64b7bf5f19ad9 Mon Sep 17 00:00:00 2001 From: Daniel Monteiro Date: Sat, 6 Jul 2024 17:13:19 +0100 Subject: [PATCH 05/10] [EE] Update UI to match new UX Along with some fixes to the button orders --- .../src/main/java/pt/b13h/derelictgles2/GameActivity.kt | 9 ++------- .../app/src/main/res/layout-port/activity_main.xml | 7 ------- .../app/src/main/res/layout/activity_main.xml | 7 ------- 3 files changed, 2 insertions(+), 21 deletions(-) diff --git a/ee_frontend/NDK-version/app/src/main/java/pt/b13h/derelictgles2/GameActivity.kt b/ee_frontend/NDK-version/app/src/main/java/pt/b13h/derelictgles2/GameActivity.kt index 5b056c133..26c6a30a4 100644 --- a/ee_frontend/NDK-version/app/src/main/java/pt/b13h/derelictgles2/GameActivity.kt +++ b/ee_frontend/NDK-version/app/src/main/java/pt/b13h/derelictgles2/GameActivity.kt @@ -135,21 +135,16 @@ class GameActivity : AppCompatActivity() { } findViewById