[Scummvm-git-logs] scummvm master -> 0ab9a4b5fee4e47d24041e8ce4dce6eb0a6a936a

mduggan mgithub at guarana.org
Sat Feb 13 00:14:44 UTC 2021


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
f6715015e3 ULTIMA8: Fix music in No Regret
6ce212a09d ULTIMA8: No Regret intrinsic fixes
ab01803e4b ULTIMA8: Fix Avatar ID global for No Regret
0ab9a4b5fe ULTIMA8: Remove duplicate load/save code


Commit: f6715015e3e3dedc565ab7c2c3873ced25134a17
    https://github.com/scummvm/scummvm/commit/f6715015e3e3dedc565ab7c2c3873ced25134a17
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-13T08:44:14+09:00

Commit Message:
ULTIMA8: Fix music in No Regret

Changed paths:
    engines/ultima/ultima8/audio/remorse_music_process.cpp


diff --git a/engines/ultima/ultima8/audio/remorse_music_process.cpp b/engines/ultima/ultima8/audio/remorse_music_process.cpp
index 0c51114983..de383dc20c 100644
--- a/engines/ultima/ultima8/audio/remorse_music_process.cpp
+++ b/engines/ultima/ultima8/audio/remorse_music_process.cpp
@@ -25,6 +25,9 @@
 #include "ultima/ultima8/filesys/file_system.h"
 #include "audio/mods/mod_xm_s3m.h"
 
+#include "ultima/ultima8/world/world.h"
+#include "ultima/ultima8/world/current_map.h"
+
 namespace Ultima {
 namespace Ultima8 {
 
@@ -83,6 +86,11 @@ static const char *TRACK_FILE_NAMES_REGRET[] = {
 	"xmas" // for demo
 };
 
+static const int REGRET_MAP_TRACKS[] = {
+	 0,  1, 10,  2,  0,  3, 11,  4,
+	16,  5, 20,  6,  0,  7, 13,  8,
+	15,  9, 12, 10, 19, 14, 21,  0};
+
 
 // p_dynamic_cast stuff
 DEFINE_RUNTIME_CLASSTYPE_CODE(RemorseMusicProcess)
@@ -99,6 +107,22 @@ RemorseMusicProcess::~RemorseMusicProcess() {
 }
 
 void RemorseMusicProcess::playMusic(int track) {
+	if (GAME_IS_REGRET && track == 0x45) {
+		// Play the default track for the current map
+		uint32 curmap = World::get_instance()->getCurrentMap()->getNum();
+		if (curmap < ARRAYSIZE(REGRET_MAP_TRACKS)) {
+			track = REGRET_MAP_TRACKS[curmap];
+		} else {
+			track = 0;
+		}
+
+		// Regret has a Christmas music easter egg.
+		TimeDate t;
+		g_system->getTimeAndDate(t);
+		if (t.tm_mon == 11 && t.tm_mday >= 24) {
+			track = 22;
+		}
+	}
 	playMusic_internal(track);
 }
 
@@ -131,6 +155,7 @@ void RemorseMusicProcess::restoreTrackState() {
 
 void RemorseMusicProcess::playMusic_internal(int track) {
 	if (track < 0 || track > _maxTrack) {
+		warning("Not playing track %d (max is %d)", track, _maxTrack);
 		playMusic_internal(0);
 		return;
 	}


Commit: 6ce212a09df481124ab2c414c07b9656126179cf
    https://github.com/scummvm/scummvm/commit/6ce212a09df481124ab2c414c07b9656126179cf
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-13T08:44:14+09:00

Commit Message:
ULTIMA8: No Regret intrinsic fixes

Changed paths:
    engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h
    engines/ultima/ultima8/usecode/regret_intrinsics.h


diff --git a/engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h b/engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h
index 727162fc9f..571cb58288 100644
--- a/engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h
+++ b/engines/ultima/ultima8/convert/crusader/convert_usecode_regret.h
@@ -219,7 +219,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
 	"Item::getQHi(void)",
 	"Actor::I_getLastAnimSet()",
 	"Item::getCY(void)",
-	"Intrinsic00A9()",
+	"Intrinsic00A9()", // Equivalent to Intrinsic00BB() in Remorse
 	"Item::isOn(uint16)",
 	"Actor::isDead(void)",
 	"Item::hurl(sint16,sint16,sint16,sint16)",
@@ -272,7 +272,7 @@ const char* const ConvertUsecodeRegret::_intrinsics[] = {
 	"Actor::I_getDefaultActivity1()",
 	"Actor::I_getDefaultActivity2()",
 	"Actor::I_getLastAnimSet()",
-	"Actor::I_isInCombat()",
+	"Actor::I_isFalling()",
 	"Item::getQLo(void)",
 	"Item::getQHi(void)",
 	"Item::getNpcNum(void)",
diff --git a/engines/ultima/ultima8/usecode/regret_intrinsics.h b/engines/ultima/ultima8/usecode/regret_intrinsics.h
index 679309426a..f6f95f3959 100644
--- a/engines/ultima/ultima8/usecode/regret_intrinsics.h
+++ b/engines/ultima/ultima8/usecode/regret_intrinsics.h
@@ -210,7 +210,7 @@ Intrinsic RegretIntrinsics[] = {
 	Item::I_getQHi, // Intrinsic0A6()
 	Actor::I_getLastAnimSet, // Intrinsic0A7()
 	Item::I_getCY, // Intrinsic0A8()
-	0, // Intrinsic0A9()
+	CurrentMap::I_canExistAt, // Intrinsic0A9()
 	Item::I_isOn, // Intrinsic0AA()
 	Actor::I_isDead, // Intrinsic0AB()
 	Item::I_hurl, // Intrinsic0AC()
@@ -263,7 +263,7 @@ Intrinsic RegretIntrinsics[] = {
 	Actor::I_getDefaultActivity1, // Intrinsic0D8()
 	Actor::I_getDefaultActivity2, // Intrinsic0D9()
 	Actor::I_getLastAnimSet, // Intrinsic0DA()
-	0, // Actor::GetFlag0x77Field1()
+	0, // Actor::I_isFalling()
 	Item::I_getQLo, // Intrinsic0DC()
 	Item::I_getQHi, // Intrinsic0DD()
 	Actor::I_getNpcNum, // Intrinsic0DE()
@@ -369,7 +369,7 @@ Intrinsic RegretIntrinsics[] = {
 	Item::I_getCY, // Intrinsic13C()
 	Item::I_getCZ, // Intrinsic13D()
 	Item::I_setFrame, // Intrinsic13E()
-	AudioProcess::I_playAmbientSFX, // Intrinsic13F()
+	AudioProcess::I_playSFX, // Intrinsic13F()
 	// 0140
 	AudioProcess::I_isSFXPlaying, // Intrinsic140()
 	0, // TODO: World::I_clrAlertActive, but not the same as remorse


Commit: ab01803e4bb6e350c296f68f018f929d70e4981f
    https://github.com/scummvm/scummvm/commit/ab01803e4bb6e350c296f68f018f929d70e4981f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-13T08:44:14+09:00

Commit Message:
ULTIMA8: Fix Avatar ID global for No Regret

Changed paths:
    engines/ultima/ultima8/usecode/uc_machine.cpp


diff --git a/engines/ultima/ultima8/usecode/uc_machine.cpp b/engines/ultima/ultima8/usecode/uc_machine.cpp
index 72ee04c821..69baee4bf4 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.cpp
+++ b/engines/ultima/ultima8/usecode/uc_machine.cpp
@@ -98,8 +98,7 @@ UCMachine::UCMachine(Intrinsic *iset, unsigned int icount) {
 	} else {
 		_globals = new ByteSet(0x1000);
 		// slight hack: set global 003C to start as avatar number.
-		// TODO: is this the same offset in regret?
-		_globals->setEntries(0x3C, 2, 1);
+		_globals->setEntries(0x1E, 2, 1);
 		_convUse = new ConvertUsecodeRegret();
 	}
 


Commit: 0ab9a4b5fee4e47d24041e8ce4dce6eb0a6a936a
    https://github.com/scummvm/scummvm/commit/0ab9a4b5fee4e47d24041e8ce4dce6eb0a6a936a
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-02-13T08:44:14+09:00

Commit Message:
ULTIMA8: Remove duplicate load/save code

Changed paths:
    engines/ultima/ultima8/gumps/remorse_menu_gump.cpp


diff --git a/engines/ultima/ultima8/gumps/remorse_menu_gump.cpp b/engines/ultima/ultima8/gumps/remorse_menu_gump.cpp
index f758ff47af..778b775e7d 100644
--- a/engines/ultima/ultima8/gumps/remorse_menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/remorse_menu_gump.cpp
@@ -190,45 +190,16 @@ void RemorseMenuGump::ChildNotify(Gump *child, uint32 message) {
 	}
 }
 
-static void _openScummVmSaveLoad(bool isSave) {
-	GUI::SaveLoadChooser *dialog;
-	Common::String desc;
-	int slot;
-
-	if (isSave) {
-		dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
-
-		slot = dialog->runModalWithCurrentTarget();
-		desc = dialog->getResultString();
-
-		if (desc.empty()) {
-			// create our own description for the saved game, the user didnt enter it
-			desc = dialog->createDefaultSaveDescription(slot);
-		}
-
-		if (desc.size() > 28)
-			desc = Common::String(desc.c_str(), 28);
-	} else {
-		dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
-		slot = dialog->runModalWithCurrentTarget();
-	}
-
-	delete dialog;
-
-	if (isSave)
-		Ultima8Engine::get_instance()->saveGame(slot, desc);
-	else
-		Ultima8Engine::get_instance()->loadGameState(slot);
-}
-
 void RemorseMenuGump::selectEntry(int entry) {
 	switch (entry) {
 	case 1: // New Game
 		Game::get_instance()->playIntroMovie(true);
 		break;
 	case 2:
+		Ultima8Engine::get_instance()->loadGameDialog();
+		break;
 	case 3: // Load/Save Game
-		_openScummVmSaveLoad(entry == 3);
+		Ultima8Engine::get_instance()->saveGameDialog();
 		break;
 	case 4: {
 		// Options - show the ScummVM options dialog




More information about the Scummvm-git-logs mailing list