[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 §or, 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 §or, 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 §or, 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