[Scummvm-git-logs] scummvm master -> 3740acdd7d147d7d2dd985d080cc526fb5a8638d
bluegr
noreply at scummvm.org
Tue Apr 5 19:33:14 UTC 2022
This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
93a55e98f7 CHEWY: Cleanup and bugfix for getText()
27bcf4f6a9 CHEWY: Remove unused code
f5962f1c4c CHEWY: Make text offsets a bit more readable
8823e9b61d CHEWY: Check again if text entries are active
ca2c8a972e CHEWY: Remove superfluous text header
37fcade196 CHEWY: Use a single handle for the text file
1e6e9b07c9 CHEWY: Refactor ATDS initialization
3740acdd7d CHEWY: Cleanup
Commit: 93a55e98f75e4f3cf10d4c43eb52d2e7a6ad1c46
https://github.com/scummvm/scummvm/commit/93a55e98f75e4f3cf10d4c43eb52d2e7a6ad1c46
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:46+03:00
Commit Message:
CHEWY: Cleanup and bugfix for getText()
Changed paths:
engines/chewy/text.cpp
engines/chewy/text.h
diff --git a/engines/chewy/text.cpp b/engines/chewy/text.cpp
index 980be182942..3c20cc66054 100644
--- a/engines/chewy/text.cpp
+++ b/engines/chewy/text.cpp
@@ -82,21 +82,30 @@ TextEntryList *Text::getDialog(uint chunk, uint entry) {
}
TextEntry *Text::getText(uint chunk, uint entry, int type) {
+ bool isText = false;
+ bool isAutoDialog = false;
+ bool isInvDesc = false;
+
switch (type) {
case AAD_DATA:
- chunk += AAD_TAP_OFF;
+ chunk += kADSTextMax + kATSTextMax;
+ isAutoDialog = true;
break;
case ATS_DATA:
- chunk += ATS_TAP_OFF;
+ chunk += kADSTextMax;
+ isText = true;
break;
case ADS_DATA:
- chunk += ADS_TAP_OFF;
+ // No change - chunk starts from 0
break;
case INV_USE_DATA:
- chunk += USE_TAP_OFF;
+ case INV_USE_DEF:
+ chunk += kADSTextMax + kATSTextMax + kAADTextMax + kINVTextMax;
+ isInvDesc = true;
break;
case INV_ATS_DATA:
- chunk += INV_TAP_OFF;
+ chunk += kADSTextMax + kATSTextMax + kAADTextMax;
+ isInvDesc = true;
break;
}
@@ -104,9 +113,6 @@ TextEntry *Text::getText(uint chunk, uint entry, int type) {
error("getText(): Invalid chunk number requested, %d (min %d)", chunk, kADSTextMax);
TextEntry *d = new TextEntry();
- const bool isText = (chunk >= kADSTextMax && chunk < kADSTextMax + kATSTextMax);
- const bool isAutoDialog = (chunk >= kADSTextMax + kATSTextMax && chunk < kADSTextMax + kATSTextMax + kAADTextMax);
- const bool isInvDesc = (chunk >= kADSTextMax + kATSTextMax + kAADTextMax && chunk < kADSTextMax + kATSTextMax + kAADTextMax + kINVTextMax);
byte *data = getChunkData(chunk);
byte *ptr = data;
diff --git a/engines/chewy/text.h b/engines/chewy/text.h
index 41d4913a352..cfbbf59934a 100644
--- a/engines/chewy/text.h
+++ b/engines/chewy/text.h
@@ -40,8 +40,8 @@ enum MaxTextTypes {
kADSTextMax = 500, // 0 - 499
kATSTextMax = 100, // 500 - 599
kAADTextMax = 100, // 600 - 699
- kINVTextMax = 100, // 700 - 799
- kUSETextMax = 100 // 800 - 899
+ kINVTextMax = 140, // 700 - 849
+ kUSETextMax = 60 // 850 - 899
};
/**
Commit: 27bcf4f6a9ce633d9ef974dff884c02d4f07ed3b
https://github.com/scummvm/scummvm/commit/27bcf4f6a9ce633d9ef974dff884c02d4f07ed3b
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:46+03:00
Commit Message:
CHEWY: Remove unused code
Changed paths:
engines/chewy/atds.cpp
engines/chewy/atds.h
diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 905f7d68b40..ef7812cca01 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -374,19 +374,6 @@ void Atdsys::set_handle(const char *fname, int16 mode, Common::Stream *handle, i
}
}
-void Atdsys::open_handle(const char *fname, int16 mode) {
- _atdsMem[mode] = atds_adr(fname, 0, 20000);
-
- Common::File *f = new Common::File();
- f->open(fname);
- if (f->isOpen()) {
- close_handle(mode);
- _atdsHandle[mode] = f;
- } else {
- error("Error reading from %s", fname);
- }
-}
-
void Atdsys::close_handle(int16 mode) {
Common::Stream *stream = _atdsHandle[mode];
if (stream) {
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index 9a2c84a554b..d13ad864894 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -42,11 +42,7 @@ namespace Chewy {
#define MAX_HANDLE 8
#define AAD_HANDLE 0
-#define ATS_HANDLE 1
#define ADS_HANDLE 2
-#define INV_USE_HANDLE 4
-#define INV_ATS_HANDLE 6
-#define ATDS_HANDLE 7
#define MAX_STR_SPLIT 10
@@ -249,7 +245,6 @@ public:
Common::Stream *pool_handle(const char *fname);
void set_handle(const char *fname, int16 mode, Common::Stream *handle, int16 chunkStart, int16 chunkNr);
- void open_handle(const char *fname, int16 mode);
void close_handle(int16 mode);
void crypt(char *txt, uint32 size);
bool start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int16 *vocNr);
Commit: f5962f1c4c2c079b26f8e28f2330f4e49a3f01ea
https://github.com/scummvm/scummvm/commit/f5962f1c4c2c079b26f8e28f2330f4e49a3f01ea
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:47+03:00
Commit Message:
CHEWY: Make text offsets a bit more readable
Changed paths:
engines/chewy/defines.h
diff --git a/engines/chewy/defines.h b/engines/chewy/defines.h
index b50a682dbad..5b3d44262b8 100644
--- a/engines/chewy/defines.h
+++ b/engines/chewy/defines.h
@@ -34,10 +34,10 @@ namespace Chewy {
#define USE_TAP_MAX 140
#define ADS_TAP_OFF 0
-#define ATS_TAP_OFF ADS_TAP_MAX
-#define AAD_TAP_OFF ATS_TAP_OFF+ATS_TAP_MAX
-#define INV_TAP_OFF AAD_TAP_OFF+AAD_TAP_MAX
-#define USE_TAP_OFF INV_TAP_OFF+INV_TAP_MAX
+#define ATS_TAP_OFF ADS_TAP_MAX // 500
+#define AAD_TAP_OFF ATS_TAP_OFF+ATS_TAP_MAX // 500 + 100
+#define INV_TAP_OFF AAD_TAP_OFF+AAD_TAP_MAX // 500 + 100 + 100
+#define USE_TAP_OFF INV_TAP_OFF+INV_TAP_MAX // 500 + 100 + 100 + 140
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 200
Commit: 8823e9b61d64c24522e7a8cfb1177df83c6d30eb
https://github.com/scummvm/scummvm/commit/8823e9b61d64c24522e7a8cfb1177df83c6d30eb
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:47+03:00
Commit Message:
CHEWY: Check again if text entries are active
This was not handled in the new text code
Changed paths:
engines/chewy/atds.cpp
diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index ef7812cca01..e2cf9e2356a 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -1300,11 +1300,17 @@ uint32 Atdsys::getAtdsStreamSize() const {
}
Common::StringArray Atdsys::getTextArray(uint dialogNum, uint entryNum, int type) {
- return _text->getTextArray(dialogNum, entryNum, type);
+ if (!getControlBit(entryNum, ATS_ACTIVE_BIT))
+ return _text->getTextArray(dialogNum, entryNum, type);
+ else
+ return Common::StringArray();
}
Common::String Atdsys::getTextEntry(uint dialogNum, uint entryNum, int type) {
- return _text->getTextEntry(dialogNum, entryNum, type);
+ if (!getControlBit(entryNum, ATS_ACTIVE_BIT))
+ return _text->getTextEntry(dialogNum, entryNum, type);
+ else
+ return Common::String();
}
} // namespace Chewy
Commit: ca2c8a972e74edb17b94b51f15e63b75f7f5f7de
https://github.com/scummvm/scummvm/commit/ca2c8a972e74edb17b94b51f15e63b75f7f5f7de
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:48+03:00
Commit Message:
CHEWY: Remove superfluous text header
Changed paths:
engines/chewy/atds.cpp
engines/chewy/atds.h
diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index e2cf9e2356a..768907ad706 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -75,12 +75,6 @@ bool AdsTxtHeader::load(const void *src) {
return true;
}
-bool AtsStrHeader::load(Common::SeekableReadStream *src) {
- _vocNr = src->readUint16LE();
- return true;
-}
-
-
Atdsys::Atdsys() {
SplitStringInit init_ssi = { nullptr, 0, 0, 220, 4, SPLIT_CENTER };
_aadv._dialog = false;
@@ -484,7 +478,7 @@ bool Atdsys::start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int1
while (*ptr++ != ATDS_END_TEXT)
++_atsv._txtLen;
- *vocNr = _atsv._strHeader._vocNr - ATDS_VOC_OFFSET;
+ *vocNr = _atsv.vocNum - ATDS_VOC_OFFSET;
if ((byte)*_atsv._ptr == 248) {
// Special code for no message to display
@@ -731,16 +725,14 @@ void Atdsys::ats_search_nr(int16 txtNr, char **str) {
*str = start_str + 2 + AtsTxtHeader::SIZE();
if (_atsv._txtMode) {
- Common::MemoryReadStream rs2((const byte *)*str,
- AtsStrHeader::SIZE());
- _atsv._strHeader.load(&rs2);
+ _atsv.vocNum = READ_LE_UINT16(str);
}
- *str += AtsStrHeader::SIZE();
+ *str += 2; // voc number
break;
}
- start_str += 2 + AtsTxtHeader::SIZE() + AtsStrHeader::SIZE();
+ start_str += 2 + AtsTxtHeader::SIZE() + 2; // txt header + voc number
// Need to iterate over the following string to next entry
bool done2 = false;
@@ -777,12 +769,10 @@ void Atdsys::ats_search_str(int16 *nr, uint8 *status, uint8 controlByte, char **
} else if (*tmp_str == ATDS_END_TEXT) {
endLoop = true;
*str = start_str;
- start_str -= AtsStrHeader::SIZE();
+ start_str -= 2; // voc number
if (_atsv._txtMode != TXT_MARK_NAME) {
- Common::MemoryReadStream rs((const byte *)start_str,
- AtsStrHeader::SIZE());
- _atsv._strHeader.load(&rs);
+ _atsv.vocNum = READ_LE_UINT16(start_str);
}
if (tmp_str[1] != ATDS_END) {
@@ -800,16 +790,14 @@ void Atdsys::ats_search_str(int16 *nr, uint8 *status, uint8 controlByte, char **
*nr = 0;
*status = count;
*str = start_str;
- start_str -= AtsStrHeader::SIZE();
+ start_str -= 2; // voc number
if (_atsv._txtMode != TXT_MARK_NAME) {
- Common::MemoryReadStream rs((const byte *)start_str,
- AtsStrHeader::SIZE());
- _atsv._strHeader.load(&rs);
+ _atsv.vocNum = READ_LE_UINT16(start_str);
}
} else {
++count;
- tmp_str += AtsStrHeader::SIZE() + 2;
+ tmp_str += 2 + 2; // voc number + 2
start_str = tmp_str + 1;
}
} else if (*tmp_str == ATDS_END ||
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index d13ad864894..53c12582ac4 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -176,13 +176,6 @@ struct AdsNextBlk {
int16 _endNr;
};
-struct AtsStrHeader {
- uint16 _vocNr = 0;
-
- bool load(Common::SeekableReadStream *src);
- static constexpr int SIZE() { return 2; }
-};
-
struct AtsTxtHeader {
uint16 _txtNr = 0;
int16 _aMov = 0;
@@ -194,7 +187,7 @@ struct AtsTxtHeader {
struct AtsVar {
AtsTxtHeader _txtHeader;
- AtsStrHeader _strHeader;
+ uint16 vocNum;
char *_ptr;
int16 _delayCount;
int16 _silentCount;
Commit: 37fcade196dbf84bfb6b47514b9211ca78e5f3c9
https://github.com/scummvm/scummvm/commit/37fcade196dbf84bfb6b47514b9211ca78e5f3c9
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:48+03:00
Commit Message:
CHEWY: Use a single handle for the text file
Changed paths:
engines/chewy/atds.cpp
engines/chewy/atds.h
engines/chewy/inits.cpp
diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 768907ad706..f9a380ce160 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -109,8 +109,12 @@ Atdsys::Atdsys() {
}
Atdsys::~Atdsys() {
+ close_handle();
+
for (int16 i = 0; i < MAX_HANDLE; i++) {
- close_handle(i);
+ if (_atdsMem[i])
+ free(_atdsMem[i]);
+ _atdsMem[i] = nullptr;
}
if (_invUseMem)
@@ -326,19 +330,20 @@ Common::Stream *Atdsys::pool_handle(const char *fname) {
Common::File *f = new Common::File();
f->open(fname);
if (f->isOpen()) {
- _atdsHandle[ATDS_HANDLE] = f;
+ _atdsHandle = f;
} else {
error("Error reading from %s", fname);
}
return f;
}
-void Atdsys::set_handle(const char *fname, int16 mode, Common::Stream *handle, int16 chunkStart, int16 chunkNr) {
- Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(handle);
+void Atdsys::set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr) {
+ Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle);
ChunkHead Ch;
char *tmp_adr = atds_adr(fname, chunkStart, chunkNr);
if (rs) {
- _atdsHandle[mode] = rs;
+ if (_atdsMem[mode])
+ free(_atdsMem[mode]);
_atdsMem[mode] = tmp_adr;
_atdsPoolOff[mode] = chunkStart;
switch (mode) {
@@ -368,21 +373,11 @@ void Atdsys::set_handle(const char *fname, int16 mode, Common::Stream *handle, i
}
}
-void Atdsys::close_handle(int16 mode) {
- Common::Stream *stream = _atdsHandle[mode];
- if (stream) {
- delete _atdsHandle[mode];
- _atdsHandle[mode] = nullptr;
-
- for (int i = 0; i < MAX_HANDLE; ++i) {
- if (_atdsHandle[i] == stream)
- _atdsHandle[i] = nullptr;
- }
+void Atdsys::close_handle() {
+ if (_atdsHandle) {
+ delete _atdsHandle;
+ _atdsHandle = nullptr;
}
-
- if (_atdsMem[mode])
- free(_atdsMem[mode]);
- _atdsMem[mode] = nullptr;
}
char *Atdsys::atds_adr(const char *fname, int16 chunkStart, int16 chunkNr) {
@@ -399,7 +394,7 @@ void Atdsys::load_atds(int16 chunkNr, int16 mode) {
char *txt_adr = _atdsMem[mode];
ChunkHead Ch;
- Common::SeekableReadStream *stream = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle[mode]);
+ Common::SeekableReadStream *stream = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle);
if (stream && txt_adr) {
_G(mem)->file->selectPoolItem(stream, chunkNr + _atdsPoolOff[mode]);
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index 53c12582ac4..4a2d27a65bf 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -237,8 +237,8 @@ public:
void load_atds(int16 chunkNr, int16 mode);
Common::Stream *pool_handle(const char *fname);
- void set_handle(const char *fname, int16 mode, Common::Stream *handle, int16 chunkStart, int16 chunkNr);
- void close_handle(int16 mode);
+ void set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr);
+ void close_handle();
void crypt(char *txt, uint32 size);
bool start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int16 *vocNr);
void stop_ats();
@@ -291,7 +291,7 @@ private:
int16 get_delay(int16 txt_len);
void initItemUseWith();
- Common::Stream *_atdsHandle[MAX_HANDLE] = { nullptr };
+ Common::Stream *_atdsHandle = nullptr;
char *_atdsMem[MAX_HANDLE] = { nullptr };
int16 _atdsPoolOff[MAX_HANDLE] = { 0 };
char *_atsMem = nullptr;
diff --git a/engines/chewy/inits.cpp b/engines/chewy/inits.cpp
index 8869e7505e0..04bed3ff6fa 100644
--- a/engines/chewy/inits.cpp
+++ b/engines/chewy/inits.cpp
@@ -165,20 +165,15 @@ void init_room() {
void init_atds() {
// Close any prior handles
- _G(atds)->close_handle(AAD_DATA);
- _G(atds)->close_handle(ATS_DATA);
- _G(atds)->close_handle(ADS_DATA);
- _G(atds)->close_handle(INV_USE_DATA);
- _G(atds)->close_handle(INV_ATS_DATA);
- _G(atds)->close_handle(ATDS_HANDLE);
+ _G(atds)->close_handle();
// New set up
- Common::Stream *handle = _G(atds)->pool_handle(ATDS_TXT);
- _G(atds)->set_handle(ATDS_TXT, ATS_DATA, handle, ATS_TAP_OFF, ATS_TAP_MAX);
- _G(atds)->set_handle(ATDS_TXT, INV_ATS_DATA, handle, INV_TAP_OFF, INV_TAP_MAX);
- _G(atds)->set_handle(ATDS_TXT, AAD_DATA, handle, AAD_TAP_OFF, AAD_TAP_MAX);
- _G(atds)->set_handle(ATDS_TXT, ADS_DATA, handle, ADS_TAP_OFF, ADS_TAP_MAX);
- _G(atds)->set_handle(ATDS_TXT, INV_USE_DATA, handle, USE_TAP_OFF, USE_TAP_MAX);
+ _G(atds)->pool_handle(ATDS_TXT);
+ _G(atds)->set_handle(ATDS_TXT, ATS_DATA, ATS_TAP_OFF, ATS_TAP_MAX);
+ _G(atds)->set_handle(ATDS_TXT, INV_ATS_DATA, INV_TAP_OFF, INV_TAP_MAX);
+ _G(atds)->set_handle(ATDS_TXT, AAD_DATA, AAD_TAP_OFF, AAD_TAP_MAX);
+ _G(atds)->set_handle(ATDS_TXT, ADS_DATA, ADS_TAP_OFF, ADS_TAP_MAX);
+ _G(atds)->set_handle(ATDS_TXT, INV_USE_DATA, USE_TAP_OFF, USE_TAP_MAX);
_G(gameState).AadSilent = 10;
_G(gameState).DelaySpeed = 5;
_G(spieler_vector)[P_CHEWY].Delay = _G(gameState).DelaySpeed;
Commit: 1e6e9b07c92bf17d8a97fd88e55948906f33537f
https://github.com/scummvm/scummvm/commit/1e6e9b07c92bf17d8a97fd88e55948906f33537f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:49+03:00
Commit Message:
CHEWY: Refactor ATDS initialization
Changed paths:
engines/chewy/atds.cpp
engines/chewy/atds.h
engines/chewy/globals.h
engines/chewy/inits.cpp
diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index f9a380ce160..37506b91b61 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -105,11 +105,15 @@ Atdsys::Atdsys() {
_adsnb._endNr = 0;
_adsStackPtr = 0;
+ init();
initItemUseWith();
}
Atdsys::~Atdsys() {
- close_handle();
+ if (_atdsHandle) {
+ delete _atdsHandle;
+ _atdsHandle = nullptr;
+ }
for (int16 i = 0; i < MAX_HANDLE; i++) {
if (_atdsMem[i])
@@ -123,6 +127,26 @@ Atdsys::~Atdsys() {
delete _dialogResource;
}
+void Atdsys::init() {
+ _atdsHandle = new Common::File();
+ _atdsHandle->open(ATDS_TXT);
+ if (!_atdsHandle->isOpen()) {
+ error("Error opening %s", ATDS_TXT);
+ }
+
+ set_handle(ATDS_TXT, ATS_DATA, ATS_TAP_OFF, ATS_TAP_MAX);
+ set_handle(ATDS_TXT, INV_ATS_DATA, INV_TAP_OFF, INV_TAP_MAX);
+ set_handle(ATDS_TXT, AAD_DATA, AAD_TAP_OFF, AAD_TAP_MAX);
+ set_handle(ATDS_TXT, ADS_DATA, ADS_TAP_OFF, ADS_TAP_MAX);
+ set_handle(ATDS_TXT, INV_USE_DATA, USE_TAP_OFF, USE_TAP_MAX);
+ _G(gameState).AadSilent = 10;
+ _G(gameState).DelaySpeed = 5;
+ _G(spieler_vector)
+ [P_CHEWY].Delay = _G(gameState).DelaySpeed;
+ set_delay(&_G(gameState).DelaySpeed, _G(gameState).AadSilent);
+ set_string_end_func(&atdsStringStart);
+}
+
void Atdsys::initItemUseWith() {
int16 objA, objB, txtNum;
@@ -326,39 +350,27 @@ void Atdsys::set_split_win(int16 nr, int16 x, int16 y) {
_ssi[nr]._y = y;
}
-Common::Stream *Atdsys::pool_handle(const char *fname) {
- Common::File *f = new Common::File();
- f->open(fname);
- if (f->isOpen()) {
- _atdsHandle = f;
- } else {
- error("Error reading from %s", fname);
- }
- return f;
-}
-
void Atdsys::set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr) {
- Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle);
ChunkHead Ch;
char *tmp_adr = atds_adr(fname, chunkStart, chunkNr);
- if (rs) {
+ if (_atdsHandle) {
if (_atdsMem[mode])
free(_atdsMem[mode]);
_atdsMem[mode] = tmp_adr;
_atdsPoolOff[mode] = chunkStart;
switch (mode) {
case INV_USE_DATA:
- _G(mem)->file->selectPoolItem(rs, _atdsPoolOff[mode]);
- rs->seek(-ChunkHead::SIZE(), SEEK_CUR);
+ _G(mem)->file->selectPoolItem(_atdsHandle, _atdsPoolOff[mode]);
+ _atdsHandle->seek(-ChunkHead::SIZE(), SEEK_CUR);
- if (!Ch.load(rs)) {
+ if (!Ch.load(_atdsHandle)) {
error("Error reading from %s", fname);
} else {
free(_invUseMem);
_invUseMem = (char *)MALLOC(Ch.size + 3l);
if (Ch.size) {
- if (!rs->read(_invUseMem, Ch.size)) {
+ if (!_atdsHandle->read(_invUseMem, Ch.size)) {
error("Error reading from %s", fname);
} else {
crypt(_invUseMem, Ch.size);
@@ -373,13 +385,6 @@ void Atdsys::set_handle(const char *fname, int16 mode, int16 chunkStart, int16 c
}
}
-void Atdsys::close_handle() {
- if (_atdsHandle) {
- delete _atdsHandle;
- _atdsHandle = nullptr;
- }
-}
-
char *Atdsys::atds_adr(const char *fname, int16 chunkStart, int16 chunkNr) {
char *tmp_adr = nullptr;
uint32 size = _G(mem)->file->getPoolSize(fname, chunkStart, chunkNr);
@@ -394,16 +399,14 @@ void Atdsys::load_atds(int16 chunkNr, int16 mode) {
char *txt_adr = _atdsMem[mode];
ChunkHead Ch;
- Common::SeekableReadStream *stream = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle);
-
- if (stream && txt_adr) {
- _G(mem)->file->selectPoolItem(stream, chunkNr + _atdsPoolOff[mode]);
- stream->seek(-ChunkHead::SIZE(), SEEK_CUR);
- if (!Ch.load(stream)) {
+ if (_atdsHandle && txt_adr) {
+ _G(mem)->file->selectPoolItem(_atdsHandle, chunkNr + _atdsPoolOff[mode]);
+ _atdsHandle->seek(-ChunkHead::SIZE(), SEEK_CUR);
+ if (!Ch.load(_atdsHandle)) {
error("load_atds error");
} else {
if (Ch.size) {
- if (stream->read(txt_adr, Ch.size) != Ch.size) {
+ if (_atdsHandle->read(txt_adr, Ch.size) != Ch.size) {
error("load_atds error");
} else {
crypt(txt_adr, Ch.size);
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index 4a2d27a65bf..d38cb0d6985 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -236,9 +236,7 @@ public:
char *atds_adr(const char *fname, int16 chunkStart, int16 chunkNr);
void load_atds(int16 chunkNr, int16 mode);
- Common::Stream *pool_handle(const char *fname);
void set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr);
- void close_handle();
void crypt(char *txt, uint32 size);
bool start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int16 *vocNr);
void stop_ats();
@@ -288,10 +286,11 @@ public:
Common::String getTextEntry(uint dialogNum, uint entryNum, int type);
private:
+ void init();
int16 get_delay(int16 txt_len);
void initItemUseWith();
-
- Common::Stream *_atdsHandle = nullptr;
+
+ Common::File *_atdsHandle = nullptr;
char *_atdsMem[MAX_HANDLE] = { nullptr };
int16 _atdsPoolOff[MAX_HANDLE] = { 0 };
char *_atsMem = nullptr;
diff --git a/engines/chewy/globals.h b/engines/chewy/globals.h
index 56c51714919..1f17bd72361 100644
--- a/engines/chewy/globals.h
+++ b/engines/chewy/globals.h
@@ -358,8 +358,6 @@ void show_intro();
void register_cutscene(int cutsceneNum);
void getCutscenes(Common::Array<int> &cutscenes);
-void init_atds();
-
void init_room();
void buildMenu(int16 x, int16 y, int16 xNr, int16 yNr, int16 col, int16 mode);
diff --git a/engines/chewy/inits.cpp b/engines/chewy/inits.cpp
index 04bed3ff6fa..da8a2a30de1 100644
--- a/engines/chewy/inits.cpp
+++ b/engines/chewy/inits.cpp
@@ -138,7 +138,6 @@ void var_init() {
_G(gpkt).Vorschub = _G(spieler_mi)[P_CHEWY].Vorschub;
init_room();
- init_atds();
_G(gameState).FramesPerSecond = 7;
_G(currentSong) = -1;
_G(SetUpScreenFunc) = nullptr;
@@ -163,24 +162,6 @@ void init_room() {
_G(room)->open_handle(EPISODE1_GEP, R_GEP_DATA);
}
-void init_atds() {
- // Close any prior handles
- _G(atds)->close_handle();
-
- // New set up
- _G(atds)->pool_handle(ATDS_TXT);
- _G(atds)->set_handle(ATDS_TXT, ATS_DATA, ATS_TAP_OFF, ATS_TAP_MAX);
- _G(atds)->set_handle(ATDS_TXT, INV_ATS_DATA, INV_TAP_OFF, INV_TAP_MAX);
- _G(atds)->set_handle(ATDS_TXT, AAD_DATA, AAD_TAP_OFF, AAD_TAP_MAX);
- _G(atds)->set_handle(ATDS_TXT, ADS_DATA, ADS_TAP_OFF, ADS_TAP_MAX);
- _G(atds)->set_handle(ATDS_TXT, INV_USE_DATA, USE_TAP_OFF, USE_TAP_MAX);
- _G(gameState).AadSilent = 10;
- _G(gameState).DelaySpeed = 5;
- _G(spieler_vector)[P_CHEWY].Delay = _G(gameState).DelaySpeed;
- _G(atds)->set_delay(&_G(gameState).DelaySpeed, _G(gameState).AadSilent);
- _G(atds)->set_string_end_func(&atdsStringStart);
-}
-
void new_game() {
_G(gameState).clear();
Commit: 3740acdd7d147d7d2dd985d080cc526fb5a8638d
https://github.com/scummvm/scummvm/commit/3740acdd7d147d7d2dd985d080cc526fb5a8638d
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-04-05T22:32:49+03:00
Commit Message:
CHEWY: Cleanup
Changed paths:
engines/chewy/atds.cpp
engines/chewy/atds.h
engines/chewy/data.cpp
engines/chewy/data.h
diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 37506b91b61..21f7deb9c76 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -110,10 +110,8 @@ Atdsys::Atdsys() {
}
Atdsys::~Atdsys() {
- if (_atdsHandle) {
- delete _atdsHandle;
- _atdsHandle = nullptr;
- }
+ delete _atdsHandle;
+ _atdsHandle = nullptr;
for (int16 i = 0; i < MAX_HANDLE; i++) {
if (_atdsMem[i])
@@ -141,8 +139,7 @@ void Atdsys::init() {
set_handle(ATDS_TXT, INV_USE_DATA, USE_TAP_OFF, USE_TAP_MAX);
_G(gameState).AadSilent = 10;
_G(gameState).DelaySpeed = 5;
- _G(spieler_vector)
- [P_CHEWY].Delay = _G(gameState).DelaySpeed;
+ _G(spieler_vector)[P_CHEWY].Delay = _G(gameState).DelaySpeed;
set_delay(&_G(gameState).DelaySpeed, _G(gameState).AadSilent);
set_string_end_func(&atdsStringStart);
}
@@ -352,49 +349,37 @@ void Atdsys::set_split_win(int16 nr, int16 x, int16 y) {
void Atdsys::set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr) {
ChunkHead Ch;
- char *tmp_adr = atds_adr(fname, chunkStart, chunkNr);
- if (_atdsHandle) {
- if (_atdsMem[mode])
- free(_atdsMem[mode]);
- _atdsMem[mode] = tmp_adr;
- _atdsPoolOff[mode] = chunkStart;
- switch (mode) {
- case INV_USE_DATA:
- _G(mem)->file->selectPoolItem(_atdsHandle, _atdsPoolOff[mode]);
- _atdsHandle->seek(-ChunkHead::SIZE(), SEEK_CUR);
-
- if (!Ch.load(_atdsHandle)) {
+ uint32 size = _G(mem)->file->getPoolSize(fname, chunkStart, chunkNr);
+ char *tmp_adr = size ? (char *)MALLOC(size + 3) : nullptr;
+
+ if (_atdsMem[mode])
+ free(_atdsMem[mode]);
+ _atdsMem[mode] = tmp_adr;
+ _atdsPoolOff[mode] = chunkStart;
+
+ if (mode == INV_USE_DATA) {
+ _G(mem)->file->selectPoolItem(_atdsHandle, _atdsPoolOff[mode]);
+ _atdsHandle->seek(-ChunkHead::SIZE(), SEEK_CUR);
+
+ if (!Ch.load(_atdsHandle))
+ error("Error reading from %s", fname);
+
+ free(_invUseMem);
+ _invUseMem = (char *)MALLOC(Ch.size + 3l);
+
+ if (Ch.size) {
+ if (!_atdsHandle->read(_invUseMem, Ch.size)) {
error("Error reading from %s", fname);
} else {
- free(_invUseMem);
- _invUseMem = (char *)MALLOC(Ch.size + 3l);
-
- if (Ch.size) {
- if (!_atdsHandle->read(_invUseMem, Ch.size)) {
- error("Error reading from %s", fname);
- } else {
- crypt(_invUseMem, Ch.size);
- }
- }
- _invUseMem[Ch.size] = (char)BLOCKENDE;
- _invUseMem[Ch.size + 1] = (char)BLOCKENDE;
- _invUseMem[Ch.size + 2] = (char)BLOCKENDE;
+ crypt(_invUseMem, Ch.size);
}
- break;
}
+ _invUseMem[Ch.size] = (char)BLOCKENDE;
+ _invUseMem[Ch.size + 1] = (char)BLOCKENDE;
+ _invUseMem[Ch.size + 2] = (char)BLOCKENDE;
}
}
-char *Atdsys::atds_adr(const char *fname, int16 chunkStart, int16 chunkNr) {
- char *tmp_adr = nullptr;
- uint32 size = _G(mem)->file->getPoolSize(fname, chunkStart, chunkNr);
- if (size) {
- tmp_adr = (char *)MALLOC(size + 3);
- }
-
- return tmp_adr;
-}
-
void Atdsys::load_atds(int16 chunkNr, int16 mode) {
char *txt_adr = _atdsMem[mode];
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index d38cb0d6985..ec29adeb0d3 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -233,7 +233,6 @@ public:
SplitStringRet *split_string(SplitStringInit *ssi);
void calc_txt_win(SplitStringInit *ssi);
void str_null2leer(char *strStart, char *strEnd);
- char *atds_adr(const char *fname, int16 chunkStart, int16 chunkNr);
void load_atds(int16 chunkNr, int16 mode);
void set_handle(const char *fname, int16 mode, int16 chunkStart, int16 chunkNr);
diff --git a/engines/chewy/data.cpp b/engines/chewy/data.cpp
index 60b598f1b01..5d6aaa7f2c7 100644
--- a/engines/chewy/data.cpp
+++ b/engines/chewy/data.cpp
@@ -27,32 +27,22 @@
namespace Chewy {
-Data::Data() {
-}
-
-Data::~Data() {
-}
-
-uint16 Data::selectPoolItem(Common::Stream *stream, uint16 nr) {
- Common::SeekableReadStream *rs = dynamic_cast<Common::SeekableReadStream *>(stream);
-
- if (rs) {
- rs->seek(0, SEEK_SET);
+void Data::selectPoolItem(Common::File *stream, uint16 nr) {
+ if (stream) {
+ stream->seek(0, SEEK_SET);
NewPhead ph;
- if (!ph.load(rs))
+ if (!ph.load(stream))
error("selectPoolItem error");
if (!strncmp(ph._id, "NGS", 3)) {
if (nr >= ph._poolNr)
nr = ph._poolNr - 1;
- rs->seek(-(int)((ph._poolNr - nr) * sizeof(uint32)), SEEK_END);
- uint32 tmp1 = rs->readUint32LE();
- rs->seek(tmp1, SEEK_SET);
+ stream->seek(-(int)((ph._poolNr - nr) * sizeof(uint32)), SEEK_END);
+ uint32 tmp1 = stream->readUint32LE();
+ stream->seek(tmp1, SEEK_SET);
}
}
-
- return nr;
}
uint32 Data::getPoolSize(const char *filename, int16 chunkStart, int16 chunkNr) {
diff --git a/engines/chewy/data.h b/engines/chewy/data.h
index ebc62326144..372233d04f8 100644
--- a/engines/chewy/data.h
+++ b/engines/chewy/data.h
@@ -23,15 +23,16 @@
#define CHEWY_DATA_H
#include "chewy/chewy.h"
+#include "common/file.h"
namespace Chewy {
class Data {
public:
- Data();
- ~Data();
+ Data() {}
+ ~Data() {}
- uint16 selectPoolItem(Common::Stream *stream, uint16 nr);
+ void selectPoolItem(Common::File *stream, uint16 nr);
uint32 getPoolSize(const char *filename, int16 chunkStart, int16 chunkNr);
};
More information about the Scummvm-git-logs
mailing list