aboutsummaryrefslogtreecommitdiff
path: root/engines/adl/hires2.h
diff options
context:
space:
mode:
authorWalter van Niftrik2016-03-23 11:14:51 +0100
committerWalter van Niftrik2016-06-06 20:35:49 +0200
commitbfbacf9397f6baa03e5b79149fc357d6c8d74049 (patch)
tree63652107cec8ce5037ddd9cbd905321240f9bc12 /engines/adl/hires2.h
parent4af9f32d3f12badb0573db203c2949ec5173aae6 (diff)
downloadscummvm-rg350-bfbacf9397f6baa03e5b79149fc357d6c8d74049.tar.gz
scummvm-rg350-bfbacf9397f6baa03e5b79149fc357d6c8d74049.tar.bz2
scummvm-rg350-bfbacf9397f6baa03e5b79149fc357d6c8d74049.zip
ADL: Use DiskImage class in hires2
Diffstat (limited to 'engines/adl/hires2.h')
-rw-r--r--engines/adl/hires2.h38
1 files changed, 7 insertions, 31 deletions
diff --git a/engines/adl/hires2.h b/engines/adl/hires2.h
index 15781097ef..0d32330a3e 100644
--- a/engines/adl/hires2.h
+++ b/engines/adl/hires2.h
@@ -26,6 +26,7 @@
#include "common/str.h"
#include "adl/adl_v2.h"
+#include "adl/disk.h"
namespace Common {
class ReadStream;
@@ -36,23 +37,6 @@ namespace Adl {
#define IDS_HR2_DISK_IMAGE "WIZARD.DSK"
-// Track, sector, offset
-#define TSO(TRACK, SECTOR, OFFSET) (((TRACK) * 16 + (SECTOR)) * 256 + (OFFSET))
-#define TS(TRACK, SECTOR) TSO(TRACK, SECTOR, 0)
-#define T(TRACK) TS(TRACK, 0)
-
-#define IDI_HR2_OFS_INTRO_TEXT TSO(0x00, 0xd, 0x17)
-#define IDI_HR2_OFS_VERBS T(0x19)
-#define IDI_HR2_OFS_NOUNS TS(0x22, 0x2)
-#define IDI_HR2_OFS_ROOMS TSO(0x21, 0x5, 0x0e) // Skip bogus room 0
-#define IDI_HR2_OFS_MESSAGES TSO(0x1f, 0x2, 0x04) // Skip bogus message 0
-#define IDI_HR2_OFS_ITEM_PICS TSO(0x1e, 0x9, 0x05) // Skip bogus pic 0
-#define IDI_HR2_OFS_ITEMS T(0x21)
-#define IDI_HR2_OFS_ITEM_OFFSETS TSO(0x1b, 0x4, 0x15)
-
-#define IDI_HR2_OFS_CMDS_0 TS(0x1f, 0x7)
-#define IDI_HR2_OFS_CMDS_1 TS(0x1d, 0x7)
-
#define IDI_HR2_NUM_ROOMS 135
#define IDI_HR2_NUM_MESSAGES 254
#define IDI_HR2_NUM_VARS 40
@@ -66,22 +50,9 @@ namespace Adl {
#define IDI_HR2_MSG_ITEM_NOT_HERE 4
#define IDI_HR2_MSG_THANKS_FOR_PLAYING 239
-#define IDI_HR2_OFS_STR_ENTER_COMMAND TSO(0x1a, 0x1, 0xbc)
-#define IDI_HR2_OFS_STR_VERB_ERROR TSO(0x1a, 0x1, 0x4f)
-#define IDI_HR2_OFS_STR_NOUN_ERROR TSO(0x1a, 0x1, 0x8e)
-#define IDI_HR2_OFS_STR_PLAY_AGAIN TSO(0x1a, 0x8, 0x25)
-#define IDI_HR2_OFS_STR_PRESS_RETURN TSO(0x1a, 0x8, 0x5f)
-#define IDI_HR2_OFS_STR_TIME TSO(0x19, 0x7, 0xd7)
-#define IDI_HR2_OFS_STR_SAVE_INSERT TSO(0x1a, 0x6, 0x5f)
-#define IDI_HR2_OFS_STR_SAVE_REPLACE TSO(0x1a, 0x6, 0xe5)
-#define IDI_HR2_OFS_STR_RESTORE_INSERT TSO(0x1a, 0x7, 0x32)
-#define IDI_HR2_OFS_STR_RESTORE_REPLACE TSO(0x1a, 0x7, 0xc2)
-
struct Picture2 {
byte nr;
- byte track;
- byte sector;
- byte offset;
+ DataBlockPtr data;
};
struct RoomData {
@@ -90,6 +61,8 @@ struct RoomData {
Commands commands;
};
+typedef Common::ScopedPtr<Common::SeekableReadStream> StreamPtr;
+
class HiRes2Engine : public AdlEngine_v2 {
public:
HiRes2Engine(OSystem *syst, const AdlGameDescription *gd) : AdlEngine_v2(syst, gd) { }
@@ -107,7 +80,10 @@ private:
void checkInput(byte verb, byte noun);
void loadRoom(byte roomNr);
+ DataBlockPtr readDataBlockPtr(Common::ReadStream &f) const;
+ void readPictureMeta(Common::ReadStream &f, Picture2 &pic) const;
+ DiskImage_DSK _disk;
RoomData _roomData;
Common::Array<Picture2> _itemPics;
};