[Scummvm-cvs-logs] scummvm master -> afdb007e2e158efa4a9a1098f80ff224d0038729

dreammaster dreammaster at scummvm.org
Thu Jul 4 15:08:59 CEST 2013


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

Summary:
fdabdae325 TSAGE: Bugfix for starting R2R scene 2000
40b91e588b TSAGE: Fix for R2R freeze returning to scene 2000 from 2425
ccdc113fe1 TSAGE: Added some descriptions to scene switch list
5ba9f831a0 TSAGE: Beginnings of implementing R2R maze UI
61df7e35c9 TSAGE: Further cleanup of existing R2R MazeUI code
527b1b9b9c TSAGE: Implemented R2R MazeUI::draw method
4dbc1ce5cc TSAGE: Fix for object initialisatioon in R2R scene 3500
e74e062bf4 TSAGE: Beginnings of renamings of R2R Maze UI
4bc868c896 TSAGE: Further renaming of R2R Maze UI
5eaa253732 TSAGE: Renaming of derived R2R scene 3500 Maze UI
a075afa48a TSAGE: R2R Maze UI now partially showing map
1e40570ec0 TSAGE: Fix handle leak in resource manager
8ec07246e6 TSAGE: Fix to display R2R maze map correctly
45ea2e0979 TSAGE: Starting to move in R2R scene 3500 maze
755f6c30a2 TSAGE: Fix moving past intersection in R2R scene 3500 maze
8e77285bc7 TSAGE: Set up a maze direction enum for R2R mazes
0205c9754d TSAGE: Added extra entries for diagonals to MazeDirection enum
831c4db6df TSAGE: Rearranged some of the R2R scene 3500 methods to group them
fcd53acb0b TSAGE: Fix for rotating in R2R maze scenes
264a52aae6 TSAGE: Corrected starting to maze again after rotating in maze
ce3e765f5f TSAGE: Fixes for moving south in R2R maze scene 3500
97d8f768c2 TSAGE: Renaming maze Ui field in R2R scene 1200
f355d7bfbd TSAGE: Bugfix for leaving R2R scene 3500
a49a7d5ad4 TSAGE: Fix for moving east in R2R maze scene 3500
fa737fd5af Merge branch 'master' into tsage_r2r
afdb007e2e Merge branch 'master' of https://github.com/scummvm/scummvm


Commit: fdabdae325ffcd3f6d19f335e10325a2339bd6be
    https://github.com/scummvm/scummvm/commit/fdabdae325ffcd3f6d19f335e10325a2339bd6be
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-26T17:41:29-07:00

Commit Message:
TSAGE: Bugfix for starting R2R scene 2000

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes2.cpp
    engines/tsage/ringworld2/ringworld2_scenes2.h



diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.cpp b/engines/tsage/ringworld2/ringworld2_scenes2.cpp
index 6a030e5..6783076 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes2.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes2.cpp
@@ -630,6 +630,7 @@ void Scene2000::Exit3::changeScene() {
 		break;
 	}
 }
+
 void Scene2000::Exit4::changeScene() {
 	Scene2000 *scene = (Scene2000 *)R2_GLOBALS._sceneManager._scene;
 
@@ -756,19 +757,21 @@ void Scene2000::Exit5::changeScene() {
 	}
 }
 
-void Scene2000::postInit(SceneObjectList *OwnerList) {
-	SceneExt::postInit();
-	loadScene(2000);
-
+Scene2000::Scene2000(): SceneExt() {
 	if (R2_GLOBALS._sceneManager._previousScene != -1) {
 		R2_GLOBALS._v56605[1] = 21;
 		R2_GLOBALS._v56605[2] = 21;
 	}
-	if ((R2_GLOBALS._player._characterScene[R2_GLOBALS._player._characterIndex] != R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex]) && (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] != 2350)) {
+	if ((R2_GLOBALS._player._characterScene[R2_GLOBALS._player._characterIndex] 
+			!= R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex]) 
+			&& (R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] != 2350)) {
 		R2_GLOBALS._player._oldCharacterScene[R2_GLOBALS._player._characterIndex] = 0;
 	}
+
 	_exitingFlag = false;
+}
 
+void Scene2000::postInit(SceneObjectList *OwnerList) {
 	_exit1.setDetails(Rect(0, 100, 14, 140), EXITCURSOR_W, 2000);
 	_exit1.setDest(Common::Point(14, 129));
 	_exit2.setDetails(Rect(305, 100, 320, 140), EXITCURSOR_E, 2000);
@@ -917,6 +920,8 @@ void Scene2000::postInit(SceneObjectList *OwnerList) {
 	initPlayer();
 
 	_item1.setDetails(Rect(0, 0, 320, 200), 2000, 0, -1, 23, 1, NULL);
+
+	SceneExt::postInit();
 }
 
 void Scene2000::remove() {
diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.h b/engines/tsage/ringworld2/ringworld2_scenes2.h
index 281d1da..feceaa1 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes2.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes2.h
@@ -80,6 +80,7 @@ public:
 	Action1 _action1, _action2, _action3, _action4, _action5;
 	SequenceManager _sequenceManager;
 
+	Scene2000();
 	virtual void postInit(SceneObjectList *OwnerList = NULL);
 	virtual void remove();
 	virtual void signal();


Commit: 40b91e588baf7094d864f4322901d6f33dbbff68
    https://github.com/scummvm/scummvm/commit/40b91e588baf7094d864f4322901d6f33dbbff68
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-26T18:48:40-07:00

Commit Message:
TSAGE: Fix for R2R freeze returning to scene 2000 from 2425

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes2.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_scenes2.cpp b/engines/tsage/ringworld2/ringworld2_scenes2.cpp
index 6783076..02a0c05 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes2.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes2.cpp
@@ -1003,6 +1003,8 @@ void Scene2000::signal() {
 		g_globals->_sceneManager.changeScene(2350);
 		break;
 	default:
+		R2_GLOBALS._v56AAB = 0;
+		R2_GLOBALS._player.enableControl();
 		break;
 	}
 }


Commit: ccdc113fe19eebab0932a63eb308ba0d29e38233
    https://github.com/scummvm/scummvm/commit/ccdc113fe19eebab0932a63eb308ba0d29e38233
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-27T18:16:49-07:00

Commit Message:
TSAGE: Added some descriptions to scene switch list

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 97042cb..67af65c 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -166,7 +166,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 		// Ice Maze: Large empty room
 		return new Scene2400();
 	case 2425:
-		// Ice Maze:
+		// Ice Maze: The Hall of Records
 		return new Scene2425();
 	case 2430:
 		// Ice Maze: Bedroom
@@ -213,7 +213,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 	case 2900:
 		error("Missing scene %d from group 2", sceneNumber);
 	/* Scene group #3 */
-	//
+	// ARM Base Hanager
 	case 3100:
 		return new Scene3100();
 	case 3125:
@@ -258,16 +258,22 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 		// Cutscene - Ship landing
 		return new Scene3350();
 	case 3375:
+		// Outer walkway
 		return new Scene3375();
 	case 3385:
+		// Corridor
 		return new Scene3385();
 	case 3395:
+		// Walkway
 		return new Scene3395();
 	case 3400:
+		// Confrontation
 		return new Scene3400();
 	case 3500:
+		// Maze action scene
 		return new Scene3500();
 	case 3600:
+		// Cutscene - walking at gunpoint
 		return new Scene3600();
 	case 3700:
 		// Cutscene - Teleport outside


Commit: 5ba9f831a0e7a7f11b1d9b20e6e00bf41d0a7137
    https://github.com/scummvm/scummvm/commit/5ba9f831a0e7a7f11b1d9b20e6e00bf41d0a7137
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-29T07:47:37-07:00

Commit Message:
TSAGE: Beginnings of implementing R2R maze UI

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes1.h
    engines/tsage/ringworld2/ringworld2_scenes3.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.h



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 67af65c..65030be 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -21,6 +21,7 @@
  */
 
 #include "common/config-manager.h"
+#include "tsage/graphics.h"
 #include "tsage/scenes.h"
 #include "tsage/tsage.h"
 #include "tsage/staticres.h"
@@ -270,7 +271,7 @@ Scene *Ringworld2Game::createScene(int sceneNumber) {
 		// Confrontation
 		return new Scene3400();
 	case 3500:
-		// Maze action scene
+		// Maze action sequencec
 		return new Scene3500();
 	case 3600:
 		// Cutscene - walking at gunpoint
@@ -1274,14 +1275,19 @@ void SceneAreaObject::setDetails(int resNum, int lookLineNum, int talkLineNum, i
 
 /*****************************************************************************/
 
-UnkObject1200::UnkObject1200() {
+MazeUI::MazeUI() {
 	_field16 = _field3A = NULL;
 	_field12 = _field14 = 0;
-	_field26 = _field28 = _field2A = _field2C = _field2E = _field30 = 0;
-	_field32 = _field34 = _field36 = _field38 = _field3E = _field40 = 0;
+	_field26 = _field28 = _width = _height = _field2E = _field30 = 0;
+	_resNum = _field34 = _field36 = _field38 = _field3E = _field40 = 0;
 }
 
-void UnkObject1200::synchronize(Serializer &s) {
+MazeUI::~MazeUI() {
+	DEALLOCATE(_field16);
+	DEALLOCATE(_field3A);
+}
+
+void MazeUI::synchronize(Serializer &s) {
 	SavedObject::synchronize(s);
 
 	_rect1.synchronize(s);
@@ -1293,11 +1299,11 @@ void UnkObject1200::synchronize(Serializer &s) {
 	s.syncAsSint16LE(_field14);
 	s.syncAsSint16LE(_field26);
 	s.syncAsSint16LE(_field28);
-	s.syncAsSint16LE(_field2A);
-	s.syncAsSint16LE(_field2C);
+	s.syncAsSint16LE(_width);
+	s.syncAsSint16LE(_height);
 	s.syncAsSint16LE(_field2E);
 	s.syncAsSint16LE(_field30);
-	s.syncAsSint16LE(_field32);
+	s.syncAsSint16LE(_resNum);
 	s.syncAsSint16LE(_field34);
 	s.syncAsSint16LE(_field36);
 	s.syncAsSint16LE(_field38);
@@ -1305,16 +1311,58 @@ void UnkObject1200::synchronize(Serializer &s) {
 	s.syncAsSint16LE(_field40);
 }
 
-void UnkObject1200::sub51AE9(int arg1) {
-	warning("STUB: UnkObject1200::sub51AE9()");
+void MazeUI::load(int resNum) {
+	clear();
+	_resNum = resNum;
+
+	const byte *header = g_resourceManager->getResource(RT17, resNum, 0);
+
+	_field34 = resNum + 1000;
+	_field26 = READ_LE_UINT16(header + 2);
+	_field28 = READ_LE_UINT16(header + 4);
+	_field36 = 10;
+	_field38 = _field36 << 3;
+
+	Visage visage;
+	visage.setVisage(_field34, 1);
+
+	GfxSurface frame = visage.getFrame(2);
+	_width = frame.getBounds().width();
+	_height = frame.getBounds().height();
+
+	_field16 = ALLOCATE(_field26 * _field28 * 2);
+	const byte *res = g_resourceManager->getResource(RT17, resNum, 1);
+	Common::copy(res, res + (_field26 * _field28 * 2), _field16);
+
+	_field30 = _field2E = 0;
+	_field12 = (_rect1.width() + _width - 1) / _width;
+	_field14 = (_rect1.height() + _height - 1) / _height;
+
+	_field3E = (_field12 + 1) * _width;
+	_field3A = ALLOCATE(_field3E * _height);
+
+	_rect2 = Rect(0, 0, _width * _field26, _height * _field28);
+}
+
+void MazeUI::clear() {
+	if (!_resNum)
+		_resNum = 1;
+
+	if (_field16)
+		DEALLOCATE(_field16);
+	_field16 = NULL;
+	
+	DEALLOCATE(_field3A);
+	_field3A = NULL;
+
 }
 
-int UnkObject1200::sub51AF8(Common::Point pt) {
+int MazeUI::sub51AF8(Common::Point pt) {
 	if (!_rect1.contains(pt))
 		return -1;
 
-	int tmp1 = (pt.x - _rect1.left + _field2E) / _field2A;
-	int tmp2 = (pt.y - _rect1.top + _field30) / _field2C;
+	int tmp1 = (pt.x - _rect1.left + _field2E) / _width;
+	int tmp2 = (pt.y - _rect1.top + _field30) / _height;
 
 	if ((tmp1 >= 0) && (tmp2 >= 0) && (_field26 > tmp1) && (_field28 > tmp2))
 		return _field16[(((_field26 * tmp2) + tmp1)* 2)];
@@ -1322,7 +1370,7 @@ int UnkObject1200::sub51AF8(Common::Point pt) {
 	return -1;
 }
 
-bool UnkObject1200::sub51AFD(Common::Point pt) {
+bool MazeUI::sub51AFD(Common::Point pt) {
 	int retval = false;
 
 	_field2E = pt.x;
@@ -1351,19 +1399,19 @@ bool UnkObject1200::sub51AFD(Common::Point pt) {
 	return retval;
 }
 
-void UnkObject1200::sub51B02() {
-	warning("STUB: UnkObject1200::sub51B02()");
+void MazeUI::sub51B02() {
+	warning("STUB: MazeUI::sub51B02()");
 }
 
-void UnkObject1200::sub9EDE8(Rect rect) {
+void MazeUI::sub9EDE8(Rect rect) {
 	_rect1 = rect;
-	warning("FIXME: UnkObject1200::sub9EDE8()");
+	warning("FIXME: MazeUI::sub9EDE8()");
 //	_rect1.clip(g_globals->gfxManager()._bounds);
 }
 
-int UnkObject1200::sub9EE22(int &arg1, int &arg2) {
-	arg1 /= _field2A;
-	arg2 /= _field2C;
+int MazeUI::sub9EE22(int &arg1, int &arg2) {
+	arg1 /= _width;
+	arg2 /= _height;
 
 	if ((arg1 >= 0) && (arg2 >= 0) && (_field26 > arg1) && (_field28 > arg2)) {
 		return _field16[(((_field26 * arg2) + arg1) * 2)];
@@ -1372,6 +1420,10 @@ int UnkObject1200::sub9EE22(int &arg1, int &arg2) {
 	return -1;
 }
 
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+
 void Scene1200::sub9DAD6(int indx) {
 	_object1.sub9EE22(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
 
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 0b573bf..3ca1ba8 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -276,53 +276,57 @@ public:
 	}
 };
 
-class SceneAreaObject: public SceneArea {
-	class Object1: public SceneActor {
-	public:
-	};
-public:
-	Object1 _object1;
-	int _insetCount;
-
-	virtual void remove();
-	virtual void process(Event &event);
-	void setDetails(int visage, int strip, int frameNumber, const Common::Point &pt);
-	void setDetails(int resNum, int lookLineNum, int talkLineNum, int useLineNum);
-};
-
-class UnkObject1200 : public SavedObject {
+class MazeUI: public SavedObject {
+private:
+	void clear();
 public:
 	Rect _rect1;
 	Rect _rect2;
 
-	int *_field16;
-	int *_field3A;
+	byte *_field16;
+	byte *_field3A;
 
 	int _field12;
 	int _field14;
 	int _field26;
 	int _field28;
-	int _field2A;
-	int _field2C;
+	int _width;
+	int _height;
 	int _field2E;
 	int _field30;
-	int _field32;
+	int _resNum;
 	int _field34;
 	int _field36;
 	int _field38;
 	int _field3E;
 	int _field40;
+public:
+	MazeUI();
+	~MazeUI();
+	void load(int resNum);
 
-	UnkObject1200();
+	virtual Common::String getClassName() { return "MazeUI"; }
 	void synchronize(Serializer &s);
 
-	void sub51AE9(int arg1);
 	int sub51AF8(Common::Point pt);
 	bool sub51AFD(Common::Point pt);
 	void sub51B02();
 	void sub9EDE8(Rect rect);
 	int sub9EE22(int &arg1, int &arg2);
-	virtual Common::String getClassName() { return "UnkObject1200"; }
+};
+
+class SceneAreaObject: public SceneArea {
+	class Object1: public SceneActor {
+	public:
+	};
+public:
+	Object1 _object1;
+	int _insetCount;
+
+	virtual void remove();
+	virtual void process(Event &event);
+	void setDetails(int visage, int strip, int frameNumber, const Common::Point &pt);
+	void setDetails(int resNum, int lookLineNum, int talkLineNum, int useLineNum);
 };
 
 /*--------------------------------------------------------------------------*/
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index af62ab6..ba12a4b 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -1136,7 +1136,7 @@ void Scene1200::postInit(SceneObjectList *OwnerList) {
 	tmpRect.set(110, 20, 210, 120);
 	_object1.sub9EDE8(tmpRect);
 
-	_object1.sub51AE9(1);
+	_object1.load(1);
 	_object1.sub51AFD(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 	warning("int unk = set_pane_p(_paneNumber);");
 	_object1.sub51B02();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index f65a899..d1e55ef 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -147,7 +147,7 @@ public:
 	NamedHotspot _item1;
 	SceneActor _actor1;
 	Area1 _area1;
-	UnkObject1200 _object1;
+	MazeUI _object1;
 	SequenceManager _sequenceManager;
 
 	int _field412;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 61711d0..0e444a6 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -2888,6 +2888,7 @@ void Scene3400::signal() {
  * Scene 3500 -
  *
  *--------------------------------------------------------------------------*/
+
 Scene3500::Action1::Action1() {
 	_field1E = 0;
 	_field20 = 0;
@@ -3046,16 +3047,16 @@ void Scene3500::Actor7::sub109693(Common::Point Pt) {
 }
 
 int Scene3500::UnkObject3500::sub1097C9(int arg1) {
-	return (_field2A / 2) + arg1 - (arg1 % _field2A);
+	return (_width / 2) + arg1 - (arg1 % _width);
 }
 
 int Scene3500::UnkObject3500::sub1097EF(int arg1) {
-	return (_field2C / 2) + arg1 - (arg1 % _field2C);
+	return (_height / 2) + arg1 - (arg1 % _height);
 }
 
 int Scene3500::UnkObject3500::sub109C09(Common::Point pt) {
-	int vx = pt.x / _field2A;
-	int vy = pt.y / _field2C;
+	int vx = pt.x / _width;
+	int vy = pt.y / _height;
 
 	if ((vx >= 0) && (_field26 > vx) && (_field28 > vy)) {
 		return _field16[((_field26 * vy) + vx) * 2];
@@ -3665,7 +3666,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 
 	tmpRect.set(160, 89, 299, 182);
 	_unkObj1.sub9EDE8(tmpRect);
-	_unkObj1.sub51AE9(2);
+	_unkObj1.load(2);
 	_unkObj1.sub51AFD(Common::Point(_field127A, _field127C));
 
 	_action1._field24 = 0;
@@ -3787,6 +3788,7 @@ void Scene3500::process(Event &event) {
 void Scene3500::dispatch() {
 	Rect tmpRect;
 	Scene::dispatch();
+
 	if (((_actor1._frame % 2) == 0) && (_action1._field24 == 0)) {
 		_actor1.setFrame(_actor1.changeFrame());
 		_field1276 = _actor1._frame;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index 44787b9..ffad37d 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -633,7 +633,7 @@ class Scene3500 : public SceneExt {
 		// TODO: double check if nothing specific is present, then remove this class
 	};
 
-	class UnkObject3500 : public UnkObject1200 {
+	class UnkObject3500 : public MazeUI {
 	public:
 		int sub1097C9(int arg1);
 		int sub1097EF(int arg1);


Commit: 61df7e35c98b9d6b0ed8d030faea5e81bb3888f0
    https://github.com/scummvm/scummvm/commit/61df7e35c98b9d6b0ed8d030faea5e81bb3888f0
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-29T09:06:40-07:00

Commit Message:
TSAGE: Further cleanup of existing R2R MazeUI code

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.h



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 65030be..1cd6561 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1293,8 +1293,6 @@ void MazeUI::synchronize(Serializer &s) {
 	_rect1.synchronize(s);
 	_rect2.synchronize(s);
 
-	// FIXME: syncrhonize _field16 and _field3A
-
 	s.syncAsSint16LE(_field12);
 	s.syncAsSint16LE(_field14);
 	s.syncAsSint16LE(_field26);
@@ -1370,8 +1368,8 @@ int MazeUI::sub51AF8(Common::Point pt) {
 	return -1;
 }
 
-bool MazeUI::sub51AFD(Common::Point pt) {
-	int retval = false;
+bool MazeUI::setMazePosition(Common::Point pt) {
+	bool retval = false;
 
 	_field2E = pt.x;
 	_field30 = pt.y;
@@ -1399,14 +1397,13 @@ bool MazeUI::sub51AFD(Common::Point pt) {
 	return retval;
 }
 
-void MazeUI::sub51B02() {
-	warning("STUB: MazeUI::sub51B02()");
+void MazeUI::mazeProc1() {
+	warning("STUB: MazeUI::mazeProc1()");
 }
 
-void MazeUI::sub9EDE8(Rect rect) {
+void MazeUI::setUIBounds(Rect rect) {
 	_rect1 = rect;
-	warning("FIXME: MazeUI::sub9EDE8()");
-//	_rect1.clip(g_globals->gfxManager()._bounds);
+	_rect1.clip(g_globals->gfxManager()._bounds);
 }
 
 int MazeUI::sub9EE22(int &arg1, int &arg2) {
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 3ca1ba8..5a9120f 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -309,9 +309,9 @@ public:
 	void synchronize(Serializer &s);
 
 	int sub51AF8(Common::Point pt);
-	bool sub51AFD(Common::Point pt);
-	void sub51B02();
-	void sub9EDE8(Rect rect);
+	bool setMazePosition(Common::Point pt);
+	void mazeProc1();
+	void setUIBounds(Rect rect);
 	int sub9EE22(int &arg1, int &arg2);
 };
 
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index ba12a4b..70a504a 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -1134,12 +1134,12 @@ void Scene1200::postInit(SceneObjectList *OwnerList) {
 	_actor1.hide();
 
 	tmpRect.set(110, 20, 210, 120);
-	_object1.sub9EDE8(tmpRect);
+	_object1.setUIBounds(tmpRect);
 
 	_object1.load(1);
-	_object1.sub51AFD(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
+	_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 	warning("int unk = set_pane_p(_paneNumber);");
-	_object1.sub51B02();
+	_object1.mazeProc1();
 	warning("set_pane_p(unk);");
 
 	R2_GLOBALS._player.enableControl();
@@ -1544,9 +1544,9 @@ void Scene1200::dispatch() {
 	Rect tmpRect;
 	Scene::dispatch();
 	if (_field41C != 0) {
-		_object1.sub51AFD(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
+		_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 		warning("int unk = set_pane_p(_paneNumber);");
-		_object1.sub51B02();
+		_object1.mazeProc1();
 		warning("_gfxManager.sub294AC(unk);");
 		warning("tmpRect.sub14DF3();");
 		_field41C = 0;
@@ -1571,9 +1571,9 @@ void Scene1200::dispatch() {
 		default:
 			break;
 		}
-		_object1.sub51AFD(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
+		_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 		warning("int unk = set_pane_p(_paneNumber);");
-		_object1.sub51B02();
+		_object1.mazeProc1();
 		warning("_gfxManager.sub294AC(unk);");
 		warning("tmpRect.sub14DF3();");
 
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 0e444a6..a8d3fd3 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3046,15 +3046,15 @@ void Scene3500::Actor7::sub109693(Common::Point Pt) {
 	setPosition(Pt);
 }
 
-int Scene3500::UnkObject3500::sub1097C9(int arg1) {
+int Scene3500::MazeUI3500::sub1097C9(int arg1) {
 	return (_width / 2) + arg1 - (arg1 % _width);
 }
 
-int Scene3500::UnkObject3500::sub1097EF(int arg1) {
+int Scene3500::MazeUI3500::sub1097EF(int arg1) {
 	return (_height / 2) + arg1 - (arg1 % _height);
 }
 
-int Scene3500::UnkObject3500::sub109C09(Common::Point pt) {
+int Scene3500::MazeUI3500::sub109C09(Common::Point pt) {
 	int vx = pt.x / _width;
 	int vy = pt.y / _height;
 
@@ -3064,10 +3064,10 @@ int Scene3500::UnkObject3500::sub109C09(Common::Point pt) {
 		return -1;
 }
 
-int Scene3500::UnkObject3500::sub109C5E(int &x, int &y) {
-	int retVal = sub51AFD(Common::Point(x, y));
-	x = _field2E;
-	y = _field30;
+int Scene3500::MazeUI3500::sub109C5E(Common::Point &p) {
+	int retVal = setMazePosition(p);
+	p.x = _field2E;
+	p.y = _field30;
 
 	return retVal;
 }
@@ -3082,8 +3082,8 @@ Scene3500::Scene3500() {
 	_field1274 = 0;
 	_field1276 = 0;
 	_field1278 = 0;
-	_field127A = 0;
-	_field127C = 0;
+	_position1.x = 0;
+	_position1.y = 0;
 	_field127E = 0;
 	_field1280 = 0;
 	_field1282 = 0;
@@ -3103,8 +3103,8 @@ void Scene3500::synchronize(Serializer &s) {
 	s.syncAsSint16LE(_field1274);
 	s.syncAsSint16LE(_field1276);
 	s.syncAsSint16LE(_field1278);
-	s.syncAsSint16LE(_field127A);
-	s.syncAsSint16LE(_field127C);
+	s.syncAsSint16LE(_position1.x);
+	s.syncAsSint16LE(_position1.y);
 	s.syncAsSint16LE(_field127E);
 	s.syncAsSint16LE(_field1280);
 	s.syncAsSint16LE(_field1282);
@@ -3217,11 +3217,11 @@ void Scene3500::Action1::signal() {
 		setDelay(1);
 		break;
 	case 4: {
-		int si = scene->_unkObj1.sub109C09(Common::Point(scene->_field127A + 70, scene->_field127C + 46));
-		int var2 = scene->_unkObj1.sub1097C9(scene->_field127A + 70) - 70;
-		int var4 = scene->_unkObj1.sub1097EF(scene->_field127C + 46) - 46;
-		int di = abs(var2 - scene->_field127A);
-		int var6 = abs(var4 - scene->_field127C);
+		int si = scene->_mazeUI.sub109C09(Common::Point(scene->_position1.x + 70, scene->_position1.y + 46));
+		int var2 = scene->_mazeUI.sub1097C9(scene->_position1.x + 70) - 70;
+		int var4 = scene->_mazeUI.sub1097EF(scene->_position1.y + 46) - 46;
+		int di = abs(var2 - scene->_position1.x);
+		int var6 = abs(var4 - scene->_position1.y);
 
 		if ((scene->_actor1._frame % 2) != 0) {
 			scene->_actor1._frameChange = _field1E;
@@ -3354,12 +3354,12 @@ void Scene3500::Action1::signal() {
 		case 0:
 		// No break on purpose
 		case 4:
-			scene->_field127A = scene->_unkObj1.sub1097C9(scene->_field127A + 70) - 70;
+			scene->_position1.x = scene->_mazeUI.sub1097C9(scene->_position1.x + 70) - 70;
 			break;
 		case 2:
 		// No break on purpose
 		case 6:
-			scene->_field127C = scene->_unkObj1.sub1097EF(scene->_field127C + 46) - 46;
+			scene->_position1.y = scene->_mazeUI.sub1097EF(scene->_position1.y + 46) - 46;
 			break;
 		default:
 			break;
@@ -3576,8 +3576,8 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_field1272 = 1;
 	_field1270 = 4;
 	_field126E = 4;
-	_field127A = 860;
-	_field127C = 891;
+	_position1.x = 860;
+	_position1.y = 891;
 	_rotation = R2_GLOBALS._scenePalette.addRotation(240, 254, -1);
 	_rotation->setDelay(0);
 	_rotation->_idxChange = 1;
@@ -3665,13 +3665,13 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_actor3.fixPriority(200);
 
 	tmpRect.set(160, 89, 299, 182);
-	_unkObj1.sub9EDE8(tmpRect);
-	_unkObj1.load(2);
-	_unkObj1.sub51AFD(Common::Point(_field127A, _field127C));
+	_mazeUI.setUIBounds(tmpRect);
+	_mazeUI.load(2);
+	_mazeUI.setMazePosition(_position1);
 
 	_action1._field24 = 0;
 	warning("gfx_set_pane_p()");
-	_unkObj1.sub51B02();
+	_mazeUI.mazeProc1();
 	warning("gfx_set_pane_p()");
 	_field1286 = 1;
 
@@ -3803,7 +3803,7 @@ void Scene3500::dispatch() {
 	if (!_rotation)
 		return;
 
-	int var_field127A = 0;
+	int var127A = 0;
 	int di = 0;
 	int var_4 = 0;
 	int var_6 = 0;
@@ -3819,17 +3819,17 @@ void Scene3500::dispatch() {
 		_field1282 = 0;
 		tmpRect.set(160, 89, 299, 182);
 
-		var_field127A = _field127A;
-		di = _field127C;
-		var_4 = _unkObj1.sub1097C9(70) - 70;
-		var_6 = _unkObj1.sub1097EF(_field127C + 46) - 46;
-		var_8 = abs(var_4 - var_field127A);
+		var127A = _position1.x;
+		di = _position1.y;
+		var_4 = _mazeUI.sub1097C9(70) - 70;
+		var_6 = _mazeUI.sub1097EF(_position1.y + 46) - 46;
+		var_8 = abs(var_4 - var127A);
 		var_a = abs(var_6 - di);
 		dx = 0;
 
 		switch (_field1276) {
 		case 0:
-			tmpVar = _unkObj1.sub109C09(Common::Point(var_field127A + 70, 46));
+			tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, 46));
 			if (    ((tmpVar == 2) || (tmpVar == 3) || (tmpVar == 6) || (tmpVar == 1))
 				|| (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
@@ -3840,9 +3840,9 @@ void Scene3500::dispatch() {
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_6 = _unkObj1.sub1097EF(di + 46) - 46;
-				di = _field127C - _field126E;
-				dx = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
+				var_6 = _mazeUI.sub1097EF(di + 46) - 46;
+				di = _position1.y - _field126E;
+				dx = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
 				if (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4)) && (tmpVar != dx)) {
 					di = var_6;
 					R2_GLOBALS._sound2.play(339);
@@ -3862,11 +3862,11 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_6 = _unkObj1.sub1097EF(di + 46) - 46;
+					var_6 = _mazeUI.sub1097EF(di + 46) - 46;
 					var_a = abs(var_6 - di);
-					tmpVar = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
+					tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
 
-					if ( (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4)) && (di <= var_6) && (_field127C>= var_6))
+					if ( (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4)) && (di <= var_6) && (_position1.y>= var_6))
 						|| (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)) && (_field126E >= var_a) && (_field126E > 3) && (_action1._field24 != 0)) ) {
 						di = var_6;
 						if ((tmpVar != 25) && (tmpVar != 26) && (tmpVar != 5) && (tmpVar != 14) && (tmpVar == 15))
@@ -3877,7 +3877,7 @@ void Scene3500::dispatch() {
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 11) && (var_6 + 3 >= di) && (_field127C >= var_6 + 3)) {
+					} else if ((tmpVar == 11) && (var_6 + 3 >= di) && (_position1.y >= var_6 + 3)) {
 						R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
@@ -3886,7 +3886,7 @@ void Scene3500::dispatch() {
 						if (_action1._field24 == 0)
 							_actor8.hide();
 					} else if (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 != 0) && (var_8 <= 3)) {
-						var_field127A = var_4;
+						var127A = var_4;
 						R2_GLOBALS._sound2.play(339);
 					} else {
 						// Nothing
@@ -3895,7 +3895,7 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 2:
-			tmpVar = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
+			tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
 			if (  ((tmpVar == 12) || (tmpVar == 13) || (tmpVar == 11) || (tmpVar == 16) || (tmpVar == 31))
 			  || (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4)) && (var_a > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
@@ -3906,11 +3906,11 @@ void Scene3500::dispatch() {
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_4 = _unkObj1.sub1097C9(var_field127A + 70) - 70;
-				var_field127A = _field127A + _field126E;
-				dx = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
+				var_4 = _mazeUI.sub1097C9(var127A + 70) - 70;
+				var127A = _position1.x + _field126E;
+				dx = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
 				if (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15)) && (tmpVar != dx)) {
-					var_field127A = var_4;
+					var127A = var_4;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
@@ -3919,7 +3919,7 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else if ((tmpVar == 6) && (tmpVar != dx)) {
-					var_field127A = var_4 - 5;
+					var127A = var_4 - 5;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
@@ -3928,12 +3928,12 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_4 = _unkObj1.sub1097C9(var_field127A + 70) - 70;
-					var_8 = abs(var_field127A - var_4);
-					tmpVar = _unkObj1.sub109C09(Common::Point(var_field127A + 70, tmpVar + 46));
-					if ( (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15)) && (var_field127A >= var_4) && (_field127A <= var_4))
+					var_4 = _mazeUI.sub1097C9(var127A + 70) - 70;
+					var_8 = abs(var127A - var_4);
+					tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, tmpVar + 46));
+					if ( (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15)) && (var127A >= var_4) && (_position1.x <= var_4))
 						|| (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4)) && (_field126E >= var_8) && (_field126E <= 3) && (_action1._field24 != 0)) ) {
-						var_field127A = var_4;
+						var127A = var_4;
 						if ((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4))
 							R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
@@ -3942,8 +3942,8 @@ void Scene3500::dispatch() {
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 6) && (var_4 - 5 <= var_field127A) && (_field127A <= var_4 - 5)) {
-						var_field127A = var_4 - 5;
+					} else if ((tmpVar == 6) && (var_4 - 5 <= var127A) && (_position1.x <= var_4 - 5)) {
+						var127A = var_4 - 5;
 						R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
@@ -3961,7 +3961,7 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 4:
-			tmpVar = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
+			tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
 			if (  ((tmpVar == 2) || (tmpVar == 3) || (tmpVar == 6) || (tmpVar == 1))
 			  || (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
@@ -3972,9 +3972,9 @@ void Scene3500::dispatch() {
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_6 = _unkObj1.sub1097EF(di + 46) - 46;
-				di = _field127C + _field126E;
-				dx = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
+				var_6 = _mazeUI.sub1097EF(di + 46) - 46;
+				di = _position1.y + _field126E;
+				dx = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
 				if (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5)) && (tmpVar == dx)) {
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
@@ -4002,10 +4002,10 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_6 = _unkObj1.sub1097EF(di + 46) - 46;
+					var_6 = _mazeUI.sub1097EF(di + 46) - 46;
 					var_a = abs(di - var_6);
-					tmpVar = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
-					if ( (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5)) && (di >= var_6) && (_field127C <= var_6))
+					tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+					if ( (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5)) && (di >= var_6) && (_position1.y <= var_6))
 					  || (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)) && (_field126E >= var_a) && (_field126E <= 3) && (_action1._field24 != 0)) ){
 						if ((tmpVar != 23) && (tmpVar != 24) && (tmpVar != 4) && (tmpVar != 14) && (tmpVar != 15))
 							R2_GLOBALS._sound2.play(339);
@@ -4015,7 +4015,7 @@ void Scene3500::dispatch() {
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 16) && (var_6 - 3 <= di) && (_field127C <= var_6 - 3)) {
+					} else if ((tmpVar == 16) && (var_6 - 3 <= di) && (_position1.y <= var_6 - 3)) {
 						di = var_6 - 3;
 						R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
@@ -4024,7 +4024,7 @@ void Scene3500::dispatch() {
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 31) && (var_6 + 4 <= di) && (_field127C <= var_6 + 4)) {
+					} else if ((tmpVar == 31) && (var_6 + 4 <= di) && (_position1.y <= var_6 + 4)) {
 						di = var_6 + 4;
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
@@ -4032,12 +4032,12 @@ void Scene3500::dispatch() {
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-						if ((var_field127A == 660) && (_field126E + 306 <= di) && (di <= 307))
+						if ((var127A == 660) && (_field126E + 306 <= di) && (di <= 307))
 							 ++_field1284;
 						else
 							R2_GLOBALS._sound2.play(339);
 					} else if (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 != 0) && (var_8 <= 3)) {
-						var_field127A = var_4;
+						var127A = var_4;
 						R2_GLOBALS._sound2.play(339);
 					} else {
 						// Nothing
@@ -4046,7 +4046,7 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 6:
-			tmpVar = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
+			tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
 			if ( ((tmpVar == 12) || (tmpVar == 13) || (tmpVar == 11) || (tmpVar == 16) || (tmpVar == 31))
 			 || (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4)) && (var_a > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
@@ -4057,11 +4057,11 @@ void Scene3500::dispatch() {
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_4 = _unkObj1.sub1097C9(var_field127A + 70) - 70;
-				var_field127A = _field127A - _field126E;
-				dx = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
+				var_4 = _mazeUI.sub1097C9(var127A + 70) - 70;
+				var127A = _position1.x - _field126E;
+				dx = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
 				if (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14)) && (tmpVar != dx)) {
-					var_field127A = var_4;
+					var127A = var_4;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
@@ -4070,7 +4070,7 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else if ((tmpVar == 1) && (tmpVar != dx)) {
-					var_field127A = var_4 + 5;
+					var127A = var_4 + 5;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
@@ -4079,12 +4079,12 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_4 = _unkObj1.sub1097C9(var_field127A + 70) - 70;
-					var_8 = abs(var_4 - var_field127A);
-					tmpVar = _unkObj1.sub109C09(Common::Point(var_field127A + 70, di + 46));
-					if ( (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14)) && (var_field127A <= var_4) && (_field127A >= var_4))
+					var_4 = _mazeUI.sub1097C9(var127A + 70) - 70;
+					var_8 = abs(var_4 - var127A);
+					tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+					if ( (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14)) && (var127A <= var_4) && (_position1.x >= var_4))
 					  || (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4)) && (_field126E >= var_8) && (_field126E <= 3) && (_action1._field24 != 0)) ) {
-						var_field127A = var_4;
+						var127A = var_4;
 						if ((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4))
 							R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
@@ -4093,8 +4093,8 @@ void Scene3500::dispatch() {
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 1) && (var_field127A >= var_4 + 5) && (_field127A >= var_4 + 5)) {
-						var_field127A = var_4 + 5;
+					} else if ((tmpVar == 1) && (var127A >= var_4 + 5) && (_position1.x >= var_4 + 5)) {
+						var127A = var_4 + 5;
 						R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
@@ -4116,9 +4116,9 @@ void Scene3500::dispatch() {
 		}
 
 		if (_field1284 < 2) {
-			_field127A = var_field127A;
-			_field127C = di;
-			if (_unkObj1.sub109C5E(_field127A, _field127C) != 0) {
+			_position1.x = var127A;
+			_position1.y = di;
+			if (_mazeUI.sub109C5E(_position1) != 0) {
 				_field1272 = 0;
 				_field126E = 0;
 				_field1270 = 0;
@@ -4126,7 +4126,7 @@ void Scene3500::dispatch() {
 				_rotation->_idxChange = 0;
 			}
 			warning("gfx_set_pane_p");
-			_unkObj1.sub51B02();
+			_mazeUI.mazeProc1();
 			if (_field1284 != 0)
 				++_field1284;
 		}
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index ffad37d..60168c7 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -633,12 +633,12 @@ class Scene3500 : public SceneExt {
 		// TODO: double check if nothing specific is present, then remove this class
 	};
 
-	class UnkObject3500 : public MazeUI {
+	class MazeUI3500 : public MazeUI {
 	public:
 		int sub1097C9(int arg1);
 		int sub1097EF(int arg1);
 		int sub109C09(Common::Point pt);
-		int sub109C5E(int &x, int &y);
+		int sub109C5E(Common::Point &p);
 	};
 public:
 	Action1 _action1;
@@ -660,7 +660,7 @@ public:
 	Actor8 _actor8;
 	Actor8 _actor9;
 	ASoundExt _aSound1;
-	UnkObject3500 _unkObj1;
+	MazeUI3500 _mazeUI;
 	SequenceManager _sequenceManager;
 
 	int _fieldAF8;
@@ -672,8 +672,7 @@ public:
 	int _field1274;
 	int _field1276;
 	int _field1278;
-	int _field127A;
-	int _field127C;
+	Common::Point _position1;
 	int _field127E;
 	int _field1280;
 	int _field1282;


Commit: 527b1b9b9cc730a87618c22d22fdff3e0a992daf
    https://github.com/scummvm/scummvm/commit/527b1b9b9cc730a87618c22d22fdff3e0a992daf
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-29T15:24:26-07:00

Commit Message:
TSAGE: Implemented R2R MazeUI::draw method

Changed paths:
    engines/tsage/graphics.cpp
    engines/tsage/graphics.h
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp
index fb0b0b0..bcc4d1b 100644
--- a/engines/tsage/graphics.cpp
+++ b/engines/tsage/graphics.cpp
@@ -234,10 +234,15 @@ GfxSurface::GfxSurface(const GfxSurface &s) {
 }
 
 GfxSurface::~GfxSurface() {
+	clear();
+}
+
+void GfxSurface::clear() {
 	if (_customSurface) {
 		_customSurface->free();
 		delete _customSurface;
-	}
+		_customSurface = NULL;
+	}	
 }
 
 /**
diff --git a/engines/tsage/graphics.h b/engines/tsage/graphics.h
index 826f2fe..f006cee 100644
--- a/engines/tsage/graphics.h
+++ b/engines/tsage/graphics.h
@@ -42,6 +42,7 @@ class Rect : public Common::Rect, public Serialisable {
 public:
 	Rect() : Common::Rect() {}
 	Rect(int16 x1, int16 y1, int16 x2, int16 y2) : Common::Rect(x1, y1, x2, y2) {}
+	Rect(const Common::Rect &r) : Common::Rect(r) {}
 
 	void set(int16 x1, int16 y1, int16 x2, int16 y2);
 	void collapse(int dx, int dy);
@@ -100,6 +101,7 @@ public:
 	void unlockSurface();
 	void synchronize(Serializer &s);
 	void create(int width, int height);
+	void clear();
 	void setBounds(const Rect &bounds) { _bounds = bounds; }
 	const Rect &getBounds() const { return _bounds; }
 
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 1cd6561..4ae12c9 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -21,6 +21,7 @@
  */
 
 #include "common/config-manager.h"
+#include "common/rect.h"
 #include "tsage/graphics.h"
 #include "tsage/scenes.h"
 #include "tsage/tsage.h"
@@ -1276,15 +1277,14 @@ void SceneAreaObject::setDetails(int resNum, int lookLineNum, int talkLineNum, i
 /*****************************************************************************/
 
 MazeUI::MazeUI() {
-	_field16 = _field3A = NULL;
+	_field16 = NULL;
 	_field12 = _field14 = 0;
 	_field26 = _field28 = _width = _height = _field2E = _field30 = 0;
-	_resNum = _field34 = _field36 = _field38 = _field3E = _field40 = 0;
+	_resNum = _field34 = _field36 = _field38 = _mapImagePitch = _field40 = 0;
 }
 
 MazeUI::~MazeUI() {
 	DEALLOCATE(_field16);
-	DEALLOCATE(_field3A);
 }
 
 void MazeUI::synchronize(Serializer &s) {
@@ -1305,7 +1305,7 @@ void MazeUI::synchronize(Serializer &s) {
 	s.syncAsSint16LE(_field34);
 	s.syncAsSint16LE(_field36);
 	s.syncAsSint16LE(_field38);
-	s.syncAsSint16LE(_field3E);
+	s.syncAsSint16LE(_mapImagePitch);
 	s.syncAsSint16LE(_field40);
 }
 
@@ -1336,8 +1336,8 @@ void MazeUI::load(int resNum) {
 	_field12 = (_rect1.width() + _width - 1) / _width;
 	_field14 = (_rect1.height() + _height - 1) / _height;
 
-	_field3E = (_field12 + 1) * _width;
-	_field3A = ALLOCATE(_field3E * _height);
+	_mapImagePitch = (_field12 + 1) * _width;
+	_mapImage.create(_mapImagePitch, _height);
 
 	_rect2 = Rect(0, 0, _width * _field26, _height * _field28);
 }
@@ -1350,9 +1350,7 @@ void MazeUI::clear() {
 		DEALLOCATE(_field16);
 	_field16 = NULL;
 	
-	DEALLOCATE(_field3A);
-	_field3A = NULL;
-
+	_mapImage.clear();
 }
 
 int MazeUI::sub51AF8(Common::Point pt) {
@@ -1397,8 +1395,65 @@ bool MazeUI::setMazePosition(Common::Point pt) {
 	return retval;
 }
 
-void MazeUI::mazeProc1() {
-	warning("STUB: MazeUI::mazeProc1()");
+void MazeUI::draw() {
+	int xs = _rect1.left;
+	int yPos = 0;
+	int yInc;
+	Visage visage;
+
+	for (int yp = 0; yp < _field14; yp += yInc) {
+		int y = yp + _field30 / _height;
+		
+		for (int idx = 0; idx > _field12; ++idx) {
+			int x = _field2E / _width + idx;
+
+			int cell = getCellValue(Common::Point(x, y));
+			if (cell >= 0) {
+				int frameNum = (cell % _field36) + 1;
+				int rlbNum = (cell % _field38) / _field36 + 1;
+				int resNum = _field34 + (cell / _field38); 
+
+				visage.setVisage(resNum, rlbNum);
+				GfxSurface frame = visage.getFrame(frameNum);
+
+				_mapImage.copyFrom(frame, 0, idx);
+			} else {
+				GfxSurface emptyRect;
+				emptyRect.create(_width, _height);
+
+				_mapImage.copyFrom(emptyRect, 0, idx);
+			}
+		}
+
+		if (yPos == 0) {
+			yPos = _rect1.top;
+			yInc = _height - (_field30 % _height); 
+
+			Rect srcBounds(Common::Rect(_field2E % _width, _field30 % _height, 
+				_rect1.width(), yInc));
+			Rect destBounds(Common::Rect(_rect1.left, yPos, _rect1.width(), yInc));
+
+			R2_GLOBALS._screenSurface.copyFrom(_mapImage, srcBounds, destBounds);
+		} else {
+			if ((yPos + _height) < _rect1.bottom) {
+				yInc = _height;
+			} else {
+				yInc = _rect1.bottom - yPos;
+			}
+
+			Rect srcBounds(Common::Rect(0, _field2E, _rect1.width(), yInc)); 
+			Rect destBounds(Common::Rect(_rect1.left, yPos, _rect1.width(), yInc));
+			R2_GLOBALS._screenSurface.copyFrom(_mapImage, srcBounds, destBounds);
+		}
+	}
+}
+
+int MazeUI::getCellValue(const Common::Point &p) {
+	if (p.x < 0 || p.y < 0 || p.x >= _field26 || p.y >= _field28) {
+		return -1;
+	} else {
+		return READ_LE_UINT16(_field16 + (_field26 * p.y + p.x) * 2);
+	}
 }
 
 void MazeUI::setUIBounds(Rect rect) {
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 5a9120f..93b67a4 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -279,12 +279,13 @@ public:
 class MazeUI: public SavedObject {
 private:
 	void clear();
+	int getCellValue(const Common::Point &p);
 public:
 	Rect _rect1;
 	Rect _rect2;
 
 	byte *_field16;
-	byte *_field3A;
+	GfxSurface _mapImage;
 
 	int _field12;
 	int _field14;
@@ -298,19 +299,19 @@ public:
 	int _field34;
 	int _field36;
 	int _field38;
-	int _field3E;
+	int _mapImagePitch;
 	int _field40;
 public:
 	MazeUI();
-	~MazeUI();
+	virtual ~MazeUI();
 	void load(int resNum);
+	void draw();
 
 	virtual Common::String getClassName() { return "MazeUI"; }
 	void synchronize(Serializer &s);
 
 	int sub51AF8(Common::Point pt);
 	bool setMazePosition(Common::Point pt);
-	void mazeProc1();
 	void setUIBounds(Rect rect);
 	int sub9EE22(int &arg1, int &arg2);
 };
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index 70a504a..1f46c4b 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -1139,7 +1139,7 @@ void Scene1200::postInit(SceneObjectList *OwnerList) {
 	_object1.load(1);
 	_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 	warning("int unk = set_pane_p(_paneNumber);");
-	_object1.mazeProc1();
+	_object1.draw();
 	warning("set_pane_p(unk);");
 
 	R2_GLOBALS._player.enableControl();
@@ -1546,7 +1546,7 @@ void Scene1200::dispatch() {
 	if (_field41C != 0) {
 		_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 		warning("int unk = set_pane_p(_paneNumber);");
-		_object1.mazeProc1();
+		_object1.draw();
 		warning("_gfxManager.sub294AC(unk);");
 		warning("tmpRect.sub14DF3();");
 		_field41C = 0;
@@ -1573,7 +1573,7 @@ void Scene1200::dispatch() {
 		}
 		_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 		warning("int unk = set_pane_p(_paneNumber);");
-		_object1.mazeProc1();
+		_object1.draw();
 		warning("_gfxManager.sub294AC(unk);");
 		warning("tmpRect.sub14DF3();");
 
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index a8d3fd3..baf68ed 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3671,7 +3671,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 
 	_action1._field24 = 0;
 	warning("gfx_set_pane_p()");
-	_mazeUI.mazeProc1();
+	_mazeUI.draw();
 	warning("gfx_set_pane_p()");
 	_field1286 = 1;
 
@@ -4126,7 +4126,7 @@ void Scene3500::dispatch() {
 				_rotation->_idxChange = 0;
 			}
 			warning("gfx_set_pane_p");
-			_mazeUI.mazeProc1();
+			_mazeUI.draw();
 			if (_field1284 != 0)
 				++_field1284;
 		}


Commit: 4dbc1ce5cc15a69b9609b8e0db00f11dd3644964
    https://github.com/scummvm/scummvm/commit/4dbc1ce5cc15a69b9609b8e0db00f11dd3644964
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-29T16:38:58-07:00

Commit Message:
TSAGE: Fix for object initialisatioon in R2R scene 3500

Changed paths:
    engines/tsage/graphics.h
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/graphics.h b/engines/tsage/graphics.h
index f006cee..71ec5cc 100644
--- a/engines/tsage/graphics.h
+++ b/engines/tsage/graphics.h
@@ -42,7 +42,6 @@ class Rect : public Common::Rect, public Serialisable {
 public:
 	Rect() : Common::Rect() {}
 	Rect(int16 x1, int16 y1, int16 x2, int16 y2) : Common::Rect(x1, y1, x2, y2) {}
-	Rect(const Common::Rect &r) : Common::Rect(r) {}
 
 	void set(int16 x1, int16 y1, int16 x2, int16 y2);
 	void collapse(int dx, int dy);
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 4ae12c9..5aa4a70 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1396,7 +1396,6 @@ bool MazeUI::setMazePosition(Common::Point pt) {
 }
 
 void MazeUI::draw() {
-	int xs = _rect1.left;
 	int yPos = 0;
 	int yInc;
 	Visage visage;
@@ -1429,9 +1428,9 @@ void MazeUI::draw() {
 			yPos = _rect1.top;
 			yInc = _height - (_field30 % _height); 
 
-			Rect srcBounds(Common::Rect(_field2E % _width, _field30 % _height, 
-				_rect1.width(), yInc));
-			Rect destBounds(Common::Rect(_rect1.left, yPos, _rect1.width(), yInc));
+			Rect srcBounds(_field2E % _width, _field30 % _height, 
+				(_field2E % _width) + _rect1.width(), (_field30 % _height) + yInc);
+			Rect destBounds(_rect1.left, yPos, _rect1.right, yPos + yInc);
 
 			R2_GLOBALS._screenSurface.copyFrom(_mapImage, srcBounds, destBounds);
 		} else {
@@ -1441,8 +1440,8 @@ void MazeUI::draw() {
 				yInc = _rect1.bottom - yPos;
 			}
 
-			Rect srcBounds(Common::Rect(0, _field2E, _rect1.width(), yInc)); 
-			Rect destBounds(Common::Rect(_rect1.left, yPos, _rect1.width(), yInc));
+			Rect srcBounds(0, _field2E, _rect1.width(), _field2E + yInc); 
+			Rect destBounds(_rect1.left, yPos, _rect1.right, yPos + yInc);
 			R2_GLOBALS._screenSurface.copyFrom(_mapImage, srcBounds, destBounds);
 		}
 	}
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index baf68ed..3f612bf 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3027,7 +3027,7 @@ void Scene3500::Actor7::sub109466(int arg1, int arg2, int arg3, int arg4, int ar
 	_fieldAC = _fieldAA / _fieldA8;
 
 	postInit();
-	setup(10501, 3, 1);
+	setup(1050, 3, 1);
 	fixPriority(255);
 	sub109663(arg5);
 }
@@ -3616,7 +3616,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_item7.setDetails(96, 3500, 12, 10, -1);
 
 	_actor8.postInit();
-	_actor8.setup(10501, 1, 1);
+	_actor8.setup(1050, 1, 1);
 	_actor8.setPosition(Common::Point(160, 73));
 	_actor8.fixPriority(1);
 
@@ -3670,9 +3670,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_mazeUI.setMazePosition(_position1);
 
 	_action1._field24 = 0;
-	warning("gfx_set_pane_p()");
 	_mazeUI.draw();
-	warning("gfx_set_pane_p()");
 	_field1286 = 1;
 
 	R2_GLOBALS._player.postInit();


Commit: e74e062bf441cbb7a76b29d68007f2df7ec08590
    https://github.com/scummvm/scummvm/commit/e74e062bf441cbb7a76b29d68007f2df7ec08590
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-29T18:21:29-07:00

Commit Message:
TSAGE: Beginnings of renamings of R2R Maze UI

Changed paths:
    engines/tsage/graphics.cpp
    engines/tsage/graphics.h
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp
index bcc4d1b..af6e6f9 100644
--- a/engines/tsage/graphics.cpp
+++ b/engines/tsage/graphics.cpp
@@ -1327,6 +1327,12 @@ void GfxManager::copyFrom(GfxSurface &src, int destX, int destY) {
 	_surface.copyFrom(src, destX, destY);
 }
 
+void GfxManager::copyFrom(GfxSurface &src, const Rect &srcBounds, const Rect &destBounds) {
+	_surface.setBounds(_bounds);
+
+	_surface.copyFrom(src, srcBounds, destBounds);
+}
+
 /*--------------------------------------------------------------------------*/
 
 
diff --git a/engines/tsage/graphics.h b/engines/tsage/graphics.h
index 71ec5cc..7239a99 100644
--- a/engines/tsage/graphics.h
+++ b/engines/tsage/graphics.h
@@ -303,6 +303,7 @@ public:
 	}
 	void copyFrom(GfxSurface &src, Rect destBounds, Region *priorityRegion = NULL);
 	void copyFrom(GfxSurface &src, int destX, int destY);
+	void copyFrom(GfxSurface &src, const Rect &srcBounds, const Rect &destBounds);
 
 	GfxSurface &getSurface() {
 		_surface.setBounds(_bounds);
diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 5aa4a70..67382d8 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1279,8 +1279,8 @@ void SceneAreaObject::setDetails(int resNum, int lookLineNum, int talkLineNum, i
 MazeUI::MazeUI() {
 	_field16 = NULL;
 	_field12 = _field14 = 0;
-	_field26 = _field28 = _width = _height = _field2E = _field30 = 0;
-	_resNum = _field34 = _field36 = _field38 = _mapImagePitch = _field40 = 0;
+	_mapCells.x = _mapCells.y = _cellSize.x = _cellSize.y = _cellOffset.x = _cellOffset.y = 0;
+	_resNum = _cellsResNum = _field36 = _field38 = _mapImagePitch = _field40 = 0;
 }
 
 MazeUI::~MazeUI() {
@@ -1290,22 +1290,16 @@ MazeUI::~MazeUI() {
 void MazeUI::synchronize(Serializer &s) {
 	SavedObject::synchronize(s);
 
-	_rect1.synchronize(s);
-	_rect2.synchronize(s);
+	s.syncAsSint16LE(_resNum);
+	if (s.isLoading())
+		load(_resNum);
 
 	s.syncAsSint16LE(_field12);
 	s.syncAsSint16LE(_field14);
-	s.syncAsSint16LE(_field26);
-	s.syncAsSint16LE(_field28);
-	s.syncAsSint16LE(_width);
-	s.syncAsSint16LE(_height);
-	s.syncAsSint16LE(_field2E);
-	s.syncAsSint16LE(_field30);
-	s.syncAsSint16LE(_resNum);
-	s.syncAsSint16LE(_field34);
+	s.syncAsSint16LE(_cellOffset.x);
+	s.syncAsSint16LE(_cellOffset.y);
 	s.syncAsSint16LE(_field36);
 	s.syncAsSint16LE(_field38);
-	s.syncAsSint16LE(_mapImagePitch);
 	s.syncAsSint16LE(_field40);
 }
 
@@ -1315,31 +1309,31 @@ void MazeUI::load(int resNum) {
 
 	const byte *header = g_resourceManager->getResource(RT17, resNum, 0);
 
-	_field34 = resNum + 1000;
-	_field26 = READ_LE_UINT16(header + 2);
-	_field28 = READ_LE_UINT16(header + 4);
+	_cellsResNum = resNum + 1000;
+	_mapCells.x = READ_LE_UINT16(header + 2);
+	_mapCells.y = READ_LE_UINT16(header + 4);
 	_field36 = 10;
 	_field38 = _field36 << 3;
 
 	Visage visage;
-	visage.setVisage(_field34, 1);
+	visage.setVisage(_cellsResNum, 1);
 
 	GfxSurface frame = visage.getFrame(2);
-	_width = frame.getBounds().width();
-	_height = frame.getBounds().height();
+	_cellSize.x = frame.getBounds().width();
+	_cellSize.y = frame.getBounds().height();
 
-	_field16 = ALLOCATE(_field26 * _field28 * 2);
+	_field16 = ALLOCATE(_mapCells.x * _mapCells.y * 2);
 	const byte *res = g_resourceManager->getResource(RT17, resNum, 1);
-	Common::copy(res, res + (_field26 * _field28 * 2), _field16);
+	Common::copy(res, res + (_mapCells.x * _mapCells.y * 2), _field16);
 
-	_field30 = _field2E = 0;
-	_field12 = (_rect1.width() + _width - 1) / _width;
-	_field14 = (_rect1.height() + _height - 1) / _height;
+	_cellOffset.y = _cellOffset.x = 0;
+	_field12 = (_displayBounds.width() + _cellSize.x - 1) / _cellSize.x;
+	_field14 = (_displayBounds.height() + _cellSize.y - 1) / _cellSize.y;
 
-	_mapImagePitch = (_field12 + 1) * _width;
-	_mapImage.create(_mapImagePitch, _height);
+	_mapImagePitch = (_field12 + 1) * _cellSize.x;
+	_mapImage.create(_mapImagePitch, _cellSize.y);
 
-	_rect2 = Rect(0, 0, _width * _field26, _height * _field28);
+	_mapBounds = Rect(0, 0, _cellSize.x * _mapCells.x, _cellSize.y * _mapCells.y);
 }
 
 void MazeUI::clear() {
@@ -1353,42 +1347,29 @@ void MazeUI::clear() {
 	_mapImage.clear();
 }
 
-int MazeUI::sub51AF8(Common::Point pt) {
-	if (!_rect1.contains(pt))
-		return -1;
-
-	int tmp1 = (pt.x - _rect1.left + _field2E) / _width;
-	int tmp2 = (pt.y - _rect1.top + _field30) / _height;
-
-	if ((tmp1 >= 0) && (tmp2 >= 0) && (_field26 > tmp1) && (_field28 > tmp2))
-		return _field16[(((_field26 * tmp2) + tmp1)* 2)];
-
-	return -1;
-}
-
-bool MazeUI::setMazePosition(Common::Point pt) {
+bool MazeUI::setMazePosition(const Common::Point &pt) {
 	bool retval = false;
 
-	_field2E = pt.x;
-	_field30 = pt.y;
+	_cellOffset.x = pt.x;
+	_cellOffset.y = pt.y;
 
-	if (_field2E < _rect2.top) {
-		_field2E = _rect2.top;
+	if (_cellOffset.x < _mapBounds.top) {
+		_cellOffset.x = _mapBounds.top;
 		retval = true;
 	}
 
-	if (_field30 < _rect2.left) {
-		_field30 = _rect2.left;
+	if (_cellOffset.y < _mapBounds.left) {
+		_cellOffset.y = _mapBounds.left;
 		retval = true;
 	}
 
-	if (_field2E + _rect1.width() > _rect2.right) {
-		_field2E = _rect2.right - _rect1.width();
+	if (_cellOffset.x + _displayBounds.width() > _mapBounds.right) {
+		_cellOffset.x = _mapBounds.right - _displayBounds.width();
 		retval = true;
 	}
 
-	if (_field30 + _rect1.height() > _rect2.bottom) {
-		_field30 = _rect2.bottom - _rect1.height();
+	if (_cellOffset.y + _displayBounds.height() > _mapBounds.bottom) {
+		_cellOffset.y = _mapBounds.bottom - _displayBounds.height();
 		retval = true;
 	}
 
@@ -1401,16 +1382,16 @@ void MazeUI::draw() {
 	Visage visage;
 
 	for (int yp = 0; yp < _field14; yp += yInc) {
-		int y = yp + _field30 / _height;
+		int y = yp + _cellOffset.y / _cellSize.y;
 		
 		for (int idx = 0; idx > _field12; ++idx) {
-			int x = _field2E / _width + idx;
+			int x = _cellOffset.x / _cellSize.x + idx;
 
-			int cell = getCellValue(Common::Point(x, y));
+			int cell = getCellFromCellXY(Common::Point(x, y));
 			if (cell >= 0) {
 				int frameNum = (cell % _field36) + 1;
 				int rlbNum = (cell % _field38) / _field36 + 1;
-				int resNum = _field34 + (cell / _field38); 
+				int resNum = _cellsResNum + (cell / _field38); 
 
 				visage.setVisage(resNum, rlbNum);
 				GfxSurface frame = visage.getFrame(frameNum);
@@ -1418,54 +1399,67 @@ void MazeUI::draw() {
 				_mapImage.copyFrom(frame, 0, idx);
 			} else {
 				GfxSurface emptyRect;
-				emptyRect.create(_width, _height);
+				emptyRect.create(_cellSize.x, _cellSize.y);
 
 				_mapImage.copyFrom(emptyRect, 0, idx);
 			}
 		}
 
 		if (yPos == 0) {
-			yPos = _rect1.top;
-			yInc = _height - (_field30 % _height); 
+			yPos = _displayBounds.top;
+			yInc = _cellSize.y - (_cellOffset.y % _cellSize.y); 
 
-			Rect srcBounds(_field2E % _width, _field30 % _height, 
-				(_field2E % _width) + _rect1.width(), (_field30 % _height) + yInc);
-			Rect destBounds(_rect1.left, yPos, _rect1.right, yPos + yInc);
+			Rect srcBounds(_cellOffset.x % _cellSize.x, _cellOffset.y % _cellSize.y, 
+				(_cellOffset.x % _cellSize.x) + _displayBounds.width(), (_cellOffset.y % _cellSize.y) + yInc);
+			Rect destBounds(_displayBounds.left, yPos, _displayBounds.right, yPos + yInc);
 
-			R2_GLOBALS._screenSurface.copyFrom(_mapImage, srcBounds, destBounds);
+			R2_GLOBALS.gfxManager().copyFrom(_mapImage, srcBounds, destBounds);
 		} else {
-			if ((yPos + _height) < _rect1.bottom) {
-				yInc = _height;
+			if ((yPos + _cellSize.y) < _displayBounds.bottom) {
+				yInc = _cellSize.y;
 			} else {
-				yInc = _rect1.bottom - yPos;
+				yInc = _displayBounds.bottom - yPos;
 			}
 
-			Rect srcBounds(0, _field2E, _rect1.width(), _field2E + yInc); 
-			Rect destBounds(_rect1.left, yPos, _rect1.right, yPos + yInc);
-			R2_GLOBALS._screenSurface.copyFrom(_mapImage, srcBounds, destBounds);
+			Rect srcBounds(0, _cellOffset.x, _displayBounds.width(), _cellOffset.x + yInc); 
+			Rect destBounds(_displayBounds.left, yPos, _displayBounds.right, yPos + yInc);
+			R2_GLOBALS.gfxManager().copyFrom(_mapImage, srcBounds, destBounds);
 		}
 	}
 }
 
-int MazeUI::getCellValue(const Common::Point &p) {
-	if (p.x < 0 || p.y < 0 || p.x >= _field26 || p.y >= _field28) {
+int MazeUI::getCellFromPixelXY(const Common::Point &pt) {
+	if (!_displayBounds.contains(pt))
+		return -1;
+
+	int tmp1 = (pt.x - _displayBounds.left + _cellOffset.x) / _cellSize.x;
+	int tmp2 = (pt.y - _displayBounds.top + _cellOffset.y) / _cellSize.y;
+
+	if ((tmp1 >= 0) && (tmp2 >= 0) && (_mapCells.x > tmp1) && (_mapCells.y > tmp2))
+		return _field16[(((_mapCells.x * tmp2) + tmp1)* 2)];
+
+	return -1;
+}
+
+int MazeUI::getCellFromCellXY(const Common::Point &p) {
+	if (p.x < 0 || p.y < 0 || p.x >= _mapCells.x || p.y >= _mapCells.y) {
 		return -1;
 	} else {
-		return READ_LE_UINT16(_field16 + (_field26 * p.y + p.x) * 2);
+		return READ_LE_UINT16(_field16 + (_mapCells.x * p.y + p.x) * 2);
 	}
 }
 
-void MazeUI::setUIBounds(Rect rect) {
-	_rect1 = rect;
-	_rect1.clip(g_globals->gfxManager()._bounds);
+void MazeUI::setDisplayBounds(const Rect &r) {
+	_displayBounds = r;
+	_displayBounds.clip(g_globals->gfxManager()._bounds);
 }
 
 int MazeUI::sub9EE22(int &arg1, int &arg2) {
-	arg1 /= _width;
-	arg2 /= _height;
+	arg1 /= _cellSize.x;
+	arg2 /= _cellSize.y;
 
-	if ((arg1 >= 0) && (arg2 >= 0) && (_field26 > arg1) && (_field28 > arg2)) {
-		return _field16[(((_field26 * arg2) + arg1) * 2)];
+	if ((arg1 >= 0) && (arg2 >= 0) && (_mapCells.x > arg1) && (_mapCells.y > arg2)) {
+		return _field16[(((_mapCells.x * arg2) + arg1) * 2)];
 	}
 
 	return -1;
@@ -1480,7 +1474,7 @@ void Scene1200::sub9DAD6(int indx) {
 
 	switch (indx) {
 	case 0:
-		if ( ((_object1.sub51AF8(Common::Point(200, 50)) > 36) || (_object1.sub51AF8(Common::Point(200, 88)) > 36))
+		if ( ((_object1.getCellFromPixelXY(Common::Point(200, 50)) > 36) || (_object1.getCellFromPixelXY(Common::Point(200, 88)) > 36))
 			&& ( ((R2_GLOBALS._v56AA2 == 3) && (R2_GLOBALS._v56AA4 == 33) && (_field418 != 4))
 				|| ((R2_GLOBALS._v56AA2 == 13) && (R2_GLOBALS._v56AA4 == 21) && (_field418 != 2))
 				|| ((R2_GLOBALS._v56AA2 == 29) && (R2_GLOBALS._v56AA4 == 17) && (_field418 != 1))
@@ -1489,7 +1483,7 @@ void Scene1200::sub9DAD6(int indx) {
 			R2_GLOBALS._player.disableControl();
 			_sceneMode = 1200;
 			setAction(&_sequenceManager, this, 1200, &_actor1, NULL);
-		} else if (_object1.sub51AF8(Common::Point(200, 69)) == 36) {
+		} else if (_object1.getCellFromPixelXY(Common::Point(200, 69)) == 36) {
 			switch (_field412 - 1) {
 			case 0:
 				if (R2_GLOBALS._player._visage == 3155)
@@ -1524,7 +1518,7 @@ void Scene1200::sub9DAD6(int indx) {
 		}
 		break;
 	case 1:
-		if ( ((_object1.sub51AF8(Common::Point(120, 50)) > 36) || (_object1.sub51AF8(Common::Point(120, 88)) > 36))
+		if ( ((_object1.getCellFromPixelXY(Common::Point(120, 50)) > 36) || (_object1.getCellFromPixelXY(Common::Point(120, 88)) > 36))
 			&& ( ((R2_GLOBALS._v56AA2 == 7) && (R2_GLOBALS._v56AA4 == 33) && (_field418 != 4))
 				|| ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 21) && (_field418 != 2))
 				|| ((R2_GLOBALS._v56AA2 == 33) && (R2_GLOBALS._v56AA4 == 17) && (_field418 != 1))
@@ -1533,7 +1527,7 @@ void Scene1200::sub9DAD6(int indx) {
 			R2_GLOBALS._player.disableControl();
 			_sceneMode = 1201;
 			setAction(&_sequenceManager, this, 1201, &_actor1, NULL);
-		} else if (_object1.sub51AF8(Common::Point(120, 69)) == 36) {
+		} else if (_object1.getCellFromPixelXY(Common::Point(120, 69)) == 36) {
 			switch (_field412 - 1) {
 			case 0:
 				if (R2_GLOBALS._player._visage == 3156)
@@ -1568,14 +1562,14 @@ void Scene1200::sub9DAD6(int indx) {
 		}
 		break;
 	case 2:
-		if ( ((_object1.sub51AF8(Common::Point(140, 110)) > 36) || (_object1.sub51AF8(Common::Point(178, 110)) > 36))
+		if ( ((_object1.getCellFromPixelXY(Common::Point(140, 110)) > 36) || (_object1.getCellFromPixelXY(Common::Point(178, 110)) > 36))
 			&& ( ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 5) && (_field418 != 3))
 				|| ((R2_GLOBALS._v56AA2 == 41) && (R2_GLOBALS._v56AA4 == 21)) )
 				)	{
 			R2_GLOBALS._player.disableControl();
 			_sceneMode = 1203;
 			setAction(&_sequenceManager, this, 1203, &_actor1, NULL);
-		} else if (_object1.sub51AF8(Common::Point(160, 110)) == 36) {
+		} else if (_object1.getCellFromPixelXY(Common::Point(160, 110)) == 36) {
 			switch (_field412 - 1) {
 			case 0:
 				if (R2_GLOBALS._player._visage == 3156)
@@ -1610,14 +1604,14 @@ void Scene1200::sub9DAD6(int indx) {
 		}
 		break;
 	case 3:
-		if ( ((_object1.sub51AF8(Common::Point(140, 30)) > 36) || (_object1.sub51AF8(Common::Point(178, 30)) > 36))
+		if ( ((_object1.getCellFromPixelXY(Common::Point(140, 30)) > 36) || (_object1.getCellFromPixelXY(Common::Point(178, 30)) > 36))
 			&& ( ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 9) && (_field418 != 3))
 				|| ((R2_GLOBALS._v56AA2 == 35) && (R2_GLOBALS._v56AA4 == 17)) )
 				)	{
 			R2_GLOBALS._player.disableControl();
 			_sceneMode = 1202;
 			setAction(&_sequenceManager, this, 1202, &_actor1, NULL);
-		} else if (_object1.sub51AF8(Common::Point(160, 30)) == 36) {
+		} else if (_object1.getCellFromPixelXY(Common::Point(160, 30)) == 36) {
 			switch (_field412 - 1) {
 			case 0:
 				if (R2_GLOBALS._player._visage == 3156)
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 93b67a4..75347f2 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -279,24 +279,20 @@ public:
 class MazeUI: public SavedObject {
 private:
 	void clear();
-	int getCellValue(const Common::Point &p);
 public:
-	Rect _rect1;
-	Rect _rect2;
+	Rect _displayBounds;
+	Rect _mapBounds;
 
 	byte *_field16;
 	GfxSurface _mapImage;
 
 	int _field12;
 	int _field14;
-	int _field26;
-	int _field28;
-	int _width;
-	int _height;
-	int _field2E;
-	int _field30;
+	Common::Point _mapCells;
+	Common::Point _cellSize;
+	Common::Point _cellOffset;
 	int _resNum;
-	int _field34;
+	int _cellsResNum;
 	int _field36;
 	int _field38;
 	int _mapImagePitch;
@@ -304,15 +300,16 @@ public:
 public:
 	MazeUI();
 	virtual ~MazeUI();
+	void setDisplayBounds(const Rect &r);
+	bool setMazePosition(const Common::Point &pt);
 	void load(int resNum);
 	void draw();
+	int getCellFromPixelXY(const Common::Point &pt);
+	int getCellFromCellXY(const Common::Point &p);
 
 	virtual Common::String getClassName() { return "MazeUI"; }
 	void synchronize(Serializer &s);
 
-	int sub51AF8(Common::Point pt);
-	bool setMazePosition(Common::Point pt);
-	void setUIBounds(Rect rect);
 	int sub9EE22(int &arg1, int &arg2);
 };
 
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index 1f46c4b..d77a8bd 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -1099,8 +1099,6 @@ void Scene1200::Area1::proc13(int resNum, int lookLineNum, int talkLineNum, int
 }
 
 void Scene1200::postInit(SceneObjectList *OwnerList) {
-	Rect tmpRect;
-
 	loadScene(1200);
 	SceneExt::postInit();
 
@@ -1133,8 +1131,7 @@ void Scene1200::postInit(SceneObjectList *OwnerList) {
 	_actor1.postInit();
 	_actor1.hide();
 
-	tmpRect.set(110, 20, 210, 120);
-	_object1.setUIBounds(tmpRect);
+	_object1.setDisplayBounds(Rect(110, 20, 210, 120));
 
 	_object1.load(1);
 	_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
@@ -1397,7 +1394,7 @@ void Scene1200::process(Event &event) {
 
 	if (event.eventType == EVENT_BUTTON_DOWN) {
 		_object1.sub9EE22(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
-		int unk = _object1.sub51AF8(event.mousePos);
+		int unk = _object1.getCellFromPixelXY(event.mousePos);
 		switch (R2_GLOBALS._events.getCursor()) {
 		case CURSOR_ARROW:
 			event.handled = true;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 3f612bf..475c743 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -2978,6 +2978,8 @@ void Scene3500::Action1::sub108732(int arg1) {
 	}
 }
 
+/*--------------------------------------------------------------------------*/
+
 Scene3500::Action2::Action2() {
 	_field1E = 0;
 }
@@ -2988,6 +2990,8 @@ void Scene3500::Action2::synchronize(Serializer &s) {
 	s.syncAsSint16LE(_field1E);
 }
 
+/*--------------------------------------------------------------------------*/
+
 Scene3500::Item4::Item4() {
 	_field34 = 0;
 }
@@ -2998,6 +3002,8 @@ void Scene3500::Item4::synchronize(Serializer &s) {
 	s.syncAsSint16LE(_field34);
 }
 
+/*--------------------------------------------------------------------------*/
+
 Scene3500::Actor7::Actor7() {
 	_fieldA4 = 0;
 	_fieldA6 = 0;
@@ -3046,28 +3052,29 @@ void Scene3500::Actor7::sub109693(Common::Point Pt) {
 	setPosition(Pt);
 }
 
+/*--------------------------------------------------------------------------*/
+
 int Scene3500::MazeUI3500::sub1097C9(int arg1) {
-	return (_width / 2) + arg1 - (arg1 % _width);
+	return (_cellSize.x / 2) + arg1 - (arg1 % _cellSize.x);
 }
 
 int Scene3500::MazeUI3500::sub1097EF(int arg1) {
-	return (_height / 2) + arg1 - (arg1 % _height);
+	return (_cellSize.y / 2) + arg1 - (arg1 % _cellSize.y);
 }
 
 int Scene3500::MazeUI3500::sub109C09(Common::Point pt) {
-	int vx = pt.x / _width;
-	int vy = pt.y / _height;
+	int vx = pt.x / _cellSize.x;
+	int vy = pt.y / _cellSize.y;
 
-	if ((vx >= 0) && (_field26 > vx) && (_field28 > vy)) {
-		return _field16[((_field26 * vy) + vx) * 2];
+	if ((vx >= 0) && (_mapCells.x > vx) && (_mapCells.y > vy)) {
+		return _field16[((_mapCells.x * vy) + vx) * 2];
 	} else
 		return -1;
 }
 
 int Scene3500::MazeUI3500::sub109C5E(Common::Point &p) {
 	int retVal = setMazePosition(p);
-	p.x = _field2E;
-	p.y = _field30;
+	p = _cellOffset;
 
 	return retVal;
 }
@@ -3560,7 +3567,6 @@ bool Scene3500::Actor7::startAction(CursorType action, Event &event) {
 
 void Scene3500::postInit(SceneObjectList *OwnerList) {
 	byte tmpPal[768];
-	Rect tmpRect;
 
 	loadScene(1050);
 	R2_GLOBALS._uiElements._active = false;
@@ -3664,8 +3670,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_actor3.setPosition(Common::Point(126, 108));
 	_actor3.fixPriority(200);
 
-	tmpRect.set(160, 89, 299, 182);
-	_mazeUI.setUIBounds(tmpRect);
+	_mazeUI.setDisplayBounds(Rect(160, 89, 299, 182));
 	_mazeUI.load(2);
 	_mazeUI.setMazePosition(_position1);
 
@@ -4123,7 +4128,7 @@ void Scene3500::dispatch() {
 				_rotation->setDelay(0);
 				_rotation->_idxChange = 0;
 			}
-			warning("gfx_set_pane_p");
+
 			_mazeUI.draw();
 			if (_field1284 != 0)
 				++_field1284;


Commit: 4bc868c89668d0d7391530928ac1402aafbf1e1b
    https://github.com/scummvm/scummvm/commit/4bc868c89668d0d7391530928ac1402aafbf1e1b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-29T18:54:24-07:00

Commit Message:
TSAGE: Further renaming of R2R Maze UI

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 67382d8..c17fcc9 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1277,14 +1277,14 @@ void SceneAreaObject::setDetails(int resNum, int lookLineNum, int talkLineNum, i
 /*****************************************************************************/
 
 MazeUI::MazeUI() {
-	_field16 = NULL;
+	_mapData = NULL;
 	_field12 = _field14 = 0;
 	_mapCells.x = _mapCells.y = _cellSize.x = _cellSize.y = _cellOffset.x = _cellOffset.y = 0;
 	_resNum = _cellsResNum = _field36 = _field38 = _mapImagePitch = _field40 = 0;
 }
 
 MazeUI::~MazeUI() {
-	DEALLOCATE(_field16);
+	DEALLOCATE(_mapData);
 }
 
 void MazeUI::synchronize(Serializer &s) {
@@ -1322,9 +1322,7 @@ void MazeUI::load(int resNum) {
 	_cellSize.x = frame.getBounds().width();
 	_cellSize.y = frame.getBounds().height();
 
-	_field16 = ALLOCATE(_mapCells.x * _mapCells.y * 2);
-	const byte *res = g_resourceManager->getResource(RT17, resNum, 1);
-	Common::copy(res, res + (_mapCells.x * _mapCells.y * 2), _field16);
+	_mapData = g_resourceManager->getResource(RT17, resNum, 1);
 
 	_cellOffset.y = _cellOffset.x = 0;
 	_field12 = (_displayBounds.width() + _cellSize.x - 1) / _cellSize.x;
@@ -1340,9 +1338,9 @@ void MazeUI::clear() {
 	if (!_resNum)
 		_resNum = 1;
 
-	if (_field16)
-		DEALLOCATE(_field16);
-	_field16 = NULL;
+	if (_mapData)
+		DEALLOCATE(_mapData);
+	_mapData = NULL;
 	
 	_mapImage.clear();
 }
@@ -1432,11 +1430,11 @@ int MazeUI::getCellFromPixelXY(const Common::Point &pt) {
 	if (!_displayBounds.contains(pt))
 		return -1;
 
-	int tmp1 = (pt.x - _displayBounds.left + _cellOffset.x) / _cellSize.x;
-	int tmp2 = (pt.y - _displayBounds.top + _cellOffset.y) / _cellSize.y;
+	int cellX = (pt.x - _displayBounds.left + _cellOffset.x) / _cellSize.x;
+	int cellY = (pt.y - _displayBounds.top + _cellOffset.y) / _cellSize.y;
 
-	if ((tmp1 >= 0) && (tmp2 >= 0) && (_mapCells.x > tmp1) && (_mapCells.y > tmp2))
-		return _field16[(((_mapCells.x * tmp2) + tmp1)* 2)];
+	if ((cellX >= 0) && (cellY >= 0) && (cellX < _mapCells.x) && (cellY < _mapCells.y))
+		return (int16)READ_LE_UINT16(_mapData + ((_mapCells.x * cellY) + cellX) * 2);
 
 	return -1;
 }
@@ -1445,211 +1443,24 @@ int MazeUI::getCellFromCellXY(const Common::Point &p) {
 	if (p.x < 0 || p.y < 0 || p.x >= _mapCells.x || p.y >= _mapCells.y) {
 		return -1;
 	} else {
-		return READ_LE_UINT16(_field16 + (_mapCells.x * p.y + p.x) * 2);
+		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * p.y + p.x) * 2);
 	}
 }
 
-void MazeUI::setDisplayBounds(const Rect &r) {
-	_displayBounds = r;
-	_displayBounds.clip(g_globals->gfxManager()._bounds);
-}
+int MazeUI::pixelToCellXY(int &x, int &y) {
+	x /= _cellSize.x;
+	y /= _cellSize.y;
 
-int MazeUI::sub9EE22(int &arg1, int &arg2) {
-	arg1 /= _cellSize.x;
-	arg2 /= _cellSize.y;
-
-	if ((arg1 >= 0) && (arg2 >= 0) && (_mapCells.x > arg1) && (_mapCells.y > arg2)) {
-		return _field16[(((_mapCells.x * arg2) + arg1) * 2)];
+	if ((x >= 0) && (y >= 0) && (_mapCells.x > x) && (_mapCells.y > y)) {
+		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * y + x) * 2);
 	}
 
 	return -1;
 }
 
-/*--------------------------------------------------------------------------*/
-
-/*--------------------------------------------------------------------------*/
-
-void Scene1200::sub9DAD6(int indx) {
-	_object1.sub9EE22(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
-
-	switch (indx) {
-	case 0:
-		if ( ((_object1.getCellFromPixelXY(Common::Point(200, 50)) > 36) || (_object1.getCellFromPixelXY(Common::Point(200, 88)) > 36))
-			&& ( ((R2_GLOBALS._v56AA2 == 3) && (R2_GLOBALS._v56AA4 == 33) && (_field418 != 4))
-				|| ((R2_GLOBALS._v56AA2 == 13) && (R2_GLOBALS._v56AA4 == 21) && (_field418 != 2))
-				|| ((R2_GLOBALS._v56AA2 == 29) && (R2_GLOBALS._v56AA4 == 17) && (_field418 != 1))
-				|| ((R2_GLOBALS._v56AA2 == 33) && (R2_GLOBALS._v56AA4 == 41)) )
-				)	{
-			R2_GLOBALS._player.disableControl();
-			_sceneMode = 1200;
-			setAction(&_sequenceManager, this, 1200, &_actor1, NULL);
-		} else if (_object1.getCellFromPixelXY(Common::Point(200, 69)) == 36) {
-			switch (_field412 - 1) {
-			case 0:
-				if (R2_GLOBALS._player._visage == 3155)
-					_sceneMode = 15;
-				else
-					_sceneMode = 10;
-				break;
-			case 1:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 76;
-				else
-					_sceneMode = 75;
-				break;
-			case 2:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 101;
-				else
-					_sceneMode = 100;
-				break;
-			case 3:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 111;
-				else
-					_sceneMode = 110;
-				break;
-			default:
-				break;
-			}
-			R2_GLOBALS._player.disableControl();
-			_field412 = 1;
-			signal();
-		}
-		break;
-	case 1:
-		if ( ((_object1.getCellFromPixelXY(Common::Point(120, 50)) > 36) || (_object1.getCellFromPixelXY(Common::Point(120, 88)) > 36))
-			&& ( ((R2_GLOBALS._v56AA2 == 7) && (R2_GLOBALS._v56AA4 == 33) && (_field418 != 4))
-				|| ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 21) && (_field418 != 2))
-				|| ((R2_GLOBALS._v56AA2 == 33) && (R2_GLOBALS._v56AA4 == 17) && (_field418 != 1))
-				|| ((R2_GLOBALS._v56AA2 == 5) && (R2_GLOBALS._v56AA4 == 5)) )
-				)	{
-			R2_GLOBALS._player.disableControl();
-			_sceneMode = 1201;
-			setAction(&_sequenceManager, this, 1201, &_actor1, NULL);
-		} else if (_object1.getCellFromPixelXY(Common::Point(120, 69)) == 36) {
-			switch (_field412 - 1) {
-			case 0:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 56;
-				else
-					_sceneMode = 55;
-				break;
-			case 1:
-				if (R2_GLOBALS._player._visage == 3155)
-					_sceneMode = 25;
-				else
-					_sceneMode = 20;
-				break;
-			case 2:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 91;
-				else
-					_sceneMode = 90;
-				break;
-			case 3:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 121;
-				else
-					_sceneMode = 120;
-				break;
-			default:
-				break;
-			}
-			R2_GLOBALS._player.disableControl();
-			_field412 = 2;
-			signal();
-		}
-		break;
-	case 2:
-		if ( ((_object1.getCellFromPixelXY(Common::Point(140, 110)) > 36) || (_object1.getCellFromPixelXY(Common::Point(178, 110)) > 36))
-			&& ( ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 5) && (_field418 != 3))
-				|| ((R2_GLOBALS._v56AA2 == 41) && (R2_GLOBALS._v56AA4 == 21)) )
-				)	{
-			R2_GLOBALS._player.disableControl();
-			_sceneMode = 1203;
-			setAction(&_sequenceManager, this, 1203, &_actor1, NULL);
-		} else if (_object1.getCellFromPixelXY(Common::Point(160, 110)) == 36) {
-			switch (_field412 - 1) {
-			case 0:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 51;
-				else
-					_sceneMode = 50;
-				break;
-			case 1:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 81;
-				else
-					_sceneMode = 80;
-				break;
-			case 2:
-				if (R2_GLOBALS._player._visage == 3155)
-					_sceneMode = 35;
-				else
-					_sceneMode = 30;
-				break;
-			case 3:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 116;
-				else
-					_sceneMode = 115;
-				break;
-			default:
-				break;
-			}
-			R2_GLOBALS._player.disableControl();
-			_field412 = 3;
-			signal();
-		}
-		break;
-	case 3:
-		if ( ((_object1.getCellFromPixelXY(Common::Point(140, 30)) > 36) || (_object1.getCellFromPixelXY(Common::Point(178, 30)) > 36))
-			&& ( ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 9) && (_field418 != 3))
-				|| ((R2_GLOBALS._v56AA2 == 35) && (R2_GLOBALS._v56AA4 == 17)) )
-				)	{
-			R2_GLOBALS._player.disableControl();
-			_sceneMode = 1202;
-			setAction(&_sequenceManager, this, 1202, &_actor1, NULL);
-		} else if (_object1.getCellFromPixelXY(Common::Point(160, 30)) == 36) {
-			switch (_field412 - 1) {
-			case 0:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 61;
-				else
-					_sceneMode = 60;
-				break;
-			case 1:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 71;
-				else
-					_sceneMode = 70;
-				break;
-			case 2:
-				if (R2_GLOBALS._player._visage == 3156)
-					_sceneMode = 96;
-				else
-					_sceneMode = 95;
-				break;
-			case 3:
-				if (R2_GLOBALS._player._visage == 3155)
-					_sceneMode = 45;
-				else
-					_sceneMode = 40;
-				break;
-			default:
-				_sceneMode = 1;
-				R2_GLOBALS._player.setup(3156, 4, 6);
-				break;
-			}
-			R2_GLOBALS._player.disableControl();
-			_field412 = 4;
-			signal();
-		}
-		break;
-	default:
-		break;
-	}
+void MazeUI::setDisplayBounds(const Rect &r) {
+	_displayBounds = r;
+	_displayBounds.clip(g_globals->gfxManager()._bounds);
 }
 
 /*--------------------------------------------------------------------------*/
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 75347f2..a40d4fe 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -283,7 +283,7 @@ public:
 	Rect _displayBounds;
 	Rect _mapBounds;
 
-	byte *_field16;
+	byte *_mapData;
 	GfxSurface _mapImage;
 
 	int _field12;
@@ -306,11 +306,10 @@ public:
 	void draw();
 	int getCellFromPixelXY(const Common::Point &pt);
 	int getCellFromCellXY(const Common::Point &p);
+	int pixelToCellXY(int &arg1, int &arg2);
 
 	virtual Common::String getClassName() { return "MazeUI"; }
 	void synchronize(Serializer &s);
-
-	int sub9EE22(int &arg1, int &arg2);
 };
 
 class SceneAreaObject: public SceneArea {
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index d77a8bd..fc79487 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -1393,7 +1393,7 @@ void Scene1200::process(Event &event) {
 		return;
 
 	if (event.eventType == EVENT_BUTTON_DOWN) {
-		_object1.sub9EE22(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
+		_object1.pixelToCellXY(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
 		int unk = _object1.getCellFromPixelXY(event.mousePos);
 		switch (R2_GLOBALS._events.getCursor()) {
 		case CURSOR_ARROW:
@@ -1605,6 +1605,189 @@ void Scene1200::saveCharacter(int characterIndex) {
 	SceneExt::saveCharacter(characterIndex);
 }
 
+void Scene1200::sub9DAD6(int indx) {
+	_object1.pixelToCellXY(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
+
+	switch (indx) {
+	case 0:
+		if ( ((_object1.getCellFromPixelXY(Common::Point(200, 50)) > 36) || (_object1.getCellFromPixelXY(Common::Point(200, 88)) > 36))
+			&& ( ((R2_GLOBALS._v56AA2 == 3) && (R2_GLOBALS._v56AA4 == 33) && (_field418 != 4))
+				|| ((R2_GLOBALS._v56AA2 == 13) && (R2_GLOBALS._v56AA4 == 21) && (_field418 != 2))
+				|| ((R2_GLOBALS._v56AA2 == 29) && (R2_GLOBALS._v56AA4 == 17) && (_field418 != 1))
+				|| ((R2_GLOBALS._v56AA2 == 33) && (R2_GLOBALS._v56AA4 == 41)) )
+				)	{
+			R2_GLOBALS._player.disableControl();
+			_sceneMode = 1200;
+			setAction(&_sequenceManager, this, 1200, &_actor1, NULL);
+		} else if (_object1.getCellFromPixelXY(Common::Point(200, 69)) == 36) {
+			switch (_field412 - 1) {
+			case 0:
+				if (R2_GLOBALS._player._visage == 3155)
+					_sceneMode = 15;
+				else
+					_sceneMode = 10;
+				break;
+			case 1:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 76;
+				else
+					_sceneMode = 75;
+				break;
+			case 2:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 101;
+				else
+					_sceneMode = 100;
+				break;
+			case 3:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 111;
+				else
+					_sceneMode = 110;
+				break;
+			default:
+				break;
+			}
+			R2_GLOBALS._player.disableControl();
+			_field412 = 1;
+			signal();
+		}
+		break;
+	case 1:
+		if ( ((_object1.getCellFromPixelXY(Common::Point(120, 50)) > 36) || (_object1.getCellFromPixelXY(Common::Point(120, 88)) > 36))
+			&& ( ((R2_GLOBALS._v56AA2 == 7) && (R2_GLOBALS._v56AA4 == 33) && (_field418 != 4))
+				|| ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 21) && (_field418 != 2))
+				|| ((R2_GLOBALS._v56AA2 == 33) && (R2_GLOBALS._v56AA4 == 17) && (_field418 != 1))
+				|| ((R2_GLOBALS._v56AA2 == 5) && (R2_GLOBALS._v56AA4 == 5)) )
+				)	{
+			R2_GLOBALS._player.disableControl();
+			_sceneMode = 1201;
+			setAction(&_sequenceManager, this, 1201, &_actor1, NULL);
+		} else if (_object1.getCellFromPixelXY(Common::Point(120, 69)) == 36) {
+			switch (_field412 - 1) {
+			case 0:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 56;
+				else
+					_sceneMode = 55;
+				break;
+			case 1:
+				if (R2_GLOBALS._player._visage == 3155)
+					_sceneMode = 25;
+				else
+					_sceneMode = 20;
+				break;
+			case 2:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 91;
+				else
+					_sceneMode = 90;
+				break;
+			case 3:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 121;
+				else
+					_sceneMode = 120;
+				break;
+			default:
+				break;
+			}
+			R2_GLOBALS._player.disableControl();
+			_field412 = 2;
+			signal();
+		}
+		break;
+	case 2:
+		if ( ((_object1.getCellFromPixelXY(Common::Point(140, 110)) > 36) || (_object1.getCellFromPixelXY(Common::Point(178, 110)) > 36))
+			&& ( ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 5) && (_field418 != 3))
+				|| ((R2_GLOBALS._v56AA2 == 41) && (R2_GLOBALS._v56AA4 == 21)) )
+				)	{
+			R2_GLOBALS._player.disableControl();
+			_sceneMode = 1203;
+			setAction(&_sequenceManager, this, 1203, &_actor1, NULL);
+		} else if (_object1.getCellFromPixelXY(Common::Point(160, 110)) == 36) {
+			switch (_field412 - 1) {
+			case 0:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 51;
+				else
+					_sceneMode = 50;
+				break;
+			case 1:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 81;
+				else
+					_sceneMode = 80;
+				break;
+			case 2:
+				if (R2_GLOBALS._player._visage == 3155)
+					_sceneMode = 35;
+				else
+					_sceneMode = 30;
+				break;
+			case 3:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 116;
+				else
+					_sceneMode = 115;
+				break;
+			default:
+				break;
+			}
+			R2_GLOBALS._player.disableControl();
+			_field412 = 3;
+			signal();
+		}
+		break;
+	case 3:
+		if ( ((_object1.getCellFromPixelXY(Common::Point(140, 30)) > 36) || (_object1.getCellFromPixelXY(Common::Point(178, 30)) > 36))
+			&& ( ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 9) && (_field418 != 3))
+				|| ((R2_GLOBALS._v56AA2 == 35) && (R2_GLOBALS._v56AA4 == 17)) )
+				)	{
+			R2_GLOBALS._player.disableControl();
+			_sceneMode = 1202;
+			setAction(&_sequenceManager, this, 1202, &_actor1, NULL);
+		} else if (_object1.getCellFromPixelXY(Common::Point(160, 30)) == 36) {
+			switch (_field412 - 1) {
+			case 0:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 61;
+				else
+					_sceneMode = 60;
+				break;
+			case 1:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 71;
+				else
+					_sceneMode = 70;
+				break;
+			case 2:
+				if (R2_GLOBALS._player._visage == 3156)
+					_sceneMode = 96;
+				else
+					_sceneMode = 95;
+				break;
+			case 3:
+				if (R2_GLOBALS._player._visage == 3155)
+					_sceneMode = 45;
+				else
+					_sceneMode = 40;
+				break;
+			default:
+				_sceneMode = 1;
+				R2_GLOBALS._player.setup(3156, 4, 6);
+				break;
+			}
+			R2_GLOBALS._player.disableControl();
+			_field412 = 4;
+			signal();
+		}
+		break;
+	default:
+		break;
+	}
+}
+
 /*--------------------------------------------------------------------------
  * Scene 1337 - Card game
  *
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 475c743..2e81beb 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3067,7 +3067,7 @@ int Scene3500::MazeUI3500::sub109C09(Common::Point pt) {
 	int vy = pt.y / _cellSize.y;
 
 	if ((vx >= 0) && (_mapCells.x > vx) && (_mapCells.y > vy)) {
-		return _field16[((_mapCells.x * vy) + vx) * 2];
+		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * vy + vx) * 2);
 	} else
 		return -1;
 }


Commit: 5eaa253732e5caa1def4da8bca4c1916a6919c89
    https://github.com/scummvm/scummvm/commit/5eaa253732e5caa1def4da8bca4c1916a6919c89
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-29T20:01:45-07:00

Commit Message:
TSAGE: Renaming of derived R2R scene 3500 Maze UI

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes3.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.h



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index c17fcc9..9231225 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1278,9 +1278,12 @@ void SceneAreaObject::setDetails(int resNum, int lookLineNum, int talkLineNum, i
 
 MazeUI::MazeUI() {
 	_mapData = NULL;
-	_field12 = _field14 = 0;
-	_mapCells.x = _mapCells.y = _cellSize.x = _cellSize.y = _cellOffset.x = _cellOffset.y = 0;
-	_resNum = _cellsResNum = _field36 = _field38 = _mapImagePitch = _field40 = 0;
+	_cellsVisible.x = _cellsVisible.y = 0;
+	_mapCells.x = _mapCells.y = 0;
+	_cellSize.x = _cellSize.y = 0;
+	_cellOffset.x = _cellOffset.y = 0;
+	_resNum = _cellsResNum = 0;
+	_frameCount = _resCount = _mapImagePitch = _unused = 0;
 }
 
 MazeUI::~MazeUI() {
@@ -1294,13 +1297,9 @@ void MazeUI::synchronize(Serializer &s) {
 	if (s.isLoading())
 		load(_resNum);
 
-	s.syncAsSint16LE(_field12);
-	s.syncAsSint16LE(_field14);
 	s.syncAsSint16LE(_cellOffset.x);
 	s.syncAsSint16LE(_cellOffset.y);
-	s.syncAsSint16LE(_field36);
-	s.syncAsSint16LE(_field38);
-	s.syncAsSint16LE(_field40);
+	s.syncAsSint16LE(_unused);
 }
 
 void MazeUI::load(int resNum) {
@@ -1312,8 +1311,8 @@ void MazeUI::load(int resNum) {
 	_cellsResNum = resNum + 1000;
 	_mapCells.x = READ_LE_UINT16(header + 2);
 	_mapCells.y = READ_LE_UINT16(header + 4);
-	_field36 = 10;
-	_field38 = _field36 << 3;
+	_frameCount = 10;
+	_resCount = _frameCount << 3;
 
 	Visage visage;
 	visage.setVisage(_cellsResNum, 1);
@@ -1325,10 +1324,10 @@ void MazeUI::load(int resNum) {
 	_mapData = g_resourceManager->getResource(RT17, resNum, 1);
 
 	_cellOffset.y = _cellOffset.x = 0;
-	_field12 = (_displayBounds.width() + _cellSize.x - 1) / _cellSize.x;
-	_field14 = (_displayBounds.height() + _cellSize.y - 1) / _cellSize.y;
+	_cellsVisible.x = (_displayBounds.width() + _cellSize.x - 1) / _cellSize.x;
+	_cellsVisible.y = (_displayBounds.height() + _cellSize.y - 1) / _cellSize.y;
 
-	_mapImagePitch = (_field12 + 1) * _cellSize.x;
+	_mapImagePitch = (_cellsVisible.x + 1) * _cellSize.x;
 	_mapImage.create(_mapImagePitch, _cellSize.y);
 
 	_mapBounds = Rect(0, 0, _cellSize.x * _mapCells.x, _cellSize.y * _mapCells.y);
@@ -1348,8 +1347,7 @@ void MazeUI::clear() {
 bool MazeUI::setMazePosition(const Common::Point &pt) {
 	bool retval = false;
 
-	_cellOffset.x = pt.x;
-	_cellOffset.y = pt.y;
+	_cellOffset = pt;
 
 	if (_cellOffset.x < _mapBounds.top) {
 		_cellOffset.x = _mapBounds.top;
@@ -1379,17 +1377,17 @@ void MazeUI::draw() {
 	int yInc;
 	Visage visage;
 
-	for (int yp = 0; yp < _field14; yp += yInc) {
+	for (int yp = 0; yp < _cellsVisible.y; yp += yInc) {
 		int y = yp + _cellOffset.y / _cellSize.y;
 		
-		for (int idx = 0; idx > _field12; ++idx) {
+		for (int idx = 0; idx > _cellsVisible.x; ++idx) {
 			int x = _cellOffset.x / _cellSize.x + idx;
 
 			int cell = getCellFromCellXY(Common::Point(x, y));
 			if (cell >= 0) {
-				int frameNum = (cell % _field36) + 1;
-				int rlbNum = (cell % _field38) / _field36 + 1;
-				int resNum = _cellsResNum + (cell / _field38); 
+				int frameNum = (cell % _frameCount) + 1;
+				int rlbNum = (cell % _resCount) / _frameCount + 1;
+				int resNum = _cellsResNum + (cell / _resCount); 
 
 				visage.setVisage(resNum, rlbNum);
 				GfxSurface frame = visage.getFrame(frameNum);
@@ -1434,7 +1432,7 @@ int MazeUI::getCellFromPixelXY(const Common::Point &pt) {
 	int cellY = (pt.y - _displayBounds.top + _cellOffset.y) / _cellSize.y;
 
 	if ((cellX >= 0) && (cellY >= 0) && (cellX < _mapCells.x) && (cellY < _mapCells.y))
-		return (int16)READ_LE_UINT16(_mapData + ((_mapCells.x * cellY) + cellX) * 2);
+		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * cellY + cellX) * 2);
 
 	return -1;
 }
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index a40d4fe..76bea81 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -280,23 +280,26 @@ class MazeUI: public SavedObject {
 private:
 	void clear();
 public:
+	// Position on screen to show map
 	Rect _displayBounds;
+	// The dimensions (in cells) of the entire maze map
 	Rect _mapBounds;
 
+	// Encoded cell map specifying the features of the maze
 	byte *_mapData;
+	// Image surface used to store a line of the map for rendering
 	GfxSurface _mapImage;
 
-	int _field12;
-	int _field14;
+	Common::Point _cellsVisible;
 	Common::Point _mapCells;
 	Common::Point _cellSize;
 	Common::Point _cellOffset;
 	int _resNum;
 	int _cellsResNum;
-	int _field36;
-	int _field38;
+	int _frameCount;
+	int _resCount;
 	int _mapImagePitch;
-	int _field40;
+	int _unused;
 public:
 	MazeUI();
 	virtual ~MazeUI();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 2e81beb..2b42cbd 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3054,26 +3054,26 @@ void Scene3500::Actor7::sub109693(Common::Point Pt) {
 
 /*--------------------------------------------------------------------------*/
 
-int Scene3500::MazeUI3500::sub1097C9(int arg1) {
-	return (_cellSize.x / 2) + arg1 - (arg1 % _cellSize.x);
+int Scene3500::MazeUI3500::cellFromX(int x) {
+	return (_cellSize.x / 2) + x - (x % _cellSize.x);
 }
 
-int Scene3500::MazeUI3500::sub1097EF(int arg1) {
-	return (_cellSize.y / 2) + arg1 - (arg1 % _cellSize.y);
+int Scene3500::MazeUI3500::cellFromY(int y) {
+	return (_cellSize.y / 2) + y - (y % _cellSize.y);
 }
 
-int Scene3500::MazeUI3500::sub109C09(Common::Point pt) {
-	int vx = pt.x / _cellSize.x;
-	int vy = pt.y / _cellSize.y;
+int Scene3500::MazeUI3500::getCellFromMapXY(Common::Point pt) {
+	int cellX = pt.x / _cellSize.x;
+	int cellY = pt.y / _cellSize.y;
 
-	if ((vx >= 0) && (_mapCells.x > vx) && (_mapCells.y > vy)) {
-		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * vy + vx) * 2);
+	if ((cellX >= 0) && (cellY >= 0) && (cellX < _mapCells.x) && (cellY < _mapCells.y)) {
+		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * cellY + cellX) * 2);
 	} else
 		return -1;
 }
 
-int Scene3500::MazeUI3500::sub109C5E(Common::Point &p) {
-	int retVal = setMazePosition(p);
+bool Scene3500::MazeUI3500::seteMazePosition2(Common::Point &p) {
+	bool retVal = setMazePosition(p);
 	p = _cellOffset;
 
 	return retVal;
@@ -3224,9 +3224,9 @@ void Scene3500::Action1::signal() {
 		setDelay(1);
 		break;
 	case 4: {
-		int si = scene->_mazeUI.sub109C09(Common::Point(scene->_position1.x + 70, scene->_position1.y + 46));
-		int var2 = scene->_mazeUI.sub1097C9(scene->_position1.x + 70) - 70;
-		int var4 = scene->_mazeUI.sub1097EF(scene->_position1.y + 46) - 46;
+		int si = scene->_mazeUI.getCellFromMapXY(Common::Point(scene->_position1.x + 70, scene->_position1.y + 46));
+		int var2 = scene->_mazeUI.cellFromX(scene->_position1.x + 70) - 70;
+		int var4 = scene->_mazeUI.cellFromY(scene->_position1.y + 46) - 46;
 		int di = abs(var2 - scene->_position1.x);
 		int var6 = abs(var4 - scene->_position1.y);
 
@@ -3361,12 +3361,12 @@ void Scene3500::Action1::signal() {
 		case 0:
 		// No break on purpose
 		case 4:
-			scene->_position1.x = scene->_mazeUI.sub1097C9(scene->_position1.x + 70) - 70;
+			scene->_position1.x = scene->_mazeUI.cellFromX(scene->_position1.x + 70) - 70;
 			break;
 		case 2:
 		// No break on purpose
 		case 6:
-			scene->_position1.y = scene->_mazeUI.sub1097EF(scene->_position1.y + 46) - 46;
+			scene->_position1.y = scene->_mazeUI.cellFromY(scene->_position1.y + 46) - 46;
 			break;
 		default:
 			break;
@@ -3824,15 +3824,15 @@ void Scene3500::dispatch() {
 
 		var127A = _position1.x;
 		di = _position1.y;
-		var_4 = _mazeUI.sub1097C9(70) - 70;
-		var_6 = _mazeUI.sub1097EF(_position1.y + 46) - 46;
+		var_4 = _mazeUI.cellFromX(70) - 70;
+		var_6 = _mazeUI.cellFromY(_position1.y + 46) - 46;
 		var_8 = abs(var_4 - var127A);
 		var_a = abs(var_6 - di);
 		dx = 0;
 
 		switch (_field1276) {
 		case 0:
-			tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, 46));
+			tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, 46));
 			if (    ((tmpVar == 2) || (tmpVar == 3) || (tmpVar == 6) || (tmpVar == 1))
 				|| (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
@@ -3843,9 +3843,9 @@ void Scene3500::dispatch() {
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_6 = _mazeUI.sub1097EF(di + 46) - 46;
+				var_6 = _mazeUI.cellFromY(di + 46) - 46;
 				di = _position1.y - _field126E;
-				dx = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+				dx = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 				if (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4)) && (tmpVar != dx)) {
 					di = var_6;
 					R2_GLOBALS._sound2.play(339);
@@ -3865,9 +3865,9 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_6 = _mazeUI.sub1097EF(di + 46) - 46;
+					var_6 = _mazeUI.cellFromY(di + 46) - 46;
 					var_a = abs(var_6 - di);
-					tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+					tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 
 					if ( (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4)) && (di <= var_6) && (_position1.y>= var_6))
 						|| (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)) && (_field126E >= var_a) && (_field126E > 3) && (_action1._field24 != 0)) ) {
@@ -3898,7 +3898,7 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 2:
-			tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+			tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 			if (  ((tmpVar == 12) || (tmpVar == 13) || (tmpVar == 11) || (tmpVar == 16) || (tmpVar == 31))
 			  || (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4)) && (var_a > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
@@ -3909,9 +3909,9 @@ void Scene3500::dispatch() {
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_4 = _mazeUI.sub1097C9(var127A + 70) - 70;
+				var_4 = _mazeUI.cellFromX(var127A + 70) - 70;
 				var127A = _position1.x + _field126E;
-				dx = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+				dx = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 				if (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15)) && (tmpVar != dx)) {
 					var127A = var_4;
 					R2_GLOBALS._sound2.play(339);
@@ -3931,9 +3931,9 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_4 = _mazeUI.sub1097C9(var127A + 70) - 70;
+					var_4 = _mazeUI.cellFromX(var127A + 70) - 70;
 					var_8 = abs(var127A - var_4);
-					tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, tmpVar + 46));
+					tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, tmpVar + 46));
 					if ( (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15)) && (var127A >= var_4) && (_position1.x <= var_4))
 						|| (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4)) && (_field126E >= var_8) && (_field126E <= 3) && (_action1._field24 != 0)) ) {
 						var127A = var_4;
@@ -3964,7 +3964,7 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 4:
-			tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+			tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 			if (  ((tmpVar == 2) || (tmpVar == 3) || (tmpVar == 6) || (tmpVar == 1))
 			  || (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
@@ -3975,9 +3975,9 @@ void Scene3500::dispatch() {
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_6 = _mazeUI.sub1097EF(di + 46) - 46;
+				var_6 = _mazeUI.cellFromY(di + 46) - 46;
 				di = _position1.y + _field126E;
-				dx = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+				dx = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 				if (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5)) && (tmpVar == dx)) {
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
@@ -4005,9 +4005,9 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_6 = _mazeUI.sub1097EF(di + 46) - 46;
+					var_6 = _mazeUI.cellFromY(di + 46) - 46;
 					var_a = abs(di - var_6);
-					tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+					tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 					if ( (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5)) && (di >= var_6) && (_position1.y <= var_6))
 					  || (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)) && (_field126E >= var_a) && (_field126E <= 3) && (_action1._field24 != 0)) ){
 						if ((tmpVar != 23) && (tmpVar != 24) && (tmpVar != 4) && (tmpVar != 14) && (tmpVar != 15))
@@ -4049,7 +4049,7 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 6:
-			tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+			tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 			if ( ((tmpVar == 12) || (tmpVar == 13) || (tmpVar == 11) || (tmpVar == 16) || (tmpVar == 31))
 			 || (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4)) && (var_a > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
@@ -4060,9 +4060,9 @@ void Scene3500::dispatch() {
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_4 = _mazeUI.sub1097C9(var127A + 70) - 70;
+				var_4 = _mazeUI.cellFromX(var127A + 70) - 70;
 				var127A = _position1.x - _field126E;
-				dx = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+				dx = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 				if (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14)) && (tmpVar != dx)) {
 					var127A = var_4;
 					R2_GLOBALS._sound2.play(339);
@@ -4082,9 +4082,9 @@ void Scene3500::dispatch() {
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_4 = _mazeUI.sub1097C9(var127A + 70) - 70;
+					var_4 = _mazeUI.cellFromX(var127A + 70) - 70;
 					var_8 = abs(var_4 - var127A);
-					tmpVar = _mazeUI.sub109C09(Common::Point(var127A + 70, di + 46));
+					tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
 					if ( (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14)) && (var127A <= var_4) && (_position1.x >= var_4))
 					  || (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4)) && (_field126E >= var_8) && (_field126E <= 3) && (_action1._field24 != 0)) ) {
 						var127A = var_4;
@@ -4121,7 +4121,7 @@ void Scene3500::dispatch() {
 		if (_field1284 < 2) {
 			_position1.x = var127A;
 			_position1.y = di;
-			if (_mazeUI.sub109C5E(_position1) != 0) {
+			if (_mazeUI.seteMazePosition2(_position1) != 0) {
 				_field1272 = 0;
 				_field126E = 0;
 				_field1270 = 0;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index 60168c7..6d7347d 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -635,10 +635,10 @@ class Scene3500 : public SceneExt {
 
 	class MazeUI3500 : public MazeUI {
 	public:
-		int sub1097C9(int arg1);
-		int sub1097EF(int arg1);
-		int sub109C09(Common::Point pt);
-		int sub109C5E(Common::Point &p);
+		int cellFromX(int arg1);
+		int cellFromY(int arg1);
+		int getCellFromMapXY(Common::Point pt);
+		bool seteMazePosition2(Common::Point &p);
 	};
 public:
 	Action1 _action1;


Commit: a075afa48a6acd7e011e8b3e766329eb83f33b7a
    https://github.com/scummvm/scummvm/commit/a075afa48a6acd7e011e8b3e766329eb83f33b7a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-29T21:00:29-07:00

Commit Message:
TSAGE: R2R Maze UI now partially showing map

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 9231225..ba7ae4e3 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1281,7 +1281,7 @@ MazeUI::MazeUI() {
 	_cellsVisible.x = _cellsVisible.y = 0;
 	_mapCells.x = _mapCells.y = 0;
 	_cellSize.x = _cellSize.y = 0;
-	_cellOffset.x = _cellOffset.y = 0;
+	_mapOffset.x = _mapOffset.y = 0;
 	_resNum = _cellsResNum = 0;
 	_frameCount = _resCount = _mapImagePitch = _unused = 0;
 }
@@ -1297,8 +1297,8 @@ void MazeUI::synchronize(Serializer &s) {
 	if (s.isLoading())
 		load(_resNum);
 
-	s.syncAsSint16LE(_cellOffset.x);
-	s.syncAsSint16LE(_cellOffset.y);
+	s.syncAsSint16LE(_mapOffset.x);
+	s.syncAsSint16LE(_mapOffset.y);
 	s.syncAsSint16LE(_unused);
 }
 
@@ -1323,7 +1323,7 @@ void MazeUI::load(int resNum) {
 
 	_mapData = g_resourceManager->getResource(RT17, resNum, 1);
 
-	_cellOffset.y = _cellOffset.x = 0;
+	_mapOffset.y = _mapOffset.x = 0;
 	_cellsVisible.x = (_displayBounds.width() + _cellSize.x - 1) / _cellSize.x;
 	_cellsVisible.y = (_displayBounds.height() + _cellSize.y - 1) / _cellSize.y;
 
@@ -1347,25 +1347,25 @@ void MazeUI::clear() {
 bool MazeUI::setMazePosition(const Common::Point &pt) {
 	bool retval = false;
 
-	_cellOffset = pt;
+	_mapOffset = pt;
 
-	if (_cellOffset.x < _mapBounds.top) {
-		_cellOffset.x = _mapBounds.top;
+	if (_mapOffset.x < _mapBounds.top) {
+		_mapOffset.x = _mapBounds.top;
 		retval = true;
 	}
 
-	if (_cellOffset.y < _mapBounds.left) {
-		_cellOffset.y = _mapBounds.left;
+	if (_mapOffset.y < _mapBounds.left) {
+		_mapOffset.y = _mapBounds.left;
 		retval = true;
 	}
 
-	if (_cellOffset.x + _displayBounds.width() > _mapBounds.right) {
-		_cellOffset.x = _mapBounds.right - _displayBounds.width();
+	if (_mapOffset.x + _displayBounds.width() > _mapBounds.right) {
+		_mapOffset.x = _mapBounds.right - _displayBounds.width();
 		retval = true;
 	}
 
-	if (_cellOffset.y + _displayBounds.height() > _mapBounds.bottom) {
-		_cellOffset.y = _mapBounds.bottom - _displayBounds.height();
+	if (_mapOffset.y + _displayBounds.height() > _mapBounds.bottom) {
+		_mapOffset.y = _mapBounds.bottom - _displayBounds.height();
 		retval = true;
 	}
 
@@ -1374,16 +1374,20 @@ bool MazeUI::setMazePosition(const Common::Point &pt) {
 
 void MazeUI::draw() {
 	int yPos = 0;
-	int yInc;
+	int ySize;
 	Visage visage;
 
-	for (int yp = 0; yp < _cellsVisible.y; yp += yInc) {
-		int y = yp + _cellOffset.y / _cellSize.y;
+	// Loop to handle the cell rows of the visible display area one at a time
+	for (int yCtr = 0; yCtr < _cellsVisible.y; ++yCtr, yPos += ySize) {
+		int cellY = _mapOffset.y / _cellSize.y + yCtr;
 		
-		for (int idx = 0; idx > _cellsVisible.x; ++idx) {
-			int x = _cellOffset.x / _cellSize.x + idx;
+		// Loop to iterate through the horizontal visible cells to build up
+		// an entire cell high horizontal slice of the map
+		for (int xCtr = 0; xCtr < _cellsVisible.x; ++xCtr) {
+			int cellX = _mapOffset.x / _cellSize.x + xCtr;
 
-			int cell = getCellFromCellXY(Common::Point(x, y));
+			// Get the type of content to display in the cell
+			int cell = getCellFromCellXY(Common::Point(cellX, cellY));
 			if (cell >= 0) {
 				int frameNum = (cell % _frameCount) + 1;
 				int rlbNum = (cell % _resCount) / _frameCount + 1;
@@ -1392,33 +1396,37 @@ void MazeUI::draw() {
 				visage.setVisage(resNum, rlbNum);
 				GfxSurface frame = visage.getFrame(frameNum);
 
-				_mapImage.copyFrom(frame, 0, idx);
+				_mapImage.copyFrom(frame, xCtr * _cellSize.x, 0);
 			} else {
 				GfxSurface emptyRect;
 				emptyRect.create(_cellSize.x, _cellSize.y);
 
-				_mapImage.copyFrom(emptyRect, 0, idx);
+				_mapImage.copyFrom(emptyRect, xCtr * _cellSize.x, 0);
 			}
 		}
 
 		if (yPos == 0) {
+			// First line of the map to be displayed - only the bottom portion of that
+			// first cell row may be visible
 			yPos = _displayBounds.top;
-			yInc = _cellSize.y - (_cellOffset.y % _cellSize.y); 
+			ySize = _cellSize.y - (_mapOffset.y % _cellSize.y); 
 
-			Rect srcBounds(_cellOffset.x % _cellSize.x, _cellOffset.y % _cellSize.y, 
-				(_cellOffset.x % _cellSize.x) + _displayBounds.width(), (_cellOffset.y % _cellSize.y) + yInc);
-			Rect destBounds(_displayBounds.left, yPos, _displayBounds.right, yPos + yInc);
+			Rect srcBounds(_mapOffset.x % _cellSize.x, _mapOffset.y % _cellSize.y,
+				(_mapOffset.x % _cellSize.x) + _displayBounds.width(), _cellSize.y);
+			Rect destBounds(_displayBounds.left, yPos, _displayBounds.right, yPos + ySize);
 
 			R2_GLOBALS.gfxManager().copyFrom(_mapImage, srcBounds, destBounds);
 		} else {
 			if ((yPos + _cellSize.y) < _displayBounds.bottom) {
-				yInc = _cellSize.y;
+				ySize = _cellSize.y;
 			} else {
-				yInc = _displayBounds.bottom - yPos;
+				ySize = _displayBounds.bottom - yPos;
 			}
 
-			Rect srcBounds(0, _cellOffset.x, _displayBounds.width(), _cellOffset.x + yInc); 
-			Rect destBounds(_displayBounds.left, yPos, _displayBounds.right, yPos + yInc);
+			Rect srcBounds(_mapOffset.x % _cellSize.x, 0,
+				(_mapOffset.x % _cellSize.x) + _displayBounds.width(), ySize);
+			Rect destBounds(_displayBounds.left, yPos, _displayBounds.right, yPos + ySize);
+
 			R2_GLOBALS.gfxManager().copyFrom(_mapImage, srcBounds, destBounds);
 		}
 	}
@@ -1428,8 +1436,8 @@ int MazeUI::getCellFromPixelXY(const Common::Point &pt) {
 	if (!_displayBounds.contains(pt))
 		return -1;
 
-	int cellX = (pt.x - _displayBounds.left + _cellOffset.x) / _cellSize.x;
-	int cellY = (pt.y - _displayBounds.top + _cellOffset.y) / _cellSize.y;
+	int cellX = (pt.x - _displayBounds.left + _mapOffset.x) / _cellSize.x;
+	int cellY = (pt.y - _displayBounds.top + _mapOffset.y) / _cellSize.y;
 
 	if ((cellX >= 0) && (cellY >= 0) && (cellX < _mapCells.x) && (cellY < _mapCells.y))
 		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * cellY + cellX) * 2);
diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 76bea81..6829bec 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -293,7 +293,7 @@ public:
 	Common::Point _cellsVisible;
 	Common::Point _mapCells;
 	Common::Point _cellSize;
-	Common::Point _cellOffset;
+	Common::Point _mapOffset;
 	int _resNum;
 	int _cellsResNum;
 	int _frameCount;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 2b42cbd..115fc84 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3074,7 +3074,7 @@ int Scene3500::MazeUI3500::getCellFromMapXY(Common::Point pt) {
 
 bool Scene3500::MazeUI3500::seteMazePosition2(Common::Point &p) {
 	bool retVal = setMazePosition(p);
-	p = _cellOffset;
+	p = _mapOffset;
 
 	return retVal;
 }


Commit: 1e40570ec0f8b53f8cb3fd579c89f7956840175e
    https://github.com/scummvm/scummvm/commit/1e40570ec0f8b53f8cb3fd579c89f7956840175e
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T05:16:40-07:00

Commit Message:
TSAGE: Fix handle leak in resource manager

Changed paths:
    engines/tsage/core.cpp



diff --git a/engines/tsage/core.cpp b/engines/tsage/core.cpp
index 4a90e23..131b70c 100644
--- a/engines/tsage/core.cpp
+++ b/engines/tsage/core.cpp
@@ -3157,6 +3157,8 @@ void Visage::setVisage(int resNum, int rlbNum) {
 				_flipHoriz = flags & 1;
 
 				_data = g_resourceManager->getResource(RES_VISAGE, resNum, rlbNum);
+
+				DEALLOCATE(indexData);
 			}
 		}
 


Commit: 8ec07246e605d4be6abc935fd50ff05b1af9035a
    https://github.com/scummvm/scummvm/commit/8ec07246e605d4be6abc935fd50ff05b1af9035a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T05:39:26-07:00

Commit Message:
TSAGE: Fix to display R2R maze map correctly

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index ba7ae4e3..3f062d0 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1387,7 +1387,7 @@ void MazeUI::draw() {
 			int cellX = _mapOffset.x / _cellSize.x + xCtr;
 
 			// Get the type of content to display in the cell
-			int cell = getCellFromCellXY(Common::Point(cellX, cellY));
+			int cell = getCellFromCellXY(Common::Point(cellX, cellY)) - 1;
 			if (cell >= 0) {
 				int frameNum = (cell % _frameCount) + 1;
 				int rlbNum = (cell % _resCount) / _frameCount + 1;


Commit: 45ea2e0979d6329e5e978dda6438d3154956c6ac
    https://github.com/scummvm/scummvm/commit/45ea2e0979d6329e5e978dda6438d3154956c6ac
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T06:44:42-07:00

Commit Message:
TSAGE: Starting to move in R2R scene 3500 maze

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes3.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.h



diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 115fc84..55303cf 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3072,7 +3072,7 @@ int Scene3500::MazeUI3500::getCellFromMapXY(Common::Point pt) {
 		return -1;
 }
 
-bool Scene3500::MazeUI3500::seteMazePosition2(Common::Point &p) {
+bool Scene3500::MazeUI3500::setMazePosition2(Common::Point &p) {
 	bool retVal = setMazePosition(p);
 	p = _mapOffset;
 
@@ -3083,14 +3083,14 @@ Scene3500::Scene3500() {
 	_fieldAF8 = 0;
 	_fieldB9E = 0;
 	_rotation = NULL;
-	_field126E = 0;
+	_mazeChangeAmount = 0;
 	_field1270 = 0;
 	_field1272 = 0;
 	_field1274 = 0;
 	_field1276 = 0;
 	_field1278 = 0;
-	_position1.x = 0;
-	_position1.y = 0;
+	_mazePosition.x = 0;
+	_mazePosition.y = 0;
 	_field127E = 0;
 	_field1280 = 0;
 	_field1282 = 0;
@@ -3104,14 +3104,14 @@ void Scene3500::synchronize(Serializer &s) {
 
 	s.syncAsSint16LE(_fieldAF8);
 	s.syncAsSint16LE(_fieldB9E);
-	s.syncAsSint16LE(_field126E);
+	s.syncAsSint16LE(_mazeChangeAmount);
 	s.syncAsSint16LE(_field1270);
 	s.syncAsSint16LE(_field1272);
 	s.syncAsSint16LE(_field1274);
 	s.syncAsSint16LE(_field1276);
 	s.syncAsSint16LE(_field1278);
-	s.syncAsSint16LE(_position1.x);
-	s.syncAsSint16LE(_position1.y);
+	s.syncAsSint16LE(_mazePosition.x);
+	s.syncAsSint16LE(_mazePosition.y);
 	s.syncAsSint16LE(_field127E);
 	s.syncAsSint16LE(_field1280);
 	s.syncAsSint16LE(_field1282);
@@ -3207,7 +3207,7 @@ void Scene3500::Action1::signal() {
 		scene->_field1286 = 0;
 		if (scene->_field1270 != 0) {
 			scene->_field1270 = 0;
-			scene->_field126E = 0;
+			scene->_mazeChangeAmount = 0;
 			scene->_field1272 = 0;
 			scene->_rotation->_idxChange = 0;
 		}
@@ -3224,11 +3224,11 @@ void Scene3500::Action1::signal() {
 		setDelay(1);
 		break;
 	case 4: {
-		int si = scene->_mazeUI.getCellFromMapXY(Common::Point(scene->_position1.x + 70, scene->_position1.y + 46));
-		int var2 = scene->_mazeUI.cellFromX(scene->_position1.x + 70) - 70;
-		int var4 = scene->_mazeUI.cellFromY(scene->_position1.y + 46) - 46;
-		int di = abs(var2 - scene->_position1.x);
-		int var6 = abs(var4 - scene->_position1.y);
+		int si = scene->_mazeUI.getCellFromMapXY(Common::Point(scene->_mazePosition.x + 70, scene->_mazePosition.y + 46));
+		int var2 = scene->_mazeUI.cellFromX(scene->_mazePosition.x + 70) - 70;
+		int var4 = scene->_mazeUI.cellFromY(scene->_mazePosition.y + 46) - 46;
+		int di = abs(var2 - scene->_mazePosition.x);
+		int var6 = abs(var4 - scene->_mazePosition.y);
 
 		if ((scene->_actor1._frame % 2) != 0) {
 			scene->_actor1._frameChange = _field1E;
@@ -3296,14 +3296,14 @@ void Scene3500::Action1::signal() {
 	// No break on purpose
 	case 2: {
 		scene->_actor8.setPosition(Common::Point(160, 73));
-		scene->_actor8._moveDiff.x = 160 - scene->_field126E;
+		scene->_actor8._moveDiff.x = 160 - scene->_mazeChangeAmount;
 		scene->_fieldAF8 = 160 - ((_field1E * 2) * 160);
 		Common::Point pt(scene->_fieldAF8, 73);
 		NpcMover *mover = new NpcMover();
 		scene->_actor8.addMover(mover, &pt, this);
 
 		scene->_actor9.setPosition(Common::Point(160 + ((_field1E * 2) * 160), 73));
-		scene->_actor9._moveDiff.x = 160 - scene->_field126E;
+		scene->_actor9._moveDiff.x = 160 - scene->_mazeChangeAmount;
 		scene->_fieldB9E = 160;
 		Common::Point pt2(scene->_fieldB9E, 73);
 		NpcMover *mover2 = new NpcMover();
@@ -3361,12 +3361,12 @@ void Scene3500::Action1::signal() {
 		case 0:
 		// No break on purpose
 		case 4:
-			scene->_position1.x = scene->_mazeUI.cellFromX(scene->_position1.x + 70) - 70;
+			scene->_mazePosition.x = scene->_mazeUI.cellFromX(scene->_mazePosition.x + 70) - 70;
 			break;
 		case 2:
 		// No break on purpose
 		case 6:
-			scene->_position1.y = scene->_mazeUI.cellFromY(scene->_position1.y + 46) - 46;
+			scene->_mazePosition.y = scene->_mazeUI.cellFromY(scene->_mazePosition.y + 46) - 46;
 			break;
 		default:
 			break;
@@ -3376,7 +3376,7 @@ void Scene3500::Action1::signal() {
 		_field24 = 0;
 		if (_field20 == 0) {
 			scene->_actor7.sub1094ED();
-			if (scene->_field126E == scene->_field1270)
+			if (scene->_mazeChangeAmount == scene->_field1270)
 				scene->_aSound1.play(276);
 		}
 		break;
@@ -3424,7 +3424,7 @@ void Scene3500::Action1::dispatch() {
 	Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene;
 
 	Action::dispatch();
-	if ((_actionIndex == 1) && (scene->_field126E <= 4)) {
+	if ((_actionIndex == 1) && (scene->_mazeChangeAmount <= 4)) {
 		scene->_rotation->_idxChange = 0;
 		signal();
 	}
@@ -3460,17 +3460,17 @@ void Scene3500::Action2::signal() {
 			di = scene->_fieldB9E;
 		}
 
-		scene->_actor8._moveDiff.y = 9 - (scene->_field126E / 2);
+		scene->_actor8._moveDiff.y = 9 - (scene->_mazeChangeAmount / 2);
 		Common::Point pt(si, 73 - (_field1E * 12));
 		NpcMover *mover = new NpcMover();
 		scene->_actor8.addMover(mover, &pt, NULL);
 
-		scene->_actor9._moveDiff.y = 9 - (scene->_field126E / 2);
+		scene->_actor9._moveDiff.y = 9 - (scene->_mazeChangeAmount / 2);
 		Common::Point pt2(di, 73 - (_field1E * 12));
 		NpcMover *mover2 = new NpcMover();
 		scene->_actor9.addMover(mover2, &pt2, NULL);
-		scene->_field126E = (scene->_field126E / 2) + (scene->_field126E % 2);
-		setDelay(17 - scene->_field126E);
+		scene->_mazeChangeAmount = (scene->_mazeChangeAmount / 2) + (scene->_mazeChangeAmount % 2);
+		setDelay(17 - scene->_mazeChangeAmount);
 		}
 		break;
 	case 1: {
@@ -3485,12 +3485,12 @@ void Scene3500::Action2::signal() {
 
 		scene->_actor7.sub1094ED();
 
-		scene->_actor8._moveDiff.y = 9 - (scene->_field126E / 2);
+		scene->_actor8._moveDiff.y = 9 - (scene->_mazeChangeAmount / 2);
 		Common::Point pt(si, 73);
 		NpcMover *mover = new NpcMover();
 		scene->_actor8.addMover(mover, &pt, NULL);
 
-		scene->_actor9._moveDiff.y = 9 - (scene->_field126E / 2);
+		scene->_actor9._moveDiff.y = 9 - (scene->_mazeChangeAmount / 2);
 		Common::Point pt2(di, 73);
 		NpcMover *mover2 = new NpcMover();
 		scene->_actor9.addMover(mover2, &pt2, NULL);
@@ -3581,9 +3581,9 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_field1278 = 0;
 	_field1272 = 1;
 	_field1270 = 4;
-	_field126E = 4;
-	_position1.x = 860;
-	_position1.y = 891;
+	_mazeChangeAmount = 4;
+	_mazePosition.x = 860;
+	_mazePosition.y = 891;
 	_rotation = R2_GLOBALS._scenePalette.addRotation(240, 254, -1);
 	_rotation->setDelay(0);
 	_rotation->_idxChange = 1;
@@ -3661,7 +3661,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_actor6.hide();
 
 	_actor2.postInit();
-	_actor2.setup(1004, 4, _field126E + 1);
+	_actor2.setup(1004, 4, _mazeChangeAmount + 1);
 	_actor2.setPosition(Common::Point(126, 137));
 	_actor2.fixPriority(200);
 
@@ -3672,7 +3672,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 
 	_mazeUI.setDisplayBounds(Rect(160, 89, 299, 182));
 	_mazeUI.load(2);
-	_mazeUI.setMazePosition(_position1);
+	_mazeUI.setMazePosition(_mazePosition);
 
 	_action1._field24 = 0;
 	_mazeUI.draw();
@@ -3806,90 +3806,90 @@ void Scene3500::dispatch() {
 	if (!_rotation)
 		return;
 
-	int var127A = 0;
-	int di = 0;
+	int newMazeX = 0;
+	int newMazeY = 0;
 	int var_4 = 0;
 	int var_6 = 0;
 	int var_8 = 0;
 	int var_a = 0;
 	int dx = 0;
-	int tmpVar = 0;
+	int cellId = 0;
 
-	if ((_field126E == 0) && (_field1282 == 0)) {
+	if ((_mazeChangeAmount == 0) && (_field1282 == 0)) {
 		if (_field1284 == 2)
 			R2_GLOBALS._sceneManager.changeScene(1000);
 	} else {
 		_field1282 = 0;
 		tmpRect.set(160, 89, 299, 182);
 
-		var127A = _position1.x;
-		di = _position1.y;
+		newMazeX = _mazePosition.x;
+		newMazeY = _mazePosition.y;
 		var_4 = _mazeUI.cellFromX(70) - 70;
-		var_6 = _mazeUI.cellFromY(_position1.y + 46) - 46;
-		var_8 = abs(var_4 - var127A);
-		var_a = abs(var_6 - di);
+		var_6 = _mazeUI.cellFromY(_mazePosition.y + 46) - 46;
+		var_8 = abs(var_4 - newMazeX);
+		var_a = abs(var_6 - newMazeY);
 		dx = 0;
 
-		switch (_field1276) {
+		switch (_field1276 - 1) {
 		case 0:
-			tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, 46));
-			if (    ((tmpVar == 2) || (tmpVar == 3) || (tmpVar == 6) || (tmpVar == 1))
-				|| (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 > 3)) ) {
+			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+			if (    ((cellId == 2) || (cellId == 3) || (cellId == 6) || (cellId == 1))
+				|| (((cellId == 25) || (cellId == 26) || (cellId == 5) || (cellId == 14) || (cellId == 15)) && (var_8 > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
 				_rotation->_idxChange = 0;
 				_field1270 = 0;
-				_field126E = 0;
+				_mazeChangeAmount = 0;
 				_field1272 = 0;
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_6 = _mazeUI.cellFromY(di + 46) - 46;
-				di = _position1.y - _field126E;
-				dx = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-				if (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4)) && (tmpVar != dx)) {
-					di = var_6;
+				var_6 = _mazeUI.cellFromY(newMazeY + 46) - 46;
+				newMazeY = _mazePosition.y - _mazeChangeAmount;
+				dx = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+				if (((cellId == 23) || (cellId == 24) || (cellId == 4)) && (cellId != dx)) {
+					newMazeY = var_6;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
-				} else if ((tmpVar == 11) && (tmpVar != dx)) {
-					di = var_6 + 3;
+				} else if ((cellId == 11) && (cellId != dx)) {
+					newMazeY = var_6 + 3;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_6 = _mazeUI.cellFromY(di + 46) - 46;
-					var_a = abs(var_6 - di);
-					tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-
-					if ( (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4)) && (di <= var_6) && (_position1.y>= var_6))
-						|| (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)) && (_field126E >= var_a) && (_field126E > 3) && (_action1._field24 != 0)) ) {
-						di = var_6;
-						if ((tmpVar != 25) && (tmpVar != 26) && (tmpVar != 5) && (tmpVar != 14) && (tmpVar == 15))
+					var_6 = _mazeUI.cellFromY(newMazeY + 46) - 46;
+					var_a = abs(var_6 - newMazeY);
+					cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+
+					if ( (((cellId == 23) || (cellId == 24) || (cellId == 4)) && (newMazeY <= var_6) && (_mazePosition.y>= var_6))
+						|| (((cellId == 25) || (cellId == 26) || (cellId == 5) || (cellId == 14) || (cellId == 15)) && (_mazeChangeAmount >= var_a) && (_mazeChangeAmount > 3) && (_action1._field24 != 0)) ) {
+						newMazeY = var_6;
+						if ((cellId != 25) && (cellId != 26) && (cellId != 5) && (cellId != 14) && (cellId == 15))
 							R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 11) && (var_6 + 3 >= di) && (_position1.y >= var_6 + 3)) {
+					} else if ((cellId == 11) && (var_6 + 3 >= newMazeY) && (_mazePosition.y >= var_6 + 3)) {
 						R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 != 0) && (var_8 <= 3)) {
-						var127A = var_4;
+					} else if (((cellId == 25) || (cellId == 26) || (cellId == 5) || (cellId == 14) || (cellId == 15)) && (var_8 != 0) && (var_8 <= 3)) {
+						newMazeX = var_4;
 						R2_GLOBALS._sound2.play(339);
 					} else {
 						// Nothing
@@ -3898,64 +3898,64 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 2:
-			tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-			if (  ((tmpVar == 12) || (tmpVar == 13) || (tmpVar == 11) || (tmpVar == 16) || (tmpVar == 31))
-			  || (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4)) && (var_a > 3)) ) {
+			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+			if (  ((cellId == 12) || (cellId == 13) || (cellId == 11) || (cellId == 16) || (cellId == 31))
+			  || (((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4)) && (var_a > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
 				_rotation->_idxChange = 0;
 				_field1270 = 0;
-				_field126E = 0;
+				_mazeChangeAmount = 0;
 				_field1272 = 0;
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_4 = _mazeUI.cellFromX(var127A + 70) - 70;
-				var127A = _position1.x + _field126E;
-				dx = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-				if (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15)) && (tmpVar != dx)) {
-					var127A = var_4;
+				var_4 = _mazeUI.cellFromX(newMazeX + 70) - 70;
+				newMazeX = _mazePosition.x + _mazeChangeAmount;
+				dx = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+				if (((cellId == 26) || (cellId == 24) || (cellId == 15)) && (cellId != dx)) {
+					newMazeX = var_4;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
-				} else if ((tmpVar == 6) && (tmpVar != dx)) {
-					var127A = var_4 - 5;
+				} else if ((cellId == 6) && (cellId != dx)) {
+					newMazeX = var_4 - 5;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_4 = _mazeUI.cellFromX(var127A + 70) - 70;
-					var_8 = abs(var127A - var_4);
-					tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, tmpVar + 46));
-					if ( (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15)) && (var127A >= var_4) && (_position1.x <= var_4))
-						|| (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4)) && (_field126E >= var_8) && (_field126E <= 3) && (_action1._field24 != 0)) ) {
-						var127A = var_4;
-						if ((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4))
+					var_4 = _mazeUI.cellFromX(newMazeX + 70) - 70;
+					var_8 = abs(newMazeX - var_4);
+					cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, cellId + 46));
+					if ( (((cellId == 26) || (cellId == 24) || (cellId == 15)) && (newMazeX >= var_4) && (_mazePosition.x <= var_4))
+						|| (((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4)) && (_mazeChangeAmount >= var_8) && (_mazeChangeAmount <= 3) && (_action1._field24 != 0)) ) {
+						newMazeX = var_4;
+						if ((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4))
 							R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 6) && (var_4 - 5 <= var127A) && (_position1.x <= var_4 - 5)) {
-						var127A = var_4 - 5;
+					} else if ((cellId == 6) && (var_4 - 5 <= newMazeX) && (_mazePosition.x <= var_4 - 5)) {
+						newMazeX = var_4 - 5;
 						R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4)) && (var_a != 0) && (var_a <= 3)) {
-						di = var_6;
+					} else if (((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4)) && (var_a != 0) && (var_a <= 3)) {
+						newMazeY = var_6;
 						R2_GLOBALS._sound2.play(339);
 					} else {
 						// Nothing
@@ -3964,83 +3964,83 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 4:
-			tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-			if (  ((tmpVar == 2) || (tmpVar == 3) || (tmpVar == 6) || (tmpVar == 1))
-			  || (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 > 3)) ) {
+			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+			if (  ((cellId == 2) || (cellId == 3) || (cellId == 6) || (cellId == 1))
+			  || (((cellId == 23) || (cellId == 24) || (cellId == 4) || (cellId == 14) || (cellId == 15)) && (var_8 > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
 				_rotation->_idxChange = 0;
 				_field1270 = 0;
-				_field126E = 0;
+				_mazeChangeAmount = 0;
 				_field1272 = 0;
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_6 = _mazeUI.cellFromY(di + 46) - 46;
-				di = _position1.y + _field126E;
-				dx = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-				if (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5)) && (tmpVar == dx)) {
+				var_6 = _mazeUI.cellFromY(newMazeY + 46) - 46;
+				newMazeY = _mazePosition.y + _mazeChangeAmount;
+				dx = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+				if (((cellId == 25) || (cellId == 26) || (cellId == 5)) && (cellId == dx)) {
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
-				} else if ((tmpVar == 16) && (tmpVar == dx)) {
-					di = var_6 - 3;
+				} else if ((cellId == 16) && (cellId == dx)) {
+					newMazeY = var_6 - 3;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
-				} else if ((tmpVar == 31) && (tmpVar == dx)) {
-					di = var_6 + 4;
+				} else if ((cellId == 31) && (cellId == dx)) {
+					newMazeY = var_6 + 4;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_6 = _mazeUI.cellFromY(di + 46) - 46;
-					var_a = abs(di - var_6);
-					tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-					if ( (((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5)) && (di >= var_6) && (_position1.y <= var_6))
-					  || (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)) && (_field126E >= var_a) && (_field126E <= 3) && (_action1._field24 != 0)) ){
-						if ((tmpVar != 23) && (tmpVar != 24) && (tmpVar != 4) && (tmpVar != 14) && (tmpVar != 15))
+					var_6 = _mazeUI.cellFromY(newMazeY + 46) - 46;
+					var_a = abs(newMazeY - var_6);
+					cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+					if ( (((cellId == 25) || (cellId == 26) || (cellId == 5)) && (newMazeY >= var_6) && (_mazePosition.y <= var_6))
+					  || (((cellId == 23) || (cellId == 24) || (cellId == 4) || (cellId == 14) || (cellId == 15)) && (_mazeChangeAmount >= var_a) && (_mazeChangeAmount <= 3) && (_action1._field24 != 0)) ){
+						if ((cellId != 23) && (cellId != 24) && (cellId != 4) && (cellId != 14) && (cellId != 15))
 							R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 16) && (var_6 - 3 <= di) && (_position1.y <= var_6 - 3)) {
-						di = var_6 - 3;
+					} else if ((cellId == 16) && (var_6 - 3 <= newMazeY) && (_mazePosition.y <= var_6 - 3)) {
+						newMazeY = var_6 - 3;
 						R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 31) && (var_6 + 4 <= di) && (_position1.y <= var_6 + 4)) {
-						di = var_6 + 4;
+					} else if ((cellId == 31) && (var_6 + 4 <= newMazeY) && (_mazePosition.y <= var_6 + 4)) {
+						newMazeY = var_6 + 4;
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-						if ((var127A == 660) && (_field126E + 306 <= di) && (di <= 307))
+						if ((newMazeX == 660) && (_mazeChangeAmount + 306 <= newMazeY) && (newMazeY <= 307))
 							 ++_field1284;
 						else
 							R2_GLOBALS._sound2.play(339);
-					} else if (((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)) && (var_8 != 0) && (var_8 <= 3)) {
-						var127A = var_4;
+					} else if (((cellId == 23) || (cellId == 24) || (cellId == 4) || (cellId == 14) || (cellId == 15)) && (var_8 != 0) && (var_8 <= 3)) {
+						newMazeX = var_4;
 						R2_GLOBALS._sound2.play(339);
 					} else {
 						// Nothing
@@ -4049,64 +4049,64 @@ void Scene3500::dispatch() {
 			}
 			break;
 		case 6:
-			tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-			if ( ((tmpVar == 12) || (tmpVar == 13) || (tmpVar == 11) || (tmpVar == 16) || (tmpVar == 31))
-			 || (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4)) && (var_a > 3)) ) {
+			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+			if ( ((cellId == 12) || (cellId == 13) || (cellId == 11) || (cellId == 16) || (cellId == 31))
+			 || (((cellId == 26) || (cellId == 24) || (cellId == 15) || (cellId == 5) || (cellId == 4)) && (var_a > 3)) ) {
 				R2_GLOBALS._sound2.play(339);
 				_rotation->_idxChange = 0;
 				_field1270 = 0;
-				_field126E = 0;
+				_mazeChangeAmount = 0;
 				_field1272 = 0;
 				if (_action1._field24 == 0)
 					_actor8.hide();
 			} else {
-				var_4 = _mazeUI.cellFromX(var127A + 70) - 70;
-				var127A = _position1.x - _field126E;
-				dx = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-				if (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14)) && (tmpVar != dx)) {
-					var127A = var_4;
+				var_4 = _mazeUI.cellFromX(newMazeX + 70) - 70;
+				newMazeX = _mazePosition.x - _mazeChangeAmount;
+				dx = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+				if (((cellId == 25) || (cellId == 23) || (cellId == 14)) && (cellId != dx)) {
+					newMazeX = var_4;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
-				} else if ((tmpVar == 1) && (tmpVar != dx)) {
-					var127A = var_4 + 5;
+				} else if ((cellId == 1) && (cellId != dx)) {
+					newMazeX = var_4 + 5;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
-					_field126E = 0;
+					_mazeChangeAmount = 0;
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
 				} else {
-					var_4 = _mazeUI.cellFromX(var127A + 70) - 70;
-					var_8 = abs(var_4 - var127A);
-					tmpVar = _mazeUI.getCellFromMapXY(Common::Point(var127A + 70, di + 46));
-					if ( (((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14)) && (var127A <= var_4) && (_position1.x >= var_4))
-					  || (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4)) && (_field126E >= var_8) && (_field126E <= 3) && (_action1._field24 != 0)) ) {
-						var127A = var_4;
-						if ((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4))
+					var_4 = _mazeUI.cellFromX(newMazeX + 70) - 70;
+					var_8 = abs(var_4 - newMazeX);
+					cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
+					if ( (((cellId == 25) || (cellId == 23) || (cellId == 14)) && (newMazeX <= var_4) && (_mazePosition.x >= var_4))
+					  || (((cellId == 26) || (cellId == 24) || (cellId == 15) || (cellId == 5) || (cellId == 4)) && (_mazeChangeAmount >= var_8) && (_mazeChangeAmount <= 3) && (_action1._field24 != 0)) ) {
+						newMazeX = var_4;
+						if ((cellId == 26) || (cellId == 24) || (cellId == 15) || (cellId == 5) || (cellId == 4))
 							R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if ((tmpVar == 1) && (var127A >= var_4 + 5) && (_position1.x >= var_4 + 5)) {
-						var127A = var_4 + 5;
+					} else if ((cellId == 1) && (newMazeX >= var_4 + 5) && (_mazePosition.x >= var_4 + 5)) {
+						newMazeX = var_4 + 5;
 						R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
 						_field1270 = 0;
-						_field126E = 0;
+						_mazeChangeAmount = 0;
 						_field1272 = 0;
 						if (_action1._field24 == 0)
 							_actor8.hide();
-					} else if (((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4)) && (var_a != 0) && (var_a <= 3)) {
-						di = var_6;
+					} else if (((cellId == 26) || (cellId == 24) || (cellId == 15) || (cellId == 5) || (cellId == 4)) && (var_a != 0) && (var_a <= 3)) {
+						newMazeY = var_6;
 						R2_GLOBALS._sound2.play(339);
 					} else {
 						// Nothing
@@ -4119,11 +4119,11 @@ void Scene3500::dispatch() {
 		}
 
 		if (_field1284 < 2) {
-			_position1.x = var127A;
-			_position1.y = di;
-			if (_mazeUI.seteMazePosition2(_position1) != 0) {
+			_mazePosition.x = newMazeX;
+			_mazePosition.y = newMazeY;
+			if (_mazeUI.setMazePosition2(_mazePosition) != 0) {
 				_field1272 = 0;
-				_field126E = 0;
+				_mazeChangeAmount = 0;
 				_field1270 = 0;
 				_rotation->setDelay(0);
 				_rotation->_idxChange = 0;
@@ -4136,32 +4136,32 @@ void Scene3500::dispatch() {
 	}
 
 	if (_field1272 == 0) {
-		if (_field126E != _field1270) {
-			if (_field126E >= _field1270) {
-				if (_field126E == 1) {
+		if (_mazeChangeAmount != _field1270) {
+			if (_mazeChangeAmount >= _field1270) {
+				if (_mazeChangeAmount == 1) {
 					if (_action1._field24 != 0) {
-						if ( ((_field1276 == 1) && (var_8 == 0) && (var_a != 0) && (var_a <= 3) && ((tmpVar == 25) || (tmpVar == 26) || (tmpVar == 5) || (tmpVar == 14) || (tmpVar == 15)))
-						  || ((_field1276 == 3) && (var_a == 0) && (var_8 != 0) && (var_8 <= 3) && ((tmpVar == 25) || (tmpVar == 23) || (tmpVar == 14) || (tmpVar == 5) || (tmpVar == 4)))
-						  || ((_field1276 == 5) && (var_8 == 0) && (var_a != 0) && (var_a <= 3) && ((tmpVar == 23) || (tmpVar == 24) || (tmpVar == 4) || (tmpVar == 14) || (tmpVar == 15)))
-						  || ((_field1276 == 7) && (var_a == 0) && (var_8 != 0) && (var_8 <= 3) && ((tmpVar == 26) || (tmpVar == 24) || (tmpVar == 15) || (tmpVar == 5) || (tmpVar == 4))) ){
-							_field126E = 1;
+						if ( ((_field1276 == 1) && (var_8 == 0) && (var_a != 0) && (var_a <= 3) && ((cellId == 25) || (cellId == 26) || (cellId == 5) || (cellId == 14) || (cellId == 15)))
+						  || ((_field1276 == 3) && (var_a == 0) && (var_8 != 0) && (var_8 <= 3) && ((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4)))
+						  || ((_field1276 == 5) && (var_8 == 0) && (var_a != 0) && (var_a <= 3) && ((cellId == 23) || (cellId == 24) || (cellId == 4) || (cellId == 14) || (cellId == 15)))
+						  || ((_field1276 == 7) && (var_a == 0) && (var_8 != 0) && (var_8 <= 3) && ((cellId == 26) || (cellId == 24) || (cellId == 15) || (cellId == 5) || (cellId == 4))) ){
+							_mazeChangeAmount = 1;
 						} else
-							_field126E--;
+							_mazeChangeAmount--;
 					} else
-						_field126E--;
+						_mazeChangeAmount--;
 				} else
-					_field126E--;
+					_mazeChangeAmount--;
 			} else
-				++_field126E;
+				++_mazeChangeAmount;
 			_field1272 = 1;
 		}
-		_actor2.setFrame2(_field126E);
+		_actor2.setFrame2(_mazeChangeAmount);
 	}
 
 	if (_field1272 == 1) {
-		if (_field126E == 0)
+		if (_mazeChangeAmount == 0)
 			_rotation->_idxChange = 0;
-		else if (_field126E > 8)
+		else if (_mazeChangeAmount > 8)
 			_rotation->_idxChange = 2;
 		else
 			_rotation->_idxChange = 1;
@@ -4170,9 +4170,9 @@ void Scene3500::dispatch() {
 	if (_field1272 != 0)
 		_field1272--;
 
-	if (_field126E != 0) {
+	if (_mazeChangeAmount != 0) {
 		R2_GLOBALS._player._uiEnabled = false;
-		if (_field126E != _field1270)
+		if (_mazeChangeAmount != _field1270)
 			_aSound1.play(276);
 	} else {
 		R2_GLOBALS._player._uiEnabled = true;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index 6d7347d..ead2d3b 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -638,7 +638,7 @@ class Scene3500 : public SceneExt {
 		int cellFromX(int arg1);
 		int cellFromY(int arg1);
 		int getCellFromMapXY(Common::Point pt);
-		bool seteMazePosition2(Common::Point &p);
+		bool setMazePosition2(Common::Point &p);
 	};
 public:
 	Action1 _action1;
@@ -666,13 +666,13 @@ public:
 	int _fieldAF8;
 	int _fieldB9E;
 	PaletteRotation *_rotation;
-	int _field126E;
+	int _mazeChangeAmount;
 	int _field1270;
 	int _field1272;
 	int _field1274;
 	int _field1276;
 	int _field1278;
-	Common::Point _position1;
+	Common::Point _mazePosition;
 	int _field127E;
 	int _field1280;
 	int _field1282;


Commit: 755f6c30a26cb3de583fcb917db36f4b4f07aa5c
    https://github.com/scummvm/scummvm/commit/755f6c30a26cb3de583fcb917db36f4b4f07aa5c
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T07:02:37-07:00

Commit Message:
TSAGE: Fix moving past intersection in R2R scene 3500 maze

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 55303cf..4590ad9 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3824,7 +3824,7 @@ void Scene3500::dispatch() {
 
 		newMazeX = _mazePosition.x;
 		newMazeY = _mazePosition.y;
-		var_4 = _mazeUI.cellFromX(70) - 70;
+		var_4 = _mazeUI.cellFromX(newMazeX + 70) - 70;
 		var_6 = _mazeUI.cellFromY(_mazePosition.y + 46) - 46;
 		var_8 = abs(var_4 - newMazeX);
 		var_a = abs(var_6 - newMazeY);
@@ -3833,8 +3833,8 @@ void Scene3500::dispatch() {
 		switch (_field1276 - 1) {
 		case 0:
 			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
-			if (    ((cellId == 2) || (cellId == 3) || (cellId == 6) || (cellId == 1))
-				|| (((cellId == 25) || (cellId == 26) || (cellId == 5) || (cellId == 14) || (cellId == 15)) && (var_8 > 3)) ) {
+			if (((cellId == 2) || (cellId == 3) || (cellId == 6) || (cellId == 1)) ||
+					((cellId == 25 || cellId == 26 || cellId == 5 || cellId == 14 || cellId == 15) && var_8 > 3)) {
 				R2_GLOBALS._sound2.play(339);
 				_rotation->_idxChange = 0;
 				_field1270 = 0;


Commit: 8e77285bc7646333b1dc3878bee577c87a9edd19
    https://github.com/scummvm/scummvm/commit/8e77285bc7646333b1dc3878bee577c87a9edd19
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T07:28:21-07:00

Commit Message:
TSAGE: Set up a maze direction enum for R2R mazes

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.h
    engines/tsage/ringworld2/ringworld2_scenes3.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.h



diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 6829bec..17c85bb 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -276,6 +276,8 @@ public:
 	}
 };
 
+enum MazeDirection { MAZEDIR_NONE = 0, MAZEDIR_NORTH = 1, MAZEDIR_EAST = 3, MAZEDIR_SOUTH = 5, MAZEDIR_WEST = 7 };
+
 class MazeUI: public SavedObject {
 private:
 	void clear();
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 4590ad9..84ec927 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3087,7 +3087,7 @@ Scene3500::Scene3500() {
 	_field1270 = 0;
 	_field1272 = 0;
 	_field1274 = 0;
-	_field1276 = 0;
+	_mazeDirection = MAZEDIR_NONE;
 	_field1278 = 0;
 	_mazePosition.x = 0;
 	_mazePosition.y = 0;
@@ -3108,7 +3108,7 @@ void Scene3500::synchronize(Serializer &s) {
 	s.syncAsSint16LE(_field1270);
 	s.syncAsSint16LE(_field1272);
 	s.syncAsSint16LE(_field1274);
-	s.syncAsSint16LE(_field1276);
+	s.syncAsSint16LE(_mazeDirection);
 	s.syncAsSint16LE(_field1278);
 	s.syncAsSint16LE(_mazePosition.x);
 	s.syncAsSint16LE(_mazePosition.y);
@@ -3235,7 +3235,7 @@ void Scene3500::Action1::signal() {
 			scene->_actor1.setFrame(scene->_actor1.changeFrame());
 		}
 
-		int var8 = (scene->_action1._field1E * 2 + scene->_field1276);
+		int var8 = (scene->_action1._field1E * 2 + scene->_mazeDirection);
 		if (var8 > 7)
 			var8 = 1;
 		else if (var8 < 1)
@@ -3312,8 +3312,8 @@ void Scene3500::Action1::signal() {
 		break;
 	case 5:
 		scene->_actor1._frameChange = _field1E;
-		scene->_field1276 = scene->_actor1.changeFrame();
-		scene->_actor1.setFrame(scene->_field1276);
+		scene->_mazeDirection = scene->_actor1.changeFrame();
+		scene->_actor1.setFrame(scene->_mazeDirection);
 		setDelay(1);
 		break;
 	case 6:
@@ -3333,8 +3333,8 @@ void Scene3500::Action1::signal() {
 	case 7:
 		if ((scene->_actor1._frame % 2) == 0) {
 			scene->_actor1._frameChange = _field1E;
-			scene->_field1276 = scene->_actor1.changeFrame();
-			scene->_actor1.setFrame(scene->_field1276);
+			scene->_mazeDirection = scene->_actor1.changeFrame();
+			scene->_actor1.setFrame(scene->_mazeDirection);
 		}
 		setDelay(1);
 		break;
@@ -3350,7 +3350,7 @@ void Scene3500::Action1::signal() {
 		// but it's clearly a cut and paste error from case 4.
 		// The following code allows the switch to work properly.
 		warning("Checkme: fix for dead code");
-		int var_8 = (_field1E * 2 + scene->_field1276);
+		int var_8 = (_field1E * 2 + scene->_mazeDirection);
 		if (var_8 > 7)
 			var_8 = 1;
 		else if (var_8 < 1)
@@ -3637,8 +3637,8 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_item1.setDetails(Rect(0, 0, 320, 200), 3500, 0, -1, 2, 1, NULL);
 
 	_actor1.postInit();
-	_field1276 = 1;
-	_actor1.setup(1004, 1, _field1276);
+	_mazeDirection = 1;
+	_actor1.setup(1004, 1, _mazeDirection);
 	_actor1.setPosition(Common::Point(230, 135));
 	_actor1.fixPriority(200);
 	_actor1._frameChange = 1;
@@ -3794,7 +3794,7 @@ void Scene3500::dispatch() {
 
 	if (((_actor1._frame % 2) == 0) && (_action1._field24 == 0)) {
 		_actor1.setFrame(_actor1.changeFrame());
-		_field1276 = _actor1._frame;
+		_mazeDirection = _actor1._frame;
 	}
 	int oldField1278;
 	if ((_field1278 != 0) && (_action1._field24 == 0)) {
@@ -3830,8 +3830,8 @@ void Scene3500::dispatch() {
 		var_a = abs(var_6 - newMazeY);
 		dx = 0;
 
-		switch (_field1276 - 1) {
-		case 0:
+		switch (_mazeDirection) {
+		case MAZEDIR_NORTH:
 			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
 			if (((cellId == 2) || (cellId == 3) || (cellId == 6) || (cellId == 1)) ||
 					((cellId == 25 || cellId == 26 || cellId == 5 || cellId == 14 || cellId == 15) && var_8 > 3)) {
@@ -3897,7 +3897,7 @@ void Scene3500::dispatch() {
 				}
 			}
 			break;
-		case 2:
+		case MAZEDIR_EAST:
 			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
 			if (  ((cellId == 12) || (cellId == 13) || (cellId == 11) || (cellId == 16) || (cellId == 31))
 			  || (((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4)) && (var_a > 3)) ) {
@@ -3963,7 +3963,7 @@ void Scene3500::dispatch() {
 				}
 			}
 			break;
-		case 4:
+		case MAZEDIR_SOUTH:
 			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
 			if (  ((cellId == 2) || (cellId == 3) || (cellId == 6) || (cellId == 1))
 			  || (((cellId == 23) || (cellId == 24) || (cellId == 4) || (cellId == 14) || (cellId == 15)) && (var_8 > 3)) ) {
@@ -4048,7 +4048,7 @@ void Scene3500::dispatch() {
 				}
 			}
 			break;
-		case 6:
+		case MAZEDIR_WEST:
 			cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
 			if ( ((cellId == 12) || (cellId == 13) || (cellId == 11) || (cellId == 16) || (cellId == 31))
 			 || (((cellId == 26) || (cellId == 24) || (cellId == 15) || (cellId == 5) || (cellId == 4)) && (var_a > 3)) ) {
@@ -4140,10 +4140,10 @@ void Scene3500::dispatch() {
 			if (_mazeChangeAmount >= _field1270) {
 				if (_mazeChangeAmount == 1) {
 					if (_action1._field24 != 0) {
-						if ( ((_field1276 == 1) && (var_8 == 0) && (var_a != 0) && (var_a <= 3) && ((cellId == 25) || (cellId == 26) || (cellId == 5) || (cellId == 14) || (cellId == 15)))
-						  || ((_field1276 == 3) && (var_a == 0) && (var_8 != 0) && (var_8 <= 3) && ((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4)))
-						  || ((_field1276 == 5) && (var_8 == 0) && (var_a != 0) && (var_a <= 3) && ((cellId == 23) || (cellId == 24) || (cellId == 4) || (cellId == 14) || (cellId == 15)))
-						  || ((_field1276 == 7) && (var_a == 0) && (var_8 != 0) && (var_8 <= 3) && ((cellId == 26) || (cellId == 24) || (cellId == 15) || (cellId == 5) || (cellId == 4))) ){
+						if ( ((_mazeDirection == 1) && (var_8 == 0) && (var_a != 0) && (var_a <= 3) && ((cellId == 25) || (cellId == 26) || (cellId == 5) || (cellId == 14) || (cellId == 15)))
+						  || ((_mazeDirection == 3) && (var_a == 0) && (var_8 != 0) && (var_8 <= 3) && ((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4)))
+						  || ((_mazeDirection == 5) && (var_8 == 0) && (var_a != 0) && (var_a <= 3) && ((cellId == 23) || (cellId == 24) || (cellId == 4) || (cellId == 14) || (cellId == 15)))
+						  || ((_mazeDirection == 7) && (var_a == 0) && (var_8 != 0) && (var_8 <= 3) && ((cellId == 26) || (cellId == 24) || (cellId == 15) || (cellId == 5) || (cellId == 4))) ){
 							_mazeChangeAmount = 1;
 						} else
 							_mazeChangeAmount--;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index ead2d3b..ec4ea86 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -670,7 +670,7 @@ public:
 	int _field1270;
 	int _field1272;
 	int _field1274;
-	int _field1276;
+	int _mazeDirection;
 	int _field1278;
 	Common::Point _mazePosition;
 	int _field127E;


Commit: 0205c9754d25ff5858a383178176969fde23d8ca
    https://github.com/scummvm/scummvm/commit/0205c9754d25ff5858a383178176969fde23d8ca
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T12:23:38-07:00

Commit Message:
TSAGE: Added extra entries for diagonals to MazeDirection enum

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.h



diff --git a/engines/tsage/ringworld2/ringworld2_logic.h b/engines/tsage/ringworld2/ringworld2_logic.h
index 17c85bb..576482b 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.h
+++ b/engines/tsage/ringworld2/ringworld2_logic.h
@@ -276,7 +276,9 @@ public:
 	}
 };
 
-enum MazeDirection { MAZEDIR_NONE = 0, MAZEDIR_NORTH = 1, MAZEDIR_EAST = 3, MAZEDIR_SOUTH = 5, MAZEDIR_WEST = 7 };
+enum MazeDirection { MAZEDIR_NONE = 0, MAZEDIR_NORTH = 1, MAZEDIR_NORTHEAST = 2, MAZEDIR_EAST = 3,
+	MAZEDIR_SOUTHEAST = 4, MAZEDIR_SOUTH = 5, MAZEDIR_SOUTHWEST = 6, MAZEDIR_WEST = 7,
+	MAZEDIR_NORTHWEST = 8 };
 
 class MazeUI: public SavedObject {
 private:


Commit: 831c4db6df4c55eac9432819287acc8f903b4542
    https://github.com/scummvm/scummvm/commit/831c4db6df4c55eac9432819287acc8f903b4542
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T12:26:24-07:00

Commit Message:
TSAGE: Rearranged some of the R2R scene 3500 methods to group them

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 84ec927..74ec706 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -2978,226 +2978,6 @@ void Scene3500::Action1::sub108732(int arg1) {
 	}
 }
 
-/*--------------------------------------------------------------------------*/
-
-Scene3500::Action2::Action2() {
-	_field1E = 0;
-}
-
-void Scene3500::Action2::synchronize(Serializer &s) {
-	Action::synchronize(s);
-
-	s.syncAsSint16LE(_field1E);
-}
-
-/*--------------------------------------------------------------------------*/
-
-Scene3500::Item4::Item4() {
-	_field34 = 0;
-}
-
-void Scene3500::Item4::synchronize(Serializer &s) {
-	NamedHotspot::synchronize(s);
-
-	s.syncAsSint16LE(_field34);
-}
-
-/*--------------------------------------------------------------------------*/
-
-Scene3500::Actor7::Actor7() {
-	_fieldA4 = 0;
-	_fieldA6 = 0;
-	_fieldA8 = 0;
-	_fieldAA = 0;
-	_fieldAC = 0;
-	_fieldAE = 0;
-}
-
-void Scene3500::Actor7::synchronize(Serializer &s) {
-	SceneActor::synchronize(s);
-
-	s.syncAsSint16LE(_fieldA4);
-	s.syncAsSint16LE(_fieldA6);
-	s.syncAsSint16LE(_fieldA8);
-	s.syncAsSint16LE(_fieldAA);
-	s.syncAsSint16LE(_fieldAC);
-	s.syncAsSint16LE(_fieldAE);
-}
-
-void Scene3500::Actor7::sub109466(int arg1, int arg2, int arg3, int arg4, int arg5) {
-	_fieldAE = 0;
-	_fieldA4 = arg1;
-	_fieldA6 = arg2;
-	_fieldA8 = arg3;
-	_fieldAA = arg4;
-	_fieldAC = _fieldAA / _fieldA8;
-
-	postInit();
-	setup(1050, 3, 1);
-	fixPriority(255);
-	sub109663(arg5);
-}
-
-void Scene3500::Actor7::sub1094ED() {
-	Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene;
-
-	scene->_field1270 = _position.x - _fieldA4;
-}
-
-void Scene3500::Actor7::sub109663(int arg1){
-	sub109693(Common::Point(_fieldA4 + arg1, _fieldA6 - (_fieldAC * arg1)));
-}
-
-void Scene3500::Actor7::sub109693(Common::Point Pt) {
-	setPosition(Pt);
-}
-
-/*--------------------------------------------------------------------------*/
-
-int Scene3500::MazeUI3500::cellFromX(int x) {
-	return (_cellSize.x / 2) + x - (x % _cellSize.x);
-}
-
-int Scene3500::MazeUI3500::cellFromY(int y) {
-	return (_cellSize.y / 2) + y - (y % _cellSize.y);
-}
-
-int Scene3500::MazeUI3500::getCellFromMapXY(Common::Point pt) {
-	int cellX = pt.x / _cellSize.x;
-	int cellY = pt.y / _cellSize.y;
-
-	if ((cellX >= 0) && (cellY >= 0) && (cellX < _mapCells.x) && (cellY < _mapCells.y)) {
-		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * cellY + cellX) * 2);
-	} else
-		return -1;
-}
-
-bool Scene3500::MazeUI3500::setMazePosition2(Common::Point &p) {
-	bool retVal = setMazePosition(p);
-	p = _mapOffset;
-
-	return retVal;
-}
-
-Scene3500::Scene3500() {
-	_fieldAF8 = 0;
-	_fieldB9E = 0;
-	_rotation = NULL;
-	_mazeChangeAmount = 0;
-	_field1270 = 0;
-	_field1272 = 0;
-	_field1274 = 0;
-	_mazeDirection = MAZEDIR_NONE;
-	_field1278 = 0;
-	_mazePosition.x = 0;
-	_mazePosition.y = 0;
-	_field127E = 0;
-	_field1280 = 0;
-	_field1282 = 0;
-	_field1284 = 0;
-	_field1286 = 0;
-}
-
-void Scene3500::synchronize(Serializer &s) {
-	SceneExt::synchronize(s);
-	SYNC_POINTER(_rotation);
-
-	s.syncAsSint16LE(_fieldAF8);
-	s.syncAsSint16LE(_fieldB9E);
-	s.syncAsSint16LE(_mazeChangeAmount);
-	s.syncAsSint16LE(_field1270);
-	s.syncAsSint16LE(_field1272);
-	s.syncAsSint16LE(_field1274);
-	s.syncAsSint16LE(_mazeDirection);
-	s.syncAsSint16LE(_field1278);
-	s.syncAsSint16LE(_mazePosition.x);
-	s.syncAsSint16LE(_mazePosition.y);
-	s.syncAsSint16LE(_field127E);
-	s.syncAsSint16LE(_field1280);
-	s.syncAsSint16LE(_field1282);
-	s.syncAsSint16LE(_field1284);
-	s.syncAsSint16LE(_field1286);
-}
-
-void Scene3500::sub107F71(int arg1) {
-	switch (arg1) {
-	case -1:
-		_actor7.sub1094ED();
-		if (_field1270 != 0) {
-			_field1270--;
-			_actor7.sub109663(_field1270);
-		}
-		if (_action1._field24 != 0)
-			_field1270 = 0;
-		break;
-	case 1:
-		_actor7.sub1094ED();
-		if (_field1270 < 16) {
-			++_field1270;
-			_actor7.sub109663(_field1270);
-		}
-		if (_action1._field24 != 0)
-			_field1270 = 0;
-		break;
-	case 88:
-		if ((_action == 0) || (_action1._field24 == 0)) {
-		// The original makes a second useless check on action, skipped
-			_action2.sub10831F(2);
-			if ((_action) && ((_action2.getActionIndex() != 0) || (_action2._field1E != 2))) {
-				_action2.signal();
-			} else {
-				_actor9.setAction(&_action2, &_actor9, NULL);
-			}
-		}
-		break;
-	case 96:
-		if ((_action) && (_action1._field24 != 0) && (_action2._field1E != 1)) {
-			_field1278 = 0;
-			_action1.sub108732(0);
-		} else if ((_action) && (_field1278 == 0) && (_action1._field24 != 0)) {
-			_field1278 = arg1;
-		} else if ((_action) && (_action1._field24 == 0)) {
-			_action1.sub108670(1);
-			_action1.signal();
-		} else if (_action == 0) {
-			_action1.sub108670(1);
-			setAction(&_action1, &_actor1, NULL);
-		}
-		break;
-	case 104:
-		if ((_action == 0) || (_action1._field24 == 0)) {
-			_action2.sub10831F(-1);
-			if ((_action) && ((_action2.getActionIndex() != 0) || (_action2._field1E != -1))) {
-				_action2.signal();
-			} else {
-				_actor9.setAction(&_action2, &_actor9, NULL);
-			}
-		}
-		break;
-	case 112:
-		if ((_action) && (_action1._field24 != 0) && (_action2._field1E != -1)) {
-			_field1278 = 0;
-			_action1.sub108732(0);
-		} else if ((_action) && (_field1278 == 0) && (_action1._field24 != 0)) {
-			_field1278 = arg1;
-		} else if ((_action) && (_action1._field24 == 0)) {
-			_action1.sub108670(-1);
-			_action1.signal();
-		} else if (_action == 0) {
-			_action1.sub108670(-1);
-			setAction(&_action1, &_actor1, NULL);
-		}
-		break;
-	default:
-		_field1270 = arg1;
-		_actor7.sub109663(arg1);
-		if (_action1._field24 != 0) {
-			_field1270 = 0;
-		}
-		break;
-	}
-}
-
 void Scene3500::Action1::signal() {
 	Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene;
 
@@ -3430,6 +3210,226 @@ void Scene3500::Action1::dispatch() {
 	}
 }
 
+/*--------------------------------------------------------------------------*/
+
+Scene3500::Action2::Action2() {
+	_field1E = 0;
+}
+
+void Scene3500::Action2::synchronize(Serializer &s) {
+	Action::synchronize(s);
+
+	s.syncAsSint16LE(_field1E);
+}
+
+/*--------------------------------------------------------------------------*/
+
+Scene3500::Item4::Item4() {
+	_field34 = 0;
+}
+
+void Scene3500::Item4::synchronize(Serializer &s) {
+	NamedHotspot::synchronize(s);
+
+	s.syncAsSint16LE(_field34);
+}
+
+/*--------------------------------------------------------------------------*/
+
+Scene3500::Actor7::Actor7() {
+	_fieldA4 = 0;
+	_fieldA6 = 0;
+	_fieldA8 = 0;
+	_fieldAA = 0;
+	_fieldAC = 0;
+	_fieldAE = 0;
+}
+
+void Scene3500::Actor7::synchronize(Serializer &s) {
+	SceneActor::synchronize(s);
+
+	s.syncAsSint16LE(_fieldA4);
+	s.syncAsSint16LE(_fieldA6);
+	s.syncAsSint16LE(_fieldA8);
+	s.syncAsSint16LE(_fieldAA);
+	s.syncAsSint16LE(_fieldAC);
+	s.syncAsSint16LE(_fieldAE);
+}
+
+void Scene3500::Actor7::sub109466(int arg1, int arg2, int arg3, int arg4, int arg5) {
+	_fieldAE = 0;
+	_fieldA4 = arg1;
+	_fieldA6 = arg2;
+	_fieldA8 = arg3;
+	_fieldAA = arg4;
+	_fieldAC = _fieldAA / _fieldA8;
+
+	postInit();
+	setup(1050, 3, 1);
+	fixPriority(255);
+	sub109663(arg5);
+}
+
+void Scene3500::Actor7::sub1094ED() {
+	Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene;
+
+	scene->_field1270 = _position.x - _fieldA4;
+}
+
+void Scene3500::Actor7::sub109663(int arg1){
+	sub109693(Common::Point(_fieldA4 + arg1, _fieldA6 - (_fieldAC * arg1)));
+}
+
+void Scene3500::Actor7::sub109693(Common::Point Pt) {
+	setPosition(Pt);
+}
+
+/*--------------------------------------------------------------------------*/
+
+int Scene3500::MazeUI3500::cellFromX(int x) {
+	return (_cellSize.x / 2) + x - (x % _cellSize.x);
+}
+
+int Scene3500::MazeUI3500::cellFromY(int y) {
+	return (_cellSize.y / 2) + y - (y % _cellSize.y);
+}
+
+int Scene3500::MazeUI3500::getCellFromMapXY(Common::Point pt) {
+	int cellX = pt.x / _cellSize.x;
+	int cellY = pt.y / _cellSize.y;
+
+	if ((cellX >= 0) && (cellY >= 0) && (cellX < _mapCells.x) && (cellY < _mapCells.y)) {
+		return (int16)READ_LE_UINT16(_mapData + (_mapCells.x * cellY + cellX) * 2);
+	} else
+		return -1;
+}
+
+bool Scene3500::MazeUI3500::setMazePosition2(Common::Point &p) {
+	bool retVal = setMazePosition(p);
+	p = _mapOffset;
+
+	return retVal;
+}
+
+Scene3500::Scene3500() {
+	_fieldAF8 = 0;
+	_fieldB9E = 0;
+	_rotation = NULL;
+	_mazeChangeAmount = 0;
+	_field1270 = 0;
+	_field1272 = 0;
+	_field1274 = 0;
+	_mazeDirection = MAZEDIR_NONE;
+	_field1278 = 0;
+	_mazePosition.x = 0;
+	_mazePosition.y = 0;
+	_field127E = 0;
+	_field1280 = 0;
+	_field1282 = 0;
+	_field1284 = 0;
+	_field1286 = 0;
+}
+
+void Scene3500::synchronize(Serializer &s) {
+	SceneExt::synchronize(s);
+	SYNC_POINTER(_rotation);
+
+	s.syncAsSint16LE(_fieldAF8);
+	s.syncAsSint16LE(_fieldB9E);
+	s.syncAsSint16LE(_mazeChangeAmount);
+	s.syncAsSint16LE(_field1270);
+	s.syncAsSint16LE(_field1272);
+	s.syncAsSint16LE(_field1274);
+	s.syncAsSint16LE(_mazeDirection);
+	s.syncAsSint16LE(_field1278);
+	s.syncAsSint16LE(_mazePosition.x);
+	s.syncAsSint16LE(_mazePosition.y);
+	s.syncAsSint16LE(_field127E);
+	s.syncAsSint16LE(_field1280);
+	s.syncAsSint16LE(_field1282);
+	s.syncAsSint16LE(_field1284);
+	s.syncAsSint16LE(_field1286);
+}
+
+void Scene3500::sub107F71(int arg1) {
+	switch (arg1) {
+	case -1:
+		_actor7.sub1094ED();
+		if (_field1270 != 0) {
+			_field1270--;
+			_actor7.sub109663(_field1270);
+		}
+		if (_action1._field24 != 0)
+			_field1270 = 0;
+		break;
+	case 1:
+		_actor7.sub1094ED();
+		if (_field1270 < 16) {
+			++_field1270;
+			_actor7.sub109663(_field1270);
+		}
+		if (_action1._field24 != 0)
+			_field1270 = 0;
+		break;
+	case 88:
+		if ((_action == 0) || (_action1._field24 == 0)) {
+		// The original makes a second useless check on action, skipped
+			_action2.sub10831F(2);
+			if ((_action) && ((_action2.getActionIndex() != 0) || (_action2._field1E != 2))) {
+				_action2.signal();
+			} else {
+				_actor9.setAction(&_action2, &_actor9, NULL);
+			}
+		}
+		break;
+	case 96:
+		if ((_action) && (_action1._field24 != 0) && (_action2._field1E != 1)) {
+			_field1278 = 0;
+			_action1.sub108732(0);
+		} else if ((_action) && (_field1278 == 0) && (_action1._field24 != 0)) {
+			_field1278 = arg1;
+		} else if ((_action) && (_action1._field24 == 0)) {
+			_action1.sub108670(1);
+			_action1.signal();
+		} else if (_action == 0) {
+			_action1.sub108670(1);
+			setAction(&_action1, &_actor1, NULL);
+		}
+		break;
+	case 104:
+		if ((_action == 0) || (_action1._field24 == 0)) {
+			_action2.sub10831F(-1);
+			if ((_action) && ((_action2.getActionIndex() != 0) || (_action2._field1E != -1))) {
+				_action2.signal();
+			} else {
+				_actor9.setAction(&_action2, &_actor9, NULL);
+			}
+		}
+		break;
+	case 112:
+		if ((_action) && (_action1._field24 != 0) && (_action2._field1E != -1)) {
+			_field1278 = 0;
+			_action1.sub108732(0);
+		} else if ((_action) && (_field1278 == 0) && (_action1._field24 != 0)) {
+			_field1278 = arg1;
+		} else if ((_action) && (_action1._field24 == 0)) {
+			_action1.sub108670(-1);
+			_action1.signal();
+		} else if (_action == 0) {
+			_action1.sub108670(-1);
+			setAction(&_action1, &_actor1, NULL);
+		}
+		break;
+	default:
+		_field1270 = arg1;
+		_actor7.sub109663(arg1);
+		if (_action1._field24 != 0) {
+			_field1270 = 0;
+		}
+		break;
+	}
+}
+
 void Scene3500::Action2::sub10831F(int arg1) {
 	Scene3500 *scene = (Scene3500 *)R2_GLOBALS._sceneManager._scene;
 
@@ -3703,64 +3703,58 @@ void Scene3500::process(Event &event) {
 
 	if (event.eventType == EVENT_KEYPRESS) {
 		switch (event.kbd.keycode) {
-		case Common::KEYCODE_1:
-			warning("FIXME: keycode = 0x4700");
+		case Common::KEYCODE_KP7:
 			R2_GLOBALS._sound2.play(338);
 			sub107F71(16);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_2:
-			warning("FIXME: keycode = 0x4800");
+		case Common::KEYCODE_UP:
+		case Common::KEYCODE_KP8:
 			R2_GLOBALS._sound2.play(14, NULL, 63);
 			sub107F71(88);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_3:
-			warning("FIXME: keycode = 0x4900");
+		case Common::KEYCODE_KP9:
 			if (_field1270 < 16)
 				R2_GLOBALS._sound2.play(338);
 			sub107F71(1);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_4:
-			warning("FIXME: keycode = 0x4B00");
+		case Common::KEYCODE_KP4:
+		case Common::KEYCODE_LEFT:
 			R2_GLOBALS._sound2.play(14, NULL, 63);
 			sub107F71(112);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_5:
-			warning("FIXME: keycode = 0x4D00");
+		case Common::KEYCODE_KP6:
+		case Common::KEYCODE_RIGHT:
 			R2_GLOBALS._sound2.play(14, NULL, 63);
 			sub107F71(96);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_6:
-			warning("FIXME: keycode = 0x4F00");
+		case Common::KEYCODE_KP1:
 			R2_GLOBALS._sound2.play(338);
 			sub107F71(0);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_7:
-			warning("FIXME: keycode = 0x5000");
+		case Common::KEYCODE_KP2:
+		case Common::KEYCODE_DOWN:
 			R2_GLOBALS._sound2.play(14, NULL, 63);
 			sub107F71(104);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_8:
-			warning("FIXME: keycode = 0x5100");
+		case Common::KEYCODE_KP3:
 			if (_field1270 != 0)
 				R2_GLOBALS._sound2.play(338);
 			sub107F71(-1);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_9:
-			warning("FIXME: keycode = 0x5200");
+		case Common::KEYCODE_KP0:
 			R2_GLOBALS._sound2.play(338);
 			sub107F71(8);
 			event.handled = true;
 			break;
-		case Common::KEYCODE_0:
-			warning("FIXME: keycode = 0x5300");
+		case Common::KEYCODE_KP_PERIOD:
 			R2_GLOBALS._sound2.play(338);
 			sub107F71(4);
 			event.handled = true;


Commit: fcd53acb0be18bab48d4b9bd34939429a4122223
    https://github.com/scummvm/scummvm/commit/fcd53acb0be18bab48d4b9bd34939429a4122223
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T14:29:00-07:00

Commit Message:
TSAGE: Fix for rotating in R2R maze scenes

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes3.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.h



diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 74ec706..1812778 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -2920,9 +2920,10 @@ void Scene3500::Action1::sub108670(int arg1) {
 	else
 		scene->_actor5.show();
 
-	if (scene->_actor1._frame % 2 == 0)
-	scene->_actor1._frameChange = _field1E;
-	scene->_actor1.setFrame(scene->_actor1.changeFrame());
+	if (scene->_actor1._frame % 2 == 0) {
+		scene->_actor1._frameChange = _field1E;
+		scene->_actor1.setFrame(scene->_actor1.changeFrame());
+	}
 
 	setActionIndex(0);
 }
@@ -2993,7 +2994,7 @@ void Scene3500::Action1::signal() {
 		}
 		break;
 	case 1:
-		if ((scene->_actor1._frame % 2) == 0) {
+		if ((scene->_actor1._frame % 2) == 1) {
 			setDelay(1);
 			return;
 		}
@@ -3637,7 +3638,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_item1.setDetails(Rect(0, 0, 320, 200), 3500, 0, -1, 2, 1, NULL);
 
 	_actor1.postInit();
-	_mazeDirection = 1;
+	_mazeDirection = MAZEDIR_NORTH;
 	_actor1.setup(1004, 1, _mazeDirection);
 	_actor1.setPosition(Common::Point(230, 135));
 	_actor1.fixPriority(200);
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.h b/engines/tsage/ringworld2/ringworld2_scenes3.h
index ec4ea86..85e5674 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.h
@@ -650,6 +650,7 @@ public:
 	Item4 _item5;
 	Item4 _item6;
 	Item4 _item7;
+	// Glyph of vessel on top of the maze ui
 	SceneActor _actor1;
 	SceneActor _actor2;
 	SceneActor _actor3;


Commit: 264a52aae683e3e34836afc8cfae6d0d33bb05b2
    https://github.com/scummvm/scummvm/commit/264a52aae683e3e34836afc8cfae6d0d33bb05b2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-06-30T15:48:52-07:00

Commit Message:
TSAGE: Corrected starting to maze again after rotating in maze

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 1812778..b1cd4e7 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3016,14 +3016,17 @@ void Scene3500::Action1::signal() {
 			scene->_actor1.setFrame(scene->_actor1.changeFrame());
 		}
 
+		// Get the new direction starting on
 		int var8 = (scene->_action1._field1E * 2 + scene->_mazeDirection);
-		if (var8 > 7)
-			var8 = 1;
-		else if (var8 < 1)
-			var8 = 7;
+		if (var8 > MAZEDIR_NORTHWEST)
+			var8 = MAZEDIR_NORTH;
+		else if (var8 < MAZEDIR_NORTH)
+			var8 = MAZEDIR_WEST;
 
+		// Check whether movement is allowed in that direction. If so, then
+		// movement is started again
 		switch (var8) {
-		case 0:
+		case MAZEDIR_NORTH:
 			if ( ((si != 2)  && (si != 3)  && (si != 6) && (si != 1) && (si != 23) && (si != 24) && (si != 4) && (si != 11))
 				|| (var6 != 0)) {
 				if ((si != 25) && (si != 26) && (si != 5) && (si != 14) && (si != 15))
@@ -3035,7 +3038,7 @@ void Scene3500::Action1::signal() {
 			} else
 				_field20 = 1;
 			break;
-		case 2:
+		case MAZEDIR_EAST:
 			if ( ((si != 12)  && (si != 13)  && (si != 11) && (si != 16) && (si != 26) && (si != 24) && (si != 15) && (si != 6) && (si != 31))
 				|| (di != 0)) {
 				if ((si != 25) && (si != 23) && (si != 14) && (si != 5) && (si != 4))
@@ -3047,7 +3050,7 @@ void Scene3500::Action1::signal() {
 			} else
 				_field20 = 1;
 			break;
-		case 4:
+		case MAZEDIR_SOUTH:
 			if ( ((si != 2)  && (si != 3)  && (si != 6) && (si != 1) && (si != 25) && (si != 26) && (si != 5) && (si != 16) && (si != 31))
 				|| (var6 != 0)) {
 					if ((si != 23) && (si != 24) && (si != 4) && (si != 14) && (si != 15))
@@ -3059,7 +3062,7 @@ void Scene3500::Action1::signal() {
 			} else
 				_field20 = 1;
 			break;
-		case 6:
+		case MAZEDIR_WEST:
 			if ( ((si != 12)  && (si != 13)  && (si != 11) && (si != 16) && (si != 25) && (si != 23) && (si != 14) && (si != 1) && (si != 31))
 				|| (var6 != 0)) {
 					if ((si != 26) && (si != 24) && (si != 15) && (si != 5) && (si != 4))


Commit: ce3e765f5fde3696fd6a8f98f74027f88a060ebe
    https://github.com/scummvm/scummvm/commit/ce3e765f5fde3696fd6a8f98f74027f88a060ebe
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-07-02T19:41:05-07:00

Commit Message:
TSAGE: Fixes for moving south in R2R maze scene 3500

Changed paths:
    engines/tsage/ringworld2/ringworld2_logic.cpp
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_logic.cpp b/engines/tsage/ringworld2/ringworld2_logic.cpp
index 3f062d0..86014fb 100644
--- a/engines/tsage/ringworld2/ringworld2_logic.cpp
+++ b/engines/tsage/ringworld2/ringworld2_logic.cpp
@@ -1377,6 +1377,9 @@ void MazeUI::draw() {
 	int ySize;
 	Visage visage;
 
+	_cellsVisible.y = ((_mapOffset.y % _cellSize.y) + _displayBounds.height() +
+		(_cellSize.y - 1)) / _cellSize.y;
+
 	// Loop to handle the cell rows of the visible display area one at a time
 	for (int yCtr = 0; yCtr < _cellsVisible.y; ++yCtr, yPos += ySize) {
 		int cellY = _mapOffset.y / _cellSize.y + yCtr;
diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index b1cd4e7..c49aca3 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3295,7 +3295,7 @@ int Scene3500::MazeUI3500::cellFromX(int x) {
 }
 
 int Scene3500::MazeUI3500::cellFromY(int y) {
-	return (_cellSize.y / 2) + y - (y % _cellSize.y);
+	return (_cellSize.y / 2) + y - (y % _cellSize.y) - 1;
 }
 
 int Scene3500::MazeUI3500::getCellFromMapXY(Common::Point pt) {
@@ -3976,7 +3976,8 @@ void Scene3500::dispatch() {
 				var_6 = _mazeUI.cellFromY(newMazeY + 46) - 46;
 				newMazeY = _mazePosition.y + _mazeChangeAmount;
 				dx = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
-				if (((cellId == 25) || (cellId == 26) || (cellId == 5)) && (cellId == dx)) {
+
+				if (((cellId == 25) || (cellId == 26) || (cellId == 5)) && (cellId != dx)) {
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
 					_field1270 = 0;
@@ -3984,7 +3985,7 @@ void Scene3500::dispatch() {
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
-				} else if ((cellId == 16) && (cellId == dx)) {
+				} else if ((cellId == 16) && (cellId != dx)) {
 					newMazeY = var_6 - 3;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
@@ -3993,7 +3994,7 @@ void Scene3500::dispatch() {
 					_field1272 = 0;
 					if (_action1._field24 == 0)
 						_actor8.hide();
-				} else if ((cellId == 31) && (cellId == dx)) {
+				} else if ((cellId == 31) && (cellId != dx)) {
 					newMazeY = var_6 + 4;
 					R2_GLOBALS._sound2.play(339);
 					_rotation->_idxChange = 0;
@@ -4008,6 +4009,8 @@ void Scene3500::dispatch() {
 					cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
 					if ( (((cellId == 25) || (cellId == 26) || (cellId == 5)) && (newMazeY >= var_6) && (_mazePosition.y <= var_6))
 					  || (((cellId == 23) || (cellId == 24) || (cellId == 4) || (cellId == 14) || (cellId == 15)) && (_mazeChangeAmount >= var_a) && (_mazeChangeAmount <= 3) && (_action1._field24 != 0)) ){
+						newMazeY = var_6;
+						
 						if ((cellId != 23) && (cellId != 24) && (cellId != 4) && (cellId != 14) && (cellId != 15))
 							R2_GLOBALS._sound2.play(339);
 						_rotation->_idxChange = 0;
@@ -4153,7 +4156,7 @@ void Scene3500::dispatch() {
 				++_mazeChangeAmount;
 			_field1272 = 1;
 		}
-		_actor2.setFrame2(_mazeChangeAmount);
+		_actor2.setFrame2(_mazeChangeAmount + 1);
 	}
 
 	if (_field1272 == 1) {
@@ -4169,7 +4172,7 @@ void Scene3500::dispatch() {
 		_field1272--;
 
 	if (_mazeChangeAmount != 0) {
-		R2_GLOBALS._player._uiEnabled = false;
+ 		R2_GLOBALS._player._uiEnabled = false;
 		if (_mazeChangeAmount != _field1270)
 			_aSound1.play(276);
 	} else {


Commit: 97d8f768c2a32de7ea90300ce583068f6bc80a17
    https://github.com/scummvm/scummvm/commit/97d8f768c2a32de7ea90300ce583068f6bc80a17
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-07-03T05:12:30-07:00

Commit Message:
TSAGE: Renaming maze Ui field in R2R scene 1200

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes1.cpp
    engines/tsage/ringworld2/ringworld2_scenes1.h



diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index fc79487..85a6095 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -1131,12 +1131,12 @@ void Scene1200::postInit(SceneObjectList *OwnerList) {
 	_actor1.postInit();
 	_actor1.hide();
 
-	_object1.setDisplayBounds(Rect(110, 20, 210, 120));
+	_mazeUI.setDisplayBounds(Rect(110, 20, 210, 120));
 
-	_object1.load(1);
-	_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
+	_mazeUI.load(1);
+	_mazeUI.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 	warning("int unk = set_pane_p(_paneNumber);");
-	_object1.draw();
+	_mazeUI.draw();
 	warning("set_pane_p(unk);");
 
 	R2_GLOBALS._player.enableControl();
@@ -1393,8 +1393,8 @@ void Scene1200::process(Event &event) {
 		return;
 
 	if (event.eventType == EVENT_BUTTON_DOWN) {
-		_object1.pixelToCellXY(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
-		int unk = _object1.getCellFromPixelXY(event.mousePos);
+		_mazeUI.pixelToCellXY(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
+		int unk = _mazeUI.getCellFromPixelXY(event.mousePos);
 		switch (R2_GLOBALS._events.getCursor()) {
 		case CURSOR_ARROW:
 			event.handled = true;
@@ -1541,13 +1541,14 @@ void Scene1200::dispatch() {
 	Rect tmpRect;
 	Scene::dispatch();
 	if (_field41C != 0) {
-		_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
-		warning("int unk = set_pane_p(_paneNumber);");
-		_object1.draw();
+		_mazeUI.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
+		_mazeUI.draw();
+
 		warning("_gfxManager.sub294AC(unk);");
 		warning("tmpRect.sub14DF3();");
 		_field41C = 0;
 	}
+		_mazeUI.draw(); //**DEBUG**
 
 	if (_field414 != 0) {
 		tmpRect.set(110, 20, 210, 120);
@@ -1568,9 +1569,9 @@ void Scene1200::dispatch() {
 		default:
 			break;
 		}
-		_object1.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
+		_mazeUI.setMazePosition(Common::Point(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4));
 		warning("int unk = set_pane_p(_paneNumber);");
-		_object1.draw();
+		_mazeUI.draw();
 		warning("_gfxManager.sub294AC(unk);");
 		warning("tmpRect.sub14DF3();");
 
@@ -1606,11 +1607,11 @@ void Scene1200::saveCharacter(int characterIndex) {
 }
 
 void Scene1200::sub9DAD6(int indx) {
-	_object1.pixelToCellXY(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
+	_mazeUI.pixelToCellXY(R2_GLOBALS._v56AA2, R2_GLOBALS._v56AA4);
 
 	switch (indx) {
 	case 0:
-		if ( ((_object1.getCellFromPixelXY(Common::Point(200, 50)) > 36) || (_object1.getCellFromPixelXY(Common::Point(200, 88)) > 36))
+		if ( ((_mazeUI.getCellFromPixelXY(Common::Point(200, 50)) > 36) || (_mazeUI.getCellFromPixelXY(Common::Point(200, 88)) > 36))
 			&& ( ((R2_GLOBALS._v56AA2 == 3) && (R2_GLOBALS._v56AA4 == 33) && (_field418 != 4))
 				|| ((R2_GLOBALS._v56AA2 == 13) && (R2_GLOBALS._v56AA4 == 21) && (_field418 != 2))
 				|| ((R2_GLOBALS._v56AA2 == 29) && (R2_GLOBALS._v56AA4 == 17) && (_field418 != 1))
@@ -1619,7 +1620,7 @@ void Scene1200::sub9DAD6(int indx) {
 			R2_GLOBALS._player.disableControl();
 			_sceneMode = 1200;
 			setAction(&_sequenceManager, this, 1200, &_actor1, NULL);
-		} else if (_object1.getCellFromPixelXY(Common::Point(200, 69)) == 36) {
+		} else if (_mazeUI.getCellFromPixelXY(Common::Point(200, 69)) == 36) {
 			switch (_field412 - 1) {
 			case 0:
 				if (R2_GLOBALS._player._visage == 3155)
@@ -1654,7 +1655,7 @@ void Scene1200::sub9DAD6(int indx) {
 		}
 		break;
 	case 1:
-		if ( ((_object1.getCellFromPixelXY(Common::Point(120, 50)) > 36) || (_object1.getCellFromPixelXY(Common::Point(120, 88)) > 36))
+		if ( ((_mazeUI.getCellFromPixelXY(Common::Point(120, 50)) > 36) || (_mazeUI.getCellFromPixelXY(Common::Point(120, 88)) > 36))
 			&& ( ((R2_GLOBALS._v56AA2 == 7) && (R2_GLOBALS._v56AA4 == 33) && (_field418 != 4))
 				|| ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 21) && (_field418 != 2))
 				|| ((R2_GLOBALS._v56AA2 == 33) && (R2_GLOBALS._v56AA4 == 17) && (_field418 != 1))
@@ -1663,7 +1664,7 @@ void Scene1200::sub9DAD6(int indx) {
 			R2_GLOBALS._player.disableControl();
 			_sceneMode = 1201;
 			setAction(&_sequenceManager, this, 1201, &_actor1, NULL);
-		} else if (_object1.getCellFromPixelXY(Common::Point(120, 69)) == 36) {
+		} else if (_mazeUI.getCellFromPixelXY(Common::Point(120, 69)) == 36) {
 			switch (_field412 - 1) {
 			case 0:
 				if (R2_GLOBALS._player._visage == 3156)
@@ -1698,14 +1699,14 @@ void Scene1200::sub9DAD6(int indx) {
 		}
 		break;
 	case 2:
-		if ( ((_object1.getCellFromPixelXY(Common::Point(140, 110)) > 36) || (_object1.getCellFromPixelXY(Common::Point(178, 110)) > 36))
+		if ( ((_mazeUI.getCellFromPixelXY(Common::Point(140, 110)) > 36) || (_mazeUI.getCellFromPixelXY(Common::Point(178, 110)) > 36))
 			&& ( ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 5) && (_field418 != 3))
 				|| ((R2_GLOBALS._v56AA2 == 41) && (R2_GLOBALS._v56AA4 == 21)) )
 				)	{
 			R2_GLOBALS._player.disableControl();
 			_sceneMode = 1203;
 			setAction(&_sequenceManager, this, 1203, &_actor1, NULL);
-		} else if (_object1.getCellFromPixelXY(Common::Point(160, 110)) == 36) {
+		} else if (_mazeUI.getCellFromPixelXY(Common::Point(160, 110)) == 36) {
 			switch (_field412 - 1) {
 			case 0:
 				if (R2_GLOBALS._player._visage == 3156)
@@ -1740,14 +1741,14 @@ void Scene1200::sub9DAD6(int indx) {
 		}
 		break;
 	case 3:
-		if ( ((_object1.getCellFromPixelXY(Common::Point(140, 30)) > 36) || (_object1.getCellFromPixelXY(Common::Point(178, 30)) > 36))
+		if ( ((_mazeUI.getCellFromPixelXY(Common::Point(140, 30)) > 36) || (_mazeUI.getCellFromPixelXY(Common::Point(178, 30)) > 36))
 			&& ( ((R2_GLOBALS._v56AA2 == 17) && (R2_GLOBALS._v56AA4 == 9) && (_field418 != 3))
 				|| ((R2_GLOBALS._v56AA2 == 35) && (R2_GLOBALS._v56AA4 == 17)) )
 				)	{
 			R2_GLOBALS._player.disableControl();
 			_sceneMode = 1202;
 			setAction(&_sequenceManager, this, 1202, &_actor1, NULL);
-		} else if (_object1.getCellFromPixelXY(Common::Point(160, 30)) == 36) {
+		} else if (_mazeUI.getCellFromPixelXY(Common::Point(160, 30)) == 36) {
 			switch (_field412 - 1) {
 			case 0:
 				if (R2_GLOBALS._player._visage == 3156)
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index d1e55ef..619e692 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -147,7 +147,7 @@ public:
 	NamedHotspot _item1;
 	SceneActor _actor1;
 	Area1 _area1;
-	MazeUI _object1;
+	MazeUI _mazeUI;
 	SequenceManager _sequenceManager;
 
 	int _field412;


Commit: f355d7bfbdc74e23e65b79f34fae2781832b6d0b
    https://github.com/scummvm/scummvm/commit/f355d7bfbdc74e23e65b79f34fae2781832b6d0b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-07-03T19:17:01-07:00

Commit Message:
TSAGE: Bugfix for leaving R2R scene 3500

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index c49aca3..648f823 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -2885,7 +2885,7 @@ void Scene3400::signal() {
 }
 
 /*--------------------------------------------------------------------------
- * Scene 3500 -
+ * Scene 3500 - Cavern Maze
  *
  *--------------------------------------------------------------------------*/
 
@@ -3586,8 +3586,7 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 	_field1272 = 1;
 	_field1270 = 4;
 	_mazeChangeAmount = 4;
-	_mazePosition.x = 860;
-	_mazePosition.y = 891;
+	_mazePosition = Common::Point(860, 891);
 	_rotation = R2_GLOBALS._scenePalette.addRotation(240, 254, -1);
 	_rotation->setDelay(0);
 	_rotation->_idxChange = 1;
@@ -3690,7 +3689,6 @@ void Scene3500::postInit(SceneObjectList *OwnerList) {
 }
 
 void Scene3500::remove() {
-	_rotation->remove();
 	R2_GLOBALS._sound2.fadeOut2(NULL);
 	SceneExt::remove();
 }


Commit: a49a7d5ad4f4435ed8cee0934c94155586f2dd99
    https://github.com/scummvm/scummvm/commit/a49a7d5ad4f4435ed8cee0934c94155586f2dd99
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-07-03T19:47:15-07:00

Commit Message:
TSAGE: Fix for moving east in R2R maze scene 3500

Changed paths:
    engines/tsage/ringworld2/ringworld2_scenes3.cpp



diff --git a/engines/tsage/ringworld2/ringworld2_scenes3.cpp b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
index 648f823..d5e7b1b 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes3.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes3.cpp
@@ -3929,7 +3929,7 @@ void Scene3500::dispatch() {
 				} else {
 					var_4 = _mazeUI.cellFromX(newMazeX + 70) - 70;
 					var_8 = abs(newMazeX - var_4);
-					cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, cellId + 46));
+					cellId = _mazeUI.getCellFromMapXY(Common::Point(newMazeX + 70, newMazeY + 46));
 					if ( (((cellId == 26) || (cellId == 24) || (cellId == 15)) && (newMazeX >= var_4) && (_mazePosition.x <= var_4))
 						|| (((cellId == 25) || (cellId == 23) || (cellId == 14) || (cellId == 5) || (cellId == 4)) && (_mazeChangeAmount >= var_8) && (_mazeChangeAmount <= 3) && (_action1._field24 != 0)) ) {
 						newMazeX = var_4;


Commit: fa737fd5af3763a152e92c4b74c114876b3a8573
    https://github.com/scummvm/scummvm/commit/fa737fd5af3763a152e92c4b74c114876b3a8573
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-07-04T05:44:49-07:00

Commit Message:
Merge branch 'master' into tsage_r2r

Changed paths:
  A backends/mixer/nullmixer/nullsdl-mixer.cpp
  A backends/mixer/nullmixer/nullsdl-mixer.h
  A backends/saves/recorder/recorder-saves.cpp
  A backends/saves/recorder/recorder-saves.h
  A common/recorderfile.cpp
  A common/recorderfile.h
  A devtools/create_project/msvc12/create_project.sln
  A devtools/create_project/msvc12/create_project.vcxproj
  A devtools/create_project/msvc12/create_project.vcxproj.filters
  A dists/msvc12/create_msvc12.bat
  A dists/msvc12/readme.txt
  A gui/EventRecorder.cpp
  A gui/EventRecorder.h
  A gui/editrecorddialog.cpp
  A gui/editrecorddialog.h
  A gui/onscreendialog.cpp
  A gui/onscreendialog.h
  A gui/recorderdialog.cpp
  A gui/recorderdialog.h
  A gui/themes/scummmodern/editbtn.bmp
  A gui/themes/scummmodern/editbtn_small.bmp
  A gui/themes/scummmodern/fastreplay.bmp
  A gui/themes/scummmodern/fastreplay_small.bmp
  A gui/themes/scummmodern/stopbtn.bmp
  A gui/themes/scummmodern/stopbtn_small.bmp
  A gui/themes/scummmodern/switchbtn.bmp
  A gui/themes/scummmodern/switchbtn_small.bmp
  R common/EventRecorder.cpp
  R common/EventRecorder.h
  R engines/neverhood/todo.txt
    .gitignore
    Makefile
    NEWS
    audio/mixer.cpp
    audio/softsynth/mt32/Part.cpp
    audio/softsynth/mt32/Partial.cpp
    audio/softsynth/mt32/Synth.cpp
    audio/softsynth/mt32/Synth.h
    audio/softsynth/mt32/TVA.cpp
    backends/events/default/default-events.cpp
    backends/events/sdl/sdl-events.cpp
    backends/graphics/surfacesdl/surfacesdl-graphics.cpp
    backends/graphics/surfacesdl/surfacesdl-graphics.h
    backends/modular-backend.cpp
    backends/module.mk
    backends/mutex/sdl/sdl-mutex.cpp
    backends/platform/android/android.cpp
    backends/platform/android/android.h
    backends/platform/bada/system.cpp
    backends/platform/bada/system.h
    backends/platform/dc/dc.h
    backends/platform/dc/time.cpp
    backends/platform/ds/arm9/source/dsmain.cpp
    backends/platform/ds/arm9/source/dsmain.h
    backends/platform/ds/arm9/source/osystem_ds.cpp
    backends/platform/ds/arm9/source/osystem_ds.h
    backends/platform/iphone/osys_main.cpp
    backends/platform/iphone/osys_main.h
    backends/platform/n64/osys_n64.h
    backends/platform/n64/osys_n64_base.cpp
    backends/platform/null/null.cpp
    backends/platform/ps2/systemps2.cpp
    backends/platform/ps2/systemps2.h
    backends/platform/psp/osys_psp.cpp
    backends/platform/psp/osys_psp.h
    backends/platform/psp/rtc.cpp
    backends/platform/psp/rtc.h
    backends/platform/sdl/sdl-sys.h
    backends/platform/sdl/sdl.cpp
    backends/platform/sdl/sdl.h
    backends/platform/wii/osystem.cpp
    backends/platform/wii/osystem.h
    backends/timer/default/default-timer.cpp
    base/commandLine.cpp
    base/main.cpp
    common/EventDispatcher.cpp
    common/debug.h
    common/events.h
    common/memstream.h
    common/module.mk
    common/random.cpp
    common/str.cpp
    common/str.h
    common/system.cpp
    common/system.h
    configure
    devtools/create_project/create_project.cpp
    devtools/create_project/msbuild.cpp
    engines/advancedDetector.cpp
    engines/advancedDetector.h
    engines/cge/cge.cpp
    engines/dreamweb/dreamweb.cpp
    engines/gob/surface.cpp
    engines/hopkins/hopkins.cpp
    engines/hopkins/hopkins.h
    engines/hopkins/saveload.cpp
    engines/hopkins/saveload.h
    engines/hopkins/script.cpp
    engines/kyra/kyra_rpg.cpp
    engines/kyra/screen.cpp
    engines/neverhood/console.cpp
    engines/neverhood/console.h
    engines/neverhood/detection.cpp
    engines/neverhood/gamemodule.cpp
    engines/neverhood/menumodule.cpp
    engines/neverhood/menumodule.h
    engines/neverhood/modules/module1100.cpp
    engines/neverhood/modules/module1200.cpp
    engines/neverhood/modules/module1300.cpp
    engines/neverhood/modules/module2100.cpp
    engines/neverhood/modules/module2200.cpp
    engines/neverhood/modules/module2400.cpp
    engines/neverhood/modules/module2700.cpp
    engines/neverhood/modules/module2700.h
    engines/neverhood/modules/module2800.cpp
    engines/neverhood/modules/module3000.cpp
    engines/neverhood/navigationscene.cpp
    engines/neverhood/neverhood.cpp
    engines/neverhood/neverhood.h
    engines/neverhood/saveload.cpp
    engines/saga/sndres.cpp
    engines/sword25/gfx/image/renderedimage.cpp
    engines/sword25/gfx/image/renderedimage.h
    engines/toon/character.cpp
    engines/toon/character.h
    engines/wintermute/detection_tables.h
    engines/wintermute/wintermute.cpp
    graphics/cursorman.cpp
    graphics/cursorman.h
    graphics/scaler.h
    graphics/scaler/thumbnail_intern.cpp
    graphics/thumbnail.cpp
    graphics/thumbnail.h
    graphics/yuv_to_rgb.h
    gui/ThemeEngine.cpp
    gui/ThemeEngine.h
    gui/dialog.h
    gui/gui-manager.cpp
    gui/gui-manager.h
    gui/launcher.cpp
    gui/launcher.h
    gui/module.mk
    gui/themes/default.inc
    gui/themes/scummclassic.zip
    gui/themes/scummclassic/classic_layout.stx
    gui/themes/scummclassic/classic_layout_lowres.stx
    gui/themes/scummmodern.zip
    gui/themes/scummmodern/scummmodern_gfx.stx
    gui/themes/scummmodern/scummmodern_layout.stx
    gui/themes/scummmodern/scummmodern_layout_lowres.stx
    po/POTFILES
    test/common/str.h
    video/codecs/indeo3.cpp
    video/coktel_decoder.cpp





Commit: afdb007e2e158efa4a9a1098f80ff224d0038729
    https://github.com/scummvm/scummvm/commit/afdb007e2e158efa4a9a1098f80ff224d0038729
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2013-07-04T06:07:15-07:00

Commit Message:
Merge branch 'master' of https://github.com/scummvm/scummvm

Changed paths:
    audio/softsynth/mt32.cpp









More information about the Scummvm-git-logs mailing list