[Scummvm-git-logs] scummvm master -> e4ab446e3d346adbe3f04a21272c7326b4db6ffd

waltervn walter at vanniftrik-it.nl
Mon Aug 29 14:29:29 CEST 2016


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:
31b5a0bf63 ADL: Fix hires4 disk swapping
e4ab446e3d ADL: Move all hires4 code into Atari-specific class


Commit: 31b5a0bf6365b0bdf03458ffb3fe4dc6e4698b1e
    https://github.com/scummvm/scummvm/commit/31b5a0bf6365b0bdf03458ffb3fe4dc6e4698b1e
Author: Walter van Niftrik (walter at scummvm.org)
Date: 2016-08-29T14:27:03+02:00

Commit Message:
ADL: Fix hires4 disk swapping

Changed paths:
    engines/adl/hires4.cpp



diff --git a/engines/adl/hires4.cpp b/engines/adl/hires4.cpp
index 70287dd..cdb9f96 100644
--- a/engines/adl/hires4.cpp
+++ b/engines/adl/hires4.cpp
@@ -46,7 +46,6 @@ void HiRes4Engine::init() {
 		error("Failed to open disk image '%s'", getDiskImageName(0));
 
 	insertDisk(1);
-
 	loadCommonData();
 
 	StreamPtr stream(createReadStream(_boot, 0x06, 0x2));
@@ -92,9 +91,11 @@ void HiRes4Engine::init() {
 
 void HiRes4Engine::loadRoom(byte roomNr) {
 	if (roomNr >= 59 && roomNr < 113) {
-		insertDisk(2);
-		rebindDisk();
-	} else {
+		if (_curDisk != 2) {
+			insertDisk(2);
+			rebindDisk();
+		}
+	} else if (_curDisk != 1) {
 		insertDisk(1);
 		rebindDisk();
 	}
@@ -138,7 +139,6 @@ void HiRes4Engine::insertDisk(byte diskNr) {
 	_curDisk = diskNr;
 
 	delete _disk;
-
 	_disk = new DiskImage();
 	if (!_disk->open(getDiskImageName(diskNr)))
 		error("Failed to open disk image '%s'", getDiskImageName(diskNr));


Commit: e4ab446e3d346adbe3f04a21272c7326b4db6ffd
    https://github.com/scummvm/scummvm/commit/e4ab446e3d346adbe3f04a21272c7326b4db6ffd
Author: Walter van Niftrik (walter at scummvm.org)
Date: 2016-08-29T14:27:03+02:00

Commit Message:
ADL: Move all hires4 code into Atari-specific class

Changed paths:
    engines/adl/hires4.cpp
    engines/adl/hires4.h



diff --git a/engines/adl/hires4.cpp b/engines/adl/hires4.cpp
index cdb9f96..1b27b03 100644
--- a/engines/adl/hires4.cpp
+++ b/engines/adl/hires4.cpp
@@ -34,16 +34,18 @@
 
 namespace Adl {
 
-HiRes4Engine::~HiRes4Engine() {
+static const char *const atariDisks[] = { "ULYS1A.XFD", "ULYS1B.XFD", "ULYS2C.XFD" };
+
+HiRes4Engine_Atari::~HiRes4Engine_Atari() {
 	delete _boot;
 }
 
-void HiRes4Engine::init() {
+void HiRes4Engine_Atari::init() {
 	_graphics = new Graphics_v2(*_display);
 
 	_boot = new DiskImage();
-	if (!_boot->open(getDiskImageName(0)))
-		error("Failed to open disk image '%s'", getDiskImageName(0));
+	if (!_boot->open(atariDisks[0]))
+		error("Failed to open disk image '%s'", atariDisks[0]);
 
 	insertDisk(1);
 	loadCommonData();
@@ -89,7 +91,7 @@ void HiRes4Engine::init() {
 	loadWords(*stream, _nouns, _priNouns);
 }
 
-void HiRes4Engine::loadRoom(byte roomNr) {
+void HiRes4Engine_Atari::loadRoom(byte roomNr) {
 	if (roomNr >= 59 && roomNr < 113) {
 		if (_curDisk != 2) {
 			insertDisk(2);
@@ -116,14 +118,14 @@ void HiRes4Engine::loadRoom(byte roomNr) {
 	AdlEngine_v3::loadRoom(roomNr);
 }
 
-Common::String HiRes4Engine::formatVerbError(const Common::String &verb) const {
+Common::String HiRes4Engine_Atari::formatVerbError(const Common::String &verb) const {
 	Common::String err = _strings.verbError;
 	for (uint i = 0; i < verb.size(); ++i)
 		err.setChar(verb[i], i + 8);
 	return err;
 }
 
-Common::String HiRes4Engine::formatNounError(const Common::String &verb, const Common::String &noun) const {
+Common::String HiRes4Engine_Atari::formatNounError(const Common::String &verb, const Common::String &noun) const {
 	Common::String err = _strings.nounError;
 	for (uint i = 0; i < verb.size(); ++i)
 		err.setChar(verb[i], i + 8);
@@ -132,7 +134,7 @@ Common::String HiRes4Engine::formatNounError(const Common::String &verb, const C
 	return err;
 }
 
-void HiRes4Engine::insertDisk(byte diskNr) {
+void HiRes4Engine_Atari::insertDisk(byte diskNr) {
 	if (_curDisk == diskNr)
 		return;
 
@@ -140,11 +142,11 @@ void HiRes4Engine::insertDisk(byte diskNr) {
 
 	delete _disk;
 	_disk = new DiskImage();
-	if (!_disk->open(getDiskImageName(diskNr)))
-		error("Failed to open disk image '%s'", getDiskImageName(diskNr));
+	if (!_disk->open(atariDisks[diskNr]))
+		error("Failed to open disk image '%s'", atariDisks[diskNr]);
 }
 
-void HiRes4Engine::rebindDisk() {
+void HiRes4Engine_Atari::rebindDisk() {
 	// As room.data is bound to the DiskImage, we need to rebind them here
 	// We cannot simply reload the rooms as that would reset their state
 
@@ -161,7 +163,7 @@ void HiRes4Engine::rebindDisk() {
 	loadCommonData();
 }
 
-void HiRes4Engine::loadCommonData() {
+void HiRes4Engine_Atari::loadCommonData() {
 	_messages.clear();
 	StreamPtr stream(createReadStream(_boot, 0x0a, 0x4, 0x00, 3));
 	loadMessages(*stream, IDI_HR4_NUM_MESSAGES);
@@ -175,7 +177,7 @@ void HiRes4Engine::loadCommonData() {
 	loadItemPictures(*stream, IDI_HR4_NUM_ITEM_PICS);
 }
 
-void HiRes4Engine::initGameState() {
+void HiRes4Engine_Atari::initGameState() {
 	_state.vars.resize(IDI_HR4_NUM_VARS);
 
 	StreamPtr stream(createReadStream(_boot, 0x03, 0x1, 0x0e, 9));
@@ -188,7 +190,7 @@ void HiRes4Engine::initGameState() {
 	_display->moveCursorTo(Common::Point(0, 23));
 }
 
-Common::SeekableReadStream *HiRes4Engine::createReadStream(DiskImage *disk, byte track, byte sector, byte offset, byte size) const {
+Common::SeekableReadStream *HiRes4Engine_Atari::createReadStream(DiskImage *disk, byte track, byte sector, byte offset, byte size) const {
 	adjustDataBlockPtr(track, sector, offset, size);
 	return disk->createReadStream(track, sector, offset, size);
 }
@@ -215,11 +217,6 @@ void HiRes4Engine_Atari::adjustDataBlockPtr(byte &track, byte &sector, byte &off
 	sector = (sectorIndex - 1) % 18;
 }
 
-const char *HiRes4Engine_Atari::getDiskImageName(byte index) const {
-	static const char *const disks[] = { "ULYS1A.XFD", "ULYS1B.XFD", "ULYS2C.XFD" };
-	return disks[index];
-}
-
 Engine *HiRes4Engine_create(OSystem *syst, const AdlGameDescription *gd) {
 	switch (gd->desc.platform) {
 	case Common::kPlatformAtariST:
diff --git a/engines/adl/hires4.h b/engines/adl/hires4.h
index 14671d7..0bf2ab4 100644
--- a/engines/adl/hires4.h
+++ b/engines/adl/hires4.h
@@ -43,16 +43,15 @@ namespace Adl {
 #define IDI_HR4_MSG_ITEM_NOT_HERE      115
 #define IDI_HR4_MSG_THANKS_FOR_PLAYING 113
 
-class HiRes4Engine : public AdlEngine_v3 {
+class HiRes4Engine_Atari : public AdlEngine_v3 {
 public:
-	~HiRes4Engine();
-
-protected:
-	HiRes4Engine(OSystem *syst, const AdlGameDescription *gd) :
+	HiRes4Engine_Atari(OSystem *syst, const AdlGameDescription *gd) :
 			AdlEngine_v3(syst, gd),
 			_boot(nullptr),
 			_curDisk(0) { }
+	~HiRes4Engine_Atari();
 
+private:
 	// AdlEngine
 	void init();
 	void initGameState();
@@ -60,28 +59,18 @@ protected:
 	Common::String formatVerbError(const Common::String &verb) const;
 	Common::String formatNounError(const Common::String &verb, const Common::String &noun) const;
 
+	// AdlEngine_v2
+	void adjustDataBlockPtr(byte &track, byte &sector, byte &offset, byte &size) const;
+
 	Common::SeekableReadStream *createReadStream(DiskImage *disk, byte track, byte sector, byte offset = 0, byte size = 0) const;
 	void loadCommonData();
 	void insertDisk(byte diskNr);
 	void rebindDisk();
-	virtual const char *getDiskImageName(byte index) const = 0;
 
 	DiskImage *_boot;
 	byte _curDisk;
 };
 
-class HiRes4Engine_Atari : public HiRes4Engine {
-public:
-	HiRes4Engine_Atari(OSystem *syst, const AdlGameDescription *gd) : HiRes4Engine(syst, gd) { }
-
-private:
-	// AdlEngine_v2
-	void adjustDataBlockPtr(byte &track, byte &sector, byte &offset, byte &size) const;
-
-	// HiRes4Engine
-	const char *getDiskImageName(byte index) const;
-};
-
 } // End of namespace Adl
 
 #endif





More information about the Scummvm-git-logs mailing list