[Scummvm-git-logs] scummvm master -> 63845705a0fa306ca490ba27bdf41d2130b7e2b0

bluegr noreply at scummvm.org
Thu Mar 17 23:37:12 UTC 2022


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:
b4c829db21 CHEWY: Use enum for load_atds()
63845705a0 CHEWY: Refactor the functionality for hiding dialog options


Commit: b4c829db212bcba4f5933e730de848e1e6205a40
    https://github.com/scummvm/scummvm/commit/b4c829db212bcba4f5933e730de848e1e6205a40
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-17T23:55:32+02:00

Commit Message:
CHEWY: Use enum for load_atds()

Changed paths:
    engines/chewy/dialogs/cinema.cpp


diff --git a/engines/chewy/dialogs/cinema.cpp b/engines/chewy/dialogs/cinema.cpp
index 758a14d3dc7..4840dd8e0ca 100644
--- a/engines/chewy/dialogs/cinema.cpp
+++ b/engines/chewy/dialogs/cinema.cpp
@@ -56,7 +56,7 @@ void Cinema::execute() {
 	getCutscenes(cutscenes);
 
 	_G(fontMgr)->setFont(_G(font6));
-	_G(atds)->load_atds(98, 1);
+	_G(atds)->load_atds(98, ATS_DATA);
 
 	_G(room)->load_tgp(4, &_G(room_blk), 1, 0, GBOOK);
 	showCur();


Commit: 63845705a0fa306ca490ba27bdf41d2130b7e2b0
    https://github.com/scummvm/scummvm/commit/63845705a0fa306ca490ba27bdf41d2130b7e2b0
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-18T00:51:03+02:00

Commit Message:
CHEWY: Refactor the functionality for hiding dialog options

Changed paths:
    engines/chewy/atds.cpp
    engines/chewy/atds.h
    engines/chewy/inits.cpp
    engines/chewy/menus.cpp
    engines/chewy/resource.cpp
    engines/chewy/resource.h
    engines/chewy/t_event.cpp


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 536359ca998..83340dab6b5 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -126,9 +126,6 @@ Atdsys::Atdsys() {
 
 Atdsys::~Atdsys() {
 	for (int16 i = 0; i < MAX_HANDLE; i++) {
-		if (i == ADH_HANDLE)
-			continue;
-
 		close_handle(i);
 	}
 
@@ -373,18 +370,6 @@ void Atdsys::set_handle(const char *fname, int16 mode, Common::Stream *handle, i
 void Atdsys::open_handle(const char *fname, int16 mode) {
 	char *tmp_adr = nullptr;
 
-	if (mode == ADH_DATA) {
-		if (_atdsMem[mode])
-			free(_atdsMem[mode]);
-
-		// Set to nullptr on purpose, this shouldn't be used
-		_atdsHandle[mode] = nullptr;
-		// +3 bytes to signify the end of the stream (BLOCKENDE)
-		_atdsMem[mode] = (char *)MALLOC(MAX_DIALOG_DATA_SIZE + 3);
-		_adsBlock = (AdsBlock *)_atdsMem[mode];
-		return;
-	}
-
 	if (mode != INV_IDX_DATA)
 		tmp_adr = atds_adr(fname, 0, 20000);
 
@@ -409,9 +394,6 @@ void Atdsys::close_handle(int16 mode) {
 		_atdsHandle[mode] = nullptr;
 
 		for (int i = 0; i < MAX_HANDLE; ++i) {
-			if (i == ADH_HANDLE)
-				continue;
-
 			if (_atdsHandle[i] == stream)
 				_atdsHandle[i] = nullptr;
 		}
@@ -435,20 +417,6 @@ char *Atdsys::atds_adr(const char *fname, int16 chunkStart, int16 chunkNr) {
 void Atdsys::load_atds(int16 chunkNr, int16 mode) {
 	char *txt_adr = _atdsMem[mode];
 
-	if (mode == ADH_DATA) {
-		Chunk *chunk = _dialogResource->getChunk(chunkNr);
-		uint8 *chunkData = _dialogResource->getChunkData(chunkNr);
-
-		assert(chunk->size <= MAX_DIALOG_DATA_SIZE);
-		memcpy(_atdsMem[ADH_HANDLE], chunkData, chunk->size);
-		delete[] chunkData;
-
-		txt_adr[chunk->size] = (char)BLOCKENDE;
-		txt_adr[chunk->size + 1] = (char)BLOCKENDE;
-		txt_adr[chunk->size + 2] = (char)BLOCKENDE;
-		return;
-	}
-
 	ChunkHead Ch;
 	Common::SeekableReadStream *stream = dynamic_cast<Common::SeekableReadStream *>(_atdsHandle[mode]);
 
@@ -461,7 +429,7 @@ void Atdsys::load_atds(int16 chunkNr, int16 mode) {
 			if (Ch.size) {
 				if (stream->read(txt_adr, Ch.size) != Ch.size) {
 					error("load_atds error");
-				} else if (mode != ADH_DATA) {
+				} else {
 					crypt(txt_adr, Ch.size);
 				}
 			}
@@ -474,10 +442,6 @@ void Atdsys::load_atds(int16 chunkNr, int16 mode) {
 	}
 }
 
-void Atdsys::save_ads_header(int16 diaNr) {
-	_dialogResource->updateChunk(diaNr, (byte *)_atdsMem[ADH_HANDLE]);
-}
-
 void Atdsys::crypt(char *txt, uint32 size) {
 	uint8 *sp = (uint8 *)txt;
 	for (uint32 i = 0; i < size; i++) {
@@ -1186,20 +1150,7 @@ int16 Atdsys::ads_get_status() {
 	return _adsv._dialog;
 }
 
-int16 Atdsys::check_item(int16 blockNr, int16 itemNr) {
-	int16 ret = true;
-	char *tmp_adr = _adsv._ptr;
-	ads_search_block(blockNr, &tmp_adr);
-	if (tmp_adr) {
-		ads_search_item(itemNr, &tmp_adr);
-		if (tmp_adr) {
-			ret = true;
-		}
-	}
-	return ret;
-}
-
-char **Atdsys::ads_item_ptr(int16 blockNr, int16 *retNr) {
+char **Atdsys::ads_item_ptr(uint16 dialogNum, int16 blockNr, int16 *retNr) {
 	*retNr = 0;
 	memset(_ePtr, 0, sizeof(char *) * ADS_MAX_BL_EIN);
 	if (_adsv._dialog != -1) {
@@ -1212,7 +1163,7 @@ char **Atdsys::ads_item_ptr(int16 blockNr, int16 *retNr) {
 				if (tmp_adr) {
 					char nr = tmp_adr[-1];
 					tmp_adr += sizeof(AadStrHeader);
-					if (_adsBlock[blockNr]._show[(int16)nr] == true) {
+					if (_dialogResource->isItemShown(dialogNum, blockNr, (int16)nr)) {
 						_ePtr[*retNr] = tmp_adr;
 						_eNr[*retNr] = (int16)nr;
 						++(*retNr);
@@ -1225,7 +1176,7 @@ char **Atdsys::ads_item_ptr(int16 blockNr, int16 *retNr) {
 	return _ePtr;
 }
 
-AdsNextBlk *Atdsys::ads_item_choice(int16 blockNr, int16 itemNr) {
+AdsNextBlk *Atdsys::ads_item_choice(uint16 dialogNum, int16 blockNr, int16 itemNr) {
 	_adsnb._blkNr = blockNr;
 	if (!_aadv._dialog) {
 		if (!_adsv._autoDia) {
@@ -1233,7 +1184,7 @@ AdsNextBlk *Atdsys::ads_item_choice(int16 blockNr, int16 itemNr) {
 			if (_adsv._blkPtr) {
 				if (start_ads_auto_dia(_adsv._blkPtr))
 					_adsv._autoDia = true;
-				if (_G(bit)->is_bit((uint8)_adsBlock[blockNr]._control[_eNr[itemNr]], ADS_EXIT_BIT) == true) {
+				if (_dialogResource->hasExitBit(dialogNum, blockNr, _eNr[itemNr])) {
 					stop_ads();
 					_adsnb._endNr = _eNr[itemNr];
 					_adsnb._blkNr = -1;
@@ -1245,29 +1196,31 @@ AdsNextBlk *Atdsys::ads_item_choice(int16 blockNr, int16 itemNr) {
 	return &_adsnb;
 }
 
-AdsNextBlk *Atdsys::calc_next_block(int16 blockNr, int16 itemNr) {
-	if (_G(bit)->is_bit((uint8)_adsBlock[blockNr]._control[_eNr[itemNr]], ADS_SHOW_BIT) == false)
-		_adsBlock[blockNr]._show[_eNr[itemNr]] = false;
+AdsNextBlk *Atdsys::calc_next_block(uint16 dialogNum, int16 blockNr, int16 itemNr) {
+	if (!_dialogResource->hasShowBit(dialogNum, blockNr, _eNr[itemNr]))
+		_dialogResource->setItemShown(dialogNum, blockNr, _eNr[itemNr], false);
 	_adsnb._endNr = _eNr[itemNr];
-	if (_G(bit)->is_bit((uint8)_adsBlock[blockNr]._control[_eNr[itemNr]], ADS_RESTART_BIT) == true) {
+
+	if (_dialogResource->hasRestartBit(dialogNum, blockNr, _eNr[itemNr])) {
 		_adsnb._blkNr = 0;
 
 		_adsStackPtr = 0;
 	} else {
-		if (_adsBlock[blockNr]._next[_eNr[itemNr]]) {
-			_adsnb._blkNr = _adsBlock[blockNr]._next[_eNr[itemNr]];
+		const uint8 nextBlock = _dialogResource->getNextBlock(dialogNum, blockNr, _eNr[itemNr]);
+		if (nextBlock) {
+			_adsnb._blkNr = nextBlock;
 
 			int16 anzahl = 0;
 			while (!anzahl && _adsnb._blkNr != -1) {
 
 				anzahl = 0;
-				ads_item_ptr(_adsnb._blkNr, &anzahl);
+				ads_item_ptr(dialogNum, _adsnb._blkNr, &anzahl);
 				if (!anzahl) {
-					_adsnb._blkNr = return_block(_adsBlock);
+					_adsnb._blkNr = return_block(dialogNum);
 				}
 			}
 		} else {
-			_adsnb._blkNr = return_block(_adsBlock);
+			_adsnb._blkNr = return_block(dialogNum);
 		}
 	}
 	_adsStack[_adsStackPtr] = _adsnb._blkNr;
@@ -1276,14 +1229,14 @@ AdsNextBlk *Atdsys::calc_next_block(int16 blockNr, int16 itemNr) {
 	return &_adsnb;
 }
 
-int16 Atdsys::return_block(AdsBlock *ab) {
+int16 Atdsys::return_block(uint16 dialogNum) {
 	_adsStackPtr -= 1;
 	int16 ret = -1;
 	bool ende = false;
 	while (_adsStackPtr >= 0 && !ende) {
 		short blk_nr = _adsStack[_adsStackPtr];
 		int16 anz;
-		ads_item_ptr(blk_nr, &anz);
+		ads_item_ptr(dialogNum, blk_nr, &anz);
 		if (anz) {
 			ret = blk_nr;
 			ende = true;
@@ -1359,27 +1312,11 @@ int16 Atdsys::start_ads_auto_dia(char *itemAdr) {
 }
 
 void Atdsys::hide_item(int16 diaNr, int16 blockNr, int16 itemNr) {
-	if (_adsv._dialog == diaNr) {
-		if (check_item(blockNr, itemNr))
-			_adsBlock[blockNr]._show[itemNr] = false;
-	} else {
-		load_atds(diaNr, ADH_DATA);
-		if (check_item(blockNr, itemNr))
-			_adsBlock[blockNr]._show[itemNr] = false;
-		save_ads_header(diaNr);
-	}
+	_dialogResource->setItemShown(diaNr, blockNr, itemNr, false);
 }
 
 void Atdsys::show_item(int16 diaNr, int16 blockNr, int16 itemNr) {
-	if (_adsv._dialog == diaNr) {
-		if (check_item(blockNr, itemNr))
-			_adsBlock[blockNr]._show[itemNr] = true;
-	} else {
-		load_atds(diaNr, ADH_DATA);
-		if (check_item(blockNr, itemNr))
-			_adsBlock[blockNr]._show[itemNr] = true;
-		save_ads_header(diaNr);
-	}
+	_dialogResource->setItemShown(diaNr, blockNr, itemNr, true);
 }
 
 int16 Atdsys::calc_inv_no_use(int16 curInv, int16 testNr, int16 mode) {
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index fec5cb88e12..afbab25150d 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -35,7 +35,6 @@ namespace Chewy {
 #define AAD_DATA 0
 #define ATS_DATA 1
 #define ADS_DATA 2
-#define ADH_DATA 3
 #define INV_USE_DATA 4
 #define INV_IDX_DATA 5
 #define INV_ATS_DATA 6
@@ -44,7 +43,6 @@ namespace Chewy {
 #define AAD_HANDLE 0
 #define ATS_HANDLE 1
 #define ADS_HANDLE 2
-#define ADH_HANDLE 3
 #define INV_USE_HANDLE 4
 #define INV_IDX_HANDLE 5
 #define INV_ATS_HANDLE 6
@@ -100,15 +98,6 @@ struct AdsDiaHeaders {
 	int16 _nr;
 };
 
-#include "common/pack-start.h"	// START STRUCT PACKING
-struct AdsBlock {
-	bool _show[ADS_MAX_BL_EIN];
-
-	uint8 _next[ADS_MAX_BL_EIN];
-	uint8 _control[ADS_MAX_BL_EIN];
-} PACKED_STRUCT;
-#include "common/pack-end.h"	// END STRUCT PACKING
-
 struct AtdsVar {
 	int16 _silent = 0;
 	int16 *_delay = nullptr;
@@ -278,7 +267,6 @@ public:
 	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 save_ads_header(int16 diaNr);
 
 	Common::Stream *pool_handle(const char *fname);
 	void set_handle(const char *fname, int16 mode, Common::Stream *handle, int16 chunkStart, int16 chunkNr);
@@ -310,17 +298,16 @@ public:
 	int16 aad_get_zeilen(char *str, int16 *txtLen);
 	bool ads_start(int16 diaNr);
 	void stop_ads();
-	char **ads_item_ptr(int16 blockNr, int16 *retNr);
-	AdsNextBlk *ads_item_choice(int16 blockNr, int16 itemNr);
-	AdsNextBlk *calc_next_block(int16 blockNr, int16 itemNr);
+	char **ads_item_ptr(uint16 dialogNum, int16 blockNr, int16 *retNr);
+	AdsNextBlk *ads_item_choice(uint16 dialogNum, int16 blockNr, int16 itemNr);
+	AdsNextBlk *calc_next_block(uint16 dialogNum, int16 blockNr, int16 itemNr);
 	int16 ads_get_status();
 	void hide_item(int16 diaNr, int16 blockNr, int16 itemNr);
 	void show_item(int16 diaNr, int16 blockNr, int16 itemNr);
-	int16 return_block(AdsBlock *ab);
+	int16 return_block(uint16 dialogNum);
 	void ads_search_block(int16 blockNr, char **ptr);
 	void ads_search_item(int16 itemNr, char **blkAdr);
 	int16 start_ads_auto_dia(char *itemAdr);
-	int16 check_item(int16 blockNr, int16 itemNr);
 	int16 calc_inv_no_use(int16 curInv, int16 testNr, int16 mode);
 	int16 getStereoPos(int16 x);
 	void enableEvents(bool nr) {
@@ -350,7 +337,6 @@ private:
 	AtdsVar _atdsv;
 	char *_ePtr[ADS_MAX_BL_EIN] = { nullptr };
 	int16 _eNr[ADS_MAX_BL_EIN] = { 0 };
-	AdsBlock *_adsBlock = nullptr;
 	AdsNextBlk _adsnb;
 	uint8 _adsStack[ADS_STACK_SIZE] = { 0 };
 	int16 _adsStackPtr;
diff --git a/engines/chewy/inits.cpp b/engines/chewy/inits.cpp
index 60424f65016..3ad100c4ab9 100644
--- a/engines/chewy/inits.cpp
+++ b/engines/chewy/inits.cpp
@@ -189,7 +189,6 @@ void init_atds() {
 	_G(atds)->init_ats_mode(INV_USE_DATA, _G(spieler).InvUse);
 	_G(atds)->init_ats_mode(INV_USE_DEF, _G(spieler).InvUseDef);
 	_G(atds)->open_handle(INV_USE_IDX, INV_IDX_DATA);
-	_G(atds)->open_handle("", ADH_DATA);
 	_G(spieler).AadSilent = 10;
 	_G(spieler).DelaySpeed = 5;
 	_G(spieler_vector)[P_CHEWY].Delay = _G(spieler).DelaySpeed;
diff --git a/engines/chewy/menus.cpp b/engines/chewy/menus.cpp
index f1719d9dcbe..f69418e3b44 100644
--- a/engines/chewy/menus.cpp
+++ b/engines/chewy/menus.cpp
@@ -271,24 +271,21 @@ void adsMenu() {
 				_G(cur_display) = false;
 				_G(ads_push) = true;
 				g_events->_mousePos.y = 159;
-				AdsNextBlk *an_blk = _G(atds)->ads_item_choice(_G(ads_blk_nr), curY);
+				AdsNextBlk *an_blk = _G(atds)->ads_item_choice(_G(ads_dia_nr), _G(ads_blk_nr), curY);
 				if (an_blk->_blkNr == -1) {
 					selectDialogOption(_G(ads_dia_nr), _G(ads_blk_nr), an_blk->_endNr);
 					ads_ende(_G(ads_dia_nr), _G(ads_blk_nr), an_blk->_endNr);
 					stop_ads_dialog();
 				} else {
-					an_blk = _G(atds)->calc_next_block(_G(ads_blk_nr), curY);
+					an_blk = _G(atds)->calc_next_block(_G(ads_dia_nr), _G(ads_blk_nr), curY);
 					selectDialogOption(_G(ads_dia_nr), _G(ads_blk_nr), an_blk->_endNr);
 					_G(ads_blk_nr) = an_blk->_blkNr;
-					_G(ads_item_ptr) = _G(atds)->ads_item_ptr(_G(ads_blk_nr), &_G(ads_item_nr));
+					_G(ads_item_ptr) = _G(atds)->ads_item_ptr(_G(ads_dia_nr), _G(ads_blk_nr), &_G(ads_item_nr));
 				}
 				_G(det)->stop_detail(_G(talk_start_ani));
 				_G(det)->showStaticSpr(_G(talk_hide_static));
 				_G(talk_start_ani) = -1;
 				_G(talk_hide_static) = -1;
-				if (_G(flags).AdsDialog == false) {
-					_G(atds)->save_ads_header(_G(ads_dia_nr));
-				}
 			}
 			break;
 
diff --git a/engines/chewy/resource.cpp b/engines/chewy/resource.cpp
index eeba93a1225..dffc771f300 100644
--- a/engines/chewy/resource.cpp
+++ b/engines/chewy/resource.cpp
@@ -335,11 +335,11 @@ DialogResource::~DialogResource() {
 	delete _dialogBuffer;
 }
 
-DialogChunk *DialogResource::getDialog(uint block) {
-	Chunk *chunk = &_chunkList[block];
+DialogChunk *DialogResource::getDialog(uint dialog, uint block) {
+	Chunk *chunk = &_chunkList[dialog];
 	DialogChunk *item = new DialogChunk();
 
-	_dialogStream->seek(chunk->pos, SEEK_SET);
+	_dialogStream->seek(chunk->pos + 3 * 6 * block, SEEK_SET);
 
 	_dialogStream->read(item->show, 6);
 	_dialogStream->read(item->next, 6);
@@ -348,48 +348,55 @@ DialogChunk *DialogResource::getDialog(uint block) {
 	return item;
 }
 
-bool DialogResource::isItemShown(uint block, uint num) {
-	Chunk *chunk = &_chunkList[block];
-
-	_dialogStream->seek(chunk->pos, SEEK_SET);
+bool DialogResource::isItemShown(uint dialog, uint block, uint num) {
+	DialogChunk *item = getDialog(dialog, block);
+	bool isShown = item->show[num];
+	delete item;
 
-	_dialogStream->skip(num);
-	return _dialogStream->readByte();
+	return isShown;
 }
 
-void DialogResource::setItemShown(uint block, uint num, bool shown) {
-	Chunk *chunk = &_chunkList[block];
+void DialogResource::setItemShown(uint dialog, uint block, uint num, bool shown) {
+	Chunk *chunk = &_chunkList[dialog];
 
-	_dialogStream->seek(chunk->pos, SEEK_SET);
+	_dialogStream->seek(chunk->pos + 3 * 6 * block, SEEK_SET);
 
 	_dialogStream->skip(num);
 	_dialogStream->writeByte(shown ? 1 : 0);
 }
 
-bool DialogResource::hasExitBit(uint block, uint num) {
-	DialogChunk *item = getDialog(block);
+bool DialogResource::hasExitBit(uint dialog, uint block, uint num) {
+	DialogChunk *item = getDialog(dialog, block);
 	const bool isExit = (item->flags[num] & ADS_EXIT_BIT) != 0;
 	delete item;
 
 	return isExit;
 }
 
-bool DialogResource::hasRestartBit(uint block, uint num) {
-	DialogChunk *item = getDialog(block);
+bool DialogResource::hasRestartBit(uint dialog, uint block, uint num) {
+	DialogChunk *item = getDialog(dialog, block);
 	const bool isRestart = (item->flags[num] & ADS_RESTART_BIT) != 0;
 	delete item;
 
 	return isRestart;
 }
 
-bool DialogResource::hasShowBit(uint block, uint num) {
-	DialogChunk *item = getDialog(block);
+bool DialogResource::hasShowBit(uint dialog, uint block, uint num) {
+	DialogChunk *item = getDialog(dialog, block);
 	const bool isShown = (item->flags[num] & ADS_SHOW_BIT) != 0;
 	delete item;
 
 	return isShown;
 }
 
+uint8 DialogResource::getNextBlock(uint dialog, uint block, uint num) {
+	DialogChunk *item = getDialog(dialog, block);
+	const uint8 next = item->next[num];
+	delete item;
+
+	return next;
+}
+
 void DialogResource::loadStream(Common::SeekableReadStream *s) {
 	_dialogStream->seek(0, SEEK_SET);
 	_dialogStream->writeStream(s, _stream.size());
@@ -400,13 +407,4 @@ void DialogResource::saveStream(Common::WriteStream* s) {
 	s->writeStream(_dialogStream, _stream.size());
 }
 
-void DialogResource::updateChunk(uint num, byte *data) {
-	assert(num < _chunkList.size());
-
-	Chunk *chunk = &_chunkList[num];
-
-	_stream.seek(chunk->pos, SEEK_SET);
-	_dialogStream->write(data, chunk->size);
-}
-
 }
diff --git a/engines/chewy/resource.h b/engines/chewy/resource.h
index e6e64660cb1..cb746dc0738 100644
--- a/engines/chewy/resource.h
+++ b/engines/chewy/resource.h
@@ -208,12 +208,13 @@ public:
 	DialogResource(Common::String filename);
 	virtual ~DialogResource();
 
-	DialogChunk *getDialog(uint block);
-	bool isItemShown(uint block, uint num);
-	void setItemShown(uint block, uint num, bool shown);
-	bool hasExitBit(uint block, uint num);
-	bool hasRestartBit(uint block, uint num);
-	bool hasShowBit(uint block, uint num);
+	DialogChunk *getDialog(uint dialog, uint block);
+	bool isItemShown(uint dialog, uint block, uint num);
+	void setItemShown(uint dialog, uint block, uint num, bool shown);
+	bool hasExitBit(uint dialog, uint block, uint num);
+	bool hasRestartBit(uint dialog, uint block, uint num);
+	bool hasShowBit(uint dialog, uint block, uint num);
+	uint8 getNextBlock(uint dialog, uint block, uint num);
 
 	void loadStream(Common::SeekableReadStream *s);
 	void saveStream(Common::WriteStream *s);
@@ -222,10 +223,6 @@ public:
 		return _stream.size();
 	}
 
-	// HACK: The following function allows direct access
-	// to the stream, and should be removed
-	void updateChunk(uint num, byte *data);
-
 private:
 	Common::MemorySeekableReadWriteStream *_dialogStream;
 	byte *_dialogBuffer;
diff --git a/engines/chewy/t_event.cpp b/engines/chewy/t_event.cpp
index 3ab79707097..e4d3615fb02 100644
--- a/engines/chewy/t_event.cpp
+++ b/engines/chewy/t_event.cpp
@@ -34,10 +34,9 @@ int16 loadAdsDia(int16 diaNr) {
 	if (_G(flags).AdsDialog == false) {
 		bool tmp = _G(atds)->ads_start(diaNr);
 		if (tmp == true) {
-			_G(atds)->load_atds(diaNr, ADH_DATA);
 			ret = true;
 			_G(ads_blk_nr) = 0;
-			_G(ads_item_ptr) = _G(atds)->ads_item_ptr(_G(ads_blk_nr), &_G(ads_item_nr));
+			_G(ads_item_ptr) = _G(atds)->ads_item_ptr(diaNr, _G(ads_blk_nr), &_G(ads_item_nr));
 			_G(flags).AdsDialog = true;
 			_G(ads_push) = true;
 			_G(ads_tmp_dsp) = _G(spieler).DispFlag;




More information about the Scummvm-git-logs mailing list