[Scummvm-git-logs] scummvm master -> 9f5721124a573c9df0aa44a355d1d222398de5bd

bluegr noreply at scummvm.org
Sun Mar 20 11:58:52 UTC 2022


This automated email contains information about 12 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
0b428f5227 CHEWY: Remove dead code
fd63dee23a CHEWY: More work on the new text resource handling code
bdbd191848 CHEWY: Rework the text resource handling code in the cinematics screen
743f0f7239 CHEWY: Use the new text resource handling code for item look texts
caa46431d0 CHEWY: Add enums, remove dead code
364c687907 CHEWY: Use the new text loading code in more places
747ef8cb7d CHEWY: Remove superfluous method init_ats_mode()
9c7303f41f CHEWY: Clean up file name defines
475ac22d58 CHEWY: Renaming
b4ddf49c18 CHEWY: Rename spieler -> gameState
840c1d70b8 CHEWY: More work on using inventory items
9f5721124a CHEWY: Use the ScummVM config for toggling subs, speech, music and SFX


Commit: 0b428f522743df29eb014b90b057c28d78e30570
    https://github.com/scummvm/scummvm/commit/0b428f522743df29eb014b90b057c28d78e30570
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:20+02:00

Commit Message:
CHEWY: Remove dead code

Changed paths:
    engines/chewy/rooms/room01.cpp


diff --git a/engines/chewy/rooms/room01.cpp b/engines/chewy/rooms/room01.cpp
index 3bf05dc14f1..23131a7e3ea 100644
--- a/engines/chewy/rooms/room01.cpp
+++ b/engines/chewy/rooms/room01.cpp
@@ -33,8 +33,6 @@ void Room1::gottenCard() {
 	startSetAILWait(4, 1, ANI_FRONT);
 	_G(spieler)._personHide[P_CHEWY] = false;
 	_G(atds)->delControlBit(7, ATS_COUNT_BIT, ATS_DATA);
-	int16 tmp;
-	_G(atds)->ats_get_txt(7, TXT_MARK_LOOK, &tmp, ATS_DATA);
 }
 
 void Room1::gedAction(int index) {


Commit: fd63dee23a420cb075f6f93196d763b6f03c0ded
    https://github.com/scummvm/scummvm/commit/fd63dee23a420cb075f6f93196d763b6f03c0ded
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:21+02:00

Commit Message:
CHEWY: More work on the new text resource handling code

Changed paths:
    engines/chewy/atds.cpp
    engines/chewy/atds.h
    engines/chewy/debugger.cpp
    engines/chewy/debugger.h
    engines/chewy/text.cpp
    engines/chewy/text.h


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 46889450650..1279936ae7e 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -27,6 +27,7 @@
 #include "chewy/globals.h"
 #include "chewy/main.h"
 #include "chewy/sound.h"
+#include "chewy/text.h"
 
 namespace Chewy {
 
@@ -108,6 +109,7 @@ Atdsys::Atdsys() {
 	_invUseMem = nullptr;
 
 	_dialogResource = new DialogResource(ADS_TXT_STEUER);
+	_text = new Text();
 
 	for (int i = 0; i < 4; ++i)
 		_ats_st_header[i] = nullptr;
@@ -1367,4 +1369,13 @@ void Atdsys::loadAtdsStream(Common::SeekableReadStream* stream) {
 uint32 Atdsys::getAtdsStreamSize() const {
 	return _dialogResource->getStreamSize();
 }
+
+Common::StringArray Atdsys::getTextArray(uint dialogNum, uint entryNum) {
+	return _text->getTextArray(dialogNum, entryNum);
+}
+
+Common::String Atdsys::getTextEntry(uint dialogNum, uint entryNum) {
+	return _text->getTextEntry(dialogNum, entryNum);
+}
+
 } // namespace Chewy
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index 2c315d19931..7ffa1c0db11 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -22,6 +22,8 @@
 #ifndef CHEWY_ATDS_H
 #define CHEWY_ATDS_H
 
+#include "common/str.h"
+#include "common/str-array.h"
 #include "chewy/resource.h"
 
 namespace Chewy {
@@ -91,6 +93,7 @@ enum DisplayMode {
 #define ADS_RESTART_BIT 4
 
 struct KbdMouseInfo;
+class Text;
 
 struct AdsDiaHeaders {
 	int16 _nr;
@@ -125,6 +128,7 @@ struct AadInfo {
 	void load(Common::SeekableReadStream *src);
 	static constexpr int SIZE() { return 6; }
 };
+
 class AadInfoArray : public Common::Array<AadInfo> {
 public:
 	void load(const void *data, size_t count);
@@ -309,6 +313,9 @@ public:
 	void loadAtdsStream(Common::SeekableReadStream *stream);
 	uint32 getAtdsStreamSize() const;
 
+	Common::StringArray getTextArray(uint dialogNum, uint entryNum);
+	Common::String getTextEntry(uint dialogNum, uint entryNum);
+
 private:
 	int16 get_delay(int16 txt_len);
 	void initItemUseWith();
@@ -354,6 +361,7 @@ private:
 	int16 _mousePush = 0;
 	int _printDelayCount1 = 0;
 	DialogResource *_dialogResource;
+	Text *_text;
 
 	Common::HashMap<uint32, uint16> _itemUseWithDesc;
 };
diff --git a/engines/chewy/debugger.cpp b/engines/chewy/debugger.cpp
index 1dc0aeb83fb..46cada5181a 100644
--- a/engines/chewy/debugger.cpp
+++ b/engines/chewy/debugger.cpp
@@ -49,6 +49,7 @@ Debugger::Debugger() : GUI::Debugger() {
 	registerCmd("item", WRAP_METHOD(Debugger, Cmd_Item));
 	registerCmd("video", WRAP_METHOD(Debugger, Cmd_PlayVideo));
 	registerCmd("walk", WRAP_METHOD(Debugger, Cmd_WalkAreas));
+	registerCmd("text", WRAP_METHOD(Debugger, Cmd_Text));
 }
 
 Debugger::~Debugger() {
@@ -99,4 +100,19 @@ bool Debugger::Cmd_WalkAreas(int argc, const char **argv) {
 	return false;
 }
 
+bool Debugger::Cmd_Text(int argc, const char **argv) {
+	if (argc < 3) {
+		debugPrintf("Usage: text <chunk> <entry>\n");
+		return true;
+	}
+
+	int chunk = atoi(argv[1]);
+	int entry = atoi(argv[2]);
+	Common::StringArray text = _G(atds)->getTextArray(chunk, entry);
+	for (int i = 0; i < text.size(); i++) {
+		debugPrintf("%d: %s\n", i, text[i].c_str());
+	}
+	return true;
+}
+
 } // namespace Chewy
diff --git a/engines/chewy/debugger.h b/engines/chewy/debugger.h
index e4a13c3f5ff..bb16d7d5565 100644
--- a/engines/chewy/debugger.h
+++ b/engines/chewy/debugger.h
@@ -32,6 +32,7 @@ protected:
 	bool Cmd_Item(int argc, const char **argv);
 	bool Cmd_PlayVideo(int argc, const char **argv);
 	bool Cmd_WalkAreas(int argc, const char **argv);
+	bool Cmd_Text(int argc, const char **argv);
 
 public:
 	Debugger();
diff --git a/engines/chewy/text.cpp b/engines/chewy/text.cpp
index 111c5b7c04b..7b80ee51230 100644
--- a/engines/chewy/text.cpp
+++ b/engines/chewy/text.cpp
@@ -31,13 +31,13 @@ Text::Text() : Resource("atds.tap") {
 Text::~Text() {
 }
 
-TextEntryList *Text::getDialog(uint dialogNum, uint entryNum) {
-	if (dialogNum >= kADSTextMax)
-		error("getDialog(): Invalid entry number requested, %d (max %d)", dialogNum, kADSTextMax - 1);
+TextEntryList *Text::getDialog(uint chunk, uint entry) {
+	if (chunk >= kADSTextMax)
+		error("getDialog(): Invalid entry number requested, %d (max %d)", chunk, kADSTextMax - 1);
 
 	TextEntryList *l = new TextEntryList();
 
-	byte *data = getChunkData(dialogNum);
+	byte *data = getChunkData(chunk);
 	byte *ptr = data;
 
 	ptr += 2;  // entry number
@@ -46,7 +46,7 @@ TextEntryList *Text::getDialog(uint dialogNum, uint entryNum) {
 	ptr += 2;  // cursor number
 	ptr += 13; // misc data
 
-	for (uint i = 0; i <= entryNum; i++) {
+	for (uint i = 0; i <= entry; i++) {
 		do {
 			TextEntry curDialog;
 			ptr++; // current entry
@@ -63,7 +63,7 @@ TextEntryList *Text::getDialog(uint dialogNum, uint entryNum) {
 				}
 			} while (*ptr != kEndText);
 
-			if (i == entryNum)
+			if (i == entry)
 				l->push_back(curDialog);
 
 		} while (*(ptr + 1) != kEndEntry);
@@ -79,39 +79,38 @@ TextEntryList *Text::getDialog(uint dialogNum, uint entryNum) {
 	return l;
 }
 
-TextEntry *Text::getText(uint dialogNum, uint entryNum) {
-	if (dialogNum < kADSTextMax)
-		error("getText(): Invalid entry number requested, %d (min %d)", dialogNum, kADSTextMax);
+TextEntry *Text::getText(uint chunk, uint entry) {
+	if (chunk < kADSTextMax)
+		error("getText(): Invalid entry number requested, %d (min %d)", chunk, kADSTextMax);
 
 	TextEntry *d = new TextEntry();
-	bool isText = (dialogNum >= kADSTextMax && dialogNum < kADSTextMax + kATSTextMax);
-	bool isAutoDialog = (dialogNum >= kADSTextMax + kATSTextMax && dialogNum < kADSTextMax + kATSTextMax + kAADTextMax);
+	bool isText = (chunk >= kADSTextMax && chunk < kADSTextMax + kATSTextMax);
+	bool isAutoDialog = (chunk >= kADSTextMax + kATSTextMax && chunk < kADSTextMax + kATSTextMax + kAADTextMax);
 
-	byte *data = getChunkData(dialogNum);
+	byte *data = getChunkData(chunk);
 	byte *ptr = data;
 
 	if (isAutoDialog)
 		ptr += 3;
 
-	for (uint i = 0; i <= entryNum; i++) {
+	for (uint i = 0; i <= entry; i++) {
 		ptr += 13;
 		d->_speechId = READ_LE_UINT16(ptr) - VOICE_OFFSET;
 		ptr += 2;
 
 		do {
-			if (i == entryNum)
+			if (i == entry)
 				d->_text += *ptr++;
 			else
 				ptr++;
 
 			if (*ptr == 0 && *(ptr + 1) != kEndText) {
-				// TODO: Split lines
-				*ptr = ' ';
+				*ptr = '|';
 			}
 		} while (*ptr);
 
 		if (*(ptr + 1) != kEndText || *(ptr + 2) != kEndChunk) {
-			warning("Invalid text resource - %d, %d", dialogNum, entryNum);
+			warning("Invalid text resource - %d, %d", chunk, entry);
 
 			delete[] data;
 			delete d;
@@ -124,7 +123,7 @@ TextEntry *Text::getText(uint dialogNum, uint entryNum) {
 		if (isAutoDialog)
 			ptr += 3;
 
-		if (i == entryNum) {
+		if (i == entry) {
 			// Found
 			delete[] data;
 			return d;
@@ -138,6 +137,29 @@ TextEntry *Text::getText(uint dialogNum, uint entryNum) {
 	return nullptr;
 }
 
+Common::StringArray Text::getTextArray(uint chunk, uint entry) {
+	TextEntry *textData = getText(chunk, entry);
+	Common::StringArray res;
+	Common::String txt = textData ? textData->_text : "";
+	char *text = new char[txt.size() + 1];
+	Common::strlcpy(text, txt.c_str(), txt.size() + 1);
+	char *line = strtok(text, "|");
+
+	while (line) {
+		res.push_back(line);
+		line = strtok(nullptr, "|");
+	}
+
+	delete[] text;
+	delete textData;
+
+	return res;
+}
+
+Common::String Text::getTextEntry(uint chunk, uint entry) {
+	Common::StringArray res = getTextArray(chunk, entry);
+	return res[0];
+}
 
 void Text::crypt(char *txt, uint32 size) {
 	uint8 *sp = (uint8 *)txt;
@@ -147,10 +169,10 @@ void Text::crypt(char *txt, uint32 size) {
 	}
 }
 
-char *Text::strPos(char *txtAdr, int16 pos) {
-	char *ptr = txtAdr;
+const char *Text::strPos(const char *txtAdr, int16 pos) {
+	const char *ptr = txtAdr;
 	for (int16 i = 0; i < pos;) {
-		if (*ptr == 0)
+		if (*ptr == 0 || *ptr == '|')
 			++i;
 		++ptr;
 	}
diff --git a/engines/chewy/text.h b/engines/chewy/text.h
index f650fb9715f..78e6d3cb9ad 100644
--- a/engines/chewy/text.h
+++ b/engines/chewy/text.h
@@ -82,10 +82,12 @@ public:
 	* - inventory text (INV) - 700 - 799
 	* - use text (USE) - 800 - 899
 	*/
-	TextEntry *getText(uint dialogNum, uint entryNum);
+	TextEntry *getText(uint chunk, uint entry);
+	Common::StringArray getTextArray(uint chunk, uint entry);
+	Common::String getTextEntry(uint chunk, uint entry);
 
 	void crypt(char *txt, uint32 size);
-	char *strPos(char *txtAdr, int16 pos);
+	const char *strPos(const char *txtAdr, int16 pos);
 };
 
 } // namespace Chewy


Commit: bdbd1918485147fb99e2bdf51107f25fab34cff2
    https://github.com/scummvm/scummvm/commit/bdbd1918485147fb99e2bdf51107f25fab34cff2
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:21+02:00

Commit Message:
CHEWY: Rework the text resource handling code in the cinematics screen

Changed paths:
    engines/chewy/dialogs/cinema.cpp
    engines/chewy/globals.h
    engines/chewy/main.cpp
    engines/chewy/r_event.cpp


diff --git a/engines/chewy/dialogs/cinema.cpp b/engines/chewy/dialogs/cinema.cpp
index 4840dd8e0ca..942d12bd37f 100644
--- a/engines/chewy/dialogs/cinema.cpp
+++ b/engines/chewy/dialogs/cinema.cpp
@@ -53,10 +53,11 @@ void Cinema::execute() {
 	bool flag = false;
 	int delay = 0;
 	Common::Array<int> cutscenes;
+	Common::String cutsceneName;
+
 	getCutscenes(cutscenes);
 
 	_G(fontMgr)->setFont(_G(font6));
-	_G(atds)->load_atds(98, ATS_DATA);
 
 	_G(room)->load_tgp(4, &_G(room_blk), 1, 0, GBOOK);
 	showCur();
@@ -69,19 +70,19 @@ void Cinema::execute() {
 
 		if (!cutscenes.empty()) {
 			// Render cut-scene list
+
 			for (int i = 0; i < CINEMA_LINES; ++i) {
-				char *csName = _G(atds)->ats_get_txt(546 + i + topIndex,
-					0, &txt_anz, 1);
+				cutsceneName = _G(atds)->getTextEntry(98 + 500, i + topIndex + 1);
 				int yp = i * 10 + 68;
 
 				if (i == selected)
 					_G(out)->boxFill(37, yp, 308, yp + 10, 42);
-				_G(out)->printxy(40, yp, 14, 300, 0, csName);
+				_G(out)->printxy(40, yp, 14, 300, 0, cutsceneName.c_str());
 			}
 		} else {
 			// No cut-scene seen yet
-			char *none = _G(atds)->ats_get_txt(545, 0, &txt_anz, 1);
-			_G(out)->printxy(40, 68, 14, 300, _G(scr_width), none);
+			cutsceneName = _G(atds)->getTextEntry(98 + 500, 0);
+			_G(out)->printxy(40, 68, 14, 300, _G(scr_width), cutsceneName.c_str());
 		}
 
 		if (_G(minfo)._button == 1 && !flag) {
@@ -161,7 +162,6 @@ void Cinema::execute() {
 			_G(out)->cls();
 			_G(out)->setPointer(_G(screen0));
 			_G(fx)->blende1(_G(workptr), _G(screen0), _G(pal), 150, 0, 0);
-			print_rows(546 + topIndex);
 
 			flic_cut(CINEMA_FLICS[topIndex + selected]);
 			_G(fontMgr)->setFont(_G(font6));
diff --git a/engines/chewy/globals.h b/engines/chewy/globals.h
index 72973f6acec..9f536d3adc8 100644
--- a/engines/chewy/globals.h
+++ b/engines/chewy/globals.h
@@ -302,7 +302,7 @@ void evaluateObj(int16 testNr, int16 txt_nr);
 void swap_if_l(int16 *x1, int16 *x2);
 
 void printShadowed(int16 x, int16 y, int16 fgCol, int16 bgCol, int16 shadowFgCol,
-	int16 scrWidth, char *txtPtr);
+	int16 scrWidth, const char *txtPtr);
 
 bool autoMove(int16 movNr, int16 playerNum);
 void get_user_key(int16 mode);
@@ -407,8 +407,6 @@ void exit_room(int16 eib_nr);
 
 void flic_cut(int16 nr);
 
-void print_rows(int16 id);
-
 int16 sib_event_no_inv(int16 sib_nr);
 
 void sib_event_inv(int16 sib_nr);
diff --git a/engines/chewy/main.cpp b/engines/chewy/main.cpp
index ff00290a1a1..87f90b95463 100644
--- a/engines/chewy/main.cpp
+++ b/engines/chewy/main.cpp
@@ -1171,7 +1171,7 @@ void check_shad(int16 palIdx, int16 mode) {
 	}
 }
 
-void printShadowed(int16 x, int16 y, int16 fgCol, int16 bgCol, int16 shadowFgCol, int16 scrWidth, char *txtPtr) {
+void printShadowed(int16 x, int16 y, int16 fgCol, int16 bgCol, int16 shadowFgCol, int16 scrWidth, const char *txtPtr) {
 	_G(out)->printxy(x + 1, y + 1, shadowFgCol, bgCol, scrWidth, txtPtr);
 	_G(out)->printxy(x, y, fgCol, bgCol, scrWidth, txtPtr);
 }
@@ -1427,6 +1427,8 @@ int16 calcMouseText(int16 x, int16 y, int16 mode) {
 					int16 anz;
 					char *str_ = _G(atds)->ats_get_txt(txtNr, TXT_MARK_NAME, &anz, ATS_DATA);
 					if (str_ != 0) {
+						//const uint8 roomNr = _G(room)->_roomInfo->_roomNr;
+						//Common::StringArray s = _G(atds)->getTextArray(roomNr + 500, txtNr);
 						ret = txtNr;
 						_G(fontMgr)->setFont(_G(font8));
 						calcTxtXy(&x, &y, str_, anz);
diff --git a/engines/chewy/r_event.cpp b/engines/chewy/r_event.cpp
index 7966689c1f5..e0901562463 100644
--- a/engines/chewy/r_event.cpp
+++ b/engines/chewy/r_event.cpp
@@ -775,20 +775,6 @@ void exit_room(int16 eib_nr) {
 	}
 }
 
-void print_rows(int16 id) {
-	_G(fontMgr)->setFont(_G(font8));
-	int16 txt_anz;
-	char *txtStr = _G(atds)->ats_get_txt(id, TXT_MARK_NAME, &txt_anz, ATS_DATA);
-	_G(out)->setPointer(nullptr);
-
-	for (int i = 0; i < txt_anz; ++i) {
-		char *s = _G(txt)->strPos(txtStr, i);
-		int16 len = (strlen(s) * _G(fontMgr)->getFont()->getDataWidth()) / 2;
-
-		_G(out)->printxy(160 - len, 50 + i * 10, 14, 300, 0, s);
-	}
-}
-
 static void playIntroSequence() {
 	const int16 introVideo[] = {
 		FCUT_135, FCUT_145, FCUT_142, FCUT_140, FCUT_145,


Commit: 743f0f7239707b0c614b81536c6cd0e352144f7c
    https://github.com/scummvm/scummvm/commit/743f0f7239707b0c614b81536c6cd0e352144f7c
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:21+02:00

Commit Message:
CHEWY: Use the new text resource handling code for item look texts

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


diff --git a/engines/chewy/dialogs/inventory.cpp b/engines/chewy/dialogs/inventory.cpp
index 7163f57d08f..6d99584c82d 100644
--- a/engines/chewy/dialogs/inventory.cpp
+++ b/engines/chewy/dialogs/inventory.cpp
@@ -382,36 +382,39 @@ void Inventory::menu() {
 }
 
 int16 Inventory::look(int16 invent_nr, int16 mode, int16 ats_nr) {
-	int16 txt_anz = 0;
+	int16 lineCount = 0;
 	int16 xoff = 0;
 	int16 yoff = 0;
-	int16 txt_zeilen = 0;
+	int16 visibleCount = 0;
+	Common::String itemName;
+	Common::StringArray itemDesc;
 	char *txt_adr = nullptr;
-	char *txt_name_adr = nullptr;
 	char c[2] = { 0 };
 	int16 ret = -1;
 	bool endLoop = false;
-	int16 txt_start = 0;
+	int16 startLine = 0;
 	bool mouseFl = true;
 
 	if (mode == INV_ATS_MODE) {
-		_G(atds)->load_atds(invent_nr, INV_ATS_DATA);
-		txt_name_adr = _G(atds)->ats_get_txt(invent_nr, TXT_MARK_NAME, &txt_anz, INV_ATS_DATA);
-		txt_adr = _G(atds)->ats_get_txt(invent_nr, TXT_MARK_LOOK, &txt_anz, INV_ATS_DATA);
-		xoff = strlen(txt_name_adr);
+		itemName = _G(atds)->getTextEntry(invent_nr + 700, TXT_MARK_NAME);
+		itemDesc = _G(atds)->getTextArray(invent_nr + 700, TXT_MARK_LOOK);
+		lineCount = itemDesc.size();
+		xoff = itemName.size();
 		xoff *= _G(font8)->getDataWidth();
 		xoff = (254 - xoff) / 2;
-		txt_zeilen = 2;
+		visibleCount = 2;
 		yoff = 10;
-
 	} else if (mode == INV_USE_ATS_MODE) {
-		txt_zeilen = 3;
+		visibleCount = 3;
 		yoff = 0;
 
+		//Common::StringArray tmp;
 		if (ats_nr >= 15000) {
-			txt_adr = _G(atds)->ats_get_txt(ats_nr - 15000, TXT_MARK_USE, &txt_anz, INV_USE_DEF);
+			txt_adr = _G(atds)->ats_get_txt(ats_nr - 15000, TXT_MARK_USE, &lineCount, INV_USE_DEF);
+			//tmp = _G(atds)->getText(ats_nr - 15000 + 800, 0);
 		} else {
-			txt_adr = _G(atds)->ats_get_txt(ats_nr, TXT_MARK_USE, &txt_anz, INV_USE_DATA);
+			txt_adr = _G(atds)->ats_get_txt(ats_nr, TXT_MARK_USE, &lineCount, INV_USE_DATA);
+			//tmp = _G(atds)->getText(ats_nr + 800, 0);
 		}
 		if (!txt_adr) {
 			endLoop = true;
@@ -477,13 +480,13 @@ int16 Inventory::look(int16 invent_nr, int16 mode, int16 ats_nr) {
 			break;
 
 		case Common::KEYCODE_UP:
-			if (txt_start > 0)
-				--txt_start;
+			if (startLine > 0)
+				--startLine;
 			break;
 
 		case Common::KEYCODE_DOWN:
-			if (txt_start < txt_anz - txt_zeilen)
-				++txt_start;
+			if (startLine < lineCount - visibleCount)
+				++startLine;
 			break;
 
 		default:
@@ -493,16 +496,17 @@ int16 Inventory::look(int16 invent_nr, int16 mode, int16 ats_nr) {
 		g_events->_kbInfo._scanCode = Common::KEYCODE_INVALID;
 		setupScreen(NO_SETUP);
 		plot_menu();
-		_G(fontMgr)->setFont(_G(font8));
 
-		if (mode == INV_ATS_MODE)
+		if (mode == INV_ATS_MODE) {
+			_G(fontMgr)->setFont(_G(font8));
 			_G(out)->printxy(WIN_LOOK_X + xoff, WIN_LOOK_Y, 255, 300,
-				_G(scr_width), txt_name_adr);
+							 _G(scr_width), itemName.c_str());
+		}
 
 		_G(fontMgr)->setFont(_G(font6));
 
-		if (txt_anz > txt_zeilen) {
-			if (txt_start > 0) {
+		if (lineCount > visibleCount) {
+			if (startLine > 0) {
 				if (rect == 6)
 					_G(out)->boxFill(WIN_INF_X + 262, WIN_INF_Y + 136, WIN_INF_X + 272,
 						WIN_INF_Y + 136 + 14, 41);
@@ -511,7 +515,7 @@ int16 Inventory::look(int16 invent_nr, int16 mode, int16 ats_nr) {
 					_G(scr_width), c);
 			}
 
-			if (txt_start < txt_anz - txt_zeilen) {
+			if (startLine < lineCount - visibleCount) {
 				if (rect == 7)
 					_G(out)->boxFill(WIN_INF_X + 262, WIN_INF_Y + 156, WIN_INF_X + 272,
 						WIN_INF_Y + 156 + 14, 41);
@@ -521,10 +525,19 @@ int16 Inventory::look(int16 invent_nr, int16 mode, int16 ats_nr) {
 		}
 
 		int16 k = 0;
-		for (int16 i = txt_start; i < txt_anz && i < txt_start + txt_zeilen; i++) {
-			_G(out)->printxy(WIN_LOOK_X, WIN_LOOK_Y + yoff + k * 10, 14, 300,
-				_G(scr_width), _G(txt)->strPos(txt_adr, i));
-			++k;
+
+		if (mode == INV_ATS_MODE) {
+			for (int16 i = startLine; i < lineCount && i < startLine + visibleCount; i++) {
+				_G(out)->printxy(WIN_LOOK_X, WIN_LOOK_Y + yoff + k * 10, 14, 300,
+								 _G(scr_width), itemDesc[i].c_str());
+				++k;
+			}
+		} else {
+			for (int16 i = startLine; i < lineCount && i < startLine + visibleCount; i++) {
+				_G(out)->printxy(WIN_LOOK_X, WIN_LOOK_Y + yoff + k * 10, 14, 300,
+								 _G(scr_width), _G(txt)->strPos(txt_adr, i));
+				++k;
+			}
 		}
 
 		_G(cur)->plot_cur();


Commit: caa46431d08f955e3113f5986e324e7b85ce4a2e
    https://github.com/scummvm/scummvm/commit/caa46431d08f955e3113f5986e324e7b85ce4a2e
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:21+02:00

Commit Message:
CHEWY: Add enums, remove dead code

Changed paths:
    engines/chewy/globals.h
    engines/chewy/r_event.cpp
    engines/chewy/t_event.cpp


diff --git a/engines/chewy/globals.h b/engines/chewy/globals.h
index 9f536d3adc8..9e92a5ba1a9 100644
--- a/engines/chewy/globals.h
+++ b/engines/chewy/globals.h
@@ -99,7 +99,6 @@ public:
 	bool _cur_display = false;
 	int16 _mouseLeftClick = 0;
 	Common::String _calc_inv_text_str1, _calc_inv_text_str2;
-	bool _calc_inv_text_set = false;
 	bool _stopAutoMove[3] = { false };
 	bool _e_streifen = false;
 	int16 _r45_delay = 0;
diff --git a/engines/chewy/r_event.cpp b/engines/chewy/r_event.cpp
index e0901562463..f66b548f0ff 100644
--- a/engines/chewy/r_event.cpp
+++ b/engines/chewy/r_event.cpp
@@ -1412,7 +1412,7 @@ void sib_event_inv(int16 sib_nr) {
 
 		if (_G(spieler).R18CartTerminal) {
 			_G(spieler).R18CartSave = true;
-			_G(atds)->set_ats_str(26, 1, INV_ATS_DATA);
+			_G(atds)->set_ats_str(CARTRIDGE_INV, 1, INV_ATS_DATA);
 			startAadWait(120);
 		} else {
 			startAadWait(121);
diff --git a/engines/chewy/t_event.cpp b/engines/chewy/t_event.cpp
index e4d3615fb02..c785238ae65 100644
--- a/engines/chewy/t_event.cpp
+++ b/engines/chewy/t_event.cpp
@@ -2257,13 +2257,13 @@ void calc_inv_use_txt(int16 test_nr) {
 		start_spz(CH_TALK6, 255, false, P_CHEWY);
 		startAadWait(_G(spieler)._personRoomNr[P_CHEWY] + 350);
 		_G(flags).InventMenu = true;
-		_G(atds)->set_ats_str(88, 1, INV_ATS_DATA);
+		_G(atds)->set_ats_str(ARTE_INV, 1, INV_ATS_DATA);
 		break;
 
 	case 88:
 		_G(spieler).flags26_10 = true;
 		startAadWait(350);
-		_G(atds)->set_ats_str(88, 1, INV_ATS_DATA);
+		_G(atds)->set_ats_str(ARTE_INV, 1, INV_ATS_DATA);
 		break;
 
 	case 102:
@@ -2312,7 +2312,6 @@ static void calc_inv_get_text(int16 cur_inv, int16 test_nr) {
 
 	s = _G(atds)->ats_get_txt(test_nr, TXT_MARK_NAME, &txt_anz, 6);
 	_G(calc_inv_text_str2) += s;
-	_G(calc_inv_text_set) = true;
 }
 
 bool calc_inv_no_use(int16 test_nr, int16 mode) {


Commit: 364c687907db1d13bc7ca0623d31bc67b7037e73
    https://github.com/scummvm/scummvm/commit/364c687907db1d13bc7ca0623d31bc67b7037e73
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:22+02:00

Commit Message:
CHEWY: Use the new text loading code in more places

Changed paths:
    engines/chewy/t_event.cpp


diff --git a/engines/chewy/t_event.cpp b/engines/chewy/t_event.cpp
index c785238ae65..600890f9a01 100644
--- a/engines/chewy/t_event.cpp
+++ b/engines/chewy/t_event.cpp
@@ -2302,16 +2302,12 @@ static void calc_inv_get_text(int16 cur_inv, int16 test_nr) {
 
 	_G(atds)->load_atds(cur_inv, INV_ATS_DATA);
 
-	s = _G(atds)->ats_get_txt(cur_inv, TXT_MARK_NAME, &txt_anz, 6);
-	_G(calc_inv_text_str1) += s;
+	_G(calc_inv_text_str1) += _G(atds)->getTextEntry(cur_inv + 700, TXT_MARK_NAME);
 
 	s = _G(atds)->ats_get_txt(32, TXT_MARK_USE, &txt_anz, 16);
 	_G(calc_inv_text_str2) = Common::String::format("%s ", s);
 
-	_G(atds)->load_atds(test_nr, INV_ATS_DATA);
-
-	s = _G(atds)->ats_get_txt(test_nr, TXT_MARK_NAME, &txt_anz, 6);
-	_G(calc_inv_text_str2) += s;
+	_G(calc_inv_text_str2) += _G(atds)->getTextEntry(test_nr + 700, TXT_MARK_NAME);
 }
 
 bool calc_inv_no_use(int16 test_nr, int16 mode) {


Commit: 747ef8cb7d8911ac5bf8133a2395801de4c033a4
    https://github.com/scummvm/scummvm/commit/747ef8cb7d8911ac5bf8133a2395801de4c033a4
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:22+02:00

Commit Message:
CHEWY: Remove superfluous method init_ats_mode()

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 1279936ae7e..04aef237572 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -111,9 +111,6 @@ Atdsys::Atdsys() {
 	_dialogResource = new DialogResource(ADS_TXT_STEUER);
 	_text = new Text();
 
-	for (int i = 0; i < 4; ++i)
-		_ats_st_header[i] = nullptr;
-
 	_adsnb._blkNr = 0;
 	_adsnb._endNr = 0;
 	_adsStackPtr = 0;
@@ -463,48 +460,25 @@ void Atdsys::crypt(char *txt, uint32 size) {
 	}
 }
 
-void Atdsys::init_ats_mode(int16 mode, uint8 *atsHeader) {
-	switch (mode) {
-	case ATS_DATA:
-		_ats_st_header[0] = atsHeader;
-		break;
-
-	case INV_USE_DATA:
-		_ats_st_header[1] = atsHeader;
-		break;
-
-	case INV_USE_DEF:
-		_ats_st_header[2] = atsHeader;
-		break;
-
-	case INV_ATS_DATA:
-		_ats_st_header[3] = atsHeader;
-		break;
-
-	default:
-		break;
-	}
-}
-
 void Atdsys::set_ats_mem(int16 mode) {
 	switch (mode) {
 	case ATS_DATA:
-		_ats_sheader = _ats_st_header[0];
+		_ats_sheader = _G(spieler).Ats;
 		_atsMem = _atdsMem[mode];
 		break;
 
 	case INV_USE_DATA:
-		_ats_sheader = _ats_st_header[1];
+		_ats_sheader = _G(spieler).InvUse;
 		_atsMem = _atdsMem[mode];
 		break;
 
 	case INV_USE_DEF:
-		_ats_sheader = _ats_st_header[2];
+		_ats_sheader = _G(spieler).InvUseDef;
 		_atsMem = _invUseMem;
 		break;
 
 	case INV_ATS_DATA:
-		_ats_sheader = _ats_st_header[3];
+		_ats_sheader = _G(spieler).InvAts;
 		_atsMem = _atdsMem[mode];
 		break;
 
diff --git a/engines/chewy/atds.h b/engines/chewy/atds.h
index 7ffa1c0db11..f7d8b114fa3 100644
--- a/engines/chewy/atds.h
+++ b/engines/chewy/atds.h
@@ -265,7 +265,6 @@ public:
 	void open_handle(const char *fname, int16 mode);
 	void close_handle(int16 mode);
 	void crypt(char *txt, uint32 size);
-	void init_ats_mode(int16 mode, uint8 *atsHeader);
 	DisplayMode start_ats(int16 txtNr, int16 txtMode, int16 color, int16 mode, int16 *vocNr);
 	void stop_ats();
 	DisplayMode &ats_get_status();
@@ -325,7 +324,6 @@ private:
 	int16 _atdsPoolOff[MAX_HANDLE] = { 0 };
 	char *_atsMem = nullptr;
 	uint8 *_ats_sheader = nullptr;
-	uint8 *_ats_st_header[4];
 	char *_atds_id_ptr = nullptr;
 	AadVar _aadv;
 	AtsVar _atsv;
diff --git a/engines/chewy/inits.cpp b/engines/chewy/inits.cpp
index dd88801ccb6..7d1badaa0c1 100644
--- a/engines/chewy/inits.cpp
+++ b/engines/chewy/inits.cpp
@@ -179,14 +179,10 @@ void init_atds() {
 	// 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)->init_ats_mode(ATS_DATA, _G(spieler).Ats);
 	_G(atds)->set_handle(ATDS_TXT, INV_ATS_DATA, handle, INV_TAP_OFF, INV_TAP_MAX);
-	_G(atds)->init_ats_mode(INV_ATS_DATA, _G(spieler).InvAts);
 	_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)->init_ats_mode(INV_USE_DATA, _G(spieler).InvUse);
-	_G(atds)->init_ats_mode(INV_USE_DEF, _G(spieler).InvUseDef);
 	_G(spieler).AadSilent = 10;
 	_G(spieler).DelaySpeed = 5;
 	_G(spieler_vector)[P_CHEWY].Delay = _G(spieler).DelaySpeed;


Commit: 9c7303f41f905917cce06d7ba5a7aac7bddbffc4
    https://github.com/scummvm/scummvm/commit/9c7303f41f905917cce06d7ba5a7aac7bddbffc4
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:22+02:00

Commit Message:
CHEWY: Clean up file name defines

Changed paths:
    engines/chewy/defines.h
    engines/chewy/main.cpp
    engines/chewy/room.cpp


diff --git a/engines/chewy/defines.h b/engines/chewy/defines.h
index 1085c8e6cb7..d59d0dd49fb 100644
--- a/engines/chewy/defines.h
+++ b/engines/chewy/defines.h
@@ -142,6 +142,11 @@ enum SetupScreenMode {
 #define DETAIL_OBJ 5
 #define SPIELER_OBJ 6
 
+#define EPISODE1_TGP 0
+#define GBOOK_TGP 1
+#define NOTEBOOK_START 2
+#define DIARY_START 3
+
 #define CURSOR_TAF "misc/cursor.taf"
 #define INVENTORY_TAF "misc/inventar.taf"
 #define INVENTORY_IIB "misc/inventar.iib"
@@ -156,17 +161,12 @@ enum SetupScreenMode {
 #define CHEWY_HELM_TAF "misc/ch_helm.taf"
 #define MENUTAF "misc/menu.taf"
 #define CH_SPZ_FILE "misc/ch_spez.taf"
-#define OPTION_TAF "MISC/OPTION.TAF"
+#define OPTION_TAF "misc/option.taf"
 
 #define DETAILTEST "room/test.rdi"
-#define GBOOK "BACK/GBOOK.TGP"
+#define GBOOK "back/gbook.tgp"
 
-#define EPISODE1_TGP 0
-#define GBOOK_TGP 1
 #define EPISODE1 "back/episode1.tgp"
-#define NOTEBOOK_START 2
-#define DIARY_START 3
-
 #define EPISODE1_GEP "back/episode1.gep"
 
 #define FONT6x8 "txt/6x8.tff"
diff --git a/engines/chewy/main.cpp b/engines/chewy/main.cpp
index 87f90b95463..0978c573bf2 100644
--- a/engines/chewy/main.cpp
+++ b/engines/chewy/main.cpp
@@ -44,8 +44,8 @@ static const int16 invent_display[4][2] = {
 void game_main() {
 	_G(fontMgr) = new FontMgr();
 
-	_G(font8) = new ChewyFont("TXT/8X8.TFF");
-	_G(font6) = new ChewyFont("TXT/6X8.TFF");
+	_G(font8) = new ChewyFont(FONT8x8);
+	_G(font6) = new ChewyFont(FONT6x8);
 	_G(font6)->setDisplaySize(_G(font6)->getDataWidth() - 2, _G(font6)->getDataHeight());
 	_G(font8)->setDeltaX(10);
 	_G(fontMgr)->setFont(_G(font8)); // set default font
diff --git a/engines/chewy/room.cpp b/engines/chewy/room.cpp
index 5265a6fa712..91bbd74407e 100644
--- a/engines/chewy/room.cpp
+++ b/engines/chewy/room.cpp
@@ -197,7 +197,7 @@ void Room::loadRoom(RaumBlk *Rb, int16 room_nr, Spieler *player) {
 		Rb->DetKorrekt = Rb->Fti->_correction;
 	}
 	_G(obj)->calc_all_static_detail();
-	load_tgp(_roomInfo->_imageNr, Rb, EPISODE1_TGP, GED_LOAD, "back/episode1.tgp");
+	load_tgp(_roomInfo->_imageNr, Rb, EPISODE1_TGP, GED_LOAD, EPISODE1);
 	set_pal(_ablagePal[Rb->AkAblage], Rb->LowPalMem);
 	calc_invent(Rb, player);
 


Commit: 475ac22d587cc3f6c2096407894f78176c804602
    https://github.com/scummvm/scummvm/commit/475ac22d587cc3f6c2096407894f78176c804602
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:23+02:00

Commit Message:
CHEWY: Renaming

Changed paths:
    engines/chewy/globals.h
    engines/chewy/object.cpp
    engines/chewy/object.h
    engines/chewy/room.cpp
    engines/chewy/room.h
    engines/chewy/types.cpp
    engines/chewy/types.h


diff --git a/engines/chewy/globals.h b/engines/chewy/globals.h
index 9e92a5ba1a9..18c1e615291 100644
--- a/engines/chewy/globals.h
+++ b/engines/chewy/globals.h
@@ -84,7 +84,7 @@ public:
 	int16 _timer_nr[MAX_TIMER_OBJ] = { 0 };
 public:
 	CurrentScreen _currentScreen;
-	Spieler _spieler;
+	GameState _spieler;
 
 	int16 _pfeil_ani = 0;
 	int16 _pfeil_delay = 0;
diff --git a/engines/chewy/object.cpp b/engines/chewy/object.cpp
index 342f43f74e5..57d56b49477 100644
--- a/engines/chewy/object.cpp
+++ b/engines/chewy/object.cpp
@@ -56,7 +56,7 @@ static const int16 SIB_ZUSTAND_TBL[] = {
 	32000
 };
 
-Object::Object(Spieler *sp) {
+Object::Object(GameState *sp) {
 	_maxInventoryObj = 0;
 	_maxStaticInventory = 0;
 	_maxExit = 0;
diff --git a/engines/chewy/object.h b/engines/chewy/object.h
index 226308a35d8..2375fcbfc48 100644
--- a/engines/chewy/object.h
+++ b/engines/chewy/object.h
@@ -36,7 +36,7 @@ namespace Chewy {
 
 class Object {
 public:
-	Object(Spieler *sp);
+	Object(GameState *sp);
 	~Object();
 
 	short load(const char *filename, RoomMovObject *rmo);
@@ -76,7 +76,7 @@ private:
 	int16 _maxInventoryObj;
 	int16 _maxStaticInventory;
 	int16 _maxExit;
-	Spieler *_player;
+	GameState *_player;
 	RoomMovObject *_rmo;
 	RoomStaticInventory *_rsi;
 	RoomExit *_roomExit;
diff --git a/engines/chewy/room.cpp b/engines/chewy/room.cpp
index 91bbd74407e..b9f4e9c20dc 100644
--- a/engines/chewy/room.cpp
+++ b/engines/chewy/room.cpp
@@ -179,7 +179,7 @@ Common::Stream *Room::open_handle(const char *fname1, int16 mode) {
 	return _roomHandle[mode];
 }
 
-void Room::loadRoom(RaumBlk *Rb, int16 room_nr, Spieler *player) {
+void Room::loadRoom(RaumBlk *Rb, int16 room_nr, GameState *player) {
 	clear_prog_ani();
 	_G(det)->load_rdi(Rb->DetFile, room_nr);
 
@@ -276,7 +276,7 @@ void Room::set_ak_pal(RaumBlk *Rb) {
 	set_pal(_ablagePal[Rb->AkAblage], Rb->LowPalMem);
 }
 
-void Room::calc_invent(RaumBlk *Rb, Spieler *player) {
+void Room::calc_invent(RaumBlk *Rb, GameState *player) {
 	byte *tmp_inv_spr[MAX_MOV_OBJ];
 
 	_G(obj)->sort();
diff --git a/engines/chewy/room.h b/engines/chewy/room.h
index 94d822a6900..34b44c15870 100644
--- a/engines/chewy/room.h
+++ b/engines/chewy/room.h
@@ -85,7 +85,7 @@ public:
 	~Room();
 
 	Common::Stream *open_handle(const char *fname, int16 mode);
-	void loadRoom(RaumBlk *Rb, int16 room_nr, Spieler *player);
+	void loadRoom(RaumBlk *Rb, int16 room_nr, GameState *player);
 	int16 load_tgp(int16 nr, RaumBlk *Rb, int16 tgp_idx, int16 mode, const char *fileName);
 	byte *get_ablage(int16 nr);
 	byte **get_ablage();
@@ -98,7 +98,7 @@ public:
 	void set_zoom(int16 zoom);
 	void set_pal(const byte *src_pal, byte *dest_pal);
 	void set_ak_pal(RaumBlk *Rb);
-	void calc_invent(RaumBlk *Rb, Spieler *player);
+	void calc_invent(RaumBlk *Rb, GameState *player);
 
 	RaumTimer _roomTimer;
 	RoomInfo *_roomInfo;
diff --git a/engines/chewy/types.cpp b/engines/chewy/types.cpp
index 78e3fdea3db..17705a6eda8 100644
--- a/engines/chewy/types.cpp
+++ b/engines/chewy/types.cpp
@@ -25,13 +25,13 @@
 
 namespace Chewy {
 
-void SpielerFlags::clear() {
+void GameFlags::clear() {
 	// TODO: Not sure how to do this any better
-	Common::fill((byte *)this, (byte *)this + sizeof(SpielerFlags), 0);
+	Common::fill((byte *)this, (byte *)this + sizeof(GameFlags), 0);
 }
 
-void Spieler::clear() {
-	*this = Spieler();
+void GameState::clear() {
+	*this = GameState();
 	_flags = this;
 	_flags->clear();
 }
@@ -47,8 +47,8 @@ static void syncArray(Common::Serializer &s, int16 *arr, size_t count) {
 
 #define SPIELER_FLAGS_SIZE 38
 
-bool Spieler::synchronize(Common::Serializer &s) {
-	if (sizeof(SpielerFlags) != SPIELER_FLAGS_SIZE)
+bool GameState::synchronize(Common::Serializer &s) {
+	if (sizeof(GameFlags) != SPIELER_FLAGS_SIZE)
 		error("Invalid flags structure size");
 
 	// Sync the structure's bitflags
diff --git a/engines/chewy/types.h b/engines/chewy/types.h
index 35d3a8d93dd..591e0244d21 100644
--- a/engines/chewy/types.h
+++ b/engines/chewy/types.h
@@ -30,7 +30,7 @@ namespace Chewy {
 
 #include "common/pack-start.h"	// START STRUCT PACKING
 
-struct SpielerFlags {
+struct GameFlags {
 	bool R0SlimeUsed : 1;
 	bool R0PillowThrow : 1;
 	bool R0Monocle : 1;
@@ -370,13 +370,13 @@ struct SpielerFlags {
 	bool flags38_2 : 1;
 	uint8 flags38_unused : 6;
 
-	SpielerFlags() { clear(); }
+	GameFlags() { clear(); }
 	void clear();
 } PACKED_STRUCT;
 #include "common/pack-end.h"	// END STRUCT PACKING
 
-struct Spieler : public SpielerFlags {
-	Spieler() : SpielerFlags(), _flags(this) {
+struct GameState : public GameFlags {
+	GameState() : GameFlags(), _flags(this) {
 		_flags->clear();
 	}
 
@@ -390,7 +390,7 @@ struct Spieler : public SpielerFlags {
 	 */
 	bool synchronize(Common::Serializer &s);
 
-	SpielerFlags *_flags = nullptr;
+	GameFlags *_flags = nullptr;
 	uint8 Ats[ROOM_ATS_MAX * 3] = { 0 };
 	uint8 InvAts[MAX_MOV_OBJ * 3] = { 0 };
 	uint8 InvUse[INV_USE_ATS_MAX * 3] = { 0 };


Commit: b4ddf49c180b508fb1c6dabc56d9ab927aa5322b
    https://github.com/scummvm/scummvm/commit/b4ddf49c180b508fb1c6dabc56d9ab927aa5322b
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:23+02:00

Commit Message:
CHEWY: Rename spieler -> gameState

Changed paths:
    engines/chewy/atds.cpp
    engines/chewy/chewy.cpp
    engines/chewy/debugger.cpp
    engines/chewy/dialogs/credits.cpp
    engines/chewy/dialogs/files.cpp
    engines/chewy/dialogs/inventory.cpp
    engines/chewy/dialogs/main_menu.cpp
    engines/chewy/dialogs/options.cpp
    engines/chewy/globals.h
    engines/chewy/inits.cpp
    engines/chewy/m_event.cpp
    engines/chewy/main.cpp
    engines/chewy/menus.cpp
    engines/chewy/r_event.cpp
    engines/chewy/room.cpp
    engines/chewy/rooms/room00.cpp
    engines/chewy/rooms/room01.cpp
    engines/chewy/rooms/room02.cpp
    engines/chewy/rooms/room03.cpp
    engines/chewy/rooms/room04.cpp
    engines/chewy/rooms/room05.cpp
    engines/chewy/rooms/room06.cpp
    engines/chewy/rooms/room07.cpp
    engines/chewy/rooms/room08.cpp
    engines/chewy/rooms/room09.cpp
    engines/chewy/rooms/room10.cpp
    engines/chewy/rooms/room11.cpp
    engines/chewy/rooms/room12.cpp
    engines/chewy/rooms/room13.cpp
    engines/chewy/rooms/room14.cpp
    engines/chewy/rooms/room16.cpp
    engines/chewy/rooms/room17.cpp
    engines/chewy/rooms/room18.cpp
    engines/chewy/rooms/room19.cpp
    engines/chewy/rooms/room21.cpp
    engines/chewy/rooms/room22.cpp
    engines/chewy/rooms/room23.cpp
    engines/chewy/rooms/room24.cpp
    engines/chewy/rooms/room25.cpp
    engines/chewy/rooms/room26.cpp
    engines/chewy/rooms/room27.cpp
    engines/chewy/rooms/room28.cpp
    engines/chewy/rooms/room29.cpp
    engines/chewy/rooms/room31.cpp
    engines/chewy/rooms/room32.cpp
    engines/chewy/rooms/room33.cpp
    engines/chewy/rooms/room34.cpp
    engines/chewy/rooms/room35.cpp
    engines/chewy/rooms/room37.cpp
    engines/chewy/rooms/room39.cpp
    engines/chewy/rooms/room40.cpp
    engines/chewy/rooms/room41.cpp
    engines/chewy/rooms/room42.cpp
    engines/chewy/rooms/room43.cpp
    engines/chewy/rooms/room44.cpp
    engines/chewy/rooms/room45.cpp
    engines/chewy/rooms/room46.cpp
    engines/chewy/rooms/room47.cpp
    engines/chewy/rooms/room48.cpp
    engines/chewy/rooms/room49.cpp
    engines/chewy/rooms/room50.cpp
    engines/chewy/rooms/room51.cpp
    engines/chewy/rooms/room52.cpp
    engines/chewy/rooms/room53.cpp
    engines/chewy/rooms/room54.cpp
    engines/chewy/rooms/room55.cpp
    engines/chewy/rooms/room56.cpp
    engines/chewy/rooms/room57.cpp
    engines/chewy/rooms/room58.cpp
    engines/chewy/rooms/room59.cpp
    engines/chewy/rooms/room62.cpp
    engines/chewy/rooms/room63.cpp
    engines/chewy/rooms/room64.cpp
    engines/chewy/rooms/room65.cpp
    engines/chewy/rooms/room66.cpp
    engines/chewy/rooms/room67.cpp
    engines/chewy/rooms/room68.cpp
    engines/chewy/rooms/room69.cpp
    engines/chewy/rooms/room70.cpp
    engines/chewy/rooms/room71.cpp
    engines/chewy/rooms/room72.cpp
    engines/chewy/rooms/room73.cpp
    engines/chewy/rooms/room74.cpp
    engines/chewy/rooms/room75.cpp
    engines/chewy/rooms/room76.cpp
    engines/chewy/rooms/room77.cpp
    engines/chewy/rooms/room78.cpp
    engines/chewy/rooms/room79.cpp
    engines/chewy/rooms/room80.cpp
    engines/chewy/rooms/room81.cpp
    engines/chewy/rooms/room82.cpp
    engines/chewy/rooms/room84.cpp
    engines/chewy/rooms/room85.cpp
    engines/chewy/rooms/room86.cpp
    engines/chewy/rooms/room87.cpp
    engines/chewy/rooms/room88.cpp
    engines/chewy/rooms/room89.cpp
    engines/chewy/rooms/room90.cpp
    engines/chewy/rooms/room91.cpp
    engines/chewy/rooms/room92.cpp
    engines/chewy/rooms/room93.cpp
    engines/chewy/rooms/room94.cpp
    engines/chewy/rooms/room95.cpp
    engines/chewy/rooms/room96.cpp
    engines/chewy/rooms/room97.cpp
    engines/chewy/sound.cpp
    engines/chewy/sound_player.cpp
    engines/chewy/sprite.cpp
    engines/chewy/t_event.cpp
    engines/chewy/types.h
    engines/chewy/video/video_player.cpp


diff --git a/engines/chewy/atds.cpp b/engines/chewy/atds.cpp
index 04aef237572..b019d131307 100644
--- a/engines/chewy/atds.cpp
+++ b/engines/chewy/atds.cpp
@@ -463,22 +463,22 @@ void Atdsys::crypt(char *txt, uint32 size) {
 void Atdsys::set_ats_mem(int16 mode) {
 	switch (mode) {
 	case ATS_DATA:
-		_ats_sheader = _G(spieler).Ats;
+		_ats_sheader = _G(gameState).Ats;
 		_atsMem = _atdsMem[mode];
 		break;
 
 	case INV_USE_DATA:
-		_ats_sheader = _G(spieler).InvUse;
+		_ats_sheader = _G(gameState).InvUse;
 		_atsMem = _atdsMem[mode];
 		break;
 
 	case INV_USE_DEF:
-		_ats_sheader = _G(spieler).InvUseDef;
+		_ats_sheader = _G(gameState).InvUseDef;
 		_atsMem = _invUseMem;
 		break;
 
 	case INV_ATS_DATA:
-		_ats_sheader = _G(spieler).InvAts;
+		_ats_sheader = _G(gameState).InvAts;
 		_atsMem = _atdsMem[mode];
 		break;
 
@@ -972,7 +972,7 @@ void Atdsys::print_aad(int16 scrX, int16 scrY) {
 					g_engine->_sound->playSpeech(_atdsv._vocNr,
 						_atdsv._display == DISPLAY_VOC);
 					int16 vocx = _G(spieler_vector)[_aadv._strHeader->_akPerson].Xypos[0] -
-								 _G(spieler).scrollx + _G(spieler_mi)[_aadv._strHeader->_akPerson].HotX;
+								 _G(gameState).scrollx + _G(spieler_mi)[_aadv._strHeader->_akPerson].HotX;
 					g_engine->_sound->setSoundChannelBalance(0, getStereoPos(vocx));
 
 					if (_atdsv._display == DISPLAY_VOC) {
diff --git a/engines/chewy/chewy.cpp b/engines/chewy/chewy.cpp
index 61c512b113a..17ed69e6d80 100644
--- a/engines/chewy/chewy.cpp
+++ b/engines/chewy/chewy.cpp
@@ -94,7 +94,7 @@ Common::Error ChewyEngine::loadGameStream(Common::SeekableReadStream *stream) {
 	exit_room(-1);
 
 	Common::Serializer s(stream, nullptr);
-	if (!_G(spieler).synchronize(s)) {
+	if (!_G(gameState).synchronize(s)) {
 		error("loadGameStream error");
 		return Common::kReadingFailed;
 
@@ -106,24 +106,24 @@ Common::Error ChewyEngine::loadGameStream(Common::SeekableReadStream *stream) {
 
 		_G(flags).LoadGame = true;
 
-		if (_G(spieler).inv_cur && _G(spieler).AkInvent != -1) {
+		if (_G(gameState).inv_cur && _G(gameState).AkInvent != -1) {
 			_G(menu_item) = CUR_USE;
 		}
 
-		if (_G(spieler).AkInvent != -1)
-			_G(spieler).room_m_obj[_G(spieler).AkInvent].RoomNr = -1;
-		_G(room)->loadRoom(&_G(room_blk), _G(spieler)._personRoomNr[P_CHEWY], &_G(spieler));
-		load_chewy_taf(_G(spieler).ChewyAni);
+		if (_G(gameState).AkInvent != -1)
+			_G(gameState).room_m_obj[_G(gameState).AkInvent].RoomNr = -1;
+		_G(room)->loadRoom(&_G(room_blk), _G(gameState)._personRoomNr[P_CHEWY], &_G(gameState));
+		load_chewy_taf(_G(gameState).ChewyAni);
 
 		_G(fx_blend) = BLEND1;
-		_G(room)->calc_invent(&_G(room_blk), &_G(spieler));
+		_G(room)->calc_invent(&_G(room_blk), &_G(gameState));
 
-		if (_G(spieler).AkInvent != -1)
-			_G(spieler).room_m_obj[_G(spieler).AkInvent].RoomNr = 255;
+		if (_G(gameState).AkInvent != -1)
+			_G(gameState).room_m_obj[_G(gameState).AkInvent].RoomNr = 255;
 		_G(obj)->sort();
 
 		for (int i = 0; i < MAX_PERSON; i++) {
-			setPersonPos(_G(spieler).X[i], _G(spieler).Y[i], i, _G(spieler).Phase[i]);
+			setPersonPos(_G(gameState).X[i], _G(gameState).Y[i], i, _G(gameState).Phase[i]);
 		}
 
 		_G(auto_obj) = 0;
@@ -139,12 +139,12 @@ Common::Error ChewyEngine::saveGameStream(Common::WriteStream *stream, bool isAu
 	Common::Serializer s(nullptr, stream);
 
 	for (int i = 0; i < MAX_PERSON; i++) {
-		_G(spieler).X[i] = _G(spieler_vector)[i].Xypos[0];
-		_G(spieler).Y[i] = _G(spieler_vector)[i].Xypos[1];
-		_G(spieler).Phase[i] = _G(person_end_phase)[i];
+		_G(gameState).X[i] = _G(spieler_vector)[i].Xypos[0];
+		_G(gameState).Y[i] = _G(spieler_vector)[i].Xypos[1];
+		_G(gameState).Phase[i] = _G(person_end_phase)[i];
 	}
 
-	if (!_G(spieler).synchronize(s))
+	if (!_G(gameState).synchronize(s))
 		return Common::kWritingFailed;
 
 	stream->writeUint32BE(SCUMMVM_TAG);
diff --git a/engines/chewy/debugger.cpp b/engines/chewy/debugger.cpp
index 46cada5181a..144bc11438e 100644
--- a/engines/chewy/debugger.cpp
+++ b/engines/chewy/debugger.cpp
@@ -62,8 +62,8 @@ bool Debugger::Cmd_GotoRoom(int argc, const char **argv) {
 	} else {
 		int roomNum = strToInt(argv[1]);
 		exit_room(-1);
-		_G(spieler)._personRoomNr[P_CHEWY] = roomNum;
-		_G(room)->loadRoom(&_G(room_blk), roomNum, &_G(spieler));
+		_G(gameState)._personRoomNr[P_CHEWY] = roomNum;
+		_G(room)->loadRoom(&_G(room_blk), roomNum, &_G(gameState));
 		_G(fx_blend) = BLEND1;
 		enter_room(-1);
 
diff --git a/engines/chewy/dialogs/credits.cpp b/engines/chewy/dialogs/credits.cpp
index cbe9b64ea7c..dfb289a32c8 100644
--- a/engines/chewy/dialogs/credits.cpp
+++ b/engines/chewy/dialogs/credits.cpp
@@ -195,8 +195,8 @@ void Credits::execute() {
 	int fontCol;
 
 	_G(room)->load_tgp(5, &_G(room_blk), 1, 0, GBOOK);
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	_G(out)->setPointer(_G(screen0));
 	_G(room)->set_ak_pal(&_G(room_blk));
 	_G(fx)->blende1(_G(workptr), _G(screen0), _G(pal), 150, 0, 0);
@@ -212,7 +212,7 @@ void Credits::execute() {
 		_G(out)->raster_col(38 + i, color, color, color);
 	}
 
-	_G(spieler).DelaySpeed = 2;
+	_G(gameState).DelaySpeed = 2;
 
 	for (;;) {
 		if (_G(in)->getSwitchCode() == Common::KEYCODE_ESCAPE || SHOULD_QUIT)
@@ -221,11 +221,11 @@ void Credits::execute() {
 		// Display the starfield background
 		_G(out)->setPointer(_G(workptr));
 		_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage],
-			_G(spieler).scrollx, _G(spieler).scrolly);
+			_G(gameState).scrollx, _G(gameState).scrolly);
 
 		// Animate moving the background
-		if (++_G(spieler).scrollx >= 320)
-			_G(spieler).scrollx = 0;
+		if (++_G(gameState).scrollx >= 320)
+			_G(gameState).scrollx = 0;
 
 		if (_G(in)->getSwitchCode() == Common::KEYCODE_ESCAPE)
 			break;
diff --git a/engines/chewy/dialogs/files.cpp b/engines/chewy/dialogs/files.cpp
index 8f97a94c5e4..9c70e0851a4 100644
--- a/engines/chewy/dialogs/files.cpp
+++ b/engines/chewy/dialogs/files.cpp
@@ -295,7 +295,7 @@ enter:
 
 	free(ti);
 
-	_G(room)->load_tgp(_G(spieler)._personRoomNr[P_CHEWY], &_G(room_blk), EPISODE1_TGP, GED_LOAD, EPISODE1);
+	_G(room)->load_tgp(_G(gameState)._personRoomNr[P_CHEWY], &_G(room_blk), EPISODE1_TGP, GED_LOAD, EPISODE1);
 
 	_G(fx_blend) = BLEND1;
 	_G(room)->set_ak_pal(&_G(room_blk));
diff --git a/engines/chewy/dialogs/inventory.cpp b/engines/chewy/dialogs/inventory.cpp
index 6d99584c82d..820ea51cb3d 100644
--- a/engines/chewy/dialogs/inventory.cpp
+++ b/engines/chewy/dialogs/inventory.cpp
@@ -69,8 +69,8 @@ void Inventory::plot_menu() {
 			int16 x = (g_events->_mousePos.x - (WIN_INF_X)) / 54;
 			y = (g_events->_mousePos.y - (WIN_INF_Y + 4 + 30)) / 30;
 			k = x + (y * 5);
-			k += _G(spieler).InventY * 5;
-			if (k < (_G(spieler).InventY + 3) * 5)
+			k += _G(gameState).InventY * 5;
+			if (k < (_G(gameState).InventY + 3) * 5)
 				_G(out)->boxFill(WIN_INF_X + 14 + x * 54, WIN_INF_Y + 6 + 30 + y * 32,
 					WIN_INF_X + 14 + x * 54 + 40, WIN_INF_Y + 6 + 30 + y * 32 + 24, 41);
 		}
@@ -109,13 +109,13 @@ void Inventory::plot_menu() {
 	y = WIN_INF_Y + 6 + 30;
 	for (int16 j = 0; j < 3; j++) {
 		for (int16 i = 0; i < 5; i++) {
-			if (_G(spieler).InventSlot[(_G(spieler).InventY + j) * 5 + i] != -1) {
-				int16 *xy = (int16 *)_G(inv_spr)[_G(spieler).InventSlot[(_G(spieler).InventY + j) * 5 + i]];
+			if (_G(gameState).InventSlot[(_G(gameState).InventY + j) * 5 + i] != -1) {
+				int16 *xy = (int16 *)_G(inv_spr)[_G(gameState).InventSlot[(_G(gameState).InventY + j) * 5 + i]];
 				int16 x1 = 40 - xy[0];
 				x1 /= 2;
 				int16 y1 = 24 - xy[1];
 				y1 /= 2;
-				_G(out)->spriteSet(_G(inv_spr)[_G(spieler).InventSlot[(_G(spieler).InventY + j) * 5 + i]],
+				_G(out)->spriteSet(_G(inv_spr)[_G(gameState).InventSlot[(_G(gameState).InventY + j) * 5 + i]],
 					x1 + WIN_INF_X + 14 + i * 54,
 					y1 + y + 32 * j, _G(scr_width));
 			}
@@ -126,8 +126,8 @@ void Inventory::plot_menu() {
 void Inventory::menu() {
 	keyVal = 0;
 	_G(flags).InventMenu = true;
-	const int16 oldDispFlag = _G(spieler).DispFlag;
-	_G(spieler).DispFlag = false;
+	const int16 oldDispFlag = _G(gameState).DispFlag;
+	_G(gameState).DispFlag = false;
 	const uint16 oldAutoAniPlay = _G(flags).AutoAniPlay;
 	_G(flags).AutoAniPlay = true;
 	_G(flags).StopAutoObj = true;
@@ -137,7 +137,7 @@ void Inventory::menu() {
 	g_events->_mousePos.y = 92;
 
 	_G(invent_cur_mode) = CUR_USE;
-	if (_G(spieler).AkInvent != -1) {
+	if (_G(gameState).AkInvent != -1) {
 		cursorChoice(CUR_AK_INVENT);
 
 	} else {
@@ -181,7 +181,7 @@ void Inventory::menu() {
 				case 0:
 					_G(invent_cur_mode) = CUR_USE;
 					_G(menu_item) = CUR_USE;
-					if (_G(spieler).AkInvent == -1) {
+					if (_G(gameState).AkInvent == -1) {
 						cursorChoice(CUR_USE);
 					} else {
 						cursorChoice(CUR_AK_INVENT);
@@ -189,10 +189,10 @@ void Inventory::menu() {
 					break;
 
 				case 1:
-					if (_G(spieler).AkInvent != -1) {
+					if (_G(gameState).AkInvent != -1) {
 						inv_rand_x = -1;
 						inv_rand_y = -1;
-						ret_look = look(_G(spieler).AkInvent, INV_ATS_MODE, -1);
+						ret_look = look(_G(gameState).AkInvent, INV_ATS_MODE, -1);
 
 						taste_flag = Common::KEYCODE_ESCAPE;
 					} else {
@@ -214,28 +214,28 @@ void Inventory::menu() {
 					inv_rand_x = (g_events->_mousePos.x - (WIN_INF_X)) / 54;
 					inv_rand_y = (g_events->_mousePos.y - (WIN_INF_Y + 4 + 30)) / 30;
 					k = inv_rand_x + (inv_rand_y * 5);
-					k += _G(spieler).InventY * 5;
+					k += _G(gameState).InventY * 5;
 					if (_G(invent_cur_mode) == CUR_USE) {
-						if (_G(spieler).AkInvent == -1) {
-							if (_G(spieler).InventSlot[k] != -1 && calc_use_invent(_G(spieler).InventSlot[k]) == false) {
+						if (_G(gameState).AkInvent == -1) {
+							if (_G(gameState).InventSlot[k] != -1 && calc_use_invent(_G(gameState).InventSlot[k]) == false) {
 								_G(menu_item) = CUR_USE;
-								_G(spieler).AkInvent = _G(spieler).InventSlot[k];
+								_G(gameState).AkInvent = _G(gameState).InventSlot[k];
 								cursorChoice(CUR_AK_INVENT);
-								del_invent_slot(_G(spieler).InventSlot[k]);
+								del_invent_slot(_G(gameState).InventSlot[k]);
 							}
-						} else if (_G(spieler).InventSlot[k] != -1)
-							evaluateObj(_G(spieler).InventSlot[k], INVENTORY_NORMAL);
+						} else if (_G(gameState).InventSlot[k] != -1)
+							evaluateObj(_G(gameState).InventSlot[k], INVENTORY_NORMAL);
 						else {
-							_G(spieler).InventSlot[k] = _G(spieler).AkInvent;
+							_G(gameState).InventSlot[k] = _G(gameState).AkInvent;
 							_G(obj)->sort();
-							_G(spieler).AkInvent = -1;
+							_G(gameState).AkInvent = -1;
 							_G(menu_item) = _G(invent_cur_mode);
 							cursorChoice(_G(invent_cur_mode));
 						}
-					} else if (_G(invent_cur_mode) == CUR_LOOK && _G(spieler).InventSlot[k] != -1 && calc_use_invent(_G(spieler).InventSlot[k]) == false) {
-						_G(spieler).AkInvent = _G(spieler).InventSlot[k];
-						ret_look = look(_G(spieler).InventSlot[k], INV_ATS_MODE, -1);
-						_G(spieler).AkInvent = -1;
+					} else if (_G(invent_cur_mode) == CUR_LOOK && _G(gameState).InventSlot[k] != -1 && calc_use_invent(_G(gameState).InventSlot[k]) == false) {
+						_G(gameState).AkInvent = _G(gameState).InventSlot[k];
+						ret_look = look(_G(gameState).InventSlot[k], INV_ATS_MODE, -1);
+						_G(gameState).AkInvent = -1;
 						cursorChoice(_G(invent_cur_mode));
 						taste_flag = Common::KEYCODE_ESCAPE;
 					}
@@ -256,7 +256,7 @@ void Inventory::menu() {
 		if (ret_look == 0) {
 			_G(invent_cur_mode) = CUR_USE;
 			_G(menu_item) = CUR_USE;
-			if (_G(spieler).AkInvent == -1)
+			if (_G(gameState).AkInvent == -1)
 				cursorChoice(CUR_USE);
 			else
 				cursorChoice(CUR_AK_INVENT);
@@ -304,7 +304,7 @@ void Inventory::menu() {
 				break;
 
 			case Common::KEYCODE_RIGHT:
-				if (g_events->_mousePos.x < 320 - _G(spieler)._curWidth)
+				if (g_events->_mousePos.x < 320 - _G(gameState)._curWidth)
 					g_events->_mousePos.x += 3;
 				break;
 
@@ -319,19 +319,19 @@ void Inventory::menu() {
 				break;
 
 			case Common::KEYCODE_DOWN:
-				if (g_events->_mousePos.y < 197 - _G(spieler)._curHeight)
+				if (g_events->_mousePos.y < 197 - _G(gameState)._curHeight)
 					g_events->_mousePos.y += 3;
 				break;
 
 			case Common::KEYCODE_PAGEUP:
-				if (_G(spieler).InventY > 0)
-					--_G(spieler).InventY;
+				if (_G(gameState).InventY > 0)
+					--_G(gameState).InventY;
 				g_events->_kbInfo._keyCode = '\0';
 				break;
 
 			case Common::KEYCODE_PAGEDOWN:
-				if (_G(spieler).InventY < (MAX_MOV_OBJ / 5) - 3)
-					++_G(spieler).InventY;
+				if (_G(gameState).InventY < (MAX_MOV_OBJ / 5) - 3)
+					++_G(gameState).InventY;
 				g_events->_kbInfo._keyCode = '\0';
 				break;
 
@@ -376,7 +376,7 @@ void Inventory::menu() {
 
 	_G(flags).InventMenu = false;
 	_G(flags).AutoAniPlay = oldAutoAniPlay;
-	_G(spieler).DispFlag = oldDispFlag;
+	_G(gameState).DispFlag = oldDispFlag;
 	_G(menu_display) = _G(tmp_menu);
 	_G(flags).StopAutoObj = false;
 }
@@ -576,7 +576,7 @@ void Inventory::look_screen(int16 txt_mode, int16 txt_nr) {
 				case CUR_HOWARD:
 				case CUR_NICHELLE:
 					m_mode = TXT_MARK_USE;
-					if (_G(spieler).inv_cur)
+					if (_G(gameState).inv_cur)
 						ok = false;
 					break;
 
@@ -644,7 +644,7 @@ bool Inventory::calc_use_invent(int16 invNr) {
 		}
 	} else if (_G(menu_item) == CUR_USE && invNr == NOTEBOOK_INV) {
 		int16 id = del_invent_slot(NOTEBOOK_INV);
-		_G(spieler).InventSlot[id] = NOTEBOOK_OPEN_INV;
+		_G(gameState).InventSlot[id] = NOTEBOOK_OPEN_INV;
 		_G(obj)->changeInventory(NOTEBOOK_INV, NOTEBOOK_OPEN_INV, &_G(room_blk));
 		retVal = true;
 	}
@@ -653,14 +653,14 @@ bool Inventory::calc_use_invent(int16 invNr) {
 }
 
 void Inventory::showDiary() {
-	int16 scrollx = _G(spieler).scrollx,
-		scrolly = _G(spieler).scrolly;
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	int16 scrollx = _G(gameState).scrollx,
+		scrolly = _G(gameState).scrolly;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 
 	_G(room)->load_tgp(DIARY_START, &_G(room_blk), GBOOK_TGP, 0, GBOOK);
 	_G(out)->setPointer(_G(workptr));
-	_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage], _G(spieler).scrollx, _G(spieler).scrolly);
+	_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage], _G(gameState).scrollx, _G(gameState).scrolly);
 	_G(out)->back2screen(_G(workpage));
 	_G(room)->set_ak_pal(&_G(room_blk));
 	_G(out)->setPointer(nullptr);
@@ -675,9 +675,9 @@ void Inventory::showDiary() {
 		SHOULD_QUIT_RETURN;
 	}
 
-	_G(room)->load_tgp(_G(spieler)._personRoomNr[P_CHEWY], &_G(room_blk), EPISODE1_TGP, GED_LOAD, EPISODE1);
-	_G(spieler).scrollx = scrollx;
-	_G(spieler).scrolly = scrolly;
+	_G(room)->load_tgp(_G(gameState)._personRoomNr[P_CHEWY], &_G(room_blk), EPISODE1_TGP, GED_LOAD, EPISODE1);
+	_G(gameState).scrollx = scrollx;
+	_G(gameState).scrolly = scrolly;
 	setupScreen(NO_SETUP);
 	plot_menu();
 	_G(out)->setPointer(nullptr);
diff --git a/engines/chewy/dialogs/main_menu.cpp b/engines/chewy/dialogs/main_menu.cpp
index bdc37be4847..8dfd173b090 100644
--- a/engines/chewy/dialogs/main_menu.cpp
+++ b/engines/chewy/dialogs/main_menu.cpp
@@ -55,9 +55,9 @@ void MainMenu::execute() {
 	_G(cur)->move(152, 92);
 	g_events->_mousePos.x = 152;
 	g_events->_mousePos.y = 92;
-	_G(spieler).inv_cur = false;
+	_G(gameState).inv_cur = false;
 	_G(menu_display) = 0;
-	_G(spieler).soundLoopMode = 1;
+	_G(gameState).soundLoopMode = 1;
 
 	bool done = false;
 	while (!done && !SHOULD_QUIT) {
@@ -66,16 +66,16 @@ void MainMenu::execute() {
 
 		cursorChoice(CUR_ZEIGE);
 		_selection = -1;
-		_G(spieler).scrollx = _G(spieler).scrolly = 0;
-		_G(spieler)._personRoomNr[P_CHEWY] = 98;
-		_G(room)->loadRoom(&_G(room_blk), 98, &_G(spieler));
+		_G(gameState).scrollx = _G(gameState).scrolly = 0;
+		_G(gameState)._personRoomNr[P_CHEWY] = 98;
+		_G(room)->loadRoom(&_G(room_blk), 98, &_G(gameState));
 
 		_G(currentSong) = -1;
 		load_room_music(98);
 		_G(fx)->border(_G(workpage), 100, 0, 0);
 
 		_G(out)->setPalette(_G(pal));
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		showCur();
 
 		// Wait for a selection to be made on the main menu
@@ -133,7 +133,7 @@ void MainMenu::execute() {
 }
 
 void MainMenu::screenFunc() {
-	int vec = _G(det)->maus_vector(g_events->_mousePos.x + _G(spieler).scrollx, g_events->_mousePos.y + _G(spieler).scrolly);
+	int vec = _G(det)->maus_vector(g_events->_mousePos.x + _G(gameState).scrollx, g_events->_mousePos.y + _G(gameState).scrolly);
 
 	if (_G(in)->getSwitchCode() == 28 || _G(minfo)._button == 1) {
 		_selection = vec;
@@ -143,16 +143,16 @@ void MainMenu::screenFunc() {
 void MainMenu::animate() {
 	if (_G(ani_timer)->_timeFlag) {
 		_G(uhr)->resetTimer(0, 0);
-		_G(spieler).DelaySpeed = _G(FrameSpeed) / _G(spieler).FramesPerSecond;
-		_G(spieler_vector)->Delay = _G(spieler).DelaySpeed + _G(spz_delay)[0];
+		_G(gameState).DelaySpeed = _G(FrameSpeed) / _G(gameState).FramesPerSecond;
+		_G(spieler_vector)->Delay = _G(gameState).DelaySpeed + _G(spz_delay)[0];
 		_G(FrameSpeed) = 0;
-		_G(det)->set_global_delay(_G(spieler).DelaySpeed);
+		_G(det)->set_global_delay(_G(gameState).DelaySpeed);
 	}
 
 	++_G(FrameSpeed);
 	_G(out)->setPointer(_G(workptr));
 	_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage],
-		_G(spieler).scrollx, _G(spieler).scrolly);
+		_G(gameState).scrollx, _G(gameState).scrolly);
 
 	if (_G(SetUpScreenFunc) && !_G(menu_display) && !_G(flags).InventMenu) {
 		_G(SetUpScreenFunc)();
@@ -177,34 +177,34 @@ void MainMenu::startGame() {
 	animate();
 	exit_room(-1);
 
-	bool soundSwitch = _G(spieler).SoundSwitch;
-	uint8 soundVol = _G(spieler).SoundVol;
-	bool musicSwitch = _G(spieler).MusicSwitch;
-	uint8 musicVol = _G(spieler).MusicVol;
-	bool speechSwitch = _G(spieler).SpeechSwitch;
-	uint8 framesPerSecond = _G(spieler).FramesPerSecond;
-	bool displayText = _G(spieler).DisplayText;
-	int sndLoopMode = _G(spieler).soundLoopMode;
+	bool soundSwitch = _G(gameState).SoundSwitch;
+	uint8 soundVol = _G(gameState).SoundVol;
+	bool musicSwitch = _G(gameState).MusicSwitch;
+	uint8 musicVol = _G(gameState).MusicVol;
+	bool speechSwitch = _G(gameState).SpeechSwitch;
+	uint8 framesPerSecond = _G(gameState).FramesPerSecond;
+	bool displayText = _G(gameState).DisplayText;
+	int sndLoopMode = _G(gameState).soundLoopMode;
 
 	var_init();
 
-	_G(spieler).SoundSwitch = soundSwitch;
-	_G(spieler).SoundVol = soundVol;
-	_G(spieler).MusicSwitch = musicSwitch;
-	_G(spieler).MusicVol = musicVol;
-	_G(spieler).SpeechSwitch = speechSwitch;
-	_G(spieler).FramesPerSecond = framesPerSecond;
-	_G(spieler).DisplayText = displayText;
-	_G(spieler).soundLoopMode = sndLoopMode;
+	_G(gameState).SoundSwitch = soundSwitch;
+	_G(gameState).SoundVol = soundVol;
+	_G(gameState).MusicSwitch = musicSwitch;
+	_G(gameState).MusicVol = musicVol;
+	_G(gameState).SpeechSwitch = speechSwitch;
+	_G(gameState).FramesPerSecond = framesPerSecond;
+	_G(gameState).DisplayText = displayText;
+	_G(gameState).soundLoopMode = sndLoopMode;
 
-	_G(spieler)._personRoomNr[P_CHEWY] = 0;
-	_G(room)->loadRoom(&_G(room_blk), 0, &_G(spieler));
+	_G(gameState)._personRoomNr[P_CHEWY] = 0;
+	_G(room)->loadRoom(&_G(room_blk), 0, &_G(gameState));
 
 	_G(spieler_vector)[P_CHEWY].Phase = 6;
 	_G(spieler_vector)[P_CHEWY].PhAnz = _G(chewy_ph_nr)[6];
 	setPersonPos(160, 80, P_CHEWY, P_RIGHT);
 	_G(fx_blend) = BLEND3;
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(menu_item) = CUR_WALK;
 	cursorChoice(CUR_WALK);
 	enter_room(-1);
@@ -223,7 +223,7 @@ bool MainMenu::loadGame() {
 	_G(savegameFlag) = true;
 	int result = Dialogs::Files::execute(false);
 
-	cursorChoice((_G(spieler).inv_cur && _G(spieler).AkInvent != -1 &&
+	cursorChoice((_G(gameState).inv_cur && _G(gameState).AkInvent != -1 &&
 		_G(menu_item) == CUR_USE) ? 8 : 0);
 	_G(cur_display) = true;
 	restorePersonAni();
@@ -251,7 +251,7 @@ void MainMenu::playGame() {
 	_G(cur)->show_cur();
 	_G(spieler_vector)[P_CHEWY].Count = 0;
 	_G(uhr)->resetTimer(0, 0);
-	_G(sndPlayer)->setLoopMode(_G(spieler).soundLoopMode);
+	_G(sndPlayer)->setLoopMode(_G(gameState).soundLoopMode);
 
 	while (!SHOULD_QUIT && !mainLoop(1)) {
 	}
diff --git a/engines/chewy/dialogs/options.cpp b/engines/chewy/dialogs/options.cpp
index 21387fb25d3..e5e3b3772b6 100644
--- a/engines/chewy/dialogs/options.cpp
+++ b/engines/chewy/dialogs/options.cpp
@@ -74,7 +74,7 @@ void Options::execute(TafInfo *ti) {
 	int16 tdisp_delay = 3;
 	int16 tdisp_count = tdisp_delay;
 	_G(FrameSpeed) = 0;
-	int16 delay_count = _G(spieler).DelaySpeed;
+	int16 delay_count = _G(gameState).DelaySpeed;
 	warning("stop_clock = (clock() / CLK_TCK) + 1;");
 	while (key != Common::KEYCODE_ESCAPE) {
 		_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage], 0, 0);
@@ -82,7 +82,7 @@ void Options::execute(TafInfo *ti) {
 		warning("akt_clock = clock() / CLK_TCK;");
 		if (akt_clock >= stop_clock) {
 			//TmpFrame = _G(FrameSpeed);
-			_G(spieler).DelaySpeed = (_G(FrameSpeed) >> 1) / _G(spieler).FramesPerSecond;
+			_G(gameState).DelaySpeed = (_G(FrameSpeed) >> 1) / _G(gameState).FramesPerSecond;
 
 			_G(FrameSpeed) = 0;
 			warning("stop_clock = (clock() / CLK_TCK) + 1;");
@@ -90,12 +90,12 @@ void Options::execute(TafInfo *ti) {
 
 		_G(out)->spriteSet(ti->_image[surimy_ani], 18 + ti->_correction[surimy_ani << 1],
 			8 + ti->_correction[(surimy_ani << 1) + 1], 0);
-		short bar_off = (_G(spieler).FramesPerSecond - 6) * 16;
+		short bar_off = (_G(gameState).FramesPerSecond - 6) * 16;
 		_G(out)->boxFill(33 + bar_off, 65, 33 + 17 + bar_off, 65 + 8, 0);
-		Common::String fps = Common::String::format("%d", _G(spieler).FramesPerSecond << 1);
+		Common::String fps = Common::String::format("%d", _G(gameState).FramesPerSecond << 1);
 		_G(out)->printxy(36 + bar_off, 65, 255, 300, 0, fps.c_str());
 
-		if (_G(spieler).SoundSwitch) {
+		if (_G(gameState).SoundSwitch) {
 			_G(out)->spriteSet(ti->_image[mund_ani],
 				18 + ti->_correction[mund_ani << 1],
 				8 + ti->_correction[(mund_ani << 1) + 1], 0);
@@ -112,12 +112,12 @@ void Options::execute(TafInfo *ti) {
 		}
 		_G(out)->pop_box(32 - 2, 104 - 12, 42 + 4, 136 + 2, 192, 183, 182);
 		_G(out)->printxy(32 + 3, 104 - 10, 15, 300, 0, "S");
-		_G(out)->boxFill(33, 136 - (_G(spieler).SoundVol >> 1), 42, 136, 15);
+		_G(out)->boxFill(33, 136 - (_G(gameState).SoundVol >> 1), 42, 136, 15);
 
 		_G(out)->pop_box(52 - 2, 104 - 12, 62 + 4, 136 + 2, 192, 183, 182);
 		_G(out)->printxy(52 + 3, 104 - 10, 31, 300, 0, "M");
-		_G(out)->boxFill(53, 136 - (_G(spieler).MusicVol >> 1), 62, 136, 31);
-		if (_G(spieler).MusicSwitch) {
+		_G(out)->boxFill(53, 136 - (_G(gameState).MusicVol >> 1), 62, 136, 31);
+		if (_G(gameState).MusicSwitch) {
 			_G(out)->spriteSet(ti->_image[MUSIC_ON1],
 				18 + ti->_correction[MUSIC_ON1 << 1],
 				8 + ti->_correction[(MUSIC_ON1 << 1) + 1], 0);
@@ -129,7 +129,7 @@ void Options::execute(TafInfo *ti) {
 				18 + ti->_correction[MUSIC_OFF << 1],
 				8 + ti->_correction[(MUSIC_OFF << 1) + 1], 0);
 
-		if (_G(spieler).DisplayText) {
+		if (_G(gameState).DisplayText) {
 			_G(out)->spriteSet(ti->_image[tdisp_ani],
 				18 + ti->_correction[tdisp_ani << 1],
 				8 + ti->_correction[(tdisp_ani << 1) + 1], 0);
@@ -152,54 +152,54 @@ void Options::execute(TafInfo *ti) {
 			int16 rect = _G(in)->mouseVector(g_events->_mousePos.x, g_events->_mousePos.y, OPTION_ICONS, 9);
 			switch (rect) {
 			case 0:
-				if (_G(spieler).FramesPerSecond > 6)
-					--_G(spieler).FramesPerSecond;
+				if (_G(gameState).FramesPerSecond > 6)
+					--_G(gameState).FramesPerSecond;
 				break;
 			case 1:
-				if (_G(spieler).FramesPerSecond < 10)
-					++_G(spieler).FramesPerSecond;
+				if (_G(gameState).FramesPerSecond < 10)
+					++_G(gameState).FramesPerSecond;
 				break;
 			case 2:
-				if (_G(spieler).SoundSwitch) {
-					_G(spieler).SoundSwitch = false;
+				if (_G(gameState).SoundSwitch) {
+					_G(gameState).SoundSwitch = false;
 					_G(det)->disable_room_sound();
 				} else {
-					_G(spieler).SoundSwitch = true;
+					_G(gameState).SoundSwitch = true;
 					_G(det)->enable_room_sound();
 				}
 				break;
 			case 3:
 			case 4:
-				if (_G(spieler).DisplayText) {
-					_G(spieler).DisplayText = false;
+				if (_G(gameState).DisplayText) {
+					_G(gameState).DisplayText = false;
 					_G(atds)->setHasSpeech(true);
-					_G(spieler).SpeechSwitch = true;
+					_G(gameState).SpeechSwitch = true;
 				} else {
-					_G(spieler).DisplayText = true;
+					_G(gameState).DisplayText = true;
 					_G(atds)->setHasSpeech(false);
-					_G(spieler).SpeechSwitch = false;
+					_G(gameState).SpeechSwitch = false;
 				}
 				break;
 			case 5:
-				if (_G(spieler).MusicSwitch) {
-					_G(spieler).MusicSwitch = false;
+				if (_G(gameState).MusicSwitch) {
+					_G(gameState).MusicSwitch = false;
 					_G(sndPlayer)->stopMod();
 				} else {
-					_G(spieler).MusicSwitch = true;
+					_G(gameState).MusicSwitch = true;
 					_G(currentSong) = -1;
-					load_room_music(_G(spieler)._personRoomNr[P_CHEWY]);
+					load_room_music(_G(gameState)._personRoomNr[P_CHEWY]);
 				}
 				break;
 			case 6:
 				key = Common::KEYCODE_ESCAPE;
 				break;
 			case 7:
-				_G(spieler).SoundVol = (136 - g_events->_mousePos.y) << 1;
-				g_engine->_sound->setSoundVolume(_G(spieler).SoundVol * Audio::Mixer::kMaxChannelVolume / 120);
+				_G(gameState).SoundVol = (136 - g_events->_mousePos.y) << 1;
+				g_engine->_sound->setSoundVolume(_G(gameState).SoundVol * Audio::Mixer::kMaxChannelVolume / 120);
 				break;
 			case 8:
-				_G(spieler).MusicVol = (136 - g_events->_mousePos.y) << 1;
-				g_engine->_sound->setMusicVolume(_G(spieler).MusicVol * Audio::Mixer::kMaxChannelVolume / 120);
+				_G(gameState).MusicVol = (136 - g_events->_mousePos.y) << 1;
+				g_engine->_sound->setMusicVolume(_G(gameState).MusicVol * Audio::Mixer::kMaxChannelVolume / 120);
 				break;
 
 			default:
@@ -257,7 +257,7 @@ void Options::execute(TafInfo *ti) {
 					tdisp_ani = TDISP_START;
 				tdisp_count = tdisp_delay;
 			}
-			delay_count = _G(spieler).DelaySpeed;
+			delay_count = _G(gameState).DelaySpeed;
 		} else
 			--delay_count;
 	}
diff --git a/engines/chewy/globals.h b/engines/chewy/globals.h
index 18c1e615291..a9c97d026fc 100644
--- a/engines/chewy/globals.h
+++ b/engines/chewy/globals.h
@@ -84,7 +84,7 @@ public:
 	int16 _timer_nr[MAX_TIMER_OBJ] = { 0 };
 public:
 	CurrentScreen _currentScreen;
-	GameState _spieler;
+	GameState _gameState;
 
 	int16 _pfeil_ani = 0;
 	int16 _pfeil_delay = 0;
diff --git a/engines/chewy/inits.cpp b/engines/chewy/inits.cpp
index 7d1badaa0c1..56fb6dc3bce 100644
--- a/engines/chewy/inits.cpp
+++ b/engines/chewy/inits.cpp
@@ -37,7 +37,7 @@ void standard_init() {
 	_G(txt) = new Text();
 	_G(ged) = new GedClass(&ged_user_func);
 	_G(room) = new Room();
-	_G(obj) = new Object(&_G(spieler));
+	_G(obj) = new Object(&_G(gameState));
 	_G(uhr) = new Timer(MAX_TIMER_OBJ, _G(ani_timer));
 	_G(det) = new Detail();
 	_G(atds) = new Atdsys();
@@ -97,11 +97,11 @@ void var_init() {
 	_G(menu_item) = CUR_WALK;
 	_G(inventoryNr) = 0;
 	new_game();
-	_G(spieler).MainMenuY = MENU_Y;
-	_G(spieler).DispFlag = true;
-	_G(spieler).AkInvent = -1;
-	_G(spieler).ScrollxStep = 1;
-	_G(spieler).ScrollyStep = 1;
+	_G(gameState).MainMenuY = MENU_Y;
+	_G(gameState).DispFlag = true;
+	_G(gameState).AkInvent = -1;
+	_G(gameState).ScrollxStep = 1;
+	_G(gameState).ScrollyStep = 1;
 
 	_G(spieler_mi)[P_CHEWY].HotX = CH_HOT_X;
 	_G(spieler_mi)[P_CHEWY].HotY = CH_HOT_Y;
@@ -133,16 +133,16 @@ void var_init() {
 
 		_G(ani_stand_flag)[i] = false;
 		_G(spz_delay)[i] = 0;
-		_G(spieler)._personRoomNr[i] = -1;
-		_G(spieler).PersonDia[i] = -1;
+		_G(gameState)._personRoomNr[i] = -1;
+		_G(gameState).PersonDia[i] = -1;
 	}
-	_G(spieler)._personRoomNr[P_CHEWY] = _G(room_start_nr);
+	_G(gameState)._personRoomNr[P_CHEWY] = _G(room_start_nr);
 
 	_G(gpkt).Vorschub = _G(spieler_mi)[P_CHEWY].Vorschub;
 	init_room();
 	init_atds();
-	_G(spieler).FramesPerSecond = 7;
-	_G(spieler).DisplayText = true;
+	_G(gameState).FramesPerSecond = 7;
+	_G(gameState).DisplayText = true;
 	_G(currentSong) = -1;
 	_G(SetUpScreenFunc) = nullptr;
 	_G(pfeil_delay) = 0;
@@ -158,8 +158,8 @@ void init_room() {
 	_G(room_blk).InvFile = INVENTORY_TAF;
 	_G(room_blk).DetFile = DETAILTEST;
 	_G(room_blk).InvSprAdr = &_G(inv_spr)[0];
-	_G(room_blk).Rmo = _G(spieler).room_m_obj;
-	_G(room_blk).Rsi = _G(spieler).room_s_obj;
+	_G(room_blk).Rmo = _G(gameState).room_m_obj;
+	_G(room_blk).Rsi = _G(gameState).room_s_obj;
 	_G(room_blk).AadLoad = true;
 	_G(room_blk).AtsLoad = true;
 	strcpy(_G(room_blk).RoomDir, "room/");
@@ -183,46 +183,46 @@ void init_atds() {
 	_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(spieler).AadSilent = 10;
-	_G(spieler).DelaySpeed = 5;
-	_G(spieler_vector)[P_CHEWY].Delay = _G(spieler).DelaySpeed;
-	_G(atds)->set_delay(&_G(spieler).DelaySpeed, _G(spieler).AadSilent);
+	_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(spieler).clear();
+	_G(gameState).clear();
 
 	for (int16 i = 0; i < MAX_MOV_OBJ; i++) {
-		_G(spieler).room_m_obj[i].RoomNr = -1;
-		_G(spieler).InventSlot[i] = -1;
+		_G(gameState).room_m_obj[i].RoomNr = -1;
+		_G(gameState).InventSlot[i] = -1;
 	}
 	for (int16 i = 0; i < MAX_FEST_OBJ; i++)
-		_G(spieler).room_s_obj[i].RoomNr = -1;
+		_G(gameState).room_s_obj[i].RoomNr = -1;
 	for (int16 i = 0; i < MAX_EXIT; i++)
-		_G(spieler).room_e_obj[i].RoomNr = -1;
+		_G(gameState).room_e_obj[i].RoomNr = -1;
 
-	_G(obj)->load(INVENTORY_IIB, &_G(spieler).room_m_obj[0]);
-	_G(obj)->load(INVENTORY_SIB, &_G(spieler).room_s_obj[0]);
-	_G(obj)->load(EXIT_EIB, &_G(spieler).room_e_obj[0]);
+	_G(obj)->load(INVENTORY_IIB, &_G(gameState).room_m_obj[0]);
+	_G(obj)->load(INVENTORY_SIB, &_G(gameState).room_s_obj[0]);
+	_G(obj)->load(EXIT_EIB, &_G(gameState).room_e_obj[0]);
 
 	Common::File f;
 
 	if (!f.open(ROOM_ATS_STEUER))
 		error("Error reading file: %s", ROOM_ATS_STEUER);
 	for (int16 i = 0; i < ROOM_ATS_MAX; i++)
-		_G(spieler).Ats[i * MAX_ATS_STATUS] = f.readByte();
+		_G(gameState).Ats[i * MAX_ATS_STATUS] = f.readByte();
 	f.close();
 
 	if (!f.open(INV_ATS_STEUER))
 		error("Error reading file: %s", INV_ATS_STEUER);
 	for (int16 i = 0; i < MAX_MOV_OBJ; i++)
-		_G(spieler).InvAts[i * MAX_ATS_STATUS] = f.readByte();
+		_G(gameState).InvAts[i * MAX_ATS_STATUS] = f.readByte();
 	f.close();
 
 	_G(obj)->sort();
 	for (int16 i = 0; i < _G(obj)->spieler_invnr[0]; i++)
-		_G(spieler).InventSlot[i] = _G(obj)->spieler_invnr[i + 1];
+		_G(gameState).InventSlot[i] = _G(obj)->spieler_invnr[i + 1];
 
 	_G(AkChewyTaf) = 0;
 	load_chewy_taf(CHEWY_NORMAL);
@@ -246,7 +246,7 @@ void init_load() {
 	f.read(_G(spblende) + sizeof(uint32), f.size());
 	f.close();
 
-	_G(room)->loadRoom(&_G(room_blk), _G(room_start_nr), &_G(spieler));
+	_G(room)->loadRoom(&_G(room_blk), _G(room_start_nr), &_G(gameState));
 	_G(out)->setPalette(_G(pal));
 }
 
@@ -288,14 +288,14 @@ void tidy() {
 }
 
 void sound_init() {
-	_G(spieler).SoundSwitch = false;
-	_G(spieler).MusicSwitch = false;
+	_G(gameState).SoundSwitch = false;
+	_G(gameState).MusicSwitch = false;
 
 	_G(sndPlayer)->initMixMode();
-	_G(spieler).MusicVol = 63;
-	_G(spieler).SoundVol = 63;
-	g_engine->_sound->setMusicVolume(_G(spieler).MusicVol * Audio::Mixer::kMaxChannelVolume / 120);
-	g_engine->_sound->setSoundVolume(_G(spieler).SoundVol * Audio::Mixer::kMaxChannelVolume / 120);
+	_G(gameState).MusicVol = 63;
+	_G(gameState).SoundVol = 63;
+	g_engine->_sound->setMusicVolume(_G(gameState).MusicVol * Audio::Mixer::kMaxChannelVolume / 120);
+	g_engine->_sound->setSoundVolume(_G(gameState).SoundVol * Audio::Mixer::kMaxChannelVolume / 120);
 
 	_G(music_handle) = _G(room)->open_handle(DETAIL_TVP, R_VOC_DATA);
 
@@ -312,10 +312,10 @@ void sound_init() {
 	}
 
 	_G(atds)->setHasSpeech(true);
-	_G(spieler).DisplayText = false;
-	_G(spieler).SoundSwitch = true;
-	_G(spieler).MusicSwitch = true;
-	_G(spieler).SpeechSwitch = true;
+	_G(gameState).DisplayText = false;
+	_G(gameState).SoundSwitch = true;
+	_G(gameState).MusicSwitch = true;
+	_G(gameState).SpeechSwitch = true;
 }
 
 void show_intro() {
diff --git a/engines/chewy/m_event.cpp b/engines/chewy/m_event.cpp
index 6b6fc98ecad..554eae6e8cc 100644
--- a/engines/chewy/m_event.cpp
+++ b/engines/chewy/m_event.cpp
@@ -34,10 +34,10 @@ void load_room_music(int16 room_nr) {
 	const int16 seq_end = 0;
 	const int16 pattern = 0;
 	int16 ttp_index = -1;
-	int16 volume = _G(spieler).MusicVol;
+	int16 volume = _G(gameState).MusicVol;
 	const int16 lp_mode = 1;
 	const int16 play_mode = NORMAL_PLAY;
-	if (_G(spieler).MusicSwitch && (_G(music_handle))) {
+	if (_G(gameState).MusicSwitch && (_G(music_handle))) {
 		switch (room_nr) {
 		case 0:
 			ttp_index = 0;
@@ -184,8 +184,8 @@ void load_room_music(int16 room_nr) {
 		if (ttp_index != -1) {
 			if (volume < 0)
 				volume = 0;
-			else if (volume > _G(spieler).MusicVol)
-				volume = _G(spieler).MusicVol;
+			else if (volume > _G(gameState).MusicVol)
+				volume = _G(gameState).MusicVol;
 			g_engine->_sound->setMusicVolume(volume * Audio::Mixer::kMaxChannelVolume / 120);
 			_G(sndPlayer)->setLoopMode(lp_mode);
 			if (ttp_index != _G(currentSong)) {
diff --git a/engines/chewy/main.cpp b/engines/chewy/main.cpp
index 0978c573bf2..bcade50d6e1 100644
--- a/engines/chewy/main.cpp
+++ b/engines/chewy/main.cpp
@@ -97,7 +97,7 @@ void cursorChoice(int16 nr) {
 	int16 ok = true;
 	if (nr != CUR_USER) {
 		_G(curblk).sprite = _G(curtaf)->_image;
-		_G(curani)._delay = (1 + _G(spieler).DelaySpeed) * 5;
+		_G(curani)._delay = (1 + _G(gameState).DelaySpeed) * 5;
 	}
 	switch (nr) {
 	case CUR_WALK:
@@ -151,10 +151,10 @@ void cursorChoice(int16 nr) {
 		break;
 
 	case CUR_AK_INVENT:
-		_G(curani)._start = _G(spieler).AkInvent;
-		_G(curani)._end = _G(spieler).AkInvent;
+		_G(curani)._start = _G(gameState).AkInvent;
+		_G(curani)._end = _G(gameState).AkInvent;
 		_G(curblk).sprite = &_G(inv_spr)[0];
-		_G(spieler).inv_cur = true;
+		_G(gameState).inv_cur = true;
 		break;
 
 	case CUR_SAVE:
@@ -213,8 +213,8 @@ void cursorChoice(int16 nr) {
 	if (ok) {
 		_cursorMoveFl = true;
 		_G(cur)->set_cur_ani(&_G(curani));
-		_G(spieler)._curWidth = READ_LE_INT16(_G(curblk).sprite[_G(curani)._start]);
-		_G(spieler)._curHeight = READ_LE_INT16(_G(curblk).sprite[_G(curani)._start] + 2);
+		_G(gameState)._curWidth = READ_LE_INT16(_G(curblk).sprite[_G(curani)._start]);
+		_G(gameState)._curHeight = READ_LE_INT16(_G(curblk).sprite[_G(curani)._start] + 2);
 	}
 }
 
@@ -252,7 +252,7 @@ bool mainLoop(int16 mode) {
 	if (_G(flags).MainInput) {
 		switch (g_events->_kbInfo._scanCode) {
 		case Common::KEYCODE_F1:
-			_G(spieler).inv_cur = false;
+			_G(gameState).inv_cur = false;
 			_G(menu_item) = CUR_WALK;
 			cursorChoice(_G(menu_item));
 			if (_G(menu_display) == MENU_DISPLAY)
@@ -260,7 +260,7 @@ bool mainLoop(int16 mode) {
 			break;
 
 		case Common::KEYCODE_F2:
-			_G(spieler).inv_cur = false;
+			_G(gameState).inv_cur = false;
 			_G(menu_item) = CUR_USE;
 			cursorChoice(_G(menu_item));
 			if (_G(menu_display) == MENU_DISPLAY)
@@ -268,7 +268,7 @@ bool mainLoop(int16 mode) {
 			break;
 
 		case Common::KEYCODE_F3:
-			_G(spieler).inv_cur = false;
+			_G(gameState).inv_cur = false;
 			_G(menu_item) = CUR_LOOK;
 			cursorChoice(_G(menu_item));
 			if (_G(menu_display) == MENU_DISPLAY)
@@ -276,7 +276,7 @@ bool mainLoop(int16 mode) {
 			break;
 
 		case Common::KEYCODE_F4:
-			_G(spieler).inv_cur = false;
+			_G(gameState).inv_cur = false;
 			_G(menu_item) = CUR_TALK;
 			cursorChoice(_G(menu_item));
 			if (_G(menu_display) == MENU_DISPLAY)
@@ -295,15 +295,15 @@ bool mainLoop(int16 mode) {
 			_G(menu_flag) = MENU_HIDE;
 			_G(menu_display) = 0;
 			_G(cur_display) = true;
-			if (_G(spieler).AkInvent == -1) {
+			if (_G(gameState).AkInvent == -1) {
 				_G(menu_item) = _G(tmp_menu_item);
 				cursorChoice(_G(menu_item));
-				_G(spieler).inv_cur = false;
+				_G(gameState).inv_cur = false;
 			} else {
 				_G(menu_item) = CUR_USE;
 				cursorChoice(CUR_AK_INVENT);
 
-				getDisplayCoord(&_G(spieler).DispZx, &_G(spieler).DispZy, _G(spieler).AkInvent);
+				getDisplayCoord(&_G(gameState).DispZx, &_G(gameState).DispZy, _G(gameState).AkInvent);
 			}
 
 			g_events->_kbInfo._keyCode = '\0';
@@ -319,7 +319,7 @@ bool mainLoop(int16 mode) {
 				retValue = true;
 				_G(fx_blend) = BLEND4;
 			}
-			if (_G(spieler).inv_cur && _G(spieler).AkInvent != -1 && _G(menu_item) == CUR_USE) {
+			if (_G(gameState).inv_cur && _G(gameState).AkInvent != -1 && _G(menu_item) == CUR_USE) {
 				cursorChoice(CUR_AK_INVENT);
 			} else
 				cursorChoice(_G(menu_item));
@@ -342,7 +342,7 @@ bool mainLoop(int16 mode) {
 				menuExit();
 				_G(menu_item) = _G(tmp_menu_item);
 				_G(menu_display) = MENU_HIDE;
-				if (_G(spieler).inv_cur && _G(spieler).AkInvent != -1 && _G(menu_item) == CUR_USE) {
+				if (_G(gameState).inv_cur && _G(gameState).AkInvent != -1 && _G(menu_item) == CUR_USE) {
 					cursorChoice(CUR_AK_INVENT);
 				} else
 					cursorChoice(_G(menu_item));
@@ -360,14 +360,14 @@ bool mainLoop(int16 mode) {
 				_G(menu_flag) = MENU_HIDE;
 				_G(menu_display) = 0;
 				_G(cur_display) = true;
-				if (_G(spieler).AkInvent == -1) {
+				if (_G(gameState).AkInvent == -1) {
 					_G(menu_item) = _G(tmp_menu_item);
 					cursorChoice(_G(menu_item));
-					_G(spieler).inv_cur = false;
+					_G(gameState).inv_cur = false;
 				} else {
 					_G(menu_item) = CUR_USE;
 					cursorChoice(CUR_AK_INVENT);
-					getDisplayCoord(&_G(spieler).DispZx, &_G(spieler).DispZy, _G(spieler).AkInvent);
+					getDisplayCoord(&_G(gameState).DispZx, &_G(gameState).DispZy, _G(gameState).AkInvent);
 				}
 				break;
 
@@ -391,7 +391,7 @@ bool mainLoop(int16 mode) {
 				_G(menu_item) = _G(tmp_menu_item);
 				_G(menu_display) = MENU_HIDE;
 
-				if (_G(spieler).inv_cur && _G(spieler).AkInvent != -1 && _G(menu_item) == CUR_USE) {
+				if (_G(gameState).inv_cur && _G(gameState).AkInvent != -1 && _G(menu_item) == CUR_USE) {
 					cursorChoice(CUR_AK_INVENT);
 				} else
 					cursorChoice(_G(tmp_menu_item));
@@ -411,7 +411,7 @@ bool mainLoop(int16 mode) {
 					_G(cur)->move(_G(maus_old_x), _G(maus_old_y));
 					g_events->_mousePos.x = _G(maus_old_x);
 					g_events->_mousePos.y = _G(maus_old_y);
-					_G(spieler).inv_cur = false;
+					_G(gameState).inv_cur = false;
 					cursorChoice(_G(menu_item));
 				}
 				break;
@@ -426,15 +426,15 @@ bool mainLoop(int16 mode) {
 			break;
 
 		case 41:
-			_G(spieler).DispFlag ^= 1;
+			_G(gameState).DispFlag ^= 1;
 			break;
 
 		case Common::KEYCODE_TAB:
-			if (_G(menu_display) == 0 && _G(spieler).DispFlag) {
-				if (_G(spieler).InvDisp < 3)
-					++_G(spieler).InvDisp;
+			if (_G(menu_display) == 0 && _G(gameState).DispFlag) {
+				if (_G(gameState).InvDisp < 3)
+					++_G(gameState).InvDisp;
 				else
-					_G(spieler).InvDisp = 0;
+					_G(gameState).InvDisp = 0;
 			}
 			break;
 
@@ -461,8 +461,8 @@ bool mainLoop(int16 mode) {
 }
 
 static void showWalkAreas() {
-	int xs = (_G(spieler).scrollx / 8) * 8,
-		ys = (_G(spieler).scrolly / 8) * 8;
+	int xs = (_G(gameState).scrollx / 8) * 8,
+		ys = (_G(gameState).scrolly / 8) * 8;
 
 	for (int y = 0, yp = ys; y < 200 / 8; ++y, yp += 8) {
 		for (int x = 0, xp = xs; x < 320 / 8; ++x, xp += 8) {
@@ -472,7 +472,7 @@ static void showWalkAreas() {
 
 			if (idx) {
 				Common::Rect r(xp, yp, xp + 8, yp + 8);
-				r.translate(-_G(spieler).scrollx, -_G(spieler).scrolly);
+				r.translate(-_G(gameState).scrollx, -_G(gameState).scrolly);
 				r.clip(Common::Rect(0, 0, 320, 200));
 
 				g_screen->frameRect(r, 0xff);
@@ -493,14 +493,14 @@ void setupScreen(SetupScreenMode mode) {
 
 	if (_G(ani_timer)[0]._timeFlag) {
 		_G(uhr)->resetTimer(0, 0);
-		_G(spieler).DelaySpeed = _G(FrameSpeed) / _G(spieler).FramesPerSecond;
-		_G(spieler_vector)[P_CHEWY].Delay = _G(spieler).DelaySpeed + _G(spz_delay)[P_CHEWY];
+		_G(gameState).DelaySpeed = _G(FrameSpeed) / _G(gameState).FramesPerSecond;
+		_G(spieler_vector)[P_CHEWY].Delay = _G(gameState).DelaySpeed + _G(spz_delay)[P_CHEWY];
 		_G(FrameSpeed) = 0;
-		_G(det)->set_global_delay(_G(spieler).DelaySpeed);
+		_G(det)->set_global_delay(_G(gameState).DelaySpeed);
 	}
 	++_G(FrameSpeed);
 	_G(out)->setPointer(_G(workptr));
-	_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage], _G(spieler).scrollx, _G(spieler).scrolly);
+	_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage], _G(gameState).scrollx, _G(gameState).scrolly);
 
 	for (i = 0; i < MAX_PERSON; i++)
 		zoom_mov_anpass(&_G(spieler_vector)[i], &_G(spieler_mi)[i]);
@@ -517,17 +517,17 @@ void setupScreen(SetupScreenMode mode) {
 	} else {
 		kb_mov(1);
 		_G(det)->unfreeze_ani();
-		check_mouse_ausgang(g_events->_mousePos.x + _G(spieler).scrollx, g_events->_mousePos.y + _G(spieler).scrolly);
+		check_mouse_ausgang(g_events->_mousePos.x + _G(gameState).scrollx, g_events->_mousePos.y + _G(gameState).scrolly);
 
 		if (!_G(flags).SaveMenu)
 			calc_ani_timer();
 
-		if (_G(spieler).AkInvent != -1 && _G(spieler).DispFlag) {
-			buildMenu(invent_display[_G(spieler).InvDisp][0],
-			           invent_display[_G(spieler).InvDisp][1], 3, 3, 60, 0);
-			_G(out)->spriteSet(_G(inv_spr)[_G(spieler).AkInvent],
-			                 invent_display[_G(spieler).InvDisp][0] + 1 + _G(spieler).DispZx,
-			                 invent_display[_G(spieler).InvDisp][1] + 1 + _G(spieler).DispZy
+		if (_G(gameState).AkInvent != -1 && _G(gameState).DispFlag) {
+			buildMenu(invent_display[_G(gameState).InvDisp][0],
+			           invent_display[_G(gameState).InvDisp][1], 3, 3, 60, 0);
+			_G(out)->spriteSet(_G(inv_spr)[_G(gameState).AkInvent],
+			                 invent_display[_G(gameState).InvDisp][0] + 1 + _G(gameState).DispZx,
+			                 invent_display[_G(gameState).InvDisp][1] + 1 + _G(gameState).DispZy
 			                 , _G(scr_width));
 		}
 
@@ -536,13 +536,13 @@ void setupScreen(SetupScreenMode mode) {
 		if (_G(mouseLeftClick)) {
 			if (_G(menu_item) == CUR_WALK) {
 				if (_G(cur_ausgang_flag)) {
-					calc_ausgang(g_events->_mousePos.x + _G(spieler).scrollx, g_events->_mousePos.y + _G(spieler).scrolly);
+					calc_ausgang(g_events->_mousePos.x + _G(gameState).scrollx, g_events->_mousePos.y + _G(gameState).scrolly);
 				} else {
 					if (!_G(flags).ChewyDontGo) {
 						_G(gpkt).Dx = g_events->_mousePos.x - _G(spieler_mi)[P_CHEWY].HotMovX +
-						          _G(spieler).scrollx + _G(spieler_mi)[P_CHEWY].HotX;
+						          _G(gameState).scrollx + _G(spieler_mi)[P_CHEWY].HotX;
 						_G(gpkt).Dy = g_events->_mousePos.y - _G(spieler_mi)[P_CHEWY].HotMovY +
-						          _G(spieler).scrolly + _G(spieler_mi)[P_CHEWY].HotY;
+						          _G(gameState).scrolly + _G(spieler_mi)[P_CHEWY].HotY;
 						_G(gpkt).Sx = _G(spieler_vector)[P_CHEWY].Xypos[0] +
 						          _G(spieler_mi)[P_CHEWY].HotX;
 						_G(gpkt).Sy = _G(spieler_vector)[P_CHEWY].Xypos[1] +
@@ -586,7 +586,7 @@ void setupScreen(SetupScreenMode mode) {
 		for (i = 0; i < _G(auto_obj) && !_G(flags).StopAutoObj; i++)
 			mov_objekt(&_G(auto_mov_vector)[i], &_G(auto_mov_obj)[i]);
 
-		int16 nr = _G(obj)->is_iib_mouse(g_events->_mousePos.x + _G(spieler).scrollx, g_events->_mousePos.y + _G(spieler).scrolly);
+		int16 nr = _G(obj)->is_iib_mouse(g_events->_mousePos.x + _G(gameState).scrollx, g_events->_mousePos.y + _G(gameState).scrolly);
 		if (nr != -1) {
 			txt_nr = _G(obj)->iib_txt_nr(nr);
 			mous_obj_action(nr, mode, INVENTORY_NORMAL, txt_nr);
@@ -594,7 +594,7 @@ void setupScreen(SetupScreenMode mode) {
 			int16 tmp = calcMouseText(g_events->_mousePos.x, g_events->_mousePos.y, mode);
 			if (tmp == -1 || tmp == 255) {
 
-				nr = _G(obj)->is_sib_mouse(g_events->_mousePos.x + _G(spieler).scrollx, g_events->_mousePos.y + _G(spieler).scrolly);
+				nr = _G(obj)->is_sib_mouse(g_events->_mousePos.x + _G(gameState).scrollx, g_events->_mousePos.y + _G(gameState).scrolly);
 				if (nr != -1) {
 					txt_nr = _G(obj)->sib_txt_nr(nr);
 					mous_obj_action(nr, mode, INVENTORY_STATIC, txt_nr);
@@ -605,11 +605,11 @@ void setupScreen(SetupScreenMode mode) {
 		if (_G(cur_display) == true && mode == DO_SETUP) {
 			_G(cur)->plot_cur();
 
-			if ((_G(spieler).inv_cur) && (_G(flags).CursorStatus == true))
+			if ((_G(gameState).inv_cur) && (_G(flags).CursorStatus == true))
 				_G(out)->spriteSet(_G(curtaf)->_image[_G(pfeil_ani) + 32], g_events->_mousePos.x, g_events->_mousePos.y,
 				                _G(scr_width));
 			if (_G(pfeil_delay) == 0) {
-				_G(pfeil_delay) = _G(spieler).DelaySpeed;
+				_G(pfeil_delay) = _G(gameState).DelaySpeed;
 				if (_G(pfeil_ani) < 4)
 					++_G(pfeil_ani);
 				else
@@ -620,9 +620,9 @@ void setupScreen(SetupScreenMode mode) {
 		}
 	}
 
-	_G(atds)->print_aad(_G(spieler).scrollx, _G(spieler).scrolly);
+	_G(atds)->print_aad(_G(gameState).scrollx, _G(gameState).scrolly);
 	_G(atds)->print_ats(_G(spieler_vector)[P_CHEWY].Xypos[0] + CH_HOT_X,
-	                _G(spieler_vector)[P_CHEWY].Xypos[1], _G(spieler).scrollx, _G(spieler).scrolly);
+	                _G(spieler_vector)[P_CHEWY].Xypos[1], _G(gameState).scrollx, _G(gameState).scrolly);
 	_G(mouseLeftClick) = false;
 	_G(menu_flag) = false;
 	if (mode == DO_SETUP) {
@@ -664,7 +664,7 @@ void setupScreen(SetupScreenMode mode) {
 		calc_scroll(_G(spieler_vector)[P_CHEWY].Xypos[0] + _G(spieler_mi)[P_CHEWY].HotX,
 		            _G(spieler_vector)[P_CHEWY].Xypos[1] + _G(spieler_mi)[P_CHEWY].HotY,
 		            ScrXy[0], ScrXy[1],
-		            &_G(spieler).scrollx, &_G(spieler).scrolly);
+		            &_G(gameState).scrollx, &_G(gameState).scrolly);
 
 	g_screen->update();
 
@@ -705,34 +705,34 @@ void mous_obj_action(int16 nr, int16 mode, int16 txt_mode, int16 txt_nr) {
 		if (_G(menu_item) != CUR_USE)
 			Dialogs::Inventory::look_screen(txt_mode, txt_nr);
 		else {
-			if (_G(spieler).inv_cur) {
+			if (_G(gameState).inv_cur) {
 				evaluateObj(nr, txt_mode);
 			} else {
 				if (txt_mode == INVENTORY_NORMAL) {
 					if (!_G(flags).ChAutoMov) {
 						_G(mouseLeftClick) = false;
-						autoMove(_G(spieler).room_m_obj[nr].AutoMov, P_CHEWY);
+						autoMove(_G(gameState).room_m_obj[nr].AutoMov, P_CHEWY);
 						Dialogs::Inventory::look_screen(txt_mode, txt_nr);
 
-						if (_G(spieler).AkInvent != -1)
-							_G(spieler).room_m_obj[_G(spieler).AkInvent].RoomNr = -1;
-						if (_G(spieler).room_m_obj[nr].AniFlag == 255) {
+						if (_G(gameState).AkInvent != -1)
+							_G(gameState).room_m_obj[_G(gameState).AkInvent].RoomNr = -1;
+						if (_G(gameState).room_m_obj[nr].AniFlag == 255) {
 							invent_2_slot(nr);
 						} else {
-							_G(spieler)._personHide[P_CHEWY] = _G(spieler).room_m_obj[nr].HeldHide;
-							play_scene_ani(_G(spieler).room_m_obj[nr].AniFlag, ANI_FRONT);
+							_G(gameState)._personHide[P_CHEWY] = _G(gameState).room_m_obj[nr].HeldHide;
+							play_scene_ani(_G(gameState).room_m_obj[nr].AniFlag, ANI_FRONT);
 							invent_2_slot(nr);
 
-							_G(spieler)._personHide[P_CHEWY] = false;
+							_G(gameState)._personHide[P_CHEWY] = false;
 						}
 
-						_G(spieler).inv_cur = false;
+						_G(gameState).inv_cur = false;
 						_G(menu_item) = CUR_WALK;
 						cursorChoice(_G(menu_item));
 						_G(spieler_vector)[P_CHEWY]._delayCount = 0;
 
-						if (_G(spieler).AkInvent != -1)
-							_G(spieler).room_m_obj[_G(spieler).AkInvent].RoomNr = 255;
+						if (_G(gameState).AkInvent != -1)
+							_G(gameState).room_m_obj[_G(gameState).AkInvent].RoomNr = 255;
 
 					}
 				} else if (txt_mode == INVENTORY_STATIC) {
@@ -748,7 +748,7 @@ void kb_mov(int16 mode) {
 	while (!ende) {
 		switch (_G(in)->getSwitchCode()) {
 		case Common::KEYCODE_RIGHT:
-			if (g_events->_mousePos.x < 320 - _G(spieler)._curWidth)
+			if (g_events->_mousePos.x < 320 - _G(gameState)._curWidth)
 				_G(cur)->move(g_events->_mousePos.x + 2, g_events->_mousePos.y);
 			break;
 
@@ -763,7 +763,7 @@ void kb_mov(int16 mode) {
 			break;
 
 		case Common::KEYCODE_DOWN:
-			if (g_events->_mousePos.y < 210 - _G(spieler)._curHeight)
+			if (g_events->_mousePos.y < 210 - _G(gameState)._curHeight)
 				_G(cur)->move(g_events->_mousePos.x, g_events->_mousePos.y + 2);
 			break;
 
@@ -805,15 +805,15 @@ void kb_cur_action(int16 key, int16 mode) {
 
 	case Common::KEYCODE_UP:
 		if (_G(menu_display) == MENU_DISPLAY) {
-			if (_G(spieler).MainMenuY > 1)
-				_G(spieler).MainMenuY -= 2;
+			if (_G(gameState).MainMenuY > 1)
+				_G(gameState).MainMenuY -= 2;
 		}
 		break;
 
 	case Common::KEYCODE_DOWN:
 		if (_G(menu_display) == MENU_DISPLAY) {
-			if (_G(spieler).MainMenuY < 163)
-				_G(spieler).MainMenuY += 2;
+			if (_G(gameState).MainMenuY < 163)
+				_G(gameState).MainMenuY += 2;
 		}
 		break;
 
@@ -825,16 +825,16 @@ void kb_cur_action(int16 key, int16 mode) {
 void mouseAction() {
 	int16 x = g_events->_mousePos.x;
 	int16 y = g_events->_mousePos.y;
-	if (x > invent_display[_G(spieler).InvDisp][0] &&
-	        x < invent_display[_G(spieler).InvDisp][0] + 48 &&
-	        y > invent_display[_G(spieler).InvDisp][1] &&
-	        y < invent_display[_G(spieler).InvDisp][1] + 48) {
-		if (!_G(spieler).inv_cur && !_G(inv_disp_ok) && _G(spieler).AkInvent != -1) {
+	if (x > invent_display[_G(gameState).InvDisp][0] &&
+	        x < invent_display[_G(gameState).InvDisp][0] + 48 &&
+	        y > invent_display[_G(gameState).InvDisp][1] &&
+	        y < invent_display[_G(gameState).InvDisp][1] + 48) {
+		if (!_G(gameState).inv_cur && !_G(inv_disp_ok) && _G(gameState).AkInvent != -1) {
 			cursorChoice(CUR_USE);
 		}
 		_G(inv_disp_ok) = true;
 	} else {
-		if (!_G(spieler).inv_cur && _G(inv_disp_ok)) {
+		if (!_G(gameState).inv_cur && _G(inv_disp_ok)) {
 			cursorChoice(_G(menu_item));
 		}
 		_G(inv_disp_ok) = false;
@@ -850,12 +850,12 @@ void mouseAction() {
 				if (!_G(flags).mainMouseFlag) {
 					if (_G(menu_display) == MENU_DISPLAY)
 						g_events->_kbInfo._scanCode = Common::KEYCODE_RETURN;
-					else if (_G(spieler).AkInvent != -1) {
+					else if (_G(gameState).AkInvent != -1) {
 						if (_G(inv_disp_ok)) {
-							if (_G(spieler).inv_cur) {
+							if (_G(gameState).inv_cur) {
 								_G(menu_item) = CUR_USE;
 								cursorChoice(_G(menu_item));
-								_G(spieler).inv_cur = false;
+								_G(gameState).inv_cur = false;
 							} else {
 								_G(menu_item) = CUR_USE;
 								cursorChoice(CUR_AK_INVENT);
@@ -876,26 +876,26 @@ void mouseAction() {
 void evaluateObj(int16 testNr, int16 mode) {
 	int16 ani_nr;
 	int16 txt_nr;
-	int16 tmp = _G(spieler).AkInvent;
+	int16 tmp = _G(gameState).AkInvent;
 	int16 ret = NO_ACTION;
 	int16 action_flag = false;
 
 	switch (mode) {
 	case INVENTORY_NORMAL:
-		ret = _G(obj)->action_iib_iib(_G(spieler).AkInvent, testNr);
+		ret = _G(obj)->action_iib_iib(_G(gameState).AkInvent, testNr);
 		if (ret != NO_ACTION) {
 			hideCur();
 			if (_G(flags).InventMenu == false) {
-				if (_G(spieler).room_m_obj[_G(spieler).AkInvent].AutoMov != 255) {
+				if (_G(gameState).room_m_obj[_G(gameState).AkInvent].AutoMov != 255) {
 					_G(mouseLeftClick) = false;
-					autoMove(_G(spieler).room_m_obj[testNr].AutoMov, P_CHEWY);
+					autoMove(_G(gameState).room_m_obj[testNr].AutoMov, P_CHEWY);
 				}
 				txt_nr = _G(obj)->iib_txt_nr(testNr);
 				Dialogs::Inventory::look_screen(INVENTORY_NORMAL, txt_nr);
-				if (_G(spieler).room_m_obj[testNr].AniFlag != 255) {
-					_G(spieler)._personHide[P_CHEWY] = _G(spieler).room_m_obj[testNr].HeldHide;
-					play_scene_ani(_G(spieler).room_m_obj[testNr].AniFlag, ANI_FRONT);
-					_G(spieler)._personHide[P_CHEWY] = false;
+				if (_G(gameState).room_m_obj[testNr].AniFlag != 255) {
+					_G(gameState)._personHide[P_CHEWY] = _G(gameState).room_m_obj[testNr].HeldHide;
+					play_scene_ani(_G(gameState).room_m_obj[testNr].AniFlag, ANI_FRONT);
+					_G(gameState)._personHide[P_CHEWY] = false;
 				}
 			}
 			showCur();
@@ -903,19 +903,19 @@ void evaluateObj(int16 testNr, int16 mode) {
 		break;
 
 	case INVENTORY_STATIC:
-		ret = _G(obj)->action_iib_sib(_G(spieler).AkInvent, testNr);
+		ret = _G(obj)->action_iib_sib(_G(gameState).AkInvent, testNr);
 		if (ret != NO_ACTION) {
 			_G(mouseLeftClick) = false;
 			hideCur();
-			if (_G(spieler).room_m_obj[_G(spieler).AkInvent].AutoMov != 255) {
-				autoMove(_G(spieler).room_s_obj[testNr].AutoMov, P_CHEWY);
+			if (_G(gameState).room_m_obj[_G(gameState).AkInvent].AutoMov != 255) {
+				autoMove(_G(gameState).room_s_obj[testNr].AutoMov, P_CHEWY);
 			}
 			txt_nr = _G(obj)->sib_txt_nr(testNr);
 			Dialogs::Inventory::look_screen(INVENTORY_STATIC, txt_nr);
-			if (_G(spieler).room_s_obj[testNr].AniFlag != 255) {
-				_G(spieler)._personHide[P_CHEWY] = _G(spieler).room_s_obj[testNr].HeldHide;
-				tmp = getAniDirection((int16)_G(spieler).room_s_obj[testNr].ZustandAk);
-				ani_nr = _G(spieler).room_s_obj[testNr].AniFlag;
+			if (_G(gameState).room_s_obj[testNr].AniFlag != 255) {
+				_G(gameState)._personHide[P_CHEWY] = _G(gameState).room_s_obj[testNr].HeldHide;
+				tmp = getAniDirection((int16)_G(gameState).room_s_obj[testNr].ZustandAk);
+				ani_nr = _G(gameState).room_s_obj[testNr].AniFlag;
 
 				if (ani_nr >= 150) {
 					start_spz_wait(ani_nr - 150, 1, false, P_CHEWY);
@@ -926,13 +926,13 @@ void evaluateObj(int16 testNr, int16 mode) {
 				}
 				if (ani_nr != -1)
 					play_scene_ani(ani_nr, tmp);
-				_G(spieler)._personHide[P_CHEWY] = false;
+				_G(gameState)._personHide[P_CHEWY] = false;
 			}
 			_G(menu_item_vorwahl) = CUR_WALK;
 			showCur();
 			sib_event_inv(testNr);
 
-			if (!_G(spieler).inv_cur) {
+			if (!_G(gameState).inv_cur) {
 				_G(menu_item) = _G(menu_item_vorwahl);
 				cursorChoice(_G(menu_item));
 			}
@@ -945,17 +945,17 @@ void evaluateObj(int16 testNr, int16 mode) {
 		if (ret == OBJECT_1) {
 			_G(mouseLeftClick) = false;
 			hideCur();
-			if (_G(spieler).room_s_obj[testNr].AutoMov != 255) {
+			if (_G(gameState).room_s_obj[testNr].AutoMov != 255) {
 
-				autoMove(_G(spieler).room_s_obj[testNr].AutoMov, P_CHEWY);
+				autoMove(_G(gameState).room_s_obj[testNr].AutoMov, P_CHEWY);
 			}
 			txt_nr = _G(obj)->sib_txt_nr(testNr);
 			Dialogs::Inventory::look_screen(INVENTORY_STATIC, txt_nr);
-			if (_G(spieler).room_s_obj[testNr].AniFlag != 255) {
-				_G(spieler)._personHide[P_CHEWY] = _G(spieler).room_s_obj[testNr].HeldHide;
-				tmp = getAniDirection((int16)_G(spieler).room_s_obj[testNr].ZustandAk);
+			if (_G(gameState).room_s_obj[testNr].AniFlag != 255) {
+				_G(gameState)._personHide[P_CHEWY] = _G(gameState).room_s_obj[testNr].HeldHide;
+				tmp = getAniDirection((int16)_G(gameState).room_s_obj[testNr].ZustandAk);
 
-				ani_nr = _G(spieler).room_s_obj[testNr].AniFlag;
+				ani_nr = _G(gameState).room_s_obj[testNr].AniFlag;
 
 				if (ani_nr >= 150) {
 					start_spz_wait(ani_nr - 150, 1, false, P_CHEWY);
@@ -966,11 +966,11 @@ void evaluateObj(int16 testNr, int16 mode) {
 				}
 				if (ani_nr != -1)
 					play_scene_ani(ani_nr, tmp);
-				_G(spieler)._personHide[P_CHEWY] = false;
+				_G(gameState)._personHide[P_CHEWY] = false;
 			}
 
-			if (_G(spieler).room_s_obj[testNr].InvNr != -1) {
-				invent_2_slot(_G(spieler).room_s_obj[testNr].InvNr);
+			if (_G(gameState).room_s_obj[testNr].InvNr != -1) {
+				invent_2_slot(_G(gameState).room_s_obj[testNr].InvNr);
 				action_flag = true;
 			}
 			_G(menu_item_vorwahl) = CUR_WALK;
@@ -979,7 +979,7 @@ void evaluateObj(int16 testNr, int16 mode) {
 
 			_G(obj)->calc_all_static_detail();
 
-			if (!_G(spieler).inv_cur) {
+			if (!_G(gameState).inv_cur) {
 
 				if (sib_ret || action_flag) {
 					_G(menu_item) = _G(menu_item_vorwahl);
@@ -989,16 +989,16 @@ void evaluateObj(int16 testNr, int16 mode) {
 		} else if (ret == SIB_GET_INV) {
 			_G(mouseLeftClick) = false;
 			hideCur();
-			if (_G(spieler).room_s_obj[testNr].AutoMov != 255) {
-				autoMove(_G(spieler).room_s_obj[testNr].AutoMov, P_CHEWY);
+			if (_G(gameState).room_s_obj[testNr].AutoMov != 255) {
+				autoMove(_G(gameState).room_s_obj[testNr].AutoMov, P_CHEWY);
 			}
 			txt_nr = _G(obj)->sib_txt_nr(testNr);
 			Dialogs::Inventory::look_screen(INVENTORY_STATIC, txt_nr);
-			if (_G(spieler).room_s_obj[testNr].AniFlag != 255) {
-				_G(spieler)._personHide[P_CHEWY] = _G(spieler).room_s_obj[testNr].HeldHide;
-				tmp = getAniDirection((int16)_G(spieler).room_s_obj[testNr].ZustandAk);
+			if (_G(gameState).room_s_obj[testNr].AniFlag != 255) {
+				_G(gameState)._personHide[P_CHEWY] = _G(gameState).room_s_obj[testNr].HeldHide;
+				tmp = getAniDirection((int16)_G(gameState).room_s_obj[testNr].ZustandAk);
 
-				ani_nr = _G(spieler).room_s_obj[testNr].AniFlag;
+				ani_nr = _G(gameState).room_s_obj[testNr].AniFlag;
 
 				if (ani_nr >= 150) {
 					start_spz_wait(ani_nr - 150, 1, false, P_CHEWY);
@@ -1010,17 +1010,17 @@ void evaluateObj(int16 testNr, int16 mode) {
 				if (ani_nr != -1) {
 					play_scene_ani(ani_nr, tmp);
 				}
-				_G(spieler)._personHide[P_CHEWY] = false;
+				_G(gameState)._personHide[P_CHEWY] = false;
 			}
 
-			if (_G(spieler).room_s_obj[testNr].InvNr != -1)
-				invent_2_slot(_G(spieler).room_s_obj[testNr].InvNr);
+			if (_G(gameState).room_s_obj[testNr].InvNr != -1)
+				invent_2_slot(_G(gameState).room_s_obj[testNr].InvNr);
 			_G(obj)->calc_rsi_flip_flop(testNr);
 			_G(menu_item_vorwahl) = CUR_WALK;
 			showCur();
 			sib_event_no_inv(testNr);
 			_G(obj)->calc_all_static_detail();
-			if (!_G(spieler).inv_cur) {
+			if (!_G(gameState).inv_cur) {
 				_G(menu_item) = _G(menu_item_vorwahl);
 				cursorChoice(_G(menu_item));
 			}
@@ -1262,7 +1262,7 @@ bool autoMove(int16 movNr, int16 playerNum) {
 }
 
 void goAutoXy(int16 x, int16 y, int16 personNum, int16 mode) {
-	if (!_G(stopAutoMove)[personNum] && _G(spieler)._personRoomNr[personNum] == _G(spieler)._personRoomNr[P_CHEWY]) {
+	if (!_G(stopAutoMove)[personNum] && _G(gameState)._personRoomNr[personNum] == _G(gameState)._personRoomNr[P_CHEWY]) {
 		int16 move_status = true;
 		int16 tmp = _G(mouseLeftClick);
 		_G(mouseLeftClick) = false;
@@ -1325,7 +1325,7 @@ int16 calcMouseText(int16 x, int16 y, int16 mode) {
 			int16 txtNr = calc_mouse_mov_obj(&idx);
 
 			if (txtNr == -1) {
-				idx = _G(det)->maus_vector(x + _G(spieler).scrollx, y + _G(spieler).scrolly);
+				idx = _G(det)->maus_vector(x + _G(gameState).scrollx, y + _G(gameState).scrolly);
 				if (idx != -1) {
 					txtNr = _G(Rdi)->mtxt[idx];
 					inv_no_use_mode = DETEDIT_REC;
@@ -1351,7 +1351,7 @@ int16 calcMouseText(int16 x, int16 y, int16 mode) {
 					case CUR_USER:
 					case CUR_USE:
 						txtMode = TXT_MARK_USE;
-						if (_G(spieler).inv_cur)
+						if (_G(gameState).inv_cur)
 							ok = false;
 						break;
 
@@ -1370,7 +1370,7 @@ int16 calcMouseText(int16 x, int16 y, int16 mode) {
 					int16 action_ret = 0;
 					if (!_G(atds)->getControlBit(txtNr, ATS_ACTIVE_BIT, ATS_DATA)) {
 						if (_G(menu_item) != CUR_WALK && _G(menu_item) != CUR_USE) {
-							if (x + _G(spieler).scrollx > _G(spieler_vector)[P_CHEWY].Xypos[0])
+							if (x + _G(gameState).scrollx > _G(spieler_vector)[P_CHEWY].Xypos[0])
 								setPersonSpr(P_RIGHT, P_CHEWY);
 							else
 								setPersonSpr(P_LEFT, P_CHEWY);
@@ -1397,7 +1397,7 @@ int16 calcMouseText(int16 x, int16 y, int16 mode) {
 					
 					if (!ok && !action_ret) {
 						if (inv_no_use_mode != -1 && !_G(atds)->getControlBit(txtNr, ATS_ACTIVE_BIT, ATS_DATA)) {
-							actionFl = calc_inv_no_use(idx + (_G(spieler)._personRoomNr[P_CHEWY] * 100), inv_no_use_mode);
+							actionFl = calc_inv_no_use(idx + (_G(gameState)._personRoomNr[P_CHEWY] * 100), inv_no_use_mode);
 							if (actionFl)
 								ret = txtNr;
 						}
@@ -1406,7 +1406,7 @@ int16 calcMouseText(int16 x, int16 y, int16 mode) {
 					if (ok && !action_ret && txtMode == TXT_MARK_USE && dispFl) {
 						if (!_G(atds)->getControlBit(txtNr, ATS_ACTIVE_BIT, ATS_DATA)) {
 							if (_G(menu_item) != CUR_WALK) {
-								if (x + _G(spieler).scrollx > _G(spieler_vector)[P_CHEWY].Xypos[0])
+								if (x + _G(gameState).scrollx > _G(spieler_vector)[P_CHEWY].Xypos[0])
 									setPersonSpr(P_RIGHT, P_CHEWY);
 								else
 									setPersonSpr(P_LEFT, P_CHEWY);
@@ -1461,7 +1461,7 @@ int16 is_mouse_person(int16 x, int16 y) {
 
 					case P_HOWARD:
 					case P_NICHELLE:
-						if (_G(spieler)._personRoomNr[i] != _G(spieler)._personRoomNr[P_CHEWY])
+						if (_G(gameState)._personRoomNr[i] != _G(gameState)._personRoomNr[P_CHEWY])
 							check = false;
 						xy = (int16 *)_G(PersonTaf)[i]->_image[_G(PersonSpr)[i][_G(spieler_vector)[i].PhNr]];
 						break;
@@ -1472,10 +1472,10 @@ int16 is_mouse_person(int16 x, int16 y) {
 				} else
 					xy = (int16 *)_G(spz_tinfo)->_image[_G(spz_spr_nr)[_G(spieler_vector)[i].PhNr]];
 				if (check) {
-					if (x + _G(spieler).scrollx >= _G(spieler_vector)[i].Xypos[0] &&
-					        x + _G(spieler).scrollx <= _G(spieler_vector)[i].Xypos[0] + xy[0] + _G(spieler_vector)[i].Xzoom &&
-					        y + _G(spieler).scrolly >= _G(spieler_vector)[i].Xypos[1] &&
-					        y + _G(spieler).scrolly <= _G(spieler_vector)[i].Xypos[1] + xy[1] + _G(spieler_vector)[i].Yzoom) {
+					if (x + _G(gameState).scrollx >= _G(spieler_vector)[i].Xypos[0] &&
+					        x + _G(gameState).scrollx <= _G(spieler_vector)[i].Xypos[0] + xy[0] + _G(spieler_vector)[i].Xzoom &&
+					        y + _G(gameState).scrolly >= _G(spieler_vector)[i].Xypos[1] &&
+					        y + _G(gameState).scrolly <= _G(spieler_vector)[i].Xypos[1] + xy[1] + _G(spieler_vector)[i].Yzoom) {
 						is_person = i;
 					}
 				}
@@ -1493,14 +1493,14 @@ void calc_mouse_person(int16 x, int16 y) {
 	if (_G(flags).ShowAtsInvTxt && !_G(flags).InventMenu) {
 		int16 p_nr = is_mouse_person(x, y);
 		if (p_nr != -1) {
-			if (!_G(spieler)._personHide[p_nr]) {
+			if (!_G(gameState)._personHide[p_nr]) {
 				_G(fontMgr)->setFont(_G(font8));
 				char *str_ = ch_txt[p_nr];
 				calcTxtXy(&x, &y, str_, 1);
 				printShadowed(x, y, 255, 300, 0, _G(scr_width), str_);
 				if (_G(mouseLeftClick) == 1) {
 					int16 def_nr = -1;
-					if (!_G(spieler).inv_cur) {
+					if (!_G(gameState).inv_cur) {
 						int16 txt_nr = calc_person_txt(p_nr);
 						switch (_G(menu_item)) {
 						case CUR_LOOK:
@@ -1568,7 +1568,7 @@ void calc_mouse_person(int16 x, int16 y) {
 						if (diaNr == -1) {
 							if (txt_nr != 30000) {
 								if (_G(menu_item) != CUR_WALK) {
-									if (x + _G(spieler).scrollx > _G(spieler_vector)[P_CHEWY].Xypos[0])
+									if (x + _G(gameState).scrollx > _G(spieler_vector)[P_CHEWY].Xypos[0])
 										setPersonSpr(P_RIGHT, P_CHEWY);
 									else
 										setPersonSpr(P_LEFT, P_CHEWY);
@@ -1579,7 +1579,7 @@ void calc_mouse_person(int16 x, int16 y) {
 						}
 					} else {
 						if (_G(menu_item) != CUR_WALK) {
-							if (x + _G(spieler).scrollx > _G(spieler_vector)[P_CHEWY].Xypos[0])
+							if (x + _G(gameState).scrollx > _G(spieler_vector)[P_CHEWY].Xypos[0])
 								setPersonSpr(P_RIGHT, P_CHEWY);
 							else
 								setPersonSpr(P_LEFT, P_CHEWY);
@@ -1634,15 +1634,15 @@ void get_user_key(int16 mode) {
 			_G(menu_flag) = MENU_HIDE;
 			_G(menu_display) = 0;
 			_G(cur_display) = true;
-			if (_G(spieler).AkInvent == -1) {
+			if (_G(gameState).AkInvent == -1) {
 				_G(menu_item) = _G(tmp_menu_item);
 				cursorChoice(_G(menu_item));
-				_G(spieler).inv_cur = false;
+				_G(gameState).inv_cur = false;
 			} else {
 				_G(menu_item) = CUR_USE;
 				cursorChoice(CUR_AK_INVENT);
 
-				getDisplayCoord(&_G(spieler).DispZx, &_G(spieler).DispZy, _G(spieler).AkInvent);
+				getDisplayCoord(&_G(gameState).DispZx, &_G(gameState).DispZy, _G(gameState).AkInvent);
 			}
 
 			g_events->_kbInfo._keyCode = '\0';
@@ -1671,9 +1671,9 @@ void set_ani_screen() {
 
 void delInventory(int16 nr) {
 	_G(obj)->delInventory(nr, &_G(room_blk));
-	_G(spieler).inv_cur = false;
+	_G(gameState).inv_cur = false;
 	_G(menu_item) = CUR_WALK;
-	_G(spieler).AkInvent = -1;
+	_G(gameState).AkInvent = -1;
 	cursorChoice(_G(menu_item));
 	del_invent_slot(nr);
 	_G(mouseLeftClick) = false;
@@ -1682,7 +1682,7 @@ void delInventory(int16 nr) {
 bool isCurInventory(int16 nr) {
 	int16 ret = false;
 
-	if (_G(spieler).AkInvent == nr && _G(spieler).inv_cur)
+	if (_G(gameState).AkInvent == nr && _G(gameState).inv_cur)
 		ret = true;
 
 	return ret;
@@ -1692,7 +1692,7 @@ void check_mouse_ausgang(int16 x, int16 y) {
 	if (_G(menu_item) == CUR_WALK) {
 		bool found = true;
 		int16 nr = _G(obj)->is_exit(x, y);
-		int16 attr = (nr >= 0 && nr < MAX_EXIT) ? _G(spieler).room_e_obj[nr].Attribut : 0;
+		int16 attr = (nr >= 0 && nr < MAX_EXIT) ? _G(gameState).room_e_obj[nr].Attribut : 0;
 
 		switch (attr) {
 		case EXIT_LEFT:
@@ -1733,31 +1733,31 @@ void calc_ausgang(int16 x, int16 y) {
 		int16 nr = _G(obj)->is_exit(x, y);
 		if (nr != -1) {
 			_G(flags).ExitMov = true;
-			if (autoMove(_G(spieler).room_e_obj[nr].AutoMov, P_CHEWY) == true) {
+			if (autoMove(_G(gameState).room_e_obj[nr].AutoMov, P_CHEWY) == true) {
 				_G(flags).ShowAtsInvTxt = false;
 				_G(menu_item) = CUR_DISK;
 				cursorChoice(CUR_DISK);
 				setupScreen(DO_SETUP);
 				_G(cur_hide_flag) = true;
 				exit_room(nr);
-				_G(spieler)._personRoomNr[P_CHEWY] = _G(spieler).room_e_obj[nr].Exit;
-				_G(room)->loadRoom(&_G(room_blk), _G(spieler)._personRoomNr[P_CHEWY], &_G(spieler));
-				setPersonPos(_G(Rdi)->AutoMov[_G(spieler).room_e_obj[nr].ExitMov]._x -
+				_G(gameState)._personRoomNr[P_CHEWY] = _G(gameState).room_e_obj[nr].Exit;
+				_G(room)->loadRoom(&_G(room_blk), _G(gameState)._personRoomNr[P_CHEWY], &_G(gameState));
+				setPersonPos(_G(Rdi)->AutoMov[_G(gameState).room_e_obj[nr].ExitMov]._x -
 				               _G(spieler_mi)[_G(auto_p_nr)].HotMovX,
-				               _G(Rdi)->AutoMov[_G(spieler).room_e_obj[nr].ExitMov]._y - _G(spieler_mi)[_G(auto_p_nr)].HotMovY
+				               _G(Rdi)->AutoMov[_G(gameState).room_e_obj[nr].ExitMov]._y - _G(spieler_mi)[_G(auto_p_nr)].HotMovY
 				               , P_CHEWY, -1);
 				int16 *ScrXy = (int16 *)_G(ablage)[_G(room_blk).AkAblage];
 				get_scroll_off(_G(spieler_vector)[P_CHEWY].Xypos[0] + _G(spieler_mi)[P_CHEWY].HotX,
 				               _G(spieler_vector)[P_CHEWY].Xypos[1] + _G(spieler_mi)[P_CHEWY].HotY,
 				               ScrXy[0], ScrXy[1],
-				               &_G(spieler).scrollx, &_G(spieler).scrolly);
+				               &_G(gameState).scrollx, &_G(gameState).scrolly);
 
 				int16 u_idx = _G(ged)->ged_idx(_G(spieler_vector)[P_CHEWY].Xypos[0] + _G(spieler_mi)[P_CHEWY].HotX,
 				                               _G(spieler_vector)[P_CHEWY].Xypos[1] + _G(spieler_mi)[P_CHEWY].HotY,
 				                               _G(room)->_gedXNr[_G(room_blk).AkAblage],
 				                               _G(ged_mem)[_G(room_blk).AkAblage]);
 				check_shad(u_idx, 0);
-				setPersonSpr(_G(Rdi)->AutoMov[_G(spieler).room_e_obj[nr].ExitMov]._sprNr, P_CHEWY);
+				setPersonSpr(_G(Rdi)->AutoMov[_G(gameState).room_e_obj[nr].ExitMov]._sprNr, P_CHEWY);
 				_G(spieler_vector)[P_CHEWY]._delayCount = 0;
 				_G(fx_blend) = BLEND1;
 				_G(auto_obj) = 0;
@@ -1808,26 +1808,26 @@ void calc_scroll(int16 x, int16 y, int16 pic_x, int16 pic_y, int16 *sc_x, int16
 	if (!_G(flags).NoScroll) {
 		if (!_G(scroll_delay)) {
 
-			if ((_G(spieler).ScrollxStep * _G(spieler).DelaySpeed) > CH_X_PIX)
-				_G(scroll_delay) = CH_X_PIX / _G(spieler).ScrollxStep;
+			if ((_G(gameState).ScrollxStep * _G(gameState).DelaySpeed) > CH_X_PIX)
+				_G(scroll_delay) = CH_X_PIX / _G(gameState).ScrollxStep;
 
 			if (x - *sc_x < SCROLL_LEFT) {
-				if ((*sc_x - _G(spieler).ScrollxStep) > 0) {
-					*sc_x -= _G(spieler).ScrollxStep;
+				if ((*sc_x - _G(gameState).ScrollxStep) > 0) {
+					*sc_x -= _G(gameState).ScrollxStep;
 				}
 			} else if (x - *sc_x > SCROLL_RIGHT) {
-				if ((*sc_x + _G(spieler).ScrollxStep) < pic_x - SCREEN_WIDTH) {
-					*sc_x += _G(spieler).ScrollxStep;
+				if ((*sc_x + _G(gameState).ScrollxStep) < pic_x - SCREEN_WIDTH) {
+					*sc_x += _G(gameState).ScrollxStep;
 				}
 			}
 
 			if (y - *sc_y < SCROLL_UP) {
-				if ((*sc_y - _G(spieler).ScrollyStep) > 0) {
-					*sc_y -= _G(spieler).ScrollyStep;
+				if ((*sc_y - _G(gameState).ScrollyStep) > 0) {
+					*sc_y -= _G(gameState).ScrollyStep;
 				}
 			} else if (y - *sc_y > SCROLL_DOWN) {
-				if ((*sc_y + _G(spieler).ScrollyStep) < pic_y - SCREEN_HEIGHT) {
-					*sc_y += _G(spieler).ScrollyStep;
+				if ((*sc_y + _G(gameState).ScrollyStep) < pic_y - SCREEN_HEIGHT) {
+					*sc_y += _G(gameState).ScrollyStep;
 				}
 			}
 		} else
@@ -1838,21 +1838,21 @@ void calc_scroll(int16 x, int16 y, int16 pic_x, int16 pic_y, int16 *sc_x, int16
 void auto_scroll(int16 scrx, int16 scry) {
 	int16 tmpMouseClick = _G(mouseLeftClick);
 	_G(mouseLeftClick) = false;
-	_G(spieler).scrollx >>= 1;
-	_G(spieler).scrollx <<= 1;
-	_G(spieler).scrolly >>= 1;
-	_G(spieler).scrolly <<= 1;
+	_G(gameState).scrollx >>= 1;
+	_G(gameState).scrollx <<= 1;
+	_G(gameState).scrolly >>= 1;
+	_G(gameState).scrolly <<= 1;
 	bool endLoopFl = false;
 	while (!endLoopFl) {
-		if (scrx < _G(spieler).scrollx)
-			_G(spieler).scrollx -= _G(spieler).ScrollxStep;
-		else if (scrx > _G(spieler).scrollx)
-			_G(spieler).scrollx += _G(spieler).ScrollxStep;
-		if (scry < _G(spieler).scrolly)
-			_G(spieler).scrolly -= _G(spieler).ScrollyStep;
-		else if (scry > _G(spieler).scrolly)
-			_G(spieler).scrolly += _G(spieler).ScrollyStep;
-		if (scrx == _G(spieler).scrollx && scry == _G(spieler).scrolly)
+		if (scrx < _G(gameState).scrollx)
+			_G(gameState).scrollx -= _G(gameState).ScrollxStep;
+		else if (scrx > _G(gameState).scrollx)
+			_G(gameState).scrollx += _G(gameState).ScrollxStep;
+		if (scry < _G(gameState).scrolly)
+			_G(gameState).scrolly -= _G(gameState).ScrollyStep;
+		else if (scry > _G(gameState).scrolly)
+			_G(gameState).scrolly += _G(gameState).ScrollyStep;
+		if (scrx == _G(gameState).scrollx && scry == _G(gameState).scrolly)
 			endLoopFl = true;
 		setupScreen(DO_SETUP);
 		SHOULD_QUIT_RETURN;
@@ -1891,8 +1891,8 @@ void calc_auto_go() {
 void hide_person() {
 	for (int16 i = 0; i < MAX_PERSON; i++) {
 
-		if (!_G(spieler)._personHide[i]) {
-			_G(spieler)._personHide[i] = true;
+		if (!_G(gameState)._personHide[i]) {
+			_G(gameState)._personHide[i] = true;
 			_G(person_tmp_hide)[i] = true;
 		} else
 			_G(person_tmp_hide)[i] = false;
@@ -1903,20 +1903,20 @@ void show_person() {
 	for (int16 i = 0; i < MAX_PERSON; i++) {
 
 		if (_G(person_tmp_hide)[i])
-			_G(spieler)._personHide[i] = false;
+			_G(gameState)._personHide[i] = false;
 	}
 }
 
 void save_person_rnr() {
 	for (int16 i = 0; i < MAX_PERSON; i++)
-		_G(person_tmp_room)[i] = _G(spieler)._personRoomNr[i];
+		_G(person_tmp_room)[i] = _G(gameState)._personRoomNr[i];
 	_G(flags).SavePersonRnr = true;
 }
 
 void set_person_rnr() {
 	if (_G(flags).SavePersonRnr) {
 		for (int16 i = 0; i < MAX_PERSON; i++)
-			_G(spieler)._personRoomNr[i] = _G(person_tmp_room)[i];
+			_G(gameState)._personRoomNr[i] = _G(person_tmp_room)[i];
 		_G(flags).SavePersonRnr = false;
 	}
 }
diff --git a/engines/chewy/menus.cpp b/engines/chewy/menus.cpp
index f69418e3b44..3d0f1457046 100644
--- a/engines/chewy/menus.cpp
+++ b/engines/chewy/menus.cpp
@@ -66,14 +66,14 @@ void plotMainMenu() {
 
 		_G(out)->scale_set(_G(menutaf)->_image[i],
 			MENU_X + deltaX + correction[i * 2],
-		    _G(spieler).MainMenuY + correction[i * 2 + 1],
+		    _G(gameState).MainMenuY + correction[i * 2 + 1],
 			zoomX, zoomY, 0);
 	}
 
 	zoomX = 16;
 	zoomY = 16;
 	++_G(m_flip);
-	if (_G(m_flip) < 12 * (_G(spieler).DelaySpeed + 1)) {
+	if (_G(m_flip) < 12 * (_G(gameState).DelaySpeed + 1)) {
 		int deltaX = 0;
 		if (_G(menu_item) == CUR_SAVE)
 			deltaX = -40;
@@ -83,10 +83,10 @@ void plotMainMenu() {
 		int img = IMAGES[_G(menu_item)];
 		_G(out)->scale_set(_G(menutaf)->_image[img],
 		    MENU_X + deltaX + correction[img * 2] - 5,
-		    _G(spieler).MainMenuY + correction[img * 2 + 1] - 10,
+		    _G(gameState).MainMenuY + correction[img * 2 + 1] - 10,
 			zoomX, zoomY, 0);
 	} else {
-		if (_G(m_flip) > 15 * (_G(spieler).DelaySpeed + 1))
+		if (_G(m_flip) > 15 * (_G(gameState).DelaySpeed + 1))
 			_G(m_flip) = 0;
 	}
 }
@@ -298,7 +298,7 @@ void adsMenu() {
 
 void stop_ads_dialog() {
 	aadWait(-1);
-	_G(spieler).DispFlag = _G(ads_tmp_dsp);
+	_G(gameState).DispFlag = _G(ads_tmp_dsp);
 	_G(cur_display) = true;
 	_G(flags).ShowAtsInvTxt = true;
 	_G(flags).MainInput = true;
@@ -310,22 +310,22 @@ void stop_ads_dialog() {
 }
 
 void cur_2_inventory() {
-	if (_G(spieler).AkInvent != -1) {
-		invent_2_slot(_G(spieler).AkInvent);
-		_G(spieler).AkInvent = -1;
+	if (_G(gameState).AkInvent != -1) {
+		invent_2_slot(_G(gameState).AkInvent);
+		_G(gameState).AkInvent = -1;
 		_G(menu_item) = CUR_WALK;
 		cursorChoice(_G(menu_item));
 	}
-	_G(spieler).inv_cur = false;
+	_G(gameState).inv_cur = false;
 }
 
 void inventory_2_cur(int16 nr) {
-	if (_G(spieler).AkInvent == -1 && _G(obj)->checkInventory(nr)) {
+	if (_G(gameState).AkInvent == -1 && _G(obj)->checkInventory(nr)) {
 		del_invent_slot(nr);
 		_G(menu_item) = CUR_USE;
-		_G(spieler).AkInvent = nr;
+		_G(gameState).AkInvent = nr;
 		cursorChoice(CUR_AK_INVENT);
-		getDisplayCoord(&_G(spieler).DispZx, &_G(spieler).DispZy, _G(spieler).AkInvent);
+		getDisplayCoord(&_G(gameState).DispZx, &_G(gameState).DispZy, _G(gameState).AkInvent);
 	}
 }
 
@@ -338,8 +338,8 @@ void new_invent_2_cur(int16 inv_nr) {
 void invent_2_slot(int16 nr) {
 	int16 ok = 0;
 	for (int16 i = 0; i < MAX_MOV_OBJ && !ok; i++) {
-		if (_G(spieler).InventSlot[i] == -1) {
-			_G(spieler).InventSlot[i] = nr;
+		if (_G(gameState).InventSlot[i] == -1) {
+			_G(gameState).InventSlot[i] = nr;
 			ok = true;
 		}
 	}
@@ -349,8 +349,8 @@ void invent_2_slot(int16 nr) {
 int16 del_invent_slot(int16 nr) {
 	int16 ok = -1;
 	for (int16 i = 0; i < MAX_MOV_OBJ; i++) {
-		if (_G(spieler).InventSlot[i] == nr) {
-			_G(spieler).InventSlot[i] = -1;
+		if (_G(gameState).InventSlot[i] == nr) {
+			_G(gameState).InventSlot[i] = -1;
 			if (ok == -1)
 				ok = i;
 		}
@@ -360,7 +360,7 @@ int16 del_invent_slot(int16 nr) {
 }
 
 void remove_inventory(int16 nr) {
-	if (nr == _G(spieler).AkInvent) {
+	if (nr == _G(gameState).AkInvent) {
 		delInventory(nr);
 	} else {
 		_G(obj)->delInventory(nr, &_G(room_blk));
diff --git a/engines/chewy/r_event.cpp b/engines/chewy/r_event.cpp
index f66b548f0ff..b61b0b1d8da 100644
--- a/engines/chewy/r_event.cpp
+++ b/engines/chewy/r_event.cpp
@@ -47,7 +47,7 @@ void play_scene_ani(int16 nr, int16 mode) {
 #define ROOM_8_17 817
 #define ROOM_9_4 904
 #define ROOM_18_20 1820
-	int16 r_nr = _G(spieler)._personRoomNr[P_CHEWY] * 100 + nr;
+	int16 r_nr = _G(gameState)._personRoomNr[P_CHEWY] * 100 + nr;
 
 	switch (r_nr) {
 	case ROOM_2_3:
@@ -60,7 +60,7 @@ void play_scene_ani(int16 nr, int16 mode) {
 		break;
 
 	case ROOM_18_20:
-		delInventory(_G(spieler).AkInvent);
+		delInventory(_G(gameState).AkInvent);
 		break;
 
 	default:
@@ -101,7 +101,7 @@ void timer_action(int16 t_nr) {
 		return;
 
 #define TIMER(NUM) case NUM: Room##NUM::timer(t_nr, ani_nr); break;
-	switch (_G(spieler)._personRoomNr[P_CHEWY]) {
+	switch (_G(gameState)._personRoomNr[P_CHEWY]) {
 	TIMER(0);
 	TIMER(11);
 	TIMER(12);
@@ -141,7 +141,7 @@ void check_ged_action(int16 index) {
 		_G(flags).GedAction = true;
 
 #define GED_ACTION(NUM) case NUM: Room##NUM::gedAction(index); break;
-		switch (_G(spieler)._personRoomNr[P_CHEWY]) {
+		switch (_G(gameState)._personRoomNr[P_CHEWY]) {
 		GED_ACTION(1);
 		GED_ACTION(2);
 		GED_ACTION(7);
@@ -180,74 +180,74 @@ void check_ged_action(int16 index) {
 int16 ged_user_func(int16 idx_nr) {
 	switch (idx_nr) {
 	case 40:
-		switch (_G(spieler)._personRoomNr[P_CHEWY]) {
+		switch (_G(gameState)._personRoomNr[P_CHEWY]) {
 		case 8:
-			if (_G(spieler).R8GTuer)
+			if (_G(gameState).R8GTuer)
 				idx_nr = 0;
 			break;
 
 		case 9:
-			if (!_G(spieler).R9Gitter)
+			if (!_G(gameState).R9Gitter)
 				idx_nr = 0;
 			break;
 
 		case 16:
-			if (!_G(spieler).R16F5Exit)
+			if (!_G(gameState).R16F5Exit)
 				idx_nr = 0;
 			break;
 
 		case 17:
-			if (_G(spieler).R17Location != 1)
+			if (_G(gameState).R17Location != 1)
 				idx_nr = 0;
 			break;
 
 		case 21:
-			if (!_G(spieler).R21Laser2Weg)
+			if (!_G(gameState).R21Laser2Weg)
 				idx_nr = 0;
 			break;
 
 		case 31:
-			if (!_G(spieler).R31KlappeZu)
+			if (!_G(gameState).R31KlappeZu)
 				idx_nr = 0;
 			break;
 
 		case 41:
-			if (!_G(spieler).R41LolaOk)
+			if (!_G(gameState).R41LolaOk)
 				idx_nr = 0;
 			break;
 
 		case 52:
-			if (!_G(spieler).R52LichtAn)
+			if (!_G(gameState).R52LichtAn)
 				idx_nr = 2;
 			else
 				idx_nr = 4;
 			break;
 
 		case 71:
-			idx_nr = _G(spieler).R71LeopardVined ? 1 : 0;
+			idx_nr = _G(gameState).R71LeopardVined ? 1 : 0;
 			break;
 
 		case 76:
-			idx_nr = _G(spieler).flags29_4 ? 4 : 0;
+			idx_nr = _G(gameState).flags29_4 ? 4 : 0;
 			break;
 
 		case 84:
-			if (!_G(spieler).R88UsedMonkey)
-				_G(spieler).R84GoonsPresent = true;
+			if (!_G(gameState).R88UsedMonkey)
+				_G(gameState).R84GoonsPresent = true;
 			break;
 
 		case 86:
-			if (!_G(spieler).flags32_2)
+			if (!_G(gameState).flags32_2)
 				idx_nr = 0;
 			break;
 
 		case 94:
-			if (!_G(spieler).flags35_10)
+			if (!_G(gameState).flags35_10)
 				idx_nr = 0;
 			break;
 
 		case 97:
-			if (_G(spieler).flags35_80)
+			if (_G(gameState).flags35_80)
 				idx_nr = 0;
 			break;
 
@@ -257,33 +257,33 @@ int16 ged_user_func(int16 idx_nr) {
 		break;
 
 	case 41:
-		switch (_G(spieler)._personRoomNr[P_CHEWY]) {
+		switch (_G(gameState)._personRoomNr[P_CHEWY]) {
 		case 17:
-			if (_G(spieler).R17Location != 2)
+			if (_G(gameState).R17Location != 2)
 				idx_nr = 0;
 			break;
 
 		case 21:
-			if (!_G(spieler).R21Laser1Weg) {
+			if (!_G(gameState).R21Laser1Weg) {
 				idx_nr = 0;
 			} else
 				idx_nr = 3;
 			break;
 
 		case 37:
-			if (!_G(spieler).R37Kloppe)
+			if (!_G(gameState).R37Kloppe)
 				idx_nr = 0;
 			break;
 
 		case 52:
-			if (!_G(spieler).R52TuerAuf)
+			if (!_G(gameState).R52TuerAuf)
 				idx_nr = 2;
 			else
 				idx_nr = 4;
 			break;
 
 		case 97:
-			if (_G(spieler).flags36_20)
+			if (_G(gameState).flags36_20)
 				idx_nr = 0;
 			break;
 
@@ -293,8 +293,8 @@ int16 ged_user_func(int16 idx_nr) {
 		break;
 
 	case 42:
-		if (_G(spieler)._personRoomNr[P_CHEWY] == 97) {
-			if (!_G(spieler).flags37_1)
+		if (_G(gameState)._personRoomNr[P_CHEWY] == 97) {
+			if (!_G(gameState).flags37_1)
 				idx_nr = 0;
 		}
 		break;
@@ -307,23 +307,23 @@ int16 ged_user_func(int16 idx_nr) {
 }
 
 void enter_room(int16 eib_nr) {
-	load_room_music(_G(spieler)._personRoomNr[P_CHEWY]);
-	load_chewy_taf(_G(spieler).ChewyAni);
+	load_room_music(_G(gameState)._personRoomNr[P_CHEWY]);
+	load_chewy_taf(_G(gameState).ChewyAni);
 	_G(atds)->stopAad();
 	_G(atds)->stop_ats();
-	_G(spieler).DiaAMov = -1;
+	_G(gameState).DiaAMov = -1;
 	_G(zoom_mov_fak) = 1;
 
 	for (int16 i = 0; i < MAX_PERSON; i++) {
 		_G(spieler_mi)[i].Vorschub = 8;
-		_G(spieler).ZoomXy[i][0] = 0;
-		_G(spieler).ZoomXy[i][1] = 0;
+		_G(gameState).ZoomXy[i][0] = 0;
+		_G(gameState).ZoomXy[i][1] = 0;
 	}
 
 	_G(flags).ZoomMov = false;
-	_G(spieler).ScrollxStep = 1;
-	_G(spieler).ZoomXy[P_CHEWY][0] = (int16)_G(room)->_roomInfo->_zoomFactor;
-	_G(spieler).ZoomXy[P_CHEWY][1] = (int16)_G(room)->_roomInfo->_zoomFactor;
+	_G(gameState).ScrollxStep = 1;
+	_G(gameState).ZoomXy[P_CHEWY][0] = (int16)_G(room)->_roomInfo->_zoomFactor;
+	_G(gameState).ZoomXy[P_CHEWY][1] = (int16)_G(room)->_roomInfo->_zoomFactor;
 
 	_G(uhr)->resetTimer(0, 0);
 	_G(flags).AutoAniPlay = false;
@@ -334,7 +334,7 @@ void enter_room(int16 eib_nr) {
 #define ENTRY(NUM) case NUM: Room##NUM::entry(); break
 #define ENTRY_NR(NUM) case NUM: Room##NUM::entry(eib_nr); break
 
-	switch (_G(spieler)._personRoomNr[P_CHEWY]) {
+	switch (_G(gameState)._personRoomNr[P_CHEWY]) {
 	ENTRY(0);
 	ENTRY(2);
 	ENTRY(3);
@@ -352,8 +352,8 @@ void enter_room(int16 eib_nr) {
 
 	case 17:
 		Room17::entry();
-		if (_G(spieler).SoundSwitch) {
-			if (!_G(spieler).R17EnergieOut)
+		if (_G(gameState).SoundSwitch) {
+			if (!_G(gameState).R17EnergieOut)
 				g_engine->_sound->playSound(15);
 		}
 		break;
@@ -366,7 +366,7 @@ void enter_room(int16 eib_nr) {
 
 	case 24:
 		Room24::entry();
-		if (_G(spieler).SoundSwitch)
+		if (_G(gameState).SoundSwitch)
 			g_engine->_sound->playSound(17);
 		break;
 
@@ -455,10 +455,10 @@ void exit_room(int16 eib_nr) {
 	bool no_exit = false;
 	_G(det)->disable_room_sound();
 
-	switch (_G(spieler)._personRoomNr[P_CHEWY]) {
+	switch (_G(gameState)._personRoomNr[P_CHEWY]) {
 	case 6:
 		if (eib_nr == 8)
-			_G(spieler).R17Location = 2;
+			_G(gameState).R17Location = 2;
 		break;
 
 	case 11:
@@ -471,14 +471,14 @@ void exit_room(int16 eib_nr) {
 
 	case 18:
 		if (eib_nr == 40)
-			_G(spieler).R17Location = 2;
+			_G(gameState).R17Location = 2;
 		else if (eib_nr == 41)
-			_G(spieler).R17Location = 3;
-		_G(spieler).ScrollxStep = 1;
+			_G(gameState).R17Location = 3;
+		_G(gameState).ScrollxStep = 1;
 		_G(flags).NoScroll = false;
-		_G(spieler).R18Gitter = false;
-		_G(spieler).room_e_obj[50].Attribut = 255;
-		_G(spieler).room_e_obj[41].Attribut = EXIT_BOTTOM;
+		_G(gameState).R18Gitter = false;
+		_G(gameState).room_e_obj[50].Attribut = 255;
+		_G(gameState).room_e_obj[41].Attribut = EXIT_BOTTOM;
 		break;
 
 	case 19:
@@ -487,7 +487,7 @@ void exit_room(int16 eib_nr) {
 
 	case 21:
 		if (eib_nr == 47)
-			_G(spieler).R17Location = 1;
+			_G(gameState).R17Location = 1;
 		_G(flags).NoEndPosMovObj = false;
 		_G(SetUpScreenFunc) = nullptr;
 		load_chewy_taf(CHEWY_NORMAL);
@@ -498,14 +498,14 @@ void exit_room(int16 eib_nr) {
 		break;
 
 	case 23:
-		_G(spieler)._personHide[P_CHEWY] = false;
-		switch (_G(spieler).R23GleiterExit) {
+		_G(gameState)._personHide[P_CHEWY] = false;
+		switch (_G(gameState).R23GleiterExit) {
 		case 16:
 			setPersonPos(126, 110, P_CHEWY, P_RIGHT);
 			break;
 
 		case 25:
-			_G(spieler).R25GleiterExit = true;
+			_G(gameState).R25GleiterExit = true;
 			break;
 
 		default:
@@ -537,8 +537,8 @@ void exit_room(int16 eib_nr) {
 	case 57: Room57::xit(eib_nr); break;
 
 	case 64:
-		if (_G(spieler).R64Moni1Ani == 5)
-			_G(spieler).R64Moni1Ani = 3;
+		if (_G(gameState).R64Moni1Ani == 5)
+			_G(gameState).R64Moni1Ani = 3;
 		break;
 
 	case 65: Room65::xit(); break;
@@ -733,14 +733,14 @@ void exit_room(int16 eib_nr) {
 	}
 
 	if (no_exit) {
-		switch (_G(spieler)._personRoomNr[P_CHEWY]) {
+		switch (_G(gameState)._personRoomNr[P_CHEWY]) {
 		case 40:
 			Room40::xit(eib_nr);
 			break;
 
 		case 42:
-			if (_G(spieler)._personRoomNr[P_HOWARD] == 42)
-				_G(spieler)._personRoomNr[P_HOWARD] = 40;
+			if (_G(gameState)._personRoomNr[P_HOWARD] == 42)
+				_G(gameState)._personRoomNr[P_HOWARD] = 40;
 			break;
 
 		case 50: Room50::xit(eib_nr); break;
@@ -822,7 +822,7 @@ static void playIntroSequence() {
 		start_aad(595);
 		_G(atds)->print_aad(254, 0);
 
-		if (_G(spieler).SpeechSwitch) {
+		if (_G(gameState).SpeechSwitch) {
 			g_engine->_sound->waitForSpeechToFinish();
 		} else {
 			delay(6000);
@@ -860,7 +860,7 @@ void flic_cut(int16 nr) {
 		_G(out)->ausblenden(1);
 		_G(out)->cls();
 		while (_G(sndPlayer)->musicPlaying());
-		_G(sndPlayer)->setLoopMode(_G(spieler).soundLoopMode);
+		_G(sndPlayer)->setLoopMode(_G(gameState).soundLoopMode);
 		break;
 
 	case FCUT_058:
@@ -868,7 +868,7 @@ void flic_cut(int16 nr) {
 		g_engine->_video->playVideo(FCUT_058);
 		g_engine->_video->playVideo(FCUT_059);
 
-		if (!_G(spieler).R43GetPgLady) {
+		if (!_G(gameState).R43GetPgLady) {
 			g_engine->_video->playVideo(FCUT_060);
 		} else {
 			start_aad(623, -1);
@@ -888,7 +888,7 @@ void flic_cut(int16 nr) {
 		load_room_music(256);
 		_G(sndPlayer)->setLoopMode(1);
 		Room46::kloppe();
-		_G(sndPlayer)->setLoopMode(_G(spieler).soundLoopMode);
+		_G(sndPlayer)->setLoopMode(_G(gameState).soundLoopMode);
 		_G(currentSong) = -1;
 		break;
 
@@ -921,13 +921,13 @@ void flic_cut(int16 nr) {
 	SHOULD_QUIT_RETURN;
 
 	g_events->delay(50);
-	g_engine->_sound->setSoundVolume(_G(spieler).SoundVol * Audio::Mixer::kMaxChannelVolume / 120);
-	g_engine->_sound->setMusicVolume(_G(spieler).MusicVol * Audio::Mixer::kMaxChannelVolume / 120);
+	g_engine->_sound->setSoundVolume(_G(gameState).SoundVol * Audio::Mixer::kMaxChannelVolume / 120);
+	g_engine->_sound->setMusicVolume(_G(gameState).MusicVol * Audio::Mixer::kMaxChannelVolume / 120);
 
 	if (nr != FCUT_135) {
-		load_room_music(_G(spieler)._personRoomNr[0]);
+		load_room_music(_G(gameState)._personRoomNr[0]);
 
-		if (_G(spieler).SpeechSwitch)
+		if (_G(gameState).SpeechSwitch)
 			_G(det)->enable_room_sound();
 
 		_G(uhr)->resetTimer(0, 0);
@@ -954,14 +954,14 @@ uint16 exit_flip_flop(int16 ani_nr, int16 eib_nr1, int16 eib_nr2,
 		_G(atds)->set_ats_str(ats_nr2, flag, ATS_DATA);
 	if (flag) {
 		if (eib_nr1 != -1)
-			_G(spieler).room_e_obj[eib_nr1].Attribut = spr_nr1;
+			_G(gameState).room_e_obj[eib_nr1].Attribut = spr_nr1;
 		if (eib_nr2 != -1)
-			_G(spieler).room_e_obj[eib_nr2].Attribut = spr_nr2;
+			_G(gameState).room_e_obj[eib_nr2].Attribut = spr_nr2;
 	} else {
 		if (eib_nr1 != -1)
-			_G(spieler).room_e_obj[eib_nr1].Attribut = 255;
+			_G(gameState).room_e_obj[eib_nr1].Attribut = 255;
 		if (eib_nr2 != -1)
-			_G(spieler).room_e_obj[eib_nr2].Attribut = 255;
+			_G(gameState).room_e_obj[eib_nr2].Attribut = 255;
 	}
 	if (sib_nr != -1)
 		_G(obj)->calc_rsi_flip_flop(sib_nr);
@@ -978,22 +978,22 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_MONOCLE:
-		_G(spieler).R0Monocle = true;
+		_G(gameState).R0Monocle = true;
 		_G(obj)->hide_sib(SIB_MONOCLE);
-		if (_G(spieler).R0Noteboook)
+		if (_G(gameState).R0Noteboook)
 			_G(atds)->delControlBit(12, ATS_ACTIVE_BIT, ATS_DATA);
 		break;
 
 	case SIB_NOTEBOOK:
-		_G(spieler).R0Noteboook = true;
+		_G(gameState).R0Noteboook = true;
 		_G(obj)->hide_sib(SIB_NOTEBOOK);
-		if (_G(spieler).R0Monocle)
+		if (_G(gameState).R0Monocle)
 			_G(atds)->delControlBit(12, ATS_ACTIVE_BIT, ATS_DATA);
 		break;
 
 	case SIB_TERMINAL_R5:
-		if (_G(spieler).R5Terminal) {
-			_G(spieler).R5Terminal = 0;
+		if (_G(gameState).R5Terminal) {
+			_G(gameState).R5Terminal = 0;
 			_G(det)->stop_detail(6);
 			_G(atds)->set_ats_str(27, TXT_MARK_LOOK, 0, ATS_DATA);
 			_G(atds)->set_ats_str(30, TXT_MARK_LOOK, 0, ATS_DATA);
@@ -1017,17 +1017,17 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_TBUTTON1_R7:
-		_G(spieler).R6DoorLeftB = exit_flip_flop(3, 12, 9, 49, 35, SIB_TBUTTON2_R6,
+		_G(gameState).R6DoorLeftB = exit_flip_flop(3, 12, 9, 49, 35, SIB_TBUTTON2_R6,
 		                                     EXIT_TOP, EXIT_LEFT,
-		                                     (int16)_G(spieler).R6DoorLeftB);
+		                                     (int16)_G(gameState).R6DoorLeftB);
 		break;
 
 	case SIB_HEBEL_R7:
-		_G(spieler).R7Hebel ^= 1;
+		_G(gameState).R7Hebel ^= 1;
 
-		if (!_G(spieler).R7Hebel)
+		if (!_G(gameState).R7Hebel)
 			_G(atds)->set_ats_str(50, 0, ATS_DATA);
-		else if (!_G(spieler).R7BorkFlug)
+		else if (!_G(gameState).R7BorkFlug)
 			_G(atds)->set_ats_str(50, 1, ATS_DATA);
 		else
 			_G(atds)->set_ats_str(50, 2, ATS_DATA);
@@ -1038,15 +1038,15 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_GIPS_R7:
-		_G(spieler).R7RHaken = true;
+		_G(gameState).R7RHaken = true;
 		_G(obj)->show_sib(SIB_RHAKEN_R7);
 		_G(obj)->hide_sib(SIB_GIPS_R7);
 		break;
 
 	case SIB_TBUTTON2_R7:
-		_G(spieler).R7DoorRight = exit_flip_flop(4, 13, 14, 53, 68, SIB_TUER_R8,
+		_G(gameState).R7DoorRight = exit_flip_flop(4, 13, 14, 53, 68, SIB_TUER_R8,
 		                                     EXIT_RIGHT, EXIT_RIGHT,
-		                                     (int16)_G(spieler).R7DoorRight);
+		                                     (int16)_G(gameState).R7DoorRight);
 		break;
 
 	case SIB_SCHLOTT_R7:
@@ -1054,9 +1054,9 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_LHAKEN_R7:
-		if (_G(spieler).R7SeilLeft) {
-			if (_G(spieler).R7RHaken) {
-				_G(spieler).R7SeilOk = true;
+		if (_G(gameState).R7SeilLeft) {
+			if (_G(gameState).R7RHaken) {
+				_G(gameState).R7SeilOk = true;
 				autoMove(4, P_CHEWY);
 				_G(obj)->calc_rsi_flip_flop(SIB_LHAKEN_R7);
 				_G(obj)->calc_rsi_flip_flop(SIB_RHAKEN_R7);
@@ -1076,9 +1076,9 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_TUER_R8:
-		_G(spieler).R7DoorRight = exit_flip_flop(-1, 14, 13, 68, 53, SIB_TBUTTON2_R7,
+		_G(gameState).R7DoorRight = exit_flip_flop(-1, 14, 13, 68, 53, SIB_TBUTTON2_R7,
 		                                     EXIT_RIGHT, EXIT_RIGHT,
-		                                     (int16)_G(spieler).R7DoorRight);
+		                                     (int16)_G(gameState).R7DoorRight);
 		break;
 
 	case SIB_DEE_PAINT_R9:
@@ -1090,9 +1090,9 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_BANDBUTTON_R13:
-		_G(spieler).R13Bandlauf ^= 1;
+		_G(gameState).R13Bandlauf ^= 1;
 
-		if (_G(spieler).R13Bandlauf) {
+		if (_G(gameState).R13Bandlauf) {
 			for (int i = 0; i < 5; ++i)
 				_G(det)->startDetail(i, 255, ANI_FRONT);
 		} else {
@@ -1100,9 +1100,9 @@ int16 sib_event_no_inv(int16 sib_nr) {
 				_G(det)->stop_detail(i);
 		}
 
-		_G(atds)->set_ats_str(94, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
-		_G(atds)->set_ats_str(97, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
-		_G(atds)->set_ats_str(93, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
+		_G(atds)->set_ats_str(94, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
+		_G(atds)->set_ats_str(97, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
+		_G(atds)->set_ats_str(93, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
 		break;
 
 	case SIB_CARTRIDGE_R23:
@@ -1110,7 +1110,7 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_FLUXO_R23:
-		_G(spieler).R23FluxoFlex = false;
+		_G(gameState).R23FluxoFlex = false;
 		_G(atds)->set_ats_str(112, 0, ATS_DATA);
 		_G(menu_item_vorwahl) = CUR_USE;
 		break;
@@ -1121,35 +1121,35 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_TALISMAN_R12:
-		_G(spieler).R12Talisman = true;
+		_G(gameState).R12Talisman = true;
 		_G(obj)->hide_sib(SIB_TALISMAN_R12);
 		_G(timer_nr)[0] = _G(room)->set_timer(255, 20);
 		break;
 
 	case SIB_GITTER_R16:
 		_G(atds)->set_ats_str(125, 1, ATS_DATA);
-		_G(spieler).room_e_obj[33].Attribut = EXIT_TOP;
+		_G(gameState).room_e_obj[33].Attribut = EXIT_TOP;
 		break;
 
 	case SIB_SCHALTER1_R21:
-		_G(det)->startDetail(0, 1, _G(spieler).R21Hebel1);
-		_G(spieler).R21Hebel1 ^= 1;
+		_G(det)->startDetail(0, 1, _G(gameState).R21Hebel1);
+		_G(gameState).R21Hebel1 ^= 1;
 		Room21::calc_laser();
-		_G(atds)->set_ats_str(126, TXT_MARK_LOOK, _G(spieler).R21Hebel1, ATS_DATA);
+		_G(atds)->set_ats_str(126, TXT_MARK_LOOK, _G(gameState).R21Hebel1, ATS_DATA);
 		break;
 
 	case SIB_SCHALTER2_R21:
-		_G(det)->startDetail(1, 1, _G(spieler).R21Hebel2);
-		_G(spieler).R21Hebel2 ^= 1;
+		_G(det)->startDetail(1, 1, _G(gameState).R21Hebel2);
+		_G(gameState).R21Hebel2 ^= 1;
 		Room21::calc_laser();
-		_G(atds)->set_ats_str(127, TXT_MARK_LOOK, _G(spieler).R21Hebel2, ATS_DATA);
+		_G(atds)->set_ats_str(127, TXT_MARK_LOOK, _G(gameState).R21Hebel2, ATS_DATA);
 		break;
 
 	case SIB_SCHALTER3_R21:
-		_G(det)->startDetail(2, 1, _G(spieler).R21Hebel3);
-		_G(spieler).R21Hebel3 ^= 1;
+		_G(det)->startDetail(2, 1, _G(gameState).R21Hebel3);
+		_G(gameState).R21Hebel3 ^= 1;
 		Room21::calc_laser();
-		_G(atds)->set_ats_str(128, TXT_MARK_LOOK, _G(spieler).R21Hebel3, ATS_DATA);
+		_G(atds)->set_ats_str(128, TXT_MARK_LOOK, _G(gameState).R21Hebel3, ATS_DATA);
 		break;
 
 	case SIB_SEIL_R21:
@@ -1165,7 +1165,7 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		break;
 
 	case SIB_DOORKNOB_R18:
-		if (_G(spieler).R18DoorBruecke) {
+		if (_G(gameState).R18DoorBruecke) {
 			g_engine->_sound->stopSound(0);
 			g_engine->_sound->playSound(19, 1);
 		} else {
@@ -1173,19 +1173,19 @@ int16 sib_event_no_inv(int16 sib_nr) {
 			g_engine->_sound->stopSound(1);
 		}
 
-		if (!_G(spieler).R6DoorLeftF) {
-			_G(spieler).R6DoorLeftF = exit_flip_flop(-1, 8, -1, 33, -1, SIB_TBUTTON1_R6,
+		if (!_G(gameState).R6DoorLeftF) {
+			_G(gameState).R6DoorLeftF = exit_flip_flop(-1, 8, -1, 33, -1, SIB_TBUTTON1_R6,
 				EXIT_LEFT, -1,
-				(int16)_G(spieler).R6DoorLeftF);
+				(int16)_G(gameState).R6DoorLeftF);
 		}
-		_G(spieler).R18DoorBruecke = exit_flip_flop(19, 40, 35, 148, -1, -1,
+		_G(gameState).R18DoorBruecke = exit_flip_flop(19, 40, 35, 148, -1, -1,
 			EXIT_TOP, EXIT_LEFT,
-			(int16)_G(spieler).R18DoorBruecke);
+			(int16)_G(gameState).R18DoorBruecke);
 		break;
 
 	case SIB_CART_FACH_R18:
 		start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
-		_G(spieler).R18CartFach = 0;
+		_G(gameState).R18CartFach = 0;
 		cur_2_inventory();
 		_G(atds)->set_ats_str(157, 1, AAD_DATA);
 		break;
@@ -1216,7 +1216,7 @@ int16 sib_event_no_inv(int16 sib_nr) {
 	case SIB_TOPF_R31:
 		_G(obj)->hide_sib(SIB_TOPF_R31);
 		_G(atds)->set_ats_str(242, 1, ATS_DATA);
-		_G(spieler).R31PflanzeWeg = true;
+		_G(gameState).R31PflanzeWeg = true;
 		break;
 
 	case SIB_HFUTTER1_R37:
@@ -1233,14 +1233,14 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		_G(obj)->hide_sib(sib_nr);
 		_G(det)->del_static_ani(6);
 		_G(room)->set_timer_status(6, TIMER_STOP);
-		_G(spieler).R40Geld = true;
+		_G(gameState).R40Geld = true;
 		start_spz(CH_PUMP_TALK, 255, ANI_FRONT, P_CHEWY);
 		startAadWait(201);
 		break;
 
 	case SIB_VISIT_R53:
 		_G(obj)->hide_sib(sib_nr);
-		_G(spieler).R53Visit = true;
+		_G(gameState).R53Visit = true;
 		break;
 
 	case SIB_CIGAR_R50:
@@ -1249,13 +1249,13 @@ int16 sib_event_no_inv(int16 sib_nr) {
 
 	case SIB_LAMPE_R52:
 		_G(atds)->delControlBit(338, ATS_ACTIVE_BIT, ATS_DATA);
-		_G(spieler).R52LichtAn ^= 1;
-		check_shad(2 * (_G(spieler).R52LichtAn + 1), 1);
+		_G(gameState).R52LichtAn ^= 1;
+		check_shad(2 * (_G(gameState).R52LichtAn + 1), 1);
 		break;
 
 	case SIB_KAUTABAK_R56:
 		_G(obj)->hide_sib(sib_nr);
-		_G(spieler).R56GetTabak = true;
+		_G(gameState).R56GetTabak = true;
 		break;
 
 	case SIB_ASCHE_R64:
@@ -1269,13 +1269,13 @@ int16 sib_event_no_inv(int16 sib_nr) {
 		_G(cur_hide_flag) = false;
 		hideCur();
 		startAadWait(406);
-		if (_G(spieler)._personRoomNr[P_HOWARD] == 66)
+		if (_G(gameState)._personRoomNr[P_HOWARD] == 66)
 			startAadWait(613);
 		showCur();
 		break;
 
 	case 100:
-		_G(spieler).flags33_1 = true;
+		_G(gameState).flags33_1 = true;
 		break;
 
 	default:
@@ -1290,8 +1290,8 @@ int16 sib_event_no_inv(int16 sib_nr) {
 void sib_event_inv(int16 sib_nr) {
 	switch (sib_nr) {
 	case SIB_TERMINAL_R5:
-		if (!_G(spieler).R5Terminal) {
-			_G(spieler).R5Terminal = true;
+		if (!_G(gameState).R5Terminal) {
+			_G(gameState).R5Terminal = true;
 			cur_2_inventory();
 			delInventory(RED_CARD_INV);
 			start_aad(103, -1);
@@ -1302,23 +1302,23 @@ void sib_event_inv(int16 sib_nr) {
 		break;
 
 	case SIB_TBUTTON1_R6:
-		_G(spieler).R6DoorLeftF = exit_flip_flop(4, 8, -1, 33, -1, -1,
-			EXIT_LEFT, -1, _G(spieler).R6DoorLeftF);
+		_G(gameState).R6DoorLeftF = exit_flip_flop(4, 8, -1, 33, -1, -1,
+			EXIT_LEFT, -1, _G(gameState).R6DoorLeftF);
 		break;
 
 	case SIB_TBUTTON2_R6:
-		_G(spieler).R6DoorLeftB = exit_flip_flop(5, 9, 12, 35, 49, SIB_TBUTTON1_R7,
-			EXIT_LEFT, EXIT_TOP, _G(spieler).R6DoorLeftB);
+		_G(gameState).R6DoorLeftB = exit_flip_flop(5, 9, 12, 35, 49, SIB_TBUTTON1_R7,
+			EXIT_LEFT, EXIT_TOP, _G(gameState).R6DoorLeftB);
 		break;
 
 	case SIB_TBUTTON3_R6:
-		_G(spieler).R6DoorRightB = exit_flip_flop(6, 11, 20, 37, 99, SIB_TBUTTON3_R11,
-			EXIT_RIGHT, EXIT_LEFT, _G(spieler).R6DoorRightB);
+		_G(gameState).R6DoorRightB = exit_flip_flop(6, 11, 20, 37, 99, SIB_TBUTTON3_R11,
+			EXIT_RIGHT, EXIT_LEFT, _G(gameState).R6DoorRightB);
 		break;
 
 	case SIB_BOLA_BUTTON_R6:
-		delInventory(_G(spieler).AkInvent);
-		_G(spieler).R6BolaSchild = true;
+		delInventory(_G(gameState).AkInvent);
+		_G(gameState).R6BolaSchild = true;
 		_G(det)->showStaticSpr(2);
 		_G(obj)->calc_rsi_flip_flop(SIB_BOLA_BUTTON_R6);
 		_G(obj)->hide_sib(SIB_BOLA_BUTTON_R6);
@@ -1349,18 +1349,18 @@ void sib_event_inv(int16 sib_nr) {
 		break;
 
 	case SIB_TBUTTON1_R11:
-		_G(spieler).R11DoorRightF = exit_flip_flop(1, 23, -1, 87, -1, -1,
-			EXIT_TOP, -1, _G(spieler).R11DoorRightF);
+		_G(gameState).R11DoorRightF = exit_flip_flop(1, 23, -1, 87, -1, -1,
+			EXIT_TOP, -1, _G(gameState).R11DoorRightF);
 		break;
 
 	case SIB_TBUTTON2_R11:
-		_G(spieler).R11DoorRightB = exit_flip_flop(5, 22, -1, 98, -1, -1,
-			EXIT_TOP, -1, _G(spieler).R11DoorRightB);
+		_G(gameState).R11DoorRightB = exit_flip_flop(5, 22, -1, 98, -1, -1,
+			EXIT_TOP, -1, _G(gameState).R11DoorRightB);
 		break;
 
 	case SIB_TBUTTON3_R11:
-		_G(spieler).R6DoorRightB = exit_flip_flop(6, 20, 11, 99, 37, SIB_TBUTTON3_R6,
-			EXIT_LEFT, EXIT_RIGHT, _G(spieler).R6DoorRightB);
+		_G(gameState).R6DoorRightB = exit_flip_flop(6, 20, 11, 99, 37, SIB_TBUTTON3_R6,
+			EXIT_LEFT, EXIT_RIGHT, _G(gameState).R6DoorRightB);
 		break;
 
 	case SIB_CARTRIDGE_R23:
@@ -1369,14 +1369,14 @@ void sib_event_inv(int16 sib_nr) {
 		break;
 
 	case SIB_FLUXO_R23:
-		_G(spieler).R23FluxoFlex = true;
-		delInventory(_G(spieler).AkInvent);
+		_G(gameState).R23FluxoFlex = true;
+		delInventory(_G(gameState).AkInvent);
 		_G(atds)->set_ats_str(112, 1, ATS_DATA);
 		_G(menu_item_vorwahl) = CUR_USE;
 		break;
 
 	case SIB_TRANSLATOR_23:
-		delInventory(_G(spieler).AkInvent);
+		delInventory(_G(gameState).AkInvent);
 		_G(atds)->set_ats_str(113, 0, ATS_DATA);
 		_G(menu_item_vorwahl) = CUR_USE;
 		break;
@@ -1386,32 +1386,32 @@ void sib_event_inv(int16 sib_nr) {
 		break;
 
 	case SIB_ROEHRE_R12:
-		_G(spieler).R12TalismanOk = true;
-		delInventory(_G(spieler).AkInvent);
+		_G(gameState).R12TalismanOk = true;
+		delInventory(_G(gameState).AkInvent);
 		_G(atds)->set_ats_str(118, TXT_MARK_LOOK, 1, ATS_DATA);
 		start_spz(CH_TALK6, 255, false, P_CHEWY);
 		startAadWait(115);
 
-		if (_G(spieler).R12TransOn)
+		if (_G(gameState).R12TransOn)
 			Room12::use_linke_rohr();
 		break;
 
 	case SIB_GITTER2_R21:
-		_G(spieler).R21GitterMuell = exit_flip_flop(-1, 46, 27, 132, 90, -1,
-			EXIT_RIGHT, EXIT_RIGHT, _G(spieler).R21GitterMuell);
+		_G(gameState).R21GitterMuell = exit_flip_flop(-1, 46, 27, 132, 90, -1,
+			EXIT_RIGHT, EXIT_RIGHT, _G(gameState).R21GitterMuell);
 		_G(atds)->set_ats_str(90, TXT_MARK_USE, 2, ATS_DATA);
 		break;
 
 	case SIB_CART_FACH_R18:
 		_G(cur_hide_flag) = false;
 		start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
-		_G(spieler).R18CartFach = true;
-		delInventory(_G(spieler).AkInvent);
+		_G(gameState).R18CartFach = true;
+		delInventory(_G(gameState).AkInvent);
 		_G(det)->showStaticSpr(7);
 		_G(atds)->set_ats_str(157, TXT_MARK_LOOK, 1, ATS_DATA);
 
-		if (_G(spieler).R18CartTerminal) {
-			_G(spieler).R18CartSave = true;
+		if (_G(gameState).R18CartTerminal) {
+			_G(gameState).R18CartSave = true;
 			_G(atds)->set_ats_str(CARTRIDGE_INV, 1, INV_ATS_DATA);
 			startAadWait(120);
 		} else {
diff --git a/engines/chewy/room.cpp b/engines/chewy/room.cpp
index b9f4e9c20dc..8f49d4e5d10 100644
--- a/engines/chewy/room.cpp
+++ b/engines/chewy/room.cpp
@@ -542,7 +542,7 @@ void load_chewy_taf(int16 taf_nr) {
 
 		}
 		if (filename != nullptr) {
-			_G(spieler).ChewyAni = taf_nr;
+			_G(gameState).ChewyAni = taf_nr;
 			_G(AkChewyTaf) = taf_nr;
 			_G(chewy) = _G(mem)->taf_adr(filename);
 			_G(chewy_kor) = _G(chewy)->_correction;
@@ -553,8 +553,8 @@ void load_chewy_taf(int16 taf_nr) {
 void switchRoom(int16 nr) {
 	_G(fx_blend) = BLEND1;
 	exit_room(-1);
-	_G(spieler)._personRoomNr[P_CHEWY] = nr;
-	_G(room)->loadRoom(&_G(room_blk), _G(spieler)._personRoomNr[P_CHEWY], &_G(spieler));
+	_G(gameState)._personRoomNr[P_CHEWY] = nr;
+	_G(room)->loadRoom(&_G(room_blk), _G(gameState)._personRoomNr[P_CHEWY], &_G(gameState));
 	enter_room(-1);
 	setupScreen(DO_SETUP);
 }
diff --git a/engines/chewy/rooms/room00.cpp b/engines/chewy/rooms/room00.cpp
index 60c71c30d6f..f2c363198b5 100644
--- a/engines/chewy/rooms/room00.cpp
+++ b/engines/chewy/rooms/room00.cpp
@@ -50,7 +50,7 @@ namespace Rooms {
 #define KOPF3 48
 
 void Room0::entry() {
-	if (isCurInventory(0) || _G(spieler).R0PillowThrow || _G(obj)->checkInventory(0))
+	if (isCurInventory(0) || _G(gameState).R0PillowThrow || _G(obj)->checkInventory(0))
 		_G(det)->hideStaticSpr(6);
 
 	if (!_G(flags).LoadGame) {
@@ -77,40 +77,40 @@ bool Room0::timer(int16 timerNr, int16 aniNr) {
 			_G(uhr)->resetTimer(timerNr, 0);
 			--_G(timer_action_ctr);
 		} else if (!is_chewy_busy()) {
-			if (!_G(spieler).R0FueterLab)
+			if (!_G(gameState).R0FueterLab)
 				_G(timer_action_ctr) = 2;
 
 			_G(flags).AutoAniPlay = true;
-			if (!_G(spieler).R0SlimeUsed) {
+			if (!_G(gameState).R0SlimeUsed) {
 				startAadWait(42);
 				autoMove(5, P_CHEWY);
 				setPersonSpr(P_LEFT, P_CHEWY);
 
-				if (_G(spieler).R0FueterLab < 3) {
+				if (_G(gameState).R0FueterLab < 3) {
 					start_spz(CH_TALK3, 255, false, P_CHEWY);
-					if (_G(spieler).R0FueterLab)
+					if (_G(gameState).R0FueterLab)
 						startAadWait(618);
 					else
 						startAadWait(43);
 
-					++_G(spieler).R0FueterLab;
+					++_G(gameState).R0FueterLab;
 				}
 
 				eyeAnim();
-			} else if (!_G(spieler).R0PillowThrow) {
+			} else if (!_G(gameState).R0PillowThrow) {
 				startAadWait(42);
 				start_spz(CH_TALK3, 255, false, P_CHEWY);
 
-				if (_G(spieler).R0FueterLab < 3) {
+				if (_G(gameState).R0FueterLab < 3) {
 					startAadWait(43);
-					++_G(spieler).R0FueterLab;
+					++_G(gameState).R0FueterLab;
 				}
 
 				autoMove(3, P_CHEWY);
 				setPersonPos(191, 120, P_CHEWY, P_LEFT);
 			}
 
-			if (!_G(spieler).R0PillowThrow)
+			if (!_G(gameState).R0PillowThrow)
 				feederAni();
 
 			_G(uhr)->resetTimer(timerNr, 0);
@@ -125,7 +125,7 @@ bool Room0::timer(int16 timerNr, int16 aniNr) {
 bool Room0::getPillow() {
 	bool retval = false;
 	
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		hideCur();
 		_G(flags).AutoAniPlay = true;
 		autoMove(1, P_CHEWY);
@@ -146,16 +146,16 @@ bool Room0::getPillow() {
 
 bool Room0::pullSlime() {
 	bool retval = false;
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		hideCur();
 		
 		_G(flags).AutoAniPlay = true;
 		autoMove(2, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(3, 1, ANI_FRONT);
 		startSetAILWait(17, 2, ANI_FRONT);
 		setPersonPos(222, 106, P_CHEWY, P_LEFT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		invent_2_slot(1);
 		_G(menu_item) = CUR_WALK;
 		cursorChoice(CUR_WALK);
@@ -170,13 +170,13 @@ bool Room0::pullSlime() {
 }
 
 void Room0::eyeAnim() {
-	if (!_G(spieler).R0SlimeUsed) {
+	if (!_G(gameState).R0SlimeUsed) {
 		// Start the eye animation
 		eyeStart(EYE_START);
-		if (!_G(spieler).R0SlimeUsed)
+		if (!_G(gameState).R0SlimeUsed)
 			eyeWait();
 
-		if (_G(spieler).R0SlimeUsed) {
+		if (_G(gameState).R0SlimeUsed) {
 			start_aad(124);
 			checkSlimeEye();
 			eyeSlimeBack();
@@ -243,7 +243,7 @@ void Room0::eyeStart(EyeMode mode) {
 		if (adi->delay_count > 0)
 			--adi->delay_count;
 		else {
-			adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+			adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 			if (mode == EYE_START) {
 				++adi->ani_count;
 				if (adi->ani_count > 38)
@@ -288,7 +288,7 @@ void Room0::eyeWait() {
 		if (adi->delay_count > 0) {
 			--adi->delay_count;
 		} else {
-			adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+			adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 			++adi->ani_count;
 		}
 
@@ -315,8 +315,8 @@ void Room0::calcEyeClick(int16 aniNr) {
 			}
 		} else if (_G(minfo)._button == 1 || g_events->_kbInfo._keyCode == Common::KEYCODE_RETURN) {
 			if (isCurInventory(SLIME_INV)) {
-				delInventory(_G(spieler).AkInvent);
-				_G(spieler).R0SlimeUsed = true;
+				delInventory(_G(gameState).AkInvent);
+				_G(gameState).R0SlimeUsed = true;
 			} else if (isCurInventory(PILLOW_INV)) {
 				startAtsWait(172, TXT_MARK_WALK, 14, ATS_DATA);
 			}
@@ -333,7 +333,7 @@ void Room0::eyeShoot() {
 
 	while (!ende) {
 		clear_prog_ani();
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		_G(spr_info)[0] = _G(det)->plot_detail_sprite(0, 0, FLAP_DETAIL, FLAP_SPRITE, ANI_HIDE);
 		_G(spr_info)[0]._zLevel = 190;
 		_G(spr_info)[1] = _G(det)->plot_detail_sprite(0, 0, SCHLAUCH_DETAIL, SCHLAUCH2, ANI_HIDE);
@@ -355,7 +355,7 @@ void Room0::eyeShoot() {
 		if (adi->delay_count > 0)
 			--adi->delay_count;
 		else {
-			adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+			adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 			++adi->ani_count;
 		}
 	}
@@ -372,7 +372,7 @@ void Room0::eyeShoot() {
 	waitShowScreen(30);
 	clear_prog_ani();
 	setPersonPos(199 - CH_HOT_MOV_X, 145 - CH_HOT_MOV_Y, P_CHEWY, P_LEFT);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 }
 
 void Room0::eyeSlimeBack() {
@@ -404,7 +404,7 @@ void Room0::eyeSlimeBack() {
 		if (adi->delay_count > 0)
 			--adi->delay_count;
 		else {
-			adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+			adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 			++adi->ani_count;
 			if (adi->ani_count == 77)
 				ende = true;
@@ -424,7 +424,7 @@ void Room0::checkSlimeEye() {
 
 	while (adi->ani_count < adi->end_ani && !SHOULD_QUIT) {
 		clear_prog_ani();
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		_G(spr_info)[0] = _G(det)->plot_detail_sprite(0, 0, FLAP_DETAIL, FLAP_SPRITE, ANI_HIDE);
 		_G(spr_info)[0]._zLevel = 190;
 		_G(spr_info)[1] = _G(det)->plot_detail_sprite(0, 0, SCHLAUCH_DETAIL, SCHLAUCH2, ANI_HIDE);
@@ -438,7 +438,7 @@ void Room0::checkSlimeEye() {
 		if (adi->delay_count > 0)
 			--adi->delay_count;
 		else {
-			adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+			adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 			++adi->ani_count;
 		}
 	}
@@ -448,7 +448,7 @@ void Room0::checkSlimeEye() {
 	}
 
 	clear_prog_ani();
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 }
 
 void Room0::feederStart(int16 mode) {
@@ -472,7 +472,7 @@ void Room0::feederStart(int16 mode) {
 	}
 
 	bool ende = false;
-	if (_G(spieler).R0SlimeUsed)
+	if (_G(gameState).R0SlimeUsed)
 		_G(flags).AniUserAction = true;
 
 	while (!ende) {
@@ -497,7 +497,7 @@ void Room0::feederStart(int16 mode) {
 		if (adi->delay_count > 0)
 			--adi->delay_count;
 		else {
-			adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+			adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 			if (!mode) {
 				++adi->ani_count;
 				if (adi->ani_count > 135)
@@ -522,7 +522,7 @@ void Room0::feederStart(int16 mode) {
 }
 
 void Room0::feederExtend() {
-	for (int16 i = 0; i < 30 && !_G(spieler).R0PillowThrow; i++) {
+	for (int16 i = 0; i < 30 && !_G(gameState).R0PillowThrow; i++) {
 		clear_prog_ani();
 		_G(spr_info)[0] = _G(det)->plot_detail_sprite(0, 0, FLAP_DETAIL, FLAP_SPRITE, ANI_HIDE);
 		_G(spr_info)[0]._zLevel = 190;
@@ -552,9 +552,9 @@ void Room0::calcPillowClick(int16 aniNr) {
 					printShadowed(x, y + i * 10, 255, 300, 0, _G(scr_width), _G(txt)->strPos((char *)str_, i));
 			}
 		} else if (_G(minfo)._button == 1 || g_events->_kbInfo._keyCode == Common::KEYCODE_RETURN) {
-			if (isCurInventory(PILLOW_INV) && _G(spieler).R0SlimeUsed) {
-				delInventory(_G(spieler).AkInvent);
-				_G(spieler).R0PillowThrow = true;
+			if (isCurInventory(PILLOW_INV) && _G(gameState).R0SlimeUsed) {
+				delInventory(_G(gameState).AkInvent);
+				_G(gameState).R0PillowThrow = true;
 			} else if (isCurInventory(SLIME_INV)) {
 				startAtsWait(173, TXT_MARK_WALK, 14, ATS_DATA);
 			}
@@ -569,7 +569,7 @@ void Room0::checkFeed() {
 	int16 i = 152;
 	bool ende = false;
 
-	if (_G(spieler).R0SlimeUsed)
+	if (_G(gameState).R0SlimeUsed)
 		_G(flags).AniUserAction = true;
 
 	while (!ende) {
@@ -578,8 +578,8 @@ void Room0::checkFeed() {
 		_G(spr_info)[0]._zLevel = 190;
 
 		if (adi->ani_count == 136) {
-			_G(spieler)._personHide[P_CHEWY] = true;
-			if (!_G(spieler).R0SlimeUsed)
+			_G(gameState)._personHide[P_CHEWY] = true;
+			if (!_G(gameState).R0SlimeUsed)
 				_G(det)->stop_detail(16);
 		}
 
@@ -606,7 +606,7 @@ void Room0::checkFeed() {
 		if (adi->delay_count > 0)
 			--adi->delay_count;
 		else {
-			adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+			adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 			if (adi->ani_count > 141)
 				++i;
 			++adi->ani_count;
@@ -645,13 +645,13 @@ void Room0::checkFeed() {
 		if (adi->delay_count > 0)
 			--adi->delay_count;
 		else {
-			adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+			adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 			if (adi->ani_count > 135)
 				--adi->ani_count;
 		}
 	}
 
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(flags).AniUserAction = false;
 	clear_prog_ani();
 }
@@ -661,7 +661,7 @@ void Room0::checkPillow() {
 	adi->ani_count = 161;
 
 	bool ende = false;
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	_G(det)->startDetail(CH_WIRFT_KISSEN, 1, ANI_FRONT);
 	bool mode = false;
 
@@ -669,7 +669,7 @@ void Room0::checkPillow() {
 		clear_prog_ani();
 		if (!_G(det)->get_ani_status(CH_WIRFT_KISSEN)) {
 			mode = true;
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			setPersonPos(228 - CH_HOT_MOV_X, 143 - CH_HOT_MOV_Y, P_CHEWY, P_LEFT);
 		}
 
@@ -690,7 +690,7 @@ void Room0::checkPillow() {
 			if (adi->delay_count > 0)
 				--adi->delay_count;
 			else {
-				adi->delay_count = adi->delay + _G(spieler).DelaySpeed;
+				adi->delay_count = adi->delay + _G(gameState).DelaySpeed;
 				--adi->ani_count;
 				if (adi->ani_count == 151)
 					ende = true;
@@ -736,9 +736,9 @@ void Room0::feederAni() {
 	int16 action = false;
 	feederStart(0);
 
-	if (_G(spieler).R0SlimeUsed) {
+	if (_G(gameState).R0SlimeUsed) {
 		feederExtend();
-		if (_G(spieler).R0PillowThrow) {
+		if (_G(gameState).R0PillowThrow) {
 			checkPillow();
 			feederStart(1);
 			autoMove(VERSTECK_POS, P_CHEWY);
@@ -748,8 +748,8 @@ void Room0::feederAni() {
 
 			register_cutscene(1);
 
-			_G(spieler)._personRoomNr[P_CHEWY] = 1;
-			_G(room)->loadRoom(&_G(room_blk), _G(spieler)._personRoomNr[P_CHEWY], &_G(spieler));
+			_G(gameState)._personRoomNr[P_CHEWY] = 1;
+			_G(room)->loadRoom(&_G(room_blk), _G(gameState)._personRoomNr[P_CHEWY], &_G(gameState));
 			setPersonPos(_G(Rdi)->AutoMov[4]._x - CH_HOT_MOV_X,
 			               _G(Rdi)->AutoMov[4]._y - CH_HOT_MOV_Y, P_CHEWY, P_RIGHT);
 			_G(spieler_vector)[P_CHEWY]._delayCount = 0;
diff --git a/engines/chewy/rooms/room01.cpp b/engines/chewy/rooms/room01.cpp
index 23131a7e3ea..e91340a6ef7 100644
--- a/engines/chewy/rooms/room01.cpp
+++ b/engines/chewy/rooms/room01.cpp
@@ -31,18 +31,18 @@ namespace Rooms {
 void Room1::gottenCard() {
 	_G(det)->hideStaticSpr(2);
 	startSetAILWait(4, 1, ANI_FRONT);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(atds)->delControlBit(7, ATS_COUNT_BIT, ATS_DATA);
 }
 
 void Room1::gedAction(int index) {
 	#define KABELABDECKUNG 1
 
-	if (index == 0 && !_G(spieler).R2ElectrocutedBork) {
+	if (index == 0 && !_G(gameState).R2ElectrocutedBork) {
 		bool flag = false;
-		if (_G(spieler).AkInvent == KABEL_INV) {
+		if (_G(gameState).AkInvent == KABEL_INV) {
 			flag = true;
-			delInventory(_G(spieler).AkInvent);
+			delInventory(_G(gameState).AkInvent);
 		} else if (_G(obj)->checkInventory(KABEL_INV)) {
 			flag = true;
 			_G(obj)->del_obj_use(KABEL_INV);
@@ -52,7 +52,7 @@ void Room1::gedAction(int index) {
 		if (flag) {
 			startAadWait(54);
 			_G(atds)->set_ats_str(8, TXT_MARK_LOOK, 0, ATS_DATA);
-			_G(spieler).room_s_obj[KABELABDECKUNG].ZustandFlipFlop = 2;
+			_G(gameState).room_s_obj[KABELABDECKUNG].ZustandFlipFlop = 2;
 			_G(obj)->calc_rsi_flip_flop(KABELABDECKUNG);
 			_G(obj)->calc_all_static_detail();
 		}
diff --git a/engines/chewy/rooms/room02.cpp b/engines/chewy/rooms/room02.cpp
index 3051387ec72..43febf086db 100644
--- a/engines/chewy/rooms/room02.cpp
+++ b/engines/chewy/rooms/room02.cpp
@@ -38,17 +38,17 @@ static const AniBlock ABLOCK4[2] = {
 
 
 void Room2::entry() {
-	if (!_G(spieler).R2ElectrocutedBork)
+	if (!_G(gameState).R2ElectrocutedBork)
 		_G(det)->startDetail(5, 255, ANI_FRONT);
 }
 
 void Room2::jump_out_r1(int16 nr) {
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	startSetAILWait(nr, 1, ANI_FRONT);
 	setupScreen(DO_SETUP);
 	_G(det)->stop_detail(6);
 	setPersonPos(32, 127, P_CHEWY, P_LEFT);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	clear_prog_ani();
 	switchRoom(1);
 	check_shad(2, 1);
@@ -61,8 +61,8 @@ void Room2::electrifyWalkway1() {
 	_G(det)->stop_detail(ANI_5);
 
 	_G(det)->startDetail(GRID_FLASHING, 12, ANI_FRONT);
-	_G(spieler).R2ElectrocutedBork = true;
-	delInventory(_G(spieler).AkInvent);
+	_G(gameState).R2ElectrocutedBork = true;
+	delInventory(_G(gameState).AkInvent);
 
 	_G(atds)->delControlBit(11, ATS_COUNT_BIT, ATS_DATA);
 	_G(atds)->delControlBit(11, ATS_ACTION_BIT, ATS_DATA);
@@ -80,7 +80,7 @@ void Room2::electrifyWalkway2() {
 void Room2::gedAction(int index) {
 	if (index == 0) {
 		_G(det)->stop_detail(5);
-		if (!_G(spieler).R2ElectrocutedBork)
+		if (!_G(gameState).R2ElectrocutedBork)
 			_G(det)->startDetail(6, 2, ANI_FRONT);
 		else
 			startAniBlock(2, ABLOCK4);
diff --git a/engines/chewy/rooms/room03.cpp b/engines/chewy/rooms/room03.cpp
index a292fdffb80..bd98e369d62 100644
--- a/engines/chewy/rooms/room03.cpp
+++ b/engines/chewy/rooms/room03.cpp
@@ -104,14 +104,14 @@ void Room3::terminal() {
 		_G(spr_info)[0]._y = 2;
 		_G(spr_info)[0]._zLevel = 0;
 
-		if (!_G(spieler).R2ElectrocutedBork) {
+		if (!_G(gameState).R2ElectrocutedBork) {
 			_G(det)->stop_detail(5);
 			startAniBlock(2, ABLOCK3);
-			if (_G(spieler).R2FussSchleim) {
-				_G(spieler).R2FussSchleim = false;
-				_G(spieler).room_s_obj[SIB_SLIME].ZustandFlipFlop = 1;
+			if (_G(gameState).R2FussSchleim) {
+				_G(gameState).R2FussSchleim = false;
+				_G(gameState).room_s_obj[SIB_SLIME].ZustandFlipFlop = 1;
 			}
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startSetAILWait(8, 1, ANI_FRONT);
 			setupScreen(DO_SETUP);
 			_G(det)->stop_detail(6);
@@ -119,22 +119,22 @@ void Room3::terminal() {
 			switchRoom(1);
 			startAniBlock(2, ABLOCK0);
 			setPersonPos(92, 131, P_CHEWY, P_LEFT);
-			_G(spieler)._personHide[P_CHEWY] = false;
-		} else if (!_G(spieler).R2FussSchleim) {
+			_G(gameState)._personHide[P_CHEWY] = false;
+		} else if (!_G(gameState).R2FussSchleim) {
 			startAniBlock(2, ABLOCK2);
 			Room2::jump_out_r1(9);
 			startAadWait(45);
 		} else {
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startAniBlock(2, ABLOCK1);
-			_G(spieler)._personRoomNr[P_CHEWY] = 5;
+			_G(gameState)._personRoomNr[P_CHEWY] = 5;
 			clear_prog_ani();
 			_G(auto_obj) = 0;
-			_G(room)->loadRoom(&_G(room_blk), _G(spieler)._personRoomNr[P_CHEWY], &_G(spieler));
+			_G(room)->loadRoom(&_G(room_blk), _G(gameState)._personRoomNr[P_CHEWY], &_G(gameState));
 			_G(fx_blend) = BLEND1;
 			startAniBlock(3, ablock5);
 			setPersonPos(91, 107, P_CHEWY, P_LEFT);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 		}
 		clear_prog_ani();
 		break;
@@ -165,7 +165,7 @@ void Room3::probeInit() {
 	_G(mov_phasen)[SONDE_OBJ].Repeat = 255;
 	_G(mov_phasen)[SONDE_OBJ].ZoomFak = 20;
 	_G(auto_mov_obj)[SONDE_OBJ].Id = AUTO_OBJ0;
-	_G(auto_mov_vector)[SONDE_OBJ].Delay = _G(spieler).DelaySpeed;
+	_G(auto_mov_vector)[SONDE_OBJ].Delay = _G(gameState).DelaySpeed;
 	_G(auto_mov_obj)[SONDE_OBJ].Mode = true;
 	init_auto_obj(SONDE_OBJ, &SONDE_PHASEN[0][0], 3, (const MovLine *)SONDE_MPKT);
 }
@@ -191,7 +191,7 @@ void Room3::probeCreak() {
 	_G(mov_phasen)[SONDE_OBJ].Repeat = 1;
 	_G(mov_phasen)[SONDE_OBJ].ZoomFak = 20;
 	_G(auto_mov_obj)[SONDE_OBJ].Id = AUTO_OBJ0;
-	_G(auto_mov_vector)[SONDE_OBJ].Delay = _G(spieler).DelaySpeed;
+	_G(auto_mov_vector)[SONDE_OBJ].Delay = _G(gameState).DelaySpeed;
 	_G(auto_mov_obj)[SONDE_OBJ].Mode = true;
 	init_auto_obj(SONDE_OBJ, &SONDE_PHASEN[0][0], 3, (MovLine*)sonde_mpkt1);
 	_G(flags).AniUserAction = false;
@@ -203,7 +203,7 @@ void Room3::probeCreak() {
 	while (!ende) {
 		clear_prog_ani();
 		if (rdi->Ainfo[SONDE_SHOOT].ani_count == 170) {
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			_G(det)->startDetail(HEADSHOT, 1, ANI_FRONT);
 		}
 		_G(spr_info)[0] = _G(det)->plot_detail_sprite(0, 0, SONDE_ANI, SONDE_SPR_R, ANI_HIDE);
@@ -238,7 +238,7 @@ void Room3::probeCreak() {
 		_G(spr_info)[1]._zLevel = 190;
 		++ende;
 		if (ende == 3)
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 		set_ani_screen();
 		SHOULD_QUIT_RETURN;
 	}
@@ -302,7 +302,7 @@ void Room3::probeTransfer() {
 	_G(mov_phasen)[SONDE_OBJ].Repeat = 1;
 	_G(mov_phasen)[SONDE_OBJ].ZoomFak = 20;
 	_G(auto_mov_obj)[SONDE_OBJ].Id = AUTO_OBJ0;
-	_G(auto_mov_vector)[SONDE_OBJ].Delay = _G(spieler).DelaySpeed;
+	_G(auto_mov_vector)[SONDE_OBJ].Delay = _G(gameState).DelaySpeed;
 	_G(auto_mov_obj)[SONDE_OBJ].Mode = true;
 	init_auto_obj(SONDE_OBJ, &SONDE_PHASEN[0][0], 2, (const MovLine *)SONDE_MPKT1);
 	_G(atds)->set_ats_str(24, ATS_ACTIVE_BIT, ATS_DATA);
@@ -332,14 +332,14 @@ void Room3::probeTransfer() {
 		_G(mov_phasen)[SONDE_OBJ].ZoomFak = 0;
 		_G(auto_mov_obj)[SONDE_OBJ].Id = AUTO_OBJ0;
 		_G(auto_mov_obj)[SONDE_OBJ].Mode = true;
-		_G(auto_mov_vector)[SONDE_OBJ].Delay = _G(spieler).DelaySpeed;
+		_G(auto_mov_vector)[SONDE_OBJ].Delay = _G(gameState).DelaySpeed;
 		init_auto_obj(SONDE_OBJ, &SONDE_PHASEN[0][0], 2, SONDE_MPKT_[i]);
 		_G(mov_phasen)[SONDE_OBJ1].Lines = 2;
 		_G(mov_phasen)[SONDE_OBJ1].Repeat = 1;
 		_G(mov_phasen)[SONDE_OBJ1].ZoomFak = 0;
 		_G(auto_mov_obj)[SONDE_OBJ1].Id = AUTO_OBJ1;
 		_G(auto_mov_obj)[SONDE_OBJ1].Mode = true;
-		_G(auto_mov_vector)[SONDE_OBJ1].Delay = _G(spieler).DelaySpeed;
+		_G(auto_mov_vector)[SONDE_OBJ1].Delay = _G(gameState).DelaySpeed;
 		init_auto_obj(SONDE_OBJ1, &SONDE_PHASEN[0][0], 2, SONDE_MPKT_[i]);
 		_G(mov_phasen)[SONDE_OBJ1].Phase[0][0] = spr_nr;
 		_G(mov_phasen)[SONDE_OBJ1].Phase[0][1] = spr_nr;
@@ -351,13 +351,13 @@ void Room3::probeTransfer() {
 					if (_G(minfo)._button == 1 || g_events->_kbInfo._keyCode == Common::KEYCODE_RETURN) {
 						if (isCurInventory(SPINAT_INV)) {
 							_G(atds)->set_split_win(0, 120, 100);
-							if (_G(spieler)._personRoomNr[P_CHEWY] == 3)
+							if (_G(gameState)._personRoomNr[P_CHEWY] == 3)
 								start_aad(50);
 							else
 								start_aad(44);
 
-							delInventory(_G(spieler).AkInvent);
-							_G(spieler).R2FussSchleim = true;
+							delInventory(_G(gameState).AkInvent);
+							_G(gameState).R2FussSchleim = true;
 							_G(mov_phasen)[SONDE_OBJ1].Phase[0][0] = 142;
 							_G(mov_phasen)[SONDE_OBJ1].Phase[0][1] = 149;
 							_G(auto_mov_vector)[SONDE_OBJ1].PhAnz = 8;
@@ -386,7 +386,7 @@ void Room3::probeTransfer() {
 			start_aad(52);
 			_G(flags).AniUserAction = true;
 			spr_nr = 141;
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			_G(det)->load_taf_seq(142, 8, nullptr);
 			break;
 
diff --git a/engines/chewy/rooms/room04.cpp b/engines/chewy/rooms/room04.cpp
index 50673cddac0..efed1e07f8c 100644
--- a/engines/chewy/rooms/room04.cpp
+++ b/engines/chewy/rooms/room04.cpp
@@ -47,7 +47,7 @@ int16 Room4::comp_probe() {
 	};
 
 	cur_2_inventory();
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	_G(cur_display) = false;
 	switchRoom(4);
 	_G(cur_display) = true;
@@ -102,7 +102,7 @@ int16 Room4::comp_probe() {
 			_G(curani)._end = HAND_NORMAL;
 		}
 		cursorChoice(CUR_USER);
-		_G(spieler)._curHeight = 16;
+		_G(gameState)._curHeight = 16;
 
 		if (g_events->_mousePos.y < 124)
 			g_events->_mousePos.y = 123;
@@ -113,15 +113,15 @@ int16 Room4::comp_probe() {
 	g_events->delay(500);
 
 	clear_prog_ani();
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(menu_item) = CUR_WALK;
 	cursorChoice(_G(menu_item));
 
 	_G(spieler_vector)[P_CHEWY]._delayCount = 0;
 	_G(mouseLeftClick) = false;
 	_G(minfo)._button = 0;
-	_G(spieler)._personRoomNr[P_CHEWY] = 3;
-	_G(room)->loadRoom(&_G(room_blk), 3, &_G(spieler));
+	_G(gameState)._personRoomNr[P_CHEWY] = 3;
+	_G(room)->loadRoom(&_G(room_blk), 3, &_G(gameState));
 	setPersonPos(110, 139, P_CHEWY, P_LEFT);
 
 	_G(fx_blend) = BLEND1;
diff --git a/engines/chewy/rooms/room05.cpp b/engines/chewy/rooms/room05.cpp
index 4bd7d47ae8d..4c7b44a31c8 100644
--- a/engines/chewy/rooms/room05.cpp
+++ b/engines/chewy/rooms/room05.cpp
@@ -30,24 +30,24 @@ namespace Chewy {
 namespace Rooms {
 
 void Room5::entry() {
-	if (_G(spieler).R5Terminal)
+	if (_G(gameState).R5Terminal)
 		_G(det)->startDetail(6, 255, ANI_FRONT);
 }
 
 void Room5::pushButton() {
-	if (_G(spieler).R5Terminal) {
+	if (_G(gameState).R5Terminal) {
 		int16 strNr;
-		if (_G(spieler).R5Door == false) {
+		if (_G(gameState).R5Door == false) {
 			startSetAILWait(9, 1, ANI_FRONT);
-			_G(spieler).room_e_obj[6].Attribut = EXIT_TOP;
+			_G(gameState).room_e_obj[6].Attribut = EXIT_TOP;
 			strNr = 1;
 		} else {
 			startSetAILWait(9, 1, ANI_BACK);
-			_G(spieler).room_e_obj[6].Attribut = 255;
+			_G(gameState).room_e_obj[6].Attribut = 255;
 			strNr = 0;
 		}
 		_G(atds)->set_ats_str(29, strNr, ATS_DATA);
-		_G(spieler).R5Door ^= 1;
+		_G(gameState).R5Door ^= 1;
 		_G(obj)->calc_rsi_flip_flop(SIB_DOOR_R5);
 	} else {
 		startAadWait(1);
diff --git a/engines/chewy/rooms/room06.cpp b/engines/chewy/rooms/room06.cpp
index a5c2ffb1efa..57cda6f7ead 100644
--- a/engines/chewy/rooms/room06.cpp
+++ b/engines/chewy/rooms/room06.cpp
@@ -58,18 +58,18 @@ void Room6::entry() {
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 2;
 
-	if (_G(spieler).R6BolaSchild && _G(spieler).R6RaumBetreten < 2) {
+	if (_G(gameState).R6BolaSchild && _G(gameState).R6RaumBetreten < 2) {
 		_G(det)->startDetail(7, 255, ANI_FRONT);
 		_G(atds)->delControlBit(44, ATS_ACTIVE_BIT, ATS_DATA);
 		if (!_G(flags).LoadGame)
-			++_G(spieler).R6RaumBetreten;
+			++_G(gameState).R6RaumBetreten;
 
-		if (_G(spieler).R6RaumBetreten == 2) {
+		if (_G(gameState).R6RaumBetreten == 2) {
 			hideCur();
 			_G(det)->stop_detail(7);
 			init_robo();
 			wait_auto_obj(0);
-			_G(spieler).R6BolaOk = true;
+			_G(gameState).R6BolaOk = true;
 			_G(obj)->show_sib(SIB_BOLA_BUTTON_R6);
 			_G(obj)->hide_sib(SIB_BOLA_R6);
 			_G(atds)->setControlBit(44, ATS_ACTIVE_BIT, ATS_DATA);
@@ -86,17 +86,17 @@ void Room6::init_robo() {
 	_G(mov_phasen)[ROBO_OBJ].Repeat = 1;
 	_G(mov_phasen)[ROBO_OBJ].ZoomFak = 0;
 	_G(auto_mov_obj)[ROBO_OBJ].Id = AUTO_OBJ0;
-	_G(auto_mov_vector)[ROBO_OBJ].Delay = _G(spieler).DelaySpeed;
+	_G(auto_mov_vector)[ROBO_OBJ].Delay = _G(gameState).DelaySpeed;
 	_G(auto_mov_obj)[ROBO_OBJ].Mode = true;
 	init_auto_obj(ROBO_OBJ, &ROBO_PHASEN[0][0], 3, (const MovLine *)ROBO_MPKT);
 }
 
 void Room6::bola_button() {
-	if (!_G(spieler).R6BolaBecher) {
+	if (!_G(gameState).R6BolaBecher) {
 		_G(det)->hideStaticSpr(0);
 		startSetAILWait(0, 1, ANI_FRONT);
-		if (_G(spieler).R6BolaOk) {
-			_G(spieler).R6BolaBecher = true;
+		if (_G(gameState).R6BolaOk) {
+			_G(gameState).R6BolaBecher = true;
 			_G(det)->showStaticSpr(0);
 			startAniBlock(2, ABLOCK7);
 			_G(obj)->calc_rsi_flip_flop(SIB_BOLA_FLECK_R6);
@@ -107,18 +107,18 @@ void Room6::bola_button() {
 			_G(obj)->calc_rsi_flip_flop(SIB_BOLA_BUTTON_R6);
 			_G(obj)->hide_sib(SIB_BOLA_BUTTON_R6);
 		} else {
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startAniBlock(3, ABLOCK6);
 			while (_G(det)->get_ani_status(3) && !SHOULD_QUIT) {
 				if (!_G(det)->get_ani_status(14)) {
 					setPersonPos(220, 89, P_CHEWY, P_LEFT);
-					_G(spieler)._personHide[P_CHEWY] = false;
+					_G(gameState)._personHide[P_CHEWY] = false;
 				}
 				setupScreen(DO_SETUP);
 			}
 			_G(det)->showStaticSpr(0);
-			++_G(spieler).R6BolaJoke;
-			int16 diaNr = (_G(spieler).R6BolaJoke < 3) ? 3 : 4;
+			++_G(gameState).R6BolaJoke;
+			int16 diaNr = (_G(gameState).R6BolaJoke < 3) ? 3 : 4;
 			start_spz(CH_TALK5, 244, false, 0);
 			startAadWait(diaNr);
 		}
diff --git a/engines/chewy/rooms/room07.cpp b/engines/chewy/rooms/room07.cpp
index 2a5bf645498..e756c0cddbd 100644
--- a/engines/chewy/rooms/room07.cpp
+++ b/engines/chewy/rooms/room07.cpp
@@ -43,19 +43,19 @@ static const AniBlock ABLOCK25[3] = {
 
 
 void Room7::entry() {
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 }
 
 void Room7::hook(int16 sibNr) {
 	int16 diaNr;
 
 	delInventory(8);
-	_G(spieler).AkInvent = -1;
+	_G(gameState).AkInvent = -1;
 	_G(menu_item) = CUR_WALK;
 	cursorChoice(_G(menu_item));
 
-	if (_G(spieler).R7RHaken) {
-		_G(spieler).R7SeilOk = true;
+	if (_G(gameState).R7RHaken) {
+		_G(gameState).R7SeilOk = true;
 		if (sibNr == SIB_LHAKEN_R7) {
 			_G(obj)->calc_rsi_flip_flop(SIB_LHAKEN_R7);
 			_G(obj)->calc_rsi_flip_flop(SIB_RHAKEN_R7);
@@ -64,7 +64,7 @@ void Room7::hook(int16 sibNr) {
 		_G(atds)->set_ats_str(55, TXT_MARK_LOOK, 1, ATS_DATA);
 		diaNr = 9;
 	} else {
-		_G(spieler).R7SeilLeft = true;
+		_G(gameState).R7SeilLeft = true;
 		diaNr = 48;
 	}
 
@@ -76,9 +76,9 @@ void Room7::hook(int16 sibNr) {
 void Room7::bell() {
 	hideCur();
 	
-	if ((!_G(spieler).R7BellCount) ||
-		(_G(spieler).R7BellCount >= 2 && _G(spieler).R7SeilLeft && !_G(spieler).R7SeilOk)) {
-		_G(spieler)._personHide[P_CHEWY] = true;
+	if ((!_G(gameState).R7BellCount) ||
+		(_G(gameState).R7BellCount >= 2 && _G(gameState).R7SeilLeft && !_G(gameState).R7SeilOk)) {
+		_G(gameState)._personHide[P_CHEWY] = true;
 		start_aad(5, 0);
 		startAniBlock(3, ABLOCK25);
 
@@ -88,9 +88,9 @@ void Room7::bell() {
 		_G(det)->hideStaticSpr(7);
 		_G(det)->stop_detail(5);
 		setPersonPos(95, 94, P_CHEWY, P_RIGHT);
-		_G(spieler)._personHide[P_CHEWY] = false;
-	} else if (_G(spieler).R7BellCount == 1) {
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = false;
+	} else if (_G(gameState).R7BellCount == 1) {
+		_G(gameState)._personHide[P_CHEWY] = true;
 		start_aad(6, 0);
 		startAniBlock(3, ABLOCK25);
 		_G(det)->showStaticSpr(7);
@@ -99,17 +99,17 @@ void Room7::bell() {
 		setPersonPos(95, 94, P_CHEWY, P_RIGHT);
 		_G(det)->stop_detail(5);
 
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(flags).NoScroll = true;
 		autoMove(6, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 
 		_G(det)->startDetail(0, 255, ANI_FRONT);
 		startSetAILWait(13, 1, ANI_FRONT);
 		flic_cut(FCUT_001);
 		_G(det)->stop_detail(0);
-		_G(spieler).scrollx = 0;
-		_G(spieler).scrolly = 0;
+		_G(gameState).scrollx = 0;
+		_G(gameState).scrolly = 0;
 		setPersonPos(114, 138, P_CHEWY, -1);
 
 		startDetailFrame(19, 1, ANI_FRONT, 6);
@@ -120,12 +120,12 @@ void Room7::bell() {
 		_G(obj)->show_sib(SIB_SCHLOTT_R7);
 		_G(obj)->calc_rsi_flip_flop(SIB_SCHLOTT_R7);
 
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(flags).NoScroll = false;
 		_G(det)->hideStaticSpr(7);
 
-	} else if (!_G(spieler).R7SeilOk) {
-		_G(spieler)._personHide[P_CHEWY] = true;
+	} else if (!_G(gameState).R7SeilOk) {
+		_G(gameState)._personHide[P_CHEWY] = true;
 		start_aad(7, 0);
 		startAniBlock(3, ABLOCK25);
 		_G(det)->showStaticSpr(7);
@@ -133,24 +133,24 @@ void Room7::bell() {
 		_G(det)->startDetail(14, 1, ANI_FRONT);
 		setPersonPos(95, 94, P_CHEWY, P_RIGHT);
 		_G(det)->stop_detail(5);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 
 		_G(flags).NoScroll = true;
 		autoMove(6, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		_G(det)->startDetail(0, 255, ANI_FRONT);
 		waitDetail(14);
 		startAniBlock(4, ABLOCK10);
 		_G(det)->hideStaticSpr(7);
 		_G(det)->stop_detail(0);
 		setPersonPos(181, 130, P_CHEWY, P_RIGHT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(flags).NoScroll = false;
 		_G(det)->del_taf_tbl(192, 74, nullptr);
 
-	} else if (_G(spieler).R7SeilOk && !_G(spieler).R7BorkFlug) {
-		_G(spieler).R7BorkFlug = true;
-		_G(spieler)._personHide[P_CHEWY] = true;
+	} else if (_G(gameState).R7SeilOk && !_G(gameState).R7BorkFlug) {
+		_G(gameState).R7BorkFlug = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		start_aad(8, 0);
 		startSetAILWait(1, 1, ANI_FRONT);
 		_G(obj)->set_rsi_flip_flop(SIB_TBUTTON2_R7, 255);
@@ -159,26 +159,26 @@ void Room7::bell() {
 		register_cutscene(2);
 		flic_cut(FCUT_002);
 		setPersonPos(201, 117, P_CHEWY, P_LEFT);
-		_G(spieler).scrollx = 0;
-		_G(spieler).scrolly = 0;
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState).scrollx = 0;
+		_G(gameState).scrolly = 0;
+		_G(gameState)._personHide[P_CHEWY] = false;
 	}
 
-	++_G(spieler).R7BellCount;
+	++_G(gameState).R7BellCount;
 
 	showCur();
 }
 
 void Room7::gedAction(int index) {
-	if (index == 0 && _G(spieler).R7BorkFlug && _G(spieler).R7ChewyFlug) {
-		_G(spieler)._personHide[P_CHEWY] = true;
+	if (index == 0 && _G(gameState).R7BorkFlug && _G(gameState).R7ChewyFlug) {
+		_G(gameState)._personHide[P_CHEWY] = true;
 		setPersonPos(180, 124, P_CHEWY, P_LEFT);
 		startSetAILWait(20, 1, ANI_FRONT);
 		_G(det)->showStaticSpr(10);
-		waitShowScreen(10 * _G(spieler).DelaySpeed);
+		waitShowScreen(10 * _G(gameState).DelaySpeed);
 		_G(det)->hideStaticSpr(10);
-		_G(spieler)._personHide[P_CHEWY] = false;
-		_G(spieler).R7ChewyFlug = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
+		_G(gameState).R7ChewyFlug = false;
 	}
 }
 
diff --git a/engines/chewy/rooms/room08.cpp b/engines/chewy/rooms/room08.cpp
index 6349c06e365..2bb388b744c 100644
--- a/engines/chewy/rooms/room08.cpp
+++ b/engines/chewy/rooms/room08.cpp
@@ -41,8 +41,8 @@ static const AniBlock ABLOCK13[2] = {
 };
 
 void Room8::entry() {
-	_G(spieler).R7ChewyFlug = true;
-	if (!_G(spieler).R8Folter)
+	_G(gameState).R7ChewyFlug = true;
+	if (!_G(gameState).R8Folter)
 		start_folter();
 	else
 		stop_folter();
@@ -61,22 +61,22 @@ void Room8::stop_folter() {
 
 	_G(det)->stop_detail(13);
 
-	_G(spieler).R8Folter = true;
+	_G(gameState).R8Folter = true;
 	_G(obj)->hide_sib(SIB_FOLTER_R8);
 }
 
 void Room8::hole_kohle() {
-	if (_G(spieler).R8Kohle) {
+	if (_G(gameState).R8Kohle) {
 		startAadWait(604);
 	} else {
 		hideCur();
-		_G(spieler).R8Kohle = true;
+		_G(gameState).R8Kohle = true;
 		autoMove(4, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(12, 1, ANI_FRONT);
 		cur_2_inventory();
 		invent_2_slot(KOHLE_HEISS_INV);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		showCur();
 	}
 }
@@ -84,10 +84,10 @@ void Room8::hole_kohle() {
 void Room8::start_verbrennen() {
 	hideCur();
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		autoMove(3, P_CHEWY);
 		start_aad(102, 0);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startAniBlock(2, ABLOCK12);
 
 		while (_G(det)->get_ani_status(9)) {
@@ -105,7 +105,7 @@ void Room8::start_verbrennen() {
 		setPersonPos(129, 246, P_CHEWY, P_RIGHT);
 		startAniBlock(2, ABLOCK13);
 		_G(atds)->set_ats_str(60, TXT_MARK_LOOK, 1, ATS_DATA);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 	}
 
 	showCur();
@@ -121,18 +121,18 @@ bool Room8::gips_wurf() {
 		autoMove(2, P_CHEWY);
 		_G(mouseLeftClick) = false;
 
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		delInventory(GIPS_EIMER_INV);
 		startSetAILWait(4, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 
 		startDetailFrame(5, 1, ANI_FRONT, 16);
 		startSetAILWait(6, 1, ANI_FRONT);
 		_G(obj)->show_sib(33);
 		_G(det)->showStaticSpr(14);
 		waitDetail(5);
-		_G(spieler).R8GipsWurf = true;
-		_G(spieler).room_m_obj[MASKE_INV].ZEbene = 0;
+		_G(gameState).R8GipsWurf = true;
+		_G(gameState).room_m_obj[MASKE_INV].ZEbene = 0;
 		_G(obj)->setInventory(MASKE_INV, 181, 251, 8, &_G(room_blk));
 		_G(det)->del_taf_tbl(116, 30, nullptr);
 		autoMove(8, P_CHEWY);
@@ -140,9 +140,9 @@ bool Room8::gips_wurf() {
 		_G(menu_item) = CUR_USE;
 		Dialogs::Inventory::look_screen(INVENTORY_NORMAL, 178);
 		_G(flags).AtsAction = true;
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(20, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		invent_2_slot(MASKE_INV);
 		cursorChoice(_G(menu_item));
 		showCur();
@@ -152,28 +152,28 @@ bool Room8::gips_wurf() {
 }
 
 void Room8::open_gdoor() {
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	_G(det)->showStaticSpr(17);
 	setupScreen(DO_SETUP);
 	startSetAILWait(7, 1, ANI_FRONT);
 	_G(det)->showStaticSpr(15);
 	_G(det)->hideStaticSpr(17);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	setPersonPos(204, 274, P_CHEWY, P_LEFT);
 	_G(atds)->delControlBit(69, ATS_ACTIVE_BIT, ATS_DATA);
 	_G(obj)->hide_sib(31);
-	_G(spieler).R8GTuer = true;
-	_G(spieler).room_e_obj[15].Attribut = EXIT_BOTTOM;
+	_G(gameState).R8GTuer = true;
+	_G(gameState).room_e_obj[15].Attribut = EXIT_BOTTOM;
 }
 
 void Room8::talk_nimoy() {
 	autoMove(9, P_CHEWY);
 	_G(flags).NoScroll = true;
 	auto_scroll(0, 120);
-	if (_G(spieler).R8Folter) {
-		int16 diaNr = _G(spieler).R8GipsWurf ? 2 : 1;
+	if (_G(gameState).R8Folter) {
+		int16 diaNr = _G(gameState).R8GipsWurf ? 2 : 1;
 
-		if (!_G(spieler).R8GTuer)
+		if (!_G(gameState).R8GTuer)
 			loadAdsDia(diaNr);
 		else
 			startAadWait(61);
diff --git a/engines/chewy/rooms/room09.cpp b/engines/chewy/rooms/room09.cpp
index c3a2618cdc2..9f024aa454d 100644
--- a/engines/chewy/rooms/room09.cpp
+++ b/engines/chewy/rooms/room09.cpp
@@ -46,21 +46,21 @@ static const MovLine SURIMY_MPKT1[2] = {
 };
 
 void Room9::entry() {
-	_G(spieler).R7ChewyFlug = false;
+	_G(gameState).R7ChewyFlug = false;
 
-	if (!_G(spieler).R9Gitter)
+	if (!_G(gameState).R9Gitter)
 		setPersonPos(138, 91, P_CHEWY, P_LEFT);
 	else
 		_G(det)->showStaticSpr(5);
 
-	if (_G(spieler).R9Surimy) {
+	if (_G(gameState).R9Surimy) {
 		_G(det)->hideStaticSpr(4);
 		_G(room)->set_timer_status(7, TIMER_STOP);
 	}
 }
 
 void Room9::gtuer() {
-	_G(spieler).R9Gitter = true;
+	_G(gameState).R9Gitter = true;
 	_G(det)->showStaticSpr(5);
 	startSetAILWait(6, 1, ANI_FRONT);
 	setPersonPos(74, 93, P_CHEWY, P_LEFT);
@@ -73,7 +73,7 @@ void Room9::gtuer() {
 
 void Room9::surimy() {
 	hideCur();
-	_G(spieler).R9Surimy = true;
+	_G(gameState).R9Surimy = true;
 	const int16 tmp = _G(spieler_vector)[P_CHEWY].Count;
 	stopPerson(P_CHEWY);
 	_G(atds)->setControlBit(75, ATS_ACTIVE_BIT, ATS_DATA);
@@ -82,7 +82,7 @@ void Room9::surimy() {
 	surimy_ani();
 	start_spz(CH_TALK11, 255, false, P_CHEWY);
 	startAadWait(56);
-	_G(spieler).room_e_obj[17].Attribut = EXIT_RIGHT;
+	_G(gameState).room_e_obj[17].Attribut = EXIT_RIGHT;
 	_G(spieler_vector)[P_CHEWY].Count = tmp;
 	get_phase(&_G(spieler_vector)[P_CHEWY], &_G(spieler_mi)[P_CHEWY]);
 	_G(mov)->continue_auto_go();
@@ -97,7 +97,7 @@ void Room9::surimy_ani() {
 	_G(mov_phasen)[SURIMY_OBJ].Repeat = 1;
 	_G(mov_phasen)[SURIMY_OBJ].ZoomFak = 0;
 	_G(auto_mov_obj)[SURIMY_OBJ].Id = AUTO_OBJ0;
-	_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(spieler).DelaySpeed;
+	_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(gameState).DelaySpeed;
 	_G(auto_mov_obj)[SURIMY_OBJ].Mode = true;
 	init_auto_obj(SURIMY_OBJ, &SURIMY_PHASEN[0][0], 2, (const MovLine *)SURIMY_MPKT);
 	wait_auto_obj(SURIMY_OBJ);
@@ -114,7 +114,7 @@ void Room9::surimy_ani() {
 }
 
 void Room9::gedAction(int index) {
-	if (index == 0 && !_G(spieler).R9Surimy)
+	if (index == 0 && !_G(gameState).R9Surimy)
 		surimy();
 }
 
diff --git a/engines/chewy/rooms/room10.cpp b/engines/chewy/rooms/room10.cpp
index 8a8b1f51bab..6d49a2f9c12 100644
--- a/engines/chewy/rooms/room10.cpp
+++ b/engines/chewy/rooms/room10.cpp
@@ -29,12 +29,12 @@ namespace Chewy {
 namespace Rooms {
 
 void Room10::entry() {
-	if (!_G(spieler).R10Surimy) {
+	if (!_G(gameState).R10Surimy) {
 		_G(out)->setPointer(_G(workptr));
-		_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage], _G(spieler).scrollx, _G(spieler).scrolly);
+		_G(out)->map_spr2screen(_G(ablage)[_G(room_blk).AkAblage], _G(gameState).scrollx, _G(gameState).scrolly);
 		_G(out)->setPointer(nullptr);
 		_G(fx)->blende1(_G(workptr), _G(screen0), _G(pal), 150, 0, 0);
-		_G(spieler).R10Surimy = true;
+		_G(gameState).R10Surimy = true;
 		_G(fx_blend) = BLEND_NONE;
 		flic_cut(FCUT_003);
 		setPersonPos(0, 130, P_CHEWY, P_RIGHT);
@@ -44,7 +44,7 @@ void Room10::entry() {
 		startAadWait(101);
 		showCur();
 
-	} else if (_G(spieler).R10SurimyOk) {
+	} else if (_G(gameState).R10SurimyOk) {
 		_G(room)->set_timer_status(3, TIMER_STOP);
 	}
 }
@@ -54,12 +54,12 @@ void Room10::get_surimy() {
 	autoMove(4, P_CHEWY);
 	start_aad(104, 0);
 	flic_cut(FCUT_005);
-	_G(spieler).R10SurimyOk = true;
+	_G(gameState).R10SurimyOk = true;
 	_G(room)->set_timer_status(3, TIMER_STOP);
 	_G(atds)->set_ats_str(77, TXT_MARK_LOOK, 1, ATS_DATA);
 	invent_2_slot(18);
 
-	delInventory(_G(spieler).AkInvent);
+	delInventory(_G(gameState).AkInvent);
 	showCur();
 }
 
diff --git a/engines/chewy/rooms/room11.cpp b/engines/chewy/rooms/room11.cpp
index b89394d170e..54af8b027c6 100644
--- a/engines/chewy/rooms/room11.cpp
+++ b/engines/chewy/rooms/room11.cpp
@@ -45,11 +45,11 @@ void Room11::entry() {
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 2;
 
-	if (_G(spieler).R12ChewyBork) {
-		if (!_G(spieler).R11DoorRightB) {
+	if (_G(gameState).R12ChewyBork) {
+		if (!_G(gameState).R11DoorRightB) {
 			_G(obj)->calc_rsi_flip_flop(SIB_TBUTTON2_R11);
-			_G(spieler).R11DoorRightB = exit_flip_flop(5, 22, -1, 98, -1, -1,
-				EXIT_TOP, -1, (int16)_G(spieler).R11DoorRightB);
+			_G(gameState).R11DoorRightB = exit_flip_flop(5, 22, -1, 98, -1, -1,
+				EXIT_TOP, -1, (int16)_G(gameState).R11DoorRightB);
 			_G(obj)->calc_all_static_detail();
 		}
 
@@ -57,8 +57,8 @@ void Room11::entry() {
 		_G(obj)->hide_sib(SIB_SCHLITZ_R11);
 		_G(obj)->hide_sib(SIB_TBUTTON2_R11);
 		_G(obj)->hide_sib(SIB_TBUTTON3_R11);
-		_G(spieler).room_e_obj[20].Attribut = 255;
-		_G(spieler).room_e_obj[21].Attribut = 255;
+		_G(gameState).room_e_obj[20].Attribut = 255;
+		_G(gameState).room_e_obj[21].Attribut = 255;
 		_G(atds)->delControlBit(121, ATS_ACTIVE_BIT, ATS_DATA);
 
 		if (!_G(flags).LoadGame) {
@@ -104,7 +104,7 @@ void Room11::bork_zwinkert() {
 }
 
 void Room11::talk_debug() {
-	if (_G(spieler).R12ChewyBork) {
+	if (_G(gameState).R12ChewyBork) {
 		_G(flags).AutoAniPlay = true;
 		autoMove(8, P_CHEWY);
 		startAdsWait(5);
@@ -116,7 +116,7 @@ void Room11::talk_debug() {
 }
 
 void Room11::chewy_bo_use() {
-	if (_G(spieler).R12ChewyBork) {
+	if (_G(gameState).R12ChewyBork) {
 		hideCur();
 		_G(flags).AutoAniPlay = true;
 
@@ -136,10 +136,10 @@ void Room11::chewy_bo_use() {
 int16 Room11::scanner() {
 	int16 actionFl = false;
 
-	if (!_G(spieler).R12ChewyBork) {
+	if (!_G(gameState).R12ChewyBork) {
 		autoMove(7, P_CHEWY);
 
-		if (!_G(spieler).R11CardOk) {
+		if (!_G(gameState).R11CardOk) {
 			actionFl = true;
 			startAadWait(13);
 		} else if (isCurInventory(BORK_INV)) {
@@ -150,15 +150,15 @@ int16 Room11::scanner() {
 			start_aad(105, 0);
 			flic_cut(FCUT_010);
 			register_cutscene(4);
-			_G(spieler).R11TerminalOk = true;
+			_G(gameState).R11TerminalOk = true;
 			cur_2_inventory();
 			_G(menu_item) = CUR_TALK;
 			cursorChoice(_G(menu_item));
 			startAadWait(12);
 			showCur();
 			loadAdsDia(3);
-		} else if (!_G(spieler).inv_cur) {
-			if (!_G(spieler).R11TerminalOk) {
+		} else if (!_G(gameState).inv_cur) {
+			if (!_G(gameState).R11TerminalOk) {
 				actionFl = true;
 				flic_cut(FCUT_009);
 				startAadWait(20);
@@ -176,12 +176,12 @@ int16 Room11::scanner() {
 }
 
 void Room11::get_card() {
-	if (_G(spieler).R11CardOk) {
+	if (_G(gameState).R11CardOk) {
 		cur_2_inventory();
-		_G(spieler).R11CardOk = false;
-		_G(obj)->addInventory(_G(spieler).R11IdCardNr, &_G(room_blk));
+		_G(gameState).R11CardOk = false;
+		_G(obj)->addInventory(_G(gameState).R11IdCardNr, &_G(room_blk));
 
-		_G(spieler).AkInvent = _G(spieler).R11IdCardNr;
+		_G(gameState).AkInvent = _G(gameState).R11IdCardNr;
 		cursorChoice(CUR_AK_INVENT);
 		cursorChoice(CUR_AK_INVENT);
 		_G(det)->stop_detail(0);
@@ -192,14 +192,14 @@ void Room11::get_card() {
 
 void Room11::put_card() {
 	if (isCurInventory(RED_CARD_INV) || isCurInventory(YEL_CARD_INV)) {
-		_G(spieler).R11IdCardNr = _G(spieler).AkInvent;
-		delInventory(_G(spieler).R11IdCardNr);
+		_G(gameState).R11IdCardNr = _G(gameState).AkInvent;
+		delInventory(_G(gameState).R11IdCardNr);
 		_G(det)->startDetail(0, 255, ANI_FRONT);
 		_G(atds)->set_ats_str(83, TXT_MARK_LOOK, 1, ATS_DATA);
 		_G(atds)->set_ats_str(84, TXT_MARK_LOOK, 1, ATS_DATA);
-		_G(spieler).R11CardOk = true;
+		_G(gameState).R11CardOk = true;
 
-		if (!_G(spieler).R11TerminalOk)
+		if (!_G(gameState).R11TerminalOk)
 			startAadWait(16);
 	}
 }
diff --git a/engines/chewy/rooms/room12.cpp b/engines/chewy/rooms/room12.cpp
index 947fe7d038a..d19c487ce59 100644
--- a/engines/chewy/rooms/room12.cpp
+++ b/engines/chewy/rooms/room12.cpp
@@ -67,8 +67,8 @@ void Room12::entry() {
 	_G(zoom_horizont) = 150;
 	_G(timer_nr)[1] = _G(room)->set_timer(254, 20);
 
-	if (!_G(spieler).R12Betreten) {
-		_G(spieler).R12Betreten = true;
+	if (!_G(gameState).R12Betreten) {
+		_G(gameState).R12Betreten = true;
 		hideCur();
 
 		for (int16 i = 7; i < 10; i++)
@@ -90,9 +90,9 @@ void Room12::entry() {
 		startAadWait(109);
 		showCur();
 
-	} else if (_G(spieler).R12Talisman && !_G(spieler).R12BorkInRohr)
+	} else if (_G(gameState).R12Talisman && !_G(gameState).R12BorkInRohr)
 		_G(timer_nr)[0] = _G(room)->set_timer(255, 20);
-	else if (_G(spieler).R12BorkInRohr && !_G(spieler).R12RaumOk)
+	else if (_G(gameState).R12BorkInRohr && !_G(gameState).R12RaumOk)
 		_G(det)->showStaticSpr(12);
 }
 
@@ -100,8 +100,8 @@ bool Room12::timer(int16 t_nr, int16 ani_nr) {
 	if (t_nr == _G(timer_nr)[0]) {
 		if (!is_chewy_busy())
 			init_bork();
-	} else if (t_nr == _G(timer_nr)[1] && _G(spieler).R12TransOn) {
-		_G(spieler).R12TransOn = false;
+	} else if (t_nr == _G(timer_nr)[1] && _G(gameState).R12TransOn) {
+		_G(gameState).R12TransOn = false;
 		startAadWait(30);
 	}
 
@@ -109,7 +109,7 @@ bool Room12::timer(int16 t_nr, int16 ani_nr) {
 }
 
 void Room12::init_bork() {
-	if (!auto_obj_status(R12_BORK_OBJ) && !_G(spieler).R12BorkTalk) {
+	if (!auto_obj_status(R12_BORK_OBJ) && !_G(gameState).R12BorkTalk) {
 		if (!_G(auto_obj))
 			_G(det)->load_taf_seq(62, 24, nullptr);
 
@@ -120,18 +120,18 @@ void Room12::init_bork() {
 			_G(mov_phasen)[R12_BORK_OBJ].Repeat = 1;
 			_G(mov_phasen)[R12_BORK_OBJ].ZoomFak = (int16)_G(room)->_roomInfo->_zoomFactor + 20;
 			_G(auto_mov_obj)[R12_BORK_OBJ].Id = AUTO_OBJ0;
-			_G(auto_mov_vector)[R12_BORK_OBJ].Delay = _G(spieler).DelaySpeed;
+			_G(auto_mov_vector)[R12_BORK_OBJ].Delay = _G(gameState).DelaySpeed;
 			_G(auto_mov_obj)[R12_BORK_OBJ].Mode = true;
 			init_auto_obj(R12_BORK_OBJ, &R12_BORK_PHASEN[0][0], 5, (const MovLine *)R12_BORK_MPKT);
 
-			if (!_G(spieler).R12TalismanOk) {
+			if (!_G(gameState).R12TalismanOk) {
 				hideCur();
 				_G(auto_mov_vector)[R12_BORK_OBJ]._delayCount = 1000;
 				autoMove(5, P_CHEWY);
 				_G(auto_mov_vector)[R12_BORK_OBJ]._delayCount = 0;
 
-				if (_G(spieler).R12BorkCount < 3) {
-					++_G(spieler).R12BorkCount;
+				if (_G(gameState).R12BorkCount < 3) {
+					++_G(gameState).R12BorkCount;
 					_G(uhr)->resetTimer(_G(timer_nr)[0], 0);
 					waitShowScreen(10);
 					start_spz(CH_TALK3, 255, ANI_FRONT, P_CHEWY);
@@ -150,7 +150,7 @@ void Room12::init_bork() {
 }
 
 void Room12::talk_bork() {
-	if (!_G(spieler).R12TalismanOk) {
+	if (!_G(gameState).R12TalismanOk) {
 		startAadWait(28);
 	}
 }
@@ -161,14 +161,14 @@ void Room12::bork_ok() {
 	_G(auto_mov_vector)[R12_BORK_OBJ]._delayCount = 1000;
 	autoMove(5, P_CHEWY);
 	_G(auto_mov_vector)[R12_BORK_OBJ]._delayCount = 0;
-	_G(spieler).R12BorkTalk = true;
+	_G(gameState).R12BorkTalk = true;
 
 	_G(mov_phasen)[R12_BORK_OBJ].Repeat = 1;
 	_G(mov_phasen)[R12_BORK_OBJ].Lines = 2;
 	init_auto_obj(R12_BORK_OBJ, &R12_BORK_PHASEN[0][0], 2, (const MovLine *)R12_BORK_MPKT1);
 	wait_auto_obj(R12_BORK_OBJ);
 
-	_G(spieler).R12BorkInRohr = true;
+	_G(gameState).R12BorkInRohr = true;
 	_G(det)->setSetailPos(3, 170, 145);
 	_G(det)->startDetail(3, 255, ANI_FRONT);
 	startAadWait(57);
@@ -191,14 +191,14 @@ void Room12::bork_ok() {
 
 int16 Room12::use_terminal() {
 	int16 action_flag = false;
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_flag = true;
 
-		if (!_G(spieler).R12ChewyBork) {
+		if (!_G(gameState).R12ChewyBork) {
 			autoMove(6, P_CHEWY);
 			startAadWait(110);
 
-			if (_G(spieler).R12BorkInRohr && !_G(spieler).R12RaumOk) {
+			if (_G(gameState).R12BorkInRohr && !_G(gameState).R12RaumOk) {
 				start_spz(CH_TALK5, 255, false, P_CHEWY);
 				startAadWait(112);
 				_G(flags).NoScroll = true;
@@ -213,17 +213,17 @@ int16 Room12::use_terminal() {
 				_G(menu_item) = CUR_WALK;
 				cursorChoice(_G(menu_item));
 				setPersonPos(108, 90, P_CHEWY, -1);
-				_G(spieler).R12ChewyBork = true;
-				_G(spieler).R12RaumOk = true;
+				_G(gameState).R12ChewyBork = true;
+				_G(gameState).R12RaumOk = true;
 				autoMove(4, P_CHEWY);
 				start_spz(68, 255, false, P_CHEWY);
 				startAadWait(113);
 
-			} else if (_G(spieler).R12TalismanOk && !_G(spieler).R12RaumOk) {
+			} else if (_G(gameState).R12TalismanOk && !_G(gameState).R12RaumOk) {
 				use_linke_rohr();
 
 			} else {
-				_G(spieler).R12TransOn = true;
+				_G(gameState).R12TransOn = true;
 				_G(uhr)->resetTimer(_G(timer_nr)[1], 0);
 			}
 		} else {
@@ -235,8 +235,8 @@ int16 Room12::use_terminal() {
 }
 
 void Room12::use_linke_rohr() {
-	_G(spieler).R12TalismanOk = false;
-	_G(spieler).R12ChainLeft = true;
+	_G(gameState).R12TalismanOk = false;
+	_G(gameState).R12ChainLeft = true;
 	_G(uhr)->disableTimer();
 	_G(obj)->calc_rsi_flip_flop(SIB_L_ROEHRE_R12);
 	_G(obj)->calc_rsi_flip_flop(SIB_ROEHRE_R12);
@@ -248,15 +248,15 @@ void Room12::use_linke_rohr() {
 
 int16 Room12::chewy_trans() {
 	int16 action_flag = false;
-	if (!_G(spieler).inv_cur && _G(spieler).R12TransOn) {
+	if (!_G(gameState).inv_cur && _G(gameState).R12TransOn) {
 		action_flag = true;
 		_G(flags).AutoAniPlay = true;
 		autoMove(9, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startAniBlock(2, ABLOCK16);
 		setPersonPos(108, 82, P_CHEWY, P_RIGHT);
-		_G(spieler)._personHide[P_CHEWY] = false;
-		_G(spieler).R12TransOn = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
+		_G(gameState).R12TransOn = false;
 		_G(flags).AutoAniPlay = false;
 	}
 	return action_flag;
@@ -265,11 +265,11 @@ int16 Room12::chewy_trans() {
 int16 Room12::useTransformerTube() {
 	bool result = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		result = true;
 
-		if (_G(spieler).R12ChainLeft) {
-			_G(spieler).R12ChainLeft = false;
+		if (_G(gameState).R12ChainLeft) {
+			_G(gameState).R12ChainLeft = false;
 			_G(uhr)->enableTimer();
 			_G(atds)->set_ats_str(117, 1, AAD_DATA);
 		} else {
diff --git a/engines/chewy/rooms/room13.cpp b/engines/chewy/rooms/room13.cpp
index 6d19451d6c0..37642ff708d 100644
--- a/engines/chewy/rooms/room13.cpp
+++ b/engines/chewy/rooms/room13.cpp
@@ -45,7 +45,7 @@ static const MovLine R13_BORK_MPKT[3] = {
 };
 
 void Room13::entry() {
-	if (!_G(spieler).R12ChewyBork && !_G(spieler).R13BorkOk) {
+	if (!_G(gameState).R12ChewyBork && !_G(gameState).R13BorkOk) {
 		_G(out)->cls();
 		flic_cut(FCUT_012);
 		setPersonPos(106, 65, P_CHEWY, P_RIGHT);
@@ -53,62 +53,62 @@ void Room13::entry() {
 		start_spz(CH_TALK12, 255, false, P_CHEWY);
 		startAadWait(27);
 	} else {
-		if (_G(spieler).R13MonitorStatus)
-			_G(det)->showStaticSpr(11 - _G(spieler).R13MonitorStatus);
+		if (_G(gameState).R13MonitorStatus)
+			_G(det)->showStaticSpr(11 - _G(gameState).R13MonitorStatus);
 
-		if (!_G(spieler).R13BorkOk) {
+		if (!_G(gameState).R13BorkOk) {
 			_G(det)->showStaticSpr(12);
 			_G(obj)->hide_sib(SIB_BANDBUTTON_R13);
-			_G(spieler).R13Bandlauf = true;
+			_G(gameState).R13Bandlauf = true;
 
-			_G(atds)->set_ats_str(94, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
+			_G(atds)->set_ats_str(94, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
 
-			_G(atds)->set_ats_str(97, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
+			_G(atds)->set_ats_str(97, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
 
-			_G(atds)->set_ats_str(93, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
+			_G(atds)->set_ats_str(93, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
 		}
 
-		if (_G(spieler).R13Bandlauf) {
+		if (_G(gameState).R13Bandlauf) {
 			for (int i = 0; i < 5; ++i)
 				_G(det)->startDetail(i, 255, false);
 		}
 		
-		if (!_G(flags).LoadGame && _G(spieler).R13Band) {
-			_G(spieler).room_e_obj[25].Attribut = EXIT_TOP;
+		if (!_G(flags).LoadGame && _G(gameState).R13Band) {
+			_G(gameState).room_e_obj[25].Attribut = EXIT_TOP;
 			_G(atds)->setControlBit(100, ATS_ACTIVE_BIT, ATS_DATA);
-			_G(spieler).R13Band = false;
+			_G(gameState).R13Band = false;
 		}
 
-		if (_G(spieler).R21GitterMuell)
+		if (_G(gameState).R21GitterMuell)
 			_G(det)->hideStaticSpr(6);
 	}
 }
 
 void Room13::xit() {
-	_G(spieler).room_e_obj[25].Attribut = EXIT_TOP;
+	_G(gameState).room_e_obj[25].Attribut = EXIT_TOP;
 	_G(atds)->setControlBit(100, ATS_ACTIVE_BIT, ATS_DATA);
-	_G(spieler).R13Band = false;
+	_G(gameState).R13Band = false;
 }
 
 void Room13::gedAction(int index) {
-	if (index == 2 && _G(spieler).R12ChewyBork) {
+	if (index == 2 && _G(gameState).R12ChewyBork) {
 		stopPerson(P_CHEWY);
 		talk_bork();
 	}
 }
 
 void Room13::talk_bork() {
-	if (!_G(spieler).R13BorkOk) {
-		_G(spieler).R13BorkOk = true;
-		_G(spieler).R12ChewyBork = false;
+	if (!_G(gameState).R13BorkOk) {
+		_G(gameState).R13BorkOk = true;
+		_G(gameState).R12ChewyBork = false;
 		_G(det)->showStaticSpr(13);
 		_G(det)->setSetailPos(10, _G(spieler_vector)[P_CHEWY].Xypos[0], _G(spieler_vector)[P_CHEWY].Xypos[1]);
 		_G(det)->setStaticPos(12, _G(spieler_vector)[P_CHEWY].Xypos[0], _G(spieler_vector)[P_CHEWY].Xypos[1], false, true);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startAadWait(33);
 		_G(det)->stop_detail(9);
 		_G(det)->load_taf_seq(86, 12, nullptr);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(det)->hideStaticSpr(12);
 		_G(auto_obj) = 1;
 
@@ -117,7 +117,7 @@ void Room13::talk_bork() {
 		_G(mov_phasen)[R13_BORK_OBJ].Repeat = 1;
 		_G(mov_phasen)[R13_BORK_OBJ].ZoomFak = 0;
 		_G(auto_mov_obj)[R13_BORK_OBJ].Id = AUTO_OBJ0;
-		_G(auto_mov_vector)[R13_BORK_OBJ].Delay = _G(spieler).DelaySpeed;
+		_G(auto_mov_vector)[R13_BORK_OBJ].Delay = _G(gameState).DelaySpeed;
 		_G(auto_mov_obj)[R13_BORK_OBJ].Mode = true;
 		init_auto_obj(R13_BORK_OBJ, &R13_BORK_PHASEN[0][0], 3, (const MovLine *)R13_BORK_MPKT);
 		autoMove(9, P_CHEWY);
@@ -146,27 +146,27 @@ void Room13::talk_bork() {
 		_G(obj)->show_sib(SIB_TBUTTON2_R11);
 		_G(obj)->show_sib(SIB_TBUTTON3_R11);
 
-		if (_G(spieler).R6DoorRightB)
-			_G(spieler).room_e_obj[20].Attribut = EXIT_LEFT;
-		_G(spieler).room_e_obj[21].Attribut = EXIT_TOP;
+		if (_G(gameState).R6DoorRightB)
+			_G(gameState).room_e_obj[20].Attribut = EXIT_LEFT;
+		_G(gameState).room_e_obj[21].Attribut = EXIT_TOP;
 	}
 }
 
 void Room13::jmp_band() {
-	if (!_G(spieler).R13Band && !_G(spieler).R12ChewyBork) {
-		if (!_G(spieler).R13Bandlauf) {
+	if (!_G(gameState).R13Band && !_G(gameState).R12ChewyBork) {
+		if (!_G(gameState).R13Bandlauf) {
 			_G(obj)->hide_sib(SIB_BANDBUTTON_R13);
-			_G(spieler).room_e_obj[25].Attribut = 255;
+			_G(gameState).room_e_obj[25].Attribut = 255;
 			_G(atds)->delControlBit(100, ATS_ACTIVE_BIT, ATS_DATA);
-			_G(spieler).R13Band = true;
+			_G(gameState).R13Band = true;
 			autoMove(3, P_CHEWY);
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startSetAILWait(8, 1, ANI_FRONT);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			setPersonPos(292, 98, P_CHEWY, P_RIGHT);
 
 		} else {
-			_G(spieler).R13Surf = true;
+			_G(gameState).R13Surf = true;
 			_G(mouseLeftClick) = false;
 			autoMove(12, P_CHEWY);
 			startAadWait(117);
@@ -176,37 +176,37 @@ void Room13::jmp_band() {
 			_G(flags).NoScroll = false;
 			setPersonPos(195, 226, P_CHEWY, P_LEFT);
 
-			_G(spieler).R13Bandlauf = false;
-			_G(atds)->set_ats_str(94, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
-			_G(atds)->set_ats_str(97, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
-			_G(atds)->set_ats_str(93, TXT_MARK_LOOK, _G(spieler).R13Bandlauf, ATS_DATA);
+			_G(gameState).R13Bandlauf = false;
+			_G(atds)->set_ats_str(94, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
+			_G(atds)->set_ats_str(97, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
+			_G(atds)->set_ats_str(93, TXT_MARK_LOOK, _G(gameState).R13Bandlauf, ATS_DATA);
 			_G(obj)->calc_rsi_flip_flop(SIB_BANDBUTTON_R13);
 			_G(obj)->hide_sib(SIB_BANDBUTTON_R13);
 			switchRoom(14);
 
 			flic_cut(FCUT_017);
 			register_cutscene(6);
-			_G(spieler).scrollx = 92;
-			_G(spieler).scrolly = 120;
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState).scrollx = 92;
+			_G(gameState).scrolly = 120;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			waitShowScreen(20);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 		}
 	}
 }
 
 void Room13::jmp_floor() {
-	if (_G(spieler).R13Band) {
-		if (!_G(spieler).R13Surf)
+	if (_G(gameState).R13Band) {
+		if (!_G(gameState).R13Surf)
 			_G(obj)->show_sib(SIB_BANDBUTTON_R13);
 
-		_G(spieler).room_e_obj[25].Attribut = EXIT_TOP;
+		_G(gameState).room_e_obj[25].Attribut = EXIT_TOP;
 		_G(atds)->setControlBit(100, ATS_ACTIVE_BIT, ATS_DATA);
-		_G(spieler).R13Band = false;
+		_G(gameState).R13Band = false;
 		autoMove(5, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(7, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		setPersonPos(176, 138, P_CHEWY, P_LEFT);
 	}
 }
@@ -214,28 +214,28 @@ void Room13::jmp_floor() {
 int16 Room13::monitor_button() {
 	int16 action_flag = false;
 	
-	if (!_G(spieler).inv_cur) {
-		if (_G(spieler).R13Band) {
+	if (!_G(gameState).inv_cur) {
+		if (_G(gameState).R13Band) {
 			action_flag = true;
 			startAadWait(620);
 
-		} else if (!_G(spieler).R12ChewyBork) {
+		} else if (!_G(gameState).R12ChewyBork) {
 			action_flag = true;
 			autoMove(8, P_CHEWY);
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startSetAILWait(6, 1, ANI_FRONT);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 
-			if (_G(spieler).R13MonitorStatus)
-				_G(det)->hideStaticSpr(11 - _G(spieler).R13MonitorStatus);
+			if (_G(gameState).R13MonitorStatus)
+				_G(det)->hideStaticSpr(11 - _G(gameState).R13MonitorStatus);
 
-			++_G(spieler).R13MonitorStatus;
-			if (_G(spieler).R13MonitorStatus > 4)
-				_G(spieler).R13MonitorStatus = 0;
+			++_G(gameState).R13MonitorStatus;
+			if (_G(gameState).R13MonitorStatus > 4)
+				_G(gameState).R13MonitorStatus = 0;
 			else
-				_G(det)->showStaticSpr(11 - _G(spieler).R13MonitorStatus);
+				_G(det)->showStaticSpr(11 - _G(gameState).R13MonitorStatus);
 
-			_G(atds)->set_ats_str(96, TXT_MARK_LOOK, _G(spieler).R13MonitorStatus, ATS_DATA);
+			_G(atds)->set_ats_str(96, TXT_MARK_LOOK, _G(gameState).R13MonitorStatus, ATS_DATA);
 		}
 	}
 
diff --git a/engines/chewy/rooms/room14.cpp b/engines/chewy/rooms/room14.cpp
index 584bbaec08d..f6c7b5d9a18 100644
--- a/engines/chewy/rooms/room14.cpp
+++ b/engines/chewy/rooms/room14.cpp
@@ -30,22 +30,22 @@ namespace Chewy {
 namespace Rooms {
 
 void Room14::entry() {
-	_G(spieler).R23GleiterExit = 14;
+	_G(gameState).R23GleiterExit = 14;
 	_G(zoom_horizont) = 310;
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 
-	if (!_G(spieler).R14Feuer)
+	if (!_G(gameState).R14Feuer)
 		_G(obj)->hide_sib(46);
 
 	if (!_G(flags).LoadGame) {
-		if (_G(spieler).R14GleiterAuf) {
+		if (_G(gameState).R14GleiterAuf) {
 			setPersonPos(381, 264, P_CHEWY, P_LEFT);
 			_G(det)->showStaticSpr(6);
-			_G(spieler).scrollx = 160;
-			_G(spieler).scrolly = 120;
+			_G(gameState).scrollx = 160;
+			_G(gameState).scrolly = 120;
 		} else {
-			_G(spieler).scrollx = 92;
-			_G(spieler).scrolly = 17;
+			_G(gameState).scrollx = 92;
+			_G(gameState).scrolly = 17;
 		}
 	}
 }
@@ -58,7 +58,7 @@ bool Room14::timer(int16 t_nr, int16 ani_nr) {
 }
 
 void Room14::eremit_feuer(int16 t_nr, int16 ani_nr) {
-	if (!_G(flags).AutoAniPlay && !_G(spieler).R14Feuer) {
+	if (!_G(flags).AutoAniPlay && !_G(gameState).R14Feuer) {
 		_G(flags).AutoAniPlay = true;
 		_G(det)->hideStaticSpr(9);
 		startSetAILWait(_G(room)->_roomTimer._objNr[ani_nr], 1, ANI_FRONT);
@@ -72,15 +72,15 @@ void Room14::eremit_feuer(int16 t_nr, int16 ani_nr) {
 int16 Room14::use_schrott() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		autoMove(3, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(12, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 
-		if (!_G(spieler).R14Waffe) {
+		if (!_G(gameState).R14Waffe) {
 			action_flag = true;
-			_G(spieler).R14Waffe = true;
+			_G(gameState).R14Waffe = true;
 			startAadWait(21);
 			invent_2_slot(BWAFFE_INV);
 		}
@@ -91,19 +91,19 @@ int16 Room14::use_schrott() {
 int16 Room14::use_gleiter() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_flag = true;
 		autoMove(4, P_CHEWY);
 
-		if (!_G(spieler).R14GleiterAuf) {
-			_G(spieler).R14GleiterAuf = true;
-			_G(spieler)._personHide[P_CHEWY] = true;
+		if (!_G(gameState).R14GleiterAuf) {
+			_G(gameState).R14GleiterAuf = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startSetAILWait(10, 1, ANI_FRONT);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			_G(det)->showStaticSpr(6);
 			_G(atds)->set_ats_str(107, TXT_MARK_LOOK, 1, ATS_DATA);
 		} else {
-			_G(spieler).R23GleiterExit = 14;
+			_G(gameState).R23GleiterExit = 14;
 			Room23::cockpit();
 		}
 	}
@@ -112,11 +112,11 @@ int16 Room14::use_gleiter() {
 }
 
 void Room14::talk_eremit()  {
-	if (!_G(spieler).R14Feuer) {
+	if (!_G(gameState).R14Feuer) {
 		autoMove(6, P_CHEWY);
 		_G(flags).AutoAniPlay = true;
 
-		if (_G(spieler).R14Translator) {
+		if (_G(gameState).R14Translator) {
 			loadAdsDia(0);
 			_G(obj)->show_sib(46);
 		} else {
@@ -131,15 +131,15 @@ void Room14::talk_eremit()  {
 int16 Room14::use_schleim() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		autoMove(2, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(11, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 
-		if (!_G(spieler).R14Sicherung) {
+		if (!_G(gameState).R14Sicherung) {
 			action_flag = true;
-			_G(spieler).R14Sicherung = true;
+			_G(gameState).R14Sicherung = true;
 			startAadWait(22);
 			invent_2_slot(SICHERUNG_INV);
 		}
@@ -150,8 +150,8 @@ int16 Room14::use_schleim() {
 
 void Room14::feuer() {
 	int16 waffe = false;
-	int16 tmp = _G(spieler).AkInvent;
-	_G(spieler).R14Feuer = true;
+	int16 tmp = _G(gameState).AkInvent;
+	_G(gameState).R14Feuer = true;
 	_G(cur_hide_flag) = false;
 	_G(flags).AutoAniPlay = true;
 	hideCur();
@@ -159,18 +159,18 @@ void Room14::feuer() {
 	if (isCurInventory(BWAFFE_INV)) {
 		autoMove(5, P_CHEWY);
 		waffe = true;
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startDetailFrame(8, 1, ANI_FRONT, 11);
 		startSetAILWait(9, 1, ANI_FRONT);
 		waitDetail(8);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 	} else {
 		autoMove(7, P_CHEWY);
 		_G(det)->hideStaticSpr(9);
 		startDetailFrame(2, 1, ANI_FRONT, 9);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(13, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		waitDetail(2);
 		startSetAILWait(5, 1, ANI_FRONT);
 		_G(det)->showStaticSpr(9);
@@ -189,7 +189,7 @@ void Room14::feuer() {
 	_G(det)->showStaticSpr(9);
 	invent_2_slot(FLUXO_INV);
 	_G(atds)->set_ats_str(105, TXT_MARK_LOOK, 1, ATS_DATA);
-	_G(spieler).R14FluxoFlex = true;
+	_G(gameState).R14FluxoFlex = true;
 	_G(flags).AutoAniPlay = false;
 	showCur();
 }
diff --git a/engines/chewy/rooms/room16.cpp b/engines/chewy/rooms/room16.cpp
index 1ee24ccdf55..2cae87ed214 100644
--- a/engines/chewy/rooms/room16.cpp
+++ b/engines/chewy/rooms/room16.cpp
@@ -32,13 +32,13 @@ namespace Rooms {
 void Room16::entry() {
 	_G(zoom_horizont) = 140;
 
-	if (!_G(spieler).R16F5Exit) {
+	if (!_G(gameState).R16F5Exit) {
 		_G(det)->showStaticSpr(4);
-		_G(spieler).room_e_obj[32].Attribut = 255;
+		_G(gameState).room_e_obj[32].Attribut = 255;
 		_G(atds)->delControlBit(124, ATS_ACTIVE_BIT, ATS_DATA);
 	} else {
 		_G(det)->hideStaticSpr(4);
-		_G(spieler).room_e_obj[32].Attribut = EXIT_LEFT;
+		_G(gameState).room_e_obj[32].Attribut = EXIT_LEFT;
 		_G(atds)->setControlBit(124, ATS_ACTIVE_BIT, ATS_DATA);
 	}
 }
@@ -46,10 +46,10 @@ void Room16::entry() {
 int16 Room16::use_gleiter() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_flag = true;
 		autoMove(6, P_CHEWY);
-		_G(spieler).R23GleiterExit = 16;
+		_G(gameState).R23GleiterExit = 16;
 		Room23::cockpit();
 	}
 
diff --git a/engines/chewy/rooms/room17.cpp b/engines/chewy/rooms/room17.cpp
index 997226a8ed9..87a650cf6f7 100644
--- a/engines/chewy/rooms/room17.cpp
+++ b/engines/chewy/rooms/room17.cpp
@@ -51,7 +51,7 @@ static const MovLine CHEWY_MPKT1[2] = {
 };
 
 void Room17::entry() {
-	if (!_G(spieler).R17EnergieOut) {
+	if (!_G(gameState).R17EnergieOut) {
 		_G(det)->startDetail(1, 255, ANI_FRONT);
 		for (int i = 0; i < 3; ++i)
 			_G(det)->startDetail(6 + i, 255, ANI_FRONT);
@@ -59,58 +59,58 @@ void Room17::entry() {
 
 	plot_seil();
 
-	if (_G(spieler).R17GitterWeg)
+	if (_G(gameState).R17GitterWeg)
 		_G(det)->hideStaticSpr(5);
 
-	if (_G(spieler).R17DoorKommand)
+	if (_G(gameState).R17DoorKommand)
 		_G(det)->showStaticSpr(7);
 
-	if (_G(spieler).R17Location == 1) {
+	if (_G(gameState).R17Location == 1) {
 		_G(flags).ZoomMov = true;
 		_G(zoom_mov_fak) = 3;
 		_G(room)->set_zoom(25);
 		_G(zoom_horizont) = 0;
-		_G(spieler).scrollx = 0;
-		_G(spieler).scrolly = 60;
+		_G(gameState).scrollx = 0;
+		_G(gameState).scrolly = 60;
 		setPersonPos(242, 146, P_CHEWY, P_LEFT);
 		xit();
-	} else if (_G(spieler).R17Location == 3) {
+	} else if (_G(gameState).R17Location == 3) {
 		_G(room)->set_zoom(32);
 		_G(zoom_horizont) = 399;
 		xit();
 	} else {
 		_G(room)->set_zoom(15);
 		_G(zoom_horizont) = 0;
-		_G(spieler).room_e_obj[36].Attribut = 255;
-		_G(spieler).room_e_obj[38].Attribut = 255;
+		_G(gameState).room_e_obj[36].Attribut = 255;
+		_G(gameState).room_e_obj[38].Attribut = 255;
 
-		if (_G(spieler).R6DoorLeftF)
-			_G(spieler).room_e_obj[39].Attribut = EXIT_RIGHT;
+		if (_G(gameState).R6DoorLeftF)
+			_G(gameState).room_e_obj[39].Attribut = EXIT_RIGHT;
 		else
-			_G(spieler).room_e_obj[39].Attribut = 255;
+			_G(gameState).room_e_obj[39].Attribut = 255;
 
-		if (_G(spieler).R18DoorBruecke)
-			_G(spieler).room_e_obj[35].Attribut = EXIT_LEFT;
+		if (_G(gameState).R18DoorBruecke)
+			_G(gameState).room_e_obj[35].Attribut = EXIT_LEFT;
 		else
-			_G(spieler).room_e_obj[35].Attribut = 255;
+			_G(gameState).room_e_obj[35].Attribut = 255;
 	}
 }
 
 void Room17::xit() {
-	if (_G(spieler).R17DoorKommand)
-		_G(spieler).room_e_obj[36].Attribut = EXIT_TOP;
+	if (_G(gameState).R17DoorKommand)
+		_G(gameState).room_e_obj[36].Attribut = EXIT_TOP;
 	else
-		_G(spieler).room_e_obj[36].Attribut = 255;
+		_G(gameState).room_e_obj[36].Attribut = 255;
 
-	_G(spieler).room_e_obj[35].Attribut = 255;
-	_G(spieler).room_e_obj[39].Attribut = 255;
-	_G(spieler).room_e_obj[38].Attribut = EXIT_TOP;
+	_G(gameState).room_e_obj[35].Attribut = 255;
+	_G(gameState).room_e_obj[39].Attribut = 255;
+	_G(gameState).room_e_obj[38].Attribut = EXIT_TOP;
 }
 
 bool Room17::timer(int16 t_nr, int16 ani_nr) {
 	if (_G(room)->_roomTimer._objNr[ani_nr] == 2 ||
 		_G(room)->_roomTimer._objNr[ani_nr] == 3) {
-		if (_G(spieler).R17EnergieOut)
+		if (_G(gameState).R17EnergieOut)
 			_G(uhr)->resetTimer(t_nr, 0);
 		else
 			return true;
@@ -137,19 +137,19 @@ void Room17::gedAction(int index) {
 int16 Room17::use_seil() {
 	int16 action_flag = false;
 
-	if (!_G(flags).AutoAniPlay && _G(spieler).R17Location == 1 && isCurInventory(SEIL_INV)) {
+	if (!_G(flags).AutoAniPlay && _G(gameState).R17Location == 1 && isCurInventory(SEIL_INV)) {
 		action_flag = true;
 		hideCur();
 
-		delInventory(_G(spieler).AkInvent);
+		delInventory(_G(gameState).AkInvent);
 		_G(flags).AutoAniPlay = true;
 		autoMove(5, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(10, 1, ANI_FRONT);
-		_G(spieler).R17Seil = true;
+		_G(gameState).R17Seil = true;
 		_G(atds)->delControlBit(139, ATS_ACTIVE_BIT, ATS_DATA);
 		plot_seil();
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(flags).AutoAniPlay = false;
 		start_spz(CH_TALK6, 255, false, P_CHEWY);
 		startAadWait(119);
@@ -161,7 +161,7 @@ int16 Room17::use_seil() {
 }
 
 void Room17::plot_seil() {
-	if (_G(spieler).R17Seil) {
+	if (_G(gameState).R17Seil) {
 		for (int16 i = 0; i < 3; i++)
 			_G(det)->showStaticSpr(8 + i);
 	}
@@ -170,11 +170,11 @@ void Room17::plot_seil() {
 void Room17::kletter_down() {
 	autoMove(5, P_CHEWY);
 	_G(det)->load_taf_seq(177, 1, nullptr);
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	startSetAILWait(14, 1, ANI_FRONT);
 	_G(flags).ZoomMov = false;
 	_G(zoom_mov_fak) = 1;
-	_G(spieler).ScrollyStep = 2;
+	_G(gameState).ScrollyStep = 2;
 	_G(room)->set_zoom(32);
 	_G(spieler_mi)->Vorschub = 8;
 	_G(zoom_horizont) = 399;
@@ -186,11 +186,11 @@ void Room17::kletter_down() {
 void Room17::kletter_up() {
 	autoMove(6, P_CHEWY);
 	_G(det)->load_taf_seq(141, 4, nullptr);
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	startSetAILWait(11, 1, ANI_FRONT);
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 3;
-	_G(spieler).ScrollyStep = 1;
+	_G(gameState).ScrollyStep = 1;
 	_G(room)->set_zoom(25);
 	_G(zoom_horizont) = 0;
 	_G(auto_obj) = 1;
@@ -199,10 +199,10 @@ void Room17::kletter_up() {
 }
 
 void Room17::calc_seil() {
-	if (_G(spieler).R17Seil) {
-		if (_G(spieler).R17Location == 2) {
+	if (_G(gameState).R17Seil) {
+		if (_G(gameState).R17Location == 2) {
 			startAadWait(619);
-		} else if (!_G(flags).AutoAniPlay && !_G(spieler).inv_cur) {
+		} else if (!_G(flags).AutoAniPlay && !_G(gameState).inv_cur) {
 			close_door();
 			_G(flags).AutoAniPlay = true;
 			_G(mov_phasen)[CHEWY_OBJ].AtsText = 0;
@@ -210,16 +210,16 @@ void Room17::calc_seil() {
 			_G(mov_phasen)[CHEWY_OBJ].Repeat = 1;
 			_G(mov_phasen)[CHEWY_OBJ].ZoomFak = 0;
 			_G(auto_mov_obj)[CHEWY_OBJ].Id = AUTO_OBJ0;
-			_G(auto_mov_vector)[CHEWY_OBJ].Delay = _G(spieler).DelaySpeed;
+			_G(auto_mov_vector)[CHEWY_OBJ].Delay = _G(gameState).DelaySpeed;
 			_G(auto_mov_obj)[CHEWY_OBJ].Mode = true;
 			hideCur();
 
-			if (_G(spieler).R17Location == 1) {
+			if (_G(gameState).R17Location == 1) {
 				kletter_down();
-				_G(spieler).R17Location = 3;
-			} else if (_G(spieler).R17Location == 3) {
+				_G(gameState).R17Location = 3;
+			} else if (_G(gameState).R17Location == 3) {
 				kletter_up();
-				_G(spieler).R17Location = 1;
+				_G(gameState).R17Location = 1;
 			}
 
 			_G(menu_item) = CUR_WALK;
@@ -227,8 +227,8 @@ void Room17::calc_seil() {
 			wait_auto_obj(CHEWY_OBJ);
 			showCur();
 			setPersonSpr(P_LEFT, P_CHEWY);
-			_G(spieler).ScrollyStep = 1;
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState).ScrollyStep = 1;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			_G(flags).AutoAniPlay = false;
 			_G(auto_obj) = 0;
 			xit();
@@ -241,9 +241,9 @@ void Room17::door_kommando(int16 mode) {
 		_G(flags).AutoAniPlay = true;
 
 		if (!mode) {
-			if (!_G(spieler).R17DoorKommand) {
-				_G(spieler).room_e_obj[36].Attribut = EXIT_TOP;
-				_G(spieler).R17DoorKommand = true;
+			if (!_G(gameState).R17DoorKommand) {
+				_G(gameState).room_e_obj[36].Attribut = EXIT_TOP;
+				_G(gameState).R17DoorKommand = true;
 				startSetAILWait(4, 1, ANI_FRONT);
 				stopPerson(P_CHEWY);
 				_G(det)->showStaticSpr(7);
@@ -253,15 +253,15 @@ void Room17::door_kommando(int16 mode) {
 		}
 
 		_G(flags).AutoAniPlay = false;
-		_G(atds)->set_ats_str(144, _G(spieler).R17DoorKommand, ATS_DATA);
+		_G(atds)->set_ats_str(144, _G(gameState).R17DoorKommand, ATS_DATA);
 	}
 }
 
 void Room17::close_door() {
-	if (_G(spieler).R17DoorKommand) {
-		_G(spieler).room_e_obj[36].Attribut = 255;
-		_G(spieler).R17DoorKommand = false;
-		_G(atds)->set_ats_str(144, _G(spieler).R17DoorKommand ? 1 : 0, ATS_DATA);
+	if (_G(gameState).R17DoorKommand) {
+		_G(gameState).room_e_obj[36].Attribut = 255;
+		_G(gameState).R17DoorKommand = false;
+		_G(atds)->set_ats_str(144, _G(gameState).R17DoorKommand ? 1 : 0, ATS_DATA);
 		_G(det)->hideStaticSpr(7);
 		_G(det)->startDetail(4, 1, ANI_BACK);
 	}
@@ -273,35 +273,35 @@ int16 Room17::energie_hebel() {
 	hideCur();
 	autoMove(7, P_CHEWY);
 
-	if (!_G(spieler).R17HebelOk) {
+	if (!_G(gameState).R17HebelOk) {
 		if (isCurInventory(BECHER_VOLL_INV)) {
-			delInventory(_G(spieler).AkInvent);
-			_G(spieler).R17HebelOk = true;
+			delInventory(_G(gameState).AkInvent);
+			_G(gameState).R17HebelOk = true;
 			startAadWait(38);
 			action_flag = true;
-		} else if (!_G(spieler).inv_cur) {
+		} else if (!_G(gameState).inv_cur) {
 			startAadWait(37);
 			action_flag = true;
 		}
 
-	} else if (!_G(spieler).inv_cur) {
+	} else if (!_G(gameState).inv_cur) {
 		action_flag = true;
 
 		_G(obj)->calc_rsi_flip_flop(SIB_HEBEL_R17);
-		_G(spieler).R17EnergieOut ^= 1;
+		_G(gameState).R17EnergieOut ^= 1;
 
-		if (!_G(spieler).R17EnergieOut) {
+		if (!_G(gameState).R17EnergieOut) {
 			_G(det)->startDetail(1, 255, ANI_FRONT);
 
 			for (int i = 0; i < 3; ++i)
 				_G(det)->startDetail(i + 6, 255, ANI_FRONT);
 		}
 
-		_G(atds)->set_ats_str(142, _G(spieler).R17EnergieOut ? 1 : 0, ATS_DATA);
-		_G(atds)->set_ats_str(140, _G(spieler).R17EnergieOut ? 1 : 0, ATS_DATA);
+		_G(atds)->set_ats_str(142, _G(gameState).R17EnergieOut ? 1 : 0, ATS_DATA);
+		_G(atds)->set_ats_str(140, _G(gameState).R17EnergieOut ? 1 : 0, ATS_DATA);
 		g_engine->_sound->playSound(12);
 
-		if (_G(spieler).R17EnergieOut) {
+		if (_G(gameState).R17EnergieOut) {
 			g_engine->_sound->stopSound(0);
 		} else {
 			g_engine->_sound->playSound(15, 0);
@@ -316,7 +316,7 @@ int16 Room17::get_oel() {
 	int16 action_flag = false;
 	hideCur();
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_flag = true;
 		autoMove(4, P_CHEWY);
 		start_spz_wait(CH_EKEL, 3, false, P_CHEWY);
@@ -325,10 +325,10 @@ int16 Room17::get_oel() {
 		action_flag = true;
 		close_door();
 		autoMove(4, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(13, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
-		delInventory(_G(spieler).AkInvent);
+		_G(gameState)._personHide[P_CHEWY] = false;
+		delInventory(_G(gameState).AkInvent);
 		_G(obj)->addInventory(BECHER_VOLL_INV, &_G(room_blk));
 		inventory_2_cur(BECHER_VOLL_INV);
 	}
diff --git a/engines/chewy/rooms/room18.cpp b/engines/chewy/rooms/room18.cpp
index 29174ee6c1c..944226c3648 100644
--- a/engines/chewy/rooms/room18.cpp
+++ b/engines/chewy/rooms/room18.cpp
@@ -87,44 +87,44 @@ static const AniBlock ABLOCK24[2] = {
 
 
 void Room18::entry() {
-	_G(spieler).R18MoniSwitch = false;
+	_G(gameState).R18MoniSwitch = false;
 	_G(atds)->set_ats_str(151, TXT_MARK_LOOK, 0, ATS_DATA);
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 
-	if (_G(spieler).R18CartTerminal)
+	if (_G(gameState).R18CartTerminal)
 		_G(det)->showStaticSpr(23);
 
-	if (!_G(spieler).R18SurimyWurf) {
+	if (!_G(gameState).R18SurimyWurf) {
 		init_borks();
 	} else {
 		for (int16 i = 0; i < 5; i++)
 			_G(det)->hideStaticSpr(BORK_SPR[i]);
 
-		for (int16 i = 0; i < (4 - (_G(spieler).R18Krone ? 1 : 0)); i++)
+		for (int16 i = 0; i < (4 - (_G(gameState).R18Krone ? 1 : 0)); i++)
 			_G(det)->showStaticSpr(BORK_SPR1[i]);
 	}
 
-	if (_G(spieler).R16F5Exit)
+	if (_G(gameState).R16F5Exit)
 		_G(det)->hideStaticSpr(19);
 	
-	if (_G(spieler).R17EnergieOut) {
+	if (_G(gameState).R17EnergieOut) {
 		_G(det)->stop_detail(0);
 		_G(atds)->set_ats_str(150, TXT_MARK_LOOK, 1, ATS_DATA);
 	} else {
 		_G(atds)->set_ats_str(150, TXT_MARK_LOOK, 0, ATS_DATA);
 	}
 
-	if (!_G(spieler).R18FirstEntry && !_G(spieler).R18Gitter) {
+	if (!_G(gameState).R18FirstEntry && !_G(gameState).R18Gitter) {
 		startAadWait(39);
-		_G(spieler).R18FirstEntry = true;
+		_G(gameState).R18FirstEntry = true;
 	}
 
-	if (_G(spieler).R18Gitter)
-		_G(spieler).scrolly = 0;
+	if (_G(gameState).R18Gitter)
+		_G(gameState).scrolly = 0;
 }
 
 bool Room18::timer(int16 t_nr, int16 ani_nr) {
-	if (!_G(spieler).R18SurimyWurf && !_G(flags).AutoAniPlay) {
+	if (!_G(gameState).R18SurimyWurf && !_G(flags).AutoAniPlay) {
 		_G(flags).AutoAniPlay = true;
 
 		if (t_nr == _G(timer_nr)[0]) {
@@ -138,8 +138,8 @@ bool Room18::timer(int16 t_nr, int16 ani_nr) {
 			startSetAILWait(9, 1, ANI_FRONT);
 			_G(det)->showStaticSpr(17);
 
-			if (!_G(spieler).R18SondeMoni) {
-				_G(spieler).R18SondeMoni = true;
+			if (!_G(gameState).R18SondeMoni) {
+				_G(gameState).R18SondeMoni = true;
 				startSetAILWait(2, 1, ANI_FRONT);
 				_G(det)->showStaticSpr(9);
 				startSetAILWait(4, 1, ANI_FRONT);
@@ -162,7 +162,7 @@ bool Room18::timer(int16 t_nr, int16 ani_nr) {
 }
 
 void Room18::gedAction(int index) {
-	if (!index && !_G(spieler).R18SurimyWurf) {
+	if (!index && !_G(gameState).R18SurimyWurf) {
 		stopPerson(P_CHEWY);
 		autoMove(1, P_CHEWY);
 		start_aad(40, 0);
@@ -178,18 +178,18 @@ void Room18::init_borks() {
 
 	_G(timer_nr)[0] = _G(room)->set_timer(255, 10);
 	_G(timer_nr)[1] = _G(room)->set_timer(255, 15);
-	_G(spieler).scrollx = 276;
-	_G(spieler).scrolly = 0;
+	_G(gameState).scrollx = 276;
+	_G(gameState).scrolly = 0;
 	_G(flags).NoScroll = true;
 }
 
 void Room18::monitor() {
-	_G(spieler).R18MoniSwitch ^= 1;
+	_G(gameState).R18MoniSwitch ^= 1;
 
 	int16 nr = 0;
-	if (_G(spieler).R18MoniSwitch) {
+	if (_G(gameState).R18MoniSwitch) {
 		startAniBlock(2, ABLOCK21);
-		nr = (_G(spieler).R17EnergieOut) ? 2 : 1;
+		nr = (_G(gameState).R17EnergieOut) ? 2 : 1;
 	} else {
 		_G(det)->stop_detail(23);
 		_G(atds)->set_ats_str(41, TXT_MARK_LOOK, 1, ATS_DATA);
@@ -201,7 +201,7 @@ void Room18::monitor() {
 int16 Room18::sonden_moni() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && !_G(spieler).R18Gitter) {
+	if (!_G(gameState).inv_cur && !_G(gameState).R18Gitter) {
 		action_flag = true;
 
 		hideCur();
@@ -230,8 +230,8 @@ int16 Room18::calc_surimy() {
 		action_flag = true;
 
 		hideCur();
-		delInventory(_G(spieler).AkInvent);
-		_G(spieler).R18SurimyWurf = true;
+		delInventory(_G(gameState).AkInvent);
+		_G(gameState).R18SurimyWurf = true;
 		_G(det)->load_taf_seq(245, 50, nullptr);
 		_G(det)->load_taf_seq(116, 55, nullptr);
 		_G(auto_obj) = 1;
@@ -240,7 +240,7 @@ int16 Room18::calc_surimy() {
 		_G(mov_phasen)[SURIMY_OBJ].Repeat = 1;
 		_G(mov_phasen)[SURIMY_OBJ].ZoomFak = 0;
 		_G(auto_mov_obj)[SURIMY_OBJ].Id = AUTO_OBJ0;
-		_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(spieler).DelaySpeed;
+		_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(gameState).DelaySpeed;
 		_G(auto_mov_obj)[SURIMY_OBJ].Mode = true;
 
 		if (_G(spieler_vector)[P_CHEWY].Xypos[1] < 150) {
@@ -251,7 +251,7 @@ int16 Room18::calc_surimy() {
 		} else {
 			autoMove(1, P_CHEWY);
 			stopPerson(P_CHEWY);
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startDetailFrame(17, 1, ANI_FRONT, 12);
 			_G(mouseLeftClick) = false;
 
@@ -259,7 +259,7 @@ int16 Room18::calc_surimy() {
 			waitDetail(17);
 		}
 
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		wait_auto_obj(SURIMY_OBJ);
 
 		_G(det)->setSetailPos(21, 392, 170);
@@ -305,10 +305,10 @@ int16 Room18::calc_surimy() {
 		init_auto_obj(SURIMY_OBJ, &SURIMY_PHASEN[0][0], _G(mov_phasen)[SURIMY_OBJ].Lines, (const MovLine *)SURIMY_MPKT2);
 		auto_scroll(0, 0);
 		wait_auto_obj(SURIMY_OBJ);
-		_G(spieler).ScrollxStep = 6;
+		_G(gameState).ScrollxStep = 6;
 		_G(flags).NoScroll = false;
 		auto_scroll(318, 0);
-		_G(spieler).ScrollxStep = 2;
+		_G(gameState).ScrollxStep = 2;
 		_G(auto_obj) = 0;
 
 		_G(atds)->set_ats_str(153, 1, ATS_DATA);
@@ -328,7 +328,7 @@ int16 Room18::calc_surimy() {
 int16 Room18::calc_schalter() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && !_G(spieler).R18Gitter) {
+	if (!_G(gameState).inv_cur && !_G(gameState).R18Gitter) {
 		action_flag = true;
 
 		hideCur();
@@ -343,16 +343,16 @@ int16 Room18::calc_schalter() {
 short Room18::use_cart_moni() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_flag = true;
 
 		hideCur();
 		autoMove(9, P_CHEWY);
 		setPersonSpr(P_LEFT, P_CHEWY);
 		start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
-		_G(spieler).R18CartTerminal ^= 1;
+		_G(gameState).R18CartTerminal ^= 1;
 
-		if (!_G(spieler).R18CartTerminal) {
+		if (!_G(gameState).R18CartTerminal) {
 			_G(atds)->set_ats_str(147, TXT_MARK_LOOK, 0, ATS_DATA);
 			_G(det)->hideStaticSpr(23);
 			startSetAILWait(20, 1, ANI_BACK);
@@ -361,8 +361,8 @@ short Room18::use_cart_moni() {
 			startSetAILWait(20, 1, ANI_FRONT);
 			_G(det)->showStaticSpr(23);
 
-			if (_G(spieler).R18CartFach) {
-				_G(spieler).R18CartSave = true;
+			if (_G(gameState).R18CartFach) {
+				_G(gameState).R18CartSave = true;
 				_G(atds)->set_ats_str(CARTRIDGE_INV, TXT_MARK_LOOK, 1, INV_ATS_DATA);
 				startAadWait(120);
 			}
@@ -377,7 +377,7 @@ short Room18::use_cart_moni() {
 int16 Room18::go_cyberspace() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && !_G(spieler).R18Gitter) {
+	if (!_G(gameState).inv_cur && !_G(gameState).R18Gitter) {
 		action_flag = true;
 
 		hideCur();
diff --git a/engines/chewy/rooms/room19.cpp b/engines/chewy/rooms/room19.cpp
index f208c4eabf5..d70e130dc94 100644
--- a/engines/chewy/rooms/room19.cpp
+++ b/engines/chewy/rooms/room19.cpp
@@ -30,8 +30,8 @@ namespace Rooms {
 void Room19::entry() {
 	_G(zoom_horizont) = 250;
 	_G(flags).NoScroll = true;
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 24;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 24;
 }
 
 } // namespace Rooms
diff --git a/engines/chewy/rooms/room21.cpp b/engines/chewy/rooms/room21.cpp
index e0e4f5ad05d..4a92f20d022 100644
--- a/engines/chewy/rooms/room21.cpp
+++ b/engines/chewy/rooms/room21.cpp
@@ -63,8 +63,8 @@ static const AniBlock ABLOCK19[3] = {
 };
 
 void Room21::entry() {
-	_G(spieler).ScrollxStep = 2;
-	_G(spieler).ScrollyStep = 2;
+	_G(gameState).ScrollxStep = 2;
+	_G(gameState).ScrollyStep = 2;
 	load_chewy_taf(CHEWY_MINI);
 	calc_laser();
 	init_spinne();
@@ -83,32 +83,32 @@ bool Room21::timer(int16 t_nr, int16 ani_nr) {
 }
 
 void Room21::calc_laser() {
-	if (_G(spieler).R21Hebel1 && !_G(spieler).R21Hebel2 && _G(spieler).R21Hebel3) {
-		_G(spieler).R21Laser1Weg = true;
+	if (_G(gameState).R21Hebel1 && !_G(gameState).R21Hebel2 && _G(gameState).R21Hebel3) {
+		_G(gameState).R21Laser1Weg = true;
 		_G(det)->stop_detail(3);
 		_G(atds)->setControlBit(134, ATS_ACTIVE_BIT, ATS_DATA);
 		_G(atds)->delControlBit(133, ATS_ACTIVE_BIT, ATS_DATA);
 	} else {
-		_G(spieler).R21Laser1Weg = false;
+		_G(gameState).R21Laser1Weg = false;
 		_G(det)->startDetail(3, 255, ANI_FRONT);
 		_G(atds)->delControlBit(134, ATS_ACTIVE_BIT, ATS_DATA);
 		_G(atds)->setControlBit(133, ATS_ACTIVE_BIT, ATS_DATA);
 	}
 
-	if (!_G(spieler).R21Hebel1 && _G(spieler).R21Hebel2 && !_G(spieler).R21Hebel3) {
-		if (!_G(obj)->checkInventory(SEIL_INV) && !_G(spieler).R17Seil) {
+	if (!_G(gameState).R21Hebel1 && _G(gameState).R21Hebel2 && !_G(gameState).R21Hebel3) {
+		if (!_G(obj)->checkInventory(SEIL_INV) && !_G(gameState).R17Seil) {
 			_G(obj)->show_sib(SIB_SEIL_R21);
 			_G(atds)->delControlBit(129, ATS_ACTIVE_BIT, ATS_DATA);
 		}
 
-		_G(spieler).R21Laser2Weg = true;
+		_G(gameState).R21Laser2Weg = true;
 		_G(det)->stop_detail(4);
 		_G(atds)->setControlBit(135, ATS_ACTIVE_BIT, ATS_DATA);
 
 	} else {
 		_G(obj)->hide_sib(SIB_SEIL_R21);
 		_G(atds)->setControlBit(129, ATS_ACTIVE_BIT, ATS_DATA);
-		_G(spieler).R21Laser2Weg = false;
+		_G(gameState).R21Laser2Weg = false;
 		_G(det)->startDetail(4, 255, ANI_FRONT);
 		_G(atds)->delControlBit(135, ATS_ACTIVE_BIT, ATS_DATA);
 	}
@@ -123,7 +123,7 @@ void Room21::init_spinne() {
 	_G(mov_phasen)[SPINNE1_OBJ].Repeat = 255;
 	_G(mov_phasen)[SPINNE1_OBJ].ZoomFak = 0;
 	_G(auto_mov_obj)[SPINNE1_OBJ].Id = AUTO_OBJ0;
-	_G(auto_mov_vector)[SPINNE1_OBJ].Delay = _G(spieler).DelaySpeed;
+	_G(auto_mov_vector)[SPINNE1_OBJ].Delay = _G(gameState).DelaySpeed;
 	_G(auto_mov_obj)[SPINNE1_OBJ].Mode = true;
 	init_auto_obj(SPINNE1_OBJ, &SPINNE_PHASEN[0][0], 3, (const MovLine *)SPINNE_MPKT);
 
@@ -132,7 +132,7 @@ void Room21::init_spinne() {
 	_G(mov_phasen)[SPINNE2_OBJ].Repeat = 1;
 	_G(mov_phasen)[SPINNE2_OBJ].ZoomFak = 0;
 	_G(auto_mov_obj)[SPINNE2_OBJ].Id = AUTO_OBJ1;
-	_G(auto_mov_vector)[SPINNE2_OBJ].Delay = _G(spieler).DelaySpeed;
+	_G(auto_mov_vector)[SPINNE2_OBJ].Delay = _G(gameState).DelaySpeed;
 	_G(auto_mov_obj)[SPINNE2_OBJ].Mode = true;
 	init_auto_obj(SPINNE2_OBJ, &SPINNE_PHASEN[0][0], 2, (const MovLine *)SPINNE_MPKT1);
 	_G(timer_nr)[0] = _G(room)->set_timer(255, 21);
@@ -156,7 +156,7 @@ void Room21::setup_func() {
 		_G(mov_phasen)[ENERGIE_OBJ].Repeat = 1;
 		_G(mov_phasen)[ENERGIE_OBJ].ZoomFak = 0;
 		_G(auto_mov_obj)[ENERGIE_OBJ].Id = AUTO_OBJ2;
-		_G(auto_mov_vector)[ENERGIE_OBJ].Delay = _G(spieler).DelaySpeed;
+		_G(auto_mov_vector)[ENERGIE_OBJ].Delay = _G(gameState).DelaySpeed;
 		_G(auto_mov_obj)[ENERGIE_OBJ].Mode = true;
 		init_auto_obj(ENERGIE_OBJ, &SPINNE_PHASEN[0][0], 2, (const MovLine *)SPINNE_MPKT2);
 	}
@@ -192,11 +192,11 @@ void Room21::chewy_kolli() {
 		const int16 tmp = _G(spieler_vector)[P_CHEWY].Count;
 		stopPerson(P_CHEWY);
 		_G(flags).AutoAniPlay = true;
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		int16 ani_nr = (_G(spieler_vector)[P_CHEWY].Xyvo[0] < 0) ? 10 : 11;
 		_G(det)->setSetailPos(ani_nr, _G(spieler_vector)[P_CHEWY].Xypos[0], _G(spieler_vector)[P_CHEWY].Xypos[1]);
 		startSetAILWait(ani_nr, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(flags).AutoAniPlay = false;
 		_G(spieler_vector)[P_CHEWY].Count = tmp;
 		get_phase(&_G(spieler_vector)[P_CHEWY], &_G(spieler_mi)[P_CHEWY]);
@@ -205,11 +205,11 @@ void Room21::chewy_kolli() {
 }
 
 void Room21::salto() {
-	if (!_G(spieler).inv_cur && _G(atds)->get_ats_str(134, TXT_MARK_USE, ATS_DATA) == 8
-		&& !_G(spieler).R21Salto && !_G(flags).AutoAniPlay) {
-		_G(spieler).R21Salto = true;
+	if (!_G(gameState).inv_cur && _G(atds)->get_ats_str(134, TXT_MARK_USE, ATS_DATA) == 8
+		&& !_G(gameState).R21Salto && !_G(flags).AutoAniPlay) {
+		_G(gameState).R21Salto = true;
 		_G(flags).AutoAniPlay = true;
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 
 		for (int16 i = 0; i < 3; i++) {
 			_G(det)->setSetailPos(12 + i, _G(spieler_vector)[P_CHEWY].Xypos[0],
@@ -217,44 +217,44 @@ void Room21::salto() {
 		}
 
 		startAniBlock(3, ABLOCK19);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		startAadWait(36);
 		_G(flags).AutoAniPlay = false;
 	}
 }
 
 void Room21::use_gitter_energie() {
-	_G(spieler).R21GitterEnergie = exit_flip_flop(-1, 47, -1, 131, 138, -1,
-		EXIT_BOTTOM, EXIT_TOP, (int16)_G(spieler).R21GitterEnergie);
+	_G(gameState).R21GitterEnergie = exit_flip_flop(-1, 47, -1, 131, 138, -1,
+		EXIT_BOTTOM, EXIT_TOP, (int16)_G(gameState).R21GitterEnergie);
 	_G(auto_obj) = 0;
-	_G(spieler).R17Location = 1;
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState).R17Location = 1;
+	_G(gameState)._personHide[P_CHEWY] = true;
 
 	switchRoom(17);
 	_G(det)->hideStaticSpr(5);
 	startSetAILWait(9, 1, ANI_FRONT);
-	_G(spieler).R17GitterWeg = true;
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState).R17GitterWeg = true;
+	_G(gameState)._personHide[P_CHEWY] = false;
 }
 
 int16 Room21::use_fenster() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && !_G(flags).AutoAniPlay && _G(spieler).R21Laser1Weg) {
+	if (!_G(gameState).inv_cur && !_G(flags).AutoAniPlay && _G(gameState).R21Laser1Weg) {
 		action_flag = true;
 		_G(flags).AutoAniPlay = true;
-		_G(spieler).R18Gitter = true;
+		_G(gameState).R18Gitter = true;
 		autoMove(13, P_CHEWY);
 		setPersonPos(541, 66, P_CHEWY, P_LEFT);
 		switchRoom(18);
 
-		if (!_G(spieler).R18FirstEntry) {
+		if (!_G(gameState).R18FirstEntry) {
 			startAadWait(39);
-			_G(spieler).R18FirstEntry = true;
+			_G(gameState).R18FirstEntry = true;
 		}
 
-		_G(spieler).room_e_obj[50].Attribut = EXIT_TOP;
-		_G(spieler).room_e_obj[41].Attribut = 255;
+		_G(gameState).room_e_obj[50].Attribut = EXIT_TOP;
+		_G(gameState).room_e_obj[41].Attribut = 255;
 		_G(flags).AutoAniPlay = false;
 	}
 
diff --git a/engines/chewy/rooms/room22.cpp b/engines/chewy/rooms/room22.cpp
index 9757b8e7552..59e3064e1ce 100644
--- a/engines/chewy/rooms/room22.cpp
+++ b/engines/chewy/rooms/room22.cpp
@@ -60,10 +60,10 @@ AniBlock ABLOCK14[2] = {
 
 
 void Room22::entry() {
-	if (!_G(spieler).R22BorkPlatt) {
+	if (!_G(gameState).R22BorkPlatt) {
 		_G(det)->load_taf_seq(36, 21, nullptr);
 		_G(room)->set_timer(255, 15);
-	} else if (!_G(spieler).R22GetBork) {
+	} else if (!_G(gameState).R22GetBork) {
 		_G(det)->showStaticSpr(4);
 	}
 }
@@ -78,19 +78,19 @@ bool Room22::timer(int16 t_nr, int16 ani_nr) {
 
 int16 Room22::chewy_amboss() {
 	int16 action_flag = false;
-	if (!_G(spieler).R22ChewyPlatt && !_G(spieler).inv_cur && !_G(flags).AutoAniPlay) {
+	if (!_G(gameState).R22ChewyPlatt && !_G(gameState).inv_cur && !_G(flags).AutoAniPlay) {
 		action_flag = true;
 		_G(flags).AutoAniPlay = true;
 		hideCur();
 
 		autoMove(5, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(1, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		autoMove(2, P_CHEWY);
 		_G(flags).NoPalAfterFlc = false;
 		flic_cut(FCUT_006);
-		_G(spieler).R22ChewyPlatt = true;
+		_G(gameState).R22ChewyPlatt = true;
 		_G(atds)->set_ats_str(79, 1, ATS_DATA);
 		_G(flags).AutoAniPlay = false;
 
@@ -103,7 +103,7 @@ void Room22::bork(int16 t_nr) {
 	if (!_G(flags).AutoAniPlay && !is_chewy_busy()) {
 		_G(flags).AutoAniPlay = true;
 
-		if (!_G(spieler).R22BorkPlatt) {
+		if (!_G(gameState).R22BorkPlatt) {
 			hideCur();
 			start_spz(CH_TALK2, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(10);
@@ -114,15 +114,15 @@ void Room22::bork(int16 t_nr) {
 			_G(mov_phasen)[BORK_OBJ].Repeat = 1;
 			_G(mov_phasen)[BORK_OBJ].ZoomFak = 0;
 			_G(auto_mov_obj)[BORK_OBJ].Id = AUTO_OBJ0;
-			_G(auto_mov_vector)[BORK_OBJ].Delay = _G(spieler).DelaySpeed;
+			_G(auto_mov_vector)[BORK_OBJ].Delay = _G(gameState).DelaySpeed;
 			_G(auto_mov_obj)[BORK_OBJ].Mode = true;
 
-			if (!_G(spieler).R22Paint) {
+			if (!_G(gameState).R22Paint) {
 				bork_walk1();
 			} else {
-				if (!_G(spieler).R22ChewyPlatt) {
+				if (!_G(gameState).R22ChewyPlatt) {
 					_G(atds)->setControlBit(79, ATS_ACTIVE_BIT, ATS_DATA);
-					_G(spieler).R22ChewyPlatt = true;
+					_G(gameState).R22ChewyPlatt = true;
 				}
 
 				bork_walk2();
@@ -155,24 +155,24 @@ void Room22::bork_walk2() {
 	register_cutscene(3);
 	_G(det)->showStaticSpr(4);
 	_G(atds)->delControlBit(81, ATS_ACTIVE_BIT, ATS_DATA);
-	_G(spieler).R22BorkPlatt = true;
+	_G(gameState).R22BorkPlatt = true;
 	_G(atds)->setControlBit(79, ATS_ACTIVE_BIT, ATS_DATA);
 }
 
 void Room22::get_bork() {
-	if (!_G(spieler).R22GetBork && _G(spieler).R22BorkPlatt) {
+	if (!_G(gameState).R22GetBork && _G(gameState).R22BorkPlatt) {
 		autoMove(4, P_CHEWY);
 		_G(det)->hideStaticSpr(4);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startAniBlock(2, ABLOCK14);
 		setPersonPos(171, 120, P_CHEWY, P_LEFT);
 		startAadWait(11);
 		_G(det)->stop_detail(3);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(atds)->setControlBit(81, ATS_ACTIVE_BIT, ATS_DATA);
 		invent_2_slot(BORK_INV);
 
-		_G(spieler).R22GetBork = true;
+		_G(gameState).R22GetBork = true;
 		_G(menu_item) = CUR_WALK;
 		cursorChoice(_G(menu_item));
 	}
@@ -187,15 +187,15 @@ int16 Room22::malen() {
 		autoMove(8, P_CHEWY);
 		flic_cut(FCUT_007);
 		_G(atds)->set_ats_str(82, TXT_MARK_LOOK, 1, ATS_DATA);
-		_G(spieler).R22Paint = true;
+		_G(gameState).R22Paint = true;
 		_G(obj)->calc_rsi_flip_flop(SIB_PAINT_R22);
 		_G(obj)->hide_sib(SIB_PAINT_R22);
-		delInventory(_G(spieler).AkInvent);
+		delInventory(_G(gameState).AkInvent);
 		_G(obj)->calc_all_static_detail();
 		_G(flags).AutoAniPlay = false;
 
-		if (!_G(spieler).R22ChewyPlatt) {
-			_G(spieler).R22ChewyPlatt = true;
+		if (!_G(gameState).R22ChewyPlatt) {
+			_G(gameState).R22ChewyPlatt = true;
 			_G(atds)->setControlBit(79, ATS_ACTIVE_BIT, ATS_DATA);
 		}
 	}
diff --git a/engines/chewy/rooms/room23.cpp b/engines/chewy/rooms/room23.cpp
index a0055ae6884..86c1e60575d 100644
--- a/engines/chewy/rooms/room23.cpp
+++ b/engines/chewy/rooms/room23.cpp
@@ -37,17 +37,17 @@ static const AniBlock ABLOCK15[4] = {
 
 
 void Room23::entry() {
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	setPersonPos(135, 69, P_CHEWY, -1);
 }
 
 void Room23::cockpit() {
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	_G(mouseLeftClick) = false;
 	switchRoom(23);
 
-	if (!_G(spieler).R23Cartridge || !_G(spieler).R25GleiteLoesch)
+	if (!_G(gameState).R23Cartridge || !_G(gameState).R25GleiteLoesch)
 		_G(det)->hideStaticSpr(3);
 	else
 		_G(det)->showStaticSpr(3);
@@ -56,21 +56,21 @@ void Room23::cockpit() {
 int16 Room23::start_gleiter() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_flag = true;
-		if (!_G(spieler).R23FluxoFlex)
+		if (!_G(gameState).R23FluxoFlex)
 			startAadWait(23);
 		else {
 			bool start_ok = true;
 
-			if (_G(spieler).R23GleiterExit == 16) {
-				if (!_G(spieler).R16F5Exit) {
+			if (_G(gameState).R23GleiterExit == 16) {
+				if (!_G(gameState).R16F5Exit) {
 					start_ok = false;
 					startAadWait(35);
-				} else if (!_G(spieler).R23Cartridge || !_G(spieler).R18CartSave) {
+				} else if (!_G(gameState).R23Cartridge || !_G(gameState).R18CartSave) {
 					start_ok = false;
 					startAadWait(41);
-				} else if (!_G(spieler).R17EnergieOut) {
+				} else if (!_G(gameState).R17EnergieOut) {
 					start_ok = false;
 					startAadWait(300);
 				}
@@ -84,30 +84,30 @@ int16 Room23::start_gleiter() {
 				for (int16 i = 0; i < 4; i++)
 					_G(det)->stop_detail(i);
 
-				if (_G(spieler).R23GleiterExit == 14) {
+				if (_G(gameState).R23GleiterExit == 14) {
 					_G(out)->setPointer(nullptr);
 					_G(out)->cls();
 					_G(flags).NoPalAfterFlc = true;
 					flic_cut(FCUT_011);
 					register_cutscene(7);
 					_G(out)->cls();
-					_G(spieler).R23GleiterExit = 16;
+					_G(gameState).R23GleiterExit = 16;
 					setPersonPos(126, 110, P_CHEWY, P_RIGHT);
 
-					switchRoom(_G(spieler).R23GleiterExit);
+					switchRoom(_G(gameState).R23GleiterExit);
 					start_spz_wait(CH_WONDER1, 2, false, P_CHEWY);
 					start_spz(CH_TALK2, 255, ANI_FRONT, P_CHEWY);
 
-					_G(spieler).DelaySpeed = 10;
+					_G(gameState).DelaySpeed = 10;
 					startAadWait(59);
 					stopPerson(P_CHEWY);
 					_G(mouseLeftClick) = false;
 
-				} else if (_G(spieler).R23GleiterExit == 16) {
+				} else if (_G(gameState).R23GleiterExit == 16) {
 					_G(out)->setPointer(nullptr);
 					_G(out)->cls();
 					flic_cut(FCUT_SPACECHASE_18);
-					_G(spieler).R23GleiterExit = 25;
+					_G(gameState).R23GleiterExit = 25;
 					register_cutscene(9);
 
 					cur_2_inventory();
@@ -116,7 +116,7 @@ int16 Room23::start_gleiter() {
 					remove_inventory(4);
 					remove_inventory(15);
 					remove_inventory(16);
-					switchRoom(_G(spieler).R23GleiterExit);
+					switchRoom(_G(gameState).R23GleiterExit);
 				}
 
 				showCur();
@@ -128,10 +128,10 @@ int16 Room23::start_gleiter() {
 }
 
 void Room23::use_cartridge() {
-	delInventory(_G(spieler).AkInvent);
-	_G(spieler).R23Cartridge = true;
+	delInventory(_G(gameState).AkInvent);
+	_G(gameState).R23Cartridge = true;
 
-	if (_G(spieler).R18CartSave) {
+	if (_G(gameState).R18CartSave) {
 		_G(atds)->delControlBit(171, ATS_ACTIVE_BIT, ATS_DATA);
 		_G(atds)->set_ats_str(111, 2, ATS_DATA);
 		startSetAILWait(4, 1, ANI_FRONT);
@@ -147,7 +147,7 @@ void Room23::get_cartridge() {
 	_G(atds)->set_ats_str(111, 0, ATS_DATA);
 	_G(atds)->setControlBit(171, ATS_ACTIVE_BIT, ATS_DATA);
 
-	_G(spieler).R23Cartridge = false;
+	_G(gameState).R23Cartridge = false;
 	_G(det)->hideStaticSpr(3);
 }
 
diff --git a/engines/chewy/rooms/room24.cpp b/engines/chewy/rooms/room24.cpp
index 5f506913442..c1134a631de 100644
--- a/engines/chewy/rooms/room24.cpp
+++ b/engines/chewy/rooms/room24.cpp
@@ -37,17 +37,17 @@ static const uint8 KRISTALL_SPR[3][3] = {
 
 void Room24::entry() {
 	_G(flags).MainInput = false;
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	setPersonPos(0, 0, P_CHEWY, -1);
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	_G(curblk).sprite = _G(room_blk)._detImage;
 	_G(curani)._start = 7;
 	_G(curani)._end = 10;
 	_G(menu_item) = CUR_USER;
 	cursorChoice(CUR_USER);
 
-	if (_G(spieler).R16F5Exit)
+	if (_G(gameState).R16F5Exit)
 		_G(det)->showStaticSpr(10);
 	else
 		_G(det)->hideStaticSpr(10);
@@ -56,70 +56,70 @@ void Room24::entry() {
 	calc_animation(255);
 
 	for (int16 i = 0; i < 3; i++) {
-		if (KRISTALL_SPR[i][_G(spieler).R24Hebel[i]] == 20)
+		if (KRISTALL_SPR[i][_G(gameState).R24Hebel[i]] == 20)
 			_G(det)->startDetail(5 + i * 4, 255, ANI_BACK);
 	}
 }
 
 void Room24::xit() {
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(menu_item) = CUR_WALK;
 	cursorChoice(_G(menu_item));
 	setPersonPos(263, 144, P_CHEWY, -1);
-	_G(spieler).scrollx = 88;
+	_G(gameState).scrollx = 88;
 	_G(mouseLeftClick) = false;
 	_G(flags).MainInput = true;
 }
 
 void Room24::use_hebel(int16 txt_nr) {
-	if (!_G(spieler).R24Hebel[txt_nr - 161] ||
-		_G(spieler).R24Hebel[txt_nr - 161] == 2) {
-		_G(spieler).R24Hebel[txt_nr - 161] = 1;
-		_G(spieler).R24HebelDir[txt_nr - 161] ^= 1;
+	if (!_G(gameState).R24Hebel[txt_nr - 161] ||
+		_G(gameState).R24Hebel[txt_nr - 161] == 2) {
+		_G(gameState).R24Hebel[txt_nr - 161] = 1;
+		_G(gameState).R24HebelDir[txt_nr - 161] ^= 1;
 	} else {
-		if (_G(spieler).R24HebelDir[txt_nr - 161])
-			_G(spieler).R24Hebel[txt_nr - 161] = 0;
+		if (_G(gameState).R24HebelDir[txt_nr - 161])
+			_G(gameState).R24Hebel[txt_nr - 161] = 0;
 		else
-			_G(spieler).R24Hebel[txt_nr - 161] = 2;
+			_G(gameState).R24Hebel[txt_nr - 161] = 2;
 	}
 	calc_hebel_spr();
 	calc_animation(txt_nr - 161);
 
-	if (_G(spieler).R24Hebel[0] == 1 && _G(spieler).R24Hebel[1] == 0 && _G(spieler).R24Hebel[2] == 2) {
-		_G(spieler).R16F5Exit = true;
+	if (_G(gameState).R24Hebel[0] == 1 && _G(gameState).R24Hebel[1] == 0 && _G(gameState).R24Hebel[2] == 2) {
+		_G(gameState).R16F5Exit = true;
 		g_engine->_sound->playSound(1, 0);
 		g_engine->_sound->stopSound(1);
 		_G(det)->startDetail(1, 1, ANI_FRONT);
 		_G(det)->showStaticSpr(10);
 		_G(atds)->set_ats_str(164, TXT_MARK_NAME, 1, ATS_DATA);
 
-	} else if (_G(spieler).R16F5Exit) {
+	} else if (_G(gameState).R16F5Exit) {
 		_G(det)->hideStaticSpr(10);
 		g_engine->_sound->playSound(1, 1);
 		g_engine->_sound->stopSound(0);
 		_G(det)->startDetail(1, 1, ANI_BACK);
-		_G(spieler).R16F5Exit = false;
+		_G(gameState).R16F5Exit = false;
 		_G(atds)->set_ats_str(164, TXT_MARK_NAME, 0, ATS_DATA);
 	}
 }
 
 void Room24::calc_hebel_spr() {
-	if (!_G(spieler).R24FirstEntry) {
-		_G(spieler).R24FirstEntry = true;
-		_G(spieler).R24Hebel[0] = 2;
-		_G(spieler).R24HebelDir[0] = 0;
-		_G(spieler).R24Hebel[1] = 1;
-		_G(spieler).R24HebelDir[1] = 0;
-		_G(spieler).R24Hebel[2] = 0;
-		_G(spieler).R24HebelDir[2] = 1;
+	if (!_G(gameState).R24FirstEntry) {
+		_G(gameState).R24FirstEntry = true;
+		_G(gameState).R24Hebel[0] = 2;
+		_G(gameState).R24HebelDir[0] = 0;
+		_G(gameState).R24Hebel[1] = 1;
+		_G(gameState).R24HebelDir[1] = 0;
+		_G(gameState).R24Hebel[2] = 0;
+		_G(gameState).R24HebelDir[2] = 1;
 	}
 
 	for (int16 i = 0; i < 3; i++) {
 		for (int16 j = 0; j < 3; j++)
 			_G(det)->hideStaticSpr(1 + j + i * 3);
 
-		_G(det)->showStaticSpr(1 + _G(spieler).R24Hebel[i] + i * 3);
-		_G(atds)->set_ats_str(166 + i, TXT_MARK_NAME, _G(spieler).R24Hebel[i], ATS_DATA);
+		_G(det)->showStaticSpr(1 + _G(gameState).R24Hebel[i] + i * 3);
+		_G(atds)->set_ats_str(166 + i, TXT_MARK_NAME, _G(gameState).R24Hebel[i], ATS_DATA);
 	}
 }
 
@@ -127,17 +127,17 @@ void Room24::calc_animation(int16 kristall_nr) {
 	if (kristall_nr != 255) {
 		hideCur();
 
-		if (KRISTALL_SPR[kristall_nr][_G(spieler).R24Hebel[kristall_nr]] == 20) {
-			int16 ani_nr = _G(spieler).R24KristallLast[kristall_nr] == 13 ? 7 : 8;
+		if (KRISTALL_SPR[kristall_nr][_G(gameState).R24Hebel[kristall_nr]] == 20) {
+			int16 ani_nr = _G(gameState).R24KristallLast[kristall_nr] == 13 ? 7 : 8;
 			g_engine->_sound->playSound(ani_nr + kristall_nr * 4, 0);
 			g_engine->_sound->stopSound(0);
-			_G(det)->hideStaticSpr(_G(spieler).R24KristallLast[kristall_nr] + kristall_nr * 2);
+			_G(det)->hideStaticSpr(_G(gameState).R24KristallLast[kristall_nr] + kristall_nr * 2);
 			startSetAILWait(ani_nr + kristall_nr * 4, 1, ANI_BACK);
 			startSetAILWait(6 + kristall_nr * 4, 1, ANI_BACK);
 			_G(det)->startDetail(5 + kristall_nr * 4, 255, ANI_BACK);
 
-		} else if (_G(spieler).R24KristallLast[kristall_nr] == 20) {
-			int16 ani_nr = KRISTALL_SPR[kristall_nr][_G(spieler).R24Hebel[kristall_nr]] == 13 ? 7 : 8;
+		} else if (_G(gameState).R24KristallLast[kristall_nr] == 20) {
+			int16 ani_nr = KRISTALL_SPR[kristall_nr][_G(gameState).R24Hebel[kristall_nr]] == 13 ? 7 : 8;
 			g_engine->_sound->stopSound(0);
 			g_engine->_sound->playSound(5 + ani_nr + kristall_nr * 4, 0);
 			_G(det)->stop_detail(5 + kristall_nr * 4);
@@ -152,8 +152,8 @@ void Room24::calc_animation(int16 kristall_nr) {
 		_G(det)->hideStaticSpr(13 + i);
 
 	for (int16 i = 0; i < 3; i++) {
-		_G(det)->showStaticSpr(KRISTALL_SPR[i][_G(spieler).R24Hebel[i]] + i * 2);
-		_G(spieler).R24KristallLast[i] = KRISTALL_SPR[i][_G(spieler).R24Hebel[i]];
+		_G(det)->showStaticSpr(KRISTALL_SPR[i][_G(gameState).R24Hebel[i]] + i * 2);
+		_G(gameState).R24KristallLast[i] = KRISTALL_SPR[i][_G(gameState).R24Hebel[i]];
 	}
 }
 
diff --git a/engines/chewy/rooms/room25.cpp b/engines/chewy/rooms/room25.cpp
index 4e441f066f4..59aab38c367 100644
--- a/engines/chewy/rooms/room25.cpp
+++ b/engines/chewy/rooms/room25.cpp
@@ -44,19 +44,19 @@ static const MovLine SURIMY_MPKT[2] = {
 
 
 void Room25::entry() {
-	if (!_G(spieler).R25GleiteLoesch) {
+	if (!_G(gameState).R25GleiteLoesch) {
 		g_engine->_sound->playSound(0, 0);
 
 		for (int i = 0; i < 9; ++i)
 			_G(det)->startDetail(i, 255, ANI_FRONT);
 	}
 
-	if (!_G(spieler).R29Schlauch2) {
+	if (!_G(gameState).R29Schlauch2) {
 		_G(det)->hideStaticSpr(0);
 		_G(det)->hideStaticSpr(1);
 	}
 
-	if (!_G(spieler).R25FirstEntry) {
+	if (!_G(gameState).R25FirstEntry) {
 		hideCur();
 
 		if (_G(obj)->checkInventory(TRANSLATOR_INV)) {
@@ -64,43 +64,43 @@ void Room25::entry() {
 			_G(atds)->set_ats_str(113, 0, ATS_DATA);
 
 			remove_inventory(TRANSLATOR_INV);
-			_G(spieler).inv_cur = false;
+			_G(gameState).inv_cur = false;
 			_G(menu_item) = CUR_WALK;
-			_G(spieler).AkInvent = -1;
+			_G(gameState).AkInvent = -1;
 			cursorChoice(_G(menu_item));
 		}
 
-		_G(spieler).R25FirstEntry = true;
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState).R25FirstEntry = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		flic_cut(FCUT_029);
 		g_engine->_sound->playSound(0, 0);
 		_G(fx_blend) = BLEND_NONE;
 		setPersonPos(219, 141, P_CHEWY, P_RIGHT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		start_spz(CH_TALK11, 255, ANI_FRONT, P_CHEWY);
 		startAadWait(64);
 		showCur();
 
-	} else if (_G(spieler).R25GleiterExit && !_G(flags).LoadGame) {
+	} else if (_G(gameState).R25GleiterExit && !_G(flags).LoadGame) {
 		setPersonPos(127, 122, P_CHEWY, P_LEFT);
 
-		if (!_G(spieler).R25SurimyGo) {
-			_G(spieler).R25SurimyGo = 1;
+		if (!_G(gameState).R25SurimyGo) {
+			_G(gameState).R25SurimyGo = 1;
 			xit_gleiter();
 		}
 	}
 
-	_G(spieler).R25GleiterExit = false;
+	_G(gameState).R25GleiterExit = false;
 }
 
 int16 Room25::gleiter_loesch() {
 	int16 action_flag = false;
 	hideCur();
 
-	if (!_G(spieler).R25GleiteLoesch && _G(spieler).R29Schlauch2) {
-		if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).R25GleiteLoesch && _G(gameState).R29Schlauch2) {
+		if (!_G(gameState).inv_cur) {
 			action_flag = true;
-			_G(spieler).R25GleiteLoesch = true;
+			_G(gameState).R25GleiteLoesch = true;
 			autoMove(2, P_CHEWY);
 			flic_cut(FCUT_030);
 			_G(obj)->calc_rsi_flip_flop(SIB_SCHLAUCH_R25);
@@ -112,13 +112,13 @@ int16 Room25::gleiter_loesch() {
 				_G(det)->stop_detail(i);
 		}
 
-	} else if (_G(spieler).R25GleiteLoesch) {
+	} else if (_G(gameState).R25GleiteLoesch) {
 		if (isCurInventory(MILCH_LEER_INV)) {
 			action_flag = true;
 			autoMove(2, P_CHEWY);
-			start_spz_wait((_G(spieler).ChewyAni == CHEWY_ROCKER) ? 28 : 14, 1, false, P_CHEWY);
+			start_spz_wait((_G(gameState).ChewyAni == CHEWY_ROCKER) ? 28 : 14, 1, false, P_CHEWY);
 
-			delInventory(_G(spieler).AkInvent);
+			delInventory(_G(gameState).AkInvent);
 			_G(obj)->addInventory(MILCH_WAS_INV, &_G(room_blk));
 			inventory_2_cur(MILCH_WAS_INV);
 			startAadWait(253);
@@ -132,22 +132,22 @@ int16 Room25::gleiter_loesch() {
 int16 Room25::use_gleiter() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && _G(spieler).R25GleiteLoesch) {
+	if (!_G(gameState).inv_cur && _G(gameState).R25GleiteLoesch) {
 		action_flag = true;
 		hideCur();
 		autoMove(3, P_CHEWY);
 		showCur();
 
-		_G(spieler).R23GleiterExit = 25;
+		_G(gameState).R23GleiterExit = 25;
 		Room23::cockpit();
 	}
 	return action_flag;
 }
 
 void Room25::xit_gleiter() {
-	if (!_G(spieler).R25SurimyLauf) {
+	if (!_G(gameState).R25SurimyLauf) {
 		hideCur();
-		_G(spieler).R25SurimyLauf = true;
+		_G(gameState).R25SurimyLauf = true;
 		_G(det)->load_taf_seq(56, 8, nullptr);
 		_G(auto_obj) = 1;
 		_G(mov_phasen)[SURIMY_OBJ].AtsText = 0;
@@ -155,7 +155,7 @@ void Room25::xit_gleiter() {
 		_G(mov_phasen)[SURIMY_OBJ].Repeat = 1;
 		_G(mov_phasen)[SURIMY_OBJ].ZoomFak = 0;
 		_G(auto_mov_obj)[SURIMY_OBJ].Id = AUTO_OBJ0;
-		_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(spieler).DelaySpeed + 2;
+		_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(gameState).DelaySpeed + 2;
 		_G(auto_mov_obj)[SURIMY_OBJ].Mode = true;
 		init_auto_obj(SURIMY_OBJ, &SURIMY_PHASEN[0][0], 2, (const MovLine *)SURIMY_MPKT);
 		_G(fx_blend) = BLEND1;
diff --git a/engines/chewy/rooms/room26.cpp b/engines/chewy/rooms/room26.cpp
index a8213526429..b7192ef5442 100644
--- a/engines/chewy/rooms/room26.cpp
+++ b/engines/chewy/rooms/room26.cpp
@@ -29,7 +29,7 @@ namespace Chewy {
 namespace Rooms {
 
 void Room26::entry() {
-	if (_G(spieler).R25GleiteLoesch)
+	if (_G(gameState).R25GleiteLoesch)
 		g_engine->_sound->stopSound(0);
 	else
 		g_engine->_sound->playSound(0, 0);
diff --git a/engines/chewy/rooms/room27.cpp b/engines/chewy/rooms/room27.cpp
index 7a65309208b..3b34049d081 100644
--- a/engines/chewy/rooms/room27.cpp
+++ b/engines/chewy/rooms/room27.cpp
@@ -29,7 +29,7 @@ namespace Chewy {
 namespace Rooms {
 
 void Room27::entry() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 27) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 27) {
 		_G(timer_nr)[0] = _G(room)->set_timer(0, 5);
 		_G(det)->set_static_ani(0, -1);
 		_G(atds)->delControlBit(274, ATS_ACTIVE_BIT, ATS_DATA);
@@ -37,24 +37,24 @@ void Room27::entry() {
 		_G(atds)->setControlBit(274, ATS_ACTIVE_BIT, ATS_DATA);
 	}
 
-	_G(spieler)._personHide[P_HOWARD] = true;
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState)._personHide[P_HOWARD] = true;
+	_G(gameState).ScrollxStep = 2;
 }
 
 void Room27::xit(int16 eib_nr) {
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).ScrollxStep = 1;
 	hideCur();
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 27) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 27) {
 		if (eib_nr == 55) {
 			startAadWait(175);
 			_G(room)->set_timer_status(0, TIMER_STOP);
 			_G(det)->del_static_ani(0);
 			startSetAILWait(2, 1, ANI_FRONT);
-			_G(spieler)._personRoomNr[P_HOWARD] = 28;
+			_G(gameState)._personRoomNr[P_HOWARD] = 28;
 			_G(spieler_mi)[P_HOWARD].Id = HOWARD_OBJ;
-		} else if (_G(spieler).R27HowardGed < 3 && eib_nr != -1) {
-			++_G(spieler).R27HowardGed;
+		} else if (_G(gameState).R27HowardGed < 3 && eib_nr != -1) {
+			++_G(gameState).R27HowardGed;
 			startAadWait(174);
 		}
 	}
@@ -67,7 +67,7 @@ void Room27::get_surimy() {
 	hideCur();
 	autoMove(4, P_CHEWY);
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 27) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 27) {
 		startAadWait(171);
 	}
 
@@ -83,8 +83,8 @@ void Room27::talk_howard() {
 }
 
 void Room27::howard_ged() {
-	if (_G(spieler).R27HowardGed < 3) {
-		++_G(spieler).R27HowardGed;
+	if (_G(gameState).R27HowardGed < 3) {
+		++_G(gameState).R27HowardGed;
 	}
 }
 
diff --git a/engines/chewy/rooms/room28.cpp b/engines/chewy/rooms/room28.cpp
index a458d736f04..33a3e06681f 100644
--- a/engines/chewy/rooms/room28.cpp
+++ b/engines/chewy/rooms/room28.cpp
@@ -33,46 +33,46 @@ void Room28::entry(int16 eib_nr) {
 	_G(zoom_horizont) = 140;
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 3;
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 
-	if (_G(spieler).R28RKuerbis)
+	if (_G(gameState).R28RKuerbis)
 		_G(det)->showStaticSpr(6);
 
-	if (_G(spieler).R28Briefkasten) {
+	if (_G(gameState).R28Briefkasten) {
 		_G(det)->showStaticSpr(8);
 		_G(det)->showStaticSpr(9);
 	} else {
 		_G(det)->showStaticSpr(7);
 	}
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 28) {
-		_G(spieler).ZoomXy[P_HOWARD][0] = 40;
-		_G(spieler).ZoomXy[P_HOWARD][1] = 40;
-		_G(spieler)._personHide[P_HOWARD] = false;
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 28) {
+		_G(gameState).ZoomXy[P_HOWARD][0] = 40;
+		_G(gameState).ZoomXy[P_HOWARD][1] = 40;
+		_G(gameState)._personHide[P_HOWARD] = false;
 		hideCur();
 		_G(SetUpScreenFunc) = setup_func;
 
-		if (_G(spieler).R40Wettbewerb) {
-			_G(spieler).scrollx = 320;
-			_G(spieler)._personHide[P_CHEWY] = false;
+		if (_G(gameState).R40Wettbewerb) {
+			_G(gameState).scrollx = 320;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			haendler();
-			_G(spieler).R40Wettbewerb = false;
+			_G(gameState).R40Wettbewerb = false;
 		} else {
 			switch (eib_nr) {
 			case 55:
-				if (!_G(spieler).R28EntryHaus) {
-					_G(spieler).R28EntryHaus = true;
+				if (!_G(gameState).R28EntryHaus) {
+					_G(gameState).R28EntryHaus = true;
 					setPersonPos(232, 100, P_HOWARD, P_RIGHT);
 					autoMove(3, P_HOWARD);
 					goAutoXy(320, _G(spieler_vector)[P_HOWARD].Xypos[1], P_HOWARD, ANI_WAIT);
 					startAadWait(176);
-				} else if (_G(spieler).R31SurFurz && !_G(spieler).R28RKuerbis) {
-					_G(spieler).R28RKuerbis = true;
-					_G(spieler).ScrollxStep = 2;
+				} else if (_G(gameState).R31SurFurz && !_G(gameState).R28RKuerbis) {
+					_G(gameState).R28RKuerbis = true;
+					_G(gameState).ScrollxStep = 2;
 					autoMove(6, P_CHEWY);
 					waitShowScreen(10);
 					startAadWait(194);
-					_G(spieler).room_e_obj[62].Attribut = 255;
+					_G(gameState).room_e_obj[62].Attribut = 255;
 					_G(atds)->set_ats_str(208, 1, ATS_DATA);
 					_G(flags).NoScroll = true;
 
@@ -80,7 +80,7 @@ void Room28::entry(int16 eib_nr) {
 					flic_cut(FCUT_064);
 					_G(det)->showStaticSpr(6);
 
-					if (!_G(spieler).R40TeilKarte) {
+					if (!_G(gameState).R40TeilKarte) {
 						_G(out)->ausblenden(0);
 						_G(out)->set_partialpalette(_G(pal), 255, 1);
 						startAadWait(607);
@@ -89,28 +89,28 @@ void Room28::entry(int16 eib_nr) {
 
 					_G(flags).NoScroll = false;
 
-					if (_G(spieler).R40TeilKarte) {
+					if (_G(gameState).R40TeilKarte) {
 						haendler();
 					} else {
 						waitShowScreen(60);
 						startAadWait(195);
 					}
 
-					_G(spieler).ScrollxStep = 2;
+					_G(gameState).ScrollxStep = 2;
 				}
 				break;
 
 			case 70:
 			case 77:
-				if (_G(spieler).R28PostCar) {
-					_G(spieler).R28PostCar = false;
+				if (_G(gameState).R28PostCar) {
+					_G(gameState).R28PostCar = false;
 					_G(out)->setPointer(nullptr);
 					_G(out)->cls();
 					flic_cut(FCUT_063);
-					_G(spieler).R28ChewyPump = false;
+					_G(gameState).R28ChewyPump = false;
 					invent_2_slot(K_MASKE_INV);
 					_G(atds)->set_ats_str(209, 0, ATS_DATA);
-					_G(spieler).room_e_obj[69].Attribut = 255;
+					_G(gameState).room_e_obj[69].Attribut = 255;
 					load_chewy_taf(CHEWY_NORMAL);
 
 					setPersonPos(480, 118, P_HOWARD, P_LEFT);
@@ -140,20 +140,20 @@ void Room28::entry(int16 eib_nr) {
 }
 
 void Room28::xit(int16 eib_nr) {
-	_G(spieler).R28PostCar = false;
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).R28PostCar = false;
+	_G(gameState).ScrollxStep = 1;
 	hideCur();
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 28 && eib_nr == 69) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 28 && eib_nr == 69) {
 		_G(SetUpScreenFunc) = nullptr;
-		if (!_G(spieler).R28ExitTown) {
+		if (!_G(gameState).R28ExitTown) {
 			startAadWait(178);
-			_G(spieler).R28ExitTown = true;
+			_G(gameState).R28ExitTown = true;
 		}
 
 		_G(flags).ExitMov = false;
 		autoMove(6, P_HOWARD);
-		_G(spieler)._personRoomNr[P_HOWARD] = 40;
+		_G(gameState)._personRoomNr[P_HOWARD] = 40;
 	}
 
 	showCur();
@@ -167,17 +167,17 @@ void Room28::gedAction(int index) {
 void Room28::haendler() {
 	hideCur();
 	_G(SetUpScreenFunc) = nullptr;
-	_G(spieler).R28ChewyPump = true;
+	_G(gameState).R28ChewyPump = true;
 	delInventory(K_MASKE_INV);
 	_G(atds)->set_ats_str(209, 1, ATS_DATA);
-	_G(spieler).room_e_obj[69].Attribut = EXIT_TOP;
+	_G(gameState).room_e_obj[69].Attribut = EXIT_TOP;
 	load_chewy_taf(CHEWY_PUMPKIN);
 
 	setPersonPos(480, 113, P_HOWARD, P_RIGHT);
 	setPersonPos(490, 146, P_CHEWY, P_RIGHT);
 	_G(det)->set_static_ani(2, -1);
 
-	while (_G(spieler).scrollx < 300) {
+	while (_G(gameState).scrollx < 300) {
 		SHOULD_QUIT_RETURN;
 		setupScreen(DO_SETUP);
 	}
@@ -211,11 +211,11 @@ void Room28::use_surimy() {
 	int16 dia_nr;
 	int16 ani_nr;
 
-	if (!_G(spieler).R28SurimyCar) {
+	if (!_G(gameState).R28SurimyCar) {
 		hideCur();
 		_G(flags).NoScroll = true;
 		auto_scroll(0, 0);
-		_G(spieler).R28SurimyCar = true;
+		_G(gameState).R28SurimyCar = true;
 		start_spz_wait(CH_LGET_U, 1, false, P_CHEWY);
 		flic_cut(FCUT_055);
 		flic_cut(FCUT_056);
@@ -240,42 +240,42 @@ void Room28::use_surimy() {
 void Room28::set_pump() {
 	hideCur();
 
-	if (_G(spieler)._personRoomNr[P_CHEWY] == 28) {
+	if (_G(gameState)._personRoomNr[P_CHEWY] == 28) {
 		if (!_G(flags).AutoAniPlay) {
 			_G(flags).AutoAniPlay = true;
 			if (_G(spieler_vector)[P_CHEWY].Xypos[0] < 380)
 				autoMove(5, P_CHEWY);
 
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			int16 tmp = (_G(person_end_phase)[P_CHEWY] == P_RIGHT) ? 1 : 0;
 			delInventory(K_MASKE_INV);
 			_G(det)->setSetailPos(tmp, _G(spieler_vector)[P_CHEWY].Xypos[0], _G(spieler_vector)[P_CHEWY].Xypos[1]);
 
-			if (_G(spieler).R28PumpTxt1 < 3) {
+			if (_G(gameState).R28PumpTxt1 < 3) {
 				start_aad(137);
-				++_G(spieler).R28PumpTxt1;
+				++_G(gameState).R28PumpTxt1;
 			}
 
 			startSetAILWait(tmp, 1, ANI_FRONT);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 
 			load_chewy_taf(CHEWY_PUMPKIN);
-			_G(spieler).R28ChewyPump = true;
+			_G(gameState).R28ChewyPump = true;
 
-			if (_G(spieler).R39TranslatorUsed) {
-				_G(spieler).room_e_obj[69].Attribut = EXIT_TOP;
+			if (_G(gameState).R39TranslatorUsed) {
+				_G(gameState).room_e_obj[69].Attribut = EXIT_TOP;
 			} else {
 				_G(atds)->set_ats_str(209, 1, ATS_DATA);
 			}
 
-			if (_G(spieler)._personRoomNr[P_HOWARD] == 28 && _G(spieler).R28PumpTxt < 3) {
+			if (_G(gameState)._personRoomNr[P_HOWARD] == 28 && _G(gameState).R28PumpTxt < 3) {
 				stopPerson(P_HOWARD);
 				_G(SetUpScreenFunc) = nullptr;
 				g_engine->_sound->waitForSpeechToFinish();
 
 				startAadWait(177);
 				_G(SetUpScreenFunc) = setup_func;
-				++_G(spieler).R28PumpTxt;
+				++_G(gameState).R28PumpTxt;
 			}
 
 			_G(flags).AutoAniPlay = false;
@@ -289,23 +289,23 @@ void Room28::set_pump() {
 
 void Room28::get_pump() {
 
-	if (_G(spieler).R28ChewyPump) {
+	if (_G(gameState).R28ChewyPump) {
 		hideCur();
 
 		stopPerson(P_CHEWY);
-		_G(spieler).R28ChewyPump = false;
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState).R28ChewyPump = false;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		int16 tmp = (_G(person_end_phase)[P_CHEWY] == P_RIGHT) ? 1 : 0;
 		_G(det)->setSetailPos(tmp, _G(spieler_vector)[P_CHEWY].Xypos[0], _G(spieler_vector)[P_CHEWY].Xypos[1]);
 		startSetAILWait(tmp, 1, ANI_BACK);
 
 		invent_2_slot(K_MASKE_INV);
 		_G(atds)->set_ats_str(209, 0, ATS_DATA);
-		_G(spieler).room_e_obj[69].Attribut = 255;
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState).room_e_obj[69].Attribut = 255;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		load_chewy_taf(CHEWY_NORMAL);
 
-		if (_G(spieler).R28PumpTxt1 < 3) {
+		if (_G(gameState).R28PumpTxt1 < 3) {
 			start_spz(CH_TALK3, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(138);
 		}
@@ -317,10 +317,10 @@ void Room28::get_pump() {
 int16 Room28::use_breifkasten() {
 	int16 action_flag = false;
 
-	if (_G(spieler).R28Briefkasten && !_G(spieler).inv_cur) {
+	if (_G(gameState).R28Briefkasten && !_G(gameState).inv_cur) {
 		action_flag = true;
 		hideCur();
-		_G(spieler).R28Briefkasten = false;
+		_G(gameState).R28Briefkasten = false;
 		autoMove(7, P_CHEWY);
 		start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
 		_G(det)->hideStaticSpr(8);
@@ -332,7 +332,7 @@ int16 Room28::use_breifkasten() {
 		_G(atds)->set_ats_str(206, 0, ATS_DATA);
 		showCur();
 		invent_2_slot(MANUSKRIPT_INV);
-		_G(spieler).R28Manuskript = true;
+		_G(gameState).R28Manuskript = true;
 	}
 
 	return action_flag;
diff --git a/engines/chewy/rooms/room29.cpp b/engines/chewy/rooms/room29.cpp
index 15d24909bf6..53301449559 100644
--- a/engines/chewy/rooms/room29.cpp
+++ b/engines/chewy/rooms/room29.cpp
@@ -43,21 +43,21 @@ static const AniBlock ABLOCK27[5] = {
 
 
 void Room29::entry() {
-	if (_G(spieler).R29Schlauch1) {
+	if (_G(gameState).R29Schlauch1) {
 		_G(det)->showStaticSpr(7);
-	} else if (_G(spieler).R29Schlauch2) {
+	} else if (_G(gameState).R29Schlauch2) {
 		_G(det)->showStaticSpr(8);
 		_G(det)->showStaticSpr(10);
 	}
 
-	if (_G(spieler).R29AutoSitz) {
-		if (_G(spieler).ChewyAni == CHEWY_ROCKER)
+	if (_G(gameState).R29AutoSitz) {
+		if (_G(gameState).ChewyAni == CHEWY_ROCKER)
 			_G(atds)->setControlBit(212, ATS_ACTIVE_BIT, ATS_DATA);
 		else
 			_G(det)->showStaticSpr(9);
 	}
 
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 }
 
 void Room29::xit() {
@@ -68,19 +68,19 @@ void Room29::xit() {
 int16 Room29::use_pumpe() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).R29Pumpe) {
+	if (!_G(gameState).R29Pumpe) {
 		hideCur();
 
 		if (isCurInventory(SCHLAUCH_INV)) {
 			action_flag = true;
-			_G(spieler).R29Pumpe = true;
-			_G(spieler).R29Schlauch1 = true;
+			_G(gameState).R29Pumpe = true;
+			_G(gameState).R29Schlauch1 = true;
 			autoMove(1, P_CHEWY);
 			start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
 			_G(det)->showStaticSpr(7);
 			_G(atds)->delControlBit(218, ATS_ACTIVE_BIT, ATS_DATA);
 			delInventory(SCHLAUCH_INV);
-		} else if (!_G(spieler).inv_cur) {
+		} else if (!_G(gameState).inv_cur) {
 			action_flag = true;
 			startAadWait(62);
 		}
@@ -93,7 +93,7 @@ int16 Room29::use_pumpe() {
 
 int16 Room29::get_schlauch() {
 	int16 action_flag = false;
-	if (_G(spieler).R29Schlauch1 && !_G(spieler).inv_cur) {
+	if (_G(gameState).R29Schlauch1 && !_G(gameState).inv_cur) {
 		action_flag = true;
 		hideCur();
 
@@ -116,18 +116,18 @@ bool Room29::use_schlauch() {
 		autoMove(2, P_CHEWY);
 		start_spz_wait(CH_LGET_U, 1, false, P_CHEWY);
 		_G(det)->hideStaticSpr(7);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(4, 1, ANI_FRONT);
 		_G(det)->showStaticSpr(8);
 		_G(det)->showStaticSpr(10);
 		_G(atds)->delControlBit(219, ATS_ACTIVE_BIT, ATS_DATA);
 		_G(atds)->set_ats_str(218, 1, ATS_DATA);
 
-		_G(spieler).R29Schlauch1 = false;
-		_G(spieler).R29Schlauch2 = true;
+		_G(gameState).R29Schlauch1 = false;
+		_G(gameState).R29Schlauch2 = true;
 		delInventory(PUMPE_INV);
 		setPersonPos(308, 105, P_CHEWY, P_RIGHT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		showCur();
 	}
 
@@ -135,10 +135,10 @@ bool Room29::use_schlauch() {
 }
 
 void Room29::schlitz_sitz() {
-	if (!_G(spieler).R29AutoSitz) {
+	if (!_G(gameState).R29AutoSitz) {
 		hideCur();
-		_G(spieler).R29AutoSitz = true;
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState).R29AutoSitz = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		_G(det)->hideStaticSpr(4);
 		_G(det)->showStaticSpr(11);
 		startAniBlock(3, ABLOCK26);
@@ -149,7 +149,7 @@ void Room29::schlitz_sitz() {
 
 		_G(det)->stop_detail(2);
 		_G(atds)->delControlBit(212, ATS_ACTIVE_BIT, ATS_DATA);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(mouseLeftClick) = false;
 		g_events->_kbInfo._scanCode = Common::KEYCODE_INVALID;
 
@@ -160,12 +160,12 @@ void Room29::schlitz_sitz() {
 int16 Room29::zaun_sprung() {
 	int16 action_flag = false;
 
-	if (_G(spieler).R29AutoSitz && !_G(spieler).inv_cur) {
+	if (_G(gameState).R29AutoSitz && !_G(gameState).inv_cur) {
 		hideCur();
 		
 		action_flag = true;
 		autoMove(3, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startDetailFrame(3, 1, ANI_FRONT, 7);
 		_G(det)->hideStaticSpr(9);
 		startAniBlock(5, ABLOCK27);
@@ -173,7 +173,7 @@ int16 Room29::zaun_sprung() {
 
 		showCur();
 		switchRoom(37);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 
 	}
 
diff --git a/engines/chewy/rooms/room31.cpp b/engines/chewy/rooms/room31.cpp
index 321af90df21..22d0b0a584a 100644
--- a/engines/chewy/rooms/room31.cpp
+++ b/engines/chewy/rooms/room31.cpp
@@ -47,10 +47,10 @@ void Room31::entry() {
 }
 
 void Room31::surimy_go() {
-	if (!_G(spieler).R39ScriptOk && _G(spieler).R25SurimyLauf) {
-		if (_G(spieler).R31SurimyGo >= 3) {
+	if (!_G(gameState).R39ScriptOk && _G(gameState).R25SurimyLauf) {
+		if (_G(gameState).R31SurimyGo >= 3) {
 			hideCur();
-			_G(spieler).R31SurimyGo = 0;
+			_G(gameState).R31SurimyGo = 0;
 			_G(det)->load_taf_seq(39, 8, nullptr);
 			_G(auto_obj) = 1;
 			_G(mov_phasen)[SURIMY_OBJ].AtsText = 0;
@@ -58,7 +58,7 @@ void Room31::surimy_go() {
 			_G(mov_phasen)[SURIMY_OBJ].Repeat = 1;
 			_G(mov_phasen)[SURIMY_OBJ].ZoomFak = 0;
 			_G(auto_mov_obj)[SURIMY_OBJ].Id = AUTO_OBJ0;
-			_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(spieler).DelaySpeed + 2;
+			_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(gameState).DelaySpeed + 2;
 			_G(auto_mov_obj)[SURIMY_OBJ].Mode = true;
 			init_auto_obj(SURIMY_OBJ, &SURIMY_TAF19_PHASES[0][0], 2, (const MovLine *)SURIMY_MPKT);
 			start_spz(CH_TALK5, 255, ANI_FRONT, P_CHEWY);
@@ -67,19 +67,19 @@ void Room31::surimy_go() {
 			_G(auto_obj) = 0;
 			showCur();
 		} else {
-			++_G(spieler).R31SurimyGo;
+			++_G(gameState).R31SurimyGo;
 		}
 	}
 }
 
 void Room31::calc_luke() {
-	if (!_G(spieler).R31KlappeZu) {
+	if (!_G(gameState).R31KlappeZu) {
 		for (int16 i = 0; i < 3; i++)
 			_G(det)->showStaticSpr(5 + i);
 
 		_G(atds)->set_ats_str(244, 1, ATS_DATA);
 		_G(atds)->delControlBit(245, ATS_ACTIVE_BIT, ATS_DATA);
-		_G(spieler).room_e_obj[75].Attribut = EXIT_BOTTOM;
+		_G(gameState).room_e_obj[75].Attribut = EXIT_BOTTOM;
 
 	} else {
 		for (int16 i = 0; i < 3; i++)
@@ -87,19 +87,19 @@ void Room31::calc_luke() {
 
 		_G(atds)->set_ats_str(244, 0, ATS_DATA);
 		_G(atds)->setControlBit(245, ATS_ACTIVE_BIT, ATS_DATA);
-		_G(spieler).room_e_obj[75].Attribut = 255;
+		_G(gameState).room_e_obj[75].Attribut = 255;
 	}
 }
 
 int16 Room31::open_luke() {
 	int16 action_flag = false;
 	
-	if (!_G(spieler).inv_cur && _G(spieler).R31KlappeZu) {
+	if (!_G(gameState).inv_cur && _G(gameState).R31KlappeZu) {
 		action_flag = true;
 		hideCur();
 		autoMove(2, P_CHEWY);
 		start_spz_wait(CH_LGET_U, 1, false, P_CHEWY);
-		_G(spieler).R31KlappeZu = false;
+		_G(gameState).R31KlappeZu = false;
 		g_engine->_sound->playSound(3);
 		calc_luke();
 		showCur();
@@ -111,12 +111,12 @@ int16 Room31::open_luke() {
 int16 Room31::close_luke_proc1() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && !_G(spieler).R31KlappeZu) {
+	if (!_G(gameState).inv_cur && !_G(gameState).R31KlappeZu) {
 		action_flag = true;
 		hideCur();
 		autoMove(2, P_CHEWY);
 		start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
-		_G(spieler).R31KlappeZu = true;
+		_G(gameState).R31KlappeZu = true;
 		g_engine->_sound->playSound(3);
 		calc_luke();
 		showCur();
@@ -126,11 +126,11 @@ int16 Room31::close_luke_proc1() {
 }
 
 void Room31::close_luke_proc3() {
-	if (!_G(spieler).R31KlappeZu) {
+	if (!_G(gameState).R31KlappeZu) {
 		hideCur();
 		autoMove(2, P_CHEWY);
 		start_spz_wait(13, 1, false, P_CHEWY);
-		_G(spieler).R31KlappeZu = true;
+		_G(gameState).R31KlappeZu = true;
 		g_engine->_sound->playSound(3);
 		g_engine->_sound->playSound(3, 1, false);
 		calc_luke();
@@ -144,25 +144,25 @@ int16 Room31::use_topf() {
 	int16 action_flag = false;
 
 	hideCur();
-	if (_G(spieler).inv_cur) {
-		if (_G(spieler).R31PflanzeWeg) {
+	if (_G(gameState).inv_cur) {
+		if (_G(gameState).R31PflanzeWeg) {
 			if (isCurInventory(K_KERNE_INV)) {
-				_G(spieler).R31KoernerDa = true;
+				_G(gameState).R31KoernerDa = true;
 				autoMove(1, P_CHEWY);
 				start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
-				delInventory(_G(spieler).AkInvent);
+				delInventory(_G(gameState).AkInvent);
 				ani_nr = CH_TALK3;
 				dia_nr = 150;
 				_G(atds)->set_ats_str(242, 2, ATS_DATA);
 
 			} else if (isCurInventory(MILCH_WAS_INV)) {
-				if (_G(spieler).R31KoernerDa) {
-					_G(spieler).R31Wasser = true;
+				if (_G(gameState).R31KoernerDa) {
+					_G(gameState).R31Wasser = true;
 					autoMove(1, P_CHEWY);
-					_G(spieler)._personHide[P_CHEWY] = true;
+					_G(gameState)._personHide[P_CHEWY] = true;
 					startAniBlock(3, ABLOCK30);
-					_G(spieler)._personHide[P_CHEWY] = false;
-					delInventory(_G(spieler).AkInvent);
+					_G(gameState)._personHide[P_CHEWY] = false;
+					delInventory(_G(gameState).AkInvent);
 					_G(obj)->addInventory(MILCH_LEER_INV, &_G(room_blk));
 					inventory_2_cur(MILCH_LEER_INV);
 					ani_nr = CH_TALK6;
@@ -173,9 +173,9 @@ int16 Room31::use_topf() {
 					dia_nr = 152;
 				}
 			} else if (isCurInventory(SURIMY_INV)) {
-				if (!_G(spieler).R31SurFurz) {
-					if (_G(spieler).R31Wasser) {
-						if (!_G(spieler).R28SurimyCar) {
+				if (!_G(gameState).R31SurFurz) {
+					if (_G(gameState).R31Wasser) {
+						if (!_G(gameState).R28SurimyCar) {
 							ani_nr = CH_TALK5;
 							dia_nr = 180;
 						} else {
@@ -183,7 +183,7 @@ int16 Room31::use_topf() {
 							autoMove(3, P_CHEWY);
 							flic_cut(FCUT_046);
 							register_cutscene(13);
-							_G(spieler).R31SurFurz = true;
+							_G(gameState).R31SurFurz = true;
 							ani_nr = CH_TALK6;
 							dia_nr = 156;
 							_G(atds)->set_ats_str(242, 4, ATS_DATA);
diff --git a/engines/chewy/rooms/room32.cpp b/engines/chewy/rooms/room32.cpp
index c57c394f55f..6e12337983f 100644
--- a/engines/chewy/rooms/room32.cpp
+++ b/engines/chewy/rooms/room32.cpp
@@ -28,9 +28,9 @@ namespace Chewy {
 namespace Rooms {
 
 void Room32::entry() {
-	if (_G(spieler).R32HowardWeg)
+	if (_G(gameState).R32HowardWeg)
 		_G(det)->hideStaticSpr(0);
-	if (!_G(spieler).R32Script && _G(spieler).R32UseSchreib)
+	if (!_G(gameState).R32Script && _G(gameState).R32UseSchreib)
 		_G(det)->showStaticSpr(5);
 }
 
@@ -41,7 +41,7 @@ int16 Room32::use_howard() {
 	hideCur();
 
 	if (isCurInventory(TRICHTER_INV)) {
-		if (_G(spieler).R33MunterGet) {
+		if (_G(gameState).R33MunterGet) {
 			autoMove(1, P_CHEWY);
 			cur_2_inventory();
 			remove_inventory(MUNTER_INV);
@@ -68,8 +68,8 @@ int16 Room32::use_howard() {
 			start_spz(CH_TALK3, 255, ANI_FRONT, P_CHEWY);
 			ani_nr = CH_TALK3;
 			dia_nr = 164;
-			_G(spieler).R32HowardWeg = true;
-			_G(spieler).R39HowardDa = true;
+			_G(gameState).R32HowardWeg = true;
+			_G(gameState).R39HowardDa = true;
 			remove_inventory(TRICHTER_INV);
 		} else {
 			ani_nr = CH_TALK12;
@@ -95,17 +95,17 @@ void Room32::use_schreibmaschine() {
 	int16 ani_nr = -1;
 
 	hideCur();
-	if (_G(spieler).R32HowardWeg) {
-		if (_G(spieler).inv_cur) {
-			switch (_G(spieler).AkInvent) {
+	if (_G(gameState).R32HowardWeg) {
+		if (_G(gameState).inv_cur) {
+			switch (_G(gameState).AkInvent) {
 			case CYB_KRONE_INV:
-				if (!_G(spieler).R32UseSchreib) {
-					if (!_G(spieler).R32PapierOk) {
+				if (!_G(gameState).R32UseSchreib) {
+					if (!_G(gameState).R32PapierOk) {
 						ani_nr = CH_TALK12;
 						dia_nr = 87;
 					} else {
 						autoMove(3, P_CHEWY);
-						_G(spieler).R32UseSchreib = true;
+						_G(gameState).R32UseSchreib = true;
 						cur_2_inventory();
 						flic_cut(FCUT_044);
 						register_cutscene(12);
@@ -120,9 +120,9 @@ void Room32::use_schreibmaschine() {
 
 			case PAPIER_INV:
 				autoMove(2, P_CHEWY);
-				_G(spieler).R32PapierOk = true;
+				_G(gameState).R32PapierOk = true;
 				start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
-				delInventory(_G(spieler).AkInvent);
+				delInventory(_G(gameState).AkInvent);
 				_G(atds)->set_ats_str(231, TXT_MARK_LOOK, 1, ATS_DATA);
 				ani_nr = CH_TALK3;
 				dia_nr = 86;
@@ -151,9 +151,9 @@ void Room32::use_schreibmaschine() {
 int16 Room32::get_script() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && !_G(spieler).R32Script && _G(spieler).R32UseSchreib) {
+	if (!_G(gameState).inv_cur && !_G(gameState).R32Script && _G(gameState).R32UseSchreib) {
 		action_flag = true;
-		_G(spieler).R32Script = true;
+		_G(gameState).R32Script = true;
 		autoMove(4, P_CHEWY);
 		invent_2_slot(MANUSKRIPT_INV);
 		start_spz_wait(CH_LGET_U, 1, false, P_CHEWY);
diff --git a/engines/chewy/rooms/room33.cpp b/engines/chewy/rooms/room33.cpp
index c11c7ad817a..447ff1c7beb 100644
--- a/engines/chewy/rooms/room33.cpp
+++ b/engines/chewy/rooms/room33.cpp
@@ -35,16 +35,16 @@ static const MovLine SURIMY_MPKT[2] = {
 
 
 void Room33::entry() {
-	if (_G(spieler).R33MunterGet)
+	if (_G(gameState).R33MunterGet)
 		_G(det)->hideStaticSpr(3);
 	surimy_go();
 }
 
 void Room33::surimy_go() {
-	if (!_G(spieler).R39ScriptOk && _G(spieler).R25SurimyLauf) {
-		if (_G(spieler).R33SurimyGo >= 4) {
+	if (!_G(gameState).R39ScriptOk && _G(gameState).R25SurimyLauf) {
+		if (_G(gameState).R33SurimyGo >= 4) {
 			hideCur();
-			_G(spieler).R33SurimyGo = 0;
+			_G(gameState).R33SurimyGo = 0;
 			_G(det)->load_taf_seq(39, 8, nullptr);
 			_G(auto_obj) = 1;
 			_G(mov_phasen)[SURIMY_OBJ].AtsText = 0;
@@ -52,7 +52,7 @@ void Room33::surimy_go() {
 			_G(mov_phasen)[SURIMY_OBJ].Repeat = 1;
 			_G(mov_phasen)[SURIMY_OBJ].ZoomFak = 0;
 			_G(auto_mov_obj)[SURIMY_OBJ].Id = AUTO_OBJ0;
-			_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(spieler).DelaySpeed + 2;
+			_G(auto_mov_vector)[SURIMY_OBJ].Delay = _G(gameState).DelaySpeed + 2;
 			_G(auto_mov_obj)[SURIMY_OBJ].Mode = true;
 			init_auto_obj(SURIMY_OBJ, &SURIMY_TAF19_PHASES[0][0], 2, (const MovLine *)SURIMY_MPKT);
 			start_spz(CH_TALK5, 255, ANI_FRONT, P_CHEWY);
@@ -61,14 +61,14 @@ void Room33::surimy_go() {
 			_G(auto_obj) = 0;
 			showCur();
 		} else {
-			++_G(spieler).R33SurimyGo;
+			++_G(gameState).R33SurimyGo;
 		}
 	}
 }
 
 void Room33::look_schublade() {
-	if (!_G(spieler).R33SchubFirst) {
-		_G(spieler).R33SchubFirst = true;
+	if (!_G(gameState).R33SchubFirst) {
+		_G(gameState).R33SchubFirst = true;
 		hideCur();
 		autoMove(1, P_CHEWY);
 		_G(atds)->set_ats_str(210, TXT_MARK_NAME, 1, ATS_DATA);
@@ -80,10 +80,10 @@ void Room33::look_schublade() {
 int16 Room33::use_schublade() {
 	int16 action_flag = false;
 
-	if (_G(spieler).R33SchubFirst && !_G(spieler).inv_cur && !_G(spieler).R33Messer) {
+	if (_G(gameState).R33SchubFirst && !_G(gameState).inv_cur && !_G(gameState).R33Messer) {
 		hideCur();
 		action_flag = true;
-		_G(spieler).R33Messer = true;
+		_G(gameState).R33Messer = true;
 
 		_G(atds)->set_ats_str(210, TXT_MARK_NAME, 0, ATS_DATA);
 		_G(atds)->set_ats_str(210, TXT_MARK_LOOK, 1, ATS_DATA);
@@ -101,29 +101,29 @@ void Room33::use_maschine() {
 	int16 ani_nr;
 	hideCur();
 
-	if (!_G(spieler).R33MunterOk) {
+	if (!_G(gameState).R33MunterOk) {
 		autoMove(4, P_CHEWY);
 
 		bool hocker = false;
-		if (_G(spieler).inv_cur) {
+		if (_G(gameState).inv_cur) {
 			bool action = true;
 
-			switch (_G(spieler).AkInvent) {
+			switch (_G(gameState).AkInvent) {
 			case MILCH_INV:
-				_G(spieler).R33Munter[3] = true;
+				_G(gameState).R33Munter[3] = true;
 				invent_2_slot(MILCH_LEER_INV);
 				break;
 
 			case K_FLEISCH_INV:
-				_G(spieler).R33Munter[1] = true;
+				_G(gameState).R33Munter[1] = true;
 				break;
 
 			case EIER_INV:
-				_G(spieler).R33Munter[2] = true;
+				_G(gameState).R33Munter[2] = true;
 				break;
 
 			case KAFFEE_INV:
-				_G(spieler).R33Munter[0] = true;
+				_G(gameState).R33Munter[0] = true;
 				break;
 
 			default:
@@ -133,17 +133,17 @@ void Room33::use_maschine() {
 			}
 
 			if (action) {
-				_G(spieler)._personHide[P_CHEWY] = true;
+				_G(gameState)._personHide[P_CHEWY] = true;
 				startSetAILWait(0, 1, ANI_FRONT);
-				_G(spieler)._personHide[P_CHEWY] = false;
+				_G(gameState)._personHide[P_CHEWY] = false;
 				setPersonPos(128, 65, P_CHEWY, P_LEFT);
 				start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
 				hocker = true;
-				delInventory(_G(spieler).AkInvent);
+				delInventory(_G(gameState).AkInvent);
 				ani_nr = CH_TALK12;
 
 				if (calc_muntermacher()) {
-					_G(spieler).R33MunterOk = true;
+					_G(gameState).R33MunterOk = true;
 					dia_nr = 69;
 				} else {
 					dia_nr = 67;
@@ -160,23 +160,23 @@ void Room33::use_maschine() {
 		start_spz(ani_nr, 255, ANI_FRONT, P_CHEWY);
 		startAadWait(dia_nr);
 
-		if (_G(spieler).R33MunterOk) {
-			_G(spieler)._personHide[P_CHEWY] = true;
+		if (_G(gameState).R33MunterOk) {
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startSetAILWait(2, 1, ANI_FRONT);
 			flic_cut(FCUT_031);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			start_spz(CH_TALK3, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(71);
 			_G(atds)->delControlBit(225, ATS_ACTIVE_BIT, ATS_DATA);
 		}
 
 		if (hocker) {
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startSetAILWait(1, 1, ANI_FRONT);
 			setPersonPos(64, 100, P_CHEWY, P_LEFT);
 		}
 
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 	} else {
 		startAadWait(70);
 	}
@@ -188,7 +188,7 @@ bool Room33::calc_muntermacher() {
 	bool ret = true;
 
 	for (int16 i = 0; i < 4; i++) {
-		if (_G(spieler).R33Munter[i] == false)
+		if (_G(gameState).R33Munter[i] == false)
 			ret = false;
 	}
 
@@ -198,10 +198,10 @@ bool Room33::calc_muntermacher() {
 int16 Room33::get_munter() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && !_G(spieler).R33MunterGet && _G(spieler).R33MunterOk) {
+	if (!_G(gameState).inv_cur && !_G(gameState).R33MunterGet && _G(gameState).R33MunterOk) {
 		action_flag = true;
 		hideCur();
-		_G(spieler).R33MunterGet = true;
+		_G(gameState).R33MunterGet = true;
 		autoMove(4, P_CHEWY);
 		start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
 		invent_2_slot(MUNTER_INV);
diff --git a/engines/chewy/rooms/room34.cpp b/engines/chewy/rooms/room34.cpp
index a76d6e03863..6ecde131b56 100644
--- a/engines/chewy/rooms/room34.cpp
+++ b/engines/chewy/rooms/room34.cpp
@@ -36,18 +36,18 @@ void Room34::entry() {
 bool Room34::use_kuehlschrank() {
 	bool result = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		result = true;
 
 		if (!_G(flags).LoadGame) {
 			hideCur();
 			autoMove(3, P_CHEWY);
 			_G(mouseLeftClick) = false;
-			start_spz_wait((_G(spieler).ChewyAni == CHEWY_ROCKER) ? CH_ROCK_GET2 : CH_LGET_O, 1, false, P_CHEWY);
+			start_spz_wait((_G(gameState).ChewyAni == CHEWY_ROCKER) ? CH_ROCK_GET2 : CH_LGET_O, 1, false, P_CHEWY);
 			showCur();
 		}
 
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		_G(flags).ChewyDontGo = true;
 
 		if (!_G(flags).LoadGame) {
@@ -61,7 +61,7 @@ bool Room34::use_kuehlschrank() {
 }
 
 void Room34::xit_kuehlschrank() {
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	setPersonPos(54, 111, P_CHEWY, -1);
 	switchRoom(33);
 	_G(flags).ChewyDontGo = false;
diff --git a/engines/chewy/rooms/room35.cpp b/engines/chewy/rooms/room35.cpp
index fdf85df4894..6e578b4d1e0 100644
--- a/engines/chewy/rooms/room35.cpp
+++ b/engines/chewy/rooms/room35.cpp
@@ -36,7 +36,7 @@ static const AniBlock ABLOCK28[2] = {
 
 
 void Room35::entry() {
-	if (_G(spieler).R35Schublade)
+	if (_G(gameState).R35Schublade)
 		_G(det)->showStaticSpr(1);
 }
 
@@ -44,25 +44,25 @@ int16 Room35::schublade() {
 	int16 action_flag = false;
 	hideCur();
 
-	if (_G(spieler).ChewyAni != CHEWY_ROCKER && !_G(spieler).inv_cur) {
-		if (!_G(spieler).R35Schublade) {
+	if (_G(gameState).ChewyAni != CHEWY_ROCKER && !_G(gameState).inv_cur) {
+		if (!_G(gameState).R35Schublade) {
 			action_flag = true;
 			autoMove(3, P_CHEWY);
 			start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
 			_G(det)->showStaticSpr(1);
-			_G(spieler).R35Schublade = true;
+			_G(gameState).R35Schublade = true;
 			_G(atds)->set_ats_str(234, 1, ATS_DATA);
-		} else if (!_G(spieler).R35Falle) {
+		} else if (!_G(gameState).R35Falle) {
 			action_flag = true;
 			autoMove(3, P_CHEWY);
-			_G(spieler).R35Falle = true;
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState).R35Falle = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			startAniBlock(2, ABLOCK28);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			setPersonPos(33, 90, P_CHEWY, P_LEFT);
 			start_spz(CH_TALK5, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(93);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			_G(atds)->set_ats_str(234, 2, ATS_DATA);
 		}
 	}
@@ -75,11 +75,11 @@ int16 Room35::use_cat() {
 	int16 action_flag = false;
 	hideCur();
 
-	if (_G(spieler).ChewyAni != CHEWY_ROCKER) {
+	if (_G(gameState).ChewyAni != CHEWY_ROCKER) {
 		if (isCurInventory(TRANSLATOR_INV)) {
 			action_flag = true;
 			autoMove(4, P_CHEWY);
-			_G(spieler).R35TransCat = true;
+			_G(gameState).R35TransCat = true;
 			start_spz_wait(CH_TRANS, 1, false, P_CHEWY);
 			flic_cut(FCUT_045);
 			start_spz(CH_TRANS, 1, ANI_FRONT, P_CHEWY);
@@ -88,9 +88,9 @@ int16 Room35::use_cat() {
 			action_flag = true;
 			disable_timer();
 			autoMove(4, P_CHEWY);
-			_G(spieler).R35CatEat = true;
+			_G(gameState).R35CatEat = true;
 			start_spz_wait(CH_LGET_O, 1, false, P_CHEWY);
-			delInventory(_G(spieler).AkInvent);
+			delInventory(_G(gameState).AkInvent);
 			_G(det)->stop_detail(0);
 			_G(det)->del_static_ani(0);
 			startSetAILWait(1, 1, ANI_FRONT);
@@ -120,19 +120,19 @@ void Room35::talk_cat() {
 	hideCur();
 	autoMove(4, P_CHEWY);
 
-	if (_G(spieler).R35TransCat) {
+	if (_G(gameState).R35TransCat) {
 		int16 dia_nr;
-		if (!_G(spieler).R35CatEat) {
+		if (!_G(gameState).R35CatEat) {
 			dia_nr = 7;
 		} else {
 			dia_nr = 8;
 		}
 
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		switchRoom(36);
 		showCur();
 		startAdsWait(dia_nr);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		switchRoom(35);
 
 	} else {
diff --git a/engines/chewy/rooms/room37.cpp b/engines/chewy/rooms/room37.cpp
index fd77593dbaf..0cdb5461830 100644
--- a/engines/chewy/rooms/room37.cpp
+++ b/engines/chewy/rooms/room37.cpp
@@ -46,27 +46,27 @@ void Room37::entry() {
 	_G(obj)->show_sib(75);
 
 	if (!_G(flags).LoadGame) {
-		_G(spieler).scrollx = 124;
+		_G(gameState).scrollx = 124;
 		setPersonPos(219, 66, P_CHEWY, P_RIGHT);
 	}
 
-	if (!_G(spieler).R37Kloppe) {
+	if (!_G(gameState).R37Kloppe) {
 		_G(timer_nr)[1] = _G(room)->set_timer(7, 5);
 		_G(det)->set_static_ani(7, -1);
 
-		if (!_G(spieler).R37HundScham) {
+		if (!_G(gameState).R37HundScham) {
 			_G(timer_nr)[0] = _G(room)->set_timer(3, 4);
 			_G(det)->set_static_ani(3, -1);
 			g_engine->_sound->playSound(3, 0);
 		}
 	}
 
-	if (_G(spieler).R37Gebiss) {
+	if (_G(gameState).R37Gebiss) {
 		_G(det)->hideStaticSpr(9);
 
-		if (_G(spieler).R37Kloppe) {
+		if (_G(gameState).R37Kloppe) {
 			_G(det)->hideStaticSpr(8);
-		} else if (_G(spieler).R37HundScham) {
+		} else if (_G(gameState).R37HundScham) {
 			_G(det)->showStaticSpr(0);
 		}
 	}
@@ -77,9 +77,9 @@ void Room37::gedAction(int index) {
 		dog_bell();
 
 	} else if (index == 1) {
-		if (_G(spieler).R37Kloppe && !_G(spieler).R37Mes) {
+		if (_G(gameState).R37Kloppe && !_G(gameState).R37Mes) {
 			stopPerson(P_CHEWY);
-			_G(spieler).R37Mes = true;
+			_G(gameState).R37Mes = true;
 			start_spz(CH_TALK6, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(142);
 		}
@@ -87,10 +87,10 @@ void Room37::gedAction(int index) {
 }
 
 void Room37::setup_func() {
-	if (_G(mouseLeftClick) && !_G(spieler).R37Kloppe &&
+	if (_G(mouseLeftClick) && !_G(gameState).R37Kloppe &&
 			_G(menu_item) == CUR_WALK) {
-		if ((g_events->_mousePos.x + _G(spieler).scrollx > 380 && g_events->_mousePos.y > 120) ||
-			(g_events->_mousePos.x + _G(spieler).scrollx > 482)) {
+		if ((g_events->_mousePos.x + _G(gameState).scrollx > 380 && g_events->_mousePos.y > 120) ||
+			(g_events->_mousePos.x + _G(gameState).scrollx > 482)) {
 			// Don't allow moving into chicken coop area
 			// until the rooster has left
 			autoMove(7, P_CHEWY);
@@ -102,7 +102,7 @@ void Room37::setup_func() {
 short Room37::use_wippe() {
 	int16 action_flag = false;
 
-	if (_G(spieler).inv_cur) {
+	if (_G(gameState).inv_cur) {
 		action_flag = true;
 
 		if (isCurInventory(H_FUTTER_INV)) {
@@ -112,11 +112,11 @@ short Room37::use_wippe() {
 			auto_scroll(129, 0);
 			start_spz(CH_TALK6, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(159);
-			delInventory(_G(spieler).AkInvent);
+			delInventory(_G(gameState).AkInvent);
 			flic_cut(FCUT_047);
 			_G(flags).NoScroll = false;
 			showCur();
-			_G(spieler).scrollx = 269;
+			_G(gameState).scrollx = 269;
 			setPersonPos(388, 119, P_CHEWY, P_RIGHT);
 			switchRoom(29);
 			_G(mouseLeftClick) = false;
@@ -133,7 +133,7 @@ short Room37::use_wippe() {
 int16 Room37::use_glas() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).R37Gebiss) {
+	if (!_G(gameState).R37Gebiss) {
 		action_flag = true;
 		if (isCurInventory(ANGEL2_INV)) {
 			_G(flags).NoScroll = true;
@@ -143,7 +143,7 @@ int16 Room37::use_glas() {
 			auto_scroll(146, 0);
 			start_spz(CH_TALK6, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(147);
-			delInventory(_G(spieler).AkInvent);
+			delInventory(_G(gameState).AkInvent);
 			flic_cut(FCUT_048);
 			flic_cut(FCUT_049);
 			invent_2_slot(GEBISS_INV);
@@ -152,7 +152,7 @@ int16 Room37::use_glas() {
 			_G(atds)->set_ats_str(256, 1, ATS_DATA);
 			_G(atds)->delControlBit(251, ATS_ACTIVE_BIT, ATS_DATA);
 			_G(obj)->show_sib(SIB_HFUTTER2_R37);
-			_G(spieler).R37Gebiss = true;
+			_G(gameState).R37Gebiss = true;
 			start_spz(CH_TALK3, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(146);
 			showCur();
@@ -175,7 +175,7 @@ void Room37::dog_bell() {
 		_G(flags).AutoAniPlay = true;
 		g_engine->_sound->stopSound(0); // nr 3, sslot 0
 
-		if (!_G(spieler).R37Gebiss) {
+		if (!_G(gameState).R37Gebiss) {
 			stopPerson(P_CHEWY);
 			_G(flags).ChAutoMov = false;
 			setPersonSpr(P_LEFT, P_CHEWY);
@@ -187,13 +187,13 @@ void Room37::dog_bell() {
 			startSetAILWait(5, 1, ANI_FRONT);
 			_G(det)->hideStaticSpr(9);
 			startSetAILWait(6, 1, ANI_FRONT);
-			_G(spieler)._personHide[P_CHEWY] = true;
+			_G(gameState)._personHide[P_CHEWY] = true;
 			_G(det)->startDetail(11, 255, ANI_FRONT);
 			flic_cut(FCUT_050);
 			startSetAILWait(6, 1, ANI_BACK);
 			_G(det)->stop_detail(11);
 			setPersonPos(326, 85, P_CHEWY, P_LEFT);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			_G(det)->showStaticSpr(9);
 			startAniBlock(3, ABLOCK31);
 			_G(det)->set_static_ani(3, -1);
@@ -203,7 +203,7 @@ void Room37::dog_bell() {
 			dia_nr = 149;
 			ani_nr = CH_TALK12;
 
-		} else if (!_G(spieler).R37HundScham) {
+		} else if (!_G(gameState).R37HundScham) {
 			stopPerson(P_CHEWY);
 			setPersonSpr(P_LEFT, P_CHEWY);
 			_G(flags).NoScroll = true;
@@ -213,12 +213,12 @@ void Room37::dog_bell() {
 			_G(det)->stop_detail(3);
 			startSetAILWait(4, 1, ANI_FRONT);
 			flic_cut(FCUT_051);
-			_G(spieler).scrollx = 104;
+			_G(gameState).scrollx = 104;
 			flic_cut(FCUT_054);
 			register_cutscene(10);
 			_G(det)->showStaticSpr(0);
 
-			_G(spieler).R37HundScham = true;
+			_G(gameState).R37HundScham = true;
 			dia_nr = 148;
 			ani_nr = CH_TALK6;
 		}
@@ -240,7 +240,7 @@ void Room37::talk_hahn() {
 	autoMove(7, P_CHEWY);
 	showCur();
 
-	if (!_G(spieler).R37TransHahn) {
+	if (!_G(gameState).R37TransHahn) {
 		_G(cur_hide_flag) = 0;
 		hideCur();
 		startAadWait(145);
@@ -254,7 +254,7 @@ void Room37::use_hahn() {
 	if (isCurInventory(TRANSLATOR_INV)) {
 		hideCur();
 		autoMove(7, P_CHEWY);
-		_G(spieler).R37TransHahn = true;
+		_G(gameState).R37TransHahn = true;
 		start_spz_wait(CH_TRANS, 1, false, P_CHEWY);
 		flic_cut(FCUT_052);
 		cur_2_inventory();
@@ -263,9 +263,9 @@ void Room37::use_hahn() {
 		showCur();
 		hahn_dia();
 
-	} else if (_G(spieler).R37TransHahn) {
+	} else if (_G(gameState).R37TransHahn) {
 		if (isCurInventory(GEBISS_INV)) {
-			_G(spieler).R37Kloppe = true;
+			_G(gameState).R37Kloppe = true;
 			hideCur();
 			autoMove(6, P_CHEWY);
 			load_room_music(256);
@@ -290,7 +290,7 @@ void Room37::use_hahn() {
 			flic_cut(FCUT_053);
 			_G(det)->stop_detail(10);
 
-			_G(spieler).scrollx = 320;
+			_G(gameState).scrollx = 320;
 			_G(flags).NoScroll = false;
 			_G(atds)->setControlBit(251, ATS_ACTIVE_BIT, ATS_DATA);
 			_G(atds)->setControlBit(250, ATS_ACTIVE_BIT, ATS_DATA);
@@ -302,23 +302,23 @@ void Room37::use_hahn() {
 			inventory_2_cur(EIER_INV);
 			showCur();
 		}
-	} else if (_G(spieler).inv_cur) {
+	} else if (_G(gameState).inv_cur) {
 		startAadWait(143);
 	}
 }
 
 void Room37::hahn_dia() {
-	_G(spieler)._personHide[P_CHEWY] = true;
-	int16 tmp_scrollx = _G(spieler).scrollx;
-	int16 tmp_scrolly = _G(spieler).scrolly;
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState)._personHide[P_CHEWY] = true;
+	int16 tmp_scrollx = _G(gameState).scrollx;
+	int16 tmp_scrolly = _G(gameState).scrolly;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	switchRoom(38);
 	startAdsWait(9);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(flags).LoadGame = true;
-	_G(spieler).scrollx = tmp_scrollx;
-	_G(spieler).scrolly = tmp_scrolly;
+	_G(gameState).scrollx = tmp_scrollx;
+	_G(gameState).scrolly = tmp_scrolly;
 	switchRoom(37);
 	_G(flags).LoadGame = false;
 }
diff --git a/engines/chewy/rooms/room39.cpp b/engines/chewy/rooms/room39.cpp
index 6b110867325..9255d6af6b2 100644
--- a/engines/chewy/rooms/room39.cpp
+++ b/engines/chewy/rooms/room39.cpp
@@ -51,10 +51,10 @@ static const AniBlock ABLOCK29[2] = {
 };
 
 void Room39::entry() {
-	if (!_G(spieler).R41Einbruch) {
-		if (_G(spieler).R39HowardDa) {
+	if (!_G(gameState).R41Einbruch) {
+		if (_G(gameState).R39HowardDa) {
 			_G(det)->showStaticSpr(10);
-			if (!_G(spieler).R39HowardWach)
+			if (!_G(gameState).R39HowardWach)
 				_G(det)->startDetail(1, 255, ANI_FRONT);
 			else
 				_G(det)->set_static_ani(5, -1);
@@ -72,22 +72,22 @@ short Room39::use_howard() {
 	int16 ani_nr = 0;
 	int16 action_flag = false;
 
-	if (!_G(spieler).R39HowardWach) {
+	if (!_G(gameState).R39HowardWach) {
 		int16 dia_nr;
-		if (_G(spieler).inv_cur) {
+		if (_G(gameState).inv_cur) {
 			if (isCurInventory(MANUSKRIPT_INV)) {
 				hideCur();
-				_G(spieler).R39HowardWach = true;
-				_G(spieler).R39ScriptOk = true;
+				_G(gameState).R39HowardWach = true;
+				_G(gameState).R39ScriptOk = true;
 				autoMove(3, P_CHEWY);
-				_G(spieler)._personHide[P_CHEWY] = true;
+				_G(gameState)._personHide[P_CHEWY] = true;
 				_G(det)->startDetail(6, 255, ANI_FRONT);
 				startAadWait(170);
 				_G(det)->stop_detail(6);
 				startSetAILWait(7, 1, ANI_FRONT);
-				_G(spieler)._personHide[P_CHEWY] = false;
+				_G(gameState)._personHide[P_CHEWY] = false;
 
-				delInventory(_G(spieler).AkInvent);
+				delInventory(_G(gameState).AkInvent);
 				_G(det)->stop_detail(1);
 				startAniBlock(2, ABLOCK33);
 				start_spz(CH_TALK6, 255, ANI_FRONT, P_CHEWY);
@@ -99,11 +99,11 @@ short Room39::use_howard() {
 				startAadWait(169);
 				showCur();
 
-				_G(spieler).PersonGlobalDia[P_HOWARD] = 10012;
-				_G(spieler).PersonDiaRoom[P_HOWARD] = true;;
+				_G(gameState).PersonGlobalDia[P_HOWARD] = 10012;
+				_G(gameState).PersonDiaRoom[P_HOWARD] = true;;
 				calc_person_dia(P_HOWARD);
 
-				if (_G(spieler).R41HowardDiaOK) {
+				if (_G(gameState).R41HowardDiaOK) {
 					ok();
 				}
 
@@ -131,13 +131,13 @@ short Room39::use_howard() {
 }
 
 void Room39::talk_howard() {
-	if (_G(spieler).R39HowardWach) {
+	if (_G(gameState).R39HowardWach) {
 		autoMove(3, P_CHEWY);
-		_G(spieler).PersonGlobalDia[P_HOWARD] = 10012;
-		_G(spieler).PersonDiaRoom[P_HOWARD] = true;
+		_G(gameState).PersonGlobalDia[P_HOWARD] = 10012;
+		_G(gameState).PersonDiaRoom[P_HOWARD] = true;
 		calc_person_dia(P_HOWARD);
 
-		if (_G(spieler).R41HowardDiaOK) {
+		if (_G(gameState).R41HowardDiaOK) {
 			ok();
 		}
 	} else {
@@ -147,10 +147,10 @@ void Room39::talk_howard() {
 }
 
 void Room39::ok() {
-	_G(spieler).R41Einbruch = true;
+	_G(gameState).R41Einbruch = true;
 
 	Room43::night_small();
-	_G(spieler)._personRoomNr[P_HOWARD] = 27;
+	_G(gameState)._personRoomNr[P_HOWARD] = 27;
 	_G(obj)->show_sib(SIB_SURIMY_R27);
 	_G(obj)->show_sib(SIB_ZEITUNG_R27);
 	_G(obj)->calc_rsi_flip_flop(SIB_SURIMY_R27);
@@ -175,34 +175,34 @@ int16 Room39::use_tv() {
 	if (isCurInventory(ZAPPER_INV)) {
 		_G(mouseLeftClick) = false;
 		
-		_G(spieler).R39TvOn = true;
-		if (_G(spieler).R39TvKanal >= 5)
-			_G(spieler).R39TvKanal = -1;
+		_G(gameState).R39TvOn = true;
+		if (_G(gameState).R39TvKanal >= 5)
+			_G(gameState).R39TvKanal = -1;
 
 		_G(flags).NoPalAfterFlc = true;
 		_G(out)->setPointer(nullptr);
 		_G(out)->cls();
 		flic_cut(FCUT_042);
-		++_G(spieler).R39TvKanal;
+		++_G(gameState).R39TvKanal;
 		_G(flags).NoPalAfterFlc = true;
 
-		if (_G(spieler).R39TvKanal == 2)
+		if (_G(gameState).R39TvKanal == 2)
 			flic_cut(FCUT_036);
-		else if (_G(spieler).R39TvKanal == 5)
+		else if (_G(gameState).R39TvKanal == 5)
 			flic_cut(FCUT_033);
 
 		look_tv(false);
 		set_tv();
 		cls_flag = true;
 
-		if (!_G(spieler).R39TranslatorUsed) {
+		if (!_G(gameState).R39TranslatorUsed) {
 			ani_nr = CH_TALK11;
 			dia_nr = 78;
-		} else if (!_G(spieler).R39TvKanal && _G(spieler).R39ClintNews < 3) {
+		} else if (!_G(gameState).R39TvKanal && _G(gameState).R39ClintNews < 3) {
 			dia_nr = -1;
 			ani_nr = -1;
 		} else {
-			if (80 + _G(spieler).R39TvKanal != 85)
+			if (80 + _G(gameState).R39TvKanal != 85)
 				dia_nr = -1;
 			else
 				dia_nr = 85;
@@ -211,15 +211,15 @@ int16 Room39::use_tv() {
 		}
 
 		action_flag = true;
-	} else if (isCurInventory(TRANSLATOR_INV) && _G(spieler).ChewyAni != CHEWY_ROCKER) {
+	} else if (isCurInventory(TRANSLATOR_INV) && _G(gameState).ChewyAni != CHEWY_ROCKER) {
 		action_flag = true;
-		if (_G(spieler).R39TvOn) {
+		if (_G(gameState).R39TvOn) {
 			start_spz_wait(CH_TRANS, 1, false, P_CHEWY);
-			_G(spieler).R39TranslatorUsed = true;
+			_G(gameState).R39TranslatorUsed = true;
 			_G(flags).NoPalAfterFlc = true;
 			flic_cut(FCUT_041);
-			_G(spieler).R39TvKanal = 0;
-			_G(spieler).R39ClintNews = 0;
+			_G(gameState).R39TvKanal = 0;
+			_G(gameState).R39ClintNews = 0;
 			_G(out)->setPointer(nullptr);
 			_G(out)->cls();
 			_G(out)->setPalette(_G(pal));
@@ -243,19 +243,19 @@ int16 Room39::use_tv() {
 
 		set_tv();
 
-	} else if (isCurInventory(RECORDER_INV) && _G(spieler).ChewyAni != CHEWY_ROCKER) {
+	} else if (isCurInventory(RECORDER_INV) && _G(gameState).ChewyAni != CHEWY_ROCKER) {
 		action_flag = true;
-		if (_G(spieler).R39TvOn) {
-			if (_G(spieler).R39TranslatorUsed) {
+		if (_G(gameState).R39TvOn) {
+			if (_G(gameState).R39TranslatorUsed) {
 				start_spz(CH_TALK3, 255, ANI_FRONT, P_CHEWY);
 				startAadWait(98);
-				_G(spieler)._personHide[P_CHEWY] = true;
+				_G(gameState)._personHide[P_CHEWY] = true;
 				startAniBlock(2, ABLOCK29);
-				_G(spieler)._personHide[P_CHEWY] = false;
+				_G(gameState)._personHide[P_CHEWY] = false;
 				ani_nr = CH_TALK5;
 				dia_nr = 99;
-				_G(atds)->set_ats_str(RECORDER_INV, _G(spieler).R39TvKanal + 1, INV_ATS_DATA);
-				_G(spieler).R39TvRecord = _G(spieler).R39TvKanal + 1;
+				_G(atds)->set_ats_str(RECORDER_INV, _G(gameState).R39TvKanal + 1, INV_ATS_DATA);
+				_G(gameState).R39TvRecord = _G(gameState).R39TvKanal + 1;
 			} else {
 				ani_nr = CH_TALK12;
 				dia_nr = 97;
@@ -286,20 +286,20 @@ int16 Room39::use_tv() {
 }
 
 void Room39::look_tv(bool cls_mode) {
-	if (_G(spieler).R39TvOn) {
+	if (_G(gameState).R39TvOn) {
 		if (!_G(flags).AutoAniPlay) {
 			_G(flags).AutoAniPlay = true;
 			int16 flic_nr;
 			int16 dia_nr;
-			if (!_G(spieler).R39TvKanal && _G(spieler).R39ClintNews < 3) {
+			if (!_G(gameState).R39TvKanal && _G(gameState).R39ClintNews < 3) {
 				flic_nr = FCUT_038;
-				++_G(spieler).R39ClintNews;
+				++_G(gameState).R39ClintNews;
 				dia_nr = 79;
 			} else {
-				flic_nr = TV_FLIC[_G(spieler).R39TvKanal];
-				if (!_G(spieler).R39TvKanal)
-					_G(spieler).R39ClintNews = 0;
-				dia_nr = 80 + _G(spieler).R39TvKanal;
+				flic_nr = TV_FLIC[_G(gameState).R39TvKanal];
+				if (!_G(gameState).R39TvKanal)
+					_G(gameState).R39ClintNews = 0;
+				dia_nr = 80 + _G(gameState).R39TvKanal;
 			}
 
 			if (cls_mode) {
@@ -309,7 +309,7 @@ void Room39::look_tv(bool cls_mode) {
 				_G(flags).NoPalAfterFlc = true;
 			}
 
-			if (_G(spieler).R39TranslatorUsed) {
+			if (_G(gameState).R39TranslatorUsed) {
 				if (dia_nr != 85)
 					start_aad(dia_nr, -1);
 			}
@@ -323,7 +323,7 @@ void Room39::look_tv(bool cls_mode) {
 				_G(out)->setPalette(_G(pal));
 				_G(flags).NoPalAfterFlc = false;
 
-				if (_G(spieler).R39TranslatorUsed && dia_nr == 85)
+				if (_G(gameState).R39TranslatorUsed && dia_nr == 85)
 					startAadWait(dia_nr);
 			}
 		}
@@ -337,16 +337,16 @@ void Room39::set_tv() {
 	for (int16 i = 0; i < 6; i++)
 		_G(det)->hideStaticSpr(i + 4);
 
-	if (_G(spieler).R39TvOn) {
-		if (_G(spieler).R39TvKanal == 2) {
+	if (_G(gameState).R39TvOn) {
+		if (_G(gameState).R39TvKanal == 2) {
 			_G(det)->startDetail(0, 255, ANI_FRONT);
 		} else {
 			_G(det)->stop_detail(0);
-			_G(det)->showStaticSpr(_G(spieler).R39TvKanal + 4);
+			_G(det)->showStaticSpr(_G(gameState).R39TvKanal + 4);
 		}
 
-		if (_G(spieler).R39TranslatorUsed) {
-			_G(atds)->set_ats_str(229, TXT_MARK_LOOK, 2 + _G(spieler).R39TvKanal, ATS_DATA);
+		if (_G(gameState).R39TranslatorUsed) {
+			_G(atds)->set_ats_str(229, TXT_MARK_LOOK, 2 + _G(gameState).R39TvKanal, ATS_DATA);
 		} else {
 			_G(atds)->set_ats_str(229, TXT_MARK_LOOK, 1, ATS_DATA);
 		}
diff --git a/engines/chewy/rooms/room40.cpp b/engines/chewy/rooms/room40.cpp
index fac8f255cd8..4777f94cdec 100644
--- a/engines/chewy/rooms/room40.cpp
+++ b/engines/chewy/rooms/room40.cpp
@@ -39,37 +39,37 @@ namespace Rooms {
 #define POLICE_FLASCHE 16
 
 void Room40::entry(int16 eib_nr) {
-	_G(spieler).R40HoUse = false;
+	_G(gameState).R40HoUse = false;
 	_G(zoom_horizont) = 130;
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 
-	if (_G(spieler).R40Geld) {
+	if (_G(gameState).R40Geld) {
 		_G(det)->del_static_ani(6);
 		_G(room)->set_timer_status(6, TIMER_STOP);
 	}
 
-	if (_G(spieler).R40HaendlerOk) {
+	if (_G(gameState).R40HaendlerOk) {
 		_G(det)->del_static_ani(4);
 		_G(room)->set_timer_status(4, TIMER_STOP);
 	}
 
-	if (_G(spieler).R40PoliceWeg == false) {
+	if (_G(gameState).R40PoliceWeg == false) {
 		_G(timer_nr)[0] = _G(room)->set_timer(255, 10);
 		_G(atds)->delControlBit(275, ATS_ACTIVE_BIT, ATS_DATA);
 	} else {
 		_G(det)->hideStaticSpr(15);
 	}
 
-	_G(spieler).R40PoliceAniStatus = 255;
-	_G(spieler).R40PoliceStart = false;
+	_G(gameState).R40PoliceAniStatus = 255;
+	_G(gameState).R40PoliceStart = false;
 	_G(spieler_mi)[P_HOWARD].Mode = true;
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 41)
-		_G(spieler)._personRoomNr[P_HOWARD] = 40;
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 41)
+		_G(gameState)._personRoomNr[P_HOWARD] = 40;
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 40) {
-		_G(spieler).ZoomXy[P_HOWARD][0] = 40;
-		_G(spieler).ZoomXy[P_HOWARD][1] = 40;
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 40) {
+		_G(gameState).ZoomXy[P_HOWARD][0] = 40;
+		_G(gameState).ZoomXy[P_HOWARD][1] = 40;
 
 		if (!_G(flags).LoadGame) {
 			switch (eib_nr) {
@@ -90,28 +90,28 @@ void Room40::entry(int16 eib_nr) {
 	}
 
 	_G(SetUpScreenFunc) = setup_func;
-	if (_G(spieler).R40TrainMove)
+	if (_G(gameState).R40TrainMove)
 		move_train(0);
 }
 
 void Room40::xit(int16 eib_nr) {
 	hideCur();
-	_G(spieler).ScrollxStep = 1;
-	_G(spieler).R40PoliceAb = false;
-	_G(spieler).R40HoUse = false;
+	_G(gameState).ScrollxStep = 1;
+	_G(gameState).R40PoliceAb = false;
+	_G(gameState).R40HoUse = false;
 	stop_spz();
 	_G(SetUpScreenFunc) = nullptr;
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 40) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 40) {
 		if (eib_nr == 70 || eib_nr == 77) {
-			_G(spieler)._personRoomNr[P_HOWARD] = 28;
+			_G(gameState)._personRoomNr[P_HOWARD] = 28;
 
 		} else if (eib_nr == 72) {
-			if ((_G(obj)->checkInventory(HOTEL_INV) && _G(obj)->checkInventory(TICKET_INV) && _G(spieler).R42BriefOk && _G(spieler).R28Manuskript)
-				|| _G(spieler).R40TrainOk) {
-				_G(spieler).R40TrainOk = true;
-				_G(spieler)._personRoomNr[P_HOWARD] = 45;
-				_G(spieler).room_e_obj[72].Exit = 45;
+			if ((_G(obj)->checkInventory(HOTEL_INV) && _G(obj)->checkInventory(TICKET_INV) && _G(gameState).R42BriefOk && _G(gameState).R28Manuskript)
+				|| _G(gameState).R40TrainOk) {
+				_G(gameState).R40TrainOk = true;
+				_G(gameState)._personRoomNr[P_HOWARD] = 45;
+				_G(gameState).room_e_obj[72].Exit = 45;
 				_G(obj)->hide_sib(SIB_MUENZE_R40);
 
 				_G(uhr)->disableTimer();
@@ -129,19 +129,19 @@ void Room40::xit(int16 eib_nr) {
 				_G(flags).NoPalAfterFlc = true;
 				flic_cut(FCUT_073);
 
-				if (_G(spieler).ChewyAni != CHEWY_ROCKER)
-					_G(spieler).PersonGlobalDia[1] = 10023;
+				if (_G(gameState).ChewyAni != CHEWY_ROCKER)
+					_G(gameState).PersonGlobalDia[1] = 10023;
 
 				cur_2_inventory();
 				remove_inventory(57);
-				_G(spieler).PersonDiaRoom[P_HOWARD] = true;
+				_G(gameState).PersonDiaRoom[P_HOWARD] = true;
 				show_person();
 
 			} else {
-				_G(spieler)._personRoomNr[P_HOWARD] = 42;
+				_G(gameState)._personRoomNr[P_HOWARD] = 42;
 			}
 		} else {
-			_G(spieler)._personRoomNr[P_HOWARD] = 41;
+			_G(gameState)._personRoomNr[P_HOWARD] = 41;
 		}
 	}
 
@@ -151,7 +151,7 @@ void Room40::xit(int16 eib_nr) {
 
 bool Room40::timer(int16 t_nr, int16 ani_nr) {
 	if (t_nr == _G(timer_nr)[0])
-		_G(spieler).R40PoliceStart = true;
+		_G(gameState).R40PoliceStart = true;
 	else
 		return true;
 
@@ -159,7 +159,7 @@ bool Room40::timer(int16 t_nr, int16 ani_nr) {
 }
 
 void Room40::move_train(int16 mode) {
-	_G(spieler).R40TrainMove = false;
+	_G(gameState).R40TrainMove = false;
 	hideCur();
 	autoMove(9, P_CHEWY);
 	_G(flags).NoScroll = true;
@@ -174,7 +174,7 @@ void Room40::move_train(int16 mode) {
 	_G(det)->startDetail(7, 20, ANI_FRONT);
 	_G(det)->showStaticSpr(11);
 
-	if (mode && _G(spieler).ChewyAni == CHEWY_PUMPKIN)
+	if (mode && _G(gameState).ChewyAni == CHEWY_PUMPKIN)
 		_G(det)->showStaticSpr(12);
 
 	g_engine->_sound->playSound(7, 0);
@@ -184,13 +184,13 @@ void Room40::move_train(int16 mode) {
 		_G(det)->setSetailPos(7, lx, 46);
 		_G(det)->setStaticPos(11, ax, 62, false, false);
 
-		if (mode && _G(spieler).ChewyAni == CHEWY_PUMPKIN)
+		if (mode && _G(gameState).ChewyAni == CHEWY_PUMPKIN)
 			_G(det)->setStaticPos(12, ax, 62, false, true);
 
 		if (!delay) {
 			lx += SPEED;
 			ax += SPEED;
-			delay = _G(spieler).DelaySpeed / 2;
+			delay = _G(gameState).DelaySpeed / 2;
 		} else {
 			--delay;
 		}
@@ -213,7 +213,7 @@ void Room40::move_train(int16 mode) {
 }
 
 void Room40::setup_func() {
-	if (!_G(spieler).R40HoUse && _G(spieler)._personRoomNr[P_HOWARD] == 40) {
+	if (!_G(gameState).R40HoUse && _G(gameState)._personRoomNr[P_HOWARD] == 40) {
 		calc_person_look();
 
 		int16 x, y;
@@ -238,10 +238,10 @@ void Room40::setup_func() {
 		goAutoXy(x, y, P_HOWARD, ANI_GO);
 	}
 
-	if (_G(spieler).R40PoliceWeg == false) {
-		if (_G(spieler).R40PoliceStart) {
-			_G(spieler).R40PoliceStart = false;
-			_G(spieler).R40PoliceAniStatus = POLICE_LEFT;
+	if (_G(gameState).R40PoliceWeg == false) {
+		if (_G(gameState).R40PoliceStart) {
+			_G(gameState).R40PoliceStart = false;
+			_G(gameState).R40PoliceAniStatus = POLICE_LEFT;
 			_G(room)->set_timer_status(255, TIMER_STOP);
 			_G(uhr)->resetTimer(_G(timer_nr)[0], 0);
 			_G(det)->hideStaticSpr(15);
@@ -249,11 +249,11 @@ void Room40::setup_func() {
 			_G(atds)->setControlBit(275, ATS_ACTIVE_BIT, ATS_DATA);
 		}
 
-		switch (_G(spieler).R40PoliceAniStatus) {
+		switch (_G(gameState).R40PoliceAniStatus) {
 		case POLICE_LEFT:
 			if (_G(det)->get_ani_status(POLICE_LEFT) == false) {
 				_G(det)->startDetail(POLICE_OFFEN, 1, ANI_FRONT);
-				_G(spieler).R40PoliceAniStatus = POLICE_OFFEN;
+				_G(gameState).R40PoliceAniStatus = POLICE_OFFEN;
 			}
 			break;
 
@@ -261,14 +261,14 @@ void Room40::setup_func() {
 			if (_G(det)->get_ani_status(POLICE_OFFEN) == false) {
 				_G(det)->showStaticSpr(0);
 				_G(det)->startDetail(POLICE_FLASCHE, 1, ANI_FRONT);
-				_G(spieler).R40PoliceAniStatus = POLICE_FLASCHE;
+				_G(gameState).R40PoliceAniStatus = POLICE_FLASCHE;
 			}
 			break;
 
 		case POLICE_RIGHT:
 			if (_G(det)->get_ani_status(POLICE_RIGHT) == false) {
 				_G(det)->showStaticSpr(15);
-				_G(spieler).R40PoliceAniStatus = 255;
+				_G(gameState).R40PoliceAniStatus = 255;
 				_G(room)->set_timer_status(255, TIMER_START);
 				_G(uhr)->resetTimer(_G(timer_nr)[0], 0);
 				_G(atds)->delControlBit(275, ATS_ACTIVE_BIT, ATS_DATA);
@@ -278,28 +278,28 @@ void Room40::setup_func() {
 		case POLICE_FLASCHE:
 			if (_G(det)->get_ani_status(POLICE_FLASCHE) == false) {
 				_G(det)->hideStaticSpr(0);
-				if (_G(spieler).R40DuengerTele) {
+				if (_G(gameState).R40DuengerTele) {
 					hideCur();
-					_G(spieler).R40PoliceWeg = true;
+					_G(gameState).R40PoliceWeg = true;
 					_G(det)->startDetail(17, 255, ANI_FRONT);
 					startAadWait(226);
 					_G(det)->stop_detail(17);
-					_G(spieler).R40HoUse = true;
+					_G(gameState).R40HoUse = true;
 					_G(person_end_phase)[P_CHEWY] = P_RIGHT;
 					startSetAILWait(10, 1, ANI_FRONT);
 					_G(person_end_phase)[P_HOWARD] = P_RIGHT;
 					startAadWait(224);
-					_G(spieler).R40PoliceWeg = true;
+					_G(gameState).R40PoliceWeg = true;
 					showCur();
 
 					_G(flags).MouseLeft = false;
 					_G(flags).MainInput = true;
-					_G(spieler).R40HoUse = false;
+					_G(gameState).R40HoUse = false;
 					_G(atds)->setControlBit(276, ATS_ACTIVE_BIT, ATS_DATA);
 
 				} else {
 					_G(det)->startDetail(POLICE_RIGHT, 1, ANI_FRONT);
-					_G(spieler).R40PoliceAniStatus = POLICE_RIGHT;
+					_G(gameState).R40PoliceAniStatus = POLICE_RIGHT;
 				}
 			}
 			break;
@@ -316,15 +316,15 @@ int16 Room40::use_mr_pumpkin() {
 	if (_G(menu_item) != CUR_HOWARD) {
 		hideCur();
 
-		if (!_G(spieler).inv_cur) {
+		if (!_G(gameState).inv_cur) {
 			action_ret = use_schalter(205);
 
 		} else {
-			switch (_G(spieler).AkInvent) {
+			switch (_G(gameState).AkInvent) {
 			case CENT_INV:
 				action_ret = true;
 				autoMove(5, P_CHEWY);
-				delInventory(_G(spieler).AkInvent);
+				delInventory(_G(gameState).AkInvent);
 				startSetAILWait(15, 1, ANI_FRONT);
 				start_spz(CH_PUMP_TALK, 255, ANI_FRONT, P_CHEWY);
 				startAadWait(200);
@@ -333,14 +333,14 @@ int16 Room40::use_mr_pumpkin() {
 			case RECORDER_INV:
 				action_ret = true;
 
-				if (_G(spieler).R39TvRecord == 6) {
-					if (_G(spieler).R40PoliceWeg == false)
+				if (_G(gameState).R39TvRecord == 6) {
+					if (_G(gameState).R40PoliceWeg == false)
 						use_schalter(227);
 					else {
 						hideCur();
 						autoMove(8, P_CHEWY);
 						start_spz_wait(CH_PUMP_GET1, 1, false, P_CHEWY);
-						delInventory(_G(spieler).AkInvent);
+						delInventory(_G(gameState).AkInvent);
 						_G(out)->ausblenden(1);
 						Room43::catch_pg();
 						remove_inventory(LIKOER_INV);
@@ -350,7 +350,7 @@ int16 Room40::use_mr_pumpkin() {
 						startAadWait(236);
 					}
 				} else {
-					startAadWait(228 + _G(spieler).R39TvRecord);
+					startAadWait(228 + _G(gameState).R39TvRecord);
 				}
 				break;
 
@@ -368,32 +368,32 @@ int16 Room40::use_mr_pumpkin() {
 int16 Room40::use_schalter(int16 aad_nr) {
 	int16 action_flag = false;
 
-	if (_G(menu_item) != CUR_HOWARD &&_G(spieler).R40PoliceWeg == false) {
+	if (_G(menu_item) != CUR_HOWARD &&_G(gameState).R40PoliceWeg == false) {
 		action_flag = true;
 
 		hideCur();
 		autoMove(8, P_CHEWY);
 
-		if (_G(spieler).R40PoliceAniStatus != 255) {
+		if (_G(gameState).R40PoliceAniStatus != 255) {
 			start_spz(CH_PUMP_TALK, 255, ANI_FRONT, P_CHEWY);
 			startAadWait(204);
 
-			while (_G(spieler).R40PoliceAniStatus != 255) {
+			while (_G(gameState).R40PoliceAniStatus != 255) {
 				setupScreen(DO_SETUP);
 				SHOULD_QUIT_RETURN0;
 			}
 		}
 
 		_G(room)->set_timer_status(255, TIMER_STOP);
-		_G(spieler).R40PoliceStart = false;
+		_G(gameState).R40PoliceStart = false;
 		stop_spz();
 		start_spz_wait(CH_PUMP_GET1, 1, false, P_CHEWY);
 
-		if (_G(spieler).R40PoliceAb) {
-			_G(spieler).R40PoliceAb = false;
+		if (_G(gameState).R40PoliceAb) {
+			_G(gameState).R40PoliceAb = false;
 			stop_spz();
 			goAutoXy(308, 100, P_HOWARD, ANI_WAIT);
-			_G(spieler).R40HoUse = false;
+			_G(gameState).R40HoUse = false;
 		}
 
 		_G(det)->hideStaticSpr(15);
@@ -412,9 +412,9 @@ int16 Room40::use_schalter(int16 aad_nr) {
 }
 
 void Room40::talk_police() {
-	if (!_G(spieler).R40PoliceWeg && _G(spieler).R40PoliceAniStatus == 255) {
+	if (!_G(gameState).R40PoliceWeg && _G(gameState).R40PoliceAniStatus == 255) {
 		hideCur();
-		_G(spieler).R40PoliceStart = false;
+		_G(gameState).R40PoliceStart = false;
 		_G(room)->set_timer_status(255, TIMER_STOP);
 		autoMove(7, P_CHEWY);
 		startAadWait(203);
@@ -425,8 +425,8 @@ void Room40::talk_police() {
 }
 
 void Room40::talk_handler() {
-	if (!_G(spieler).R40HaendlerOk) {
-		_G(spieler).flags38_2 = true;
+	if (!_G(gameState).R40HaendlerOk) {
+		_G(gameState).flags38_2 = true;
 		hideCur();
 		autoMove(6, P_CHEWY);
 		_G(det)->del_static_ani(4);
@@ -443,17 +443,17 @@ void Room40::talk_handler() {
 int16 Room40::use_haendler() {
 	int16 action_flag = false;
 
-	if (_G(menu_item) == CUR_HOWARD && !_G(spieler).R40HaendlerOk) {
+	if (_G(menu_item) == CUR_HOWARD && !_G(gameState).R40HaendlerOk) {
 		action_flag = true;
-		if (!_G(spieler).flags38_2) {
+		if (!_G(gameState).flags38_2) {
 			startAadWait(612);
 		} else {
 			hideCur();
 			invent_2_slot(DUENGER_INV);
-			_G(spieler).R40HoUse = true;
-			_G(spieler).R40HaendlerOk = true;
-			_G(spieler).R40TeilKarte = true;
-			_G(spieler).R40DuengerMit = true;
+			_G(gameState).R40HoUse = true;
+			_G(gameState).R40HaendlerOk = true;
+			_G(gameState).R40TeilKarte = true;
+			_G(gameState).R40DuengerMit = true;
 			_G(atds)->setControlBit(283, ATS_ACTIVE_BIT, ATS_DATA);
 			autoMove(10, P_CHEWY);
 			autoMove(11, P_HOWARD);
@@ -470,7 +470,7 @@ int16 Room40::use_haendler() {
 			_G(det)->set_static_ani(5, -1);
 			startAadWait(213);
 
-			if (_G(spieler).R28RKuerbis) {
+			if (_G(gameState).R28RKuerbis) {
 				_G(det)->del_static_ani(5);
 				_G(det)->set_static_ani(3, -1);
 				startAadWait(211);
@@ -478,8 +478,8 @@ int16 Room40::use_haendler() {
 				_G(out)->set_partialpalette(_G(pal), 255, 1);
 				startAadWait(212);
 				_G(out)->ausblenden(0);
-				_G(spieler).R40Wettbewerb = true;
-				_G(spieler)._personRoomNr[P_HOWARD] = 28;
+				_G(gameState).R40Wettbewerb = true;
+				_G(gameState)._personRoomNr[P_HOWARD] = 28;
 				_G(flags).NoScroll = false;
 				_G(out)->setPointer(nullptr);
 				_G(out)->cls();
@@ -496,7 +496,7 @@ int16 Room40::use_haendler() {
 			showCur();
 			_G(flags).NoScroll = false;
 			_G(flags).MouseLeft = false;
-			_G(spieler).R40HoUse = false;
+			_G(gameState).R40HoUse = false;
 		}
 	}
 
@@ -509,13 +509,13 @@ int16 Room40::use_bmeister() {
 	if (_G(menu_item) == CUR_HOWARD) {
 		action_flag = true;
 		hideCur();
-		_G(spieler).R40HoUse = true;
+		_G(gameState).R40HoUse = true;
 		autoMove(9, P_CHEWY);
 		autoMove(11, P_HOWARD);
 		startAadWait(214);
 		bmeister_dia(215);
 		startAadWait(216);
-		_G(spieler).R40HoUse = false;
+		_G(gameState).R40HoUse = false;
 		_G(flags).NoScroll = false;
 		_G(menu_item) = CUR_WALK;
 		cursorChoice(_G(menu_item));
@@ -523,14 +523,14 @@ int16 Room40::use_bmeister() {
 
 	} else if (isCurInventory(LIKOER2_INV)) {
 		action_flag = true;
-		if (_G(spieler).flags37_80) {
+		if (_G(gameState).flags37_80) {
 			startAadWait(605);
 		} else {
 			hideCur();
-			_G(spieler).R40HoUse = true;
+			_G(gameState).R40HoUse = true;
 			new_invent_2_cur(HOTEL_INV);
 			bmeister_dia(237);
-			_G(spieler).flags37_80 = true;
+			_G(gameState).flags37_80 = true;
 			_G(flags).NoScroll = false;
 			showCur();
 		}
@@ -572,13 +572,13 @@ bool Room40::use_police() {
 	bool result = false;
 
 	if (_G(menu_item) == CUR_HOWARD) {
-		if (!_G(spieler).R40PoliceWeg && _G(spieler).R40PoliceAniStatus == 255) {
+		if (!_G(gameState).R40PoliceWeg && _G(gameState).R40PoliceAniStatus == 255) {
 			result = true;
-			_G(spieler).R40PoliceAb = true;
+			_G(gameState).R40PoliceAb = true;
 			hideCur();
-			_G(spieler).R40PoliceStart = false;
+			_G(gameState).R40PoliceStart = false;
 			_G(room)->set_timer_status(255, TIMER_STOP);
-			_G(spieler).R40HoUse = true;
+			_G(gameState).R40HoUse = true;
 			autoMove(9, P_CHEWY);
 			autoMove(11, P_HOWARD);
 			startAadWait(217);
@@ -602,21 +602,21 @@ bool Room40::use_police() {
 int16 Room40::use_tele() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && _G(spieler).R40PoliceWeg == false) {
+	if (!_G(gameState).inv_cur && _G(gameState).R40PoliceWeg == false) {
 		action_flag = true;
 		hideCur();
 
 		int16 dia_nr1 = -1;
-		if (!_G(spieler).R40PoliceAb) {
+		if (!_G(gameState).R40PoliceAb) {
 			startAadWait(219);
-			_G(spieler).R40HoUse = false;
+			_G(gameState).R40HoUse = false;
 
 		} else {
 			autoMove(13, P_CHEWY);
 			_G(det)->showStaticSpr(0);
 
 			int16 dia_nr;
-			if (!_G(spieler).R40DuengerMit) {
+			if (!_G(gameState).R40DuengerMit) {
 				dia_nr = 220;
 				dia_nr1 = 222;
 			} else {
@@ -629,26 +629,26 @@ int16 Room40::use_tele() {
 			_G(det)->hideStaticSpr(0);
 			autoMove(9, P_CHEWY);
 			startAadWait(dia_nr1);
-			_G(spieler).R40HoUse = false;
+			_G(gameState).R40HoUse = false;
 			int16 timer_wert = 0;
 
 			if (dia_nr1 == 223) {
 				if (isCurInventory(DUENGER_INV)) {
-					delInventory(_G(spieler).AkInvent);
+					delInventory(_G(gameState).AkInvent);
 				} else {
 					remove_inventory(DUENGER_INV);
 				}
 
 				invent_2_slot(LIKOER_INV);
 				autoMove(1, P_CHEWY);
-				_G(spieler).R40DuengerMit = false;
-				_G(spieler).R40DuengerTele = true;
+				_G(gameState).R40DuengerMit = false;
+				_G(gameState).R40DuengerTele = true;
 				_G(flags).MouseLeft = true;
 				_G(flags).MainInput = false;
 				timer_wert = 3;
 			}
 
-			_G(spieler).R40PoliceAb = false;
+			_G(gameState).R40PoliceAb = false;
 			_G(room)->set_timer_status(255, TIMER_START);
 			_G(uhr)->resetTimer(_G(timer_nr)[0], timer_wert);
 		}
diff --git a/engines/chewy/rooms/room41.cpp b/engines/chewy/rooms/room41.cpp
index 8bc671c6115..0b486c9a6d2 100644
--- a/engines/chewy/rooms/room41.cpp
+++ b/engines/chewy/rooms/room41.cpp
@@ -38,7 +38,7 @@ static const AniBlock ABLOCK32[2] = {
 void Room41::entry() {
 	hideCur();
 
-	if (!_G(spieler).R41LolaOk) {
+	if (!_G(gameState).R41LolaOk) {
 		g_engine->_sound->playSound(6);
 
 		if (!_G(flags).LoadGame) {
@@ -53,13 +53,13 @@ void Room41::entry() {
 		}
 	}
 
-	if (_G(spieler).R41Einbruch) {
+	if (_G(gameState).R41Einbruch) {
 		_G(atds)->delControlBit(271, ATS_ACTIVE_BIT, ATS_DATA);
 		_G(det)->showStaticSpr(6);
 		_G(det)->showStaticSpr(7);
 	}
 
-	if (_G(spieler).ChewyAni == CHEWY_ROCKER) {
+	if (_G(gameState).ChewyAni == CHEWY_ROCKER) {
 		_G(atds)->setControlBit(269, ATS_ACTIVE_BIT, ATS_DATA);
 	}
 
@@ -71,16 +71,16 @@ void Room41::entry() {
 }
 
 void Room41::xit() {
-	if (_G(spieler).R41TrainCount == 0) {
-		_G(spieler).R41TrainCount = 3;
-		_G(spieler).R40TrainMove = true;
+	if (_G(gameState).R41TrainCount == 0) {
+		_G(gameState).R41TrainCount = 3;
+		_G(gameState).R40TrainMove = true;
 	}
 
-	_G(spieler).R41TrainCount--;
+	_G(gameState).R41TrainCount--;
 }
 
 void Room41::setup_func() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 41) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 41) {
 		calc_person_look();
 		if (_G(spieler_vector)->Xypos[P_HOWARD] == 160) {
 			goAutoXy(258, 75, P_HOWARD, ANI_GO);
@@ -94,20 +94,20 @@ void Room41::talk_hoggy1() {
 	stop_hoggy();
 	autoMove(1, P_CHEWY);
 
-	if (!_G(spieler).R41FirstTalk) {
+	if (!_G(gameState).R41FirstTalk) {
 		first_talk();
 
-	} else if (!_G(spieler).R41Einbruch) {
+	} else if (!_G(gameState).R41Einbruch) {
 		showCur();
 		startAdsWait(11);
 
-	} else if (_G(spieler).R41Einbruch) {
-		if (!_G(spieler).R41BruchInfo) {
-			_G(spieler).R41BruchInfo = true;
+	} else if (_G(gameState).R41Einbruch) {
+		if (!_G(gameState).R41BruchInfo) {
+			_G(gameState).R41BruchInfo = true;
 			startAadWait(132);
 			startAadWait(128);
-		} else if (_G(spieler).R31SurFurz && !_G(spieler).R41KuerbisInfo) {
-			_G(spieler).R41KuerbisInfo = true;
+		} else if (_G(gameState).R31SurFurz && !_G(gameState).R41KuerbisInfo) {
+			_G(gameState).R41KuerbisInfo = true;
 			startAadWait(131);
 			autoMove(5, P_CHEWY);
 			new_invent_2_cur(TICKET_INV);
@@ -125,12 +125,12 @@ void Room41::talk_hoggy2() {
 	stop_hoggy();
 	autoMove(2, P_CHEWY);
 
-	if (!_G(spieler).R41FirstTalk) {
+	if (!_G(gameState).R41FirstTalk) {
 		first_talk();
 
-	} else if (_G(spieler).R41BruchInfo) {
-		if (_G(spieler).R31SurFurz && !_G(spieler).R41KuerbisInfo) {
-			_G(spieler).R41KuerbisInfo = true;
+	} else if (_G(gameState).R41BruchInfo) {
+		if (_G(gameState).R31SurFurz && !_G(gameState).R41KuerbisInfo) {
+			_G(gameState).R41KuerbisInfo = true;
 			startAadWait(131);
 			autoMove(5, P_CHEWY);
 			new_invent_2_cur(TICKET_INV);
@@ -146,7 +146,7 @@ void Room41::talk_hoggy2() {
 }
 
 void Room41::first_talk() {
-	_G(spieler).R41FirstTalk = true;
+	_G(gameState).R41FirstTalk = true;
 	startAadWait(134);
 	_G(atds)->set_ats_str(266, TXT_MARK_NAME, 1, ATS_DATA);
 	_G(atds)->set_ats_str(265, TXT_MARK_NAME, 1, ATS_DATA);
@@ -176,7 +176,7 @@ void Room41::stop_hoggy() {
 int16 Room41::use_kasse() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_flag = true;
 		stop_hoggy();
 		autoMove(1, P_CHEWY);
@@ -190,10 +190,10 @@ int16 Room41::use_kasse() {
 int16 Room41::use_lola() {
 	int16 action_flag = false;
 
-	if (!_G(spieler).inv_cur && !_G(spieler).R41LolaOk && _G(spieler).R41RepairInfo) {
+	if (!_G(gameState).inv_cur && !_G(gameState).R41LolaOk && _G(gameState).R41RepairInfo) {
 		hideCur();
 		action_flag = true;
-		_G(spieler).R41LolaOk = true;
+		_G(gameState).R41LolaOk = true;
 		autoMove(4, P_CHEWY);
 		g_engine->_sound->stopSound(0);
 		flic_cut(FCUT_057);
@@ -223,15 +223,15 @@ int16 Room41::use_brief() {
 	} else if (isCurInventory(BRIEF2_INV)) {
 		action_flag = true;
 		autoMove(6, P_CHEWY);
-		delInventory(_G(spieler).AkInvent);
+		delInventory(_G(gameState).AkInvent);
 		stop_hoggy();
 		startAadWait(186);
 		start_hoggy();
 		_G(atds)->set_ats_str(206, 1, ATS_DATA);
-		_G(spieler).R28Briefkasten = true;
-		_G(spieler).R40TrainMove = true;
-		_G(spieler).R28PostCar = true;
-		_G(spieler).R42BriefOk = true;
+		_G(gameState).R28Briefkasten = true;
+		_G(gameState).R40TrainMove = true;
+		_G(gameState).R28PostCar = true;
+		_G(gameState).R42BriefOk = true;
 	}
 
 	showCur();
@@ -242,7 +242,7 @@ void Room41::sub_dia() {
 	aadWait(-1);
 	startAadWait(161);
 
-	if (_G(spieler).R41LolaOk) {
+	if (_G(gameState).R41LolaOk) {
 		startAadWait(163);
 		_G(atds)->hide_item(11, 0, 2);
 		stop_ads_dialog();
diff --git a/engines/chewy/rooms/room42.cpp b/engines/chewy/rooms/room42.cpp
index 0f5cbb669dc..aa77e84f8db 100644
--- a/engines/chewy/rooms/room42.cpp
+++ b/engines/chewy/rooms/room42.cpp
@@ -31,19 +31,19 @@ namespace Chewy {
 namespace Rooms {
 
 void Room42::entry() {
-	if (!_G(spieler).R42BeamterWach) {
+	if (!_G(gameState).R42BeamterWach) {
 		g_engine->_sound->playSound(0);
 		_G(det)->startDetail(0, 255, ANI_FRONT);
 	}
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 42) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 42) {
 		_G(SetUpScreenFunc) = setup_func;
 
 		if (!_G(flags).LoadGame) {
 			_G(det)->stop_detail(0);
 			_G(timer_nr)[0] = _G(room)->set_timer(8, 5);
 			_G(det)->set_static_ani(8, -1);
-			_G(spieler).R42BeamterWach = true;
+			_G(gameState).R42BeamterWach = true;
 			g_engine->_sound->stopSound(0);
 
 			_G(SetUpScreenFunc) = setup_func;
@@ -53,40 +53,40 @@ void Room42::entry() {
 			_G(atds)->set_ats_str(264, 1, ATS_DATA);
 		}
 
-		if (_G(obj)->checkInventory(HOTEL_INV) && _G(obj)->checkInventory(TICKET_INV) && !_G(spieler).R42BriefOk)
+		if (_G(obj)->checkInventory(HOTEL_INV) && _G(obj)->checkInventory(TICKET_INV) && !_G(gameState).R42BriefOk)
 			startAadWait(302);
 
-		if (_G(obj)->checkInventory(HOTEL_INV) && _G(obj)->checkInventory(TICKET_INV) && _G(spieler).R42BriefOk)
+		if (_G(obj)->checkInventory(HOTEL_INV) && _G(obj)->checkInventory(TICKET_INV) && _G(gameState).R42BriefOk)
 			startAadWait(301);
 	}
 }
 
 void Room42::xit() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 42) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 42) {
 		_G(atds)->set_ats_str(264, 1, ATS_DATA);
 		stop_spz();
-		_G(spieler).R42HoToBeamter = false;
-		_G(spieler)._personRoomNr[P_HOWARD] = 40;
+		_G(gameState).R42HoToBeamter = false;
+		_G(gameState)._personRoomNr[P_HOWARD] = 40;
 	}
 }
 
 void Room42::setup_func() {
-	if (!_G(spieler).R42HoToBeamter)
+	if (!_G(gameState).R42HoToBeamter)
 		calc_person_look();
 }
 
 void Room42::getPumpkin(int16 aad_nr) {
 	hideCur();
 	autoMove(1, P_CHEWY);
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	startSetAILWait(7, 1, ANI_BACK);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	start_spz(CH_TALK5, 255, ANI_FRONT, P_CHEWY);
 	startAadWait(aad_nr);
 
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	startSetAILWait(7, 1, ANI_FRONT);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	showCur();
 }
 
@@ -97,39 +97,39 @@ int16 Room42::useMailBag() {
 		return action_flag;
 
 	hideCur();
-	if (!_G(spieler).R42BeamterWach && !_G(spieler).inv_cur) {
+	if (!_G(gameState).R42BeamterWach && !_G(gameState).inv_cur) {
 		action_flag = true;
 		getPumpkin(136);
-	} else if (_G(spieler).R42HoToBeamter && !_G(spieler).inv_cur && !_G(spieler).R42MarkeOk) {
+	} else if (_G(gameState).R42HoToBeamter && !_G(gameState).inv_cur && !_G(gameState).R42MarkeOk) {
 		action_flag = true;
 		autoMove(3, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(10, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		startAadWait(187);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(9, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		new_invent_2_cur(BMARKE_INV);
 		startAadWait(181);
-		_G(spieler).R42MarkeOk = true;
+		_G(gameState).R42MarkeOk = true;
 		autoMove(4, P_CHEWY);
 		startAadWait(185);
-		_G(spieler).R42HoToBeamter = false;
+		_G(gameState).R42HoToBeamter = false;
 	} else if (isCurInventory(BRIEF2_INV)) {
 		action_flag = true;
 		autoMove(3, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(10, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_CHEWY] = false;
-		delInventory(_G(spieler).AkInvent);
+		_G(gameState)._personHide[P_CHEWY] = false;
+		delInventory(_G(gameState).AkInvent);
 		startAadWait(183);
 		_G(obj)->calc_rsi_flip_flop(SIB_BKASTEN_R28);
 		_G(atds)->set_ats_str(206, 1, ATS_DATA);
-		_G(spieler).R28Briefkasten = true;
-		_G(spieler).R40TrainMove = true;
-		_G(spieler).R28PostCar = true;
-		_G(spieler).R42BriefOk = true;
+		_G(gameState).R28Briefkasten = true;
+		_G(gameState).R40TrainMove = true;
+		_G(gameState).R28PostCar = true;
+		_G(gameState).R42BriefOk = true;
 
 	} else if (isCurInventory(BRIEF_INV)) {
 		action_flag = true;
@@ -149,7 +149,7 @@ int16 Room42::useStationEmployee() {
 		hideCur();
 		autoMove(4, P_CHEWY);
 		startAadWait(184);
-		_G(spieler).R42HoToBeamter = true;
+		_G(gameState).R42HoToBeamter = true;
 		_G(menu_item) = CUR_WALK;
 		cursorChoice(_G(menu_item));
 		showCur();
@@ -164,9 +164,9 @@ void Room42::talkToStationEmployee() {
 	int16 dia_nr;
 	autoMove(1, P_CHEWY);
 
-	if (!_G(spieler).R42BeamterWach) {
+	if (!_G(gameState).R42BeamterWach) {
 		dia_nr = 10;
-	} else if (!_G(spieler).R42MarkeOk) {
+	} else if (!_G(gameState).R42MarkeOk) {
 		dia_nr = 13;
 	} else {
 		dia_nr = 14;
@@ -184,7 +184,7 @@ void Room42::dialogWithStationEmployee(int16 str_end_nr) {
 			SHOULD_QUIT_RETURN;
 		}
 
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		_G(flags).NoDiaBox = true;
 
 		switch (str_end_nr) {
@@ -226,12 +226,12 @@ void Room42::dialogWithStationEmployee(int16 str_end_nr) {
 		g_engine->_sound->playSound(0);
 	}
 
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	_G(det)->startDetail(6, 255, ANI_FRONT);
 	startAadWait(135);
 	_G(det)->stop_detail(6);
 	_G(flags).NoDiaBox = false;
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	showCur();
 }
 
diff --git a/engines/chewy/rooms/room43.cpp b/engines/chewy/rooms/room43.cpp
index db86be59b9b..ca574bb1b28 100644
--- a/engines/chewy/rooms/room43.cpp
+++ b/engines/chewy/rooms/room43.cpp
@@ -31,64 +31,64 @@ namespace Rooms {
 
 void Room43::night_small() {
 	hide_person();
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	switchRoom(43);
 	_G(sndPlayer)->stopMod();
 	g_engine->_sound->playSound(0);
 	hideCur();
 	_G(flags).NoScroll = true;
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).ScrollxStep = 1;
 	startAadWait(188);
 	auto_scroll(320, 0);
 	startAadWait(189);
 	auto_scroll(0, 0);
 	startAadWait(190);
-	_G(spieler).ScrollxStep = 16;
+	_G(gameState).ScrollxStep = 16;
 	auto_scroll(192, 0);
 
 	for (int16 i = 0; i < 3; i++) {
 		if (i)
-			_G(spieler).ScrollxStep = 16 / i;
+			_G(gameState).ScrollxStep = 16 / i;
 		auto_scroll(128 + i * 16, 0);
 		auto_scroll(192, 0);
 	}
 
-	_G(spieler).scrollx = 194;
+	_G(gameState).scrollx = 194;
 	startAadWait(191);
 	flic_cut(FCUT_058);
 	g_engine->_sound->stopSound(0);
 	_G(flags).NoScroll = false;
-	_G(spieler).ScrollxStep = 1;
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState).ScrollxStep = 1;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	showCur();
 	show_person();
 }
 
 void Room43::catch_pg() {
 	hide_person();
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	switchRoom(43);
 	_G(sndPlayer)->stopMod();
 	g_engine->_sound->playSound(0);
 	hideCur();
 	_G(flags).NoScroll = true;
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).ScrollxStep = 1;
 	startAadWait(234);
 	auto_scroll(194, 0);
 	startAadWait(235);
-	_G(spieler).R43GetPgLady = true;
+	_G(gameState).R43GetPgLady = true;
 	flic_cut(FCUT_058);
 
 	g_engine->_sound->stopSound(0);
 	register_cutscene(14);
 	
 	_G(flags).NoScroll = false;
-	_G(spieler).ScrollxStep = 1;
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState).ScrollxStep = 1;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	showCur();
 	show_person();
 }
diff --git a/engines/chewy/rooms/room44.cpp b/engines/chewy/rooms/room44.cpp
index f2b896fefa5..4e7646f457d 100644
--- a/engines/chewy/rooms/room44.cpp
+++ b/engines/chewy/rooms/room44.cpp
@@ -29,19 +29,19 @@ namespace Chewy {
 namespace Rooms {
 
 void Room44::look_news() {
-	int16 tmproom = _G(spieler)._personRoomNr[P_CHEWY];
-	int16 tmpsx = _G(spieler).scrollx;
-	int16 tmpsy = _G(spieler).scrolly;
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	int16 tmproom = _G(gameState)._personRoomNr[P_CHEWY];
+	int16 tmpsx = _G(gameState).scrollx;
+	int16 tmpsy = _G(gameState).scrolly;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	hide_person();
 	_G(fx_blend) = BLEND1;
-	_G(spieler)._personRoomNr[P_CHEWY] = 44;
-	_G(room)->loadRoom(&_G(room_blk), 44, &_G(spieler));
+	_G(gameState)._personRoomNr[P_CHEWY] = 44;
+	_G(room)->loadRoom(&_G(room_blk), 44, &_G(gameState));
 
 	startAadWait(172);
-	_G(spieler).scrollx = tmpsx;
-	_G(spieler).scrolly = tmpsy;
+	_G(gameState).scrollx = tmpsx;
+	_G(gameState).scrolly = tmpsy;
 	switchRoom(tmproom);
 	show_person();
 }
diff --git a/engines/chewy/rooms/room45.cpp b/engines/chewy/rooms/room45.cpp
index 00082580cee..b5ea4185f9b 100644
--- a/engines/chewy/rooms/room45.cpp
+++ b/engines/chewy/rooms/room45.cpp
@@ -30,31 +30,31 @@ namespace Chewy {
 namespace Rooms {
 
 void Room45::entry(int16 eib_nr) {
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 	_G(SetUpScreenFunc) = setup_func;
 	_G(r45_delay) = 0;
 	_G(zoom_horizont) = 150;
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 4;
-	_G(spieler).ZoomXy[P_HOWARD][0] = 80;
-	_G(spieler).ZoomXy[P_HOWARD][1] = 70;
+	_G(gameState).ZoomXy[P_HOWARD][0] = 80;
+	_G(gameState).ZoomXy[P_HOWARD][1] = 70;
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 46) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 46) {
 		_G(spieler_mi)[P_HOWARD].Mode = true;
-		_G(spieler)._personRoomNr[P_HOWARD] = 45;
+		_G(gameState)._personRoomNr[P_HOWARD] = 45;
 	}
 
 	_G(spieler_mi)[P_HOWARD].Mode = true;
 	if (!_G(flags).LoadGame) {
 		int16 ch_x, ch_y;
 		int16 ho_x, ho_y;
-		if (_G(spieler).R48TaxiEntry) {
+		if (_G(gameState).R48TaxiEntry) {
 			ch_x = 67;
 			ch_y = 146;
 			ho_x = 43;
 			ho_y = 129;
 
-			_G(spieler).R48TaxiEntry = false;
+			_G(gameState).R48TaxiEntry = false;
 			_G(mouseLeftClick) = false;
 		} else {
 			if (eib_nr == 72) {
@@ -62,7 +62,7 @@ void Room45::entry(int16 eib_nr) {
 				ch_y = 146;
 				ho_x = 304;
 				ho_y = 130;
-				_G(spieler).scrollx = 130;
+				_G(gameState).scrollx = 130;
 			} else {
 				ch_x = 68;
 				ch_y = 132;
@@ -77,13 +77,13 @@ void Room45::entry(int16 eib_nr) {
 }
 
 void Room45::xit(int16 eib_nr) {
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).ScrollxStep = 1;
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 45) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 45) {
 		_G(spieler_mi)[P_HOWARD].Mode = false;
 
 		if (eib_nr == 87) {
-			_G(spieler)._personRoomNr[P_HOWARD] = 40;
+			_G(gameState)._personRoomNr[P_HOWARD] = 40;
 		}
 	}
 
@@ -99,7 +99,7 @@ void Room45::setup_func() {
 
 	if (_G(menu_display) == 0) {
 		if (!_G(r45_delay)) {
-			_G(r45_delay) = _G(spieler).DelaySpeed / 2;
+			_G(r45_delay) = _G(gameState).DelaySpeed / 2;
 
 			for (int16 i = 0; i < R45_MAX_PERSON; i++) {
 				if (_G(r45_pinfo)[i][0] == 1) {
@@ -141,7 +141,7 @@ void Room45::setup_func() {
 			--_G(r45_delay);
 		}
 
-		if (_G(spieler)._personRoomNr[P_HOWARD] == 45 && _G(HowardMov) != 2) {
+		if (_G(gameState)._personRoomNr[P_HOWARD] == 45 && _G(HowardMov) != 2) {
 			calc_person_look();
 			const int16 ch_x = _G(spieler_vector)[P_CHEWY].Xypos[0];
 
@@ -170,14 +170,14 @@ int16 Room45::use_taxi() {
 	hideCur();
 	autoMove(1, P_CHEWY);
 
-	if (!_G(spieler).inv_cur) {
-		if (_G(spieler).ChewyAni == CHEWY_PUMPKIN) {
+	if (!_G(gameState).inv_cur) {
+		if (_G(gameState).ChewyAni == CHEWY_PUMPKIN) {
 			action_ret = true;
 			talk_taxi(254);
-		} else if (!_G(spieler).R45TaxiOk) {
+		} else if (!_G(gameState).R45TaxiOk) {
 			action_ret = true;
 			talk_taxi(260);
-		} else if (_G(spieler).R45TaxiOk) {
+		} else if (_G(gameState).R45TaxiOk) {
 			action_ret = true;
 			taxi_mov();
 		}
@@ -185,7 +185,7 @@ int16 Room45::use_taxi() {
 		action_ret = true;
 		delInventory(RING_INV);
 		talk_taxi(256);
-		_G(spieler).R45TaxiOk = true;
+		_G(gameState).R45TaxiOk = true;
 		taxi_mov();
 	} else if (isCurInventory(UHR_INV)) {
 		action_ret = true;
@@ -215,14 +215,14 @@ void Room45::taxi_mov() {
 	g_engine->_sound->playSound(15, 1);
 	_G(det)->showStaticSpr(11);
 	autoMove(3, P_CHEWY);
-	_G(spieler)._personHide[P_CHEWY] = true;
-	_G(spieler).R48TaxiPerson[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
+	_G(gameState).R48TaxiPerson[P_CHEWY] = true;
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 45) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 45) {
 		goAutoXy(93, 127, P_HOWARD, ANI_WAIT);
-		_G(spieler)._personHide[P_HOWARD] = true;
-		_G(spieler).R48TaxiPerson[P_HOWARD] = true;
-		_G(spieler)._personRoomNr[P_HOWARD] = 48;
+		_G(gameState)._personHide[P_HOWARD] = true;
+		_G(gameState).R48TaxiPerson[P_HOWARD] = true;
+		_G(gameState)._personRoomNr[P_HOWARD] = 48;
 	}
 
 	_G(det)->hideStaticSpr(11);
@@ -239,7 +239,7 @@ int16 Room45::use_boy() {
 	hideCur();
 	autoMove(2, P_CHEWY);
 
-	if (!_G(spieler).R45MagOk) {
+	if (!_G(gameState).R45MagOk) {
 		if (isCurInventory(DOLLAR175_INV)) {
 			action_ret = true;
 			new_invent_2_cur(CUTMAG_INV);
@@ -250,7 +250,7 @@ int16 Room45::use_boy() {
 			startSetAILWait(1, 1, ANI_FRONT);
 			_G(room)->set_timer_status(0, TIMER_START);
 			_G(det)->set_static_ani(0, -1);
-			_G(spieler).R45MagOk = true;
+			_G(gameState).R45MagOk = true;
 		}
 	} else {
 		startAadWait(259);
@@ -264,7 +264,7 @@ void Room45::talk_boy() {
 	int16 aad_nr;
 	hideCur();
 
-	if (!_G(spieler).R45MagOk) {
+	if (!_G(gameState).R45MagOk) {
 		autoMove(2, P_CHEWY);
 		aad_nr = 257;
 	} else {
diff --git a/engines/chewy/rooms/room46.cpp b/engines/chewy/rooms/room46.cpp
index 57d9500d532..7e8c239adf4 100644
--- a/engines/chewy/rooms/room46.cpp
+++ b/engines/chewy/rooms/room46.cpp
@@ -31,8 +31,8 @@ namespace Chewy {
 namespace Rooms {
 
 void Room46::entry(int16 eib_nr) {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 45) {
-		_G(spieler)._personRoomNr[P_HOWARD] = 46;
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 45) {
+		_G(gameState)._personRoomNr[P_HOWARD] = 46;
 		_G(SetUpScreenFunc) = setup_func;
 
 		if (eib_nr == 79) {
@@ -42,37 +42,37 @@ void Room46::entry(int16 eib_nr) {
 		}
 	}
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 46) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 46) {
 		_G(spieler_mi)[P_HOWARD].Mode = true;
 		_G(SetUpScreenFunc) = setup_func;
 
-		if (_G(spieler).flags33_8) {
+		if (_G(gameState).flags33_8) {
 			_G(mouseLeftClick) = false;
 			hideCur();
 			setPersonPos(175, 73, P_HOWARD, P_LEFT);
 			setPersonPos(147, 109, P_CHEWY, P_LEFT);
-			_G(spieler).flags33_8 = false;
-			_G(spieler).SVal1 = 46;
+			_G(gameState).flags33_8 = false;
+			_G(gameState).SVal1 = 46;
 			waitShowScreen(10);
 
 			start_spz_wait(64, 1, false, P_CHEWY);
 			start_spz(65, 255, false, P_CHEWY);
 			startAadWait(494);
-			_G(spieler).SVal2 = 504;
+			_G(gameState).SVal2 = 504;
 			switchRoom(92);
 			start_spz(65, 255, false, P_CHEWY);
 			startAadWait(495);
-			_G(spieler).room_e_obj[78].Exit = 90;
+			_G(gameState).room_e_obj[78].Exit = 90;
 			showCur();
 		}
 	}
 
-	if (_G(spieler).R47SchlossOk && !_G(spieler).R46GetLeder)
+	if (_G(gameState).R47SchlossOk && !_G(gameState).R46GetLeder)
 		bodo();
 }
 
 void Room46::xit() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 46) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 46) {
 		_G(spieler_mi)[P_HOWARD].Mode = false;
 	}
 }
@@ -129,24 +129,24 @@ void Room46::bodo() {
 	_G(det)->hideStaticSpr(6);
 	startSetAILWait(6, 1, ANI_FRONT);
 	_G(det)->showStaticSpr(3);
-	_G(spieler)._personHide[P_CHEWY] = true;
+	_G(gameState)._personHide[P_CHEWY] = true;
 	startSetAILWait(1, 1, ANI_FRONT);
 	flic_cut(FCUT_065);
 	_G(out)->setPointer(nullptr);
 	_G(out)->cls();
 	register_cutscene(16);
 	
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(det)->hideStaticSpr(0);
 	_G(det)->hideStaticSpr(3);
 	load_chewy_taf(CHEWY_ROCKER);
-	_G(spieler).R28ChewyPump = false;
+	_G(gameState).R28ChewyPump = false;
 	
 	setPersonPos(213, 118, P_CHEWY, P_RIGHT);
 	startAadWait(243);
 	invent_2_slot(UHR_INV);
 	invent_2_slot(RING_INV);
-	_G(spieler).R46GetLeder = true;
+	_G(gameState).R46GetLeder = true;
 	showCur();
 }
 
@@ -157,10 +157,10 @@ void Room46::kloppe() {
 		_G(out)->setPointer(nullptr);
 		_G(out)->cls();
 		start_aad(244 + i, -1);
-		int16 delay = _G(spieler).DelaySpeed * 50;
+		int16 delay = _G(gameState).DelaySpeed * 50;
 		_G(atds)->print_aad(0, 0);
 
-		if (_G(spieler).SpeechSwitch) {
+		if (_G(gameState).SpeechSwitch) {
 			g_engine->_sound->waitForSpeechToFinish();
 			continue;
 		}
@@ -183,10 +183,10 @@ void Room46::kloppe() {
 int16 Room46::use_schloss() {
 	int16 action_ret = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_ret = true;
 
-		if (!_G(spieler).R46GetLeder) {
+		if (!_G(gameState).R46GetLeder) {
 			autoMove(1, P_CHEWY);
 			switchRoom(47);
 		} else {
diff --git a/engines/chewy/rooms/room47.cpp b/engines/chewy/rooms/room47.cpp
index 417d7eeb8ae..d8504ce5c55 100644
--- a/engines/chewy/rooms/room47.cpp
+++ b/engines/chewy/rooms/room47.cpp
@@ -46,7 +46,7 @@ int16 Room47::use_button(int16 txt_nr) {
 	int16 k_nr = 0;
 	int16 action_ret = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_ret = true;
 
 		switch (txt_nr) {
@@ -68,17 +68,17 @@ int16 Room47::use_button(int16 txt_nr) {
 
 		g_engine->_sound->playSound(0, 0);
 		g_engine->_sound->playSound(0);
-		++_G(spieler).R47Schloss[k_nr];
+		++_G(gameState).R47Schloss[k_nr];
 
-		if (_G(spieler).R47Schloss[k_nr] > 9)
-			_G(spieler).R47Schloss[k_nr] = 0;
+		if (_G(gameState).R47Schloss[k_nr] > 9)
+			_G(gameState).R47Schloss[k_nr] = 0;
 
-		if (_G(spieler).R47Schloss[0] == 7 &&
-				_G(spieler).R47Schloss[1] == 6 &&
-				_G(spieler).R47Schloss[2] == 2)
-			_G(spieler).R47SchlossOk = true;
+		if (_G(gameState).R47Schloss[0] == 7 &&
+				_G(gameState).R47Schloss[1] == 6 &&
+				_G(gameState).R47Schloss[2] == 2)
+			_G(gameState).R47SchlossOk = true;
 		else
-			_G(spieler).R47SchlossOk = false;
+			_G(gameState).R47SchlossOk = false;
 	}
 
 	return action_ret;
@@ -89,9 +89,9 @@ void Room47::set_detail() {
 		_G(det)->hideStaticSpr(i);
 
 	for (int16 i = 0; i < 3; i++) {
-		_G(det)->showStaticSpr(_G(spieler).R47Schloss[i]);
-		_G(det)->setStaticPos(_G(spieler).R47Schloss[i], 124 + i * 30, 96 - i, false, true);
-		_G(det)->plot_static_details(0, 0, _G(spieler).R47Schloss[i], _G(spieler).R47Schloss[i]);
+		_G(det)->showStaticSpr(_G(gameState).R47Schloss[i]);
+		_G(det)->setStaticPos(_G(gameState).R47Schloss[i], 124 + i * 30, 96 - i, false, true);
+		_G(det)->plot_static_details(0, 0, _G(gameState).R47Schloss[i], _G(gameState).R47Schloss[i]);
 	}
 
 	for (int16 i = 0; i < 10; i++)
diff --git a/engines/chewy/rooms/room48.cpp b/engines/chewy/rooms/room48.cpp
index 1b4384f7a3c..8568ee4d3b7 100644
--- a/engines/chewy/rooms/room48.cpp
+++ b/engines/chewy/rooms/room48.cpp
@@ -31,8 +31,8 @@ namespace Rooms {
 
 void Room48::entry() {
 	_G(mouseLeftClick) = false;
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	showCur();
 	calc_pic();
 	_G(SetUpScreenFunc) = setup_func;
@@ -51,21 +51,21 @@ bool Room48::timer(int16 t_nr, int16 ani_nr) {
 void Room48::calc_pic() {
 	for (int16 i = 0; i < 2; i++) {
 		_G(atds)->setControlBit(312 + i, ATS_ACTIVE_BIT, ATS_DATA);
-		_G(spieler).R48Auswahl[3 + i] = 0;
+		_G(gameState).R48Auswahl[3 + i] = 0;
 	}
 
-	_G(spieler).R48Auswahl[0] = 1;
-	_G(spieler).R48Auswahl[1] = 1;
-	_G(spieler).R48Auswahl[2] = 1;
+	_G(gameState).R48Auswahl[0] = 1;
+	_G(gameState).R48Auswahl[1] = 1;
+	_G(gameState).R48Auswahl[2] = 1;
 
 	if (_G(obj)->checkInventory(VCARD_INV)) {
-		_G(spieler).R48Auswahl[3] = 1;
+		_G(gameState).R48Auswahl[3] = 1;
 		_G(atds)->delControlBit(312, ATS_ACTIVE_BIT, ATS_DATA);
 		_G(det)->showStaticSpr(4);
 	}
 
 	if (_G(obj)->checkInventory(KAPPE_INV)) {
-		_G(spieler).R48Auswahl[4] = 1;
+		_G(gameState).R48Auswahl[4] = 1;
 		_G(atds)->delControlBit(313, ATS_ACTIVE_BIT, ATS_DATA);
 		_G(det)->showStaticSpr(4);
 	}
@@ -97,7 +97,7 @@ void Room48::setup_func() {
 			const int16 idx = _G(det)->maus_vector(g_events->_mousePos.x, g_events->_mousePos.y);
 
 			if (idx != -1) {
-				if (_G(spieler).R48Auswahl[idx]) {
+				if (_G(gameState).R48Auswahl[idx]) {
 					_G(det)->showStaticSpr(1 + idx);
 
 					if (_G(mouseLeftClick)) {
@@ -141,19 +141,19 @@ void Room48::setup_func() {
 							_G(menu_item) = CUR_WALK;
 							cursorChoice(_G(menu_item));
 							showCur();
-							_G(spieler).R48TaxiEntry = true;
+							_G(gameState).R48TaxiEntry = true;
 							_G(mouseLeftClick) = false;
 							setupScreen(DO_SETUP);
 
 							for (int16 i = 0; i < MAX_PERSON; i++) {
-								if (_G(spieler).R48TaxiPerson[i]) {
-									_G(spieler)._personHide[i] = false;
-									_G(spieler).R48TaxiPerson[i] = false;
+								if (_G(gameState).R48TaxiPerson[i]) {
+									_G(gameState)._personHide[i] = false;
+									_G(gameState).R48TaxiPerson[i] = false;
 								}
 							}
 
-							if (_G(spieler)._personRoomNr[P_HOWARD] == 48) {
-								_G(spieler)._personRoomNr[P_HOWARD] = r_nr;
+							if (_G(gameState)._personRoomNr[P_HOWARD] == 48) {
+								_G(gameState)._personRoomNr[P_HOWARD] = r_nr;
 							}
 							switchRoom(r_nr);
 						}
diff --git a/engines/chewy/rooms/room49.cpp b/engines/chewy/rooms/room49.cpp
index 80705c0ef87..d87cebbcbf4 100644
--- a/engines/chewy/rooms/room49.cpp
+++ b/engines/chewy/rooms/room49.cpp
@@ -39,10 +39,10 @@ void Room49::entry(int16 eib_nr) {
 	_G(zoom_horizont) = 110;
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 3;
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 	_G(SetUpScreenFunc) = setup_func;
 
-	if (!_G(spieler).R49BoyWeg) {
+	if (!_G(gameState).R49BoyWeg) {
 		_G(timer_nr)[0] = _G(room)->set_timer(255, 2);
 	} else {
 		_G(det)->del_static_ani(0);
@@ -51,18 +51,18 @@ void Room49::entry(int16 eib_nr) {
 		_G(det)->del_static_ani(1);
 	}
 
-	_G(spieler).ZoomXy[P_HOWARD][0] = 30;
-	_G(spieler).ZoomXy[P_HOWARD][1] = 30;
+	_G(gameState).ZoomXy[P_HOWARD][0] = 30;
+	_G(gameState).ZoomXy[P_HOWARD][1] = 30;
 	_G(spieler_mi)[P_HOWARD].Mode = true;
 
 	if (!_G(flags).LoadGame) {
-		if (_G(spieler).R48TaxiEntry) {
-			_G(spieler).R48TaxiEntry = false;
+		if (_G(gameState).R48TaxiEntry) {
+			_G(gameState).R48TaxiEntry = false;
 			setPersonPos(527, 76, P_HOWARD, P_LEFT);
 			setPersonPos(491, 98, P_CHEWY, P_LEFT);
 			_G(mouseLeftClick) = false;
-			_G(spieler).scrollx = 320;
-			_G(spieler).scrolly = 0;
+			_G(gameState).scrollx = 320;
+			_G(gameState).scrolly = 0;
 			_G(det)->startDetail(5, 1, ANI_FRONT);
 		} else if (eib_nr == 83) {
 			setPersonPos(377, 78, P_HOWARD, P_LEFT);
@@ -71,12 +71,12 @@ void Room49::entry(int16 eib_nr) {
 }
 
 void Room49::xit(int16 eib_nr) {
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).ScrollxStep = 1;
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 49) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 49) {
 		_G(spieler_mi)[P_HOWARD].Mode = false;
 		if (eib_nr == 80) {
-			_G(spieler)._personRoomNr[P_HOWARD] = 50;
+			_G(gameState)._personRoomNr[P_HOWARD] = 50;
 		} else if (eib_nr == 81) {
 			_G(SetUpScreenFunc) = nullptr;
 			startAadWait(268);
@@ -97,31 +97,31 @@ void Room49::gedAction(int index) {
 }
 
 void Room49::calc_boy_ani() {
-	if (!_G(spieler).R49BoyAniCount) {
-		_G(spieler).R49BoyAniCount = 3;
-		_G(spieler).R49BoyAni = true;
+	if (!_G(gameState).R49BoyAniCount) {
+		_G(gameState).R49BoyAniCount = 3;
+		_G(gameState).R49BoyAni = true;
 		_G(det)->del_static_ani(0);
 	} else {
-		--_G(spieler).R49BoyAniCount;
-		_G(spieler).R49BoyAni = false;
+		--_G(gameState).R49BoyAniCount;
+		_G(gameState).R49BoyAni = false;
 		_G(det)->del_static_ani(1);
 	}
 
-	_G(det)->set_static_ani(_G(spieler).R49BoyAni ? 1 : 0, -1);
-	_G(det)->startDetail(_G(spieler).R49BoyAni ? 1 : 0, 1, ANI_FRONT);
+	_G(det)->set_static_ani(_G(gameState).R49BoyAni ? 1 : 0, -1);
+	_G(det)->startDetail(_G(gameState).R49BoyAni ? 1 : 0, 1, ANI_FRONT);
 	_G(uhr)->resetTimer(_G(timer_nr)[0], 0);
 }
 
 void Room49::calc_boy() {
-	if (!_G(spieler).R49WegFrei) {
+	if (!_G(gameState).R49WegFrei) {
 		hideCur();
 		_G(room)->set_timer_status(255, TIMER_STOP);
 		_G(uhr)->resetTimer(_G(timer_nr)[0], 0);
 		stopPerson(P_CHEWY);
 		stopPerson(P_HOWARD);
 		_G(person_end_phase)[P_CHEWY] = P_LEFT;
-		_G(det)->stop_detail(_G(spieler).R49BoyAni ? 1 : 0);
-		_G(det)->del_static_ani(_G(spieler).R49BoyAni ? 1 : 0);
+		_G(det)->stop_detail(_G(gameState).R49BoyAni ? 1 : 0);
+		_G(det)->del_static_ani(_G(gameState).R49BoyAni ? 1 : 0);
 		_G(det)->set_static_ani(2, -1);
 
 		_G(SetUpScreenFunc) = nullptr;
@@ -134,14 +134,14 @@ void Room49::calc_boy() {
 		startSetAILWait(3, 1, ANI_FRONT);
 
 		_G(det)->showStaticSpr(9);
-		_G(spieler)._personHide[P_HOWARD] = true;
+		_G(gameState)._personHide[P_HOWARD] = true;
 		startSetAILWait(8, 1, ANI_FRONT);
-		_G(spieler)._personHide[P_HOWARD] = false;
+		_G(gameState)._personHide[P_HOWARD] = false;
 		_G(det)->hideStaticSpr(9);
 		startSetAILWait(4, 1, ANI_GO);
 
 		_G(SetUpScreenFunc) = setup_func;
-		_G(det)->set_static_ani(_G(spieler).R49BoyAni ? 1 : 0, -1);
+		_G(det)->set_static_ani(_G(gameState).R49BoyAni ? 1 : 0, -1);
 		_G(room)->set_timer_status(255, TIMER_START);
 		showCur();
 	}
@@ -154,10 +154,10 @@ int16 Room49::use_boy() {
 		action_ret = true;
 		hideCur();
 		autoMove(3, P_CHEWY);
-		delInventory(_G(spieler).AkInvent);
+		delInventory(_G(gameState).AkInvent);
 		talk_boy(265);
-		_G(spieler).R49WegFrei = true;
-		_G(spieler).room_e_obj[80].Attribut = EXIT_TOP;
+		_G(gameState).R49WegFrei = true;
+		_G(gameState).room_e_obj[80].Attribut = EXIT_TOP;
 		showCur();
 
 	} else if (isCurInventory(CIGAR_INV)) {
@@ -170,7 +170,7 @@ int16 Room49::use_boy() {
 
 void Room49::use_boy_cigar() {
 	hideCur();
-	delInventory(_G(spieler).AkInvent);
+	delInventory(_G(gameState).AkInvent);
 	talk_boy(263);
 	_G(SetUpScreenFunc) = nullptr;
 	autoMove(5, P_CHEWY);
@@ -187,8 +187,8 @@ void Room49::use_boy_cigar() {
 	
 	_G(room)->set_timer_status(255, TIMER_STOP);
 	_G(uhr)->resetTimer(_G(timer_nr)[0], 0);
-	_G(det)->del_static_ani(_G(spieler).R49BoyAni ? 1 : 0);
-	_G(det)->stop_detail(_G(spieler).R49BoyAni ? 1 : 0);
+	_G(det)->del_static_ani(_G(gameState).R49BoyAni ? 1 : 0);
+	_G(det)->stop_detail(_G(gameState).R49BoyAni ? 1 : 0);
 
 	_G(flags).NoScroll = false;
 	setPersonSpr(P_RIGHT, P_CHEWY);
@@ -200,37 +200,37 @@ void Room49::use_boy_cigar() {
 	_G(atds)->setControlBit(318, ATS_ACTIVE_BIT, ATS_DATA);
 
 	_G(SetUpScreenFunc) = setup_func;
-	_G(spieler).R49BoyWeg = true;
+	_G(gameState).R49BoyWeg = true;
 	showCur();
 }
 
 void Room49::talk_boy() {
-	if (!_G(spieler).R49BoyWeg) {
+	if (!_G(gameState).R49BoyWeg) {
 		autoMove(3, P_CHEWY);
-		talk_boy(266 + (_G(spieler).R49WegFrei ? 1 : 0));
+		talk_boy(266 + (_G(gameState).R49WegFrei ? 1 : 0));
 	}
 }
 
 void Room49::talk_boy(int16 aad_nr) {
-	if (!_G(spieler).R49BoyWeg) {
+	if (!_G(gameState).R49BoyWeg) {
 		_G(room)->set_timer_status(255, TIMER_STOP);
 		_G(uhr)->resetTimer(_G(timer_nr)[0], 0);
-		_G(det)->stop_detail(_G(spieler).R49BoyAni ? 1 : 0);
+		_G(det)->stop_detail(_G(gameState).R49BoyAni ? 1 : 0);
 
-		_G(det)->set_static_ani(_G(spieler).R49BoyAni ? 1 : 0, -1);
+		_G(det)->set_static_ani(_G(gameState).R49BoyAni ? 1 : 0, -1);
 		_G(det)->set_static_ani(2, -1);
 		_G(SetUpScreenFunc) = nullptr;
 		stopPerson(P_HOWARD);
 		startAadWait(aad_nr);
 		_G(SetUpScreenFunc) = setup_func;
 		_G(det)->del_static_ani(2);
-		_G(det)->set_static_ani(_G(spieler).R49BoyAni ? 1 : 0, -1);
+		_G(det)->set_static_ani(_G(gameState).R49BoyAni ? 1 : 0, -1);
 		_G(room)->set_timer_status(255, TIMER_START);
 	}
 }
 
 void Room49::look_hotel() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 49) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 49) {
 		_G(SetUpScreenFunc) = nullptr;
 		stopPerson(P_HOWARD);
 		startAadWait(261);
@@ -241,21 +241,21 @@ void Room49::look_hotel() {
 int16 Room49::use_taxi() {
 	int16 action_ret = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_ret = true;
 		hideCur();
 		startAniBlock(2, ABLOCK34);
 		_G(det)->showStaticSpr(7);
 		autoMove(2, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
-		_G(spieler).R48TaxiPerson[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
+		_G(gameState).R48TaxiPerson[P_CHEWY] = true;
 
-		if (_G(spieler)._personRoomNr[P_HOWARD] == 49) {
+		if (_G(gameState)._personRoomNr[P_HOWARD] == 49) {
 			goAutoXy(507, 74, P_HOWARD, ANI_WAIT);
 			goAutoXy(490, 58, P_HOWARD, ANI_WAIT);
-			_G(spieler)._personHide[P_HOWARD] = true;
-			_G(spieler).R48TaxiPerson[P_HOWARD] = true;
-			_G(spieler)._personRoomNr[P_HOWARD] = 48;
+			_G(gameState)._personHide[P_HOWARD] = true;
+			_G(gameState).R48TaxiPerson[P_HOWARD] = true;
+			_G(gameState)._personRoomNr[P_HOWARD] = 48;
 		}
 
 		_G(det)->hideStaticSpr(7);
@@ -268,7 +268,7 @@ int16 Room49::use_taxi() {
 }
 
 void Room49::setup_func() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 49) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 49) {
 		calc_person_look();
 		const int16 ch_x = _G(spieler_vector)[P_CHEWY].Xypos[0];
 
diff --git a/engines/chewy/rooms/room50.cpp b/engines/chewy/rooms/room50.cpp
index b96380dd2ef..0e7a5d34909 100644
--- a/engines/chewy/rooms/room50.cpp
+++ b/engines/chewy/rooms/room50.cpp
@@ -37,9 +37,9 @@ bool Room50::_wasser;
 
 
 void Room50::entry(int16 eib_nr) {
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 
-	if (_G(spieler).flags32_10) {
+	if (_G(gameState).flags32_10) {
 		hideCur();
 		stop_page();
 		_G(mouseLeftClick) = false;
@@ -54,13 +54,13 @@ void Room50::entry(int16 eib_nr) {
 		switchRoom(51);
 
 	} else {
-		if (_G(spieler).R50Zigarre) {
+		if (_G(gameState).R50Zigarre) {
 			stop_cigar();
 		} else {
 			_G(det)->startDetail(0, 255, ANI_FRONT);
 		}
 
-		if (!_G(spieler).R50KeyOK) {
+		if (!_G(gameState).R50KeyOK) {
 			_G(timer_nr)[0] = _G(room)->set_timer(1, 8);
 			_wasser = false;
 		} else {
@@ -69,7 +69,7 @@ void Room50::entry(int16 eib_nr) {
 
 		_G(SetUpScreenFunc) = setup_func;
 
-		if (_G(spieler)._personRoomNr[P_HOWARD] == 50) {
+		if (_G(gameState)._personRoomNr[P_HOWARD] == 50) {
 			_G(spieler_mi)[P_HOWARD].Mode = true;
 
 			if (!_G(flags).LoadGame) {
@@ -83,13 +83,13 @@ void Room50::entry(int16 eib_nr) {
 }
 
 void Room50::xit(int16 eib_nr) {
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).ScrollxStep = 1;
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 50) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 50) {
 		if (eib_nr == 83)
-			_G(spieler)._personRoomNr[P_HOWARD] = 49;
+			_G(gameState)._personRoomNr[P_HOWARD] = 49;
 		else
-			_G(spieler)._personRoomNr[P_HOWARD] = 51;
+			_G(gameState)._personRoomNr[P_HOWARD] = 51;
 
 		_G(spieler_mi)[P_HOWARD].Mode = false;
 	}
@@ -112,7 +112,7 @@ void Room50::stop_cigar() {
 	_G(det)->del_static_ani(0);
 	_G(atds)->set_ats_str(328, 1, ATS_DATA);
 	_G(det)->stop_detail(0);
-	_G(spieler).R50Zigarre = true;
+	_G(gameState).R50Zigarre = true;
 }
 
 void Room50::calc_wasser() {
@@ -139,7 +139,7 @@ void Room50::calc_treppe() {
 	if (!_G(flags).AutoAniPlay) {
 		_G(flags).AutoAniPlay = true;
 
-		if (!_G(spieler).R50KeyOK) {
+		if (!_G(gameState).R50KeyOK) {
 			hideCur();
 			stopPerson(P_CHEWY);
 			_G(room)->set_timer_status(1, TIMER_STOP);
@@ -163,13 +163,13 @@ int16 Room50::use_gutschein() {
 
 	if (isCurInventory(HOTEL_INV)) {
 		action_ret = true;
-		if (!_G(spieler).R50KeyOK) {
+		if (!_G(gameState).R50KeyOK) {
 			hideCur();
 			autoMove(3, P_CHEWY);
 			_G(room)->set_timer_status(1, TIMER_STOP);
 			_wasser = false;
 			stop_page();
-			delInventory(_G(spieler).AkInvent);
+			delInventory(_G(gameState).AkInvent);
 			startAniBlock(2, ABLOCK36);
 			aad_page(274, 8);
 		} else {
@@ -186,7 +186,7 @@ int16 Room50::use_gum() {
 	if (isCurInventory(GUM_INV)) {
 		action_ret = true;
 		hideCur();
-		_G(spieler).R50KeyOK = true;
+		_G(gameState).R50KeyOK = true;
 		_G(room)->set_timer_status(1, TIMER_STOP);
 		_wasser = false;
 		stop_page();
@@ -199,7 +199,7 @@ int16 Room50::use_gum() {
 		goAutoXy(112, 57, P_HOWARD, ANI_WAIT);
 
 		setPersonSpr(P_LEFT, P_HOWARD);
-		delInventory(_G(spieler).AkInvent);
+		delInventory(_G(gameState).AkInvent);
 		hide_person();
 		startSetAILWait(2, 1, ANI_FRONT);
 		_G(det)->showStaticSpr(4);
@@ -222,7 +222,7 @@ int16 Room50::use_gum() {
 		inventory_2_cur(KEY_INV);
 		_G(atds)->set_ats_str(323, 1, ATS_DATA);
 		_G(atds)->set_ats_str(327, 1, ATS_DATA);
-		_G(spieler).room_e_obj[84].Attribut = EXIT_TOP;
+		_G(gameState).room_e_obj[84].Attribut = EXIT_TOP;
 		showCur();
 	}
 
@@ -240,7 +240,7 @@ void Room50::aad_page(int16 aad_nr, int16 ani_nr) {
 	startSetAILWait(6, 1, ANI_BACK);
 	go_page();
 
-	if (!_G(spieler).R50KeyOK)
+	if (!_G(gameState).R50KeyOK)
 		_G(room)->set_timer_status(1, TIMER_START);
 
 	showCur();
@@ -252,7 +252,7 @@ void Room50::setup_func() {
 		go_page();
 	}
 
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 50) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 50) {
 		calc_person_look();
 		const int16 ch_x = _G(spieler_vector)[P_CHEWY].Xypos[0];
 
diff --git a/engines/chewy/rooms/room51.cpp b/engines/chewy/rooms/room51.cpp
index 42d65fbed33..d3c1084174b 100644
--- a/engines/chewy/rooms/room51.cpp
+++ b/engines/chewy/rooms/room51.cpp
@@ -51,12 +51,12 @@ void Room51::entry() {
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 4;
 
-	if (_G(spieler).flags32_10) {
+	if (_G(gameState).flags32_10) {
 		_G(atds)->enableEvents(false);
-		_G(spieler)._personHide[P_CHEWY] = true;
-		_G(spieler)._personHide[P_HOWARD] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_HOWARD] = true;
 		_G(mouseLeftClick) = false;
-		_G(spieler).scrollx = 0;
+		_G(gameState).scrollx = 0;
 		setPersonPos(34, 120, P_HOWARD, P_RIGHT);
 		setPersonPos(234, 69, P_CHEWY, P_LEFT);
 		_G(SetUpScreenFunc) = setup_func;
@@ -78,17 +78,17 @@ void Room51::entry() {
 		for (int i = 0; i < 2; i++)
 			_G(det)->startDetail(3 + i, 1, ANI_FRONT);
 
-		if (_G(spieler)._personRoomNr[P_HOWARD] == 51) {
-			_G(spieler).ZoomXy[P_HOWARD][0] = 40;
-			_G(spieler).ZoomXy[P_HOWARD][1] = 30;
+		if (_G(gameState)._personRoomNr[P_HOWARD] == 51) {
+			_G(gameState).ZoomXy[P_HOWARD][0] = 40;
+			_G(gameState).ZoomXy[P_HOWARD][1] = 30;
 
 			if (!_G(flags).LoadGame) {
 				setPersonPos(88, 93, P_HOWARD, P_RIGHT);
 			}
 
-			if (!_G(spieler).R51FirstEntry) {
+			if (!_G(gameState).R51FirstEntry) {
 				hideCur();
-				_G(spieler).R51FirstEntry = true;
+				_G(gameState).R51FirstEntry = true;
 				setPersonSpr(P_LEFT, P_CHEWY);
 				startAadWait(283);
 				showCur();
@@ -103,20 +103,20 @@ void Room51::entry() {
 void Room51::xit(int16 eib_nr) {
 	_G(atds)->enableEvents(true);
 
-	if (_G(spieler).flags32_10) {
+	if (_G(gameState).flags32_10) {
 		_G(flags).MainInput = true;
-		_G(spieler)._personHide[P_CHEWY] = false;
-		_G(spieler)._personHide[P_HOWARD] = false;
-		_G(spieler)._personRoomNr[P_HOWARD] = 91;
+		_G(gameState)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_HOWARD] = false;
+		_G(gameState)._personRoomNr[P_HOWARD] = 91;
 		_G(menu_item) = CUR_WALK;
 		cursorChoice(_G(menu_item));
 		showCur();
 
-	} else if (_G(spieler)._personRoomNr[P_HOWARD] == 51) {
+	} else if (_G(gameState)._personRoomNr[P_HOWARD] == 51) {
 		if (eib_nr == 85) {
-			_G(spieler)._personRoomNr[P_HOWARD] = 50;
+			_G(gameState)._personRoomNr[P_HOWARD] = 50;
 		} else {
-			_G(spieler)._personRoomNr[P_HOWARD] = 52;
+			_G(gameState)._personRoomNr[P_HOWARD] = 52;
 		}
 
 		_G(spieler_mi)[P_HOWARD].Mode = false;
@@ -124,7 +124,7 @@ void Room51::xit(int16 eib_nr) {
 }
 
 bool Room51::timer(int16 t_nr, int16 ani_nr) {
-	if (_G(spieler).flags32_10)
+	if (_G(gameState).flags32_10)
 		timer_action(t_nr, _G(room)->_roomTimer._objNr[ani_nr]);
 	else
 		return true;
@@ -133,7 +133,7 @@ bool Room51::timer(int16 t_nr, int16 ani_nr) {
 }
 
 void Room51::setup_func() {
-	if (_G(spieler).flags32_10) {
+	if (_G(gameState).flags32_10) {
 		_tmpx = g_events->_mousePos.x;
 		_tmpy = g_events->_mousePos.y;
 		if (_tmpx > 215)
@@ -182,7 +182,7 @@ void Room51::setup_func() {
 				break;
 			}
 		}
-	} else if (_G(spieler)._personRoomNr[P_HOWARD] == 51) {
+	} else if (_G(gameState)._personRoomNr[P_HOWARD] == 51) {
 		calc_person_look();
 		const int16 ch_y = _G(spieler_vector)[P_CHEWY].Xypos[1];
 
@@ -218,11 +218,11 @@ int16 Room51::use_door(int16 txt_nr) {
 			_G(SetUpScreenFunc) = nullptr;
 			_G(det)->showStaticSpr(0);
 
-			if (!_G(spieler).R51HotelRoom) {
+			if (!_G(gameState).R51HotelRoom) {
 				autoMove(11, P_HOWARD);
 				setPersonSpr(P_LEFT, P_HOWARD);
-				_G(spieler).R51HotelRoom = true;
-				_G(spieler).room_e_obj[86].Attribut = EXIT_LEFT;
+				_G(gameState).R51HotelRoom = true;
+				_G(gameState).room_e_obj[86].Attribut = EXIT_LEFT;
 				startAadWait(285);
 				_G(atds)->set_ats_str(329, 1, ATS_DATA);
 				_G(SetUpScreenFunc) = setup_func;
@@ -236,14 +236,14 @@ int16 Room51::use_door(int16 txt_nr) {
 		case 330:
 			autoMove(9, P_CHEWY);
 
-			if (!_G(spieler).R51KillerWeg) {
+			if (!_G(gameState).R51KillerWeg) {
 				g_engine->_sound->playSound(2, 0);
 				g_engine->_sound->playSound(2);
 				_G(det)->showStaticSpr(1);
 				startSetAILWait(2, 1, ANI_FRONT);
 				_G(det)->startDetail(5, 255, ANI_FRONT);
 
-				if (!_G(spieler).R52HotDogOk) {
+				if (!_G(gameState).R52HotDogOk) {
 					startAadWait(287);
 					autoMove(12, P_CHEWY);
 					_G(det)->stop_detail(5);
@@ -252,7 +252,7 @@ int16 Room51::use_door(int16 txt_nr) {
 					g_engine->_sound->stopSound(0);
 					startAadWait(284);
 				} else {
-					_G(spieler).R51KillerWeg = true;
+					_G(gameState).R51KillerWeg = true;
 					startAadWait(290);
 					g_engine->_sound->stopSound(0);
 					_G(out)->ausblenden(1);
@@ -300,7 +300,7 @@ int16 Room51::use_door(int16 txt_nr) {
 		case 333:
 			autoMove(4, P_CHEWY);
 
-			switch (_G(spieler).R51DoorCount) {
+			switch (_G(gameState).R51DoorCount) {
 			case 0:
 				_G(det)->showStaticSpr(3);
 				startAadWait(278);
@@ -310,7 +310,7 @@ int16 Room51::use_door(int16 txt_nr) {
 
 				_G(det)->showStaticSpr(14);
 				startAadWait(279);
-				++_G(spieler).R51DoorCount;
+				++_G(gameState).R51DoorCount;
 				_G(obj)->show_sib(SIB_FLASCHE_R51);
 				_G(obj)->calc_rsi_flip_flop(SIB_FLASCHE_R51);
 				_G(det)->hideStaticSpr(3);
@@ -320,7 +320,7 @@ int16 Room51::use_door(int16 txt_nr) {
 				_G(det)->showStaticSpr(3);
 				startAadWait(280);
 				startSetAILWait(1, 1, ANI_FRONT);
-				++_G(spieler).R51DoorCount;
+				++_G(gameState).R51DoorCount;
 				_G(obj)->show_sib(SIB_KAPPE_R51);
 				_G(obj)->calc_rsi_flip_flop(SIB_KAPPE_R51);
 				_G(det)->hideStaticSpr(3);
@@ -329,7 +329,7 @@ int16 Room51::use_door(int16 txt_nr) {
 
 			default:
 				startAadWait(281);
-				if (_G(spieler)._personRoomNr[P_HOWARD] == 51)
+				if (_G(gameState)._personRoomNr[P_HOWARD] == 51)
 					startAadWait(282);
 				break;
 			}
diff --git a/engines/chewy/rooms/room52.cpp b/engines/chewy/rooms/room52.cpp
index c0ab54a7333..017ba680a22 100644
--- a/engines/chewy/rooms/room52.cpp
+++ b/engines/chewy/rooms/room52.cpp
@@ -33,7 +33,7 @@ void Room52::entry() {
 	_G(SetUpScreenFunc) = setup_func;
 	_G(spieler_mi)[P_HOWARD].Mode = true;
 
-	if (_G(spieler).R52HotDogOk && !_G(spieler).R52KakerWeg) {
+	if (_G(gameState).R52HotDogOk && !_G(gameState).R52KakerWeg) {
 		plot_armee(0);
 		g_engine->_sound->playSound(0, 0);
 		g_engine->_sound->playSound(0);
@@ -41,24 +41,24 @@ void Room52::entry() {
 		g_engine->_sound->stopSound(0);
 	}
 
-	if (_G(spieler).R52KakerWeg)
+	if (_G(gameState).R52KakerWeg)
 		_G(det)->stop_detail(0);
 
 	if (!_G(flags).LoadGame) {
 		_G(det)->showStaticSpr(4);
-		_G(spieler).R52TuerAuf = true;
+		_G(gameState).R52TuerAuf = true;
 		setPersonPos(20, 50, P_HOWARD, P_LEFT);
 		setPersonPos(35, 74, P_CHEWY, P_RIGHT);
 		autoMove(2, P_CHEWY);
-		_G(spieler).R52TuerAuf = false;
+		_G(gameState).R52TuerAuf = false;
 		_G(det)->hideStaticSpr(4);
 		check_shad(2, 1);
 	}
 }
 
 void Room52::xit() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 52) {
-		_G(spieler)._personRoomNr[P_HOWARD] = 51;
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 52) {
+		_G(gameState)._personRoomNr[P_HOWARD] = 51;
 		_G(spieler_mi)[P_HOWARD].Mode = false;
 	}
 }
@@ -77,9 +77,9 @@ int16 Room52::use_hot_dog() {
 		autoMove(3, P_CHEWY);
 		start_spz_wait(CH_ROCK_GET1, 1, false, P_CHEWY);
 		_G(det)->showStaticSpr(0);
-		delInventory(_G(spieler).AkInvent);
+		delInventory(_G(gameState).AkInvent);
 		autoMove(4, P_CHEWY);
-		_G(spieler).R52HotDogOk = true;
+		_G(gameState).R52HotDogOk = true;
 		plot_armee(20);
 		g_engine->_sound->playSound(0, 0);
 		g_engine->_sound->playSound(0);
@@ -91,7 +91,7 @@ int16 Room52::use_hot_dog() {
 	} else if (isCurInventory(KILLER_INV)) {
 		action_ret = true;
 		autoMove(5, P_CHEWY);
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		startSetAILWait(7, 1, ANI_FRONT);
 		g_engine->_sound->playSound(7, 0);
 		g_engine->_sound->playSound(7);
@@ -107,11 +107,11 @@ int16 Room52::use_hot_dog() {
 		_G(det)->stop_detail(8);
 		startSetAILWait(7, 1, ANI_BACK);
 		g_engine->_sound->stopSound(0);
-		_G(spieler)._personHide[P_CHEWY] = false;
+		_G(gameState)._personHide[P_CHEWY] = false;
 		_G(atds)->setControlBit(341, ATS_ACTIVE_BIT, ATS_DATA);
 		startAadWait(303);
 		_G(atds)->set_ats_str(KILLER_INV, 1, INV_ATS_DATA);
-		_G(spieler).R52KakerWeg = true;
+		_G(gameState).R52KakerWeg = true;
 	}
 
 	showCur();
@@ -126,8 +126,8 @@ void Room52::plot_armee(int16 frame) {
 }
 
 void Room52::kaker_platt() {
-	if (!_G(spieler).R52KakerJoke && _G(spieler).R52HotDogOk && !_G(spieler).R52KakerWeg && !_G(flags).ExitMov) {
-		_G(spieler).R52KakerJoke = true;
+	if (!_G(gameState).R52KakerJoke && _G(gameState).R52HotDogOk && !_G(gameState).R52KakerWeg && !_G(flags).ExitMov) {
+		_G(gameState).R52KakerJoke = true;
 		stopPerson(P_CHEWY);
 		hideCur();
 		startAadWait(289);
@@ -136,7 +136,7 @@ void Room52::kaker_platt() {
 }
 
 void Room52::setup_func() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 52) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 52) {
 		calc_person_look();
 		const int16 y = (_G(spieler_vector)[P_CHEWY].Xypos[1] < 97) ? 44 : 87;
 		goAutoXy(1, y, P_HOWARD, ANI_GO);
diff --git a/engines/chewy/rooms/room53.cpp b/engines/chewy/rooms/room53.cpp
index cc2a5029a88..b870500af3d 100644
--- a/engines/chewy/rooms/room53.cpp
+++ b/engines/chewy/rooms/room53.cpp
@@ -55,7 +55,7 @@ void Room53::man_go() {
 	_G(det)->del_static_ani(1);
 	startSetAILWait(5, 1, ANI_FRONT);
 	_G(atds)->setControlBit(319, ATS_ACTIVE_BIT, ATS_DATA);
-	if (!_G(spieler).R53Visit)
+	if (!_G(gameState).R53Visit)
 		_G(obj)->show_sib(SIB_VISIT_R53);
 }
 
@@ -66,7 +66,7 @@ void Room53::talk_man() {
 	_G(det)->del_static_ani(1);
 	startSetAILWait(2, 1, ANI_FRONT);
 	_G(det)->set_static_ani(3, -1);
-	startAadWait(269 + (_G(spieler).R53Kostuem ? 1 : 0));
+	startAadWait(269 + (_G(gameState).R53Kostuem ? 1 : 0));
 	_G(det)->del_static_ani(3);
 	startSetAILWait(4, 1, ANI_FRONT);
 	man_go();
@@ -79,8 +79,8 @@ int16 Room53::use_man() {
 	if (isCurInventory(BESTELL_INV)) {
 		action_ret = true;
 		hideCur();
-		_G(spieler).R53Kostuem = true;
-		delInventory(_G(spieler).AkInvent);
+		_G(gameState).R53Kostuem = true;
+		delInventory(_G(gameState).AkInvent);
 		autoMove(2, P_CHEWY);
 		startAadWait(271);
 		_G(room)->set_timer_status(1, TIMER_STOP);
diff --git a/engines/chewy/rooms/room54.cpp b/engines/chewy/rooms/room54.cpp
index c4206a036ae..69ceebea235 100644
--- a/engines/chewy/rooms/room54.cpp
+++ b/engines/chewy/rooms/room54.cpp
@@ -30,75 +30,75 @@ namespace Chewy {
 namespace Rooms {
 
 void Room54::entry(int16 eib_nr) {
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 	_G(SetUpScreenFunc) = setup_func;
 	_G(zoom_horizont) = 106;
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 3;
-	_G(spieler).ZoomXy[P_HOWARD][0] = 30;
-	_G(spieler).ZoomXy[P_HOWARD][1] = 66;
+	_G(gameState).ZoomXy[P_HOWARD][0] = 30;
+	_G(gameState).ZoomXy[P_HOWARD][1] = 66;
 
-	if (_G(spieler).R54FputzerWeg)
+	if (_G(gameState).R54FputzerWeg)
 		_G(det)->showStaticSpr(9);
 
 	_G(spieler_mi)[P_HOWARD].Mode = true;
 
 	if (!_G(flags).LoadGame) {
-		if (_G(spieler).R48TaxiEntry) {
-			_G(spieler).R48TaxiEntry = false;
+		if (_G(gameState).R48TaxiEntry) {
+			_G(gameState).R48TaxiEntry = false;
 
-			if (_G(spieler)._personRoomNr[P_HOWARD] == 54) {
-				_G(spieler).R54HowardVorne = 0;
+			if (_G(gameState)._personRoomNr[P_HOWARD] == 54) {
+				_G(gameState).R54HowardVorne = 0;
 				setPersonPos(290, 61, P_HOWARD, P_RIGHT);
 			}
 
 			setPersonPos(300, 80, P_CHEWY, P_LEFT);
 			_G(mouseLeftClick) = false;
-			_G(spieler).scrollx = 134;
-			_G(spieler).scrolly = 0;
+			_G(gameState).scrollx = 134;
+			_G(gameState).scrolly = 0;
 
-		} else if (_G(spieler).R55Location) {
+		} else if (_G(gameState).R55Location) {
 			aufzug_ab();
 
-		} else if (eib_nr == 90 || _G(spieler).R55ExitDia) {
-			if (_G(spieler)._personRoomNr[P_HOWARD] == 54) {
-				_G(spieler).R54HowardVorne = 0;
+		} else if (eib_nr == 90 || _G(gameState).R55ExitDia) {
+			if (_G(gameState)._personRoomNr[P_HOWARD] == 54) {
+				_G(gameState).R54HowardVorne = 0;
 				setPersonPos(212, 61, P_HOWARD, P_RIGHT);
 			}
 
-			_G(spieler).scrollx = 66;
+			_G(gameState).scrollx = 66;
 			setPersonPos(241, 85, P_CHEWY, P_LEFT);
 		}
 
-		if (_G(spieler).R55ExitDia) {
-			startAadWait(_G(spieler).R55ExitDia);
+		if (_G(gameState).R55ExitDia) {
+			startAadWait(_G(gameState).R55ExitDia);
 			showCur();
-			_G(spieler).R55ExitDia = false;
+			_G(gameState).R55ExitDia = false;
 		}
 
-		if (_G(spieler).R55R54First) {
-			_G(spieler).R55R54First = false;
+		if (_G(gameState).R55R54First) {
+			_G(gameState).R55R54First = false;
 		}
 	}
 }
 
 void Room54::xit(int16 eib_nr) {
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).ScrollxStep = 1;
 
-	if (eib_nr == 89 && _G(spieler)._personRoomNr[P_HOWARD] == 54) {
-		_G(spieler)._personRoomNr[P_HOWARD] = 55;
+	if (eib_nr == 89 && _G(gameState)._personRoomNr[P_HOWARD] == 54) {
+		_G(gameState)._personRoomNr[P_HOWARD] = 55;
 		_G(spieler_mi)[P_HOWARD].Mode = false;
 	}
 }
 
 void Room54::setup_func() {
-	if (_G(spieler)._personRoomNr[P_HOWARD] == 54) {
+	if (_G(gameState)._personRoomNr[P_HOWARD] == 54) {
 		calc_person_look();
 
-		if (_G(spieler).R54HowardVorne != 255) {
+		if (_G(gameState).R54HowardVorne != 255) {
 			const int16 ch_x = _G(spieler_vector)[P_CHEWY].Xypos[0];
 			int16 x, y;
-			if (_G(spieler).R54HowardVorne) {
+			if (_G(gameState).R54HowardVorne) {
 				if (ch_x < 218) {
 					x = 150;
 					y = 113;
@@ -126,13 +126,13 @@ void Room54::setup_func() {
 int16 Room54::use_schalter() {
 	int16 action_ret = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		hideCur();
 		action_ret = true;
 
-		if (!_G(spieler).R54FputzerWeg) {
+		if (!_G(gameState).R54FputzerWeg) {
 			autoMove(1, P_CHEWY);
-			_G(spieler).R54HowardVorne = 255;
+			_G(gameState).R54HowardVorne = 255;
 			goAutoXy(127, 76, P_HOWARD, ANI_WAIT);
 			goAutoXy(14, 72, P_HOWARD, ANI_GO);
 			start_spz_wait(CH_ROCK_GET2, 1, false, P_CHEWY);
@@ -144,12 +144,12 @@ int16 Room54::use_schalter() {
 
 			startSetAILWait(1, 1, ANI_FRONT);
 			_G(det)->startDetail(3, 255, ANI_FRONT);
-			startAadWait(292 + _G(spieler).R54LiftCount);
+			startAadWait(292 + _G(gameState).R54LiftCount);
 			_G(det)->stop_detail(3);
-			++_G(spieler).R54LiftCount;
+			++_G(gameState).R54LiftCount;
 
 			int16 aad_nr;
-			if (_G(spieler).R54LiftCount < 3) {
+			if (_G(gameState).R54LiftCount < 3) {
 				startSetAILWait(2, 1, ANI_FRONT);
 				_G(det)->hideStaticSpr(0);
 				g_engine->_sound->stopSound(0);
@@ -164,14 +164,14 @@ int16 Room54::use_schalter() {
 				_G(det)->showStaticSpr(9);
 				startSetAILWait(4, 1, ANI_FRONT);
 				aad_nr = 296;
-				_G(spieler).R54FputzerWeg = true;
+				_G(gameState).R54FputzerWeg = true;
 				_G(atds)->delControlBit(345, ATS_ACTIVE_BIT, ATS_DATA);
 				_G(atds)->set_ats_str(349, 1, ATS_DATA);
 				_G(atds)->set_ats_str(351, 1, ATS_DATA);
 			}
 
 			startAadWait(aad_nr);
-			_G(spieler).R54HowardVorne = 0;
+			_G(gameState).R54HowardVorne = 0;
 
 		} else {
 			startAadWait(297);
@@ -186,17 +186,17 @@ int16 Room54::use_schalter() {
 void Room54::talk_verkauf() {
 	hideCur();
 
-	if (!_G(spieler).R54HotDogOk) {
-		if (_G(spieler).R45MagOk) {
-			if (_G(spieler).AkInvent == DOLLAR175_INV)
+	if (!_G(gameState).R54HotDogOk) {
+		if (_G(gameState).R45MagOk) {
+			if (_G(gameState).AkInvent == DOLLAR175_INV)
 				delInventory(DOLLAR175_INV);
 			else
 				remove_inventory(DOLLAR175_INV);
 		}
 
-		_G(spieler).R54HotDogOk = true;
+		_G(gameState).R54HotDogOk = true;
 		autoMove(3, P_CHEWY);
-		_G(spieler).R54HowardVorne = 1;
+		_G(gameState).R54HowardVorne = 1;
 		startAadWait(299);
 		_G(room)->set_timer_status(6, TIMER_STOP);
 		_G(det)->del_static_ani(6);
@@ -214,7 +214,7 @@ void Room54::talk_verkauf() {
 		_G(det)->set_static_ani(6, -1);
 		autoMove(4, P_CHEWY);
 
-		start_aad(_G(spieler).R45MagOk ? 312 : 578, -1);
+		start_aad(_G(gameState).R45MagOk ? 312 : 578, -1);
 		_G(obj)->addInventory(BURGER_INV, &_G(room_blk));
 		inventory_2_cur(BURGER_INV);
 	} else {
@@ -228,21 +228,21 @@ int16 Room54::use_zelle() {
 	int16 action_ret = false;
 	hideCur();
 
-	if (_G(spieler).inv_cur) {
+	if (_G(gameState).inv_cur) {
 		if (isCurInventory(JMKOST_INV)) {
 			action_ret = true;
 
-			if (!_G(spieler).R54Schild) {
+			if (!_G(gameState).R54Schild) {
 				startAadWait(318);
 			} else {
 				autoMove(5, P_CHEWY);
-				_G(spieler).R54HowardVorne = 1;
+				_G(gameState).R54HowardVorne = 1;
 				_G(SetUpScreenFunc) = nullptr;
 				auto_scroll(176, 0);
 				goAutoXy(239, 101, P_HOWARD, ANI_WAIT);
 				flic_cut(FCUT_069);
 
-				delInventory(_G(spieler).AkInvent);
+				delInventory(_G(gameState).AkInvent);
 				invent_2_slot(LEDER_INV);
 				load_chewy_taf(CHEWY_JMANS);
 				_G(zoom_horizont) = 90;
@@ -260,7 +260,7 @@ int16 Room54::use_zelle() {
 	} else {
 		action_ret = true;
 		autoMove(6, P_CHEWY);
-		_G(spieler).R54HowardVorne = 1;
+		_G(gameState).R54HowardVorne = 1;
 		startAadWait(319);
 	}
 
@@ -271,18 +271,18 @@ int16 Room54::use_zelle() {
 int16 Room54::use_azug() {
 	int16 action_ret = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_ret = true;
 		hideCur();
 
-		if (!_G(spieler).R54LiftOk) {
-			if (_G(spieler).R54FputzerWeg) {
+		if (!_G(gameState).R54LiftOk) {
+			if (_G(gameState).R54FputzerWeg) {
 				autoMove(8, P_CHEWY);
-				_G(spieler).R54HowardVorne = 0;
+				_G(gameState).R54HowardVorne = 0;
 				startAadWait(298);
-				_G(spieler)._personHide[P_CHEWY] = true;
+				_G(gameState)._personHide[P_CHEWY] = true;
 				_G(det)->showStaticSpr(12);
-				_G(spieler).R55Location = true;
+				_G(gameState).R55Location = true;
 				_G(SetUpScreenFunc) = nullptr;
 				goAutoXy(91, 62, P_HOWARD, ANI_WAIT);
 				g_engine->_sound->playSound(1, 0);
@@ -299,7 +299,7 @@ int16 Room54::use_azug() {
 					if (!delay) {
 						ch_y -= 3;
 						ay -= 3;
-						delay = _G(spieler).DelaySpeed / 2;
+						delay = _G(gameState).DelaySpeed / 2;
 					} else {
 						--delay;
 					}
@@ -323,7 +323,7 @@ int16 Room54::use_azug() {
 void Room54::aufzug_ab() {
 	setPersonPos(91, 62, P_HOWARD, P_RIGHT);
 	setPersonPos(99, 82, P_CHEWY, P_RIGHT);
-	_G(spieler).scrollx = 0;
+	_G(gameState).scrollx = 0;
 	_G(SetUpScreenFunc) = setup_func;
 	_G(det)->showStaticSpr(12);
 	g_engine->_sound->playSound(1, 0);
@@ -340,7 +340,7 @@ void Room54::aufzug_ab() {
 		if (!delay) {
 			ch_y += 3;
 			ay += 3;
-			delay = _G(spieler).DelaySpeed / 2;
+			delay = _G(gameState).DelaySpeed / 2;
 		} else {
 			--delay;
 		}
@@ -352,33 +352,33 @@ void Room54::aufzug_ab() {
 	g_engine->_sound->stopSound(0);
 	_G(det)->hideStaticSpr(12);
 	setPersonPos(99, 82, P_CHEWY, P_RIGHT);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(mouseLeftClick) = false;
 	stopPerson(P_CHEWY);
-	_G(spieler).R55Location = false;
+	_G(gameState).R55Location = false;
 }
 
 short Room54::use_taxi() {
 	int16 action_ret = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_ret = true;
 		hideCur();
 		autoMove(7, P_CHEWY);
-		_G(spieler).R48TaxiPerson[P_CHEWY] = true;
+		_G(gameState).R48TaxiPerson[P_CHEWY] = true;
 
-		if (_G(spieler)._personRoomNr[P_HOWARD] == 54) {
-			if (_G(spieler).R54HowardVorne) {
-				_G(spieler).R54HowardVorne = 0;
+		if (_G(gameState)._personRoomNr[P_HOWARD] == 54) {
+			if (_G(gameState).R54HowardVorne) {
+				_G(gameState).R54HowardVorne = 0;
 				goAutoXy(290, 61, P_HOWARD, ANI_WAIT);
 			}
 
-			_G(spieler)._personHide[P_HOWARD] = true;
-			_G(spieler).R48TaxiPerson[P_HOWARD] = true;
-			_G(spieler)._personRoomNr[P_HOWARD] = 48;
+			_G(gameState)._personHide[P_HOWARD] = true;
+			_G(gameState).R48TaxiPerson[P_HOWARD] = true;
+			_G(gameState)._personRoomNr[P_HOWARD] = 48;
 		}
 
-		_G(spieler)._personHide[P_CHEWY] = true;
+		_G(gameState)._personHide[P_CHEWY] = true;
 		switchRoom(48);
 	}
 
diff --git a/engines/chewy/rooms/room55.cpp b/engines/chewy/rooms/room55.cpp
index b6a2fe135e4..f9b9d4ce4b2 100644
--- a/engines/chewy/rooms/room55.cpp
+++ b/engines/chewy/rooms/room55.cpp
@@ -29,60 +29,60 @@ namespace Chewy {
 namespace Rooms {
 
 void Room55::entry() {
-	_G(spieler).ScrollxStep = 2;
+	_G(gameState).ScrollxStep = 2;
 	_G(SetUpScreenFunc) = setup_func;
 	_G(zoom_horizont) = 140;
 	_G(flags).ZoomMov = true;
 	_G(zoom_mov_fak) = 3;
-	_G(spieler).R55ExitDia = 0;
-	_G(spieler).ZoomXy[P_HOWARD][0] = 20;
-	_G(spieler).ZoomXy[P_HOWARD][1] = 22;
+	_G(gameState).R55ExitDia = 0;
+	_G(gameState).ZoomXy[P_HOWARD][0] = 20;
+	_G(gameState).ZoomXy[P_HOWARD][1] = 22;
 
-	if (!_G(spieler).R54FputzerWeg)
+	if (!_G(gameState).R54FputzerWeg)
 		_G(det)->startDetail(6, 255, ANI_FRONT);
 
-	if (_G(spieler).R54FputzerWeg && !_G(spieler).R55Location)
+	if (_G(gameState).R54FputzerWeg && !_G(gameState).R55Location)
 		_G(det)->hideStaticSpr(6);
 
-	if (_G(spieler).R55RaumOk || _G(spieler).R55ScriptWeg)
+	if (_G(gameState).R55RaumOk || _G(gameState).R55ScriptWeg)
 		_G(det)->hideStaticSpr(0);
 
-	if (!_G(spieler).R55SekWeg) {
+	if (!_G(gameState).R55SekWeg) {
 		_G(det)->startDetail(8, 255, ANI_FRONT);
 		_G(det)->startDetail(9, 255, ANI_FRONT);
-		_G(spieler).R55Entry ^= 1;
-		const int aniNr = 19 + (_G(spieler).R55Entry ? 1 : 0);
+		_G(gameState).R55Entry ^= 1;
+		const int aniNr = 19 + (_G(gameState).R55Entry ? 1 : 0);
 		_G(timer_nr)[0] = _G(room)->set_timer(aniNr, 10);
 		_G(det)->set_static_ani(aniNr, -1);
 	}
 
 	_G(spieler_mi)[P_HOWARD].Mode = true;
 
-	if (_G(spieler).R55Job) {
+	if (_G(gameState).R55Job) {
 		rock2mans();
-		_G(spieler)._personRoomNr[P_HOWARD] = 54;
+		_G(gameState)._personRoomNr[P_HOWARD] = 54;
 	}
 
-	if (_G(spieler).ChewyAni == CHEWY_JMANS) {
+	if (_G(gameState).ChewyAni == CHEWY_JMANS) {
 		setPersonPos(51, 75, P_CHEWY, P_RIGHT);
 		_G(room)->set_zoom(10);
 	}
 
-	if (_G(spieler).R55EscScriptOk && !_G(spieler).R55RaumOk)
+	if (_G(gameState).R55EscScriptOk && !_G(gameState).R55RaumOk)
 		_G(det)->showStaticSpr(0);
 
 	if (!_G(flags).LoadGame) {
-		if (_G(spieler).R55Location) {
-			_G(spieler).scrollx = 136;
+		if (_G(gameState).R55Location) {
+			_G(gameState).scrollx = 136;
 			setPersonPos(404, 66, P_CHEWY, P_RIGHT);
 			startSetAILWait(3, 1, ANI_FRONT);
-			_G(spieler)._personHide[P_CHEWY] = false;
+			_G(gameState)._personHide[P_CHEWY] = false;
 			_G(zoom_horizont) = 1;
 			_G(atds)->delControlBit(340, ATS_ACTIVE_BIT, ATS_DATA);
 		} else {
-			_G(spieler).scrollx = 0;
+			_G(gameState).scrollx = 0;
 
-			if (_G(spieler)._personRoomNr[P_HOWARD] == 55) {
+			if (_G(gameState)._personRoomNr[P_HOWARD] == 55) {
 				setPersonPos(21, 77, P_HOWARD, P_RIGHT);
 			}
 
@@ -91,13 +91,13 @@ void Room55::entry() {
 			hideCur();
 			_G(det)->hideStaticSpr(8);
 
-			if (_G(spieler).R55SekWeg && !_G(spieler).R55Job) {
+			if (_G(gameState).R55SekWeg && !_G(gameState).R55Job) {
 				setPersonSpr(P_LEFT, P_CHEWY);
 
-				if (_G(spieler).ChewyAni == CHEWY_ROCKER) {
+				if (_G(gameState).ChewyAni == CHEWY_ROCKER) {
 					verleger_mov(0);
 					talk_line();
-					_G(spieler).R54Schild = true;
+					_G(gameState).R54Schild = true;
 				} else {
 					verleger_mov(1);
 					get_job();
@@ -113,13 +113,13 @@ void Room55::xit(int16 eib_nr) {
 	if (eib_nr == 90) {
 		mans2rock();
 
-		if (_G(spieler)._personRoomNr[P_HOWARD] == 55) {
-			_G(spieler)._personRoomNr[P_HOWARD] = 54;
+		if (_G(gameState)._personRoomNr[P_HOWARD] == 55) {
+			_G(gameState)._personRoomNr[P_HOWARD] = 54;
 			_G(spieler_mi)[P_HOWARD].Mode = false;
 		}
 	}
 
-	_G(spieler).ScrollxStep = 1;
+	_G(gameState).ScrollxStep = 1;
 }
 
 void Room55::gedAction(int index) {
@@ -131,10 +131,10 @@ int16 Room55::use_stapel1() {
 	int16 action_ret = false;
 	hideCur();
 	
-	if (!_G(spieler).inv_cur) {
-		if (!_G(spieler).R55ScriptWeg) {
+	if (!_G(gameState).inv_cur) {
+		if (!_G(gameState).R55ScriptWeg) {
 			action_ret = true;
-			_G(spieler).R55ScriptWeg = true;
+			_G(gameState).R55ScriptWeg = true;
 			autoMove(4, P_CHEWY);
 			_G(det)->hideStaticSpr(0);
 			autoMove(5, P_CHEWY);
@@ -142,18 +142,18 @@ int16 Room55::use_stapel1() {
 			_G(atds)->set_ats_str(354, 1, ATS_DATA);
 			_G(atds)->set_ats_str(355, 1, ATS_DATA);
 
-		} else if (_G(spieler).R55EscScriptOk && !_G(spieler).R55RaumOk) {
+		} else if (_G(gameState).R55EscScriptOk && !_G(gameState).R55RaumOk) {
 			action_ret = true;
 			startAadWait(333);
 		}
 	} else if (isCurInventory(MANUSKRIPT_INV)) {
 		action_ret = true;
 
-		if (_G(spieler).R55ScriptWeg) {
+		if (_G(gameState).R55ScriptWeg) {
 			autoMove(4, P_CHEWY);
-			_G(spieler).R55EscScriptOk = true;
+			_G(gameState).R55EscScriptOk = true;
 			_G(det)->showStaticSpr(0);
-			delInventory(_G(spieler).AkInvent);
+			delInventory(_G(gameState).AkInvent);
 			_G(atds)->set_ats_str(354, 2, ATS_DATA);
 		} else {
 			startAadWait(326);
@@ -180,21 +180,21 @@ int16 Room55::use_stapel2() {
 int16 Room55::use_telefon() {
 	int16 action_ret = false;
 
-	if (!_G(spieler).inv_cur) {
+	if (!_G(gameState).inv_cur) {
 		action_ret = true;
-		if (_G(spieler).R55EscScriptOk) {
-			if (!_G(spieler).R55RaumOk) {
+		if (_G(gameState).R55EscScriptOk) {
+			if (!_G(gameState).R55RaumOk) {
 				hideCur();
-				_G(spieler).R55RaumOk = true;
+				_G(gameState).R55RaumOk = true;
 				autoMove(6, P_CHEWY);
-				_G(spieler)._personHide[P_CHEWY] = true;
+				_G(gameState)._personHide[P_CHEWY] = true;
 				startSetAILWait(10, 1, ANI_FRONT);
 				_G(det)->startDetail(11, 255, ANI_FRONT);
 				startAadWait(329);
 				_G(det)->stop_detail(11);
 				startSetAILWait(10, 1, ANI_BACK);
 
-				_G(spieler)._personHide[P_CHEWY] = false;
+				_G(gameState)._personHide[P_CHEWY] = false;
 				autoMove(7, P_CHEWY);
 				_G(flags).NoScroll = true;
 				auto_scroll(0, 0);
@@ -213,7 +213,7 @@ int16 Room55::use_telefon() {
 				_G(det)->hideStaticSpr(8);
 				_G(atds)->set_ats_str(354, 1, ATS_DATA);
 				flic_cut(FCUT_071);
-				_G(spieler)._personRoomNr[P_HOWARD] = 55;
+				_G(gameState)._personRoomNr[P_HOWARD] = 55;
 
 				setPersonPos(178, 75, P_CHEWY, P_LEFT);
 				setPersonPos(66, 73, P_HOWARD, P_RIGHT);
@@ -222,14 +222,14 @@ int16 Room55::use_telefon() {
 				startAadWait(334);
 				startAadWait(335);
 				startAadWait(336);
-				const int16 tmp_delay = _G(spieler).DelaySpeed;
+				const int16 tmp_delay = _G(gameState).DelaySpeed;
 
 				for (int16 i = 0; i < 7; i++) {
 					int16 delay = tmp_delay;
-					if (!_G(spieler).scrollx)
-						_G(spieler).scrollx = 8;
+					if (!_G(gameState).scrollx)
+						_G(gameState).scrollx = 8;
 					else
-						_G(spieler).scrollx = 0;
+						_G(gameState).scrollx = 0;
 					while (delay) {
 						--delay;
 					}
@@ -246,14 +246,14 @@ int16 Room55::use_telefon() {
 				invent_2_slot(EINLAD_INV);
 				del_invent_slot(LEDER_INV);
 				load_chewy_taf(CHEWY_ROCKER);
-				_G(spieler)._personRoomNr[P_HOWARD] = 54;
+				_G(gameState)._personRoomNr[P_HOWARD] = 54;
 				_G(spieler_mi)[P_HOWARD].Mode = false;
 				showCur();
-				_G(spieler).R55R54First = true;
-				_G(spieler).R55ExitDia = 337;
-				_G(spieler).room_e_obj[89].Attribut = 255;
-				_G(spieler).PersonGlobalDia[P_HOWARD] = 10024;
-				_G(spieler).PersonDiaRoom[P_HOWARD] = true;
+				_G(gameState).R55R54First = true;
+				_G(gameState).R55ExitDia = 337;
+				_G(gameState).room_e_obj[89].Attribut = 255;
+				_G(gameState).PersonGlobalDia[P_HOWARD] = 10024;
+				_G(gameState).PersonDiaRoom[P_HOWARD] = true;
 
 				switchRoom(54);
 			} else {
@@ -272,22 +272,22 @@ int16 Room55::use_telefon() {
 }
 
 void Room55::get_job() {
-	_G(spieler)._personHide[P_CHEWY] = true;
-	const int16 oldScrollx = _G(spieler).scrollx;
-	const int16 oldScrolly = _G(spieler).scrolly;
-	_G(spieler).scrollx = 0;
-	_G(spieler).scrolly = 0;
+	_G(gameState)._personHide[P_CHEWY] = true;
+	const int16 oldScrollx = _G(gameState).scrollx;
+	const int16 oldScrolly = _G(gameState).scrolly;
+	_G(gameState).scrollx = 0;
+	_G(gameState).scrolly = 0;
 	switchRoom(61);
 
 	showCur();
 	startAdsWait(15);
-	_G(spieler)._personHide[P_CHEWY] = false;
+	_G(gameState)._personHide[P_CHEWY] = false;
 	_G(flags).LoadGame = true;
-	_G(spieler).scrollx = oldScrollx;
-	_G(spieler).scrolly = oldScrolly;
+	_G(gameState).scrollx = oldScrollx;
+	_G(gameState).scrolly = oldScrolly;
 
 	int16 r_nr;
-	if (_G(spieler).R55Job) {
+	if (_G(gameState).R55Job) {
 		r_nr = 55;
 		_G(atds)->delControlBit(357, ATS_ACTIVE_BIT, ATS_DATA);


Commit: 840c1d70b81f8aa1e206e7f767a43a5a2ff36458
    https://github.com/scummvm/scummvm/commit/840c1d70b81f8aa1e206e7f767a43a5a2ff36458
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:24+02:00

Commit Message:
CHEWY: More work on using inventory items

Changed paths:
    engines/chewy/dialogs/inventory.cpp
    engines/chewy/t_event.cpp


diff --git a/engines/chewy/dialogs/inventory.cpp b/engines/chewy/dialogs/inventory.cpp
index 820ea51cb3d..6b80c0e2f44 100644
--- a/engines/chewy/dialogs/inventory.cpp
+++ b/engines/chewy/dialogs/inventory.cpp
@@ -411,10 +411,10 @@ int16 Inventory::look(int16 invent_nr, int16 mode, int16 ats_nr) {
 		//Common::StringArray tmp;
 		if (ats_nr >= 15000) {
 			txt_adr = _G(atds)->ats_get_txt(ats_nr - 15000, TXT_MARK_USE, &lineCount, INV_USE_DEF);
-			//tmp = _G(atds)->getText(ats_nr - 15000 + 800, 0);
+			//tmp = _G(atds)->getTextArray(ats_nr - 15000 + 840, TXT_MARK_USE);
 		} else {
 			txt_adr = _G(atds)->ats_get_txt(ats_nr, TXT_MARK_USE, &lineCount, INV_USE_DATA);
-			//tmp = _G(atds)->getText(ats_nr + 800, 0);
+			//tmp = _G(atds)->getTextArray(ats_nr + 840, TXT_MARK_USE);
 		}
 		if (!txt_adr) {
 			endLoop = true;
diff --git a/engines/chewy/t_event.cpp b/engines/chewy/t_event.cpp
index 9dce68003ad..97e5ba009f2 100644
--- a/engines/chewy/t_event.cpp
+++ b/engines/chewy/t_event.cpp
@@ -2297,14 +2297,14 @@ void calc_inv_use_txt(int16 test_nr) {
 static void calc_inv_get_text(int16 cur_inv, int16 test_nr) {
 	int16 txt_anz;
 
-	const char *s = _G(atds)->ats_get_txt(31, TXT_MARK_USE, &txt_anz, 16);
+	const char *s = _G(atds)->ats_get_txt(31, TXT_MARK_USE, &txt_anz, INV_USE_DEF);
 	_G(calc_inv_text_str1) = Common::String::format("%s ", s);
 
 	_G(atds)->load_atds(cur_inv, INV_ATS_DATA);
 
 	_G(calc_inv_text_str1) += _G(atds)->getTextEntry(cur_inv + 700, TXT_MARK_NAME);
 
-	s = _G(atds)->ats_get_txt(32, TXT_MARK_USE, &txt_anz, 16);
+	s = _G(atds)->ats_get_txt(32, TXT_MARK_USE, &txt_anz, INV_USE_DEF);
 	_G(calc_inv_text_str2) = Common::String::format("%s ", s);
 
 	_G(calc_inv_text_str2) += _G(atds)->getTextEntry(test_nr + 700, TXT_MARK_NAME);


Commit: 9f5721124a573c9df0aa44a355d1d222398de5bd
    https://github.com/scummvm/scummvm/commit/9f5721124a573c9df0aa44a355d1d222398de5bd
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2022-03-20T13:58:24+02:00

Commit Message:
CHEWY: Use the ScummVM config for toggling subs, speech, music and SFX

Changed paths:
    engines/chewy/dialogs/main_menu.cpp
    engines/chewy/dialogs/options.cpp
    engines/chewy/inits.cpp
    engines/chewy/m_event.cpp
    engines/chewy/r_event.cpp
    engines/chewy/room.cpp
    engines/chewy/rooms/room46.cpp
    engines/chewy/rooms/room68.cpp
    engines/chewy/sound.cpp
    engines/chewy/sound.h
    engines/chewy/types.cpp
    engines/chewy/types.h


diff --git a/engines/chewy/dialogs/main_menu.cpp b/engines/chewy/dialogs/main_menu.cpp
index 8dfd173b090..2d25aab22df 100644
--- a/engines/chewy/dialogs/main_menu.cpp
+++ b/engines/chewy/dialogs/main_menu.cpp
@@ -177,24 +177,16 @@ void MainMenu::startGame() {
 	animate();
 	exit_room(-1);
 
-	bool soundSwitch = _G(gameState).SoundSwitch;
 	uint8 soundVol = _G(gameState).SoundVol;
-	bool musicSwitch = _G(gameState).MusicSwitch;
 	uint8 musicVol = _G(gameState).MusicVol;
-	bool speechSwitch = _G(gameState).SpeechSwitch;
 	uint8 framesPerSecond = _G(gameState).FramesPerSecond;
-	bool displayText = _G(gameState).DisplayText;
 	int sndLoopMode = _G(gameState).soundLoopMode;
 
 	var_init();
 
-	_G(gameState).SoundSwitch = soundSwitch;
 	_G(gameState).SoundVol = soundVol;
-	_G(gameState).MusicSwitch = musicSwitch;
 	_G(gameState).MusicVol = musicVol;
-	_G(gameState).SpeechSwitch = speechSwitch;
 	_G(gameState).FramesPerSecond = framesPerSecond;
-	_G(gameState).DisplayText = displayText;
 	_G(gameState).soundLoopMode = sndLoopMode;
 
 	_G(gameState)._personRoomNr[P_CHEWY] = 0;
diff --git a/engines/chewy/dialogs/options.cpp b/engines/chewy/dialogs/options.cpp
index e5e3b3772b6..a418674f7f3 100644
--- a/engines/chewy/dialogs/options.cpp
+++ b/engines/chewy/dialogs/options.cpp
@@ -95,7 +95,7 @@ void Options::execute(TafInfo *ti) {
 		Common::String fps = Common::String::format("%d", _G(gameState).FramesPerSecond << 1);
 		_G(out)->printxy(36 + bar_off, 65, 255, 300, 0, fps.c_str());
 
-		if (_G(gameState).SoundSwitch) {
+		if (g_engine->_sound->soundEnabled()) {
 			_G(out)->spriteSet(ti->_image[mund_ani],
 				18 + ti->_correction[mund_ani << 1],
 				8 + ti->_correction[(mund_ani << 1) + 1], 0);
@@ -117,7 +117,7 @@ void Options::execute(TafInfo *ti) {
 		_G(out)->pop_box(52 - 2, 104 - 12, 62 + 4, 136 + 2, 192, 183, 182);
 		_G(out)->printxy(52 + 3, 104 - 10, 31, 300, 0, "M");
 		_G(out)->boxFill(53, 136 - (_G(gameState).MusicVol >> 1), 62, 136, 31);
-		if (_G(gameState).MusicSwitch) {
+		if (g_engine->_sound->musicEnabled()) {
 			_G(out)->spriteSet(ti->_image[MUSIC_ON1],
 				18 + ti->_correction[MUSIC_ON1 << 1],
 				8 + ti->_correction[(MUSIC_ON1 << 1) + 1], 0);
@@ -129,7 +129,7 @@ void Options::execute(TafInfo *ti) {
 				18 + ti->_correction[MUSIC_OFF << 1],
 				8 + ti->_correction[(MUSIC_OFF << 1) + 1], 0);
 
-		if (_G(gameState).DisplayText) {
+		if (g_engine->_sound->subtitlesEnabled()) {
 			_G(out)->spriteSet(ti->_image[tdisp_ani],
 				18 + ti->_correction[tdisp_ani << 1],
 				8 + ti->_correction[(tdisp_ani << 1) + 1], 0);
@@ -160,32 +160,32 @@ void Options::execute(TafInfo *ti) {
 					++_G(gameState).FramesPerSecond;
 				break;
 			case 2:
-				if (_G(gameState).SoundSwitch) {
-					_G(gameState).SoundSwitch = false;
+				if (g_engine->_sound->soundEnabled()) {
+					g_engine->_sound->toggleSound(false);
 					_G(det)->disable_room_sound();
 				} else {
-					_G(gameState).SoundSwitch = true;
+					g_engine->_sound->toggleSound(true);
 					_G(det)->enable_room_sound();
 				}
 				break;
 			case 3:
 			case 4:
-				if (_G(gameState).DisplayText) {
-					_G(gameState).DisplayText = false;
+				if (g_engine->_sound->subtitlesEnabled()) {
+					g_engine->_sound->toggleSubtitles(false);
 					_G(atds)->setHasSpeech(true);
-					_G(gameState).SpeechSwitch = true;
+					g_engine->_sound->toggleSpeech(true);
 				} else {
-					_G(gameState).DisplayText = true;
+					g_engine->_sound->toggleSubtitles(true);
 					_G(atds)->setHasSpeech(false);
-					_G(gameState).SpeechSwitch = false;
+					g_engine->_sound->toggleSpeech(false);
 				}
 				break;
 			case 5:
-				if (_G(gameState).MusicSwitch) {
-					_G(gameState).MusicSwitch = false;
+				if (g_engine->_sound->musicEnabled()) {
+					g_engine->_sound->toggleMusic(false);
 					_G(sndPlayer)->stopMod();
 				} else {
-					_G(gameState).MusicSwitch = true;
+					g_engine->_sound->toggleMusic(true);
 					_G(currentSong) = -1;
 					load_room_music(_G(gameState)._personRoomNr[P_CHEWY]);
 				}
diff --git a/engines/chewy/inits.cpp b/engines/chewy/inits.cpp
index 56fb6dc3bce..78e11718bba 100644
--- a/engines/chewy/inits.cpp
+++ b/engines/chewy/inits.cpp
@@ -142,7 +142,6 @@ void var_init() {
 	init_room();
 	init_atds();
 	_G(gameState).FramesPerSecond = 7;
-	_G(gameState).DisplayText = true;
 	_G(currentSong) = -1;
 	_G(SetUpScreenFunc) = nullptr;
 	_G(pfeil_delay) = 0;
@@ -288,9 +287,6 @@ void tidy() {
 }
 
 void sound_init() {
-	_G(gameState).SoundSwitch = false;
-	_G(gameState).MusicSwitch = false;
-
 	_G(sndPlayer)->initMixMode();
 	_G(gameState).MusicVol = 63;
 	_G(gameState).SoundVol = 63;
@@ -312,10 +308,6 @@ void sound_init() {
 	}
 
 	_G(atds)->setHasSpeech(true);
-	_G(gameState).DisplayText = false;
-	_G(gameState).SoundSwitch = true;
-	_G(gameState).MusicSwitch = true;
-	_G(gameState).SpeechSwitch = true;
 }
 
 void show_intro() {
diff --git a/engines/chewy/m_event.cpp b/engines/chewy/m_event.cpp
index 554eae6e8cc..9f94714ecd9 100644
--- a/engines/chewy/m_event.cpp
+++ b/engines/chewy/m_event.cpp
@@ -37,7 +37,7 @@ void load_room_music(int16 room_nr) {
 	int16 volume = _G(gameState).MusicVol;
 	const int16 lp_mode = 1;
 	const int16 play_mode = NORMAL_PLAY;
-	if (_G(gameState).MusicSwitch && (_G(music_handle))) {
+	if (g_engine->_sound->musicEnabled() && (_G(music_handle))) {
 		switch (room_nr) {
 		case 0:
 			ttp_index = 0;
diff --git a/engines/chewy/r_event.cpp b/engines/chewy/r_event.cpp
index b61b0b1d8da..ed2886b7683 100644
--- a/engines/chewy/r_event.cpp
+++ b/engines/chewy/r_event.cpp
@@ -352,7 +352,7 @@ void enter_room(int16 eib_nr) {
 
 	case 17:
 		Room17::entry();
-		if (_G(gameState).SoundSwitch) {
+		if (g_engine->_sound->soundEnabled()) {
 			if (!_G(gameState).R17EnergieOut)
 				g_engine->_sound->playSound(15);
 		}
@@ -366,7 +366,7 @@ void enter_room(int16 eib_nr) {
 
 	case 24:
 		Room24::entry();
-		if (_G(gameState).SoundSwitch)
+		if (g_engine->_sound->soundEnabled())
 			g_engine->_sound->playSound(17);
 		break;
 
@@ -822,7 +822,7 @@ static void playIntroSequence() {
 		start_aad(595);
 		_G(atds)->print_aad(254, 0);
 
-		if (_G(gameState).SpeechSwitch) {
+		if (g_engine->_sound->speechEnabled()) {
 			g_engine->_sound->waitForSpeechToFinish();
 		} else {
 			delay(6000);
@@ -927,7 +927,7 @@ void flic_cut(int16 nr) {
 	if (nr != FCUT_135) {
 		load_room_music(_G(gameState)._personRoomNr[0]);
 
-		if (_G(gameState).SpeechSwitch)
+		if (g_engine->_sound->speechEnabled())
 			_G(det)->enable_room_sound();
 
 		_G(uhr)->resetTimer(0, 0);
diff --git a/engines/chewy/room.cpp b/engines/chewy/room.cpp
index 8f49d4e5d10..1b7f08113a0 100644
--- a/engines/chewy/room.cpp
+++ b/engines/chewy/room.cpp
@@ -24,6 +24,7 @@
 #include "chewy/resource.h"
 #include "chewy/room.h"
 #include "chewy/ngshext.h"
+#include "chewy/sound.h"
 
 namespace Chewy {
 
@@ -183,7 +184,7 @@ void Room::loadRoom(RaumBlk *Rb, int16 room_nr, GameState *player) {
 	clear_prog_ani();
 	_G(det)->load_rdi(Rb->DetFile, room_nr);
 
-	if (player->SoundSwitch == false)
+	if (!g_engine->_sound->soundEnabled())
 		_G(det)->disable_room_sound();
 	RoomDetailInfo *Rdi_ = _G(det)->getRoomDetailInfo();
 	_roomInfo = &Rdi_->Ri;
diff --git a/engines/chewy/rooms/room46.cpp b/engines/chewy/rooms/room46.cpp
index 7e8c239adf4..ffb65ddf45c 100644
--- a/engines/chewy/rooms/room46.cpp
+++ b/engines/chewy/rooms/room46.cpp
@@ -160,7 +160,7 @@ void Room46::kloppe() {
 		int16 delay = _G(gameState).DelaySpeed * 50;
 		_G(atds)->print_aad(0, 0);
 
-		if (_G(gameState).SpeechSwitch) {
+		if (g_engine->_sound->speechEnabled()) {
 			g_engine->_sound->waitForSpeechToFinish();
 			continue;
 		}
diff --git a/engines/chewy/rooms/room68.cpp b/engines/chewy/rooms/room68.cpp
index de19b700ce6..ba89179428a 100644
--- a/engines/chewy/rooms/room68.cpp
+++ b/engines/chewy/rooms/room68.cpp
@@ -100,7 +100,7 @@ void Room68::setup_func() {
 	case 1:
 		if (_G(det)->get_ani_status(_G(r68HohesC)) == false) {
 			_G(r68HohesC) = 2;
-			if (_G(gameState).SpeechSwitch) {
+			if (g_engine->_sound->speechEnabled()) {
 				g_engine->_sound->playSound(2, 0);
 				g_engine->_sound->playSound(_G(r68HohesC));
 				_G(det)->startDetail(_G(r68HohesC), 255, ANI_FRONT);
@@ -347,7 +347,7 @@ void Room68::kostuem_aad(int16 aad_nr) {
 	else if (!_G(gameState).R67LiedOk)
 		startAadWait(389);
 	else {
-		if (_G(gameState).DisplayText == 0)
+		if (!g_engine->_sound->subtitlesEnabled())
 			_G(sndPlayer)->fadeOut(5);
 		
 		_G(SetUpScreenFunc) = nullptr;
@@ -361,7 +361,7 @@ void Room68::kostuem_aad(int16 aad_nr) {
 		_G(gameState)._personHide[P_HOWARD] = true;
 		_G(det)->startDetail(27, 255, ANI_FRONT);
 
-		if (_G(gameState).DisplayText)
+		if (g_engine->_sound->subtitlesEnabled())
 			startSetAILWait(23, 3, ANI_FRONT);
 		else {
 			_G(det)->startDetail(23, 255, ANI_FRONT);
@@ -373,13 +373,13 @@ void Room68::kostuem_aad(int16 aad_nr) {
 			_G(det)->stop_detail(23);
 		}
 
-		if (_G(gameState).DisplayText) {
+		if (g_engine->_sound->subtitlesEnabled()) {
 			g_engine->_sound->playSound(108, 1, false);
 		}
 		
 		_G(det)->startDetail(24, 255, ANI_FRONT);
 		setPersonPos(26, 40, P_NICHELLE, P_RIGHT);
-		if (_G(gameState).DisplayText) {
+		if (g_engine->_sound->subtitlesEnabled()) {
 			startAadWait(391);
 		} else {
 			waitShowScreen(100);
@@ -416,7 +416,7 @@ void Room68::kostuem_aad(int16 aad_nr) {
 		_G(gameState)._personHide[P_NICHELLE] = false;
 		setPersonPos(150, -13, P_NICHELLE, P_RIGHT);
 
-		if (_G(gameState).DisplayText) {
+		if (g_engine->_sound->subtitlesEnabled()) {
 			_G(currentSong) = -1;
 			load_room_music(_G(gameState)._personRoomNr[0]);
 		}
diff --git a/engines/chewy/sound.cpp b/engines/chewy/sound.cpp
index eb6a4a239dc..e8bf46b3ca2 100644
--- a/engines/chewy/sound.cpp
+++ b/engines/chewy/sound.cpp
@@ -276,8 +276,8 @@ void Sound::convertTMFToMod(uint8 *tmfData, uint32 tmfSize, uint8 *modData, uint
 }
 
 void Sound::waitForSpeechToFinish() {
-	if (_G(gameState).SpeechSwitch) {
-		while (g_engine->_sound->isSpeechActive() && !SHOULD_QUIT) {
+	if (speechEnabled()) {
+		while (isSpeechActive() && !SHOULD_QUIT) {
 			setupScreen(DO_SETUP);
 		}
 	}
@@ -292,4 +292,36 @@ DisplayMode Sound::getSpeechSubtitlesMode() const {
 		return DISPLAY_TXT;
 }
 
+bool Sound::soundEnabled() const {
+	return !ConfMan.getBool("sfx_mute");
+}
+
+void Sound::toggleSound(bool enable) {
+	return ConfMan.setBool("sfx_mute", !enable);
+}
+
+bool Sound::musicEnabled() const {
+	return !ConfMan.getBool("music_mute");
+}
+
+void Sound::toggleMusic(bool enable) {
+	return ConfMan.setBool("music_mute", !enable);
+}
+
+bool Sound::speechEnabled() const {
+	return !ConfMan.getBool("speech_mute");
+}
+
+void Sound::toggleSpeech(bool enable) {
+	return ConfMan.setBool("speech_mute", !enable);
+}
+
+bool Sound::subtitlesEnabled() const {
+	return !ConfMan.getBool("subtitles");
+}
+
+void Sound::toggleSubtitles(bool enable) {
+	return ConfMan.setBool("subtitles", !enable);
+}
+
 } // namespace Chewy
diff --git a/engines/chewy/sound.h b/engines/chewy/sound.h
index cd1c40c1ed7..36976f82088 100644
--- a/engines/chewy/sound.h
+++ b/engines/chewy/sound.h
@@ -75,6 +75,18 @@ public:
 	 */
 	DisplayMode getSpeechSubtitlesMode() const;
 
+	bool soundEnabled() const;
+	void toggleSound(bool enable);
+
+	bool musicEnabled() const;
+	void toggleMusic(bool enable);
+
+	bool speechEnabled() const;
+	void toggleSpeech(bool enable);
+
+	bool subtitlesEnabled() const;
+	void toggleSubtitles(bool enable);
+
 private:
 	Audio::Mixer *_mixer;
 	Audio::SoundHandle _soundHandle[MAX_SOUND_EFFECTS];
diff --git a/engines/chewy/types.cpp b/engines/chewy/types.cpp
index 17705a6eda8..a45948dbe84 100644
--- a/engines/chewy/types.cpp
+++ b/engines/chewy/types.cpp
@@ -51,6 +51,8 @@ bool GameState::synchronize(Common::Serializer &s) {
 	if (sizeof(GameFlags) != SPIELER_FLAGS_SIZE)
 		error("Invalid flags structure size");
 
+	byte dummy = 0;
+
 	// Sync the structure's bitflags
 	s.syncBytes((byte *)_flags, SPIELER_FLAGS_SIZE);
 
@@ -147,13 +149,13 @@ bool GameState::synchronize(Common::Serializer &s) {
 	s.syncAsSint16LE(SVal3);
 	s.syncAsSint16LE(SVal4);
 	s.syncAsSint16LE(soundLoopMode);
-	s.syncAsByte(SoundSwitch);
+	s.syncAsByte(dummy);	// sound switch
 	s.syncAsByte(SoundVol);
-	s.syncAsByte(MusicSwitch);
+	s.syncAsByte(dummy);	// music switch
 	s.syncAsByte(MusicVol);
-	s.syncAsByte(SpeechSwitch);
+	s.syncAsByte(dummy);	// speech switch
 	s.syncAsByte(FramesPerSecond);
-	s.syncAsByte(DisplayText);
+	s.syncAsByte(dummy);	// subtitles switch
 
 	return true;
 }
diff --git a/engines/chewy/types.h b/engines/chewy/types.h
index b3d88ee79d8..0d1316cd89c 100644
--- a/engines/chewy/types.h
+++ b/engines/chewy/types.h
@@ -517,13 +517,9 @@ struct GameState : public GameFlags {
 	int16 SVal3 = 0;
 	int16 SVal4 = 0;
 	int16 soundLoopMode = 0;
-	bool SoundSwitch = false;
 	uint8 SoundVol = 0;
-	bool MusicSwitch = false;
 	uint8 MusicVol = 0;
-	bool SpeechSwitch = false;
 	uint8 FramesPerSecond = 0;
-	bool DisplayText = false;
 };
 
 struct AutoMov {




More information about the Scummvm-git-logs mailing list