aboutsummaryrefslogtreecommitdiff
path: root/engines/adl/hires4.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/adl/hires4.cpp')
-rw-r--r--engines/adl/hires4.cpp44
1 files changed, 43 insertions, 1 deletions
diff --git a/engines/adl/hires4.cpp b/engines/adl/hires4.cpp
index 1b27b035d6..ddfc868e9a 100644
--- a/engines/adl/hires4.cpp
+++ b/engines/adl/hires4.cpp
@@ -26,7 +26,7 @@
#include "common/file.h"
#include "common/stream.h"
-#include "adl/hires4.h"
+#include "adl/adl_v3.h"
#include "adl/detection.h"
#include "adl/display.h"
#include "adl/graphics.h"
@@ -34,6 +34,48 @@
namespace Adl {
+#define IDI_HR4_NUM_ROOMS 164
+#define IDI_HR4_NUM_MESSAGES 255
+#define IDI_HR4_NUM_VARS 40
+#define IDI_HR4_NUM_ITEM_DESCS 44
+#define IDI_HR4_NUM_ITEM_PICS 41
+#define IDI_HR4_NUM_ITEM_OFFSETS 40
+
+// Messages used outside of scripts
+#define IDI_HR4_MSG_CANT_GO_THERE 110
+#define IDI_HR4_MSG_DONT_UNDERSTAND 112
+#define IDI_HR4_MSG_ITEM_DOESNT_MOVE 114
+#define IDI_HR4_MSG_ITEM_NOT_HERE 115
+#define IDI_HR4_MSG_THANKS_FOR_PLAYING 113
+
+class HiRes4Engine_Atari : public AdlEngine_v3 {
+public:
+ HiRes4Engine_Atari(OSystem *syst, const AdlGameDescription *gd) :
+ AdlEngine_v3(syst, gd),
+ _boot(nullptr),
+ _curDisk(0) { }
+ ~HiRes4Engine_Atari();
+
+private:
+ // AdlEngine
+ void init();
+ void initGameState();
+ void loadRoom(byte roomNr);
+ 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();
+
+ DiskImage *_boot;
+ byte _curDisk;
+};
+
static const char *const atariDisks[] = { "ULYS1A.XFD", "ULYS1B.XFD", "ULYS2C.XFD" };
HiRes4Engine_Atari::~HiRes4Engine_Atari() {