[Scummvm-git-logs] scummvm master -> d4e8311475feea39cf79af1ef78ad1c07ac32c86
dreammaster
noreply at scummvm.org
Wed Feb 12 05:12:24 UTC 2025
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
89aadb9287 M4: RIDDLE: Beginnings of game menu dialog
d4e8311475 M4: RIDDLE: Implement proper greyscale fading
Commit: 89aadb9287d2d389bc5929f41d0b72943a8c963d
https://github.com/scummvm/scummvm/commit/89aadb9287d2d389bc5929f41d0b72943a8c963d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-11T19:15:17-08:00
Commit Message:
M4: RIDDLE: Beginnings of game menu dialog
Changed paths:
engines/m4/burger/gui/game_menu.cpp
engines/m4/burger/gui/game_menu.h
engines/m4/gui/gui_menu.h
engines/m4/riddle/gui/game_menu.cpp
engines/m4/riddle/gui/game_menu.h
diff --git a/engines/m4/burger/gui/game_menu.cpp b/engines/m4/burger/gui/game_menu.cpp
index 8c782770187..885bf324836 100644
--- a/engines/m4/burger/gui/game_menu.cpp
+++ b/engines/m4/burger/gui/game_menu.cpp
@@ -1979,6 +1979,42 @@ menuItem *menu_TextFieldAdd(guiMenu *myMenu, int32 tag, int32 x, int32 y, int32
//------------------------------------- GAME MENU -------------------------------------//
+
+#define GAME_MENU_X 190
+#define GAME_MENU_Y 100
+#define GAME_MENU_W 260
+#define GAME_MENU_H 198
+
+#define GM_MAIN_X 45
+#define GM_MAIN_Y 53
+#define GM_MAIN_W 24
+#define GM_MAIN_H 24
+
+#define GM_OPTIONS_X 45
+#define GM_OPTIONS_Y 94
+#define GM_OPTIONS_W 24
+#define GM_OPTIONS_H 24
+
+#define GM_RESUME_X 45
+#define GM_RESUME_Y 135
+#define GM_RESUME_W 24
+#define GM_RESUME_H 24
+
+#define GM_QUIT_X 141
+#define GM_QUIT_Y 135
+#define GM_QUIT_W 24
+#define GM_QUIT_H 24
+
+#define GM_SAVE_X 141
+#define GM_SAVE_Y 53
+#define GM_SAVE_W 24
+#define GM_SAVE_H 24
+
+#define GM_LOAD_X 141
+#define GM_LOAD_Y 94
+#define GM_LOAD_W 24
+#define GM_LOAD_H 24
+
static void DestroyGameMenu();
void cb_Game_Quit(void *, void *) {
diff --git a/engines/m4/burger/gui/game_menu.h b/engines/m4/burger/gui/game_menu.h
index 5b36c0befda..a4fb0e96bc7 100644
--- a/engines/m4/burger/gui/game_menu.h
+++ b/engines/m4/burger/gui/game_menu.h
@@ -120,10 +120,6 @@ void CreateGameMenuFromMain(RGB8 *myPalette);
//
// Game menu enums and defines
//
-#define GAME_MENU_X 190
-#define GAME_MENU_Y 100
-#define GAME_MENU_W 260
-#define GAME_MENU_H 198
enum game_menu_button_tags {
GM_TAG_QUIT = 1,
@@ -134,36 +130,6 @@ enum game_menu_button_tags {
GM_TAG_MAIN = 6
};
-#define GM_MAIN_X 45
-#define GM_MAIN_Y 53
-#define GM_MAIN_W 24
-#define GM_MAIN_H 24
-
-#define GM_OPTIONS_X 45
-#define GM_OPTIONS_Y 94
-#define GM_OPTIONS_W 24
-#define GM_OPTIONS_H 24
-
-#define GM_RESUME_X 45
-#define GM_RESUME_Y 135
-#define GM_RESUME_W 24
-#define GM_RESUME_H 24
-
-#define GM_QUIT_X 141
-#define GM_QUIT_Y 135
-#define GM_QUIT_W 24
-#define GM_QUIT_H 24
-
-#define GM_SAVE_X 141
-#define GM_SAVE_Y 53
-#define GM_SAVE_W 24
-#define GM_SAVE_H 24
-
-#define GM_LOAD_X 141
-#define GM_LOAD_Y 94
-#define GM_LOAD_W 24
-#define GM_LOAD_H 24
-
//======================================
//
// Save/Load menu enums and defines
diff --git a/engines/m4/gui/gui_menu.h b/engines/m4/gui/gui_menu.h
index 261d22a74dc..d17c5b11367 100644
--- a/engines/m4/gui/gui_menu.h
+++ b/engines/m4/gui/gui_menu.h
@@ -31,7 +31,7 @@
namespace M4 {
namespace GUI {
-#define _GM(X) _G(menu).X
+#define _GM(X) ::M4::g_vars->_menu.X
#define LockMouseSprite mouse_lock_sprite
#define UnlockMouseSprite mouse_unlock_sprite
diff --git a/engines/m4/riddle/gui/game_menu.cpp b/engines/m4/riddle/gui/game_menu.cpp
index 40bdfe7080e..bd87054d0f8 100644
--- a/engines/m4/riddle/gui/game_menu.cpp
+++ b/engines/m4/riddle/gui/game_menu.cpp
@@ -39,22 +39,30 @@
#include "m4/platform/keys.h"
#include "m4/m4.h"
+#include "m4/burger/gui/game_menu.h"
+
namespace M4 {
namespace Riddle {
namespace GUI {
-static void CreateGameMenuMain(RGB8 *myPalette);
+/*-------------------- GAME MENU --------------------*/
-void CreateGameMenu(RGB8 *myPalette) {
- if ((!player_commands_allowed()) || (!INTERFACE_VISIBLE) ||
- _G(pal_fade_in_progress) || _G(menuSystemInitialized)) {
- return;
- }
+#define GAME_MENU_X 212
+#define GAME_MENU_Y 160
- CreateGameMenuMain(myPalette);
-}
+#define GM_TAG_QUIT 1
+#define GM_QUIT_X 13
+#define GM_QUIT_Y 31
+#define GM_QUIT_W 26
+#define GM_QUIT_H 26
-void CreateGameMenuMain(RGB8 *myPalette) {
+#define GM_TAG_MAIN 2
+#define GM_MAIN_X 108
+#define GM_MAIN_Y 31
+#define GM_MAIN_W 26
+#define GM_MAIN_H 26
+
+void GameMenu::show(RGB8 *myPalette) {
if (!_G(menuSystemInitialized)) {
menu_Initialize(myPalette);
}
@@ -68,15 +76,18 @@ void CreateGameMenuMain(RGB8 *myPalette) {
return;
}
- _GM(gameMenu) = menu_Create(_GM(menuSprites)[GM_DIALOG_BOX], GAME_MENU_X, GAME_MENU_Y, MENU_DEPTH | SF_GET_ALL | SF_BLOCK_ALL | SF_IMMOVABLE);
- if (!_GM(gameMenu)) {
- return;
- }
-#if 0
- menu_ButtonAdd(_GM(gameMenu), GM_TAG_MAIN, GM_MAIN_X, GM_MAIN_Y, GM_MAIN_W, GM_MAIN_H, cb_Game_Main);
+ _GM(gameMenu) = menu_Create(_GM(menuSprites)[GM_DIALOG_BOX],
+ GAME_MENU_X, GAME_MENU_Y, MENU_DEPTH | SF_GET_ALL | SF_BLOCK_ALL | SF_IMMOVABLE);
+ assert(_GM(gameMenu));
+
+ Burger::GUI::menu_ButtonAdd(_GM(gameMenu), GM_TAG_QUIT,
+ GM_QUIT_X, GM_QUIT_Y, GM_QUIT_W, GM_QUIT_H, cbQuitGame);
+ Burger::GUI::menu_ButtonAdd(_GM(gameMenu), GM_TAG_MAIN,
+ GM_MAIN_X, GM_MAIN_Y, GM_MAIN_W, GM_MAIN_H, cbMainMenu);
+
+ #if 0
menu_ButtonAdd(_GM(gameMenu), GM_TAG_OPTIONS, GM_OPTIONS_X, GM_OPTIONS_Y, GM_OPTIONS_W, GM_OPTIONS_H, cb_Game_Options);
menu_ButtonAdd(_GM(gameMenu), GM_TAG_RESUME, GM_RESUME_X, GM_RESUME_Y, GM_RESUME_W, GM_RESUME_H, cb_Game_Resume);
- menu_ButtonAdd(_GM(gameMenu), GM_TAG_QUIT, GM_QUIT_X, GM_QUIT_Y, GM_QUIT_W, GM_QUIT_H, cb_Game_Quit);
if (!_GM(gameMenuFromMain)) {
menu_ButtonAdd(_GM(gameMenu), GM_TAG_SAVE, GM_SAVE_X, GM_SAVE_Y, GM_SAVE_W, GM_SAVE_H, cb_Game_Save);
@@ -90,13 +101,80 @@ void CreateGameMenuMain(RGB8 *myPalette) {
} else {
menu_ButtonAdd(_GM(gameMenu), GM_TAG_LOAD, GM_LOAD_X, GM_LOAD_Y, GM_LOAD_W, GM_LOAD_H, cb_Game_Load, BTN_TYPE_GM_GENERIC, true);
}
-
+#endif
// Configure the game so pressing <esc> will cause the menu to disappear and the game to resume
- menu_Configure(_GM(gameMenu), cb_Game_Resume, cb_Game_Resume);
+ menu_Configure(_GM(gameMenu), cbResume, cbResume);
vmng_screen_show((void *)_GM(gameMenu));
LockMouseSprite(0);
-#endif
+}
+
+void GameMenu::DestroyGameMenu() {
+ if (!_GM(gameMenu)) {
+ return;
+ }
+
+ // Remove the screen from the gui
+ vmng_screen_dispose(_GM(gameMenu));
+
+ // Destroy the menu resources
+ menu_Destroy(_GM(gameMenu));
+
+ // Unload the menu sprites
+ menu_UnloadSprites();
+}
+
+void GameMenu::cbQuitGame(void *, void *) {
+ // Destroy the game menu
+ DestroyGameMenu();
+
+ // Shutdown the menu system
+ menu_Shutdown(false);
+
+ // Set the global that will cause the entire game to exit to dos
+ _G(kernel).going = false;
+}
+
+void GameMenu::cbMainMenu(void *, void *) {
+ // Destroy the game menu
+ DestroyGameMenu();
+
+ if (!_GM(gameMenuFromMain)) {
+ // Save the game so we can resume from here if possible
+ if (_GM(interfaceWasVisible) && player_commands_allowed()) {
+ other_save_game_for_resurrection();
+ }
+
+ // Make sure the interface does not reappear
+ _GM(interfaceWasVisible) = false;
+
+ // Shutdown the menu system
+ menu_Shutdown(false);
+ } else {
+ menu_Shutdown(true);
+ }
+
+ // Go to the main menu
+ _G(game).setRoom(494);
+}
+
+void GameMenu::cbResume(void *, void *) {
+ // Destroy the game menu
+ DestroyGameMenu();
+
+ // Shutdown the menu system
+ menu_Shutdown(true);
+}
+
+/*-------------------- ACCESS METHODS --------------------*/
+
+void CreateGameMenu(RGB8 *myPalette) {
+ if ((!player_commands_allowed()) || (!INTERFACE_VISIBLE) ||
+ _G(pal_fade_in_progress) || _G(menuSystemInitialized)) {
+ return;
+ }
+
+ GameMenu::show(myPalette);
}
} // namespace GUI
diff --git a/engines/m4/riddle/gui/game_menu.h b/engines/m4/riddle/gui/game_menu.h
index 7b26136cbea..4170cd9b862 100644
--- a/engines/m4/riddle/gui/game_menu.h
+++ b/engines/m4/riddle/gui/game_menu.h
@@ -29,8 +29,16 @@ namespace M4 {
namespace Riddle {
namespace GUI {
-#define GAME_MENU_X 190
-#define GAME_MENU_Y 100
+class GameMenu {
+private:
+ static void DestroyGameMenu();
+ static void cbQuitGame(void *, void *);
+ static void cbMainMenu(void *, void *);
+ static void cbResume(void *, void *);
+
+public:
+ static void show(RGB8 *myPalette);
+};
extern void CreateGameMenu(RGB8 *myPalette);
Commit: d4e8311475feea39cf79af1ef78ad1c07ac32c86
https://github.com/scummvm/scummvm/commit/d4e8311475feea39cf79af1ef78ad1c07ac32c86
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-11T21:12:08-08:00
Commit Message:
M4: RIDDLE: Implement proper greyscale fading
Changed paths:
engines/m4/graphics/krn_pal.cpp
diff --git a/engines/m4/graphics/krn_pal.cpp b/engines/m4/graphics/krn_pal.cpp
index 207ac5c4f84..7fb513c17ea 100644
--- a/engines/m4/graphics/krn_pal.cpp
+++ b/engines/m4/graphics/krn_pal.cpp
@@ -109,8 +109,9 @@ static void grey_fade(RGB8 *pal, int32 to_from_flag, int32 from, int32 to, int32
static void create_luminance_map(RGB8 *pal) {
for (int i = GREY_START; i <= FREE_END; i++) {
Byte luminance = (Byte)((pal[i].r + pal[i].g + pal[i].b) / 3);
- _GP(fadeToMe)[i].g = (Byte)imath_min(255, luminance); // New green screen!
- _GP(fadeToMe)[i].r = _GP(fadeToMe)[i].b = 0;
+ _GP(fadeToMe)[i].g = luminance;
+ // Orion Burger uses green shading, Riddle uses grey shading
+ _GP(fadeToMe)[i].r = _GP(fadeToMe)[i].b = IS_RIDDLE ? luminance : 0;
}
}
@@ -162,7 +163,7 @@ void krn_fade_to_grey(RGB8 *pal, int32 steps, int32 delay) {
memcpy(_GP(picPal), pal, sizeof(RGB8) * 256);
create_luminance_map(pal);
- grey_fade(pal, TO_GREY, 21, 255, steps, delay);
+ grey_fade(pal, TO_GREY, GREY_START, GREY_END, steps, delay);
// Make translation table to translate colors using entries 59-255 into 21-58 range
@@ -170,11 +171,6 @@ void krn_fade_to_grey(RGB8 *pal, int32 steps, int32 delay) {
bestMatch = 65;
minDist = 255;
- if (!(i & 0x3ff)) {
- _G(digi).task();
- _G(midi).task();
- }
-
for (j = 59; j <= 255; j++) {
if (imath_abs((_GP(fadeToMe)[j].r >> 2) - i) < minDist) {
minDist = imath_abs((_GP(fadeToMe)[j].r >> 2) - i);
@@ -212,11 +208,11 @@ void krn_fade_to_grey(RGB8 *pal, int32 steps, int32 delay) {
// Make new trickPal with grey-scale ramp entries and load it into VGA registers
memcpy(_GP(trick), _GP(fadeToMe), sizeof(RGB8) * 256); // trick pal is the greyed version plus the grey ramp overlayed on top
- int8 grey_step = 256 / NUM_GREYS;
- int8 grey_ramp = 0;
+ byte grey_step = 256 / NUM_GREYS;
+ byte grey_ramp = 0;
for (i = GREY_START; i <= GREY_END; i++) {
- _GP(trick)[i].g = (Byte)(grey_ramp); // New green screen
- _GP(trick)[i].r = _GP(trick)[i].b = 0;
+ _GP(trick)[i].g = grey_ramp;
+ _GP(trick)[i].r = _GP(trick)[i].b = IS_RIDDLE ? grey_ramp : 0;
grey_ramp += grey_step;
}
More information about the Scummvm-git-logs
mailing list