[Scummvm-git-logs] scummvm master -> 55b2d57d470a36d9b7751034e6cb1a0a75a3ecf6

sev- sev at scummvm.org
Sun Oct 4 22:27:07 UTC 2020


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

Summary:
e6171c4ea0 NMI: g_fp -> g_nmi
52ec218021 ENGINES: Fix include file name
55b2d57d47 NGI: Further work on MDream


Commit: e6171c4ea03bb0d68b5c2f7cc51a93c680ca75f9
    https://github.com/scummvm/scummvm/commit/e6171c4ea03bb0d68b5c2f7cc51a93c680ca75f9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-10-05T00:26:48+02:00

Commit Message:
NMI: g_fp -> g_nmi

Changed paths:
    engines/ngi/anihandler.cpp
    engines/ngi/behavior.cpp
    engines/ngi/floaters.cpp
    engines/ngi/fullpipe/scene01.cpp
    engines/ngi/fullpipe/scene02.cpp
    engines/ngi/fullpipe/scene03.cpp
    engines/ngi/fullpipe/scene04.cpp
    engines/ngi/fullpipe/scene05.cpp
    engines/ngi/fullpipe/scene06.cpp
    engines/ngi/fullpipe/scene07.cpp
    engines/ngi/fullpipe/scene08.cpp
    engines/ngi/fullpipe/scene09.cpp
    engines/ngi/fullpipe/scene10.cpp
    engines/ngi/fullpipe/scene11.cpp
    engines/ngi/fullpipe/scene12.cpp
    engines/ngi/fullpipe/scene13.cpp
    engines/ngi/fullpipe/scene14.cpp
    engines/ngi/fullpipe/scene15.cpp
    engines/ngi/fullpipe/scene16.cpp
    engines/ngi/fullpipe/scene17.cpp
    engines/ngi/fullpipe/scene18and19.cpp
    engines/ngi/fullpipe/scene20.cpp
    engines/ngi/fullpipe/scene21.cpp
    engines/ngi/fullpipe/scene22.cpp
    engines/ngi/fullpipe/scene23.cpp
    engines/ngi/fullpipe/scene24.cpp
    engines/ngi/fullpipe/scene25.cpp
    engines/ngi/fullpipe/scene26.cpp
    engines/ngi/fullpipe/scene27.cpp
    engines/ngi/fullpipe/scene28.cpp
    engines/ngi/fullpipe/scene29.cpp
    engines/ngi/fullpipe/scene30.cpp
    engines/ngi/fullpipe/scene31.cpp
    engines/ngi/fullpipe/scene32.cpp
    engines/ngi/fullpipe/scene33.cpp
    engines/ngi/fullpipe/scene34.cpp
    engines/ngi/fullpipe/scene35.cpp
    engines/ngi/fullpipe/scene36.cpp
    engines/ngi/fullpipe/scene37.cpp
    engines/ngi/fullpipe/scene38.cpp
    engines/ngi/fullpipe/sceneDbg.cpp
    engines/ngi/fullpipe/sceneFinal.cpp
    engines/ngi/fullpipe/sceneIntro.cpp
    engines/ngi/fullpipe/sceneIntroDemo.cpp
    engines/ngi/gameloader.cpp
    engines/ngi/gfx.cpp
    engines/ngi/input.cpp
    engines/ngi/interaction.cpp
    engines/ngi/inventory.cpp
    engines/ngi/lift.cpp
    engines/ngi/messagehandlers.cpp
    engines/ngi/messages.cpp
    engines/ngi/modal.cpp
    engines/ngi/motion.cpp
    engines/ngi/ngi.cpp
    engines/ngi/ngi.h
    engines/ngi/ngiarchive.cpp
    engines/ngi/scene.cpp
    engines/ngi/scenes.cpp
    engines/ngi/sound.cpp
    engines/ngi/stateloader.cpp
    engines/ngi/statesaver.cpp
    engines/ngi/statics.cpp
    engines/ngi/utils.cpp


diff --git a/engines/ngi/anihandler.cpp b/engines/ngi/anihandler.cpp
index 6a83b33284..c11bacb9a7 100644
--- a/engines/ngi/anihandler.cpp
+++ b/engines/ngi/anihandler.cpp
@@ -61,7 +61,7 @@ MessageQueue *AniHandler::makeQueue(StaticANIObject *ani, int staticsIndex, int,
 #endif
 
 	if (stid == staticsIndex)
-		return new MessageQueue(g_fp->_globalMessageQueueList->compact());
+		return new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
 	int startidx = getStaticsIndexById(idx, stid);
 	int endidx = getStaticsIndexById(idx, staticsIndex);
@@ -75,7 +75,7 @@ MessageQueue *AniHandler::makeQueue(StaticANIObject *ani, int staticsIndex, int,
 	if (!_items[idx].subItems[subidx].movement)
 		return 0;
 
-	MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+	MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 	Common::Point point;
 	ExCommand *ex;
 
@@ -166,7 +166,7 @@ void AniHandler::resetData(int objId) {
 	_items[idx].movements1.clear();
 	_items[idx].movements2.clear();
 
-	StaticANIObject *obj = g_fp->_currentScene->getStaticANIObject1ById(objId, -1);
+	StaticANIObject *obj = g_nmi->_currentScene->getStaticANIObject1ById(objId, -1);
 
 	if (!obj)
 		return;
@@ -350,7 +350,7 @@ MessageQueue *AniHandler::makeRunQueue(MakeQueueStruct *mkQueue) {
 	else
 		x2.y = (dy1 - py * y1) / abs(dy1 - py * y1);
 
-	MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+	MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 	ExCommand2 *ex2;
 
 	for (int i = subIdx; i != st2idx;) {
diff --git a/engines/ngi/behavior.cpp b/engines/ngi/behavior.cpp
index a71a13c816..c341b5842e 100644
--- a/engines/ngi/behavior.cpp
+++ b/engines/ngi/behavior.cpp
@@ -130,7 +130,7 @@ void BehaviorManager::updateBehavior(BehaviorInfo &behaviorInfo, BehaviorAnim &e
 				mq->sendNextCommand();
 
 				bhi._flags &= 0xFFFFFFFD;
-			} else if (behaviorInfo._counter >= bhi._delay && bhi._percent && g_fp->_rnd.getRandomNumber(32767) <= entry._behaviorMoves[i]._percent) {
+			} else if (behaviorInfo._counter >= bhi._delay && bhi._percent && g_nmi->_rnd.getRandomNumber(32767) <= entry._behaviorMoves[i]._percent) {
 				MessageQueue *mq = new MessageQueue(bhi._messageQueue, 0, 1);
 
 				mq->sendNextCommand();
@@ -147,7 +147,7 @@ void BehaviorManager::updateStaticAniBehavior(StaticANIObject &ani, int delay, c
 	MessageQueue *mq = 0;
 
 	if (beh._flags & 1) {
-		uint rnd = g_fp->_rnd.getRandomNumber(32767);
+		uint rnd = g_nmi->_rnd.getRandomNumber(32767);
 		uint runPercent = 0;
 		for (uint i = 0; i < beh._behaviorMoves.size(); i++) {
 			if (!(beh._behaviorMoves[i]._flags & 1) && beh._behaviorMoves[i]._percent) {
@@ -162,7 +162,7 @@ void BehaviorManager::updateStaticAniBehavior(StaticANIObject &ani, int delay, c
 		for (uint i = 0; i < beh._behaviorMoves.size(); i++) {
 			if (!(beh._behaviorMoves[i]._flags & 1) && delay >= beh._behaviorMoves[i]._delay) {
 				if (beh._behaviorMoves[i]._percent) {
-					if (g_fp->_rnd.getRandomNumber(32767) <= beh._behaviorMoves[i]._percent) {
+					if (g_nmi->_rnd.getRandomNumber(32767) <= beh._behaviorMoves[i]._percent) {
 						mq = new MessageQueue(beh._behaviorMoves[i]._messageQueue, 0, 1);
 						break;
 					}
@@ -174,7 +174,7 @@ void BehaviorManager::updateStaticAniBehavior(StaticANIObject &ani, int delay, c
 	if (mq) {
 		mq->setParamInt(-1, ani._odelay);
 		if (!mq->chain(&ani)) {
-			g_fp->_globalMessageQueueList->deleteQueueById(mq->_id);
+			g_nmi->_globalMessageQueueList->deleteQueueById(mq->_id);
 		}
 	}
 }
@@ -269,11 +269,11 @@ void BehaviorInfo::initObjectBehavior(GameVar *var, Scene *sc, StaticANIObject *
 		if (strcmp(var->_value.stringValue, "ROOT"))
 			break;
 
-		GameVar *v1 = g_fp->getGameLoaderGameVar()->getSubVarByName("BEHAVIOR")->getSubVarByName(ani->getName());
+		GameVar *v1 = g_nmi->getGameLoaderGameVar()->getSubVarByName("BEHAVIOR")->getSubVarByName(ani->getName());
 		if (v1 == var)
 			return;
 
-		sc = g_fp->accessScene(ani->_sceneId);
+		sc = g_nmi->accessScene(ani->_sceneId);
 		clear();
 		var = v1;
 		_animsCount = var->getSubVarsCount();
diff --git a/engines/ngi/floaters.cpp b/engines/ngi/floaters.cpp
index bfdd41cc57..b32e008642 100644
--- a/engines/ngi/floaters.cpp
+++ b/engines/ngi/floaters.cpp
@@ -79,7 +79,7 @@ void Floaters::init(GameVar *var) {
 }
 
 void Floaters::genFlies(Scene *sc, int x, int y, int priority, int flags) {
-	StaticANIObject *ani = new StaticANIObject(g_fp->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_FLY, -1));
+	StaticANIObject *ani = new StaticANIObject(g_nmi->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_FLY, -1));
 
 	ani->_statics = ani->getStaticsById(ST_FLY_FLY);
 	ani->_movement = 0;
@@ -98,7 +98,7 @@ void Floaters::genFlies(Scene *sc, int x, int y, int priority, int flags) {
 	else
 		nummoves = ani->_movement->_dynamicPhases.size();
 
-	ani->_movement->setDynamicPhaseIndex(g_fp->_rnd.getRandomNumber(nummoves - 1));
+	ani->_movement->setDynamicPhaseIndex(g_nmi->_rnd.getRandomNumber(nummoves - 1));
 
 	_array2.push_back(FloaterArray2());
 	FloaterArray2 &arr2 = _array2.back();
@@ -151,10 +151,10 @@ void Floaters::update() {
 				if (a2.val4 == a2.val2 && a2.val5 == a2.val3) {
 					a2.val9 = 0.0;
 
-					a2.val13 = g_fp->_rnd.getRandomNumber(200) + 20;
+					a2.val13 = g_nmi->_rnd.getRandomNumber(200) + 20;
 
 					if (a2.fflags & 1) {
-						g_fp->_currentScene->deleteStaticANIObject(a2.ani);
+						g_nmi->_currentScene->deleteStaticANIObject(a2.ani);
 
 						if (a2.ani)
 							delete a2.ani;
@@ -164,7 +164,7 @@ void Floaters::update() {
 						i--;
 
 						if (!_array2.size())
-							g_fp->stopAllSoundInstances(SND_CMN_060);
+							g_nmi->stopAllSoundInstances(SND_CMN_060);
 
 						continue;
 					}
@@ -176,7 +176,7 @@ void Floaters::update() {
 					a2.val3 = a2.val7;
 				} else {
 					if (a2.fflags & 2) {
-						int idx1 = g_fp->_rnd.getRandomNumber(_array1.size() - 1);
+						int idx1 = g_nmi->_rnd.getRandomNumber(_array1.size() - 1);
 
 						a2.val2 = _array1[idx1].val1;
 						a2.val3 = _array1[idx1].val2;
@@ -186,8 +186,8 @@ void Floaters::update() {
 
 						const Common::Rect rect = _hRgn->getBBox();
 
-						int x2 = rect.left + g_fp->_rnd.getRandomNumber(rect.right - rect.left);
-						int y2 = rect.top + g_fp->_rnd.getRandomNumber(rect.bottom - rect.top);
+						int x2 = rect.left + g_nmi->_rnd.getRandomNumber(rect.right - rect.left);
+						int y2 = rect.top + g_nmi->_rnd.getRandomNumber(rect.bottom - rect.top);
 
 						if (_hRgn->pointInRegion(x2, y2)) {
 							int dx = a2.val2 - x2;
@@ -201,7 +201,7 @@ void Floaters::update() {
 						}
 					}
 
-					g_fp->playSound(SND_CMN_061, 0);
+					g_nmi->playSound(SND_CMN_061, 0);
 
 					if (a2.fflags & 4)
 						a2.countdown--;
@@ -213,7 +213,7 @@ void Floaters::update() {
 
 		if (!a2.ani->_movement && a2.ani->_statics->_staticsId == ST_FLY_FLY) {
 			if (!a2.val15) {
-				g_fp->playSound(SND_CMN_060, 1);
+				g_nmi->playSound(SND_CMN_060, 1);
 
 				a2.val15 = 1;
 			}
@@ -226,13 +226,13 @@ void Floaters::update() {
 void Floaters::stopAll() {
 	for (uint i = 0; i < _array2.size(); i++) {
 		FloaterArray2 &a2 = _array2[i];
-		g_fp->_currentScene->deleteStaticANIObject(a2.ani);
+		g_nmi->_currentScene->deleteStaticANIObject(a2.ani);
 		delete a2.ani;
 	}
 
 	_array2.clear();
 
-	g_fp->stopAllSoundInstances(SND_CMN_060);
+	g_nmi->stopAllSoundInstances(SND_CMN_060);
 }
 
 
diff --git a/engines/ngi/fullpipe/scene01.cpp b/engines/ngi/fullpipe/scene01.cpp
index bb32d15d00..58c678f4ff 100644
--- a/engines/ngi/fullpipe/scene01.cpp
+++ b/engines/ngi/fullpipe/scene01.cpp
@@ -37,7 +37,7 @@
 namespace NGI {
 
 void scene01_fixEntrance() {
-	GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME");
+	GameVar *var = g_nmi->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME");
 	if (var->getSubVarAsInt("Entrance") == TrubaLeft)
 		var->setSubVarAsInt("Entrance", TrubaRight);
 }
@@ -49,7 +49,7 @@ void scene01_initScene(Scene *sc, int entrance) {
 	g_vars->scene01_picSc01Osk2 = sc->getPictureObjectById(PIC_SC1_OSK2, 0);
 	g_vars->scene01_picSc01Osk2->_flags &= 0xFFFB;
 
-	if (g_fp->getObjectState(sO_EggCracker) == g_fp->getObjectEnumState(sO_EggCracker, sO_DidNotCrackEgg)) {
+	if (g_nmi->getObjectState(sO_EggCracker) == g_nmi->getObjectEnumState(sO_EggCracker, sO_DidNotCrackEgg)) {
 		PictureObject *pic = sc->getPictureObjectById(PIC_SC1_KUCHKA, 0);
 		if (pic)
 			pic->_flags &= 0xFFFB;
@@ -61,7 +61,7 @@ void scene01_initScene(Scene *sc, int entrance) {
 			bootAnim->_flags &= ~0x04;
 	}
 
-	g_fp->lift_setButton(sO_Level2, ST_LBN_2N);
+	g_nmi->lift_setButton(sO_Level2, ST_LBN_2N);
 }
 
 int sceneHandler01(ExCommand *cmd) {
@@ -72,7 +72,7 @@ int sceneHandler01(ExCommand *cmd) {
 
 	if (cmd->_messageNum > MSG_SC1_SHOWOSK) {
 		if (cmd->_messageNum == MSG_SC1_UTRUBACLICK)
-			handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC1_LADDER, 0), 0);
+			handleObjectInteraction(g_nmi->_aniMan, g_nmi->_currentScene->getPictureObjectById(PIC_SC1_LADDER, 0), 0);
 
 		return 0;
 	}
@@ -98,19 +98,19 @@ int sceneHandler01(ExCommand *cmd) {
 		return 0;
 	}
 
-	if (g_fp->_aniMan2) {
-		if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200) {
-			g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300;
+	if (g_nmi->_aniMan2) {
+		if (g_nmi->_aniMan2->_ox < g_nmi->_sceneRect.left + 200) {
+			g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.left - 300;
 		}
 
-		if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200)
-			g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300;
+		if (g_nmi->_aniMan2->_ox > g_nmi->_sceneRect.right - 200)
+			g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.right + 300;
 
 		res = 1;
 	}
-	g_fp->_behaviorManager->updateBehaviors();
+	g_nmi->_behaviorManager->updateBehaviors();
 
-	g_fp->startSceneTrack();
+	g_nmi->startSceneTrack();
 
 	return res;
 }
diff --git a/engines/ngi/fullpipe/scene02.cpp b/engines/ngi/fullpipe/scene02.cpp
index 325b24a010..e7fb5f9e64 100644
--- a/engines/ngi/fullpipe/scene02.cpp
+++ b/engines/ngi/fullpipe/scene02.cpp
@@ -40,12 +40,12 @@ namespace NGI {
 void scene02_initScene(Scene *sc) {
 	g_vars->scene02_guvTheDrawer = sc->getStaticANIObject1ById(ANI_DADAYASHIK, -1);
 
-	if (g_fp->getObjectState(sO_GuvTheDrawer) == g_fp->getObjectEnumState(sO_GuvTheDrawer, sO_IsSleeping)) {
-		Scene *s = g_fp->_currentScene;
+	if (g_nmi->getObjectState(sO_GuvTheDrawer) == g_nmi->getObjectEnumState(sO_GuvTheDrawer, sO_IsSleeping)) {
+		Scene *s = g_nmi->_currentScene;
 
-		g_fp->_currentScene = sc;
+		g_nmi->_currentScene = sc;
 		g_vars->scene02_guvTheDrawer->changeStatics2(ST_DYAS_LIES);
-		g_fp->_currentScene = s;
+		g_nmi->_currentScene = s;
 	}
 
 	g_vars->scene02_boxDelay = 0;
@@ -56,23 +56,23 @@ void scene02_initScene(Scene *sc) {
 		g_vars->scene02_boxOpen = false;
 	} else {
 		g_vars->scene02_boxOpen = true;
-		g_vars->scene02_boxDelay = 100 * g_fp->_rnd.getRandomNumber(32767) + 150;
+		g_vars->scene02_boxDelay = 100 * g_nmi->_rnd.getRandomNumber(32767) + 150;
 	}
 
-	g_fp->_floaters->init(g_fp->_gameLoader->_gameVar->getSubVarByName("SC_2"));
+	g_nmi->_floaters->init(g_nmi->_gameLoader->_gameVar->getSubVarByName("SC_2"));
 }
 
 void sceneHandler02_ladderClick() {
-	handleObjectInteraction(g_fp->_aniMan2, g_fp->_currentScene->getPictureObjectById(PIC_SC2_DTRUBA, 0), 0);
+	handleObjectInteraction(g_nmi->_aniMan2, g_nmi->_currentScene->getPictureObjectById(PIC_SC2_DTRUBA, 0), 0);
 }
 
 void sceneHandler02_showLadder() {
-	g_fp->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags |= 4;
+	g_nmi->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags |= 4;
 }
 
 void sceneHandler02_hideLadder() {
-	g_fp->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags &= 0xfffb;
-	g_fp->_aniMan2->_priority = 25;
+	g_nmi->_currentScene->getPictureObjectById(PIC_SC2_LADDER, 0)->_flags &= 0xfffb;
+	g_nmi->_aniMan2->_priority = 25;
 }
 
 int sceneHandler02(ExCommand *ex) {
@@ -91,7 +91,7 @@ int sceneHandler02(ExCommand *ex) {
 		break;
 
 	case MSG_SC2_PUTMANUP:
-		g_fp->_aniMan2->_priority = 0;
+		g_nmi->_aniMan2->_priority = 0;
 		break;
 
 	case MSG_SC2_HIDELADDER:
@@ -99,12 +99,12 @@ int sceneHandler02(ExCommand *ex) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300;
+		if (g_nmi->_aniMan2) {
+			if (g_nmi->_aniMan2->_ox < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.left - 300;
 
-			if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300;
+			if (g_nmi->_aniMan2->_ox > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.right + 300;
 
 			res = 1;
 		}
@@ -112,24 +112,24 @@ int sceneHandler02(ExCommand *ex) {
 		if (g_vars->scene02_boxOpen) {
 			if (g_vars->scene02_boxDelay >= 1) {
 				--g_vars->scene02_boxDelay;
-			} else if (g_fp->_floaters->_array2.size() >= 1) {
-				if (g_fp->_floaters->_array2[0].val5 == -50) {
-					g_fp->_floaters->stopAll();
+			} else if (g_nmi->_floaters->_array2.size() >= 1) {
+				if (g_nmi->_floaters->_array2[0].val5 == -50) {
+					g_nmi->_floaters->stopAll();
 					g_vars->scene02_boxOpen = false;
-					g_vars->scene02_boxDelay = 100 * g_fp->_rnd.getRandomNumber(32767) + 150;
+					g_vars->scene02_boxDelay = 100 * g_nmi->_rnd.getRandomNumber(32767) + 150;
 				} else {
-					g_fp->_floaters->_array2[0].val3 = -50;
+					g_nmi->_floaters->_array2[0].val3 = -50;
 				}
 			} else {
-				g_fp->_floaters->genFlies(g_fp->_currentScene, g_fp->_rnd.getRandomNumber(700) + 100, -50, 0, 0);
-				g_vars->scene02_boxDelay = 500 * g_fp->_rnd.getRandomNumber(32767) + 1000;
+				g_nmi->_floaters->genFlies(g_nmi->_currentScene, g_nmi->_rnd.getRandomNumber(700) + 100, -50, 0, 0);
+				g_vars->scene02_boxDelay = 500 * g_nmi->_rnd.getRandomNumber(32767) + 1000;
 			}
 		}
 
-		g_fp->_floaters->update();
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_floaters->update();
+		g_nmi->_behaviorManager->updateBehaviors();
 
-		g_fp->startSceneTrack();
+		g_nmi->startSceneTrack();
 		break;
 
 	default:
diff --git a/engines/ngi/fullpipe/scene03.cpp b/engines/ngi/fullpipe/scene03.cpp
index 5a3c27f304..0b59972821 100644
--- a/engines/ngi/fullpipe/scene03.cpp
+++ b/engines/ngi/fullpipe/scene03.cpp
@@ -63,37 +63,37 @@ void scene03_initScene(Scene *sc) {
 	g_vars->scene03_eggeater = sc->getStaticANIObject1ById(ANI_EGGEATER, -1);
 	g_vars->scene03_domino = sc->getStaticANIObject1ById(ANI_DOMINO_3, -1);
 
-	GameVar *v = g_fp->_gameLoader->_gameVar->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs);
+	GameVar *v = g_nmi->_gameLoader->_gameVar->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs);
 
 	g_vars->swallowedEgg1 = v->getSubVarByName(sO_Egg1);
 	g_vars->swallowedEgg2 = v->getSubVarByName(sO_Egg2);
 	g_vars->swallowedEgg3 = v->getSubVarByName(sO_Egg3);
 
-	g_fp->lift_setButton(sO_Level2, ST_LBN_2N);
+	g_nmi->lift_setButton(sO_Level2, ST_LBN_2N);
 
-	g_fp->lift_init(sc, QU_SC3_ENTERLIFT, QU_SC3_EXITLIFT);
+	g_nmi->lift_init(sc, QU_SC3_ENTERLIFT, QU_SC3_EXITLIFT);
 
 	debugC(2, kDebugSceneLogic, "scene03: egg1: %d egg2: %d egg3: %d", g_vars->swallowedEgg1->_value.intValue,
 		g_vars->swallowedEgg2->_value.intValue, g_vars->swallowedEgg3->_value.intValue);
 }
 
 void scene03_setEaterState() {
-	if (g_fp->getObjectState(sO_EggGulperGaveCoin) == g_fp->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes)) {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_SLIM, QU_EGTR_SLIMSHOW, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID1, QU_EGTR_MD1_SHOW, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID2, QU_EGTR_MD2_SHOW, 0);
+	if (g_nmi->getObjectState(sO_EggGulperGaveCoin) == g_nmi->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes)) {
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_SLIM, QU_EGTR_SLIMSHOW, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID1, QU_EGTR_MD1_SHOW, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene03_eggeater, ST_EGTR_MID2, QU_EGTR_MD2_SHOW, 0);
 	}
 }
 
 int scene03_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_cursorId == PIC_CSR_DEFAULT && g_fp->_objectIdAtCursor == PIC_SC3_DOMIN && g_vars->scene03_domino) {
+	if (g_nmi->_cursorId == PIC_CSR_DEFAULT && g_nmi->_objectIdAtCursor == PIC_SC3_DOMIN && g_vars->scene03_domino) {
 		if (g_vars->scene03_domino->_flags & 4)
-			g_fp->_cursorId = PIC_CSR_ITN;
+			g_nmi->_cursorId = PIC_CSR_ITN;
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler03_eaterFat() {
@@ -117,7 +117,7 @@ void sceneHandler03_swallowEgg(int item) {
 		g_vars->swallowedEgg3->_value.intValue = item;
 		debugC(2, kDebugSceneLogic, "scene03: setting egg3: %d", g_vars->swallowedEgg3->_value.intValue);
 
-		g_fp->setObjectState(sO_EggGulperGaveCoin, g_fp->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes));
+		g_nmi->setObjectState(sO_EggGulperGaveCoin, g_nmi->getObjectEnumState(sO_EggGulperGaveCoin, sO_Yes));
 
 		scene03_setEaterState();
 	}
@@ -139,7 +139,7 @@ int sceneHandler03_swallowedEgg1State() {
 void sceneHandler03_giveCoin(ExCommand *ex) {
 	debugC(2, kDebugSceneLogic, "scene03: giveCoin");
 
-	MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex->_parId);
+	MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(ex->_parId);
 
 	if (mq && mq->getCount() > 0) {
 		ExCommand *ex0 = mq->getExCommandByIndex(0);
@@ -163,7 +163,7 @@ void sceneHandler03_giveCoin(ExCommand *ex) {
 }
 
 void sceneHandler03_goLadder() {
-	handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC3_LADDER, 0), 0);
+	handleObjectInteraction(g_nmi->_aniMan, g_nmi->_currentScene->getPictureObjectById(PIC_SC3_LADDER, 0), 0);
 }
 
 void sceneHandler03_pushEggStack() {
@@ -191,7 +191,7 @@ void sceneHandler03_releaseEgg() {
 void sceneHandler03_takeEgg(ExCommand *ex) {
 	debugC(2, kDebugSceneLogic, "scene03: taking egg");
 
-	MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex->_parId);
+	MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(ex->_parId);
 
 	if (mq && mq->getCount() > 0) {
 		ExCommand *ex0 = mq->getExCommandByIndex(0);
@@ -212,7 +212,7 @@ void sceneHandler03_takeEgg(ExCommand *ex) {
 			if (ex1->_objtype == kObjTypeObjstateCommand) {
 				ObjstateCommand *com = static_cast<ObjstateCommand *>(ex1);
 
-				com->_value = g_fp->getObjectEnumState(sO_EggGulper, sO_WantsNothing);
+				com->_value = g_nmi->getObjectEnumState(sO_EggGulper, sO_WantsNothing);
 			}
 		}
 	}
@@ -230,11 +230,11 @@ int sceneHandler03(ExCommand *ex) {
 
 	switch (ex->_messageNum) {
 	case MSG_LIFT_EXITLIFT:
-		g_fp->lift_exitSeq(ex);
+		g_nmi->lift_exitSeq(ex);
 		break;
 
 	case MSG_LIFT_CLOSEDOOR:
-		g_fp->lift_closedoorSeq();
+		g_nmi->lift_closedoorSeq();
 		break;
 
 	case MSG_SC3_ONTAKECOIN:
@@ -242,7 +242,7 @@ int sceneHandler03(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_STARTEXITQUEUE:
-		g_fp->lift_startExitQueue();
+		g_nmi->lift_startExitQueue();
 		break;
 
 	case MSG_SC3_RELEASEEGG:
@@ -250,7 +250,7 @@ int sceneHandler03(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_clickButton();
+		g_nmi->lift_clickButton();
 		break;
 
 	case MSG_SC3_HIDEDOMINO:
@@ -262,7 +262,7 @@ int sceneHandler03(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_GO:
-		g_fp->lift_goAnimation();
+		g_nmi->lift_goAnimation();
 		break;
 
 	case MSG_SC3_UTRUBACLICK:
@@ -274,25 +274,25 @@ int sceneHandler03(ExCommand *ex) {
 		break;
 
 	case 64:
-		g_fp->lift_hoverButton(ex);
+		g_nmi->lift_hoverButton(ex);
 		break;
 
 	case 29:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
 			if (ani && ani->_id == ANI_LIFTBUTTON) {
-				g_fp->lift_animateButton(ani);
+				g_nmi->lift_animateButton(ani);
 				ex->_messageKind = 0;
 
 				return 0;
 			}
 
-			if (g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC3_DOMIN) {
+			if (g_nmi->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC3_DOMIN) {
 				if (g_vars->scene03_domino)
 					if (g_vars->scene03_domino->_flags & 4)
-						if (g_fp->_aniMan->isIdle())
-							if (!(g_fp->_aniMan->_flags & 0x100) && g_fp->_msgObjectId2 != g_vars->scene03_domino->_id) {
-								handleObjectInteraction(g_fp->_aniMan, g_vars->scene03_domino, ex->_param);
+						if (g_nmi->_aniMan->isIdle())
+							if (!(g_nmi->_aniMan->_flags & 0x100) && g_nmi->_msgObjectId2 != g_vars->scene03_domino->_id) {
+								handleObjectInteraction(g_nmi->_aniMan, g_vars->scene03_domino, ex->_param);
 								ex->_messageKind = 0;
 
 								return 0;
@@ -305,19 +305,19 @@ int sceneHandler03(ExCommand *ex) {
 		{
 			int res = 0;
 
-			if (g_fp->_aniMan2) {
-				if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200)
-					g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300;
+			if (g_nmi->_aniMan2) {
+				if (g_nmi->_aniMan2->_ox < g_nmi->_sceneRect.left + 200)
+					g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.left - 300;
 
-				if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200)
-					g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300;
+				if (g_nmi->_aniMan2->_ox > g_nmi->_sceneRect.right - 200)
+					g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.right + 300;
 
 				res = 1;
 			}
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
-			g_fp->startSceneTrack();
+			g_nmi->startSceneTrack();
 
 			return res;
 		}
diff --git a/engines/ngi/fullpipe/scene04.cpp b/engines/ngi/fullpipe/scene04.cpp
index 065442de56..90e0d2e253 100644
--- a/engines/ngi/fullpipe/scene04.cpp
+++ b/engines/ngi/fullpipe/scene04.cpp
@@ -56,7 +56,7 @@ void scene04_speakerCallback(int *phase) {
 
 			if (scene04_speakerPhases[g_vars->scene04_speakerPhase + 6 * g_vars->scene04_speakerVariant] < 0) {
 				g_vars->scene04_speakerPhase = 0;
-				g_vars->scene04_speakerVariant = g_fp->_rnd.getRandomNumber(2);
+				g_vars->scene04_speakerVariant = g_nmi->_rnd.getRandomNumber(2);
 			}
 		} else {
 			++g_vars->scene04_speakerPhase;
@@ -129,7 +129,7 @@ void scene04_initScene(Scene *sc) {
 	if (plank)
 		plank->_flags |= 8;
 
-	if (g_fp->getObjectState(sO_Jar_4) == g_fp->getObjectEnumState(sO_Jar_4, sO_UpsideDown)) {
+	if (g_nmi->getObjectState(sO_Jar_4) == g_nmi->getObjectEnumState(sO_Jar_4, sO_UpsideDown)) {
 		debugC(2, kDebugSceneLogic, "scene04: Jar is upside down");
 
 		g_vars->scene04_bottleObjList.clear();
@@ -193,7 +193,7 @@ void scene04_initScene(Scene *sc) {
 
 	g_vars->scene04_kozyawkiAni.clear();
 
-	g_fp->setObjectState(sO_LowerPipe, g_fp->getObjectEnumState(sO_LowerPipe, sO_IsClosed));
+	g_nmi->setObjectState(sO_LowerPipe, g_nmi->getObjectEnumState(sO_LowerPipe, sO_IsClosed));
 
 	g_vars->scene04_var07 = false;
 	g_vars->scene04_ladderClickable = false;
@@ -206,7 +206,7 @@ void scene04_initScene(Scene *sc) {
 	g_vars->scene04_bigBallCounter = 0;
 	g_vars->scene04_bigBallFromLeft = true;
 
-	if (g_fp->getObjectState(sO_BigMumsy) != g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone))
+	if (g_nmi->getObjectState(sO_BigMumsy) != g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsGone))
 		g_vars->scene04_mamasha->hide();
 
 	g_vars->scene04_speaker = sc->getStaticANIObject1ById(ANI_SPEAKER_4, -1);
@@ -218,12 +218,12 @@ void scene04_initScene(Scene *sc) {
 
 	g_vars->scene04_musicStage = 0;
 
-	g_fp->initArcadeKeys("SC_4");
+	g_nmi->initArcadeKeys("SC_4");
 }
 
 bool sceneHandler04_friesAreWalking() {
-	if (g_vars->scene04_dudeOnLadder && g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) {
-		int col = g_vars->scene04_ladder->collisionDetection(g_fp->_aniMan);
+	if (g_vars->scene04_dudeOnLadder && g_nmi->_aniMan->isIdle() && !(g_nmi->_aniMan->_flags & 0x100)) {
+		int col = g_vars->scene04_ladder->collisionDetection(g_nmi->_aniMan);
 		if (col >= 3 && col <= 6 ) {
 			Movement *koz;
 
@@ -240,38 +240,38 @@ bool sceneHandler04_friesAreWalking() {
 }
 
 int scene04_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor == PIC_SC4_LRTRUBA) {
+	if (g_nmi->_objectIdAtCursor == PIC_SC4_LRTRUBA) {
 		if (!g_vars->scene04_objectIsTaken) {
-			g_fp->_cursorId = PIC_CSR_DEFAULT;
+			g_nmi->_cursorId = PIC_CSR_DEFAULT;
 
-			return g_fp->_cursorId;
+			return g_nmi->_cursorId;
 		}
-	} else if (g_fp->_objectIdAtCursor == ANI_PLANK || g_fp->_objectIdAtCursor == PIC_SC4_PLANK) {
-		if (g_fp->_objectIdAtCursor == ANI_PLANK && g_fp->_cursorId != PIC_CSR_ITN)
-			return g_fp->_cursorId;
+	} else if (g_nmi->_objectIdAtCursor == ANI_PLANK || g_nmi->_objectIdAtCursor == PIC_SC4_PLANK) {
+		if (g_nmi->_objectIdAtCursor == ANI_PLANK && g_nmi->_cursorId != PIC_CSR_ITN)
+			return g_nmi->_cursorId;
 
-		if (g_fp->_objectIdAtCursor == ANI_PLANK || (g_fp->_objectIdAtCursor == PIC_SC4_PLANK && g_fp->_cursorId == PIC_CSR_DEFAULT)) {
+		if (g_nmi->_objectIdAtCursor == ANI_PLANK || (g_nmi->_objectIdAtCursor == PIC_SC4_PLANK && g_nmi->_cursorId == PIC_CSR_DEFAULT)) {
 			if (sceneHandler04_friesAreWalking()) {
-				g_fp->_cursorId = PIC_CSR_ARCADE1;
-				return g_fp->_cursorId;
+				g_nmi->_cursorId = PIC_CSR_ARCADE1;
+				return g_nmi->_cursorId;
 			}
 			if (g_vars->scene04_soundPlaying) {
-				g_fp->_cursorId = PIC_CSR_DEFAULT;
-				return g_fp->_cursorId;
+				g_nmi->_cursorId = PIC_CSR_DEFAULT;
+				return g_nmi->_cursorId;
 			}
 		}
 	}
 
-	if (g_fp->_cursorId == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC4_DOWNTRUBA)
-		g_fp->_cursorId = PIC_CSR_GOD;
+	if (g_nmi->_cursorId == PIC_CSR_ITN && g_nmi->_objectIdAtCursor == PIC_SC4_DOWNTRUBA)
+		g_nmi->_cursorId = PIC_CSR_GOD;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler04_checkBigBallClick() {
-	StaticANIObject *ball = g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
+	StaticANIObject *ball = g_nmi->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
 
 	if (ball)
 		for (uint i = 0; i < ball->_movements.size(); i++)
@@ -286,7 +286,7 @@ void sceneHandler04_clickBottle() {
 }
 
 void sceneHandler04_clickButton() {
-	StaticANIObject *but = g_fp->_currentScene->getStaticANIObject1ById(ANI_BUTTON, -1);
+	StaticANIObject *but = g_nmi->_currentScene->getStaticANIObject1ById(ANI_BUTTON, -1);
 
 	if (but) {
 		if (!g_vars->scene04_clock->_movement ||
@@ -301,22 +301,22 @@ void sceneHandler04_clickButton() {
 }
 
 void sceneHandler04_downLadder(int x, int y) {
-	g_vars->scene04_ladder->startMove(g_fp->_aniMan, x + g_vars->scene04_ladder->_ladder_field_20, y + g_vars->scene04_ladder->_ladder_field_24, 0, 0);
+	g_vars->scene04_ladder->startMove(g_nmi->_aniMan, x + g_vars->scene04_ladder->_ladder_field_20, y + g_vars->scene04_ladder->_ladder_field_24, 0, 0);
 }
 
 void sceneHandler04_walkClimbLadder(ExCommand *ex) {
-	MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+	MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
 	ExCommand *ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_TOLADDER, 0, 0, 0, 1, 0, 0, 0);
 
-	ex1->_param = g_fp->_aniMan->_odelay;
+	ex1->_param = g_nmi->_aniMan->_odelay;
 	ex1->_excFlags |= 2;
 
 	mq->addExCommandToEnd(ex1);
 
 	ExCommand *ex2 = new ExCommand(ANI_MAN, 1, MV_MAN_STOPLADDER, 0, 0, 0, 1, 0, 0, 0);
 
-	ex2->_param = g_fp->_aniMan->_odelay;
+	ex2->_param = g_nmi->_aniMan->_odelay;
 	ex2->_excFlags |= 2;
 
 	mq->addExCommandToEnd(ex2);
@@ -347,7 +347,7 @@ void sceneHandler04_walkClimbLadder(ExCommand *ex) {
 	g_vars->scene04_ladder->_ladder_field_20 = 0;
 	g_vars->scene04_ladder->_ladder_field_24 = -60;
 
-	g_vars->scene04_ladder->attachObject(g_fp->_aniMan);
+	g_vars->scene04_ladder->attachObject(g_nmi->_aniMan);
 
 	if (g_vars->scene04_soundPlaying) {
 		g_vars->scene04_ladder->_ladmovements.front()->movVars->varUpStart = MV_MAN_STARTLADDER2;
@@ -361,18 +361,18 @@ void sceneHandler04_walkClimbLadder(ExCommand *ex) {
 		g_vars->scene04_ladder->_ladmovements.front()->staticIds[2] = ST_MAN_GOLADDER;
 	}
 
-	g_fp->_aniMan->_priority = 12;
+	g_nmi->_aniMan->_priority = 12;
 
-	getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->deactivate();
+	getSc2MctlCompoundBySceneId(g_nmi->_currentScene->_sceneId)->deactivate();
 	getGameLoaderInteractionController()->disableFlag24();
 }
 
 void sceneHandler04_clickLadder() {
-	g_vars->scene04_dudePosX = g_fp->_aniMan->_ox;
-	g_vars->scene04_dudePosY = g_fp->_aniMan->_oy;
+	g_vars->scene04_dudePosX = g_nmi->_aniMan->_ox;
+	g_vars->scene04_dudePosY = g_nmi->_aniMan->_oy;
 
 	if (g_vars->scene04_dudeOnLadder) {
-		if (!g_fp->_aniMan->isIdle() || (g_fp->_aniMan->_flags & 0x100)) {
+		if (!g_nmi->_aniMan->isIdle() || (g_nmi->_aniMan->_flags & 0x100)) {
 			g_vars->scene04_ladderClickable = true;
 		} else {
 			int h3 = 3 * g_vars->scene04_ladder->_height;
@@ -392,16 +392,16 @@ void sceneHandler04_clickLadder() {
 			g_vars->scene04_ladderClickable = false;
 		}
 	} else {
-		if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) {
+		if (g_nmi->_aniMan->isIdle() && !(g_nmi->_aniMan->_flags & 0x100)) {
 			if (abs(1095 - g_vars->scene04_dudePosX) > 1 || abs(434 - g_vars->scene04_dudePosY) > 1) {
-				MessageQueue *mq = getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->startMove(g_fp->_aniMan, 1095, 434, 1, ST_MAN_UP);
+				MessageQueue *mq = getSc2MctlCompoundBySceneId(g_nmi->_currentScene->_sceneId)->startMove(g_nmi->_aniMan, 1095, 434, 1, ST_MAN_UP);
 				if (mq) {
 					ExCommand *ex = new ExCommand(0, 17, MSG_SC4_CLICKLADDER, 0, 0, 0, 1, 0, 0, 0);
 
 					ex->_excFlags = 3;
 					mq->addExCommandToEnd(ex);
 
-					postExCommand(g_fp->_aniMan->_id, 2, 1095, 434, 0, -1);
+					postExCommand(g_nmi->_aniMan->_id, 2, 1095, 434, 0, -1);
 				}
 			} else {
 				sceneHandler04_walkClimbLadder(0);
@@ -411,22 +411,22 @@ void sceneHandler04_clickLadder() {
 }
 
 void sceneHandler04_jumpOnLadder() {
-	if (g_fp->_aniMan->_movement && g_fp->_aniMan->_movement->_id != MV_MAN_LOOKLADDER)
+	if (g_nmi->_aniMan->_movement && g_nmi->_aniMan->_movement->_id != MV_MAN_LOOKLADDER)
 		return;
 
-	if (g_fp->_aniMan->_statics->_staticsId != ST_MAN_STANDLADDER && g_fp->_aniMan->_statics->_staticsId != ST_MAN_LADDERDOWN)
+	if (g_nmi->_aniMan->_statics->_staticsId != ST_MAN_STANDLADDER && g_nmi->_aniMan->_statics->_staticsId != ST_MAN_LADDERDOWN)
 		return;
 
-	g_fp->_aniMan->changeStatics2(ST_MAN_LADDERDOWN);
+	g_nmi->_aniMan->changeStatics2(ST_MAN_LADDERDOWN);
 
-	g_fp->_aniMan->_flags |= 0x100;
+	g_nmi->_aniMan->_flags |= 0x100;
 
 	AniHandler aniHandler;
 	MakeQueueStruct mkQueue;
 
 	aniHandler.attachObject(ANI_MAN);
 
-	mkQueue.ani = g_fp->_aniMan;
+	mkQueue.ani = g_nmi->_aniMan;
 	mkQueue.staticsId2 = ST_MAN_ONPLANK;
 	mkQueue.x1 = 938;
 	mkQueue.y1 = 442;
@@ -440,20 +440,20 @@ void sceneHandler04_jumpOnLadder() {
 	if (mq) {
 		mq->_flags |= 1;
 
-		if (!mq->chain(g_fp->_aniMan))
+		if (!mq->chain(g_nmi->_aniMan))
 			delete mq;
 
-		g_fp->_aniMan->_priority = 10;
+		g_nmi->_aniMan->_priority = 10;
 	}
 
-	g_vars->scene04_ladderOffset = g_vars->scene04_ladder->collisionDetection(g_fp->_aniMan);
+	g_vars->scene04_ladderOffset = g_vars->scene04_ladder->collisionDetection(g_nmi->_aniMan);
 }
 
 void sceneHandler04_clickPlank() {
 	if (sceneHandler04_friesAreWalking())
 		sceneHandler04_jumpOnLadder();
 	else if (g_vars->scene04_dudeOnLadder)
-		g_fp->playSound(SND_4_033, 0);
+		g_nmi->playSound(SND_4_033, 0);
 	else if (!g_vars->scene04_soundPlaying)
 		chainQueue(QU_PNK_CLICK, 0);
 }
@@ -491,7 +491,7 @@ void sceneHandler04_gotoLadder(ExCommand *ex) {
 
 	aniHandler.attachObject(ANI_MAN);
 
-	mkQueue.ani = g_fp->_aniMan;
+	mkQueue.ani = g_nmi->_aniMan;
 	mkQueue.staticsId2 = ST_MAN_UP;
 	mkQueue.x1 = 1095;
 	mkQueue.y1 = 434;
@@ -517,7 +517,7 @@ void sceneHandler04_gotoLadder(ExCommand *ex) {
 		ex2->_param = -1;
 		mq->addExCommandToEnd(ex2);
 
-		ExCommand *ex3 = new ExCommand(g_fp->_aniMan->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0);
+		ExCommand *ex3 = new ExCommand(g_nmi->_aniMan->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0);
 		ex3->_z = 256;
 		ex3->_messageNum = 0;
 		ex3->_excFlags |= 3;
@@ -531,9 +531,9 @@ void sceneHandler04_gotoLadder(ExCommand *ex) {
 
 		mq->setFlags(mq->getFlags() | 1);
 
-		if (mq->chain(g_fp->_aniMan)) {
-			g_fp->_aniMan->_priority = 12;
-			g_fp->_aniMan->_flags |= 0x100;
+		if (mq->chain(g_nmi->_aniMan)) {
+			g_nmi->_aniMan->_priority = 12;
+			g_nmi->_aniMan->_flags |= 0x100;
 		} else {
 			delete mq;
 		}
@@ -548,7 +548,7 @@ void sceneHandler04_lowerPlank() {
 
 void sceneHandler04_manFromBottle() {
 	for (Common::List<GameObject *>::iterator it = g_vars->scene04_bottleObjList.begin(); it != g_vars->scene04_bottleObjList.end(); ++it)
-		if (*it == g_fp->_aniMan) {
+		if (*it == g_nmi->_aniMan) {
 			g_vars->scene04_bottleObjList.erase(it);
 			g_vars->scene04_bottleWeight -= 9;
 			break;
@@ -559,15 +559,15 @@ void sceneHandler04_manFromBottle() {
 
 	g_vars->scene04_ladder = 0;
 
-	getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->activate();
+	getSc2MctlCompoundBySceneId(g_nmi->_currentScene->_sceneId)->activate();
 	getGameLoaderInteractionController()->enableFlag24();
 }
 
 void sceneHandler04_manToBottle() {
-	g_vars->scene04_bottleObjList.push_back(g_fp->_aniMan);
+	g_vars->scene04_bottleObjList.push_back(g_nmi->_aniMan);
 	g_vars->scene04_springOffset = 5;
 	g_vars->scene04_bottleWeight += 9;
-	g_fp->_aniMan2 = g_fp->_aniMan;
+	g_nmi->_aniMan2 = g_nmi->_aniMan;
 	g_vars->scene04_dudeInBottle = 1;
 }
 
@@ -709,9 +709,9 @@ MessageQueue *sceneHandler04_kozFly6(StaticANIObject *ani) {
 
 	mkQueue.ani = ani;
 	mkQueue.staticsId2 = ST_KZW_SIT;
-	mkQueue.x1 = 397 - 4 * g_fp->_rnd.getRandomNumber(1);
+	mkQueue.x1 = 397 - 4 * g_nmi->_rnd.getRandomNumber(1);
 	mkQueue.field_1C = ani->_priority;
-	mkQueue.y1 = g_vars->scene04_bottle->_oy - 4 * g_fp->_rnd.getRandomNumber(1) + 109;
+	mkQueue.y1 = g_vars->scene04_bottle->_oy - 4 * g_nmi->_rnd.getRandomNumber(1) + 109;
 	mkQueue.field_10 = 1;
 	mkQueue.flags = 78;
 	mkQueue.movementId = MV_KZW_JUMPROTATE;
@@ -901,13 +901,13 @@ void sceneHandler04_shootKozyawka() {
 	}
 
 	if (g_vars->scene04_ladderOffset > 3)
-		g_fp->_aniMan->changeStatics1(ST_MAN_LOOKPLANK);
+		g_nmi->_aniMan->changeStatics1(ST_MAN_LOOKPLANK);
 
 	g_vars->scene04_kozyawkaOnLadder = true;
 }
 
 void sceneHandler04_showCoin() {
-	StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_SC4_COIN, -1);
+	StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_SC4_COIN, -1);
 
 	if (ani) {
 		ani->show1(MV_BDG_OPEN, MV_MAN_GOU, MV_SC4_COIN_default, 0);
@@ -919,13 +919,13 @@ void sceneHandler04_showCoin() {
 void sceneHandler04_stopSound() {
 	g_vars->scene04_soundPlaying = false;
 
-	g_fp->stopSoundStream2();
+	g_nmi->stopSoundStream2();
 }
 
 void sceneHandler04_animOutOfBottle(ExCommand *ex) {
-	g_fp->_aniMan->changeStatics2(ST_MAN_SIT);
+	g_nmi->_aniMan->changeStatics2(ST_MAN_SIT);
 
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC4_MANFROMBOTTLE), 0, 0);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC4_MANFROMBOTTLE), 0, 0);
 
 	if (ex) {
 		ExCommand *newex = ex->createClone();
@@ -937,7 +937,7 @@ void sceneHandler04_animOutOfBottle(ExCommand *ex) {
 	mq->chain(0);
 
 	g_vars->scene04_dudeInBottle = false;
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
 }
 
 void sceneHandler04_walkKozyawka() {
@@ -949,7 +949,7 @@ void sceneHandler04_walkKozyawka() {
 		g_vars->scene04_walkingKozyawka = g_vars->scene04_kozyawkiObjList.front();
 		g_vars->scene04_kozyawkiObjList.pop_front();
 
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_KOZAW_WALK), 0, 1);
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_KOZAW_WALK), 0, 1);
 		mq->setParamInt(-1, g_vars->scene04_walkingKozyawka->_odelay);
 		mq->chain(0);
 	}
@@ -1020,9 +1020,9 @@ void sceneHandler04_springWobble() {
 }
 
 void sceneHandler04_leaveScene() {
-	g_fp->_aniMan2 = 0;
+	g_nmi->_aniMan2 = 0;
 
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC4_MANTOBOTTLE), 0, 0);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC4_MANTOBOTTLE), 0, 0);
 	ExCommand *ex = 0;
 
 	for (uint i = 0; i < mq->getCount(); i++) {
@@ -1043,9 +1043,9 @@ void sceneHandler04_leaveScene() {
 	g_vars->scene04_var07 = false;
 	g_vars->scene04_dudeOnLadder = 0;
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 
-	g_fp->updateMapPiece(PIC_MAP_P03, 1);
+	g_nmi->updateMapPiece(PIC_MAP_P03, 1);
 }
 
 void sceneHandler04_liftBottle() {
@@ -1068,14 +1068,14 @@ void sceneHandler04_liftBottle() {
 		g_vars->scene04_springOffset = 10;
 		g_vars->scene04_bottleIsTaken = false;
 
-		g_fp->setObjectState(sO_LowerPipe, g_fp->getObjectEnumState(sO_LowerPipe, sO_IsClosed));
+		g_nmi->setObjectState(sO_LowerPipe, g_nmi->getObjectEnumState(sO_LowerPipe, sO_IsClosed));
 	}
 }
 
 void sceneHandler04_startSounds(const char *snd1, const char *snd2, const char *snd3) {
-	g_fp->playOggSound(snd1, g_fp->_soundStream2);
+	g_nmi->playOggSound(snd1, g_nmi->_soundStream2);
 
-	g_fp->_stream2playing = true;
+	g_nmi->_stream2playing = true;
 
 	g_vars->scene04_musicStage = 1;
 }
@@ -1086,23 +1086,23 @@ void updateSound() {
 	default:
 		break;
 	case 1:
-		if (!g_fp->_mixer->isSoundHandleActive(g_fp->_soundStream2)) {
-			g_fp->playOggSound("sc4_loop.ogg", g_fp->_soundStream3);
+		if (!g_nmi->_mixer->isSoundHandleActive(g_nmi->_soundStream2)) {
+			g_nmi->playOggSound("sc4_loop.ogg", g_nmi->_soundStream3);
 			g_vars->scene04_musicStage = 2;
 		}
 		break;
 	case 2:
-		if (!g_fp->_mixer->isSoundHandleActive(g_fp->_soundStream3)) {
-			if (g_fp->_stream2playing) { // Looop it
-				g_fp->playOggSound("sc4_loop.ogg", g_fp->_soundStream3);
+		if (!g_nmi->_mixer->isSoundHandleActive(g_nmi->_soundStream3)) {
+			if (g_nmi->_stream2playing) { // Looop it
+				g_nmi->playOggSound("sc4_loop.ogg", g_nmi->_soundStream3);
 			} else {
-				g_fp->playOggSound("sc4_stop2.ogg", g_fp->_soundStream4);
+				g_nmi->playOggSound("sc4_stop2.ogg", g_nmi->_soundStream4);
 				g_vars->scene04_musicStage = 3;
 			}
 		}
 		break;
 	case 3:
-		if (!g_fp->_mixer->isSoundHandleActive(g_fp->_soundStream4)) {
+		if (!g_nmi->_mixer->isSoundHandleActive(g_nmi->_soundStream4)) {
 			g_vars->scene04_musicStage = 0;
 		}
 		break;
@@ -1115,7 +1115,7 @@ void sceneHandler04_goClock() {
 	g_vars->scene04_soundPlaying = true;
 	g_vars->scene04_coinPut = false;
 
-	g_fp->stopAllSoundStreams();
+	g_nmi->stopAllSoundStreams();
 
 	sceneHandler04_startSounds("sc4_start.ogg", "sc4_loop.ogg", "sc4_stop2.ogg");
 
@@ -1123,7 +1123,7 @@ void sceneHandler04_goClock() {
 }
 
 void sceneHandler04_bigBallOut() {
-	StaticANIObject *ball =  g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
+	StaticANIObject *ball =  g_nmi->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
 
 	if (ball && ball->_flags & 4)
 		for (uint i = 0; i < ball->_movements.size(); i++)
@@ -1133,21 +1133,21 @@ void sceneHandler04_bigBallOut() {
 }
 
 void sceneHandler04_leaveLadder(ExCommand *ex) {
-	if (!g_fp->_aniMan->isIdle())
+	if (!g_nmi->_aniMan->isIdle())
 		return;
 
-	if (!(g_fp->_aniMan->_flags & 0x100)) {
-		if (getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->_objtype == kObjTypeMctlCompound) {
-			MctlCompound *mc = static_cast<MctlCompound *>(getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId));
+	if (!(g_nmi->_aniMan->_flags & 0x100)) {
+		if (getSc2MctlCompoundBySceneId(g_nmi->_currentScene->_sceneId)->_objtype == kObjTypeMctlCompound) {
+			MctlCompound *mc = static_cast<MctlCompound *>(getSc2MctlCompoundBySceneId(g_nmi->_currentScene->_sceneId));
 
-			if (mc->_motionControllers[0]->_movGraphReactObj->pointInRegion(g_fp->_sceneRect.left + ex->_x, g_fp->_sceneRect.top + ex->_y)) {
-				if (g_vars->scene04_ladder->collisionDetection(g_fp->_aniMan)) {
-					MessageQueue *mq = g_vars->scene04_ladder->controllerWalkTo(g_fp->_aniMan, 0);
+			if (mc->_motionControllers[0]->_movGraphReactObj->pointInRegion(g_nmi->_sceneRect.left + ex->_x, g_nmi->_sceneRect.top + ex->_y)) {
+				if (g_vars->scene04_ladder->collisionDetection(g_nmi->_aniMan)) {
+					MessageQueue *mq = g_vars->scene04_ladder->controllerWalkTo(g_nmi->_aniMan, 0);
 
 					if (mq) {
 						mq->addExCommandToEnd(ex->createClone());
 
-						if (mq->chain(g_fp->_aniMan) )
+						if (mq->chain(g_nmi->_aniMan) )
 							ex->_messageKind = 0;
 						else
 							delete mq;
@@ -1158,23 +1158,23 @@ void sceneHandler04_leaveLadder(ExCommand *ex) {
 						}
 					}
 				} else {
-					MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+					MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 					ExCommand *ex1;
 
-					if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN) {
+					if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN) {
 						ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_LOOKLADDERRV, 0, 0, 0, 1, 0, 0, 0);
-						ex1->_param = g_fp->_aniMan->_odelay;
+						ex1->_param = g_nmi->_aniMan->_odelay;
 						ex1->_excFlags |= 2;
 						mq->addExCommandToEnd(ex1);
 					}
 
 					ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_STARTLADDERD, 0, 0, 0, 1, 0, 0, 0);
-					ex1->_param = g_fp->_aniMan->_odelay;
+					ex1->_param = g_nmi->_aniMan->_odelay;
 					ex1->_excFlags |= 2;
 					mq->addExCommandToEnd(ex1);
 
 					ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_FROMLADDER, 0, 0, 0, 1, 0, 0, 0);
-					ex1->_param = g_fp->_aniMan->_odelay;
+					ex1->_param = g_nmi->_aniMan->_odelay;
 					ex1->_excFlags |= 2;
 					mq->addExCommandToEnd(ex1);
 
@@ -1183,7 +1183,7 @@ void sceneHandler04_leaveLadder(ExCommand *ex) {
 
 					mq->setFlags(mq->getFlags() | 1);
 
-					if (mq->chain(g_fp->_aniMan)) {
+					if (mq->chain(g_nmi->_aniMan)) {
 						if (g_vars->scene04_ladder)
 							delete g_vars->scene04_ladder;
 
@@ -1247,13 +1247,13 @@ void sceneHandler04_putKozyawkaBack(StaticANIObject *ani) {
 }
 
 void sceneHandler04_bigBallWalkIn() {
-	StaticANIObject *ball =  g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
+	StaticANIObject *ball =  g_nmi->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
 
 	if (g_vars->scene04_dudeOnLadder
 		 && (!ball || !(ball->_flags & 4))
-		 && g_vars->scene04_ladder->collisionDetection(g_fp->_aniMan) > 3) {
+		 && g_vars->scene04_ladder->collisionDetection(g_nmi->_aniMan) > 3) {
 
-		if (!g_fp->_rnd.getRandomNumber(49)) {
+		if (!g_nmi->_rnd.getRandomNumber(49)) {
 			if (g_vars->scene04_bigBallFromLeft)
 				chainQueue(QU_BALL_WALKR, 0);
 			else
@@ -1272,7 +1272,7 @@ void sceneHandler04_takeBottle() {
 	g_vars->scene04_bottleIsTaken = true;
 	g_vars->scene04_hand->_priority = 5;
 
-	g_fp->setObjectState(sO_LowerPipe, g_fp->getObjectEnumState(sO_LowerPipe, sO_IsOpened));
+	g_nmi->setObjectState(sO_LowerPipe, g_nmi->getObjectEnumState(sO_LowerPipe, sO_IsOpened));
 }
 
 void sceneHandler04_takeKozyawka() {
@@ -1301,7 +1301,7 @@ void sceneHandler04_takeKozyawka() {
 }
 
 void sceneHandler04_testPlank(ExCommand *ex) {
-	MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(ex->_parId);
+	MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(ex->_parId);
 
 	if (!mq)
 		return;
@@ -1329,7 +1329,7 @@ void sceneHandler04_updateBottle() {
 }
 
 void sceneHandler04_winArcade() {
-	if (g_fp->getObjectState(sO_LowerPipe) == g_fp->getObjectEnumState(sO_LowerPipe, sO_IsClosed)
+	if (g_nmi->getObjectState(sO_LowerPipe) == g_nmi->getObjectEnumState(sO_LowerPipe, sO_IsClosed)
 		&& g_vars->scene04_soundPlaying) {
 		g_vars->scene04_clock->changeStatics2(ST_CLK_CLOSED);
 		g_vars->scene04_hand->changeStatics2(ST_HND_EMPTY);
@@ -1347,11 +1347,11 @@ void sceneHandler04_winArcade() {
 		g_vars->scene04_objectIsTaken = false;
 		g_vars->scene04_soundPlaying = false;
 
-		getSc2MctlCompoundBySceneId(g_fp->_currentScene->_sceneId)->activate();
+		getSc2MctlCompoundBySceneId(g_nmi->_currentScene->_sceneId)->activate();
 
 		getGameLoaderInteractionController()->enableFlag24();
 
-		g_fp->stopSoundStream2();
+		g_nmi->stopSoundStream2();
 	}
 }
 
@@ -1428,39 +1428,39 @@ int sceneHandler04(ExCommand *ex) {
 
 	case 33:
 		{
-			g_vars->scene04_dudePosX = g_fp->_aniMan->_ox;
-			g_vars->scene04_dudePosY = g_fp->_aniMan->_oy;
+			g_vars->scene04_dudePosX = g_nmi->_aniMan->_ox;
+			g_vars->scene04_dudePosY = g_nmi->_aniMan->_oy;
 
 			int res = 0;
 
-			if (g_fp->_aniMan2) {
-				if (g_fp->_aniMan->_ox < g_fp->_sceneRect.left + 200) {
-					g_fp->_currentScene->_x = g_fp->_aniMan->_ox - g_fp->_sceneRect.left - 300;
-					g_fp->_aniMan->_ox = g_vars->scene04_dudePosX;
+			if (g_nmi->_aniMan2) {
+				if (g_nmi->_aniMan->_ox < g_nmi->_sceneRect.left + 200) {
+					g_nmi->_currentScene->_x = g_nmi->_aniMan->_ox - g_nmi->_sceneRect.left - 300;
+					g_nmi->_aniMan->_ox = g_vars->scene04_dudePosX;
 				}
-				if (g_fp->_aniMan->_ox > g_fp->_sceneRect.right - 200) {
-					g_fp->_currentScene->_x = g_fp->_aniMan->_ox - g_fp->_sceneRect.right + 300;
+				if (g_nmi->_aniMan->_ox > g_nmi->_sceneRect.right - 200) {
+					g_nmi->_currentScene->_x = g_nmi->_aniMan->_ox - g_nmi->_sceneRect.right + 300;
 				}
 
 				res = 1;
 			}
 
-			g_fp->sceneAutoScrolling();
+			g_nmi->sceneAutoScrolling();
 
-			if (g_fp->_aniMan2) {
+			if (g_nmi->_aniMan2) {
 				if (g_vars->scene04_soundPlaying) {
-					if (g_fp->_aniMan->_movement) {
-						if (g_fp->_aniMan->_movement->_id == MV_MAN_TOLADDER) {
-							g_fp->_aniMan2 = 0;
+					if (g_nmi->_aniMan->_movement) {
+						if (g_nmi->_aniMan->_movement->_id == MV_MAN_TOLADDER) {
+							g_nmi->_aniMan2 = 0;
 
-							if (g_fp->_sceneRect.left > 380)
-								g_fp->_currentScene->_x = 380 - g_fp->_sceneRect.left;
+							if (g_nmi->_sceneRect.left > 380)
+								g_nmi->_currentScene->_x = 380 - g_nmi->_sceneRect.left;
 						}
 					}
 				}
 			} else {
-				if (g_fp->_aniMan->_movement && g_fp->_aniMan->_movement->_id == MV_MAN_GOD)
-					g_fp->_aniMan2 = g_fp->_aniMan;
+				if (g_nmi->_aniMan->_movement && g_nmi->_aniMan->_movement->_id == MV_MAN_GOD)
+					g_nmi->_aniMan2 = g_nmi->_aniMan;
 			}
 
 			sceneHandler04_springWobble();
@@ -1482,9 +1482,9 @@ int sceneHandler04(ExCommand *ex) {
 
 			if (g_vars->scene04_dudeOnLadder) {
 				if (!g_vars->scene04_soundPlaying) {
-					g_fp->startSceneTrack();
+					g_nmi->startSceneTrack();
 
-					g_fp->_behaviorManager->updateBehaviors();
+					g_nmi->_behaviorManager->updateBehaviors();
 					return res;
 				}
 
@@ -1495,14 +1495,14 @@ int sceneHandler04(ExCommand *ex) {
 			}
 
 			if (g_vars->scene04_soundPlaying) {
-				g_fp->_behaviorManager->updateBehaviors();
+				g_nmi->_behaviorManager->updateBehaviors();
 
 				return res;
 			}
 
-			g_fp->startSceneTrack();
+			g_nmi->startSceneTrack();
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
 			return res;
 		}
@@ -1510,7 +1510,7 @@ int sceneHandler04(ExCommand *ex) {
 
 	case 29:
 		{
-			int picid = g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY);
+			int picid = g_nmi->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY);
 
 			if (g_vars->scene04_dudeInBottle) {
 				sceneHandler04_animOutOfBottle(ex);
@@ -1535,7 +1535,7 @@ int sceneHandler04(ExCommand *ex) {
 				break;
 			}
 
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
 
 			if ((ani && ani->_id == ANI_PLANK) || picid == PIC_SC4_PLANK) {
 				sceneHandler04_clickPlank();
@@ -1543,13 +1543,13 @@ int sceneHandler04(ExCommand *ex) {
 				ex->_messageKind = 0;
 			} else if (g_vars->scene04_dudeOnLadder) {
 				sceneHandler04_leaveLadder(ex);
-			} else if (!ani || !canInteractAny(g_fp->_aniMan, ani, ex->_param)) {
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picid, 0);
+			} else if (!ani || !canInteractAny(g_nmi->_aniMan, ani, ex->_param)) {
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picid, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic,ex->_param)) {
-					if ((g_fp->_sceneRect.right - ex->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-						|| (ex->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0))
-						g_fp->processArcade(ex);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic,ex->_param)) {
+					if ((g_nmi->_sceneRect.right - ex->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+						|| (ex->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0))
+						g_nmi->processArcade(ex);
 				}
 			}
 		}
diff --git a/engines/ngi/fullpipe/scene05.cpp b/engines/ngi/fullpipe/scene05.cpp
index d25e3f11db..2334dc2cd2 100644
--- a/engines/ngi/fullpipe/scene05.cpp
+++ b/engines/ngi/fullpipe/scene05.cpp
@@ -54,27 +54,27 @@ void scene05_initScene(Scene *sc) {
 	g_vars->scene05_handleFlipper = 1;
 	g_vars->scene05_floatersTicker = 1000;
 
-	Scene *oldscene = g_fp->_currentScene;
+	Scene *oldscene = g_nmi->_currentScene;
 
-	g_fp->_currentScene = sc;
+	g_nmi->_currentScene = sc;
 
-	debugC(2, kDebugSceneLogic, "scene05: Weird Wacko state: %d", g_fp->getObjectState(sO_WeirdWacko));
+	debugC(2, kDebugSceneLogic, "scene05: Weird Wacko state: %d", g_nmi->getObjectState(sO_WeirdWacko));
 
-	if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) {
+	if (g_nmi->getObjectState(sO_WeirdWacko) == g_nmi->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) {
 		debugC(2, kDebugSceneLogic, "scene05: In glasses");
 		g_vars->scene05_wacko->changeStatics2(ST_OTM_GLS_LEFT);
 		g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED);
 
 		g_vars->scene05_handle->changeStatics2(ST_HDL_UP);
 		g_vars->scene05_handle->_flags |= 4;
-	} else if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) {
+	} else if (g_nmi->getObjectState(sO_WeirdWacko) == g_nmi->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) {
 		debugC(2, kDebugSceneLogic, "scene05: With Drawer");
 		g_vars->scene05_wacko->changeStatics2(ST_OTM_BOX_LEFT);
 		g_vars->scene05_bigHatch->changeStatics2(ST_BLK_CLOSED);
 		g_vars->scene05_handle->changeStatics2(ST_HDL_UP);
 		g_vars->scene05_handle->_flags |= 4;
 	} else {
-		if (g_fp->getObjectState(sO_WeirdWacko) != g_fp->getObjectEnumState(sO_WeirdWacko, sO_WithPlunger)) {
+		if (g_nmi->getObjectState(sO_WeirdWacko) != g_nmi->getObjectEnumState(sO_WeirdWacko, sO_WithPlunger)) {
 			debugC(2, kDebugSceneLogic, "scene05: Without plunger");
 
 			g_vars->scene05_handle->changeStatics2(ST_HDL_BROKEN);
@@ -86,7 +86,7 @@ void scene05_initScene(Scene *sc) {
 		g_vars->scene05_wacko->changeStatics2(ST_OTM_VNT_LEFT);
 	}
 
-	g_fp->_currentScene = oldscene;
+	g_nmi->_currentScene = oldscene;
 }
 
 void sceneHandler05_makeManFlight() {
@@ -97,7 +97,7 @@ void sceneHandler05_makeManFlight() {
 	else
 		qid = QU_SC5_MANFLY;
 
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(qid), 0, 0);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(qid), 0, 0);
 
 	mq->setFlags(mq->getFlags() | 1);
 
@@ -108,10 +108,10 @@ void sceneHandler05_makeWackoFeedback() {
 	int staticsId1;
 	int staticsId2;
 
-	if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) {
+	if (g_nmi->getObjectState(sO_WeirdWacko) == g_nmi->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) {
 		staticsId1 = ST_OTM_GLS_LEFT;
 		staticsId2 = (g_vars->scene05_handle->_statics->_staticsId == ST_HDL_DOWN) ? MV_OTM_HANDLEUP : MV_OTM_HANDLEDOWN;
-	} else if (g_fp->getObjectState(sO_WeirdWacko) != g_fp->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) {
+	} else if (g_nmi->getObjectState(sO_WeirdWacko) != g_nmi->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) {
 		return;
 	} else {
 		staticsId1 = ST_OTM_BOX_LEFT;
@@ -140,9 +140,9 @@ void sceneHandler05_makeWackoFeedback() {
 }
 
 void sceneHandler05_resetTicks() {
-	if (g_fp->_aniMan->_movement && (g_fp->_aniMan->_movement->_id == MV_MANHDL_HANDLEUP
-											|| g_fp->_aniMan->_movement->_id == MV_MANHDL_HANDLEDOWN))
-		g_vars->scene05_wackoTicker = g_fp->_updateTicks;
+	if (g_nmi->_aniMan->_movement && (g_nmi->_aniMan->_movement->_id == MV_MANHDL_HANDLEUP
+											|| g_nmi->_aniMan->_movement->_id == MV_MANHDL_HANDLEDOWN))
+		g_vars->scene05_wackoTicker = g_nmi->_updateTicks;
 	else
 		g_vars->scene05_wackoTicker = 0;
 }
@@ -151,17 +151,17 @@ void sceneHandler05_genFlies() {
 	if (g_vars->scene05_floatersTicker <= 1000)
 		return;
 
-	if (g_fp->_rnd.getRandomNumber(1)) {
-		int numFlies = g_fp->_rnd.getRandomNumber(3) + 1;
+	if (g_nmi->_rnd.getRandomNumber(1)) {
+		int numFlies = g_nmi->_rnd.getRandomNumber(3) + 1;
 
 		for (int i = 0; i < numFlies; i++) {
-			int x = g_fp->_rnd.getRandomNumber(55) + 538;
-			int y = g_fp->_rnd.getRandomNumber(60) + i * 30 + 520;
+			int x = g_nmi->_rnd.getRandomNumber(55) + 538;
+			int y = g_nmi->_rnd.getRandomNumber(60) + i * 30 + 520;
 
-			g_fp->_floaters->genFlies(g_fp->_currentScene, x, y, 5, 1);
-			g_fp->_floaters->_array2.back().val2 = 585;
-			g_fp->_floaters->_array2.back().val3 = -70;
-			g_fp->_floaters->_array2.back().val11 = 8.0;
+			g_nmi->_floaters->genFlies(g_nmi->_currentScene, x, y, 5, 1);
+			g_nmi->_floaters->_array2.back().val2 = 585;
+			g_nmi->_floaters->_array2.back().val3 = -70;
+			g_nmi->_floaters->_array2.back().val11 = 8.0;
 		}
 	}
 
@@ -169,11 +169,11 @@ void sceneHandler05_genFlies() {
 }
 
 void sceneHandler05_showHandle() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->show1(-1, -1, -1, 0);
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->show1(-1, -1, -1, 0);
 }
 
 void sceneHandler05_handleDown() {
-	StaticANIObject *hatch = g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1);
+	StaticANIObject *hatch = g_nmi->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1);
 
 	hatch->changeStatics2(ST_BLK_CLOSED);
 	hatch->startAnim(MV_BLK_OPEN, 0, -1);
@@ -183,11 +183,11 @@ void sceneHandler05_handleDown() {
 }
 
 void sceneHandler05_hideHandle() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->hide();
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_HANDLE, -1)->hide();
 }
 
 void sceneHandler05_handleUp() {
-	StaticANIObject *hatch = g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1);
+	StaticANIObject *hatch = g_nmi->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1);
 
 	hatch->changeStatics2(ST_BLK_OPEN);
 	hatch->startAnim(MV_BLK_CLOSE, 0, -1);
@@ -198,7 +198,7 @@ void sceneHandler05_handleUp() {
 void sceneHandler05_testHatch(ExCommand *inex) {
 	ExCommand *ex;
 
-	if (g_fp->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1)->_statics->_staticsId == ST_BLK_CLOSED) {
+	if (g_nmi->_currentScene->getStaticANIObject1ById(ANI_BIGLUK, -1)->_statics->_staticsId == ST_BLK_CLOSED) {
 		ex = new ExCommand(SC_5, 17, 61, 0, 0, 0, 1, 0, 0, 0);
 		ex->_param = TrubaLeft;
 		ex->_excFlags |= 2;
@@ -207,13 +207,13 @@ void sceneHandler05_testHatch(ExCommand *inex) {
 		return;
 	}
 
-	StaticANIObject *wacko = g_fp->_currentScene->getStaticANIObject1ById(ANI_OTMOROZ, -1);
+	StaticANIObject *wacko = g_nmi->_currentScene->getStaticANIObject1ById(ANI_OTMOROZ, -1);
 
 	if (wacko->_movement)
 		wacko->changeStatics2(wacko->_movement->_staticsObj2->_staticsId);
 
-	if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) {
-		MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(inex->_parId);
+	if (g_nmi->getObjectState(sO_WeirdWacko) == g_nmi->getObjectEnumState(sO_WeirdWacko, sO_InGlasses)) {
+		MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(inex->_parId);
 
 		if (mq)
 			mq->deleteExCommandByIndex(mq->getCount() - 1, 1);
@@ -223,7 +223,7 @@ void sceneHandler05_testHatch(ExCommand *inex) {
 
 			if (!mq) {
 				wacko->changeStatics2(ST_OTM_GLS_LEFT);
-				mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+				mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 			}
 
 			mq->setFlags(mq->getFlags() | 1);
@@ -241,7 +241,7 @@ void sceneHandler05_testHatch(ExCommand *inex) {
 			return;
 		}
 
-		mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+		mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 		mq->setFlags(mq->getFlags() | 1);
 
 		ex = new ExCommand(ANI_OTMOROZ, 1, MV_OTM_HANDLEUP, 0, 0, 0, 1, 0, 0, 0);
@@ -255,8 +255,8 @@ void sceneHandler05_testHatch(ExCommand *inex) {
 
 		if (!mq->chain(wacko))
 			delete mq;
-	} else if (g_fp->getObjectState(sO_WeirdWacko) == g_fp->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) {
-		MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(inex->_parId);
+	} else if (g_nmi->getObjectState(sO_WeirdWacko) == g_nmi->getObjectEnumState(sO_WeirdWacko, sO_WithDrawer)) {
+		MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(inex->_parId);
 
 		if (mq)
 			mq->deleteExCommandByIndex(mq->getCount() - 1, 1);
@@ -265,7 +265,7 @@ void sceneHandler05_testHatch(ExCommand *inex) {
 			mq = wacko->changeStatics1(ST_OTM_BOX_LEFT);
 			if (!mq) {
 				wacko->changeStatics2(ST_OTM_BOX_LEFT);
-				mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+				mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 			}
 
 			mq->setFlags(mq->getFlags() | 1);
@@ -287,7 +287,7 @@ void sceneHandler05_testHatch(ExCommand *inex) {
 			return;
 		}
 
-		mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+		mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 		mq->setFlags(mq->getFlags() | 1);
 
 		ex = new ExCommand(ANI_OTMOROZ, 1, MV_OTM_BOXHANDLEUP, 0, 0, 0, 1, 0, 0, 0);
@@ -320,11 +320,11 @@ int sceneHandler05(ExCommand *ex) {
 
 	switch (ex->_messageNum) {
 	case MSG_SC5_BGRSOUNDOFF:
-		g_fp->stopAllSoundInstances(SND_5_026);
+		g_nmi->stopAllSoundInstances(SND_5_026);
 		break;
 
 	case MSG_SC5_BGRSOUNDON:
-		g_fp->playSound(SND_5_026, 1);
+		g_nmi->playSound(SND_5_026, 1);
 		break;
 
 	case MSG_SC5_MAKEMANFLIGHT:
@@ -332,8 +332,8 @@ int sceneHandler05(ExCommand *ex) {
 		break;
 
 	case MSG_SC5_MAKEOTMFEEDBACK:
-		if (!g_fp->_aniMan->_movement || (g_fp->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP
-												&& g_fp->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) {
+		if (!g_nmi->_aniMan->_movement || (g_nmi->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP
+												&& g_nmi->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) {
 			sceneHandler05_makeWackoFeedback();
 			g_vars->scene05_wackoTicker = 0;
 		}
@@ -364,20 +364,20 @@ int sceneHandler05(ExCommand *ex) {
 	case 33:
 		{
 			int res = 0;
-			if (g_fp->_aniMan2) {
-				if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200)
-					g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300;
+			if (g_nmi->_aniMan2) {
+				if (g_nmi->_aniMan2->_ox < g_nmi->_sceneRect.left + 200)
+					g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.left - 300;
 
-				if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200)
-					g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300;
+				if (g_nmi->_aniMan2->_ox > g_nmi->_sceneRect.right - 200)
+					g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.right + 300;
 
 				res = 1;
 			}
 
 			if (g_vars->scene05_wackoTicker) {
-				if ((g_fp->_updateTicks - g_vars->scene05_wackoTicker) > 62) {
-					if (!g_fp->_aniMan->_movement || (g_fp->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP
-															&& g_fp->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) {
+				if ((g_nmi->_updateTicks - g_vars->scene05_wackoTicker) > 62) {
+					if (!g_nmi->_aniMan->_movement || (g_nmi->_aniMan->_movement->_id != MV_MANHDL_HANDLEUP
+															&& g_nmi->_aniMan->_movement->_id != MV_MANHDL_HANDLEDOWN)) {
 						if (g_vars->scene05_handleFlipper % 2)
 							sceneHandler05_makeWackoFeedback();
 
@@ -390,11 +390,11 @@ int sceneHandler05(ExCommand *ex) {
 
 			++g_vars->scene05_floatersTicker;
 
-			g_fp->_floaters->update();
+			g_nmi->_floaters->update();
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
-			g_fp->startSceneTrack();
+			g_nmi->startSceneTrack();
 
 			return res;
 		}
diff --git a/engines/ngi/fullpipe/scene06.cpp b/engines/ngi/fullpipe/scene06.cpp
index 33dd9b89eb..d7867765b2 100644
--- a/engines/ngi/fullpipe/scene06.cpp
+++ b/engines/ngi/fullpipe/scene06.cpp
@@ -38,53 +38,53 @@
 namespace NGI {
 
 void scene06_initMumsy() {
-	g_vars->scene06_mumsyJumpFw = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPFW);
-	g_vars->scene06_mumsyJumpBk = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPBK);
+	g_vars->scene06_mumsyJumpFw = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPFW);
+	g_vars->scene06_mumsyJumpBk = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene06_mumsy, ST_MOM_STANDS, QU_MOM_JUMPBK);
 	g_vars->scene06_mumsyJumpFwPercent = g_vars->scene06_mumsyJumpFw->_percent;
 	g_vars->scene06_mumsyJumpBkPercent = g_vars->scene06_mumsyJumpBk->_percent;
 }
 
 int scene06_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
 	if (g_vars->scene06_arcadeEnabled) {
 		if (g_vars->scene06_aimingBall) {
-			g_fp->_cursorId = PIC_CSR_ARCADE2_D;
+			g_nmi->_cursorId = PIC_CSR_ARCADE2_D;
 
 			return PIC_CSR_ARCADE2_D;
 		}
-		if (g_fp->_aniMan == g_fp->_objectAtCursor) {
-			if (g_fp->_aniMan->_statics->_staticsId == ST_MAN6_BALL && g_fp->_cursorId == PIC_CSR_DEFAULT) {
-				g_fp->_cursorId = PIC_CSR_ITN;
+		if (g_nmi->_aniMan == g_nmi->_objectAtCursor) {
+			if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN6_BALL && g_nmi->_cursorId == PIC_CSR_DEFAULT) {
+				g_nmi->_cursorId = PIC_CSR_ITN;
 
 				return PIC_CSR_ITN;
 			}
-		} else if (g_fp->_objectAtCursor && g_fp->_objectAtCursor == g_vars->scene06_currentBall
-					&& g_fp->_cursorId == PIC_CSR_DEFAULT) {
-			g_fp->_cursorId = PIC_CSR_ITN;
+		} else if (g_nmi->_objectAtCursor && g_nmi->_objectAtCursor == g_vars->scene06_currentBall
+					&& g_nmi->_cursorId == PIC_CSR_DEFAULT) {
+			g_nmi->_cursorId = PIC_CSR_ITN;
 		}
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler06_setExits(Scene *sc) {
 	MotionController *mc = getSc2MctlCompoundBySceneId(sc->_sceneId);
 
-	mc->enableLinks(sO_CloseThing, (g_fp->getObjectState(sO_BigMumsy) != g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone)));
+	mc->enableLinks(sO_CloseThing, (g_nmi->getObjectState(sO_BigMumsy) != g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsGone)));
 	mc->enableLinks(sO_CloseThing2, g_vars->scene06_arcadeEnabled);
 }
 
 void sceneHandler06_winArcade() {
-	g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone));
+	g_nmi->setObjectState(sO_BigMumsy, g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsGone));
 
-	if (g_fp->getObjectState(sO_ClockAxis) == g_fp->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable))
-		g_fp->setObjectState(sO_ClockAxis, g_fp->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle));
+	if (g_nmi->getObjectState(sO_ClockAxis) == g_nmi->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable))
+		g_nmi->setObjectState(sO_ClockAxis, g_nmi->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle));
 
 	if (g_vars->scene06_arcadeEnabled) {
-		g_fp->_aniMan->_callback2 = 0; // Really NULL
+		g_nmi->_aniMan->_callback2 = 0; // Really NULL
 
-		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+		g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 
 		if (g_vars->scene06_someBall) {
 			g_vars->scene06_someBall->_flags &= 0xFFFB;
@@ -116,7 +116,7 @@ void sceneHandler06_winArcade() {
 
 	g_vars->scene06_mumsy->_flags &= 0xFFFB;
 
-	sceneHandler06_setExits(g_fp->_currentScene);
+	sceneHandler06_setExits(g_nmi->_currentScene);
 
 	getCurrSceneSc2MotionController()->activate();
 	getGameLoaderInteractionController()->enableFlag24();
@@ -126,7 +126,7 @@ void sceneHandler06_enableDrops() {
 	chainQueue(QU_SC6_DROPS, 0);
 
 	g_vars->scene06_mumsy->changeStatics2(ST_MOM_SITS);
-	g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsPlaying));
+	g_nmi->setObjectState(sO_BigMumsy, g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsPlaying));
 
 	chainQueue(QU_MOM_STANDUP, 1);
 
@@ -136,7 +136,7 @@ void sceneHandler06_enableDrops() {
 	g_vars->scene06_mumsyNumBalls = 0;
 	g_vars->scene06_mumsyGotBall = false;
 
-	sceneHandler06_setExits(g_fp->_currentScene);
+	sceneHandler06_setExits(g_nmi->_currentScene);
 }
 
 void sceneHandler06_mumsyBallTake() {
@@ -162,7 +162,7 @@ void sceneHandler06_mumsyBallTake() {
 		break;
 	}
 
-	MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+	MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
 	ExCommand *ex = new ExCommand(ANI_MAMASHA, 2, 50, 0, 0, 0, 1, 0, 0, 0);
 
@@ -170,10 +170,10 @@ void sceneHandler06_mumsyBallTake() {
 	mq->addExCommandToEnd(ex);
 
 	if (g_vars->scene06_mumsyNumBalls >= 5) {
-		g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsGone));
+		g_nmi->setObjectState(sO_BigMumsy, g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsGone));
 
-		if (g_fp->getObjectState(sO_ClockAxis) == g_fp->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable))
-			g_fp->setObjectState(sO_ClockAxis, g_fp->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle));
+		if (g_nmi->getObjectState(sO_ClockAxis) == g_nmi->getObjectEnumState(sO_ClockAxis, sO_IsNotAvailable))
+			g_nmi->setObjectState(sO_ClockAxis, g_nmi->getObjectEnumState(sO_ClockAxis, sO_WithoutHandle));
 
 		ex = new ExCommand(ANI_MAMASHA, 1, momAni, 0, 0, 0, 1, 0, 0, 0);
 		ex->_excFlags |= 2;
@@ -230,29 +230,29 @@ void sceneHandler06_mumsyBallTake() {
 	g_vars->scene06_mumsyNumBalls = 0;
 	g_vars->scene06_arcadeEnabled = false;
 
-	g_fp->_aniMan2 = 0;
+	g_nmi->_aniMan2 = 0;
 }
 
 void sceneHandler06_spinHandle() {
-	int tummy = g_fp->getObjectState(sO_TummyTrampie);
-
-	if (tummy == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsEating))
-		g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping));
-	else if (tummy == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping))
-		g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking));
-	else if (tummy == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking))
-		g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly));
-	else if (tummy == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly))
-		g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsEating));
+	int tummy = g_nmi->getObjectState(sO_TummyTrampie);
+
+	if (tummy == g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsEating))
+		g_nmi->setObjectState(sO_TummyTrampie, g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping));
+	else if (tummy == g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping))
+		g_nmi->setObjectState(sO_TummyTrampie, g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking));
+	else if (tummy == g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking))
+		g_nmi->setObjectState(sO_TummyTrampie, g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly));
+	else if (tummy == g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly))
+		g_nmi->setObjectState(sO_TummyTrampie, g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsEating));
 }
 
 void sceneHandler06_uPipeClick() {
 	if (getGameLoaderInteractionController()->_flag24)
-		handleObjectInteraction(g_fp->_aniMan2, g_fp->_currentScene->getPictureObjectById(PIC_SC6_LADDER, 0), 0);
+		handleObjectInteraction(g_nmi->_aniMan2, g_nmi->_currentScene->getPictureObjectById(PIC_SC6_LADDER, 0), 0);
 }
 
 void sceneHandler06_buttonPush() {
-	g_vars->scene06_invHandle = g_fp->_currentScene->getStaticANIObject1ById(ANI_INV_HANDLE, -1);
+	g_vars->scene06_invHandle = g_nmi->_currentScene->getStaticANIObject1ById(ANI_INV_HANDLE, -1);
 
 	if (g_vars->scene06_invHandle)
 		if (g_vars->scene06_invHandle->_flags & 4)
@@ -265,7 +265,7 @@ void sceneHandler06_showNextBall() {
 	if (g_vars->scene06_balls.size()) {
 		g_vars->scene06_currentBall = g_vars->scene06_balls.remove_at(0);
 
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC6_SHOWNEXTBALL), 0, 1);
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC6_SHOWNEXTBALL), 0, 1);
 
 		mq->setParamInt(-1, g_vars->scene06_currentBall->_odelay);
 		mq->chain(0);
@@ -281,10 +281,10 @@ void sceneHandler06_installHandle() {
 int sceneHandler06_updateScreenCallback() {
 	int res;
 
-	res = g_fp->drawArcadeOverlay(g_vars->scene06_arcadeEnabled);
+	res = g_nmi->drawArcadeOverlay(g_vars->scene06_arcadeEnabled);
 
 	if (!res)
-		g_fp->_updateScreenCallback = 0;
+		g_nmi->_updateScreenCallback = 0;
 
 	return res;
 }
@@ -293,13 +293,13 @@ void sceneHandler06_startAiming() {
 	if (g_vars->scene06_currentBall) {
 		g_vars->scene06_currentBall->hide();
 
-		g_fp->_aniMan->startAnim(MV_MAN6_TAKEBALL, 0, -1);
+		g_nmi->_aniMan->startAnim(MV_MAN6_TAKEBALL, 0, -1);
 
 		g_vars->scene06_ballInHands = g_vars->scene06_currentBall;
 		g_vars->scene06_currentBall = 0;
 
 		if (getCurrSceneSc2MotionController()->_isEnabled)
-			g_fp->_updateScreenCallback = sceneHandler06_updateScreenCallback;
+			g_nmi->_updateScreenCallback = sceneHandler06_updateScreenCallback;
 
 		getCurrSceneSc2MotionController()->deactivate();
 		getGameLoaderInteractionController()->disableFlag24();
@@ -310,18 +310,18 @@ void sceneHandler06_startAiming() {
 
 void sceneHandler06_takeBall() {
 	if (g_vars->scene06_currentBall && !g_vars->scene06_currentBall->_movement && g_vars->scene06_currentBall->_statics->_staticsId == ST_NBL_NORM) {
-		if (abs(1158 - g_fp->_aniMan->_ox) > 1
-			|| abs(452 - g_fp->_aniMan->_oy) > 1
-			|| g_fp->_aniMan->_movement
-			|| g_fp->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) {
-			MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 1158, 452, 1, (0x4000 | ST_MAN_RIGHT));
+		if (abs(1158 - g_nmi->_aniMan->_ox) > 1
+			|| abs(452 - g_nmi->_aniMan->_oy) > 1
+			|| g_nmi->_aniMan->_movement
+			|| g_nmi->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) {
+			MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 1158, 452, 1, (0x4000 | ST_MAN_RIGHT));
 
 			if (mq) {
 				ExCommand *ex = new ExCommand(0, 17, MSG_SC6_TAKEBALL, 0, 0, 0, 1, 0, 0, 0);
 				ex->_excFlags |= 3;
 				mq->addExCommandToEnd(ex);
 
-				postExCommand(g_fp->_aniMan->_id, 2, 1158, 452, 0, -1);
+				postExCommand(g_nmi->_aniMan->_id, 2, 1158, 452, 0, -1);
 			}
 		} else {
 			sceneHandler06_startAiming();
@@ -331,18 +331,18 @@ void sceneHandler06_takeBall() {
 
 void sceneHandler06_aiming() {
 	if (g_vars->scene06_ballInHands) {
-		g_vars->scene06_ballDeltaX = 4 * g_fp->_aniMan->_movement->_currDynamicPhaseIndex + 16;
-		g_vars->scene06_ballDeltaY = 5 * (g_fp->_aniMan->_movement->_currDynamicPhaseIndex + 4);
+		g_vars->scene06_ballDeltaX = 4 * g_nmi->_aniMan->_movement->_currDynamicPhaseIndex + 16;
+		g_vars->scene06_ballDeltaY = 5 * (g_nmi->_aniMan->_movement->_currDynamicPhaseIndex + 4);
 
-		if (g_fp->_aniMan->_movement->_currDynamicPhaseIndex < 4) {
-			g_fp->_aniMan->_movement->setDynamicPhaseIndex(11);
+		if (g_nmi->_aniMan->_movement->_currDynamicPhaseIndex < 4) {
+			g_nmi->_aniMan->_movement->setDynamicPhaseIndex(11);
 
 			g_vars->scene06_aimingBall = false;
 
 			return;
 		}
 
-		g_fp->_aniMan->_movement->setDynamicPhaseIndex(9);
+		g_nmi->_aniMan->_movement->setDynamicPhaseIndex(9);
 	}
 
 	g_vars->scene06_aimingBall = false;
@@ -352,7 +352,7 @@ void sceneHandler06_ballStartFly() {
 	if (g_vars->scene06_ballInHands) {
 		g_vars->scene06_flyingBall = g_vars->scene06_ballInHands;
 		g_vars->scene06_ballInHands = 0;
-		g_vars->scene06_flyingBall->show1(g_fp->_aniMan->_ox - 60, g_fp->_aniMan->_oy - 60, -1, 0);
+		g_vars->scene06_flyingBall->show1(g_nmi->_aniMan->_ox - 60, g_nmi->_aniMan->_oy - 60, -1, 0);
 
 		g_vars->scene06_flyingBall->_priority = 27;
 	}
@@ -360,10 +360,10 @@ void sceneHandler06_ballStartFly() {
 
 void sceneHandler06_throwCallback(int *arg) {
 	if (g_vars->scene06_aimingBall) {
-		int dist = (g_fp->_mouseVirtY - g_vars->scene06_sceneClickY)
-			* (g_fp->_mouseVirtY - g_vars->scene06_sceneClickY)
-			+ (g_fp->_mouseVirtX - g_vars->scene06_sceneClickX)
-			* (g_fp->_mouseVirtX - g_vars->scene06_sceneClickX);
+		int dist = (g_nmi->_mouseVirtY - g_vars->scene06_sceneClickY)
+			* (g_nmi->_mouseVirtY - g_vars->scene06_sceneClickY)
+			+ (g_nmi->_mouseVirtX - g_vars->scene06_sceneClickX)
+			* (g_nmi->_mouseVirtX - g_vars->scene06_sceneClickX);
 
 		*arg = (int)(sqrt((double)dist) * 0.1);
 
@@ -377,15 +377,15 @@ void sceneHandler06_throwCallback(int *arg) {
 }
 
 void sceneHandler06_throwBall() {
-	g_fp->_aniMan->_callback2 = sceneHandler06_throwCallback;
-	g_fp->_aniMan->startAnim(MV_MAN6_THROWBALL, 0, -1);
+	g_nmi->_aniMan->_callback2 = sceneHandler06_throwCallback;
+	g_nmi->_aniMan->startAnim(MV_MAN6_THROWBALL, 0, -1);
 
 	g_vars->scene06_aimingBall = true;
 }
 
 void sceneHandler06_eggieWalk() {
-	if (15 - g_vars->scene06_numBallsGiven >= 4 && !g_fp->_rnd.getRandomNumber(9)) {
-		StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_EGGIE, -1);
+	if (15 - g_vars->scene06_numBallsGiven >= 4 && !g_nmi->_rnd.getRandomNumber(9)) {
+		StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_EGGIE, -1);
 
 		if (!ani || !(ani->_flags & 4)) {
 			if (g_vars->scene06_eggieDirection)
@@ -411,7 +411,7 @@ void sceneHandler06_fallBall() {
 
 	g_vars->scene06_flyingBall->setOXY(g_vars->scene06_ballX, g_vars->scene06_ballY);
 
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC6_FALLBALL), 0, 1);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC6_FALLBALL), 0, 1);
 
 	mq->setParamInt(-1, g_vars->scene06_flyingBall->_odelay);
 	mq->chain(0);
@@ -521,19 +521,19 @@ void scene06_initScene(Scene *sc) {
 		g_vars->scene06_balls.push_back(ball2);
 	}
 
-	if (g_fp->getObjectState(sO_BigMumsy) == g_fp->getObjectEnumState(sO_BigMumsy, sO_IsPlaying))
-		g_fp->setObjectState(sO_BigMumsy, g_fp->getObjectEnumState(sO_BigMumsy, sO_IsSleeping));
+	if (g_nmi->getObjectState(sO_BigMumsy) == g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsPlaying))
+		g_nmi->setObjectState(sO_BigMumsy, g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsSleeping));
 
-	if (g_fp->getObjectState(sO_BigMumsy) != g_fp->getObjectEnumState(sO_BigMumsy, sO_IsSleeping))
+	if (g_nmi->getObjectState(sO_BigMumsy) != g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsSleeping))
 		g_vars->scene06_mumsy->hide();
 
-	g_fp->lift_setButton(sO_Level3, ST_LBN_3N);
-	g_fp->lift_init(sc, QU_SC6_ENTERLIFT, QU_SC6_EXITLIFT);
-	g_fp->initArcadeKeys("SC_6");
+	g_nmi->lift_setButton(sO_Level3, ST_LBN_3N);
+	g_nmi->lift_init(sc, QU_SC6_ENTERLIFT, QU_SC6_EXITLIFT);
+	g_nmi->initArcadeKeys("SC_6");
 
 	sceneHandler06_setExits(sc);
 
-	g_fp->setArcadeOverlay(PIC_CSR_ARCADE2);
+	g_nmi->setArcadeOverlay(PIC_CSR_ARCADE2);
 }
 
 int sceneHandler06(ExCommand *ex) {
@@ -542,11 +542,11 @@ int sceneHandler06(ExCommand *ex) {
 
 	switch(ex->_messageNum) {
 	case MSG_LIFT_CLOSEDOOR:
-		g_fp->lift_closedoorSeq();
+		g_nmi->lift_closedoorSeq();
 		break;
 
 	case MSG_LIFT_EXITLIFT:
-		g_fp->lift_exitSeq(ex);
+		g_nmi->lift_exitSeq(ex);
 		break;
 
 	case MSG_CMN_WINARCADE:
@@ -554,18 +554,18 @@ int sceneHandler06(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_STARTEXITQUEUE:
-		g_fp->lift_startExitQueue();
+		g_nmi->lift_startExitQueue();
 		break;
 
 	case MSG_SC6_RESTORESCROLL:
-		g_fp->_aniMan2 = g_fp->_aniMan;
+		g_nmi->_aniMan2 = g_nmi->_aniMan;
 		getCurrSceneSc2MotionController()->activate();
 		getGameLoaderInteractionController()->enableFlag24();
-		sceneHandler06_setExits(g_fp->_currentScene);
+		sceneHandler06_setExits(g_nmi->_currentScene);
 		break;
 
 	case MSG_SC6_STARTDROPS:
-		if (g_fp->getObjectState(sO_BigMumsy) == g_fp->getObjectEnumState(sO_BigMumsy, sO_IsSleeping))
+		if (g_nmi->getObjectState(sO_BigMumsy) == g_nmi->getObjectEnumState(sO_BigMumsy, sO_IsSleeping))
 			sceneHandler06_enableDrops();
 		break;
 
@@ -587,7 +587,7 @@ int sceneHandler06(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_clickButton();
+		g_nmi->lift_clickButton();
 		break;
 
 	case MSG_SPINHANDLE:
@@ -595,7 +595,7 @@ int sceneHandler06(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_GO:
-		g_fp->lift_goAnimation();
+		g_nmi->lift_goAnimation();
 		break;
 
 	case MSG_SC6_UTRUBACLICK:
@@ -619,7 +619,7 @@ int sceneHandler06(ExCommand *ex) {
 		break;
 
 	case 64:
-		g_fp->lift_hoverButton(ex);
+		g_nmi->lift_hoverButton(ex);
 		break;
 
 	case MSG_SC6_TAKEBALL:
@@ -640,11 +640,11 @@ int sceneHandler06(ExCommand *ex) {
 
 	case 29:
 		{
-			StaticANIObject *st = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
+			StaticANIObject *st = g_nmi->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
 
 			if (st) {
 				if (!g_vars->scene06_arcadeEnabled && st->_id == ANI_LIFTBUTTON) {
-					g_fp->lift_animateButton(st);
+					g_nmi->lift_animateButton(st);
 					ex->_messageKind = 0;
 					return 0;
 				}
@@ -654,7 +654,7 @@ int sceneHandler06(ExCommand *ex) {
 						sceneHandler06_takeBall();
 
 					ex->_messageKind = 0;
-				} else if (g_vars->scene06_ballInHands && g_fp->_aniMan == st && !g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN6_BALL) {
+				} else if (g_vars->scene06_ballInHands && g_nmi->_aniMan == st && !g_nmi->_aniMan->_movement && g_nmi->_aniMan->_statics->_staticsId == ST_MAN6_BALL) {
 					g_vars->scene06_sceneClickX = ex->_sceneClickX;
 					g_vars->scene06_sceneClickY = ex->_sceneClickY;
 
@@ -662,15 +662,15 @@ int sceneHandler06(ExCommand *ex) {
 				}
 			}
 
-			if (!st || !canInteractAny(g_fp->_aniMan, st, ex->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY);
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+			if (!st || !canInteractAny(g_nmi->_aniMan, st, ex->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, ex->_param)) {
-					if ((g_fp->_sceneRect.right - ex->_sceneClickX < 47
-						 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-						|| (ex->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
-						g_fp->processArcade(ex);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, ex->_param)) {
+					if ((g_nmi->_sceneRect.right - ex->_sceneClickX < 47
+						 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+						|| (ex->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0)) {
+						g_nmi->processArcade(ex);
 						return 0;
 					}
 				}
@@ -682,34 +682,34 @@ int sceneHandler06(ExCommand *ex) {
 		{
 			int res = 0;
 
-			if (g_fp->_aniMan2) {
-				int ox = g_fp->_aniMan2->_ox;
-				int oy = g_fp->_aniMan2->_oy;
+			if (g_nmi->_aniMan2) {
+				int ox = g_nmi->_aniMan2->_ox;
+				int oy = g_nmi->_aniMan2->_oy;
 
 				g_vars->scene06_manX = ox;
 				g_vars->scene06_manY = oy;
 
 				if (g_vars->scene06_arcadeEnabled && oy <= 470 && ox >= 1088) {
-					if (ox < g_fp->_sceneRect.left + 600) {
-						g_fp->_currentScene->_x = ox - g_fp->_sceneRect.left - 700;
+					if (ox < g_nmi->_sceneRect.left + 600) {
+						g_nmi->_currentScene->_x = ox - g_nmi->_sceneRect.left - 700;
 						ox = g_vars->scene06_manX;
 					}
 
-					if (ox > g_fp->_sceneRect.right - 50)
-						g_fp->_currentScene->_x = ox - g_fp->_sceneRect.right + 70;
+					if (ox > g_nmi->_sceneRect.right - 50)
+						g_nmi->_currentScene->_x = ox - g_nmi->_sceneRect.right + 70;
 				} else {
-					if (ox < g_fp->_sceneRect.left + 200) {
-						g_fp->_currentScene->_x = ox - g_fp->_sceneRect.left - 300;
+					if (ox < g_nmi->_sceneRect.left + 200) {
+						g_nmi->_currentScene->_x = ox - g_nmi->_sceneRect.left - 300;
 						ox = g_vars->scene06_manX;
 					}
 
-					if (ox > g_fp->_sceneRect.right - 200)
-						g_fp->_currentScene->_x = ox - g_fp->_sceneRect.right + 300;
+					if (ox > g_nmi->_sceneRect.right - 200)
+						g_nmi->_currentScene->_x = ox - g_nmi->_sceneRect.right + 300;
 				}
 
 				res = 1;
 
-				g_fp->sceneAutoScrolling();
+				g_nmi->sceneAutoScrolling();
 			}
 			if (g_vars->scene06_arcadeEnabled) {
 				if (g_vars->scene06_mumsyPos > -3)
@@ -755,8 +755,8 @@ int sceneHandler06(ExCommand *ex) {
 				&& !g_vars->scene06_mumsy->_movement
 				&& !g_vars->scene06_mumsyGotBall)
 				sceneHandler06_mumsyBallTake();
-			g_fp->_behaviorManager->updateBehaviors();
-			g_fp->startSceneTrack();
+			g_nmi->_behaviorManager->updateBehaviors();
+			g_nmi->startSceneTrack();
 
 			return res;
 		}
diff --git a/engines/ngi/fullpipe/scene07.cpp b/engines/ngi/fullpipe/scene07.cpp
index f1dce3eab8..10a8675af6 100644
--- a/engines/ngi/fullpipe/scene07.cpp
+++ b/engines/ngi/fullpipe/scene07.cpp
@@ -39,24 +39,24 @@ void scene07_initScene(Scene *sc) {
 	g_vars->scene07_lukePercent = 0;
 	g_vars->scene07_plusMinus = sc->getStaticANIObject1ById(ANI_PLUSMINUS, -1);
 
-	if (g_fp->getObjectState(sO_Guard_1) == g_fp->getObjectEnumState(sO_Guard_1, sO_Off))
+	if (g_nmi->getObjectState(sO_Guard_1) == g_nmi->getObjectEnumState(sO_Guard_1, sO_Off))
 		g_vars->scene07_plusMinus->_statics = g_vars->scene07_plusMinus->getStaticsById(ST_PMS_MINUS);
 	else
 		g_vars->scene07_plusMinus->_statics = g_vars->scene07_plusMinus->getStaticsById(ST_PMS_PLUS);
 
-	if (g_fp->getObjectState(sO_HareTheNooksiter) == g_fp->getObjectEnumState(sO_HareTheNooksiter, sO_WithoutHandle)) {
-		Scene *oldsc = g_fp->_currentScene;
+	if (g_nmi->getObjectState(sO_HareTheNooksiter) == g_nmi->getObjectEnumState(sO_HareTheNooksiter, sO_WithoutHandle)) {
+		Scene *oldsc = g_nmi->_currentScene;
 
-		g_fp->_currentScene = sc;
+		g_nmi->_currentScene = sc;
 
 		sc->getStaticANIObject1ById(ANI_CORNERSITTER, -1)->changeStatics2(ST_CST_HANDLELESS);
 
-		g_fp->_currentScene = oldsc;
+		g_nmi->_currentScene = oldsc;
 	}
 }
 
 void sceneHandler07_openLuke() {
-	StaticANIObject *luke = g_fp->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1);
+	StaticANIObject *luke = g_nmi->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1);
 
 	luke->changeStatics2(ST_LUK_OPEN);
 	luke->show1(-1, -1, -1, 0);
@@ -64,40 +64,40 @@ void sceneHandler07_openLuke() {
 	if (g_vars->scene07_lukeAnim) {
 		g_vars->scene07_lukeAnim->_percent = g_vars->scene07_lukePercent;
 	} else {
-		StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1);
+		StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1);
 
-		g_vars->scene07_lukeAnim = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE);
+		g_vars->scene07_lukeAnim = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE);
 
 		g_vars->scene07_lukeAnim->_percent = g_vars->scene07_lukePercent;
 	}
 }
 
 void sceneHandler07_closeLuke() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->changeStatics2(ST_LUK_CLOSED);
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->changeStatics2(ST_LUK_CLOSED);
 
 	if (!g_vars->scene07_lukeAnim) {
-		StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1);
+		StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1);
 
-		g_vars->scene07_lukeAnim = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE);
+		g_vars->scene07_lukeAnim = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(ani, ST_CST_HANDLELESS, QU_CST_CLOSELUKE);
 	}
 
 	g_vars->scene07_lukePercent = g_vars->scene07_lukeAnim->_percent;
 	g_vars->scene07_lukeAnim->_percent = 0;
 
-	StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1);
+	StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1);
 
 	ani->changeStatics2(ST_HGN_LUKE);
 	ani->show1(-1, -1, -1, 0);
 }
 
 void sceneHandler07_hideLuke() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->hide();
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_LUKE, -1)->hide();
 
-	Movement *mov = g_fp->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1)->_movement;
+	Movement *mov = g_nmi->_currentScene->getStaticANIObject1ById(ANI_CORNERSITTER, -1)->_movement;
 
 	if (mov) {
 		if (mov->_id == MV_CST_CLOSELUKE) {
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_HOOLIGAN, -1);
 
 			ani->changeStatics2(ST_HGN_LOOK);
 			ani->_flags &= 0xFFFB;
@@ -106,14 +106,14 @@ void sceneHandler07_hideLuke() {
 }
 
 void sceneHandler07_showBox() {
-	StaticANIObject *box = g_fp->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1);
+	StaticANIObject *box = g_nmi->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1);
 
 	box->show1(492, 474, MV_SC7_BOX_default, 0);
 	box->_priority = 25;
 }
 
 void sceneHandler07_hideBox() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1)->hide();
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_SC7_BOX, -1)->hide();
 }
 
 int sceneHandler07(ExCommand *ex) {
@@ -153,17 +153,17 @@ int sceneHandler07(ExCommand *ex) {
 		{
 			int res = 0;
 
-			if (g_fp->_aniMan2) {
-				if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200)
-					g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300;
+			if (g_nmi->_aniMan2) {
+				if (g_nmi->_aniMan2->_ox < g_nmi->_sceneRect.left + 200)
+					g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.left - 300;
 
-				if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200)
-					g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300;
+				if (g_nmi->_aniMan2->_ox > g_nmi->_sceneRect.right - 200)
+					g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.right + 300;
 
 				res = 1;
 			}
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
 			return res;
 		}
diff --git a/engines/ngi/fullpipe/scene08.cpp b/engines/ngi/fullpipe/scene08.cpp
index ac4085d4fb..d018be2cdd 100644
--- a/engines/ngi/fullpipe/scene08.cpp
+++ b/engines/ngi/fullpipe/scene08.cpp
@@ -52,28 +52,28 @@ void scene08_initScene(Scene *sc) {
 	g_vars->scene08_stairsOffset = -37;
 	g_vars->scene08_snoringCountdown = -1;
 
-	Scene *oldsc = g_fp->_currentScene;
-	g_fp->_currentScene = sc;
+	Scene *oldsc = g_nmi->_currentScene;
+	g_nmi->_currentScene = sc;
 
-	int batuta = g_fp->getObjectState(sO_TummyTrampie);
+	int batuta = g_nmi->getObjectState(sO_TummyTrampie);
 	MovGraphLink *lock = getSc2MctlCompoundBySceneId(sc->_sceneId)->getLinkByName(sO_CloseThing);
 
 	if (lock)
 		lock->_flags &= 0xDFFFFFFF;
 
-	if (batuta == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) {
+	if (batuta == g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsEating)) {
 		g_vars->scene08_batuta->changeStatics2(ST_BTT_SPOON);
-	} else if (batuta == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) {
+	} else if (batuta == g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsDrinking)) {
 		g_vars->scene08_batuta->changeStatics2(ST_BTT_NOSPOON);
 
 		g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1);
 		g_vars->scene08_clock->_movement->setDynamicPhaseIndex(3);
-	} else if (batuta== g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)) {
+	} else if (batuta== g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsScratchingBelly)) {
 		g_vars->scene08_batuta->changeStatics2(ST_BTT_CHESHET);
 
 		g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1);
 		g_vars->scene08_clock->_movement->setDynamicPhaseIndex(8);
-	} else if (batuta == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) {
+	} else if (batuta == g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping)) {
 		g_vars->scene08_batuta->changeStatics2(ST_BTT_SLEEPS);
 
 		g_vars->scene08_clock->startAnim(MV_CLK8_GO, 0, -1);
@@ -87,7 +87,7 @@ void scene08_initScene(Scene *sc) {
 
 	g_vars->scene08_clock->_callback2 = scene08_clockCallback;
 
-	if (g_fp->getObjectState(sO_StairsUp_8) == g_fp->getObjectEnumState(sO_StairsUp_8, sO_Broken)) {
+	if (g_nmi->getObjectState(sO_StairsUp_8) == g_nmi->getObjectEnumState(sO_StairsUp_8, sO_Broken)) {
 		g_vars->scene08_stairsVisible = false;
 
 		sc->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB;
@@ -99,52 +99,52 @@ void scene08_initScene(Scene *sc) {
 
 	sc->getPictureObjectById(PIC_SC8_ARCADENOW, 0)->_flags &= 0xFFFB;
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
-	g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_8"));
-	g_fp->_floaters->genFlies(sc, 100, 100, 0, 0);
+	g_nmi->_floaters->init(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_8"));
+	g_nmi->_floaters->genFlies(sc, 100, 100, 0, 0);
 
-	g_fp->setArcadeOverlay(PIC_CSR_ARCADE3);
+	g_nmi->setArcadeOverlay(PIC_CSR_ARCADE3);
 }
 
 void scene08_setupMusic() {
-	if (g_fp->getObjectState(sO_TummyTrampie) == g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping))
-		g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_8"), "MUSIC_ARCADE", 1);
+	if (g_nmi->getObjectState(sO_TummyTrampie) == g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping))
+		g_nmi->playTrack(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_8"), "MUSIC_ARCADE", 1);
 }
 
 int scene08_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
 	if (g_vars->scene08_inArcade) {
 		if (g_vars->scene08_onBelly) {
-			if (g_fp->_objectIdAtCursor == PIC_SC8_LADDERD && g_fp->_cursorId == PIC_CSR_ITN)
-				g_fp->_cursorId = PIC_CSR_GOU;
+			if (g_nmi->_objectIdAtCursor == PIC_SC8_LADDERD && g_nmi->_cursorId == PIC_CSR_ITN)
+				g_nmi->_cursorId = PIC_CSR_GOU;
 		} else {
-			g_fp->_cursorId = -1;
+			g_nmi->_cursorId = -1;
 		}
 	} else {
-		if (g_fp->_objectIdAtCursor == PIC_SC8_LADDERD && g_fp->_cursorId == PIC_CSR_ITN) {
-			if (g_fp->_aniMan2->_oy >= 520) {
-				if (g_fp->_aniMan2->_oy <= 750)
-					g_fp->_cursorId = PIC_CSR_GOU;
+		if (g_nmi->_objectIdAtCursor == PIC_SC8_LADDERD && g_nmi->_cursorId == PIC_CSR_ITN) {
+			if (g_nmi->_aniMan2->_oy >= 520) {
+				if (g_nmi->_aniMan2->_oy <= 750)
+					g_nmi->_cursorId = PIC_CSR_GOU;
 			} else {
-				g_fp->_cursorId = PIC_CSR_GOD;
+				g_nmi->_cursorId = PIC_CSR_GOD;
 			}
 		}
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler08_enterUp() {
-	g_fp->_currentScene->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB;
+	g_nmi->_currentScene->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB;
 
-	g_fp->_aniMan->changeStatics2(ST_MAN8_HANDSUP);
-	g_fp->_aniMan->setOXY(386, 236);
-	g_fp->_aniMan->_priority = 10;
-	g_fp->_aniMan->_flags = 4;
+	g_nmi->_aniMan->changeStatics2(ST_MAN8_HANDSUP);
+	g_nmi->_aniMan->setOXY(386, 236);
+	g_nmi->_aniMan->_priority = 10;
+	g_nmi->_aniMan->_flags = 4;
 
-	chainObjQueue(g_fp->_aniMan, QU_SC8_FINISH, 1);
+	chainObjQueue(g_nmi->_aniMan, QU_SC8_FINISH, 1);
 
 	g_vars->scene08_inAir = false;
 }
@@ -152,21 +152,21 @@ void sceneHandler08_enterUp() {
 void sceneHandler08_winArcade() {
 	if (g_vars->scene08_inArcade) {
 		g_vars->scene08_inArcade = false;
-		g_fp->_sceneRect.top = 0;
-		g_fp->_sceneRect.bottom = 600;
+		g_nmi->_sceneRect.top = 0;
+		g_nmi->_sceneRect.bottom = 600;
 
 		sceneHandler08_enterUp();
 	}
 }
 
 void sceneHandler08_hideLadder() {
-	g_fp->_currentScene->getPictureObjectById(PIC_SC8_LADDER_D, 0)->_flags &= 0xFFFB;
+	g_nmi->_currentScene->getPictureObjectById(PIC_SC8_LADDER_D, 0)->_flags &= 0xFFFB;
 }
 
 void sceneHandler08_arcadeNow() {
 	MovGraphLink *lnk = getCurrSceneSc2MotionController()->getLinkByName(sO_Stairway);
 
-	g_fp->setObjectState(sO_TummyTrampie, g_fp->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping));
+	g_nmi->setObjectState(sO_TummyTrampie, g_nmi->getObjectEnumState(sO_TummyTrampie, sO_IsSleeping));
 
 	g_vars->scene08_batuta->changeStatics2(ST_BTT_SLEEPS);
 
@@ -193,9 +193,9 @@ int sceneHandler08_calcOffset(int off, int flag) {
 }
 
 void sceneHandler08_pushCallback(int *par) {
-	int y = g_fp->_aniMan->_oy + g_fp->_aniMan->getSomeXY().y;
+	int y = g_nmi->_aniMan->_oy + g_nmi->_aniMan->getSomeXY().y;
 
-	if (g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN)
+	if (g_nmi->_aniMan->_statics && g_nmi->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN)
 		y -= 25;
 
 	*par = (y - 703) / 10;
@@ -212,10 +212,10 @@ void sceneHandler08_pushCallback(int *par) {
 int sceneHandler08_updateScreenCallback() {
 	int res;
 
-	res = g_fp->drawArcadeOverlay(g_vars->scene08_inArcade);
+	res = g_nmi->drawArcadeOverlay(g_vars->scene08_inArcade);
 
 	if (!res)
-		g_fp->_updateScreenCallback = 0;
+		g_nmi->_updateScreenCallback = 0;
 
 	return res;
 }
@@ -236,40 +236,40 @@ void sceneHandler08_startArcade() {
 	g_vars->scene08_vmyats->_priority = 29;
 	g_vars->scene08_vmyats->_callback2 = sceneHandler08_pushCallback;
 
-	g_fp->_aniMan = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN, -1);
+	g_nmi->_aniMan = g_nmi->_currentScene->getStaticANIObject1ById(ANI_MAN, -1);
 
 	g_vars->scene08_manOffsetY = 15;
 
-	g_fp->_currentScene->_y = 0;
+	g_nmi->_currentScene->_y = 0;
 
-	g_fp->_updateScreenCallback = sceneHandler08_updateScreenCallback;
+	g_nmi->_updateScreenCallback = sceneHandler08_updateScreenCallback;
 }
 
 void sceneHandler08_airMoves() {
-	if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) {
-		int x = g_fp->_aniMan->_ox;
-		int y = g_fp->_aniMan->_oy;
+	if (g_nmi->_aniMan->isIdle() && !(g_nmi->_aniMan->_flags & 0x100)) {
+		int x = g_nmi->_aniMan->_ox;
+		int y = g_nmi->_aniMan->_oy;
 		Common::Point point;
 
-		if (703 - g_fp->_aniMan->getSomeXY().y - y < 150) {
-			if (g_fp->_aniMan->_statics) {
-				if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) {
+		if (703 - g_nmi->_aniMan->getSomeXY().y - y < 150) {
+			if (g_nmi->_aniMan->_statics) {
+				if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) {
 					y -= 25;
 
-					g_fp->_aniMan->setOXY(x, y);
+					g_nmi->_aniMan->setOXY(x, y);
 				}
 			}
 
-			g_fp->_aniMan->changeStatics2(ST_MAN8_STAND);
-			g_fp->_aniMan->setOXY(380, y);
-			g_fp->_aniMan->startAnim(MV_MAN8_JUMP, 0, -1);
+			g_nmi->_aniMan->changeStatics2(ST_MAN8_STAND);
+			g_nmi->_aniMan->setOXY(380, y);
+			g_nmi->_aniMan->startAnim(MV_MAN8_JUMP, 0, -1);
 
-		} else if (g_fp->_aniMan->_statics) {
-			if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP) {
-				g_fp->_aniMan->startAnim(MV_MAN8_DRYGUP, 0, -1);
+		} else if (g_nmi->_aniMan->_statics) {
+			if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP) {
+				g_nmi->_aniMan->startAnim(MV_MAN8_DRYGUP, 0, -1);
 
-			} else if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) {
-				g_fp->_aniMan->startAnim(MV_MAN8_DRYGDOWN, 0, -1);
+			} else if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN) {
+				g_nmi->_aniMan->startAnim(MV_MAN8_DRYGDOWN, 0, -1);
 			}
 		}
 	}
@@ -283,14 +283,14 @@ void sceneHandler08_finishArcade() {
 }
 
 void sceneHandler08_jumpOff(ExCommand *cmd) {
-	MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+	MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
 	mq->addExCommandToEnd(cmd->createClone());
 	mq->setFlags(mq->getFlags() | 1);
 
-	g_fp->_globalMessageQueueList->addMessageQueue(mq);
+	g_nmi->_globalMessageQueueList->addMessageQueue(mq);
 
-	g_fp->_aniMan->startAnim(MV_MAN8_JUMPOFF, mq->_id, -1);
+	g_nmi->_aniMan->startAnim(MV_MAN8_JUMPOFF, mq->_id, -1);
 
 	sceneHandler08_finishArcade();
 }
@@ -301,7 +301,7 @@ void sceneHandler08_standUp() {
 }
 
 void sceneHandler08_jumpLogic(ExCommand *cmd) {
-	if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC8_LADDERD) {
+	if (g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC8_LADDERD) {
 		sceneHandler08_jumpOff(cmd);
 
 		cmd->_messageKind = 0;
@@ -311,32 +311,32 @@ void sceneHandler08_jumpLogic(ExCommand *cmd) {
 }
 
 void sceneHandler08_badLuck() {
-	g_fp->_currentScene->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB;
+	g_nmi->_currentScene->getPictureObjectById(PIC_SC8_LADDER, 0)->_flags &= 0xFFFB;
 
-	g_fp->_aniMan->changeStatics2(ST_MAN8_HANDSUP);
-	g_fp->_aniMan->setOXY(376, 280);
-	g_fp->_aniMan->_priority = 10;
+	g_nmi->_aniMan->changeStatics2(ST_MAN8_HANDSUP);
+	g_nmi->_aniMan->setOXY(376, 280);
+	g_nmi->_aniMan->_priority = 10;
 
-	MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+	MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
-	ExCommand *ex = new ExCommand(g_fp->_aniMan->_id, 1, MV_MAN8_BADLUCK, 0, 0, 0, 1, 0, 0, 0);
+	ExCommand *ex = new ExCommand(g_nmi->_aniMan->_id, 1, MV_MAN8_BADLUCK, 0, 0, 0, 1, 0, 0, 0);
 	ex->_excFlags |= 2;
-	ex->_param = g_fp->_aniMan->_odelay;
+	ex->_param = g_nmi->_aniMan->_odelay;
 	mq->addExCommandToEnd(ex);
 
 	mq->setFlags(mq->getFlags() | 1);
 	mq->chain(0);
 
-	g_fp->setObjectState(sO_StairsUp_8, g_fp->getObjectEnumState(sO_StairsUp_8, sO_NotBroken));
+	g_nmi->setObjectState(sO_StairsUp_8, g_nmi->getObjectEnumState(sO_StairsUp_8, sO_NotBroken));
 
 	g_vars->scene08_inAir = false;
 }
 
 void sceneHandler08_sitDown() {
-	g_fp->_aniMan->setOXY(380, g_fp->_aniMan->_oy);
+	g_nmi->_aniMan->setOXY(380, g_nmi->_aniMan->_oy);
 
-	g_fp->_aniMan->changeStatics2(ST_MAN8_FLYDOWN);
-	g_fp->_aniMan->startAnim(MV_MAN8_SITDOWN, 0, -1);
+	g_nmi->_aniMan->changeStatics2(ST_MAN8_FLYDOWN);
+	g_nmi->_aniMan->startAnim(MV_MAN8_SITDOWN, 0, -1);
 
 	g_vars->scene08_vmyats->changeStatics2(ST_VMT_MIN);
 	g_vars->scene08_vmyats->hide();
@@ -347,18 +347,18 @@ void sceneHandler08_sitDown() {
 
 void sceneHandler08_calcFlight() {
 	Common::Point point;
-	int y = g_vars->scene08_manOffsetY + g_fp->_aniMan->_oy;
+	int y = g_vars->scene08_manOffsetY + g_nmi->_aniMan->_oy;
 
-	g_fp->_aniMan->setOXY(g_fp->_aniMan->_ox, y);
+	g_nmi->_aniMan->setOXY(g_nmi->_aniMan->_ox, y);
 
 	g_vars->scene08_manOffsetY += 2;
 
 	if (g_vars->scene08_manOffsetY < g_vars->scene08_stairsOffset)
 		g_vars->scene08_manOffsetY = g_vars->scene08_stairsOffset;
 
-	y = y + g_fp->_aniMan->getSomeXY().y;
+	y = y + g_nmi->_aniMan->getSomeXY().y;
 
-	if (g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN)
+	if (g_nmi->_aniMan->_statics && g_nmi->_aniMan->_statics->_staticsId == ST_MAN8_FLYDOWN)
 		y -= 25;
 
 	if (y <= g_vars->scene08_vmyats->_oy) {
@@ -370,23 +370,23 @@ void sceneHandler08_calcFlight() {
 			g_vars->scene08_vmyats->startAnim(MV_VMT_DEF, 0, -1);
 	}
 
-	if (g_fp->_aniMan->_oy <= 280 && g_vars->scene08_stairsVisible
-		&& g_fp->_aniMan->_statics && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) {
+	if (g_nmi->_aniMan->_oy <= 280 && g_vars->scene08_stairsVisible
+		&& g_nmi->_aniMan->_statics && g_nmi->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP) {
 		sceneHandler08_badLuck();
-	} else if (g_fp->_aniMan->_oy > 236 || g_vars->scene08_stairsVisible
-				|| !g_fp->_aniMan->_statics || g_fp->_aniMan->_statics->_staticsId != ST_MAN8_HANDSUP) {
-		if (g_fp->_aniMan->_movement || g_fp->_aniMan->_oy < 660
+	} else if (g_nmi->_aniMan->_oy > 236 || g_vars->scene08_stairsVisible
+				|| !g_nmi->_aniMan->_statics || g_nmi->_aniMan->_statics->_staticsId != ST_MAN8_HANDSUP) {
+		if (g_nmi->_aniMan->_movement || g_nmi->_aniMan->_oy < 660
 			|| (g_vars->scene08_vmyats->_movement && g_vars->scene08_vmyats->_movement->_currDynamicPhaseIndex > 0)
 			|| abs(g_vars->scene08_manOffsetY) > 2) {
-			if (g_vars->scene08_manOffsetY >= 0 && !g_fp->_aniMan->_movement) {
-				if (g_fp->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP)
-					g_fp->_aniMan->startAnim(MV_MAN8_HANDSDOWN, 0, -1);
+			if (g_vars->scene08_manOffsetY >= 0 && !g_nmi->_aniMan->_movement) {
+				if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN8_HANDSUP)
+					g_nmi->_aniMan->startAnim(MV_MAN8_HANDSDOWN, 0, -1);
 				else
-					g_fp->_aniMan->changeStatics2(ST_MAN8_FLYDOWN);
+					g_nmi->_aniMan->changeStatics2(ST_MAN8_FLYDOWN);
 			}
 
-			if (g_fp->_aniMan->_oy < 500 && !g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP && g_vars->scene08_manOffsetY < 0)
-				g_fp->_aniMan->startAnim(MV_MAN8_HANDSUP, 0, -1);
+			if (g_nmi->_aniMan->_oy < 500 && !g_nmi->_aniMan->_movement && g_nmi->_aniMan->_statics->_staticsId == ST_MAN8_FLYUP && g_vars->scene08_manOffsetY < 0)
+				g_nmi->_aniMan->startAnim(MV_MAN8_HANDSUP, 0, -1);
 		} else {
 			sceneHandler08_sitDown();
 		}
@@ -397,22 +397,22 @@ void sceneHandler08_calcFlight() {
 
 void sceneHandler08_checkEndArcade() {
 	if (g_vars->scene08_flyingUp) {
-		int x = g_fp->_aniMan->_ox;
-		int y = g_vars->scene08_manOffsetY + g_fp->_aniMan->_oy;
+		int x = g_nmi->_aniMan->_ox;
+		int y = g_vars->scene08_manOffsetY + g_nmi->_aniMan->_oy;
 
-		if (!((g_vars->scene08_manOffsetY + g_fp->_aniMan->_oy) % 3))
+		if (!((g_vars->scene08_manOffsetY + g_nmi->_aniMan->_oy) % 3))
 			g_vars->scene08_manOffsetY--;
 
-		g_fp->_aniMan->setOXY(x, y);
+		g_nmi->_aniMan->setOXY(x, y);
 
 		if (y < 80) {
 			sceneHandler08_finishArcade();
 
-			if (g_fp->isDemo() && g_fp->getLanguage() == Common::DE_DEU) {
+			if (g_nmi->isDemo() && g_nmi->getLanguage() == Common::DE_DEU) {
 				ModalDemo *demo = new ModalDemo;
 				demo->launch();
 
-				g_fp->_modalObject = demo;
+				g_nmi->_modalObject = demo;
 
 				return;
 			}
@@ -487,52 +487,52 @@ int sceneHandler08(ExCommand *cmd) {
 		{
 			int res = 0;
 
-			if (g_fp->_aniMan2) {
+			if (g_nmi->_aniMan2) {
 				if (g_vars->scene08_inArcade) {
-					int scHeight = g_fp->_sceneRect.bottom - g_fp->_sceneRect.top;
+					int scHeight = g_nmi->_sceneRect.bottom - g_nmi->_sceneRect.top;
 
-					if (g_fp->_aniMan2->_oy < g_fp->_sceneRect.top + 200) {
-						g_fp->_sceneRect.top = g_fp->_aniMan2->_oy - 200;
+					if (g_nmi->_aniMan2->_oy < g_nmi->_sceneRect.top + 200) {
+						g_nmi->_sceneRect.top = g_nmi->_aniMan2->_oy - 200;
 
-						if (g_fp->_sceneRect.top < 0)
-							g_fp->_sceneRect.top = 0;
+						if (g_nmi->_sceneRect.top < 0)
+							g_nmi->_sceneRect.top = 0;
 
-						g_fp->_sceneRect.bottom = scHeight + g_fp->_sceneRect.top;
+						g_nmi->_sceneRect.bottom = scHeight + g_nmi->_sceneRect.top;
 					}
 
-					if (g_fp->_aniMan2->_oy > g_fp->_sceneRect.bottom - 350) {
-						g_fp->_sceneRect.bottom = g_fp->_aniMan2->_oy + 350;
-						g_fp->_sceneRect.top = g_fp->_aniMan2->_oy + 350 - scHeight;
+					if (g_nmi->_aniMan2->_oy > g_nmi->_sceneRect.bottom - 350) {
+						g_nmi->_sceneRect.bottom = g_nmi->_aniMan2->_oy + 350;
+						g_nmi->_sceneRect.top = g_nmi->_aniMan2->_oy + 350 - scHeight;
 					}
 				} else {
-					if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200)
-						g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300;
+					if (g_nmi->_aniMan2->_ox < g_nmi->_sceneRect.left + 200)
+						g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.left - 300;
 
-					if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200)
-						g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300;
+					if (g_nmi->_aniMan2->_ox > g_nmi->_sceneRect.right - 200)
+						g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.right + 300;
 
 					res = 1;
 				}
 			}
 
-			g_fp->_floaters->update();
+			g_nmi->_floaters->update();
 
 			if (g_vars->scene08_inArcade) {
 				if (g_vars->scene08_inAir)
 					sceneHandler08_calcFlight();
 			} else {
-				Movement *mov = g_fp->_aniMan->_movement;
+				Movement *mov = g_nmi->_aniMan->_movement;
 
 				if (mov) {
 					if (mov->_id == MV_MAN_TOLADDERD && mov->_currDynamicPhaseIndex == 8)
-						g_fp->_aniMan->_priority = 2;
+						g_nmi->_aniMan->_priority = 2;
 
 					if (mov && mov->_id == MV_MAN_FROMLADDERUP && mov->_currDynamicPhaseIndex == 13)
-						g_fp->_aniMan->_priority = 20;
+						g_nmi->_aniMan->_priority = 20;
 				}
 
-				g_fp->_behaviorManager->updateBehaviors();
-				g_fp->startSceneTrack();
+				g_nmi->_behaviorManager->updateBehaviors();
+				g_nmi->startSceneTrack();
 			}
 
 			if (g_vars->scene08_flyingUp)
@@ -542,7 +542,7 @@ int sceneHandler08(ExCommand *cmd) {
 				g_vars->scene08_snoringCountdown--;
 
 				if (!g_vars->scene08_snoringCountdown) {
-					g_fp->playSound(SND_8_014, 0);
+					g_nmi->playSound(SND_8_014, 0);
 
 					g_vars->scene08_snoringCountdown = 71;
 				}
diff --git a/engines/ngi/fullpipe/scene09.cpp b/engines/ngi/fullpipe/scene09.cpp
index d69c014ef3..358d97e3f5 100644
--- a/engines/ngi/fullpipe/scene09.cpp
+++ b/engines/ngi/fullpipe/scene09.cpp
@@ -45,12 +45,12 @@ struct Hanger {
 void scene09_setupGrit(Scene *sc) {
 	if (g_vars->scene09_grit->_statics->_staticsId == ST_GRT9_GRIT) {
 		if (!getGameLoaderInventory()->getCountItemsWithId(ANI_INV_COIN)) {
-			if (g_fp->getObjectState(sO_CoinSlot_1) == g_fp->getObjectEnumState(sO_CoinSlot_1, sO_Empty)
+			if (g_nmi->getObjectState(sO_CoinSlot_1) == g_nmi->getObjectEnumState(sO_CoinSlot_1, sO_Empty)
 				&& (g_vars->swallowedEgg1->_value.intValue == ANI_INV_EGGBOOT || g_vars->swallowedEgg2->_value.intValue == ANI_INV_EGGBOOT || g_vars->swallowedEgg3->_value.intValue == ANI_INV_EGGBOOT)) {
-				Scene *oldsc = g_fp->_currentScene;
-				g_fp->_currentScene = sc;
+				Scene *oldsc = g_nmi->_currentScene;
+				g_nmi->_currentScene = sc;
 				g_vars->scene09_grit->changeStatics2(ST_GRT9_NORM);
-				g_fp->_currentScene = oldsc;
+				g_nmi->_currentScene = oldsc;
 			}
 		}
 	}
@@ -121,9 +121,9 @@ void scene09_initScene(Scene *sc) {
 
 	delete newball1;
 
-	g_fp->setObjectState(sO_RightStairs_9, g_fp->getObjectEnumState(sO_RightStairs_9, sO_IsClosed));
+	g_nmi->setObjectState(sO_RightStairs_9, g_nmi->getObjectEnumState(sO_RightStairs_9, sO_IsClosed));
 
-	GameVar *eggvar = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs);
+	GameVar *eggvar = g_nmi->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName(sO_GulpedEggs);
 
 	g_vars->swallowedEgg1 = eggvar->getSubVarByName(sO_Egg1);
 	g_vars->swallowedEgg2 = eggvar->getSubVarByName(sO_Egg2);
@@ -131,38 +131,38 @@ void scene09_initScene(Scene *sc) {
 
 	scene09_setupGrit(sc);
 
-	g_fp->initArcadeKeys("SC_9");
+	g_nmi->initArcadeKeys("SC_9");
 
-	g_fp->lift_setButton(sO_Level1, ST_LBN_1N);
+	g_nmi->lift_setButton(sO_Level1, ST_LBN_1N);
 
-	g_fp->setArcadeOverlay(PIC_CSR_ARCADE4);
+	g_nmi->setArcadeOverlay(PIC_CSR_ARCADE4);
 }
 
 int sceneHandler09_updateScreenCallback() {
-	int res = g_fp->drawArcadeOverlay(g_fp->_objectIdAtCursor == ANI_VISUNCHIK || g_vars->scene09_interactingHanger >= 0);
+	int res = g_nmi->drawArcadeOverlay(g_nmi->_objectIdAtCursor == ANI_VISUNCHIK || g_vars->scene09_interactingHanger >= 0);
 
 	if (!res)
-		g_fp->_updateScreenCallback = 0;
+		g_nmi->_updateScreenCallback = 0;
 
 	return res;
 }
 
 int scene09_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
 	if (g_vars->scene09_interactingHanger < 0) {
-		if (g_fp->_objectIdAtCursor == ANI_VISUNCHIK) {
-			if (g_fp->_cursorId == PIC_CSR_ITN)
-				g_fp->_updateScreenCallback = sceneHandler09_updateScreenCallback;
+		if (g_nmi->_objectIdAtCursor == ANI_VISUNCHIK) {
+			if (g_nmi->_cursorId == PIC_CSR_ITN)
+				g_nmi->_updateScreenCallback = sceneHandler09_updateScreenCallback;
 		} else {
-			if (g_fp->_objectIdAtCursor == PIC_SC9_LADDER_R && g_fp->_cursorId == PIC_CSR_ITN)
-				g_fp->_cursorId = (g_vars->scene09_dudeY < 350) ? PIC_CSR_GOD : PIC_CSR_GOU;
+			if (g_nmi->_objectIdAtCursor == PIC_SC9_LADDER_R && g_nmi->_cursorId == PIC_CSR_ITN)
+				g_nmi->_cursorId = (g_vars->scene09_dudeY < 350) ? PIC_CSR_GOD : PIC_CSR_GOU;
 		}
 	} else {
-		g_fp->_cursorId = PIC_CSR_ITN;
+		g_nmi->_cursorId = PIC_CSR_ITN;
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler09_winArcade() {
@@ -170,17 +170,17 @@ void sceneHandler09_winArcade() {
 		g_vars->scene09_gulper->changeStatics2(ST_GLT_SIT);
 		g_vars->scene09_gulper->startAnim(MV_GLT_FLYAWAY, 0, -1);
 
-		g_fp->setObjectState(sO_Jug, g_fp->getObjectEnumState(sO_Jug, sO_Unblocked));
-		g_fp->setObjectState(sO_RightStairs_9, g_fp->getObjectEnumState(sO_RightStairs_9, sO_IsOpened));
+		g_nmi->setObjectState(sO_Jug, g_nmi->getObjectEnumState(sO_Jug, sO_Unblocked));
+		g_nmi->setObjectState(sO_RightStairs_9, g_nmi->getObjectEnumState(sO_RightStairs_9, sO_IsOpened));
 
 		g_vars->scene09_gulperIsPresent = false;
 	}
 }
 
 void sceneHandler09_startAuntie() {
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_TTA9_GOL), 0, 1);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_TTA9_GOL), 0, 1);
 
-	mq->getExCommandByIndex(0)->_x = g_fp->_sceneRect.right + 30;
+	mq->getExCommandByIndex(0)->_x = g_nmi->_sceneRect.right + 30;
 	mq->chain(0);
 }
 
@@ -199,30 +199,30 @@ void sceneHandler09_spitterClick() {
 
 		g_vars->scene09_spitter->setPicAniInfo(info);
 
-		if (ABS(x - g_fp->_aniMan->_ox) > 1 || ABS(y - g_fp->_aniMan->_oy) > 1) {
-			MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, x, y, 1, ST_MAN_UP);
+		if (ABS(x - g_nmi->_aniMan->_ox) > 1 || ABS(y - g_nmi->_aniMan->_oy) > 1) {
+			MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, x, y, 1, ST_MAN_UP);
 
 			if (mq) {
 				ExCommand *ex = new ExCommand(0, 17, MSG_SC9_PLVCLICK, 0, 0, 0, 1, 0, 0, 0);
 				ex->_excFlags = 2;
 				mq->addExCommandToEnd(ex);
 
-				postExCommand(g_fp->_aniMan->_id, 2, x, y, 0, -1);
+				postExCommand(g_nmi->_aniMan->_id, 2, x, y, 0, -1);
 			}
 		} else {
-			if (!g_fp->_aniMan->_movement) {
+			if (!g_nmi->_aniMan->_movement) {
 				g_vars->scene09_spitter->changeStatics2(ST_PLV_SIT);
 				g_vars->scene09_spitter->hide();
 
-				g_fp->_aniMan->startAnim(MV_MAN9_SHOOT, 0, -1);
+				g_nmi->_aniMan->startAnim(MV_MAN9_SHOOT, 0, -1);
 
-				g_fp->stopAllSoundInstances(SND_9_006);
+				g_nmi->stopAllSoundInstances(SND_9_006);
 			}
 
-			g_fp->_aniMan2 = 0;
+			g_nmi->_aniMan2 = 0;
 
-			if (g_fp->_sceneRect.left < 800)
-				g_fp->_currentScene->_x = 800 - g_fp->_sceneRect.left;
+			if (g_nmi->_sceneRect.left < 800)
+				g_nmi->_currentScene->_x = 800 - g_nmi->_sceneRect.left;
 		}
 	}
 }
@@ -249,8 +249,8 @@ void sceneHandler09_eatBall() {
 				mq->addExCommandToEnd(ex);
 			}
 
-			g_fp->setObjectState(sO_Jug, g_fp->getObjectEnumState(sO_Jug, sO_Unblocked));
-			g_fp->setObjectState(sO_RightStairs_9, g_fp->getObjectEnumState(sO_RightStairs_9, sO_IsOpened));
+			g_nmi->setObjectState(sO_Jug, g_nmi->getObjectEnumState(sO_Jug, sO_Unblocked));
+			g_nmi->setObjectState(sO_RightStairs_9, g_nmi->getObjectEnumState(sO_RightStairs_9, sO_IsOpened));
 
 			g_vars->scene09_gulperIsPresent = false;
 		}
@@ -267,7 +267,7 @@ void sceneHandler09_showBall() {
 
 		g_vars->scene09_flyingBalls.insert_at(0, ani);
 
-		ani->show1(g_fp->_aniMan->_ox + 94, g_fp->_aniMan->_oy - 162, MV_BALL9_EXPLODE, 0);
+		ani->show1(g_nmi->_aniMan->_ox + 94, g_nmi->_aniMan->_oy - 162, MV_BALL9_EXPLODE, 0);
 	}
 }
 
@@ -323,7 +323,7 @@ void sceneHandler09_collideBall(uint num) {
 		if (g_vars->scene09_gulper) {
 			g_vars->scene09_gulper->changeStatics2(ST_GLT_SIT);
 
-			MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC9_EATBALL), 0, 0);
+			MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC9_EATBALL), 0, 0);
 
 			mq->setFlags(mq->getFlags() | 1);
 
@@ -340,7 +340,7 @@ void sceneHandler09_ballExplode(uint num) {
 
 	g_vars->scene09_flyingBalls.remove_at(num);
 
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC9_BALLEXPLODE), 0, 1);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC9_BALLEXPLODE), 0, 1);
 
 	mq->setParamInt(-1, ball->_odelay);
 
@@ -399,7 +399,7 @@ void sceneHandler09_hangerStartCycle() {
 	if (ani->_movement) {
 		ani->startAnim(MV_VSN_CYCLE2, 0, -1);
 		g_vars->scene09_hangers[g_vars->scene09_interactingHanger]->field_8 = 0;
-		g_vars->scene09_hangers[g_vars->scene09_interactingHanger]->phase = g_vars->scene09_intHangerPhase + (g_fp->_mouseScreenPos.y - g_vars->scene09_clickY) / 2;
+		g_vars->scene09_hangers[g_vars->scene09_interactingHanger]->phase = g_vars->scene09_intHangerPhase + (g_nmi->_mouseScreenPos.y - g_vars->scene09_clickY) / 2;
 
 		if (g_vars->scene09_intHangerMaxPhase != -1000 && g_vars->scene09_hangers[g_vars->scene09_interactingHanger]->phase != g_vars->scene09_intHangerMaxPhase) {
 			ExCommand *ex = new ExCommand(0, 35, SND_9_019, 0, 0, 0, 1, 0, 0, 0);
@@ -463,8 +463,8 @@ int sceneHandler09(ExCommand *cmd) {
 		break;
 
 	case 367:
-		if (g_fp->isDemo() && g_fp->getLanguage() == Common::RU_RUS) {
-			g_fp->_needRestart = true;
+		if (g_nmi->isDemo() && g_nmi->getLanguage() == Common::RU_RUS) {
+			g_nmi->_needRestart = true;
 			return 0;
 		}
 		break;
@@ -473,23 +473,23 @@ int sceneHandler09(ExCommand *cmd) {
 		{
 			int res = 0;
 
-			if (g_fp->_aniMan2) {
-				int x = g_fp->_aniMan2->_ox;
+			if (g_nmi->_aniMan2) {
+				int x = g_nmi->_aniMan2->_ox;
 
-				g_vars->scene09_dudeY = g_fp->_aniMan2->_oy;
+				g_vars->scene09_dudeY = g_nmi->_aniMan2->_oy;
 
-				if (x < g_fp->_sceneRect.left + 200)
-					g_fp->_currentScene->_x = x - g_fp->_sceneRect.left - 300;
+				if (x < g_nmi->_sceneRect.left + 200)
+					g_nmi->_currentScene->_x = x - g_nmi->_sceneRect.left - 300;
 
-				if (x > g_fp->_sceneRect.right - 200)
-					g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 300;
+				if (x > g_nmi->_sceneRect.right - 200)
+					g_nmi->_currentScene->_x = x - g_nmi->_sceneRect.right + 300;
 
 				res = 1;
 
-				g_fp->sceneAutoScrolling();
+				g_nmi->sceneAutoScrolling();
 			} else {
-				if (g_fp->_aniMan->_movement && g_fp->_aniMan->_movement->_id != MV_MAN9_SHOOT)
-					g_fp->_aniMan2 = g_fp->_aniMan;
+				if (g_nmi->_aniMan->_movement && g_nmi->_aniMan->_movement->_id != MV_MAN9_SHOOT)
+					g_nmi->_aniMan2 = g_nmi->_aniMan;
 			}
 
 			sceneHandler09_cycleHangers();
@@ -499,9 +499,9 @@ int sceneHandler09(ExCommand *cmd) {
 			if (g_vars->scene09_interactingHanger >= 0)
 				sceneHandler09_hangerStartCycle();
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
-			g_fp->startSceneTrack();
+			g_nmi->startSceneTrack();
 
 			return res;
 		}
@@ -521,7 +521,7 @@ int sceneHandler09(ExCommand *cmd) {
 
 	case 29:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(g_nmi->_sceneRect.left + cmd->_x, g_nmi->_sceneRect.top + cmd->_y);
 
 			if (ani) {
 				if (ani->_id == ANI_PLEVATEL) {
@@ -565,18 +565,18 @@ int sceneHandler09(ExCommand *cmd) {
 				}
 			}
 
-			if (g_vars->scene09_dudeIsOnLadder && g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC9_LADDER_R
-				&& !cmd->_param && !g_fp->_aniMan->_movement) {
-				handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC9_LADDER_R, 0), 0);
+			if (g_vars->scene09_dudeIsOnLadder && g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC9_LADDER_R
+				&& !cmd->_param && !g_nmi->_aniMan->_movement) {
+				handleObjectInteraction(g_nmi->_aniMan, g_nmi->_currentScene->getPictureObjectById(PIC_SC9_LADDER_R, 0), 0);
 			}
 
-			if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+			if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1) || (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0))
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1) || (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0))
+						g_nmi->processArcade(cmd);
 				}
 			}
 		}
diff --git a/engines/ngi/fullpipe/scene10.cpp b/engines/ngi/fullpipe/scene10.cpp
index d4eb84dcfe..cb086281f9 100644
--- a/engines/ngi/fullpipe/scene10.cpp
+++ b/engines/ngi/fullpipe/scene10.cpp
@@ -42,10 +42,10 @@ void scene10_initScene(Scene *sc) {
 	g_vars->scene10_inflater = sc->getStaticANIObject1ById(ANI_NADUVATEL, -1);
 	g_vars->scene10_ladder = sc->getPictureObjectById(PIC_SC10_LADDER, 0);
 
-	g_fp->lift_setButton(sO_Level1, ST_LBN_1N);
-	g_fp->lift_init(sc, QU_SC10_ENTERLIFT, QU_SC10_EXITLIFT);
+	g_nmi->lift_setButton(sO_Level1, ST_LBN_1N);
+	g_nmi->lift_init(sc, QU_SC10_ENTERLIFT, QU_SC10_EXITLIFT);
 
-	if (g_fp->getObjectState(sO_Inflater) == g_fp->getObjectEnumState(sO_Inflater, sO_WithGum)) {
+	if (g_nmi->getObjectState(sO_Inflater) == g_nmi->getObjectEnumState(sO_Inflater, sO_WithGum)) {
 		g_vars->scene10_hasGum = 1;
 	} else {
 		g_vars->scene10_hasGum = 0;
@@ -60,18 +60,18 @@ bool sceneHandler10_inflaterIsBlind() {
 }
 
 int scene10_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor == ANI_PACHKA || g_fp->_objectIdAtCursor == ANI_GUM) {
-		if (g_fp->_cursorId == PIC_CSR_ITN) {
+	if (g_nmi->_objectIdAtCursor == ANI_PACHKA || g_nmi->_objectIdAtCursor == ANI_GUM) {
+		if (g_nmi->_cursorId == PIC_CSR_ITN) {
 			if (g_vars->scene10_hasGum)
-				g_fp->_cursorId = (sceneHandler10_inflaterIsBlind() != 0) ? PIC_CSR_ITN_GREEN : PIC_CSR_ITN_RED;
+				g_nmi->_cursorId = (sceneHandler10_inflaterIsBlind() != 0) ? PIC_CSR_ITN_GREEN : PIC_CSR_ITN_RED;
 			else
-				g_fp->_cursorId = PIC_CSR_DEFAULT;
+				g_nmi->_cursorId = PIC_CSR_DEFAULT;
 		}
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler10_clickGum() {
@@ -81,14 +81,14 @@ void sceneHandler10_clickGum() {
 				int x = g_vars->scene10_gum->_ox - 139;
 				int y = g_vars->scene10_gum->_oy - 48;
 
-				if (abs(x - g_fp->_aniMan->_ox) > 1 || abs(y - g_fp->_aniMan->_oy) > 1) {
-					MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, x, y, 1, ST_MAN_RIGHT);
+				if (abs(x - g_nmi->_aniMan->_ox) > 1 || abs(y - g_nmi->_aniMan->_oy) > 1) {
+					MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, x, y, 1, ST_MAN_RIGHT);
 					if (mq) {
 						ExCommand *ex = new ExCommand(0, 17, MSG_SC10_CLICKGUM, 0, 0, 0, 1, 0, 0, 0);
 						ex->_excFlags = 2;
 						mq->addExCommandToEnd(ex);
 
-						postExCommand(g_fp->_aniMan->_id, 2, x, y, 0, -1);
+						postExCommand(g_nmi->_aniMan->_id, 2, x, y, 0, -1);
 					}
 				} else {
 					g_vars->scene10_hasGum = 0;
@@ -99,7 +99,7 @@ void sceneHandler10_clickGum() {
 		} else {
 			g_vars->scene10_inflater->changeStatics2(ST_NDV_SIT);
 
-			if (g_fp->getObjectState(sO_Inflater) == g_fp->getObjectEnumState(sO_Inflater, sO_WithGum))
+			if (g_nmi->getObjectState(sO_Inflater) == g_nmi->getObjectEnumState(sO_Inflater, sO_WithGum))
 				g_vars->scene10_inflater->startAnim(MV_NDV_DENIES, 0, -1);
 			else
 				g_vars->scene10_inflater->startAnim(MV_NDV_DENY_NOGUM, 0, -1);
@@ -128,19 +128,19 @@ int sceneHandler10(ExCommand *ex) {
 
 	switch(ex->_messageNum) {
 	case MSG_LIFT_CLOSEDOOR:
-		g_fp->lift_closedoorSeq();
+		g_nmi->lift_closedoorSeq();
 		break;
 
 	case MSG_LIFT_EXITLIFT:
-		g_fp->lift_exitSeq(ex);
+		g_nmi->lift_exitSeq(ex);
 		break;
 
 	case MSG_LIFT_STARTEXITQUEUE:
-		g_fp->lift_startExitQueue();
+		g_nmi->lift_startExitQueue();
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_clickButton();
+		g_nmi->lift_clickButton();
 		break;
 
 	case MSG_SC10_LADDERTOBACK:
@@ -152,7 +152,7 @@ int sceneHandler10(ExCommand *ex) {
 		break;
 
 	case MSG_LIFT_GO:
-		g_fp->lift_goAnimation();
+		g_nmi->lift_goAnimation();
 		break;
 
 	case MSG_SC10_CLICKGUM:
@@ -170,22 +170,22 @@ int sceneHandler10(ExCommand *ex) {
 		break;
 
 	case 64:
-		g_fp->lift_hoverButton(ex);
+		g_nmi->lift_hoverButton(ex);
 		break;
 
 	case 29:
 		{
-			if (g_fp->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC10_LADDER) {
-				handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC10_DTRUBA, 0), ex->_param);
+			if (g_nmi->_currentScene->getPictureObjectIdAtPos(ex->_sceneClickX, ex->_sceneClickY) == PIC_SC10_LADDER) {
+				handleObjectInteraction(g_nmi->_aniMan, g_nmi->_currentScene->getPictureObjectById(PIC_SC10_DTRUBA, 0), ex->_param);
 				ex->_messageKind = 0;
 
 				return 0;
 			}
 
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
 
 			if (ani && ani->_id == ANI_LIFTBUTTON) {
-				g_fp->lift_animateButton(ani);
+				g_nmi->lift_animateButton(ani);
 				ex->_messageKind = 0;
 
 				return 0;
@@ -197,18 +197,18 @@ int sceneHandler10(ExCommand *ex) {
 		{
 			int res = 0;
 
-			if (g_fp->_aniMan2) {
-				if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200)
-					g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300;
+			if (g_nmi->_aniMan2) {
+				if (g_nmi->_aniMan2->_ox < g_nmi->_sceneRect.left + 200)
+					g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.left - 300;
 
-				if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200)
-					g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300;
+				if (g_nmi->_aniMan2->_ox > g_nmi->_sceneRect.right - 200)
+					g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.right + 300;
 
 				res = 1;
 			}
 
-			g_fp->_behaviorManager->updateBehaviors();
-			g_fp->startSceneTrack();
+			g_nmi->_behaviorManager->updateBehaviors();
+			g_nmi->startSceneTrack();
 
 			return res;
 		}
diff --git a/engines/ngi/fullpipe/scene11.cpp b/engines/ngi/fullpipe/scene11.cpp
index bb59ec029b..a2a44d551e 100644
--- a/engines/ngi/fullpipe/scene11.cpp
+++ b/engines/ngi/fullpipe/scene11.cpp
@@ -82,15 +82,15 @@ void scene11_dudeSwingCallback(int *arg) {
 
 	if ((oldarg >= 45) != (*arg >= 45) && g_vars->scene11_arcadeIsOn) {
 		if (oldarg >= *arg)
-			g_fp->playSound(SND_11_031, 0);
+			g_nmi->playSound(SND_11_031, 0);
 		else
-			g_fp->playSound(SND_11_020, 0);
+			g_nmi->playSound(SND_11_020, 0);
 	}
 }
 
 void scene11_setupMusic() {
-	if (g_fp->getObjectState(sO_DudeHasJumped) == g_fp->getObjectEnumState(sO_DudeHasJumped, sO_Yes))
-		g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_11"), "MUSIC2", 1);
+	if (g_nmi->getObjectState(sO_DudeHasJumped) == g_nmi->getObjectEnumState(sO_DudeHasJumped, sO_Yes))
+		g_nmi->playTrack(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_11"), "MUSIC2", 1);
 }
 
 void scene11_initScene(Scene *sc) {
@@ -120,14 +120,14 @@ void scene11_initScene(Scene *sc) {
 	g_vars->scene11_swingDirection = 0;
 	g_vars->scene11_swingDirectionPrevTurn = 0;
 
-	Scene *oldsc = g_fp->_currentScene;
+	Scene *oldsc = g_nmi->_currentScene;
 
-	g_fp->_currentScene = sc;
+	g_nmi->_currentScene = sc;
 
-	int swingie = g_fp->getObjectState(sO_Swingie);
+	int swingie = g_nmi->getObjectState(sO_Swingie);
 
-	if (swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsSwinging)
-		|| swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsSwingingWithBoot)) {
+	if (swingie == g_nmi->getObjectEnumState(sO_Swingie, sO_IsSwinging)
+		|| swingie == g_nmi->getObjectEnumState(sO_Swingie, sO_IsSwingingWithBoot)) {
 		g_vars->scene11_swingIsSwinging = true;
 		g_vars->scene11_swingieStands = false;
 
@@ -136,8 +136,8 @@ void scene11_initScene(Scene *sc) {
 		getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing3, 0);
 		getCurrSceneSc2MotionController()->replaceNodeX(805, 905);
 		getSc2MctlCompoundBySceneId(sc->_sceneId)->replaceNodeX(303, 353);
-	} else if (swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInBoots)
-				|| swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInCorner)) {
+	} else if (swingie == g_nmi->getObjectEnumState(sO_Swingie, sO_IsStandingInBoots)
+				|| swingie == g_nmi->getObjectEnumState(sO_Swingie, sO_IsStandingInCorner)) {
 		g_vars->scene11_swingIsSwinging = false;
 		g_vars->scene11_swingieStands = true;
 
@@ -151,7 +151,7 @@ void scene11_initScene(Scene *sc) {
 		g_vars->scene11_swingIsSwinging = false;
 		g_vars->scene11_swingieStands = false;
 
-		if (swingie == g_fp->getObjectEnumState(sO_Swingie, sO_IsSitting)) {
+		if (swingie == g_nmi->getObjectEnumState(sO_Swingie, sO_IsSitting)) {
 			g_vars->scene11_swingie->_movement = 0;
 			g_vars->scene11_swingie->_statics = g_vars->scene11_swingie->getStaticsById(ST_SWR_SIT);
 			g_vars->scene11_swingie->setOXY(144, 389);
@@ -178,10 +178,10 @@ void scene11_initScene(Scene *sc) {
 		g_vars->scene11_dudeOnSwing->_flags |= 4;
 	}
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
-	g_fp->initArcadeKeys("SC_11");
-	g_fp->setArcadeOverlay(PIC_CSR_ARCADE5);
+	g_nmi->initArcadeKeys("SC_11");
+	g_nmi->setArcadeOverlay(PIC_CSR_ARCADE5);
 }
 
 void sceneHandler11_restartMan() {
@@ -194,13 +194,13 @@ void sceneHandler11_restartMan() {
 }
 
 void sceneHandler11_hitMan() {
-	if (g_fp->_aniMan->_ox > 345 && g_fp->_aniMan->_ox < 355) {
-		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
+	if (g_nmi->_aniMan->_ox > 345 && g_nmi->_aniMan->_ox < 355) {
+		g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT);
 
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC11_MANFALL), 0, 0);
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC11_MANFALL), 0, 0);
 
 		mq->setFlags(mq->getFlags() | 1);
-		if (!mq->chain(g_fp->_aniMan))
+		if (!mq->chain(g_nmi->_aniMan))
 			delete mq;
 
 		getCurrSceneSc2MotionController()->replaceNodeX(353, 303);
@@ -208,22 +208,22 @@ void sceneHandler11_hitMan() {
 }
 
 int scene11_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
 	if (g_vars->scene11_arcadeIsOn) {
-		if (g_fp->_cursorId != PIC_CSR_DEFAULT_INV && g_fp->_cursorId != PIC_CSR_ITN_INV)
-			g_fp->_cursorId = -1;
-	} else if (g_vars->scene11_swingie == g_fp->_objectAtCursor && g_fp->_inventory->getSelectedItemId() == ANI_INV_BOOT)
-		g_fp->_cursorId = PIC_CSR_ITN_INV;
+		if (g_nmi->_cursorId != PIC_CSR_DEFAULT_INV && g_nmi->_cursorId != PIC_CSR_ITN_INV)
+			g_nmi->_cursorId = -1;
+	} else if (g_vars->scene11_swingie == g_nmi->_objectAtCursor && g_nmi->_inventory->getSelectedItemId() == ANI_INV_BOOT)
+		g_nmi->_cursorId = PIC_CSR_ITN_INV;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 int sceneHandler11_updateScreenCallback() {
-	int res = g_fp->drawArcadeOverlay(g_vars->scene11_arcadeIsOn);
+	int res = g_nmi->drawArcadeOverlay(g_vars->scene11_arcadeIsOn);
 
 	if (!res)
-		g_fp->_updateScreenCallback = 0;
+		g_nmi->_updateScreenCallback = 0;
 
 	return res;
 }
@@ -236,13 +236,13 @@ void sceneHandler11_manToSwing() {
 	getCurrSceneSc2MotionController()->deactivate();
 	getGameLoaderInteractionController()->disableFlag24();
 
-	g_fp->_aniMan2->hide();
+	g_nmi->_aniMan2->hide();
 
 	g_vars->scene11_swingCounter = 0;
 	g_vars->scene11_swingInertia = 0.01; //1.9849218;
 
 	g_vars->scene11_dudeOnSwing->_flags &= 0xFFFB;
-	g_vars->scene11_dudeOnSwing = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN11, -1);
+	g_vars->scene11_dudeOnSwing = g_nmi->_currentScene->getStaticANIObject1ById(ANI_MAN11, -1);
 	g_vars->scene11_dudeOnSwing->_statics = g_vars->scene11_dudeOnSwing->getStaticsById(ST_MAN11_EMPTY);
 	g_vars->scene11_dudeOnSwing->_movement = 0;
 	g_vars->scene11_dudeOnSwing->show1(690, 215, MV_MAN11_SWING_0, 0);
@@ -250,12 +250,12 @@ void sceneHandler11_manToSwing() {
 	g_vars->scene11_dudeOnSwing->startAnim(MV_MAN11_SWING_0, 0, -1);
 	g_vars->scene11_dudeOnSwing->_movement->setDynamicPhaseIndex(45);
 
-	g_vars->scene11_aniHandler.attachObject(g_fp->_aniMan->_id);
+	g_vars->scene11_aniHandler.attachObject(g_nmi->_aniMan->_id);
 
-	g_fp->_currentScene->_x = 1400 - g_fp->_sceneRect.right;
+	g_nmi->_currentScene->_x = 1400 - g_nmi->_sceneRect.right;
 
 	g_vars->scene11_scrollIsEnabled = true;
-	g_fp->_updateScreenCallback = sceneHandler11_updateScreenCallback;
+	g_nmi->_updateScreenCallback = sceneHandler11_updateScreenCallback;
 }
 
 void sceneHandler11_putABoot() {
@@ -268,9 +268,9 @@ void sceneHandler11_putABoot() {
 }
 
 void sceneHandler11_putBoot() {
-	if (abs(353 - g_fp->_aniMan->_ox) > 1 || abs(498 - g_fp->_aniMan->_oy) > 1
-		|| g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
-		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 353, 498, 1, ST_MAN_RIGHT);
+	if (abs(353 - g_nmi->_aniMan->_ox) > 1 || abs(498 - g_nmi->_aniMan->_oy) > 1
+		|| g_nmi->_aniMan->_movement || g_nmi->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 353, 498, 1, ST_MAN_RIGHT);
 
 		if (mq) {
 			ExCommand *ex = new ExCommand(0, 17, MSG_SC11_PUTBOOT, 0, 0, 0, 1, 0, 0, 0);
@@ -278,7 +278,7 @@ void sceneHandler11_putBoot() {
 
 			mq->addExCommandToEnd(ex);
 
-			postExCommand(g_fp->_aniMan->_id, 2, 353, 498, 0, -1);
+			postExCommand(g_nmi->_aniMan->_id, 2, 353, 498, 0, -1);
 		}
 	} else {
 		sceneHandler11_putABoot();
@@ -286,7 +286,7 @@ void sceneHandler11_putBoot() {
 }
 
 void sceneHandler11_showSwing() {
-	g_vars->scene11_dudeOnSwing = g_fp->_currentScene->getStaticANIObject1ById(ANI_KACHELI, -1);
+	g_vars->scene11_dudeOnSwing = g_nmi->_currentScene->getStaticANIObject1ById(ANI_KACHELI, -1);
 	g_vars->scene11_dudeOnSwing->_statics = g_vars->scene11_dudeOnSwing->getStaticsById(ST_KCH_0);
 	g_vars->scene11_dudeOnSwing->_movement = 0;
 	g_vars->scene11_dudeOnSwing->show1(691, 371, MV_KCH_START, 0);
@@ -306,30 +306,30 @@ void sceneHandler11_jumpFromSwing() {
 	g_vars->scene11_swingSpeed = 0.0;
 	g_vars->scene11_swingAngle = 0.0;
 
-	g_vars->scene11_dudeOnSwing = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN11, -1);
+	g_vars->scene11_dudeOnSwing = g_nmi->_currentScene->getStaticANIObject1ById(ANI_MAN11, -1);
 	g_vars->scene11_dudeOnSwing->_flags &= 0xFFFB;
-	g_vars->scene11_dudeOnSwing = g_fp->_currentScene->getStaticANIObject1ById(ANI_KACHELI, -1);
+	g_vars->scene11_dudeOnSwing = g_nmi->_currentScene->getStaticANIObject1ById(ANI_KACHELI, -1);
 	g_vars->scene11_dudeOnSwing->changeStatics2(ST_KCH_STATIC);
 	g_vars->scene11_dudeOnSwing->setOXY(691, 371);
 	g_vars->scene11_dudeOnSwing->_priority = 20;
 	g_vars->scene11_dudeOnSwing->_flags |= 4;
 
-	MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
-	ExCommand *ex = new ExCommand(g_fp->_aniMan->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0);
+	MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
+	ExCommand *ex = new ExCommand(g_nmi->_aniMan->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0);
 	ex->_z = 256;
 	ex->_messageNum = 0;
 	ex->_excFlags |= 3;
 	mq->addExCommandToEnd(ex);
 	mq->setFlags(mq->getFlags() | 1);
 
-	g_fp->_globalMessageQueueList->addMessageQueue(mq);
+	g_nmi->_globalMessageQueueList->addMessageQueue(mq);
 
-	g_fp->_aniMan->_flags |= 0x104;
-	g_fp->_aniMan->changeStatics2(ST_MAN11_SWING);
-	g_fp->_aniMan->setOXY(685, 373);
-	g_fp->_aniMan->startAnim(MV_MAN11_JUMPFROMSWING, mq->_id, -1);
+	g_nmi->_aniMan->_flags |= 0x104;
+	g_nmi->_aniMan->changeStatics2(ST_MAN11_SWING);
+	g_nmi->_aniMan->setOXY(685, 373);
+	g_nmi->_aniMan->startAnim(MV_MAN11_JUMPFROMSWING, mq->_id, -1);
 
-	g_fp->_aniMan2 = g_fp->_aniMan;
+	g_nmi->_aniMan2 = g_nmi->_aniMan;
 }
 
 void sceneHandler11_swing0() {
@@ -384,7 +384,7 @@ void sceneHandler11_emptySwing() {
 
 	g_vars->scene11_dudeOnSwing->stopAnim_maybe();
 	g_vars->scene11_dudeOnSwing->hide();
-	g_vars->scene11_dudeOnSwing = g_fp->_currentScene->getStaticANIObject1ById(ANI_KACHELI, -1);
+	g_vars->scene11_dudeOnSwing = g_nmi->_currentScene->getStaticANIObject1ById(ANI_KACHELI, -1);
 	g_vars->scene11_dudeOnSwing->show1(-1, -1, -1, 0);
 	g_vars->scene11_dudeOnSwing->changeStatics2(ST_KCH_EMPTY);
 	g_vars->scene11_dudeOnSwing->startAnim(MV_KCH_MOVE2, 0, -1);
@@ -398,12 +398,12 @@ void sceneHandler11_jumpHitAndWin() {
 
 	sceneHandler11_emptySwing();
 
-	g_fp->_aniMan->show1(690 - (int)(sin(g_vars->scene11_swingAngle) * -267.0), 215 - (int)(cos(g_vars->scene11_swingAngle) * -267.0),
+	g_nmi->_aniMan->show1(690 - (int)(sin(g_vars->scene11_swingAngle) * -267.0), 215 - (int)(cos(g_vars->scene11_swingAngle) * -267.0),
 						  MV_MAN11_JUMPHIT, 0);
-	g_fp->_aniMan->_priority = 10;
+	g_nmi->_aniMan->_priority = 10;
 
 	mkQueue.field_1C = 10;
-	mkQueue.ani = g_fp->_aniMan;
+	mkQueue.ani = g_nmi->_aniMan;
 	mkQueue.staticsId2 = ST_MAN_1PIX;
 	mkQueue.x1 = 1400;
 	mkQueue.y1 = 0;
@@ -427,14 +427,14 @@ void sceneHandler11_jumpHitAndWin() {
 
 		mq->addExCommandToEnd(ex);
 
-		if (!mq->chain(g_fp->_aniMan))
+		if (!mq->chain(g_nmi->_aniMan))
 			delete mq;
 
 
-		if (g_fp->getObjectState(sO_Swingie) == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInCorner))
-			g_fp->setObjectState(sO_Swingie, g_fp->getObjectEnumState(sO_Swingie, sO_IsSitting));
+		if (g_nmi->getObjectState(sO_Swingie) == g_nmi->getObjectEnumState(sO_Swingie, sO_IsStandingInCorner))
+			g_nmi->setObjectState(sO_Swingie, g_nmi->getObjectEnumState(sO_Swingie, sO_IsSitting));
 
-		g_fp->setObjectState(sO_DudeHasJumped, g_fp->getObjectEnumState(sO_DudeHasJumped, sO_Yes));
+		g_nmi->setObjectState(sO_DudeHasJumped, g_nmi->getObjectEnumState(sO_DudeHasJumped, sO_Yes));
 	}
 }
 
@@ -443,12 +443,12 @@ void sceneHandler11_jumpOver(double angle) {
 
 	sceneHandler11_emptySwing();
 
-	g_fp->_aniMan->show1(690 - (int)(sin(g_vars->scene11_swingAngle) * -267.0), 215 - (int)(cos(g_vars->scene11_swingAngle) * -267.0),
+	g_nmi->_aniMan->show1(690 - (int)(sin(g_vars->scene11_swingAngle) * -267.0), 215 - (int)(cos(g_vars->scene11_swingAngle) * -267.0),
 						  MV_MAN11_JUMPOVER, 0);
-	g_fp->_aniMan->_priority = 0;
+	g_nmi->_aniMan->_priority = 0;
 
 	mkQueue.staticsId2 = ST_MAN_1PIX;
-	mkQueue.ani = g_fp->_aniMan;
+	mkQueue.ani = g_nmi->_aniMan;
 	mkQueue.x1 = 1163;
 	mkQueue.y1 = 837 - (int)(angle * 153.0);
 	mkQueue.field_1C = 0;
@@ -466,7 +466,7 @@ void sceneHandler11_jumpOver(double angle) {
 
 		mq->addExCommandToEnd(ex);
 
-		if (!mq->chain(g_fp->_aniMan))
+		if (!mq->chain(g_nmi->_aniMan))
 			delete mq;
 	}
 }
@@ -483,12 +483,12 @@ void sceneHandler11_jumpHit(double angle) {
 		angle = 0.0;
 	}
 
-	g_fp->_aniMan->show1(690 - (int)(sin(g_vars->scene11_swingAngle) * -267.0), 215 - (int)(cos(g_vars->scene11_swingAngle) * -267.0),
+	g_nmi->_aniMan->show1(690 - (int)(sin(g_vars->scene11_swingAngle) * -267.0), 215 - (int)(cos(g_vars->scene11_swingAngle) * -267.0),
 						  MV_MAN11_JUMPOVER, 0);
-	g_fp->_aniMan->_priority = 0;
+	g_nmi->_aniMan->_priority = 0;
 
 	mkQueue.staticsId2 = ST_MAN_1PIX;
-	mkQueue.ani = g_fp->_aniMan;
+	mkQueue.ani = g_nmi->_aniMan;
 	mkQueue.x1 = 1017 - (int)(angle * -214.0);
 	mkQueue.y1 = 700;
 	mkQueue.field_1C = 0;
@@ -506,7 +506,7 @@ void sceneHandler11_jumpHit(double angle) {
 
 		mq->addExCommandToEnd(ex);
 
-		if (!mq->chain(g_fp->_aniMan))
+		if (!mq->chain(g_nmi->_aniMan))
 			delete mq;
 
 	}
@@ -544,14 +544,14 @@ void sceneHandler11_setSwingDirection() {
 }
 
 void sceneHandler11_swingieSit() {
-	if (g_fp->getObjectState(sO_Swingie) == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInBoots)) {
+	if (g_nmi->getObjectState(sO_Swingie) == g_nmi->getObjectEnumState(sO_Swingie, sO_IsStandingInBoots)) {
 		g_vars->scene11_swingIsSwinging = false;
 		g_vars->scene11_swingieStands = false;
 
 		g_vars->scene11_swingie->changeStatics2(ST_SWR_SIT);
 		g_vars->scene11_swingie->setOXY(144, 389);
 
-		g_fp->setObjectState(sO_Swingie, g_fp->getObjectEnumState(sO_Swingie, sO_IsSitting));
+		g_nmi->setObjectState(sO_Swingie, g_nmi->getObjectEnumState(sO_Swingie, sO_IsSitting));
 
 		getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing1, 0);
 		getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing2, 0);
@@ -560,7 +560,7 @@ void sceneHandler11_swingieSit() {
 }
 
 void sceneHandler11_swingieJumpDown() {
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SWR_JUMPDOWN), 0, 0);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SWR_JUMPDOWN), 0, 0);
 
 	mq->setFlags(mq->getFlags() | 1);
 
@@ -569,7 +569,7 @@ void sceneHandler11_swingieJumpDown() {
 
 	g_vars->scene11_swingIsSwinging = false;
 	g_vars->scene11_swingieStands = true;
-	g_vars->scene11_swingieScreenEdge = g_fp->_sceneRect.left;
+	g_vars->scene11_swingieScreenEdge = g_nmi->_sceneRect.left;
 
 	getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing1, 0);
 	getCurrSceneSc2MotionController()->enableLinks(sO_CloseThing2, 1);
@@ -584,7 +584,7 @@ void sceneHandler11_winArcade() {
 
 		sceneHandler11_emptySwing();
 
-		g_fp->_gameLoader->preloadScene(SC_11, TrubaRight);
+		g_nmi->_gameLoader->preloadScene(SC_11, TrubaRight);
 	}
 }
 
@@ -598,14 +598,14 @@ int sceneHandler11(ExCommand *cmd) {
 		break;
 
 	case MSG_SC11_SITSWINGER:
-		if (g_fp->getObjectState(sO_Swingie) == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInBoots)
-				|| g_fp->getObjectState(sO_Swingie) == g_fp->getObjectEnumState(sO_Swingie, sO_IsStandingInCorner)) {
-			g_fp->setObjectState(sO_Swingie, g_fp->getObjectEnumState(sO_Swingie, sO_IsSitting));
+		if (g_nmi->getObjectState(sO_Swingie) == g_nmi->getObjectEnumState(sO_Swingie, sO_IsStandingInBoots)
+				|| g_nmi->getObjectState(sO_Swingie) == g_nmi->getObjectEnumState(sO_Swingie, sO_IsStandingInCorner)) {
+			g_nmi->setObjectState(sO_Swingie, g_nmi->getObjectEnumState(sO_Swingie, sO_IsSitting));
 		}
 		break;
 
 	case MSG_SC11_MANCRY:
-		g_fp->playSound(g_vars->scene11_crySound, 0);
+		g_nmi->playSound(g_vars->scene11_crySound, 0);
 
 		g_vars->scene11_crySound = 0;
 		break;
@@ -640,46 +640,46 @@ int sceneHandler11(ExCommand *cmd) {
 		{
 			int res = 0;
 
-			if (g_fp->_aniMan2) {
+			if (g_nmi->_aniMan2) {
 				int x, y;
-				x = g_fp->_aniMan2->_ox;
-				y = g_fp->_aniMan2->_oy;
+				x = g_nmi->_aniMan2->_ox;
+				y = g_nmi->_aniMan2->_oy;
 
 				g_vars->scene11_dudeX = x;
 				g_vars->scene11_dudeY = y;
 
 				if (g_vars->scene11_scrollIsEnabled) {
-					if (x > g_fp->_sceneRect.right - 200)
-						g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 200;
+					if (x > g_nmi->_sceneRect.right - 200)
+						g_nmi->_currentScene->_x = x - g_nmi->_sceneRect.right + 200;
 				} else if (g_vars->scene11_scrollIsMaximized) {
-					g_fp->_currentScene->_x = g_fp->_sceneWidth - x;
+					g_nmi->_currentScene->_x = g_nmi->_sceneWidth - x;
 
 					if (g_vars->scene11_dudeX < 910)
 						g_vars->scene11_scrollIsMaximized = false;
 				} else {
-					if (x < g_fp->_sceneRect.left + 200)
-						g_fp->_currentScene->_x = x - g_fp->_sceneRect.left - 300;
-					else if (x > g_fp->_sceneRect.right - 200)
-						g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 300;
+					if (x < g_nmi->_sceneRect.left + 200)
+						g_nmi->_currentScene->_x = x - g_nmi->_sceneRect.left - 300;
+					else if (x > g_nmi->_sceneRect.right - 200)
+						g_nmi->_currentScene->_x = x - g_nmi->_sceneRect.right + 300;
 
-					if (y < g_fp->_sceneRect.top + 200)
-						g_fp->_currentScene->_y = y - g_fp->_sceneRect.top - 300;
-					if (y > g_fp->_sceneRect.bottom - 300)
-						g_fp->_currentScene->_y = y - g_fp->_sceneRect.bottom + 300;
+					if (y < g_nmi->_sceneRect.top + 200)
+						g_nmi->_currentScene->_y = y - g_nmi->_sceneRect.top - 300;
+					if (y > g_nmi->_sceneRect.bottom - 300)
+						g_nmi->_currentScene->_y = y - g_nmi->_sceneRect.bottom + 300;
 
 					if (x >= 940)
 						g_vars->scene11_scrollIsMaximized = true;
 
-					g_fp->sceneAutoScrolling();
+					g_nmi->sceneAutoScrolling();
 				}
 				res = 1;
 			}
 
 			if (g_vars->scene11_swingieStands) {
-				if (g_fp->_sceneRect.left >= 534 && g_vars->scene11_swingieScreenEdge < 534)
+				if (g_nmi->_sceneRect.left >= 534 && g_vars->scene11_swingieScreenEdge < 534)
 						sceneHandler11_swingieSit();
 
-				g_vars->scene11_swingieScreenEdge = g_fp->_sceneRect.left;
+				g_vars->scene11_swingieScreenEdge = g_nmi->_sceneRect.left;
 			}
 
 			if (g_vars->scene11_arcadeIsOn) {
@@ -726,15 +726,15 @@ int sceneHandler11(ExCommand *cmd) {
 				}
 			}
 
-			g_fp->_behaviorManager->updateBehaviors();
-			g_fp->startSceneTrack();
+			g_nmi->_behaviorManager->updateBehaviors();
+			g_nmi->startSceneTrack();
 			return res;
 		}
 		break;
 
 	case 29:
 		if (g_vars->scene11_swingIsSwinging) {
-			if (g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y) == g_vars->scene11_swingie
+			if (g_nmi->_currentScene->getStaticANIObjectAtPos(g_nmi->_sceneRect.left + cmd->_x, g_nmi->_sceneRect.top + cmd->_y) == g_vars->scene11_swingie
 				&& cmd->_param == ANI_INV_BOOT)
 				sceneHandler11_putBoot();
 		} else {
@@ -748,16 +748,16 @@ int sceneHandler11(ExCommand *cmd) {
 
 		if (!g_vars->scene11_arcadeIsOn) {
 		LABEL_69:
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
-			if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+			if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-						|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+						|| (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0)) {
+						g_nmi->processArcade(cmd);
 
 						break;
 					}
diff --git a/engines/ngi/fullpipe/scene12.cpp b/engines/ngi/fullpipe/scene12.cpp
index 7d64581315..8cd3b2d925 100644
--- a/engines/ngi/fullpipe/scene12.cpp
+++ b/engines/ngi/fullpipe/scene12.cpp
@@ -36,35 +36,35 @@
 namespace NGI {
 
 void scene12_initScene(Scene *sc) {
-	GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("SC_12");
-	g_fp->_floaters->init(var);
+	GameVar *var = g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_12");
+	g_nmi->_floaters->init(var);
 
-	g_vars->scene12_fly = g_fp->getObjectState(sO_Fly_12);
+	g_vars->scene12_fly = g_nmi->getObjectState(sO_Fly_12);
 
 	if (g_vars->scene12_fly)
-		g_vars->scene12_flyCountdown = g_fp->_rnd.getRandomNumber(600) + 600;
+		g_vars->scene12_flyCountdown = g_nmi->_rnd.getRandomNumber(600) + 600;
 
-	g_fp->setObjectState(sO_Fly_12, g_fp->_rnd.getRandomNumber(1));
+	g_nmi->setObjectState(sO_Fly_12, g_nmi->_rnd.getRandomNumber(1));
 }
 
 void sceneHandler12_updateFloaters() {
-	g_fp->_floaters->genFlies(g_fp->_currentScene, 397, -50, 100, 6);
+	g_nmi->_floaters->genFlies(g_nmi->_currentScene, 397, -50, 100, 6);
 
-	g_fp->_floaters->_array2[0].countdown = g_fp->_rnd.getRandomNumber(6) + 4;
-	g_fp->_floaters->_array2[0].val6 = 397;
-	g_fp->_floaters->_array2[0].val7 = -50;
+	g_nmi->_floaters->_array2[0].countdown = g_nmi->_rnd.getRandomNumber(6) + 4;
+	g_nmi->_floaters->_array2[0].val6 = 397;
+	g_nmi->_floaters->_array2[0].val7 = -50;
 }
 
 int sceneHandler12(ExCommand *cmd) {
 	int res = 0;
 
 	if (cmd->_messageKind == 17 && cmd->_messageNum == 33) {
-		if (g_fp->_aniMan2) {
-			if (g_fp->_aniMan2->_ox < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.left - 300;
+		if (g_nmi->_aniMan2) {
+			if (g_nmi->_aniMan2->_ox < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.left - 300;
 
-			if (g_fp->_aniMan2->_ox > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = g_fp->_aniMan2->_ox - g_fp->_sceneRect.right + 300;
+			if (g_nmi->_aniMan2->_ox > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = g_nmi->_aniMan2->_ox - g_nmi->_sceneRect.right + 300;
 
 			res = 1;
 		}
@@ -74,9 +74,9 @@ int sceneHandler12(ExCommand *cmd) {
 		if (!g_vars->scene12_flyCountdown)
 			sceneHandler12_updateFloaters();
 
-		g_fp->_floaters->update();
+		g_nmi->_floaters->update();
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 	}
 
 	return res;
diff --git a/engines/ngi/fullpipe/scene13.cpp b/engines/ngi/fullpipe/scene13.cpp
index 41240c8157..73bb38084a 100644
--- a/engines/ngi/fullpipe/scene13.cpp
+++ b/engines/ngi/fullpipe/scene13.cpp
@@ -49,16 +49,16 @@ void scene13_initScene(Scene *sc) {
 	g_vars->scene13_guardDirection = true;
 
 	MovGraphLink *lnk = getSc2MctlCompoundBySceneId(sc->_sceneId)->getLinkByName(sO_Bridge);
-	Scene *oldsc = g_fp->_currentScene;
+	Scene *oldsc = g_nmi->_currentScene;
 
-	g_fp->_currentScene = sc;
+	g_nmi->_currentScene = sc;
 
-	if (g_fp->getObjectState(sO_Bridge) == g_fp->getObjectEnumState(sO_Bridge, sO_Convoluted)) {
+	if (g_nmi->getObjectState(sO_Bridge) == g_nmi->getObjectEnumState(sO_Bridge, sO_Convoluted)) {
 		g_vars->scene13_bridge->changeStatics2(ST_BDG_CLOSED);
 
 		lnk->_flags |= 0x20000000u;
 
-		g_fp->playSound(SND_13_018, 1);
+		g_nmi->playSound(SND_13_018, 1);
 
 		g_vars->scene13_whirlgig->_callback2 = 0; // Really NULL
 	} else {
@@ -73,14 +73,14 @@ void scene13_initScene(Scene *sc) {
 		if (g_vars->scene13_whirlgig->_movement)
 			g_vars->scene13_whirlgig->_movement->setDynamicPhaseIndex(30);
 
-		g_fp->playSound(SND_13_037, 1);
+		g_nmi->playSound(SND_13_037, 1);
 	}
 
 	g_vars->scene13_bridge->_flags &= 0xFFFD;
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
-	g_fp->initArcadeKeys("SC_13");
+	g_nmi->initArcadeKeys("SC_13");
 }
 
 void sceneHandler13_openBridge() {
@@ -164,18 +164,18 @@ void sceneHandler13_closeFast() {
 void sceneHandler13_stopWhirlgig() {
 	g_vars->scene13_whirlgig->_callback2 = scene13_whirlgigCallback;
 
-	g_fp->stopAllSoundInstances(SND_13_018);
-	g_fp->playSound(SND_13_033, 0);
-	g_fp->playSound(SND_13_037, 1);
+	g_nmi->stopAllSoundInstances(SND_13_018);
+	g_nmi->playSound(SND_13_033, 0);
+	g_nmi->playSound(SND_13_037, 1);
 }
 
 void sceneHandler13_startWhirlgig() {
 	g_vars->scene13_whirlgig->_callback2 = 0; // Really NULL
 
-	g_fp->playSound(SND_13_018, 1);
-	g_fp->playSound(SND_13_034, 0);
+	g_nmi->playSound(SND_13_018, 1);
+	g_nmi->playSound(SND_13_034, 0);
 
-	g_fp->stopAllSoundInstances(SND_13_037);
+	g_nmi->stopAllSoundInstances(SND_13_037);
 }
 
 void sceneHandler13_openFast() {
@@ -185,14 +185,14 @@ void sceneHandler13_openFast() {
 }
 
 void sceneHandler13_uneatGum() {
-	BehaviorMove *beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT, QU_STR_CHEW);
+	BehaviorMove *beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT, QU_STR_CHEW);
 
 	if (beh) {
 		beh->_percent = 0;
 		beh->_delay = 36;
 	}
 
-	beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT, QU_STR_PLUU);
+	beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT, QU_STR_PLUU);
 	if (beh) {
 		beh->_percent = 0;
 		beh->_delay = 36;
@@ -200,7 +200,7 @@ void sceneHandler13_uneatGum() {
 }
 
 void sceneHandler13_eatGum() {
-	BehaviorMove *beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT, QU_STR_CHEW);
+	BehaviorMove *beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT, QU_STR_CHEW);
 
 	if (beh) {
 		beh->_percent = 10922;
@@ -212,7 +212,7 @@ void sceneHandler13_updateBridge() {
 	MovGraphLink *lnk = getCurrSceneSc2MotionController()->getLinkByName(sO_Bridge);
 
 	if (lnk) {
-		if (g_fp->getObjectState(sO_Bridge) == g_fp->getObjectEnumState(sO_Bridge, sO_Convoluted))
+		if (g_nmi->getObjectState(sO_Bridge) == g_nmi->getObjectEnumState(sO_Bridge, sO_Convoluted))
 			lnk->_flags |= 0x20000000;
 		else
 			lnk->_flags &= 0xDFFFFFFF;
@@ -236,11 +236,11 @@ void sceneHandler13_setBehFlag(BehaviorMove *beh, bool flag) {
 }
 
 void sceneHandler13_walkForward(bool flag) {
-	BehaviorMove *beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT, QU_STR_RTOL);
+	BehaviorMove *beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT, QU_STR_RTOL);
 
 	sceneHandler13_setBehFlag(beh, flag);
 
-	beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_LEFT, QU_STR_TURNR);
+	beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_LEFT, QU_STR_TURNR);
 
 	sceneHandler13_setBehFlag(beh, flag);
 
@@ -248,11 +248,11 @@ void sceneHandler13_walkForward(bool flag) {
 }
 
 void sceneHandler13_walkBackward(bool flag) {
-	BehaviorMove *beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT|0x4000, QU_STR_LTOR);
+	BehaviorMove *beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_RIGHT|0x4000, QU_STR_LTOR);
 
 	sceneHandler13_setBehFlag(beh, flag);
 
-	beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_LEFT|0x4000, QU_STR_TURNR_L);
+	beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene13_guard, ST_STR_LEFT|0x4000, QU_STR_TURNR_L);
 
 	sceneHandler13_setBehFlag(beh, flag);
 
@@ -318,17 +318,17 @@ int sceneHandler13(ExCommand *cmd) {
 
 	case 29:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
-			if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+			if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47
-						 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-						|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47
+						 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+						|| (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0)) {
+						g_nmi->processArcade(cmd);
 					}
 				}
 			}
@@ -340,19 +340,19 @@ int sceneHandler13(ExCommand *cmd) {
 			int res = 0;
 			int x;
 
-			if (g_fp->_aniMan2) {
-				x = g_fp->_aniMan2->_ox;
+			if (g_nmi->_aniMan2) {
+				x = g_nmi->_aniMan2->_ox;
 				g_vars->scene13_dudeX = x;
 
-				if (x < g_fp->_sceneRect.left + 200)
-					g_fp->_currentScene->_x = x - g_fp->_sceneRect.left - 300;
+				if (x < g_nmi->_sceneRect.left + 200)
+					g_nmi->_currentScene->_x = x - g_nmi->_sceneRect.left - 300;
 
-				if (x > g_fp->_sceneRect.right - 200)
-					g_fp->_currentScene->_x = x - g_fp->_sceneRect.right + 300;
+				if (x > g_nmi->_sceneRect.right - 200)
+					g_nmi->_currentScene->_x = x - g_nmi->_sceneRect.right + 300;
 
 				res = 1;
 
-				g_fp->sceneAutoScrolling();
+				g_nmi->sceneAutoScrolling();
 			} else {
 				x = g_vars->scene13_dudeX;
 			}
@@ -364,8 +364,8 @@ int sceneHandler13(ExCommand *cmd) {
 
 					g_vars->scene13_guardDirection = false;
 
-					g_fp->_behaviorManager->updateBehaviors();
-					g_fp->startSceneTrack();
+					g_nmi->_behaviorManager->updateBehaviors();
+					g_nmi->startSceneTrack();
 
 					return res;
 				}
@@ -376,8 +376,8 @@ int sceneHandler13(ExCommand *cmd) {
 				g_vars->scene13_guardDirection = true;
 			}
 
-			g_fp->_behaviorManager->updateBehaviors();
-			g_fp->startSceneTrack();
+			g_nmi->_behaviorManager->updateBehaviors();
+			g_nmi->startSceneTrack();
 
 			return res;
 		}
diff --git a/engines/ngi/fullpipe/scene14.cpp b/engines/ngi/fullpipe/scene14.cpp
index 03ce6bf878..a510547a53 100644
--- a/engines/ngi/fullpipe/scene14.cpp
+++ b/engines/ngi/fullpipe/scene14.cpp
@@ -50,7 +50,7 @@ void scene14_initScene(Scene *sc) {
 	g_vars->scene14_flyingBall = 0;
 	g_vars->scene14_balls.clear();
 
-	if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_In_14)) {
+	if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_In_14)) {
 		g_vars->scene14_grandmaIsHere = true;
 
 		StaticANIObject *ball = sc->getStaticANIObject1ById(ANI_BALL14, -1);
@@ -71,44 +71,44 @@ void scene14_initScene(Scene *sc) {
 		g_vars->scene14_grandma->hide();
 	}
 
-	g_fp->lift_setButton(sO_Level4, ST_LBN_4N);
-	g_fp->lift_init(sc, QU_SC14_ENTERLIFT, QU_SC14_EXITLIFT);
+	g_nmi->lift_setButton(sO_Level4, ST_LBN_4N);
+	g_nmi->lift_init(sc, QU_SC14_ENTERLIFT, QU_SC14_EXITLIFT);
 
-	g_fp->initArcadeKeys("SC_14");
-	g_fp->setArcadeOverlay(PIC_CSR_ARCADE6);
+	g_nmi->initArcadeKeys("SC_14");
+	g_nmi->setArcadeOverlay(PIC_CSR_ARCADE6);
 }
 
 void scene14_setupMusic() {
 	if (!g_vars->scene14_grandmaIsHere)
-		g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_14"), "MUSIC2", 0);
+		g_nmi->playTrack(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_14"), "MUSIC2", 0);
 }
 
 int scene14_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
 	if (g_vars->scene14_arcadeIsOn) {
 		if (g_vars->scene14_dudeIsKicking) {
-			g_fp->_cursorId = PIC_CSR_ARCADE2_D;
+			g_nmi->_cursorId = PIC_CSR_ARCADE2_D;
 		} else {
-			if (g_fp->_aniMan != g_fp->_objectAtCursor || g_fp->_aniMan->_movement || g_fp->_cursorId != PIC_CSR_DEFAULT) {
-				if (g_fp->_cursorId != PIC_CSR_DEFAULT_INV && g_fp->_cursorId != PIC_CSR_ITN_INV) {
-					g_fp->_cursorId = PIC_CSR_DEFAULT;
+			if (g_nmi->_aniMan != g_nmi->_objectAtCursor || g_nmi->_aniMan->_movement || g_nmi->_cursorId != PIC_CSR_DEFAULT) {
+				if (g_nmi->_cursorId != PIC_CSR_DEFAULT_INV && g_nmi->_cursorId != PIC_CSR_ITN_INV) {
+					g_nmi->_cursorId = PIC_CSR_DEFAULT;
 				}
 			} else {
-				g_fp->_cursorId = PIC_CSR_ITN;
+				g_nmi->_cursorId = PIC_CSR_ITN;
 			}
 		}
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 int sceneHandler14_updateScreenCallback() {
 	int res;
 
-	res = g_fp->drawArcadeOverlay(g_vars->scene14_arcadeIsOn);
+	res = g_nmi->drawArcadeOverlay(g_vars->scene14_arcadeIsOn);
 	if (!res)
-		g_fp->_updateScreenCallback = 0;
+		g_nmi->_updateScreenCallback = 0;
 
 	return res;
 }
@@ -132,7 +132,7 @@ void sceneHandler14_showBallGrandmaDive() {
 		g_vars->scene14_flyingBall = 0;
 	}
 
-	g_fp->_aniMan2 = g_fp->_aniMan;
+	g_nmi->_aniMan2 = g_nmi->_aniMan;
 }
 
 void sceneHandler14_showBallGrandmaHit() {
@@ -140,7 +140,7 @@ void sceneHandler14_showBallGrandmaHit() {
 		g_vars->scene14_flyingBall->show1(g_vars->scene14_grandmaX + 190, g_vars->scene14_grandmaY + 56, MV_BAL14_TOGMA, 0);
 		g_vars->scene14_flyingBall->_priority = 27;
 
-		MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+		MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 		ExCommand *ex = new ExCommand(ANI_BALL14, 1, MV_BAL14_TOGMA, 0, 0, 0, 1, 0, 0, 0);
 
 		ex->_param = g_vars->scene14_flyingBall->_odelay;
@@ -162,12 +162,12 @@ void sceneHandler14_showBallGrandmaHit() {
 void sceneHandler14_exitScene() {
 	g_vars->scene14_arcadeIsOn = false;
 
-	if (g_fp->_aniMan->_movement)
-		g_fp->_aniMan->_movement->gotoLastFrame();
+	if (g_nmi->_aniMan->_movement)
+		g_nmi->_aniMan->_movement->gotoLastFrame();
 
-	g_fp->_aniMan->stopAnim_maybe();
+	g_nmi->_aniMan->stopAnim_maybe();
 
-	handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC14_RTRUBA, 0), 0);
+	handleObjectInteraction(g_nmi->_aniMan, g_nmi->_currentScene->getPictureObjectById(PIC_SC14_RTRUBA, 0), 0);
 
 	g_vars->scene14_grandma->changeStatics2(ST_GMA_SIT);
 
@@ -182,7 +182,7 @@ void sceneHandler14_showBallMan() {
 		g_vars->scene14_flyingBall->show1(g_vars->scene14_dudeX - 166, g_vars->scene14_dudeY + 40, MV_BAL14_TOGMA, 0);
 		g_vars->scene14_flyingBall->_priority = 27;
 
-		MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+		MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 		ExCommand *ex = new ExCommand(ANI_BALL14, 1, MV_BAL14_TOGMA, 0, 0, 0, 1, 0, 0, 0);
 
 		ex->_param = g_vars->scene14_flyingBall->_odelay;
@@ -266,8 +266,8 @@ void sceneHandler14_showBallFly() {
 }
 
 void sceneHandler14_grandmaJump() {
-	BehaviorMove *beh1 = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene14_grandma, ST_GMA_SIT, QU_GMA_JUMPFW);
-	BehaviorMove *beh2 = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene14_grandma, ST_GMA_SIT, QU_GMA_JUMPBK);
+	BehaviorMove *beh1 = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene14_grandma, ST_GMA_SIT, QU_GMA_JUMPFW);
+	BehaviorMove *beh2 = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene14_grandma, ST_GMA_SIT, QU_GMA_JUMPBK);
 
 	if (beh1) {
 		if (beh2) {
@@ -286,18 +286,18 @@ void sceneHandler14_endArcade() {
 	getGameLoaderInteractionController()->enableFlag24();
 	getCurrSceneSc2MotionController()->activate();
 
-	BehaviorMove *beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene14_grandma, ST_GMA_SIT, QU_GMA_BLINK);
+	BehaviorMove *beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene14_grandma, ST_GMA_SIT, QU_GMA_BLINK);
 	if (beh)
 		beh->_percent = 327;
 
-	beh = g_fp->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene14_grandma, ST_GMA_SIT, QU_GMA_THROW);
+	beh = g_nmi->_behaviorManager->getBehaviorMoveByMessageQueueDataId(g_vars->scene14_grandma, ST_GMA_SIT, QU_GMA_THROW);
 	if (beh)
 		beh->_percent = 0;
 
 	g_vars->scene14_sceneDeltaX = 200;
 	g_vars->scene14_sceneDeltaY = 200;
 
-	g_fp->_aniMan2 = g_fp->_aniMan;
+	g_nmi->_aniMan2 = g_nmi->_aniMan;
 
 	g_vars->scene14_sceneDiffX = 300;
 	g_vars->scene14_sceneDiffY = 300;
@@ -306,7 +306,7 @@ void sceneHandler14_endArcade() {
 void sceneHandler14_winArcade() {
 	if (g_vars->scene14_arcadeIsOn) {
 		if (g_vars->scene14_dudeIsKicking) {
-			g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+			g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 
 			g_vars->scene14_dudeIsKicking = false;
 		}
@@ -324,18 +324,18 @@ void sceneHandler14_winArcade() {
 
 		g_vars->scene14_grandmaIsHere = false;
 
-		if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_In_14)) {
-			g_fp->setObjectState(sO_Grandma, g_fp->getObjectEnumState(sO_Grandma, sO_In_15));
+		if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_In_14)) {
+			g_nmi->setObjectState(sO_Grandma, g_nmi->getObjectEnumState(sO_Grandma, sO_In_15));
 			g_vars->scene14_grandma->changeStatics2(ST_GMA_SIT);
 			g_vars->scene14_grandma->_flags &= 0xFFFB;
 		}
 
-		if (g_fp->_currentScene->_messageQueueId) {
-			MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(g_fp->_currentScene->_messageQueueId);
+		if (g_nmi->_currentScene->_messageQueueId) {
+			MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(g_nmi->_currentScene->_messageQueueId);
 			if (mq)
 				delete mq;
 
-			g_fp->_currentScene->_messageQueueId = 0;
+			g_nmi->_currentScene->_messageQueueId = 0;
 		}
 	}
 }
@@ -359,16 +359,16 @@ void sceneHandler14_startArcade() {
 	g_vars->scene14_arcadeIsOn = true;
 	g_vars->scene14_dudeCanKick = true;
 
-	if (g_fp->_aniMan->_movement) {
-		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
-		g_fp->_aniMan->setOXY(1237, 451);
-		g_fp->_aniMan->_priority = 25;
+	if (g_nmi->_aniMan->_movement) {
+		g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+		g_nmi->_aniMan->setOXY(1237, 451);
+		g_nmi->_aniMan->_priority = 25;
 	}
 
 	getCurrSceneSc2MotionController()->deactivate();
 	getGameLoaderInteractionController()->disableFlag24();
 
-	g_fp->_aniMan2 = 0;
+	g_nmi->_aniMan2 = 0;
 	g_vars->scene14_sceneDeltaX = 50;
 	g_vars->scene14_sceneDiffX = 100;
 	g_vars->scene14_hitsLeft = 4;
@@ -376,29 +376,29 @@ void sceneHandler14_startArcade() {
 
 	chainQueue(QU_SC14_STARTARCADE, 0);
 
-	g_fp->_updateScreenCallback = sceneHandler14_updateScreenCallback;
+	g_nmi->_updateScreenCallback = sceneHandler14_updateScreenCallback;
 }
 
 void sceneHandler14_clearCallback() {
-	g_fp->_aniMan->_callback2 = 0; // Really NULL
+	g_nmi->_aniMan->_callback2 = 0; // Really NULL
 	g_vars->scene14_dudeIsKicking = false;
 }
 
 void sceneHandler14_kickAnimation() {
-	if (g_fp->_aniMan->_movement) {
+	if (g_nmi->_aniMan->_movement) {
 		sceneHandler14_clearCallback();
 
 		if (g_vars->scene14_flyingBall && g_vars->scene14_dudeX - g_vars->scene14_flyingBall->_ox < 180) {
-			g_fp->_aniMan->changeStatics2(g_fp->_aniMan->_movement->_staticsObj2->_staticsId);
-			g_fp->_aniMan->startAnim(MV_MAN14_KICK, 0, -1);
+			g_nmi->_aniMan->changeStatics2(g_nmi->_aniMan->_movement->_staticsObj2->_staticsId);
+			g_nmi->_aniMan->startAnim(MV_MAN14_KICK, 0, -1);
 
 			g_vars->scene14_ballIsFlying = false;
 
 			g_vars->scene14_flyingBall->stopAnim_maybe();
 			g_vars->scene14_flyingBall->hide();
 		} else {
-			g_fp->_aniMan->changeStatics2(g_fp->_aniMan->_movement->_staticsObj2->_staticsId);
-			g_fp->_aniMan->startAnim(MV_MAN14_KICKAIR, 0, -1);
+			g_nmi->_aniMan->changeStatics2(g_nmi->_aniMan->_movement->_staticsObj2->_staticsId);
+			g_nmi->_aniMan->startAnim(MV_MAN14_KICKAIR, 0, -1);
 		}
 	}
 }
@@ -407,10 +407,10 @@ void sceneHandler14_declineCallback(int *arg) {
 	Common::Point point;
 
 	if (g_vars->scene14_dudeIsKicking) {
-		*arg = (int)(sqrt((double)(g_fp->_mouseVirtY - g_vars->scene14_mouseCursorPos.y)
-							 * (g_fp->_mouseVirtY - g_vars->scene14_mouseCursorPos.y)
-					+ (g_fp->_mouseVirtX - g_vars->scene14_mouseCursorPos.x)
-							 * (g_fp->_mouseVirtX - g_vars->scene14_mouseCursorPos.x)) * 0.1);
+		*arg = (int)(sqrt((double)(g_nmi->_mouseVirtY - g_vars->scene14_mouseCursorPos.y)
+							 * (g_nmi->_mouseVirtY - g_vars->scene14_mouseCursorPos.y)
+					+ (g_nmi->_mouseVirtX - g_vars->scene14_mouseCursorPos.x)
+							 * (g_nmi->_mouseVirtX - g_vars->scene14_mouseCursorPos.x)) * 0.1);
 
 		if (*arg > 11)
 			*arg = 11;
@@ -420,12 +420,12 @@ void sceneHandler14_declineCallback(int *arg) {
 }
 
 void sceneHandler14_dudeDecline() {
-	g_vars->scene14_mouseCursorPos.x = g_fp->_mouseVirtX;
-	g_vars->scene14_mouseCursorPos.y = g_fp->_mouseVirtY;
+	g_vars->scene14_mouseCursorPos.x = g_nmi->_mouseVirtX;
+	g_vars->scene14_mouseCursorPos.y = g_nmi->_mouseVirtY;
 
-	g_fp->_aniMan->_callback2 = sceneHandler14_declineCallback;
-	g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
-	g_fp->_aniMan->startAnim(MV_MAN14_DECLINE, 0, -1);
+	g_nmi->_aniMan->_callback2 = sceneHandler14_declineCallback;
+	g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+	g_nmi->_aniMan->startAnim(MV_MAN14_DECLINE, 0, -1);
 
 	g_vars->scene14_dudeIsKicking = true;
 }
@@ -439,7 +439,7 @@ bool sceneHandler14_arcadeProcessClick(ExCommand *cmd) {
 			if (g_vars->scene14_pink) {
 				if (g_vars->scene14_pink->_flags & 4) {
 					if (cmd->_sceneClickX < g_vars->scene14_pink->_ox + 40) {
-						handleObjectInteraction(g_fp->_aniMan, g_vars->scene14_pink, 0);
+						handleObjectInteraction(g_nmi->_aniMan, g_vars->scene14_pink, 0);
 						cmd->_messageKind = 0;
 						return true;
 					}
@@ -458,7 +458,7 @@ bool sceneHandler14_arcadeProcessClick(ExCommand *cmd) {
 	if (cmd->_sceneClickX > 1237)
 		return false;
 
-	MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 1237, 451, 1, 0);
+	MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 1237, 451, 1, 0);
 
 	if (!mq)
 		return false;
@@ -469,7 +469,7 @@ bool sceneHandler14_arcadeProcessClick(ExCommand *cmd) {
 	mq->addExCommandToEnd(ex);
 	mq->setFlags(mq->getFlags() | 1);
 
-	postExCommand(g_fp->_aniMan->_id, 2, 1237, 451, 0, -1);
+	postExCommand(g_nmi->_aniMan->_id, 2, 1237, 451, 0, -1);
 
 	cmd->_messageKind = 0;
 
@@ -498,7 +498,7 @@ void sceneHandler14_passToGrandma() {
 	g_vars->scene14_flyingBall->stopAnim_maybe();
 	g_vars->scene14_flyingBall->_priority = 27;
 
-	MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+	MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 	ExCommand *ex = new ExCommand(ANI_BALL14, 1, MV_BAL14_FALL, 0, 0, 0, 1, 0, 0, 0);
 
 	ex->_param = g_vars->scene14_flyingBall->_odelay;
@@ -538,17 +538,17 @@ void sceneHandler14_grandmaJumpThrow() {
 	mq->chain(0);
 
 	g_vars->scene14_dude2X += 71;
-	g_fp->_currentScene->_x = 71;
+	g_nmi->_currentScene->_x = 71;
 
-	g_fp->_aniMan2 = g_fp->_aniMan;
+	g_nmi->_aniMan2 = g_nmi->_aniMan;
 }
 
 void sceneHandler14_dudeFall() {
-	if (!g_fp->_aniMan->_movement || g_fp->_aniMan->_movement->_id != MV_MAN14_FALL) {
+	if (!g_nmi->_aniMan->_movement || g_nmi->_aniMan->_movement->_id != MV_MAN14_FALL) {
 		sceneHandler14_clearCallback();
 
-		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
-		g_fp->_aniMan->startAnim(MV_MAN14_FALL, 0, -1);
+		g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+		g_nmi->_aniMan->startAnim(MV_MAN14_FALL, 0, -1);
 		g_vars->scene14_flyingBall->stopAnim_maybe();
 		g_vars->scene14_flyingBall->hide();
 
@@ -558,13 +558,13 @@ void sceneHandler14_dudeFall() {
 }
 
 void sceneHandler14_grandmaStepForward() {
-	g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
-	g_fp->_aniMan->startAnim(MV_MAN14_STEPFW, 0, -1);
+	g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+	g_nmi->_aniMan->startAnim(MV_MAN14_STEPFW, 0, -1);
 
 	g_vars->scene14_dude2X -= 71;
 
-	g_fp->_currentScene->_x = -71;
-	g_fp->_aniMan2 = g_vars->scene14_grandma;
+	g_nmi->_currentScene->_x = -71;
+	g_nmi->_aniMan2 = g_vars->scene14_grandma;
 }
 
 void sceneHandler14_arcadeLogic() {
@@ -580,7 +580,7 @@ void sceneHandler14_arcadeLogic() {
 		sceneHandler14_clearCallback();
 
 		g_vars->scene14_dudeCanKick = false;
-		g_fp->_aniMan2 = 0;
+		g_nmi->_aniMan2 = 0;
 
 		chainQueue(QU_SC14_WINARCADE, 1);
 
@@ -591,7 +591,7 @@ void sceneHandler14_arcadeLogic() {
 		g_vars->scene14_grandma->changeStatics2(ST_GMA_SIT);
 
 		if (g_vars->scene14_hitsLeft != 3 || g_vars->scene14_pink) {
-			MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+			MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
 			ex = new ExCommand(ANI_GRANDMA, 1, MV_GMA_BACKOFF, 0, 0, 0, 1, 0, 0, 0);
 			ex->_excFlags |= 2;
@@ -603,7 +603,7 @@ void sceneHandler14_arcadeLogic() {
 
 			mq->chain(0);
 		} else {
-			MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+			MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
 			ex = new ExCommand(ANI_GRANDMA, 1, MV_GMA_BACKOFF2, 0, 0, 0, 1, 0, 0, 0);
 			ex->_excFlags |= 2;
@@ -666,7 +666,7 @@ int sceneHandler14(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_clickButton();
+		g_nmi->lift_clickButton();
 		break;
 
 	case MSG_SC14_SHOWBALLGMAHIT:
@@ -686,7 +686,7 @@ int sceneHandler14(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_GO:
-		g_fp->lift_goAnimation();
+		g_nmi->lift_goAnimation();
 		break;
 
 	case MSG_SC14_GMAJUMP:
@@ -694,20 +694,20 @@ int sceneHandler14(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLOSEDOOR:
-		g_fp->lift_closedoorSeq();
+		g_nmi->lift_closedoorSeq();
 		break;
 
 	case MSG_LIFT_EXITLIFT:
-		g_fp->lift_exitSeq(cmd);
+		g_nmi->lift_exitSeq(cmd);
 		break;
 
 	case MSG_LIFT_STARTEXITQUEUE:
-		g_fp->lift_startExitQueue();
+		g_nmi->lift_startExitQueue();
 		break;
 
 	case MSG_SC14_RESTORESCROLL:
-		g_fp->_aniMan2 = g_fp->_aniMan;
-		g_fp->_scrollSpeed = 8;
+		g_nmi->_aniMan2 = g_nmi->_aniMan;
+		g_nmi->_scrollSpeed = 8;
 		break;
 
 	case MSG_CMN_WINARCADE:
@@ -715,9 +715,9 @@ int sceneHandler14(ExCommand *cmd) {
 		break;
 
 	case MSG_SC14_SCROLLLEFT:
-		g_fp->_aniMan2 = 0;
-		g_fp->_currentScene->_x = -g_fp->_sceneRect.left;
-		g_fp->_scrollSpeed = 24;
+		g_nmi->_aniMan2 = 0;
+		g_nmi->_currentScene->_x = -g_nmi->_sceneRect.left;
+		g_nmi->_scrollSpeed = 24;
 		break;
 
 	case MSG_SC14_SHOWBALLLAST:
@@ -735,7 +735,7 @@ int sceneHandler14(ExCommand *cmd) {
 		break;
 
 	case MSG_SC14_GMATOTRUBA:
-		g_fp->_currentScene->_x = -g_fp->_sceneRect.left;
+		g_nmi->_currentScene->_x = -g_nmi->_sceneRect.left;
 		break;
 
 	case MSG_SC14_STARTARCADE:
@@ -749,22 +749,22 @@ int sceneHandler14(ExCommand *cmd) {
 		break;
 
 	case 64:
-		g_fp->lift_hoverButton(cmd);
+		g_nmi->lift_hoverButton(cmd);
 		break;
 
 	case 33:
 		{
-			Movement *mov = g_fp->_aniMan->_movement;
+			Movement *mov = g_nmi->_aniMan->_movement;
 
 			if (mov) {
 				g_vars->scene14_dudeX = mov->_ox;
 				g_vars->scene14_dudeY = mov->_oy;
 
 				if (mov->_id == MV_MAN14_KICK)
-					g_vars->scene14_dudeX = mov->_ox + 2 * g_fp->_aniMan->_movement->_currDynamicPhaseIndex;
+					g_vars->scene14_dudeX = mov->_ox + 2 * g_nmi->_aniMan->_movement->_currDynamicPhaseIndex;
 			} else {
-				g_vars->scene14_dudeX = g_fp->_aniMan->_ox;
-				g_vars->scene14_dudeY = g_fp->_aniMan->_oy;
+				g_vars->scene14_dudeX = g_nmi->_aniMan->_ox;
+				g_vars->scene14_dudeY = g_nmi->_aniMan->_oy;
 			}
 
 			mov = g_vars->scene14_grandma->_movement;
@@ -776,26 +776,26 @@ int sceneHandler14(ExCommand *cmd) {
 				g_vars->scene14_grandmaY = g_vars->scene14_grandma->_oy;
 			}
 
-			if (g_fp->_aniMan2) {
-				int x = g_fp->_aniMan2->_ox;
+			if (g_nmi->_aniMan2) {
+				int x = g_nmi->_aniMan2->_ox;
 				g_vars->scene14_dude2X = x;
 
-				if (x < g_fp->_sceneRect.left + g_vars->scene14_sceneDeltaX) {
-					g_fp->_currentScene->_x = x - g_vars->scene14_sceneDiffX - g_fp->_sceneRect.left;
+				if (x < g_nmi->_sceneRect.left + g_vars->scene14_sceneDeltaX) {
+					g_nmi->_currentScene->_x = x - g_vars->scene14_sceneDiffX - g_nmi->_sceneRect.left;
 					x = g_vars->scene14_dude2X;
 				}
 
-				if (x > g_fp->_sceneRect.right - g_vars->scene14_sceneDeltaX)
-					g_fp->_currentScene->_x = x + g_vars->scene14_sceneDiffX - g_fp->_sceneRect.right;
+				if (x > g_nmi->_sceneRect.right - g_vars->scene14_sceneDeltaX)
+					g_nmi->_currentScene->_x = x + g_vars->scene14_sceneDiffX - g_nmi->_sceneRect.right;
 
-				g_fp->sceneAutoScrolling();
+				g_nmi->sceneAutoScrolling();
 			}
 
 			if (g_vars->scene14_ballIsFlying)
 				sceneHandler14_animateBall();
 
-			g_fp->_behaviorManager->updateBehaviors();
-			g_fp->startSceneTrack();
+			g_nmi->_behaviorManager->updateBehaviors();
+			g_nmi->startSceneTrack();
 		}
 		break;
 
@@ -812,28 +812,28 @@ int sceneHandler14(ExCommand *cmd) {
 
 	case 29:
 		if (g_vars->scene14_arcadeIsOn) {
-			if (g_vars->scene14_dudeCanKick && g_fp->_aniMan->isPixelHitAtPos(cmd->_sceneClickX, cmd->_sceneClickY) && !g_fp->_aniMan->_movement) {
+			if (g_vars->scene14_dudeCanKick && g_nmi->_aniMan->isPixelHitAtPos(cmd->_sceneClickX, cmd->_sceneClickY) && !g_nmi->_aniMan->_movement) {
 				sceneHandler14_dudeDecline();
 				break;
 			}
 		} else {
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (ani && ani->_id == ANI_LIFTBUTTON) {
-				g_fp->lift_animateButton(ani);
+				g_nmi->lift_animateButton(ani);
 				cmd->_messageKind = 0;
 				break;
 			}
 
-			if (!sceneHandler14_arcadeProcessClick(cmd) && (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param))) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			if (!sceneHandler14_arcadeProcessClick(cmd) && (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param))) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-							|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+							|| (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0)) {
+						g_nmi->processArcade(cmd);
 						sceneHandler14_arcadeProcessClick(cmd);
 						break;
 					}
diff --git a/engines/ngi/fullpipe/scene15.cpp b/engines/ngi/fullpipe/scene15.cpp
index 424e9293e5..c63b73b6c8 100644
--- a/engines/ngi/fullpipe/scene15.cpp
+++ b/engines/ngi/fullpipe/scene15.cpp
@@ -41,40 +41,40 @@ void scene15_initScene(Scene *sc) {
 
 	StaticANIObject *grandma = sc->getStaticANIObject1ById(ANI_GRANDMA_ASS, -1);
 
-	Scene *oldsc = g_fp->_currentScene;
-	g_fp->_currentScene = sc;
+	Scene *oldsc = g_nmi->_currentScene;
+	g_nmi->_currentScene = sc;
 
-	int grandmaState = g_fp->getObjectState(sO_Grandma);
+	int grandmaState = g_nmi->getObjectState(sO_Grandma);
 
-	if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15)) {
+	if (grandmaState == g_nmi->getObjectEnumState(sO_Grandma, sO_In_15)) {
 		grandma->changeStatics2(ST_GMS_BOOT);
 		grandma->setOXY(97, 399);
-		g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
-	} else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_1)) {
+		g_nmi->setObjectState(sO_LeftPipe_15, g_nmi->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
+	} else if (grandmaState == g_nmi->getObjectEnumState(sO_Grandma, sO_In_15_1)) {
 		grandma->changeStatics2(ST_GMS_BOOT);
 		grandma->setOXY(86, 399);
-		g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
-	} else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_2)) {
+		g_nmi->setObjectState(sO_LeftPipe_15, g_nmi->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
+	} else if (grandmaState == g_nmi->getObjectEnumState(sO_Grandma, sO_In_15_2)) {
 		grandma->changeStatics2(ST_GMS_BOOT);
 		grandma->setOXY(71, 399);
-		g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
-	} else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_In_15_3)) {
+		g_nmi->setObjectState(sO_LeftPipe_15, g_nmi->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
+	} else if (grandmaState == g_nmi->getObjectEnumState(sO_Grandma, sO_In_15_3)) {
 		grandma->changeStatics2(ST_GMS_BOOT);
 		grandma->setOXY(49, 399);
-		g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
-	} else if (grandmaState == g_fp->getObjectEnumState(sO_Grandma, sO_WithoutBoot)) {
+		g_nmi->setObjectState(sO_LeftPipe_15, g_nmi->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
+	} else if (grandmaState == g_nmi->getObjectEnumState(sO_Grandma, sO_WithoutBoot)) {
 		grandma->changeStatics2(ST_GMS_BOOT);
 		grandma->setOXY(97, 399);
 		grandma->changeStatics2(ST_GMS_BOOTLESS2);
-		g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
+		g_nmi->setObjectState(sO_LeftPipe_15, g_nmi->getObjectEnumState(sO_LeftPipe_15, sO_IsClosed));
 	} else {
 		grandma->hide();
-		g_fp->setObjectState(sO_LeftPipe_15, g_fp->getObjectEnumState(sO_LeftPipe_15, sO_IsOpened));
+		g_nmi->setObjectState(sO_LeftPipe_15, g_nmi->getObjectEnumState(sO_LeftPipe_15, sO_IsOpened));
 	}
 
 	g_vars->scene15_plusminus = sc->getStaticANIObject1ById(ANI_PLUSMINUS, -1);
 
-	if (g_fp->getObjectState(sO_Guard_2) == g_fp->getObjectEnumState(sO_Guard_2, sO_Off))
+	if (g_nmi->getObjectState(sO_Guard_2) == g_nmi->getObjectEnumState(sO_Guard_2, sO_Off))
 		g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_MINUS);
 	else
 		g_vars->scene15_plusminus->_statics = g_vars->scene15_plusminus->getStaticsById(ST_PMS_PLUS);
@@ -82,22 +82,22 @@ void scene15_initScene(Scene *sc) {
  	g_vars->scene15_ladder = sc->getPictureObjectById(PIC_SC15_LADDER, 0);
 	g_vars->scene15_boot = sc->getStaticANIObject1ById(ANI_BOOT_15, -1);
 
-	if (g_fp->getObjectState(sO_Boot_15) != g_fp->getObjectEnumState(sO_Boot_15, sO_IsPresent))
+	if (g_nmi->getObjectState(sO_Boot_15) != g_nmi->getObjectEnumState(sO_Boot_15, sO_IsPresent))
 		g_vars->scene15_boot->_flags &= 0xFFFB;
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
-	g_fp->lift_setButton(sO_Level5, ST_LBN_5N);
-	g_fp->lift_init(sc, QU_SC15_ENTERLIFT, QU_SC15_EXITLIFT);
+	g_nmi->lift_setButton(sO_Level5, ST_LBN_5N);
+	g_nmi->lift_init(sc, QU_SC15_ENTERLIFT, QU_SC15_EXITLIFT);
 }
 
 int scene15_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_cursorId == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC15_LTRUBA)
-		g_fp->_cursorId = PIC_CSR_GOL;
+	if (g_nmi->_cursorId == PIC_CSR_ITN && g_nmi->_objectIdAtCursor == PIC_SC15_LTRUBA)
+		g_nmi->_cursorId = PIC_CSR_GOL;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 int sceneHandler15(ExCommand *cmd) {
@@ -106,15 +106,15 @@ int sceneHandler15(ExCommand *cmd) {
 
 	switch(cmd->_messageNum) {
 	case MSG_LIFT_CLOSEDOOR:
-		g_fp->lift_closedoorSeq();
+		g_nmi->lift_closedoorSeq();
 		break;
 
 	case MSG_LIFT_EXITLIFT:
-		g_fp->lift_exitSeq(cmd);
+		g_nmi->lift_exitSeq(cmd);
 		break;
 
 	case MSG_LIFT_STARTEXITQUEUE:
-		g_fp->lift_startExitQueue();
+		g_nmi->lift_startExitQueue();
 		break;
 
 	case MSG_SC4_HIDEBOOT:
@@ -122,16 +122,16 @@ int sceneHandler15(ExCommand *cmd) {
 		break;
 
 	case MSG_SC15_STOPCHANTING:
-		g_fp->stopAllSoundInstances(SND_15_001);
+		g_nmi->stopAllSoundInstances(SND_15_001);
 
 		g_vars->scene15_chantingCountdown = 120;
 		break;
 
 	case MSG_SC15_ASSDRYG:
-		if (g_fp->_rnd.getRandomNumber(1)) {
-			g_fp->playSound(SND_15_011, 0);
+		if (g_nmi->_rnd.getRandomNumber(1)) {
+			g_nmi->playSound(SND_15_011, 0);
 		} else {
-			g_fp->playSound(SND_15_006, 0);
+			g_nmi->playSound(SND_15_006, 0);
 		}
 		break;
 
@@ -140,11 +140,11 @@ int sceneHandler15(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_GO:
-		g_fp->lift_goAnimation();
+		g_nmi->lift_goAnimation();
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_clickButton();
+		g_nmi->lift_clickButton();
 		break;
 
 	case MSG_SC15_PULL:
@@ -156,22 +156,22 @@ int sceneHandler15(ExCommand *cmd) {
 		break;
 
 	case 64:
-		g_fp->lift_hoverButton(cmd);
+		g_nmi->lift_hoverButton(cmd);
 		break;
 
 	case 29:
 		{
-			if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC15_LADDER) {
-				handleObjectInteraction(g_fp->_aniMan, g_fp->_currentScene->getPictureObjectById(PIC_SC15_DTRUBA, 0), cmd->_param);
+			if (g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC15_LADDER) {
+				handleObjectInteraction(g_nmi->_aniMan, g_nmi->_currentScene->getPictureObjectById(PIC_SC15_DTRUBA, 0), cmd->_param);
 				cmd->_messageKind = 0;
 
 				return 0;
 			}
 
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (ani && ani->_id == ANI_LIFTBUTTON) {
-				g_fp->lift_animateButton(ani);
+				g_nmi->lift_animateButton(ani);
 
 				cmd->_messageKind = 0;
 			}
@@ -183,24 +183,24 @@ int sceneHandler15(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
 		if (g_vars->scene15_chantingCountdown > 0) {
 			g_vars->scene15_chantingCountdown--;
 
 			if (!g_vars->scene15_chantingCountdown)
-				g_fp->playSound(SND_15_001, 1);
+				g_nmi->playSound(SND_15_001, 1);
 		}
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 		break;
 
 	default:
diff --git a/engines/ngi/fullpipe/scene16.cpp b/engines/ngi/fullpipe/scene16.cpp
index 1f9c83e3e2..456b2712f1 100644
--- a/engines/ngi/fullpipe/scene16.cpp
+++ b/engines/ngi/fullpipe/scene16.cpp
@@ -48,7 +48,7 @@ void scene16_initScene(Scene *sc) {
 	g_vars->scene16_girlIsLaughing = false;
 	g_vars->scene16_sound = SND_16_034;
 
-	if (g_fp->getObjectState(sO_Bridge) == g_fp->getObjectEnumState(sO_Bridge, sO_Convoluted)) {
+	if (g_nmi->getObjectState(sO_Bridge) == g_nmi->getObjectEnumState(sO_Bridge, sO_Convoluted)) {
 		g_vars->scene16_placeIsOccupied = true;
 
 		StaticANIObject *boy[2];
@@ -80,24 +80,24 @@ void scene16_initScene(Scene *sc) {
 				idx = 0;
 		}
 	} else {
-		g_fp->setObjectState(sO_Girl, g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
+		g_nmi->setObjectState(sO_Girl, g_nmi->getObjectEnumState(sO_Girl, sO_IsSwinging));
 
 		g_vars->scene16_placeIsOccupied = false;
 
-		StaticANIObject *ani = new StaticANIObject(g_fp->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1));
+		StaticANIObject *ani = new StaticANIObject(g_nmi->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1));
 		ani->_movement = 0;
 		ani->_statics = ani->_staticsList[0];
 		sc->addStaticANIObject(ani, 1);
 	}
 
-	if (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsLaughing)) {
+	if (g_nmi->getObjectState(sO_Girl) == g_nmi->getObjectEnumState(sO_Girl, sO_IsLaughing)) {
 		StaticANIObject *girl = sc->getStaticANIObject1ById(ANI_GIRL, -1);
 
 		girl->show1(554, 432, MV_GRL_LAUGH_POPA, 0);
 		girl->_priority = 20;
 	}
 
-	if (g_fp->getObjectState(sO_Cup) == g_fp->getObjectEnumState(sO_Cup, sO_In_16)) {
+	if (g_nmi->getObjectState(sO_Cup) == g_nmi->getObjectEnumState(sO_Cup, sO_In_16)) {
 		g_vars->scene16_mug->_statics = g_vars->scene16_mug->getStaticsById(ST_MUG_EMPTY);
 		g_vars->scene16_mug->_movement = 0;
 		g_vars->scene16_mug->setOXY(409, 459);
@@ -107,17 +107,17 @@ void scene16_initScene(Scene *sc) {
 }
 
 int scene16_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor == PIC_SC16_TUMBA) {
-		if (g_fp->_cursorId == PIC_CSR_DEFAULT)
-			g_fp->_cursorId = PIC_CSR_ITN;
+	if (g_nmi->_objectIdAtCursor == PIC_SC16_TUMBA) {
+		if (g_nmi->_cursorId == PIC_CSR_DEFAULT)
+			g_nmi->_cursorId = PIC_CSR_ITN;
 	} else {
-		if (g_fp->_objectIdAtCursor == ANI_MUG && g_fp->_cursorId == PIC_CSR_ITN && g_vars->scene16_mug->_statics->_staticsId == ST_MUG_FULL)
-			g_fp->_cursorId = PIC_CSR_ITN_GREEN;
+		if (g_nmi->_objectIdAtCursor == ANI_MUG && g_nmi->_cursorId == PIC_CSR_ITN && g_vars->scene16_mug->_statics->_staticsId == ST_MUG_FULL)
+			g_nmi->_cursorId = PIC_CSR_ITN_GREEN;
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler16_laughSound() {
@@ -140,12 +140,12 @@ void sceneHandler16_laughSound() {
 
 	g_vars->scene16_sound = snd;
 
-	g_fp->playSound(snd, 0);
+	g_nmi->playSound(snd, 0);
 }
 
 void sceneHandler16_showBearded() {
-	if (g_fp->getObjectState(sO_Bridge) == g_fp->getObjectEnumState(sO_Bridge, sO_Unconvoluted)) {
-		StaticANIObject *brd = g_fp->_currentScene->getStaticANIObject1ById(ANI_BEARDED_CMN, -1);
+	if (g_nmi->getObjectState(sO_Bridge) == g_nmi->getObjectEnumState(sO_Bridge, sO_Unconvoluted)) {
+		StaticANIObject *brd = g_nmi->_currentScene->getStaticANIObject1ById(ANI_BEARDED_CMN, -1);
 
 		if (!brd || !(brd->_flags & 4))
 			chainQueue(QU_BRD16_STARTBEARDED, 0);
@@ -161,13 +161,13 @@ void sceneHandler16_fillMug() {
 		g_vars->scene16_jettie->_priority = 2;
 		g_vars->scene16_jettie->startAnim(MV_JTI_FLOWIN, 0, -1);
 
-		if (g_fp->_aniMan->_movement) {
-			if (g_fp->_aniMan->_movement->_id == MV_MAN16_TAKEMUG) {
-				g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
+		if (g_nmi->_aniMan->_movement) {
+			if (g_nmi->_aniMan->_movement->_id == MV_MAN16_TAKEMUG) {
+				g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT);
 
 				g_vars->scene16_mug->show1(-1, -1, -1, 0);
 
-				g_fp->setObjectState(sO_Cup, g_fp->getObjectEnumState(sO_Cup, sO_DudeHas));
+				g_nmi->setObjectState(sO_Cup, g_nmi->getObjectEnumState(sO_Cup, sO_DudeHas));
 			}
 		}
 		return;
@@ -180,7 +180,7 @@ void sceneHandler16_fillMug() {
 		g_vars->scene16_jettie->startAnim(MV_JTI_FLOWBY, 0, -1);
 
 		if (g_vars->scene16_walkingBoy) {
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_BOYOUT), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_BOYOUT), 0, 1);
 
 			mq->setParamInt(-1, g_vars->scene16_walkingBoy->_odelay);
 			if (mq->chain(g_vars->scene16_walkingBoy))
@@ -189,7 +189,7 @@ void sceneHandler16_fillMug() {
 			if (!g_vars->scene16_walkingGirl)
 				return;
 
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GIRLOUT), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_GIRLOUT), 0, 1);
 
 			mq->setParamInt(-1, g_vars->scene16_walkingGirl->_odelay);
 			if (mq->chain(g_vars->scene16_walkingGirl))
@@ -207,7 +207,7 @@ void sceneHandler16_fillMug() {
 	StaticANIObject *ani;
 
 	if (g_vars->scene16_walkingBoy) {
-		mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_BOYOUT), 0, 1);
+		mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_BOYOUT), 0, 1);
 
 		mq->setParamInt(-1, g_vars->scene16_walkingBoy->_odelay);
 
@@ -216,7 +216,7 @@ void sceneHandler16_fillMug() {
 		if (!g_vars->scene16_walkingGirl)
 			return;
 
-		mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GIRLOUT), 0, 1);
+		mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_GIRLOUT), 0, 1);
 
 		mq->setParamInt(-1, g_vars->scene16_walkingGirl->_odelay);
 		ani = g_vars->scene16_walkingGirl;
@@ -227,17 +227,17 @@ void sceneHandler16_fillMug() {
 }
 
 void sceneHandler16_startLaugh() {
-	StaticANIObject *girl = g_fp->_currentScene->getStaticANIObject1ById(ANI_GIRL, -1);
+	StaticANIObject *girl = g_nmi->_currentScene->getStaticANIObject1ById(ANI_GIRL, -1);
 
 	girl->changeStatics2(ST_GRL_STAND);
 
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GIRLLAUGH), 0, 1);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_GIRLLAUGH), 0, 1);
 
 	mq->setParamInt(-1, girl->_odelay);
 	mq->setFlags(mq->getFlags() | 1);
 	mq->chain(0);
 
-	g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->setSubVarAsInt(sO_DudeSwinged, 0);
+	g_nmi->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->setSubVarAsInt(sO_DudeSwinged, 0);
 
 	g_vars->scene16_girlIsLaughing = true;
 }
@@ -252,12 +252,12 @@ void sceneHandler16_drink() {
 						ExCommand *ex;
 
 						if (g_vars->scene16_walkingBoy) {
-							g_fp->_aniMan->_flags |= 0x180;
+							g_nmi->_aniMan->_flags |= 0x180;
 
 							g_vars->scene16_walkingBoy->changeStatics2(ST_BOY_STAND);
 							g_vars->scene16_walkingBoy->queueMessageQueue(0);
 
-							mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_BOYKICK), 0, 1);
+							mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_BOYKICK), 0, 1);
 
 							mq->setParamInt(-1, g_vars->scene16_walkingBoy->_odelay);
 
@@ -270,9 +270,9 @@ void sceneHandler16_drink() {
 							mq->setFlags(mq->getFlags() | 1);
 							mq->chain(0);
 						} else {
-							g_fp->_aniMan->_flags |= 0x100;
+							g_nmi->_aniMan->_flags |= 0x100;
 
-							mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_MANDRINK), 0, 1);
+							mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_MANDRINK), 0, 1);
 
 							ex = new ExCommand(ANI_MAN, 34, 256, 0, 0, 0, 1, 0, 0, 0);
 							ex->_excFlags |= 3u;
@@ -283,12 +283,12 @@ void sceneHandler16_drink() {
 							mq->setFlags(mq->getFlags() | 1);
 							mq->chain(0);
 
-							g_fp->_currentScene->getStaticANIObject1ById(ANI_GIRL, -1)->changeStatics2(ST_GRL_STAND);
+							g_nmi->_currentScene->getStaticANIObject1ById(ANI_GIRL, -1)->changeStatics2(ST_GRL_STAND);
 						}
 
-						g_fp->_currentScene->getStaticANIObject1ById(ANI_WIRE16, -1)->show1(-1, -1, -1, 0);
+						g_nmi->_currentScene->getStaticANIObject1ById(ANI_WIRE16, -1)->show1(-1, -1, -1, 0);
 					} else {
-						chainObjQueue(g_fp->_aniMan, QU_SC16_TAKEMUG, 1);
+						chainObjQueue(g_nmi->_aniMan, QU_SC16_TAKEMUG, 1);
 					}
 				}
 			}
@@ -297,16 +297,16 @@ void sceneHandler16_drink() {
 }
 
 void sceneHandler16_mugClick() {
-	if (abs(310 - g_fp->_aniMan->_ox) >= 1 || abs(449 - g_fp->_aniMan->_oy) >= 1
-		|| g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
-		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 310, 449, 1, ST_MAN_RIGHT);
+	if (abs(310 - g_nmi->_aniMan->_ox) >= 1 || abs(449 - g_nmi->_aniMan->_oy) >= 1
+		|| g_nmi->_aniMan->_movement || g_nmi->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 310, 449, 1, ST_MAN_RIGHT);
 
 		if (mq) {
 			ExCommand *ex = new ExCommand(0, 17, MSG_SC16_MUGCLICK, 0, 0, 0, 1, 0, 0, 0);
 			ex->_excFlags = 2;
 			mq->addExCommandToEnd(ex);
 
-			postExCommand(g_fp->_aniMan->_id, 2, 310, 449, 0, -1);
+			postExCommand(g_nmi->_aniMan->_id, 2, 310, 449, 0, -1);
 		}
 	} else {
 		sceneHandler16_drink();
@@ -314,8 +314,8 @@ void sceneHandler16_mugClick() {
 }
 
 void sceneHandler16_showMan() {
-	g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
-	g_fp->_aniMan->show1(-1, -1, -1, 0);
+	g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT);
+	g_nmi->_aniMan->show1(-1, -1, -1, 0);
 
 	g_vars->scene16_mug->show1(-1, -1, -1, 0);
 }
@@ -325,8 +325,8 @@ void sceneHandler16_showMug() {
 }
 
 void sceneHandler16_hideMan() {
-	g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
-	g_fp->_aniMan->hide();
+	g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT);
+	g_nmi->_aniMan->hide();
 
 	g_vars->scene16_mug->hide();
 }
@@ -360,7 +360,7 @@ void sceneHandler16_putOnWheel() {
 		MessageQueue *mq;
 
 		if (ani->_id == ANI_BOY) {
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GOBOY), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_GOBOY), 0, 1);
 
 			mq->setParamInt(-1, ani->_odelay);
 			mq->chain(0);
@@ -368,8 +368,8 @@ void sceneHandler16_putOnWheel() {
 			g_vars->scene16_walkingBoy = ani;
 			g_vars->scene16_walkingGirl = 0;
 		} else if (ani->_id == ANI_GIRL) {
-			if (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging)) {
-				mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC16_GOGIRL), 0, 1);
+			if (g_nmi->getObjectState(sO_Girl) == g_nmi->getObjectEnumState(sO_Girl, sO_IsSwinging)) {
+				mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC16_GOGIRL), 0, 1);
 
 				mq->setParamInt(-1, ani->_odelay);
 				mq->chain(0);
@@ -382,7 +382,7 @@ void sceneHandler16_putOnWheel() {
 }
 
 void sceneHandler16_girlROTFL() {
-	StaticANIObject *girl = g_fp->_currentScene->getStaticANIObject1ById(ANI_GIRL, -1);
+	StaticANIObject *girl = g_nmi->_currentScene->getStaticANIObject1ById(ANI_GIRL, -1);
 
 	girl->changeStatics2(ST_GRL_LAUGH);
 	girl->startAnim(MV_GRL_FALL, 0, -1);
@@ -416,7 +416,7 @@ int sceneHandler16(ExCommand *cmd) {
 		break;
 
 	case MSG_SC16_MUGCLICK:
-		if (!g_fp->_aniMan->isIdle() || g_fp->_aniMan->_flags & 0x100) {
+		if (!g_nmi->_aniMan->isIdle() || g_nmi->_aniMan->_flags & 0x100) {
 			cmd->_messageKind = 0;
 		} else {
 			sceneHandler16_mugClick();
@@ -448,14 +448,14 @@ int sceneHandler16(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
 		if (g_vars->scene16_placeIsOccupied) {
@@ -469,13 +469,13 @@ int sceneHandler16(ExCommand *cmd) {
 		}
 
 		if (g_vars->scene16_girlIsLaughing) {
-			if (g_fp->_aniMan->_movement)
-				if (g_fp->_aniMan->_movement->_id == MV_MAN_TURN_RL)
+			if (g_nmi->_aniMan->_movement)
+				if (g_nmi->_aniMan->_movement->_id == MV_MAN_TURN_RL)
 					sceneHandler16_girlROTFL();
 		}
 
-		g_fp->_behaviorManager->updateBehaviors();
-		g_fp->startSceneTrack();
+		g_nmi->_behaviorManager->updateBehaviors();
+		g_nmi->startSceneTrack();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene17.cpp b/engines/ngi/fullpipe/scene17.cpp
index 0957d641a2..d91e6c2d3b 100644
--- a/engines/ngi/fullpipe/scene17.cpp
+++ b/engines/ngi/fullpipe/scene17.cpp
@@ -45,53 +45,53 @@ void scene17_initScene(Scene *sc) {
 }
 
 void scene17_restoreState() {
-	if (g_fp->getObjectState(sO_UsherHand) == g_fp->getObjectEnumState(sO_UsherHand, sO_WithCoin)) {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 0);
+	if (g_nmi->getObjectState(sO_UsherHand) == g_nmi->getObjectEnumState(sO_UsherHand, sO_WithCoin)) {
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 0);
 
 		g_vars->scene17_handPhase = false;
 	} else {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 1);
 
 		g_vars->scene17_handPhase = true;
 	}
 
-	g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_17"));
+	g_nmi->_floaters->init(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_17"));
 
-	g_vars->scene17_flyState = g_fp->getObjectState(sO_Fly_17);
+	g_vars->scene17_flyState = g_nmi->getObjectState(sO_Fly_17);
 
 	if (g_vars->scene17_flyState <= 0 ) {
-		g_vars->scene17_flyCountdown = g_fp->_rnd.getRandomNumber(600) + 600;
+		g_vars->scene17_flyCountdown = g_nmi->_rnd.getRandomNumber(600) + 600;
 
-		g_vars->scene17_flyState = g_fp->_rnd.getRandomNumber(4) + 1;
+		g_vars->scene17_flyState = g_nmi->_rnd.getRandomNumber(4) + 1;
 	}
 
-	g_fp->setObjectState(sO_Fly_17, g_vars->scene17_flyState - 1);
+	g_nmi->setObjectState(sO_Fly_17, g_vars->scene17_flyState - 1);
 }
 
 int scene17_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor != PIC_SC17_RTRUBA2 && g_fp->_objectIdAtCursor != PIC_SC17_RTRUBA)
-		return g_fp->_cursorId;
+	if (g_nmi->_objectIdAtCursor != PIC_SC17_RTRUBA2 && g_nmi->_objectIdAtCursor != PIC_SC17_RTRUBA)
+		return g_nmi->_cursorId;
 
 	if (!g_vars->scene17_handPhase)
-		return g_fp->_cursorId;
+		return g_nmi->_cursorId;
 
-	int item = g_fp->_inventory->getSelectedItemId();
+	int item = g_nmi->_inventory->getSelectedItemId();
 
-	if ((g_fp->_cursorId != PIC_CSR_DEFAULT_INV || item != ANI_INV_COIN) && item != ANI_INV_BOOT && item != ANI_INV_HAMMER)
+	if ((g_nmi->_cursorId != PIC_CSR_DEFAULT_INV || item != ANI_INV_COIN) && item != ANI_INV_BOOT && item != ANI_INV_HAMMER)
 		; // empty
 	else
-		g_fp->_cursorId = PIC_CSR_ITN_INV;
+		g_nmi->_cursorId = PIC_CSR_ITN_INV;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler17_drop() {
-	StaticANIObject *mug = g_fp->_currentScene->getStaticANIObject1ById(ANI_MUG_17, -1);
-	StaticANIObject *jet = g_fp->_currentScene->getStaticANIObject1ById(ANI_JET_17, -1);
+	StaticANIObject *mug = g_nmi->_currentScene->getStaticANIObject1ById(ANI_MUG_17, -1);
+	StaticANIObject *jet = g_nmi->_currentScene->getStaticANIObject1ById(ANI_JET_17, -1);
 
 	if (mug && mug->_flags & 4) {
 		mug->changeStatics2(ST_MUG17_EMPTY);
@@ -103,9 +103,9 @@ void sceneHandler17_drop() {
 }
 
 void sceneHandler17_fillBottle() {
-	StaticANIObject *bottle = g_fp->_currentScene->getStaticANIObject1ById(ANI_INV_BOTTLE, -1);
-	StaticANIObject *mug = g_fp->_currentScene->getStaticANIObject1ById(ANI_MUG_17, -1);
-	StaticANIObject *boot = g_fp->_currentScene->getStaticANIObject1ById(ANI_BOOT_17, -1);
+	StaticANIObject *bottle = g_nmi->_currentScene->getStaticANIObject1ById(ANI_INV_BOTTLE, -1);
+	StaticANIObject *mug = g_nmi->_currentScene->getStaticANIObject1ById(ANI_MUG_17, -1);
+	StaticANIObject *boot = g_nmi->_currentScene->getStaticANIObject1ById(ANI_BOOT_17, -1);
 
 	if (bottle && (bottle->_flags & 4))
 		chainQueue(QU_SC17_FILLBOTTLE, 1);
@@ -131,7 +131,7 @@ void sceneHandler17_showBottle() {
 }
 
 void sceneHandler17_hideSugar() {
-	StaticANIObject *sugar = g_fp->_currentScene->getStaticANIObject1ById(ANI_INV_SUGAR, -1);
+	StaticANIObject *sugar = g_nmi->_currentScene->getStaticANIObject1ById(ANI_INV_SUGAR, -1);
 
 	if (sugar)
 		sugar->hide();
@@ -144,7 +144,7 @@ void sceneHandler17_showSugar() {
 }
 
 void sceneHandler17_moonshineFill() {
-	StaticANIObject *moonshiner = g_fp->_currentScene->getStaticANIObject1ById(ANI_SAMOGONSHCHIK, -1);
+	StaticANIObject *moonshiner = g_nmi->_currentScene->getStaticANIObject1ById(ANI_SAMOGONSHCHIK, -1);
 
 	if (!(moonshiner->_flags & 0x80)) {
 		moonshiner->changeStatics2(ST_SMG_SIT);
@@ -155,11 +155,11 @@ void sceneHandler17_moonshineFill() {
 }
 
 void sceneHandler17_updateFlies() {
-	g_fp->_floaters->genFlies(g_fp->_currentScene, 239, -50, 20, 4);
+	g_nmi->_floaters->genFlies(g_nmi->_currentScene, 239, -50, 20, 4);
 
-	g_fp->_floaters->_array2[0].countdown = g_fp->_rnd.getRandomNumber(5) + 6;
-	g_fp->_floaters->_array2[0].val6 = 239;
-	g_fp->_floaters->_array2[0].val7 = -50;
+	g_nmi->_floaters->_array2[0].countdown = g_nmi->_rnd.getRandomNumber(5) + 6;
+	g_nmi->_floaters->_array2[0].val6 = 239;
+	g_nmi->_floaters->_array2[0].val7 = -50;
 }
 
 
@@ -173,14 +173,14 @@ int sceneHandler17(ExCommand *cmd) {
 		break;
 
 	case MSG_SC17_UPDATEHAND:
-		if (g_fp->getObjectState(sO_UsherHand) == g_fp->getObjectEnumState(sO_UsherHand, sO_WithCoin)) {
-			g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
-			g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 0);
+		if (g_nmi->getObjectState(sO_UsherHand) == g_nmi->getObjectEnumState(sO_UsherHand, sO_WithCoin)) {
+			g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
+			g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 0);
 
 			g_vars->scene17_handPhase = false;
 		} else {
-			g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
-			g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 1);
+			g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
+			g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 1);
 
 			g_vars->scene17_handPhase = true;
 		}
@@ -208,14 +208,14 @@ int sceneHandler17(ExCommand *cmd) {
 
 	case 29:
 		{
-			int pic = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			int pic = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (pic == PIC_SC17_RTRUBA2 || pic == PIC_SC17_RTRUBA) {
 				if (cmd->_param == ANI_INV_COIN || cmd->_param == ANI_INV_BOOT || cmd->_param == ANI_INV_HAMMER) {
 					if (g_vars->scene17_handPhase) {
-						if (g_fp->_aniMan->isIdle()) {
-							if (!(g_fp->_aniMan->_flags & 0x100)) {
-								handleObjectInteraction(g_fp->_aniMan, g_vars->scene17_hand, cmd->_param);
+						if (g_nmi->_aniMan->isIdle()) {
+							if (!(g_nmi->_aniMan->_flags & 0x100)) {
+								handleObjectInteraction(g_nmi->_aniMan, g_vars->scene17_hand, cmd->_param);
 								break;
 							}
 						}
@@ -230,19 +230,19 @@ int sceneHandler17(ExCommand *cmd) {
 			int x = g_vars->scene17_sceneEdgeX;
 			g_vars->scene17_sceneOldEdgeX = g_vars->scene17_sceneEdgeX;
 
-			if (g_fp->_aniMan2) {
-				x = g_fp->_aniMan2->_ox;
+			if (g_nmi->_aniMan2) {
+				x = g_nmi->_aniMan2->_ox;
 
 				g_vars->scene17_sceneEdgeX = x;
 
-				if (x < g_fp->_sceneRect.left + 200) {
-					g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+				if (x < g_nmi->_sceneRect.left + 200) {
+					g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
 					x = g_vars->scene17_sceneEdgeX;
 				}
 
-				if (x > g_fp->_sceneRect.right - 200) {
-					g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+				if (x > g_nmi->_sceneRect.right - 200) {
+					g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 					x = g_vars->scene17_sceneEdgeX;
 				}
 			}
@@ -254,13 +254,13 @@ int sceneHandler17(ExCommand *cmd) {
 
 			if (g_vars->scene17_handPhase) {
 				if (g_vars->scene17_sceneOldEdgeX < 410 && x >= 410) {
-					g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 0);
-					g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_ATTRACT, QU_HND17_ATTRACT, 0);
-					g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 1);
+					g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 0);
+					g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_ATTRACT, QU_HND17_ATTRACT, 0);
+					g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 1);
 				} else if (g_vars->scene17_sceneOldEdgeX > 410 && x <= 410) {
-					g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 1);
-					g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_ATTRACT, QU_HND17_ATTRACT, 1);
-					g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
+					g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_TOCYCLE, 1);
+					g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_ATTRACT, QU_HND17_ATTRACT, 1);
+					g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene17_hand, ST_HND17_EMPTY, QU_HND17_ASK, 0);
 				}
 			}
 
@@ -269,11 +269,11 @@ int sceneHandler17(ExCommand *cmd) {
 			if (!g_vars->scene17_flyCountdown)
 				sceneHandler17_updateFlies();
 
-			g_fp->_floaters->update();
+			g_nmi->_floaters->update();
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
-			g_fp->startSceneTrack();
+			g_nmi->startSceneTrack();
 		}
 		break;
 
diff --git a/engines/ngi/fullpipe/scene18and19.cpp b/engines/ngi/fullpipe/scene18and19.cpp
index 90682e0ccf..f3d6ddeb6e 100644
--- a/engines/ngi/fullpipe/scene18and19.cpp
+++ b/engines/ngi/fullpipe/scene18and19.cpp
@@ -51,14 +51,14 @@ struct Swinger {
 
 
 void scene18_preload() {
-	g_fp->_scene3 = 0;
+	g_nmi->_scene3 = 0;
 
-	for (SceneTagList::iterator s = g_fp->_gameProject->_sceneTagList->begin(); s != g_fp->_gameProject->_sceneTagList->end(); ++s) {
+	for (SceneTagList::iterator s = g_nmi->_gameProject->_sceneTagList->begin(); s != g_nmi->_gameProject->_sceneTagList->end(); ++s) {
 		if (s->_sceneId == SC_18) {
-			g_fp->_scene3 = s->_scene;
+			g_nmi->_scene3 = s->_scene;
 			s->_scene = 0;
 
-			g_fp->_scene3->getStaticANIObject1ById(ANI_WHIRLIGIG_18, -1)->freeMovementsPixelData();
+			g_nmi->_scene3->getStaticANIObject1ById(ANI_WHIRLIGIG_18, -1)->freeMovementsPixelData();
 
 			break;
 		}
@@ -66,19 +66,19 @@ void scene18_preload() {
 }
 
 void scene18_setupEntrance() {
-	GameVar *var = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME");
+	GameVar *var = g_nmi->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME");
 
 	if (var->getSubVarAsInt("Entrance") == TrubaRight)
 		var->setSubVarAsInt("Entrance", TrubaLeft);
 }
 
 void scene19_setSugarState(Scene *sc) {
-	if (g_fp->getObjectState(sO_Sugar) != g_fp->getObjectEnumState(sO_Sugar, sO_Present)) {
-		Scene *oldsc = g_fp->_currentScene;
+	if (g_nmi->getObjectState(sO_Sugar) != g_nmi->getObjectEnumState(sO_Sugar, sO_Present)) {
+		Scene *oldsc = g_nmi->_currentScene;
 
-		g_fp->_currentScene = sc;
+		g_nmi->_currentScene = sc;
 		sc->getStaticANIObject1ById(ANI_CORDIE, -1)->changeStatics2(ST_CDI_EMPTY2);
-		g_fp->_currentScene = oldsc;
+		g_nmi->_currentScene = oldsc;
 	}
 }
 
@@ -92,14 +92,14 @@ void scene19_setMovements(Scene *sc, int entranceId) {
 
 	for (uint i = 0; i < g_vars->scene18_swingers.size(); i++) {
 		if (!g_vars->scene18_enteredTrubaRight && (g_vars->scene18_swingers[i]->sflags & 0x20)) {
-			Scene *oldsc = g_fp->_currentScene;
+			Scene *oldsc = g_nmi->_currentScene;
 
 			g_vars->scene18_swingers[i]->sflags = 1;
 
-			g_fp->_currentScene = sc;
+			g_nmi->_currentScene = sc;
 			g_vars->scene18_swingers[i]->ani->changeStatics2(ST_KSL_NORM);
 			g_vars->scene18_swingers[i]->ani->_priority = 30;
-			g_fp->_currentScene = oldsc;
+			g_nmi->_currentScene = oldsc;
 		}
 
 		sc->deleteStaticANIObject(g_vars->scene18_swingers[i]->ani);
@@ -127,10 +127,10 @@ void scene19_setMovements(Scene *sc, int entranceId) {
 }
 
 void scene19_preload() {
-	for (SceneTagList::iterator s = g_fp->_gameProject->_sceneTagList->begin(); s != g_fp->_gameProject->_sceneTagList->end(); ++s) {
+	for (SceneTagList::iterator s = g_nmi->_gameProject->_sceneTagList->begin(); s != g_nmi->_gameProject->_sceneTagList->end(); ++s) {
 		if (s->_sceneId == SC_18) {
 			delete s->_scene;
-			s->_scene = g_fp->_scene3;
+			s->_scene = g_nmi->_scene3;
 
 			break;
 		}
@@ -142,8 +142,8 @@ void scene18_setupSwingers(StaticANIObject *ani, Scene *sc) {
 
 	g_vars->scene18_swingers.clear();
 
-	Scene *oldsc = g_fp->_currentScene;
-	g_fp->_currentScene = sc;
+	Scene *oldsc = g_nmi->_currentScene;
+	g_nmi->_currentScene = sc;
 
 	for (int i = 0; i < 8; i++) {
 		swinger = new Swinger;
@@ -181,12 +181,12 @@ void scene18_setupSwingers(StaticANIObject *ani, Scene *sc) {
 		else
 			ani->startAnim(MV_KSL_SWING, 0, -1);
 
-		ani->_movement->setDynamicPhaseIndex(g_fp->_rnd.getRandomNumber(17));
+		ani->_movement->setDynamicPhaseIndex(g_nmi->_rnd.getRandomNumber(17));
 
 		g_vars->scene18_swingers.push_back(swinger);
 	}
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 }
 
 void scene18_initScene1(Scene *sc) {
@@ -195,7 +195,7 @@ void scene18_initScene1(Scene *sc) {
 	int oldx = g_vars->scene18_wheelCenterX;
 	int oldy = g_vars->scene18_wheelCenterY;
 
-	g_vars->scene18_girlIsSwinging = (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
+	g_vars->scene18_girlIsSwinging = (g_nmi->getObjectState(sO_Girl) == g_nmi->getObjectEnumState(sO_Girl, sO_IsSwinging));
 
 	if (sc->_sceneId == SC_18) {
 		g_vars->scene18_whirlgig = sc->getStaticANIObject1ById(ANI_WHIRLIGIG_18, -1);
@@ -254,7 +254,7 @@ void scene18_initScene1(Scene *sc) {
 			sndid = SND_18_010;
 	}
 
-	g_fp->playSound(sndid, 1);
+	g_nmi->playSound(sndid, 1);
 
 	g_vars->scene18_boy->getPicAniInfo(info);
 	sc->addStaticANIObject(g_vars->scene18_boy, 1);
@@ -292,11 +292,11 @@ void scene18_initScene1(Scene *sc) {
 
 	if (g_vars->scene18_enteredTrubaRight) {
 		if (sc->_sceneId == SC_19)
-			g_fp->_aniMan2 = 0;
+			g_nmi->_aniMan2 = 0;
 		else
-			g_fp->_aniMan2 = g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani;
+			g_nmi->_aniMan2 = g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani;
 	} else {
-		g_fp->_aniMan2 = g_fp->_aniMan;
+		g_nmi->_aniMan2 = g_nmi->_aniMan;
 	}
 }
 
@@ -309,14 +309,14 @@ void scene18_initScene2(Scene *sc) {
 
 	armchair->loadMovementsPixelData();
 
-	g_vars->scene18_girlIsSwinging = (g_fp->getObjectState(sO_Girl) == g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
+	g_vars->scene18_girlIsSwinging = (g_nmi->getObjectState(sO_Girl) == g_nmi->getObjectEnumState(sO_Girl, sO_IsSwinging));
 
-	if (g_fp->getObjectState(sO_Bridge) == g_fp->getObjectEnumState(sO_Bridge, sO_Convoluted)) {
+	if (g_nmi->getObjectState(sO_Bridge) == g_nmi->getObjectEnumState(sO_Bridge, sO_Convoluted)) {
 		g_vars->scene18_bridgeIsConvoluted = true;
-		g_fp->playSound(SND_18_006, 1);
+		g_nmi->playSound(SND_18_006, 1);
 	} else {
 		g_vars->scene18_bridgeIsConvoluted = false;
-		g_fp->playSound(SND_18_010, 1);
+		g_nmi->playSound(SND_18_010, 1);
 	}
 
 	scene18_setupSwingers(armchair, sc);
@@ -341,61 +341,61 @@ void scene18_initScene2(Scene *sc) {
 	g_vars->scene18_girlJumpX = 283;
 	g_vars->scene18_girlJumpY = -350;
 
-	g_fp->initArcadeKeys("SC_18");
+	g_nmi->initArcadeKeys("SC_18");
 }
 
 void scene19_initScene2() {
-	g_fp->_aniMan2 = 0;
+	g_nmi->_aniMan2 = 0;
 }
 
 int scene18_updateCursor() {
 	if (g_vars->scene18_enteredTrubaRight) {
-		g_fp->_cursorId = PIC_CSR_DEFAULT;
+		g_nmi->_cursorId = PIC_CSR_DEFAULT;
 	} else {
-		g_fp->updateCursorCommon();
+		g_nmi->updateCursorCommon();
 
-		if (g_fp->_cursorId == PIC_CSR_ITN) {
-			if (g_fp->_objectIdAtCursor == PIC_SC18_LADDER1) {
-				g_fp->_cursorId = (g_vars->scene18_manY <= 250) ? PIC_CSR_GOD : PIC_CSR_GOU;
-			} else if (g_fp->_objectIdAtCursor == PIC_SC18_LADDER2 || g_fp->_objectIdAtCursor == PIC_SC18_LADDER3) {
-				g_fp->_cursorId = PIC_CSR_GOU;
+		if (g_nmi->_cursorId == PIC_CSR_ITN) {
+			if (g_nmi->_objectIdAtCursor == PIC_SC18_LADDER1) {
+				g_nmi->_cursorId = (g_vars->scene18_manY <= 250) ? PIC_CSR_GOD : PIC_CSR_GOU;
+			} else if (g_nmi->_objectIdAtCursor == PIC_SC18_LADDER2 || g_nmi->_objectIdAtCursor == PIC_SC18_LADDER3) {
+				g_nmi->_cursorId = PIC_CSR_GOU;
 			}
-		} else if (g_fp->_cursorId == PIC_CSR_DEFAULT && g_fp->_objectIdAtCursor == PIC_SC18_DOMIN && g_vars->scene18_domino && (g_vars->scene18_domino->_flags & 4)) {
-			g_fp->_cursorId = PIC_CSR_ITN;
+		} else if (g_nmi->_cursorId == PIC_CSR_DEFAULT && g_nmi->_objectIdAtCursor == PIC_SC18_DOMIN && g_vars->scene18_domino && (g_vars->scene18_domino->_flags & 4)) {
+			g_nmi->_cursorId = PIC_CSR_ITN;
 		}
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 int scene19_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor == PIC_SC19_RTRUBA31)
-		g_fp->_cursorId = g_vars->scene19_enteredTruba3 ? PIC_CSR_GOR : PIC_CSR_DEFAULT;
+	if (g_nmi->_objectIdAtCursor == PIC_SC19_RTRUBA31)
+		g_nmi->_cursorId = g_vars->scene19_enteredTruba3 ? PIC_CSR_GOR : PIC_CSR_DEFAULT;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler18_clickBoard() {
-	if (ABS(967 - g_fp->_aniMan->_ox) > 1 || ABS(379 - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
-		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 967, 379, 1, ST_MAN_RIGHT);
+	if (ABS(967 - g_nmi->_aniMan->_ox) > 1 || ABS(379 - g_nmi->_aniMan->_oy) > 1 || g_nmi->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 967, 379, 1, ST_MAN_RIGHT);
 		ExCommand *ex = new ExCommand(0, 17, MSG_SC18_MANREADY, 0, 0, 0, 1, 0, 0, 0);
 
 		ex->_excFlags = 2;
 
 		mq->addExCommandToEnd(ex);
 
-		postExCommand(g_fp->_aniMan->_id, 2, 967, 379, 0, -1);
+		postExCommand(g_nmi->_aniMan->_id, 2, 967, 379, 0, -1);
 	} else {
 		g_vars->scene18_manIsReady = true;
 	}
 }
 
 void sceneHandler18_showManJumpTo() {
-	g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
-	g_fp->_aniMan->_flags &= 0xFFFB;
-	g_fp->_aniMan->_flags &= 0xFEFF;
+	g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT);
+	g_nmi->_aniMan->_flags &= 0xFFFB;
+	g_nmi->_aniMan->_flags &= 0xFEFF;
 	g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->sflags = 0x20;
 
 	g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani->changeStatics2(ST_KSL_JUMPMAN);
@@ -405,7 +405,7 @@ void sceneHandler18_showManJumpTo() {
 	g_vars->scene18_manIsReady = false;
 	g_vars->scene18_enteredTrubaRight = true;
 
-	g_fp->_aniMan2 = g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani;
+	g_nmi->_aniMan2 = g_vars->scene18_swingers[g_vars->scene18_manWheelPosTo]->ani;
 }
 
 void sceneHandler18and19_showManJump() {
@@ -419,8 +419,8 @@ void sceneHandler18and19_showManJump() {
 		y = g_vars->scene18_swingers[g_vars->scene18_manWheelPos]->ani->_oy;
 	}
 
-	g_fp->_aniMan->show1(x + 62, y + 5, MV_MAN18_JUMPTOTRUBA, 0);
-	g_fp->_aniMan->_priority = 35;
+	g_nmi->_aniMan->show1(x + 62, y + 5, MV_MAN18_JUMPTOTRUBA, 0);
+	g_nmi->_aniMan->_priority = 35;
 
 	int mqid = 0;
 
@@ -433,9 +433,9 @@ void sceneHandler18and19_showManJump() {
 	}
 
 	if (mqid) {
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(mqid), 0, 0);
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(mqid), 0, 0);
 
-		g_fp->_aniMan2 = g_fp->_aniMan;
+		g_nmi->_aniMan2 = g_nmi->_aniMan;
 		g_vars->scene18_enteredTrubaRight = false;
 
 		mq->setFlags(mq->getFlags() | 1);
@@ -537,10 +537,10 @@ void sceneHandler18and19_girlJumpTo() {
 }
 
 void sceneHandler18and19_manStandArmchair() {
-	g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
-	g_fp->_aniMan->_flags |= 0x100;
-	g_fp->_aniMan->_priority = 35;
-	g_fp->_aniMan->startAnim(MV_MAN18_STANDKRESLO, 0, -1);
+	g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT);
+	g_nmi->_aniMan->_flags |= 0x100;
+	g_nmi->_aniMan->_priority = 35;
+	g_nmi->_aniMan->startAnim(MV_MAN18_STANDKRESLO, 0, -1);
 }
 
 void sceneHandler18and19_drawRiders() {
@@ -637,11 +637,11 @@ void sceneHandler18and19_drawRiders() {
 
 		if ((int)i == g_vars->scene18_manWheelPosTo) {
 			if (swinger->angle >= Common::deg2rad<double>(170.0) && oldangle < Common::deg2rad<double>(170.0)) {
-				g_fp->_gameLoader->preloadScene(SC_18, TrubaRight);
+				g_nmi->_gameLoader->preloadScene(SC_18, TrubaRight);
 			} else if (swinger->angle >= Common::deg2rad<double>(25.0) && oldangle < Common::deg2rad<double>(25.0)) {
-				g_fp->_gameLoader->preloadScene(SC_19, TrubaRight);
+				g_nmi->_gameLoader->preloadScene(SC_19, TrubaRight);
 			} else if (swinger->angle >= Common::deg2rad<double>(270.0) && oldangle < Common::deg2rad<double>(270.0)) {
-				g_fp->_sceneRect.translate(1200, 0);
+				g_nmi->_sceneRect.translate(1200, 0);
 			}
 		}
 
@@ -732,26 +732,26 @@ int sceneHandler18(ExCommand *cmd) {
 				break;
 			}
 
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
-			if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+			if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
 				if (pic && pic->_id == PIC_SC18_DOMIN && g_vars->scene18_domino
-					&& (g_vars->scene18_domino->_flags & 4) && g_fp->_aniMan->isIdle()) {
-					if (!(g_fp->_aniMan->_flags & 0x100) && g_fp->_msgObjectId2 != g_vars->scene18_domino->_id) {
-						handleObjectInteraction(g_fp->_aniMan, g_vars->scene18_domino, cmd->_param);
+					&& (g_vars->scene18_domino->_flags & 4) && g_nmi->_aniMan->isIdle()) {
+					if (!(g_nmi->_aniMan->_flags & 0x100) && g_nmi->_msgObjectId2 != g_vars->scene18_domino->_id) {
+						handleObjectInteraction(g_nmi->_aniMan, g_vars->scene18_domino, cmd->_param);
 						cmd->_messageKind = 0;
 
 						break;
 					}
 				}
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-						|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+						|| (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0)) {
+						g_nmi->processArcade(cmd);
 
 						g_vars->scene18_manIsReady = false;
 
@@ -763,21 +763,21 @@ int sceneHandler18(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			g_vars->scene18_manY = g_fp->_aniMan2->_oy;
+			g_vars->scene18_manY = g_nmi->_aniMan2->_oy;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 
-			g_fp->sceneAutoScrolling();
+			g_nmi->sceneAutoScrolling();
 		}
 
-		if (g_vars->scene18_manIsReady && g_fp->_aniMan->_movement)
+		if (g_vars->scene18_manIsReady && g_nmi->_aniMan->_movement)
 			g_vars->scene18_manIsReady = false;
 
 		if (g_vars->scene18_bridgeIsConvoluted) {
@@ -788,7 +788,7 @@ int sceneHandler18(ExCommand *cmd) {
 
 			if (!g_vars->scene18_whirlgig->_movement) {
 				g_vars->scene18_whirlgig->startAnim(MV_WHR18_SPIN, 0, -1);
-				g_fp->_behaviorManager->updateBehaviors();
+				g_nmi->_behaviorManager->updateBehaviors();
 
 				break;
 			}
@@ -796,7 +796,7 @@ int sceneHandler18(ExCommand *cmd) {
 			sceneHandler18and19_animateRiders();
 		}
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
 		break;
 
@@ -808,10 +808,10 @@ int sceneHandler18(ExCommand *cmd) {
 }
 
 void sceneHandler19_updateNumRides() {
-	int numRides = g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarAsInt(sO_DudeSwinged) + 1;
+	int numRides = g_nmi->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarAsInt(sO_DudeSwinged) + 1;
 
 	if (numRides > 1) {
-		g_fp->setObjectState(sO_Girl, g_fp->getObjectEnumState(sO_Girl, sO_IsSwinging));
+		g_nmi->setObjectState(sO_Girl, g_nmi->getObjectEnumState(sO_Girl, sO_IsSwinging));
 
 		g_vars->scene18_kidIsOnWheel = 1;
 		g_vars->scene18_girlIsOnWheel++;
@@ -819,7 +819,7 @@ void sceneHandler19_updateNumRides() {
 		numRides = 0;
 	}
 
-	g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->setSubVarAsInt(sO_DudeSwinged, numRides);
+	g_nmi->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->setSubVarAsInt(sO_DudeSwinged, numRides);
 }
 
 int sceneHandler19(ExCommand *cmd) {
@@ -853,7 +853,7 @@ int sceneHandler19(ExCommand *cmd) {
 
 	case 29:
 		if (g_vars->scene18_enteredTrubaRight) {
-			switch (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY)) {
+			switch (g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY)) {
 			case PIC_SC19_RTRUBA1:
 				g_vars->scene18_jumpDistance = 1;
 				g_vars->scene18_jumpAngle = 331;
@@ -880,12 +880,12 @@ int sceneHandler19(ExCommand *cmd) {
 			}
 		} else {
 			if (g_vars->scene19_enteredTruba3) {
-				if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC19_RTRUBA3) {
-					if (g_fp->_aniMan->isIdle()) {
-						if (!(g_fp->_aniMan->_flags & 0x100)) {
-							PictureObject *pic = g_fp->_currentScene->getPictureObjectById(PIC_SC19_RTRUBA31, 0);
+				if (g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) == PIC_SC19_RTRUBA3) {
+					if (g_nmi->_aniMan->isIdle()) {
+						if (!(g_nmi->_aniMan->_flags & 0x100)) {
+							PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(PIC_SC19_RTRUBA31, 0);
 
-							handleObjectInteraction(g_fp->_aniMan, pic, cmd->_param);
+							handleObjectInteraction(g_nmi->_aniMan, pic, cmd->_param);
 							break;
 						}
 					}
@@ -895,16 +895,16 @@ int sceneHandler19(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			g_vars->scene18_manY = g_fp->_aniMan2->_oy;
+			g_vars->scene18_manY = g_nmi->_aniMan2->_oy;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
 		if (g_vars->scene18_bridgeIsConvoluted) {
@@ -916,7 +916,7 @@ int sceneHandler19(ExCommand *cmd) {
 			if (!g_vars->scene18_whirlgig->_movement) {
 				g_vars->scene18_whirlgig->startAnim(MV_WHR19_SPIN, 0, -1);
 
-				g_fp->_behaviorManager->updateBehaviors();
+				g_nmi->_behaviorManager->updateBehaviors();
 
 				break;
 			}
@@ -924,7 +924,7 @@ int sceneHandler19(ExCommand *cmd) {
 			sceneHandler18and19_animateRiders();
 		}
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene20.cpp b/engines/ngi/fullpipe/scene20.cpp
index a2427b9496..497a031eaf 100644
--- a/engines/ngi/fullpipe/scene20.cpp
+++ b/engines/ngi/fullpipe/scene20.cpp
@@ -39,11 +39,11 @@ namespace NGI {
 void scene20_setExits(Scene *sc) {
 	int thingpar;
 
-	if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_OnStool)
-		|| g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_OnTheFloor))
+	if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_OnStool)
+		|| g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_OnTheFloor))
 		thingpar = 1;
-	else if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_NearPipe)
-			 || g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_NearPipeWithStool)) {
+	else if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_NearPipe)
+			 || g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_NearPipeWithStool)) {
 		getSc2MctlCompoundBySceneId(sc->_sceneId)->enableLinks(sO_CloseThing, 1);
 		getSc2MctlCompoundBySceneId(sc->_sceneId)->enableLinks(sO_CloseThing2, 1);
 		getSc2MctlCompoundBySceneId(sc->_sceneId)->enableLinks(sO_CloseThing3, 0);
@@ -59,21 +59,21 @@ void scene20_setExits(Scene *sc) {
 }
 
 void scene20_initScene(Scene *sc) {
-	Scene *oldsc = g_fp->_currentScene;
+	Scene *oldsc = g_nmi->_currentScene;
 
 	g_vars->scene20_grandma = sc->getStaticANIObject1ById(ANI_GRANDMA_20, -1);
 
-	g_fp->_currentScene = sc;
+	g_nmi->_currentScene = sc;
 
-	if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_OnTheFloor))
-		g_fp->setObjectState(sO_Grandma, g_fp->getObjectEnumState(sO_Grandma, sO_NearPipe));
+	if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_OnTheFloor))
+		g_nmi->setObjectState(sO_Grandma, g_nmi->getObjectEnumState(sO_Grandma, sO_NearPipe));
 
-	if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_OnStool)) {
+	if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_OnStool)) {
 		g_vars->scene20_grandma->changeStatics2(ST_GMA20_STOOL);
-	} else if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_OnTheFloor)) {
+	} else if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_OnTheFloor)) {
 		g_vars->scene20_grandma->changeStatics2(ST_GMA20_FLOOR);
-	} else if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_NearPipe)
-				|| g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_NearPipeWithStool)) {
+	} else if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_NearPipe)
+				|| g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_NearPipeWithStool)) {
 		g_vars->scene20_grandma->changeStatics2(ST_GMA20_STAND);
 	} else {
 		g_vars->scene20_grandma->hide();
@@ -81,38 +81,38 @@ void scene20_initScene(Scene *sc) {
 
 	scene20_setExits(sc);
 
-	g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_20"));
+	g_nmi->_floaters->init(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_20"));
 
 	for (int i = 0; i < 3; i++) {
-		g_fp->_floaters->genFlies(sc, g_fp->_rnd.getRandomNumber(101) + 70, g_fp->_rnd.getRandomNumber(51) + 175, 100, 0);
-		g_fp->_floaters->_array2[g_fp->_floaters->_array2.size() - 1].val13 = g_fp->_rnd.getRandomNumber(9);
+		g_nmi->_floaters->genFlies(sc, g_nmi->_rnd.getRandomNumber(101) + 70, g_nmi->_rnd.getRandomNumber(51) + 175, 100, 0);
+		g_nmi->_floaters->_array2[g_nmi->_floaters->_array2.size() - 1].val13 = g_nmi->_rnd.getRandomNumber(9);
 	}
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
-	g_vars->scene20_fliesCountdown = g_fp->_rnd.getRandomNumber(200) + 400;
+	g_vars->scene20_fliesCountdown = g_nmi->_rnd.getRandomNumber(200) + 400;
 }
 
 void sceneHandler20_updateFlies() {
-	int sz = g_fp->_floaters->_array2.size();
+	int sz = g_nmi->_floaters->_array2.size();
 
 	if (sz < 3) {
-		g_fp->_floaters->genFlies(g_fp->_currentScene, 253, 650, 200, 0);
-		g_fp->_floaters->_array2[sz - 1].val2 = 250;
-		g_fp->_floaters->_array2[sz - 1].val3 = 200;
+		g_nmi->_floaters->genFlies(g_nmi->_currentScene, 253, 650, 200, 0);
+		g_nmi->_floaters->_array2[sz - 1].val2 = 250;
+		g_nmi->_floaters->_array2[sz - 1].val3 = 200;
 	} else {
-		int idx = g_fp->_rnd.getRandomNumber(sz);
-
-		g_fp->_floaters->_array2[idx].countdown = 0;
-		g_fp->_floaters->_array2[idx].fflags |= 4u;
-		g_fp->_floaters->_array2[idx].val2 = 250;
-		g_fp->_floaters->_array2[idx].val3 = 200;
-		g_fp->_floaters->_array2[idx].val6 = 253;
-		g_fp->_floaters->_array2[idx].val7 = 650;
-		g_fp->_floaters->_array2[idx].ani->_priority = 200;
+		int idx = g_nmi->_rnd.getRandomNumber(sz);
+
+		g_nmi->_floaters->_array2[idx].countdown = 0;
+		g_nmi->_floaters->_array2[idx].fflags |= 4u;
+		g_nmi->_floaters->_array2[idx].val2 = 250;
+		g_nmi->_floaters->_array2[idx].val3 = 200;
+		g_nmi->_floaters->_array2[idx].val6 = 253;
+		g_nmi->_floaters->_array2[idx].val7 = 650;
+		g_nmi->_floaters->_array2[idx].ani->_priority = 200;
 	}
 
-	g_vars->scene20_fliesCountdown = g_fp->_rnd.getRandomNumber(200) + 400;
+	g_vars->scene20_fliesCountdown = g_nmi->_rnd.getRandomNumber(200) + 400;
 }
 
 int sceneHandler20(ExCommand *cmd) {
@@ -121,18 +121,18 @@ int sceneHandler20(ExCommand *cmd) {
 
 	switch (cmd->_messageNum) {
 	case MSG_SC20_UPDATELOCKABLE:
-		scene20_setExits(g_fp->_currentScene);
+		scene20_setExits(g_nmi->_currentScene);
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
 		--g_vars->scene20_fliesCountdown;
@@ -140,11 +140,11 @@ int sceneHandler20(ExCommand *cmd) {
 		if (g_vars->scene20_fliesCountdown <= 0)
 			sceneHandler20_updateFlies();
 
-		g_fp->_floaters->update();
+		g_nmi->_floaters->update();
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
-		g_fp->startSceneTrack();
+		g_nmi->startSceneTrack();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene21.cpp b/engines/ngi/fullpipe/scene21.cpp
index a8049264a0..2099135b45 100644
--- a/engines/ngi/fullpipe/scene21.cpp
+++ b/engines/ngi/fullpipe/scene21.cpp
@@ -37,12 +37,12 @@
 namespace NGI {
 
 void scene21_initScene(Scene *sc) {
-	Scene *oldsc = g_fp->_currentScene;
+	Scene *oldsc = g_nmi->_currentScene;
 
 	g_vars->scene21_giraffeBottom = sc->getStaticANIObject1ById(ANI_GIRAFFE_BOTTOM, -1);
-	g_fp->_currentScene = sc;
+	g_nmi->_currentScene = sc;
 
-	if (g_fp->getObjectState(sO_LowerPipe_21) == g_fp->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened)) {
+	if (g_nmi->getObjectState(sO_LowerPipe_21) == g_nmi->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened)) {
 		g_vars->scene21_giraffeBottom->changeStatics2(ST_GRFB_HANG);
 		g_vars->scene21_pipeIsOpen = true;
 		g_vars->scene21_wigglePos = 0.0;
@@ -52,18 +52,18 @@ void scene21_initScene(Scene *sc) {
 	} else {
 		g_vars->scene21_pipeIsOpen = false;
 	}
-	g_fp->_currentScene = oldsc;
-	g_fp->initArcadeKeys("SC_21");
+	g_nmi->_currentScene = oldsc;
+	g_nmi->initArcadeKeys("SC_21");
 }
 
 int scene21_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_cursorId == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC21_DTRUBA)
+	if (g_nmi->_cursorId == PIC_CSR_ITN && g_nmi->_objectIdAtCursor == PIC_SC21_DTRUBA)
 
-		g_fp->_cursorId = PIC_CSR_GOD;
+		g_nmi->_cursorId = PIC_CSR_GOD;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler21_doWiggle() {
@@ -86,50 +86,50 @@ int sceneHandler21(ExCommand *cmd) {
 
 	switch (cmd->_messageNum) {
 	case MSG_SC21_UPDATEASS:
-		if (g_fp->getObjectState(sO_LowerPipe_21) == g_fp->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened)) {
+		if (g_nmi->getObjectState(sO_LowerPipe_21) == g_nmi->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened)) {
 			g_vars->scene21_giraffeBottom->changeStatics2(ST_GRFB_HANG);
 			g_vars->scene21_giraffeBottom->setOXY(g_vars->scene21_giraffeBottomX, g_vars->scene21_giraffeBottomY);
 			g_vars->scene21_giraffeBottom->changeStatics2(ST_GRFB_SIT);
 
 			g_vars->scene21_pipeIsOpen = false;
 
-			g_fp->setObjectState(sO_LowerPipe_21, g_fp->getObjectEnumState(sO_LowerPipe_21, sO_IsClosed));
+			g_nmi->setObjectState(sO_LowerPipe_21, g_nmi->getObjectEnumState(sO_LowerPipe_21, sO_IsClosed));
 		}
 
 		break;
 
 	case 29:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-			if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param) ) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-						|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0))
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param) ) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+						|| (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0))
+						g_nmi->processArcade(cmd);
 				}
 			}
 		}
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x <= g_fp->_sceneWidth - 460) {
-				if (x < g_fp->_sceneRect.left + 200)
-					g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x <= g_nmi->_sceneWidth - 460) {
+				if (x < g_nmi->_sceneRect.left + 200)
+					g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 			} else {
-				g_fp->_currentScene->_x = g_fp->_sceneWidth - x;
+				g_nmi->_currentScene->_x = g_nmi->_sceneWidth - x;
 			}
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 
-			g_fp->sceneAutoScrolling();
+			g_nmi->sceneAutoScrolling();
 		}
 
 		if (g_vars->scene21_pipeIsOpen && !g_vars->scene21_wiggleTrigger)
@@ -137,8 +137,8 @@ int sceneHandler21(ExCommand *cmd) {
 
 		g_vars->scene21_wiggleTrigger = !g_vars->scene21_wiggleTrigger;
 
-		g_fp->_behaviorManager->updateBehaviors();
-		g_fp->startSceneTrack();
+		g_nmi->_behaviorManager->updateBehaviors();
+		g_nmi->startSceneTrack();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene22.cpp b/engines/ngi/fullpipe/scene22.cpp
index 8b937ac9db..5447219669 100644
--- a/engines/ngi/fullpipe/scene22.cpp
+++ b/engines/ngi/fullpipe/scene22.cpp
@@ -39,19 +39,19 @@ namespace NGI {
 void scene22_initScene(Scene *sc) {
 	g_vars->scene22_bag = sc->getStaticANIObject1ById(ANI_MESHOK, -1);
 
-	Scene *oldsc = g_fp->_currentScene;
-	g_fp->_currentScene = sc;
+	Scene *oldsc = g_nmi->_currentScene;
+	g_nmi->_currentScene = sc;
 
 	g_vars->scene22_giraffeMiddle = sc->getStaticANIObject1ById(ANI_GIRAFFE_MIDDLE, -1);
 	g_vars->scene22_dudeIsOnStool = false;
 	g_vars->scene22_interactionIsDisabled = false;
 	g_vars->scene22_craneIsOut = true;
 
-	if (g_fp->getObjectState(sO_Bag_22) == g_fp->getObjectEnumState(sO_Bag_22, sO_NotFallen))
+	if (g_nmi->getObjectState(sO_Bag_22) == g_nmi->getObjectEnumState(sO_Bag_22, sO_NotFallen))
 		g_vars->scene22_numBagFalls = 0;
-	else if (g_fp->getObjectState(sO_Bag_22) == g_fp->getObjectEnumState(sO_Bag_22, sO_FallenOnce))
+	else if (g_nmi->getObjectState(sO_Bag_22) == g_nmi->getObjectEnumState(sO_Bag_22, sO_FallenOnce))
 		g_vars->scene22_numBagFalls = 1;
-	else if ( g_fp->getObjectState(sO_Bag_22) == g_fp->getObjectEnumState(sO_Bag_22, sO_FallenTwice))
+	else if ( g_nmi->getObjectState(sO_Bag_22) == g_nmi->getObjectEnumState(sO_Bag_22, sO_FallenTwice))
 		g_vars->scene22_numBagFalls = 2;
 	else {
 		g_vars->scene22_numBagFalls = 3;
@@ -59,44 +59,44 @@ void scene22_initScene(Scene *sc) {
 	}
 
 
-	if ( g_fp->getObjectState(sO_LowerPipe_21) == g_fp->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened))
+	if ( g_nmi->getObjectState(sO_LowerPipe_21) == g_nmi->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened))
 		g_vars->scene22_giraffeMiddle->changeStatics2(ST_GRFM_AFTER);
 	else
 		g_vars->scene22_giraffeMiddle->changeStatics2(ST_GRFM_NORM);
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
-	g_fp->initArcadeKeys("SC_22");
+	g_nmi->initArcadeKeys("SC_22");
 }
 
 int scene22_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor != ANI_HANDLE_L)
-		return g_fp->_cursorId;
+	if (g_nmi->_objectIdAtCursor != ANI_HANDLE_L)
+		return g_nmi->_cursorId;
 
-	int sel = g_fp->_inventory->getSelectedItemId();
+	int sel = g_nmi->_inventory->getSelectedItemId();
 
 	if (!sel) {
-		g_fp->_cursorId = PIC_CSR_ITN;
-		return g_fp->_cursorId;
+		g_nmi->_cursorId = PIC_CSR_ITN;
+		return g_nmi->_cursorId;
 	}
 
 	if (g_vars->scene22_dudeIsOnStool || (sel != ANI_INV_STOOL && sel != ANI_INV_BOX))
 		; //empty
 	else
-		g_fp->_cursorId = PIC_CSR_ITN_INV;
+		g_nmi->_cursorId = PIC_CSR_ITN_INV;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void scene22_setBagState() {
 	if (g_vars->scene22_craneIsOut) {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 1);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
 	} else {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 1);
 	}
 }
 
@@ -105,7 +105,7 @@ void sceneHandler22_showStool() {
 }
 
 void sceneHandler22_hideStool() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1)->hide();
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1)->hide();
 }
 
 void sceneHandler22_handleDown() {
@@ -130,28 +130,28 @@ void sceneHandler22_handleDown() {
 
 		if (g_vars->scene22_numBagFalls) {
 			if (g_vars->scene22_numBagFalls == 1) {
-				state = g_fp->getObjectEnumState(sO_Bag_22, sO_FallenOnce);
+				state = g_nmi->getObjectEnumState(sO_Bag_22, sO_FallenOnce);
 			} else if (g_vars->scene22_numBagFalls == 2) {
-				state = g_fp->getObjectEnumState(sO_Bag_22, sO_FallenTwice);
+				state = g_nmi->getObjectEnumState(sO_Bag_22, sO_FallenTwice);
 			} else {
-				state = g_fp->getObjectEnumState(sO_Bag_22, sO_BrushHasFallen);
+				state = g_nmi->getObjectEnumState(sO_Bag_22, sO_BrushHasFallen);
 			}
 		} else {
-			state = g_fp->getObjectEnumState(sO_Bag_22, sO_NotFallen);
+			state = g_nmi->getObjectEnumState(sO_Bag_22, sO_NotFallen);
 		}
 
-		g_fp->setObjectState(sO_Bag_22, state);
+		g_nmi->setObjectState(sO_Bag_22, state);
 	}
 
 	g_vars->scene22_craneIsOut = true;
 
-	g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 1);
-	g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
+	g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_CRANEOUT, 1);
+	g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene22_bag, ST_MSH_SIT, QU_MSH_MOVE, 0);
 }
 
 void sceneHandler22_fromStool(ExCommand *cmd) {
-	if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) {
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC22_FROMSTOOL), 0, 0);
+	if (g_nmi->_aniMan->isIdle() && !(g_nmi->_aniMan->_flags & 0x100)) {
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC22_FROMSTOOL), 0, 0);
 
 		mq->addExCommandToEnd(cmd->createClone());
 		mq->setFlags(mq->getFlags() | 1);
@@ -165,10 +165,10 @@ void sceneHandler22_stoolLogic(ExCommand *cmd) {
 	int xpos;
 	int manId;
 
-	if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) {
+	if (g_nmi->_aniMan->isIdle() && !(g_nmi->_aniMan->_flags & 0x100)) {
 		if (cmd->_param == ANI_INV_STOOL) {
-			if (abs(841 - g_fp->_aniMan->_ox) <= 1) {
-				if (abs(449 - g_fp->_aniMan->_oy) <= 1) {
+			if (abs(841 - g_nmi->_aniMan->_ox) <= 1) {
+				if (abs(449 - g_nmi->_aniMan->_oy) <= 1) {
 					chainQueue(QU_SC22_PUTSTOOL, 1);
 					g_vars->scene22_interactionIsDisabled = true;
 
@@ -179,11 +179,11 @@ void sceneHandler22_stoolLogic(ExCommand *cmd) {
 		}
 
 		if (cmd->_param == ANI_INV_BOX) {
-			ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1);
+			ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1);
 			if (!ani || !(ani->_flags & 4)) {
-				if (abs(841 - g_fp->_aniMan->_ox) <= 1) {
-					if (abs(449 - g_fp->_aniMan->_oy) <= 1) {
-						chainObjQueue(g_fp->_aniMan, QU_SC22_TRYBOX, 1);
+				if (abs(841 - g_nmi->_aniMan->_ox) <= 1) {
+					if (abs(449 - g_nmi->_aniMan->_oy) <= 1) {
+						chainObjQueue(g_nmi->_aniMan, QU_SC22_TRYBOX, 1);
 						return;
 					}
 				}
@@ -191,14 +191,14 @@ void sceneHandler22_stoolLogic(ExCommand *cmd) {
 				xpos = 841;
 				manId = ST_MAN_RIGHT;
 			LABEL_31:
-				mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, xpos, 449, 1, manId);
+				mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, xpos, 449, 1, manId);
 
 				if (!mq)
 					return;
 
 				mq->addExCommandToEnd(cmd->createClone());
 
-				postExCommand(g_fp->_aniMan->_id, 2, 841, 449, 0, -1);
+				postExCommand(g_nmi->_aniMan->_id, 2, 841, 449, 0, -1);
 				return;
 			}
 		} else {
@@ -206,7 +206,7 @@ void sceneHandler22_stoolLogic(ExCommand *cmd) {
 				return;
 
 			if (g_vars->scene22_dudeIsOnStool) {
-				if (g_fp->_aniMan->_movement)
+				if (g_nmi->_aniMan->_movement)
 					return;
 
 				chainQueue(QU_SC22_HANDLEDOWN, 1);
@@ -215,10 +215,10 @@ void sceneHandler22_stoolLogic(ExCommand *cmd) {
 				return;
 			}
 
-			ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1);
+			ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1);
 			if (ani && (ani->_flags & 4)) {
-				int x = g_fp->_aniMan->_ox;
-				int y = g_fp->_aniMan->_oy;
+				int x = g_nmi->_aniMan->_ox;
+				int y = g_nmi->_aniMan->_oy;
 
 				if (sqrt((double)((841 - x) * (841 - x) + (449 - y) * (449 - y)))
 					< sqrt((double)((1075 - x) * (1075 - x) + (449 - y) * (449 - y)))) {
@@ -243,7 +243,7 @@ void sceneHandler22_stoolLogic(ExCommand *cmd) {
 				MakeQueueStruct mkQueue;
 
 				mgm.attachObject(ANI_MAN);
-				mkQueue.ani = g_fp->_aniMan;
+				mkQueue.ani = g_nmi->_aniMan;
 				mkQueue.staticsId2 = ST_MAN_RIGHT;
 				mkQueue.x1 = 934;
 				mkQueue.y1 = 391;
@@ -263,7 +263,7 @@ void sceneHandler22_stoolLogic(ExCommand *cmd) {
 
 				delete mq;
 
-				mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC22_TOSTOOL_R), 0, 0);
+				mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC22_TOSTOOL_R), 0, 0);
 
 				mq->insertExCommandAt(2, ex);
 				mq->setFlags(mq->getFlags() | 1);
@@ -271,19 +271,19 @@ void sceneHandler22_stoolLogic(ExCommand *cmd) {
 
 				g_vars->scene22_interactionIsDisabled = true;
 			} else {
-				if (abs(1010 - g_fp->_aniMan->_ox) <= 1) {
-					if (abs(443 - g_fp->_aniMan->_oy) <= 1) {
+				if (abs(1010 - g_nmi->_aniMan->_ox) <= 1) {
+					if (abs(443 - g_nmi->_aniMan->_oy) <= 1) {
 						chainQueue(QU_SC22_TRYHANDLE, 1);
 						return;
 					}
 				}
 
-				mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 1010, 443, 1, ST_MAN_UP);
+				mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 1010, 443, 1, ST_MAN_UP);
 
 				if (mq) {
 					mq->addExCommandToEnd(cmd->createClone());
 
-					postExCommand(g_fp->_aniMan->_id, 2, 1010, 443, 0, -1);
+					postExCommand(g_nmi->_aniMan->_id, 2, 1010, 443, 0, -1);
 					return;
 				}
 			}
@@ -301,8 +301,8 @@ int sceneHandler22(ExCommand *cmd) {
 		break;
 
 	case MSG_SC22_CHECKGMABOOT:
-		if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_In_15)) {
-			g_fp->setObjectState(sO_Boot_15, g_fp->getObjectEnumState(sO_Boot_15, sO_IsPresent));
+		if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_In_15)) {
+			g_nmi->setObjectState(sO_Boot_15, g_nmi->getObjectEnumState(sO_Boot_15, sO_IsPresent));
 		}
 		break;
 
@@ -319,13 +319,13 @@ int sceneHandler22(ExCommand *cmd) {
 		g_vars->scene22_interactionIsDisabled = false;
 
 		getCurrSceneSc2MotionController()->activate();
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
 		break;
 
 	case MSG_SC22_ONSTOOL:
 		g_vars->scene22_dudeIsOnStool = true;
 		getCurrSceneSc2MotionController()->deactivate();
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 		break;
 
 	case MSG_SC22_HANDLEDOWN:
@@ -334,7 +334,7 @@ int sceneHandler22(ExCommand *cmd) {
 
 	case 29:
 		if (!g_vars->scene22_interactionIsDisabled) {
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (ani && ani->_id == ANI_HANDLE_L) {
 				sceneHandler22_stoolLogic(cmd);
@@ -342,14 +342,14 @@ int sceneHandler22(ExCommand *cmd) {
 			}
 
 			if (!g_vars->scene22_dudeIsOnStool) {
-				if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-					int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-					PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
-
-					if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-						if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-							|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
-							g_fp->processArcade(cmd);
+				if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+					int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+					PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
+
+					if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+						if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+							|| (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0)) {
+							g_nmi->processArcade(cmd);
 							return 0;
 						}
 					}
@@ -357,7 +357,7 @@ int sceneHandler22(ExCommand *cmd) {
 				return 0;
 			}
 
-			if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT && !g_fp->_aniMan->_movement) {
+			if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN_RIGHT && !g_nmi->_aniMan->_movement) {
 				sceneHandler22_fromStool(cmd);
 
 				return 0;
@@ -368,24 +368,24 @@ int sceneHandler22(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x <= g_fp->_sceneWidth - 460) {
-				if (x < g_fp->_sceneRect.left + 200)
-					g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x <= g_nmi->_sceneWidth - 460) {
+				if (x < g_nmi->_sceneRect.left + 200)
+					g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 			} else {
-				g_fp->_currentScene->_x = g_fp->_sceneWidth - x;
+				g_nmi->_currentScene->_x = g_nmi->_sceneWidth - x;
 			}
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 
-			g_fp->sceneAutoScrolling();
+			g_nmi->sceneAutoScrolling();
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
-			g_fp->startSceneTrack();
+			g_nmi->startSceneTrack();
 		}
 
 		break;
diff --git a/engines/ngi/fullpipe/scene23.cpp b/engines/ngi/fullpipe/scene23.cpp
index 46506d4fa7..506aa5c835 100644
--- a/engines/ngi/fullpipe/scene23.cpp
+++ b/engines/ngi/fullpipe/scene23.cpp
@@ -73,12 +73,12 @@ void scene23_initScene(Scene *sc) {
 	g_vars->scene23_giraffeTop = sc->getStaticANIObject1ById(ANI_GIRAFFE_TOP, -1);
 	g_vars->scene23_giraffee = sc->getStaticANIObject1ById(ANI_GIRAFFEE, -1);
 
-	g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_23"));
+	g_nmi->_floaters->init(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_23"));
 
-	Scene *oldsc = g_fp->_currentScene;
-	g_fp->_currentScene = sc;
+	Scene *oldsc = g_nmi->_currentScene;
+	g_nmi->_currentScene = sc;
 
-	if (g_fp->getObjectState(sO_UpperHatch_23) == g_fp->getObjectEnumState(sO_UpperHatch_23, sO_Opened)) {
+	if (g_nmi->getObjectState(sO_UpperHatch_23) == g_nmi->getObjectEnumState(sO_UpperHatch_23, sO_Opened)) {
 		sc->getPictureObjectById(PIC_SC23_BOXOPEN, 0)->_flags |= 4;
 		sc->getPictureObjectById(PIC_SC23_BOXCLOSED, 0)->_flags &= 0xFFFB;
 		sc->getPictureObjectById(PIC_SC23_BTN1, 0)->_flags |= 4;
@@ -112,18 +112,18 @@ void scene23_initScene(Scene *sc) {
 
 		sc->getStaticANIObject1ById(ANI_LUK23_U, -1)->changeStatics2(ST_LUK23U_CLOSED);
 
-		g_fp->_floaters->genFlies(sc, 600, 90, 0, 0);
+		g_nmi->_floaters->genFlies(sc, 600, 90, 0, 0);
 	}
 
-	if (g_fp->getObjectState(sO_LowerHatch_23) == g_fp->getObjectEnumState(sO_LowerHatch_23, sO_Opened)) {
+	if (g_nmi->getObjectState(sO_LowerHatch_23) == g_nmi->getObjectEnumState(sO_LowerHatch_23, sO_Opened)) {
 		g_vars->scene23_giraffeTop->show1(-1, -1, -1, 0);
 		g_vars->scene23_giraffeTop->changeStatics2(ST_GRFU_UP);
 
-		if (g_fp->getObjectState(sO_LowerPipe_21) == g_fp->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened)) {
+		if (g_nmi->getObjectState(sO_LowerPipe_21) == g_nmi->getObjectEnumState(sO_LowerPipe_21, sO_IsOpened)) {
 			g_vars->scene23_giraffeTop->changeStatics2(ST_GRFU_KISS);
 			g_vars->scene23_giraffee->hide();
 		} else {
-			if (g_fp->getObjectState(sO_UpperHatch_23) == g_fp->getObjectEnumState(sO_UpperHatch_23, sO_Opened)
+			if (g_nmi->getObjectState(sO_UpperHatch_23) == g_nmi->getObjectEnumState(sO_UpperHatch_23, sO_Opened)
 				&& (g_vars->scene23_giraffee->_flags & 4))
 				g_vars->scene23_giraffeTop->setOXY(614, 362);
 			else
@@ -135,7 +135,7 @@ void scene23_initScene(Scene *sc) {
 
 		sc->getStaticANIObject1ById(ANI_LUK23_D, -1)->changeStatics2(ST_LUK23_OPEN);
 
-		if (g_fp->getObjectState(sO_Lever_23) == g_fp->getObjectEnumState(sO_Lever_23, sO_Taken))
+		if (g_nmi->getObjectState(sO_Lever_23) == g_nmi->getObjectEnumState(sO_Lever_23, sO_Taken))
 			sc->getStaticANIObject1ById(ANI_INV_LEVERHANDLE, -1)->hide();
 
 		sc->getStaticANIObject1ById(ANI_HANDLE23, -1)->hide();
@@ -147,32 +147,32 @@ void scene23_initScene(Scene *sc) {
 		sc->getStaticANIObject1ById(ANI_INV_LEVERHANDLE, -1)->hide();
 	}
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 }
 
 void scene23_setGiraffeState() {
-	if (g_fp->getObjectState(sO_UpperHatch_23) == g_fp->getObjectEnumState(sO_UpperHatch_23, sO_Opened)) {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene23_giraffeTop, ST_GRFU_UP, QU_GRFU_TURN_UL, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene23_giraffeTop, ST_GRFU_UP, QU_GRFU_TURN_UD, 0);
+	if (g_nmi->getObjectState(sO_UpperHatch_23) == g_nmi->getObjectEnumState(sO_UpperHatch_23, sO_Opened)) {
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene23_giraffeTop, ST_GRFU_UP, QU_GRFU_TURN_UL, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene23_giraffeTop, ST_GRFU_UP, QU_GRFU_TURN_UD, 0);
 	}
 }
 
 int scene23_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor == PIC_SC23_LADDERU) {
+	if (g_nmi->_objectIdAtCursor == PIC_SC23_LADDERU) {
 		if (g_vars->scene23_topReached)
-			return g_fp->_cursorId;
+			return g_nmi->_cursorId;
 
-		g_fp->_cursorId = getGameLoaderInventory()->getSelectedItemId() ? PIC_CSR_GOU : PIC_CSR_ITN; // FIXME check
+		g_nmi->_cursorId = getGameLoaderInventory()->getSelectedItemId() ? PIC_CSR_GOU : PIC_CSR_ITN; // FIXME check
 	}
 
-	if (g_fp->_objectIdAtCursor == PIC_SC23_BTN1 || g_fp->_objectIdAtCursor == PIC_SC23_BTN2
-		|| g_fp->_objectIdAtCursor == PIC_SC23_BTN3 || g_fp->_objectIdAtCursor == PIC_SC23_BTN4
-		|| g_fp->_objectIdAtCursor == ANI_CALENDWHEEL)
-		g_fp->_cursorId = PIC_CSR_LIFT;
+	if (g_nmi->_objectIdAtCursor == PIC_SC23_BTN1 || g_nmi->_objectIdAtCursor == PIC_SC23_BTN2
+		|| g_nmi->_objectIdAtCursor == PIC_SC23_BTN3 || g_nmi->_objectIdAtCursor == PIC_SC23_BTN4
+		|| g_nmi->_objectIdAtCursor == ANI_CALENDWHEEL)
+		g_nmi->_cursorId = PIC_CSR_LIFT;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler23_showStool() {
@@ -180,7 +180,7 @@ void sceneHandler23_showStool() {
 }
 
 void sceneHandler23_hideStool() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1)->hide();
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_TABURETTE, -1)->hide();
 }
 
 void sceneHandler23_startKiss() {
@@ -288,23 +288,23 @@ void sceneHandler23_spinWheel3() {
 }
 
 void sceneHandler23_pushButton(ExCommand *cmd) {
-	if (g_fp->_aniMan->isIdle() || !(g_fp->_aniMan->_flags & 0x100)) {
+	if (g_nmi->_aniMan->isIdle() || !(g_nmi->_aniMan->_flags & 0x100)) {
 		if (!g_vars->scene23_topReached) {
-			if (g_fp->_aniMan->_ox != 405 || g_fp->_aniMan->_oy != 220) {
-				if (g_fp->_aniMan->_ox != 276 || g_fp->_aniMan->_oy != 438
-					|| g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
-					if (g_fp->_msgX == 276 && g_fp->_msgY == 438 )
+			if (g_nmi->_aniMan->_ox != 405 || g_nmi->_aniMan->_oy != 220) {
+				if (g_nmi->_aniMan->_ox != 276 || g_nmi->_aniMan->_oy != 438
+					|| g_nmi->_aniMan->_movement || g_nmi->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+					if (g_nmi->_msgX == 276 && g_nmi->_msgY == 438 )
 						return;
 
-					MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 276, 438, 1, ST_MAN_RIGHT);
+					MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 276, 438, 1, ST_MAN_RIGHT);
 
 					if (mq) {
 						mq->addExCommandToEnd(cmd->createClone());
 
-						postExCommand(g_fp->_aniMan->_id, 2, 276, 438, 0, -1);
+						postExCommand(g_nmi->_aniMan->_id, 2, 276, 438, 0, -1);
 					}
 				} else {
-					MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC23_TOCALENDAR), 0, 0);
+					MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC23_TOCALENDAR), 0, 0);
 
 					mq->addExCommandToEnd(cmd->createClone());
 					mq->setFlags(mq->getFlags() | 1);
@@ -318,7 +318,7 @@ void sceneHandler23_pushButton(ExCommand *cmd) {
 			}
 		}
 
-		if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER) {
+		if (!g_nmi->_aniMan->_movement && g_nmi->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER) {
 			int mv = 0;
 
 			switch (cmd->_messageNum) {
@@ -343,7 +343,7 @@ void sceneHandler23_pushButton(ExCommand *cmd) {
 			}
 
 			if (mv)
-				g_fp->_aniMan->startAnim(mv, 0, -1);
+				g_nmi->_aniMan->startAnim(mv, 0, -1);
 
 		}
 	}
@@ -375,25 +375,25 @@ void sceneHandler23_sendClick(StaticANIObject *ani) {
 }
 
 void sceneHandler23_checkReachingTop() {
-	if (g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_STANDLADDER
-		|| g_fp->_aniMan->_ox != 405 || g_fp->_aniMan->_oy != 220)
+	if (g_nmi->_aniMan->_movement || g_nmi->_aniMan->_statics->_staticsId != ST_MAN_STANDLADDER
+		|| g_nmi->_aniMan->_ox != 405 || g_nmi->_aniMan->_oy != 220)
 		g_vars->scene23_topReached = false;
 	else
 		g_vars->scene23_topReached = true;
 }
 
 void sceneHandler23_exitCalendar() {
-	if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
-		&& !g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) {
+	if (!g_nmi->_aniMan->_movement && g_nmi->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+		&& !g_nmi->_aniMan->getMessageQueue() && !(g_nmi->_aniMan->_flags & 0x100)) {
 		chainQueue(QU_SC23_FROMCALENDAREXIT, 1);
 		g_vars->scene23_someVar = 2;
 	}
 }
 
 void sceneHandler23_fromCalendar(ExCommand *cmd) {
-	if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
-		&& !g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) {
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC23_FROMCALENDAR), 0, 0);
+	if (!g_nmi->_aniMan->_movement && g_nmi->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+		&& !g_nmi->_aniMan->getMessageQueue() && !(g_nmi->_aniMan->_flags & 0x100)) {
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC23_FROMCALENDAR), 0, 0);
 
 		mq->addExCommandToEnd(cmd->createClone());
 		mq->setFlags(mq->getFlags() | 1);
@@ -405,8 +405,8 @@ void sceneHandler23_fromCalendar(ExCommand *cmd) {
 }
 
 void sceneHandler23_fromStool(ExCommand *cmd) {
-	if (!g_fp->_aniMan->getMessageQueue() && !(g_fp->_aniMan->_flags & 0x100)) {
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC23_FROMSTOOL), 0, 0);
+	if (!g_nmi->_aniMan->getMessageQueue() && !(g_nmi->_aniMan->_flags & 0x100)) {
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC23_FROMSTOOL), 0, 0);
 
 		mq->addExCommandToEnd(cmd->createClone());
 		mq->setFlags(mq->getFlags() | 1);
@@ -427,7 +427,7 @@ int sceneHandler23(ExCommand *cmd) {
 		getCurrSceneSc2MotionController()->activate();
 		getGameLoaderInteractionController()->enableFlag24();
 
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
 		break;
 
 	case MSG_SC23_HIDEGIRAFFEE:
@@ -441,7 +441,7 @@ int sceneHandler23(ExCommand *cmd) {
 		getCurrSceneSc2MotionController()->deactivate();
 		getGameLoaderInteractionController()->disableFlag24();
 
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 		break;
 
 	case MSG_SC22_SHOWSTOOL:
@@ -476,26 +476,26 @@ int sceneHandler23(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
-		g_fp->_floaters->update();
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_floaters->update();
+		g_nmi->_behaviorManager->updateBehaviors();
 
-		g_fp->startSceneTrack();
+		g_nmi->startSceneTrack();
 
 		break;
 
 	case 29:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 			int picId;
 
 			if (ani && ani->_id == ANI_CALENDWHEEL) {
@@ -506,7 +506,7 @@ int sceneHandler23(ExCommand *cmd) {
 			sceneHandler23_checkReachingTop();
 
 			if (g_vars->scene23_topReached) {
-				picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 				if (picId == PIC_SC23_LADDER) {
 					sceneHandler23_exitCalendar();
@@ -525,7 +525,7 @@ int sceneHandler23(ExCommand *cmd) {
 			}
 
 			if (!g_vars->scene23_isOnStool) {
-				picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 				if (picId == PIC_SC23_LADDERU && !g_vars->scene23_topReached) {
 					sceneHandler23_pushButton(cmd);
@@ -537,7 +537,7 @@ int sceneHandler23(ExCommand *cmd) {
 			}
 
 			if (ani && ani->_id == ANI_HANDLE23) {
-				handleObjectInteraction(g_fp->_aniMan, ani, cmd->_param);
+				handleObjectInteraction(g_nmi->_aniMan, ani, cmd->_param);
 				cmd->_messageKind = 0;
 			} else {
 				sceneHandler23_fromStool(cmd);
diff --git a/engines/ngi/fullpipe/scene24.cpp b/engines/ngi/fullpipe/scene24.cpp
index 2db4eca760..1972e174c9 100644
--- a/engines/ngi/fullpipe/scene24.cpp
+++ b/engines/ngi/fullpipe/scene24.cpp
@@ -44,10 +44,10 @@ void scene24_initScene(Scene *sc) {
 	g_vars->scene24_jet->setAlpha(0xa0);
 	g_vars->scene24_drop->setAlpha(0xa0);
 
-	Scene *oldsc = g_fp->_currentScene;
-	g_fp->_currentScene = sc;
+	Scene *oldsc = g_nmi->_currentScene;
+	g_nmi->_currentScene = sc;
 
-	if (g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_Overfull)) {
+	if (g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_Overfull)) {
 		g_vars->scene24_jetIsOn = true;
 		g_vars->scene24_flowIsLow = false;
 	} else {
@@ -60,53 +60,53 @@ void scene24_initScene(Scene *sc) {
 		g_vars->scene24_flowIsLow = true;
 	}
 
-	if (g_fp->getObjectState(sO_Pool) < g_fp->getObjectEnumState(sO_Pool, sO_Full)) {
+	if (g_nmi->getObjectState(sO_Pool) < g_nmi->getObjectEnumState(sO_Pool, sO_Full)) {
 		g_vars->scene24_waterIsOn = false;
 
 		g_vars->scene24_water->hide();
 
-		g_fp->setObjectState(sO_StairsDown_24, g_fp->getObjectEnumState(sO_StairsDown_24, sO_IsOpened));
+		g_nmi->setObjectState(sO_StairsDown_24, g_nmi->getObjectEnumState(sO_StairsDown_24, sO_IsOpened));
 	} else {
 		g_vars->scene24_waterIsOn = true;
 
-		g_fp->setObjectState(sO_StairsDown_24, g_fp->getObjectEnumState(sO_StairsDown_24, sO_IsClosed));
+		g_nmi->setObjectState(sO_StairsDown_24, g_nmi->getObjectEnumState(sO_StairsDown_24, sO_IsClosed));
 	}
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 }
 
 void scene24_setPoolState() {
-	if (g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_Overfull)) {
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_vars->scene24_drop, 0);
-
-		g_fp->playSound(SND_24_007, 1);
-	} else if (g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_Full)) {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOFLOOR, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER, 1);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER2, 0);
-
-		g_fp->playSound(SND_24_006, 1);
-	} else if (g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_HalfFull)) {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOFLOOR, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER2, 1);
+	if (g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_Overfull)) {
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_vars->scene24_drop, 0);
+
+		g_nmi->playSound(SND_24_007, 1);
+	} else if (g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_Full)) {
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOFLOOR, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER2, 0);
+
+		g_nmi->playSound(SND_24_006, 1);
+	} else if (g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_HalfFull)) {
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOFLOOR, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER2, 1);
 	} else {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOFLOOR, 1);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER2, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOFLOOR, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene24_drop, ST_DRP24_EMPTY, QU_DRP24_TOWATER2, 0);
 	}
 }
 
 int sceneHandler24(ExCommand *cmd) {
 	if (cmd->_messageKind == 17 && cmd->_messageNum == 33) {
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200) {
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200) {
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 			}
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
 		if (g_vars->scene24_waterIsOn && !g_vars->scene24_water->_movement) {
@@ -119,7 +119,7 @@ int sceneHandler24(ExCommand *cmd) {
 		if (g_vars->scene24_jetIsOn && !g_vars->scene24_jet->_movement)
 			g_vars->scene24_jet->startAnim(MV_JET24_FLOW, 0, -1);
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 	}
 
 	return 0;
diff --git a/engines/ngi/fullpipe/scene25.cpp b/engines/ngi/fullpipe/scene25.cpp
index d544b6c3d0..fba4089e63 100644
--- a/engines/ngi/fullpipe/scene25.cpp
+++ b/engines/ngi/fullpipe/scene25.cpp
@@ -53,33 +53,33 @@ void scene25_initScene(Scene *sc, int entranceId) {
 	g_vars->scene25_drop->setAlpha(0xa0);
 	g_vars->scene25_dudeIsOnBoard = false;
 
-	if (g_fp->getObjectState(sO_Pool) < g_fp->getObjectEnumState(sO_Pool, sO_HalfFull)) {
+	if (g_nmi->getObjectState(sO_Pool) < g_nmi->getObjectEnumState(sO_Pool, sO_HalfFull)) {
 		g_vars->scene25_waterIsPresent = false;
 
 		g_vars->scene25_water->hide();
 	} else {
 		g_vars->scene25_waterIsPresent = true;
 
-		g_fp->playSound(SND_25_006, 1);
+		g_nmi->playSound(SND_25_006, 1);
 	}
 
-	int boardState = g_fp->getObjectState(sO_Board_25);
+	int boardState = g_nmi->getObjectState(sO_Board_25);
 
 	if (entranceId == TrubaRight) {
-		if (boardState == g_fp->getObjectEnumState(sO_Board_25, sO_FarAway)) {
+		if (boardState == g_nmi->getObjectEnumState(sO_Board_25, sO_FarAway)) {
 			scene25_showBoardOnRightFar();
 
-			g_fp->playSound(SND_25_029, 0);
+			g_nmi->playSound(SND_25_029, 0);
 
 			g_vars->scene25_boardIsSelectable = false;
 		} else {
-			if (boardState == g_fp->getObjectEnumState(sO_Board_25, sO_Nearby)
-				|| boardState == g_fp->getObjectEnumState(sO_Board_25, sO_WithDudeOnRight))
+			if (boardState == g_nmi->getObjectEnumState(sO_Board_25, sO_Nearby)
+				|| boardState == g_nmi->getObjectEnumState(sO_Board_25, sO_WithDudeOnRight))
 				scene25_showBoardOnRightClose();
 			g_vars->scene25_boardIsSelectable = false;
 		}
 	} else {
-		if (boardState == g_fp->getObjectEnumState(sO_Board_25, sO_WithDudeOnLeft)) {
+		if (boardState == g_nmi->getObjectEnumState(sO_Board_25, sO_WithDudeOnLeft)) {
 			if (!getGameLoaderInventory()->getCountItemsWithId(ANI_INV_BOARD)) {
 				getGameLoaderInventory()->addItem(ANI_INV_BOARD, 1);
 				getGameLoaderInventory()->rebuildItemRects();
@@ -94,32 +94,32 @@ void scene25_initScene(Scene *sc, int entranceId) {
 }
 
 int scene25_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
 	if (g_vars->scene25_waterIsPresent) {
 		int inv = getGameLoaderInventory()->getSelectedItemId();
 
-		if (g_fp->_objectIdAtCursor == ANI_WATER25) {
+		if (g_nmi->_objectIdAtCursor == ANI_WATER25) {
 			if ((g_vars->scene25_boardIsSelectable && (!inv || inv == ANI_INV_BOARD)) || (g_vars->scene25_dudeIsOnBoard && (inv == ANI_INV_LOPAT || !inv)))
-				g_fp->_cursorId = (g_fp->_cursorId != PIC_CSR_DEFAULT) ? PIC_CSR_ITN_INV : PIC_CSR_ITN;
-		} else if (g_fp->_objectIdAtCursor == ANI_BOARD25 && (!inv || inv == ANI_INV_SWAB || inv == ANI_INV_BROOM || inv == ANI_INV_LOPAT)) {
-			g_fp->_cursorId = (g_fp->_cursorId != PIC_CSR_DEFAULT) ? PIC_CSR_ITN_INV : PIC_CSR_ITN;
+				g_nmi->_cursorId = (g_nmi->_cursorId != PIC_CSR_DEFAULT) ? PIC_CSR_ITN_INV : PIC_CSR_ITN;
+		} else if (g_nmi->_objectIdAtCursor == ANI_BOARD25 && (!inv || inv == ANI_INV_SWAB || inv == ANI_INV_BROOM || inv == ANI_INV_LOPAT)) {
+			g_nmi->_cursorId = (g_nmi->_cursorId != PIC_CSR_DEFAULT) ? PIC_CSR_ITN_INV : PIC_CSR_ITN;
 		}
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void scene25_setupWater(Scene *a1, int entranceId) {
 	if (g_vars->scene25_waterIsPresent) {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOFLOOR, 0);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOWATER, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOFLOOR, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOWATER, 1);
 
 		if (entranceId != TrubaRight)
-			g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_25"), "MUSIC2", 0);
+			g_nmi->playTrack(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_25"), "MUSIC2", 0);
 	} else {
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOFLOOR, 1);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOWATER, 0);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOFLOOR, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene25_drop, ST_DRP25_EMPTY, QU_DRP25_TOWATER, 0);
 	}
 }
 
@@ -133,7 +133,7 @@ void sceneHandler25_startBearders() {
 	g_vars->scene25_bearders.clear();
 	g_vars->scene25_beardersCounter = 0;
 
-	StaticANIObject *bearded = g_fp->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1);
+	StaticANIObject *bearded = g_nmi->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1);
 
 	for (int i = 0; i < 3; i++) {
 		StaticANIObject *ani = new StaticANIObject(bearded);
@@ -142,7 +142,7 @@ void sceneHandler25_startBearders() {
 
 		ani->_statics = ani->getStaticsById(ST_BRDCMN_EMPTY);
 
-		g_fp->_currentScene->addStaticANIObject(ani, 1);
+		g_nmi->_currentScene->addStaticANIObject(ani, 1);
 	}
 
 	g_vars->scene25_beardersAreThere = true;
@@ -161,24 +161,24 @@ void sceneHandler25_enterMan() {
 void sceneHandler25_enterTruba() {
 	PicAniInfo info;
 
-	g_fp->_aniMan->getPicAniInfo(info);
-	g_fp->_aniMan->_messageQueueId = 0;
-	g_fp->_aniMan->changeStatics2(g_fp->_aniMan->_statics->_staticsId);
+	g_nmi->_aniMan->getPicAniInfo(info);
+	g_nmi->_aniMan->_messageQueueId = 0;
+	g_nmi->_aniMan->changeStatics2(g_nmi->_aniMan->_statics->_staticsId);
 
-	int x = g_fp->_aniMan->_ox;
-	int y = g_fp->_aniMan->_oy;
+	int x = g_nmi->_aniMan->_ox;
+	int y = g_nmi->_aniMan->_oy;
 
-	g_fp->_aniMan->setPicAniInfo(info);
+	g_nmi->_aniMan->setPicAniInfo(info);
 
-	int id = g_fp->_aniMan->_statics->_staticsId;
+	int id = g_nmi->_aniMan->_statics->_staticsId;
 	int qid = 0;
 
 	if (id == ST_MAN25_ONBOARD && x == 634 && y == 502) {
-		g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
+		g_nmi->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
 
 		qid = QU_SC25_MANTOTRUBA;
 	} else if (id == (ST_MAN25_ONBOARD|0x4000) && x == 632 && y == 502) {
-		g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
+		g_nmi->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
 
 		qid = QU_SC25_MANTOTRUBA_R;
 	}
@@ -190,30 +190,30 @@ void sceneHandler25_enterTruba() {
 }
 
 void sceneHandler25_saveEntrance(int value) {
-	g_fp->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME")->setSubVarAsInt("Entrance", value);
+	g_nmi->getGameLoaderGameVar()->getSubVarByName("OBJSTATES")->getSubVarByName("SAVEGAME")->setSubVarAsInt("Entrance", value);
 }
 
 void sceneHandler25_toLadder() {
 	PicAniInfo info;
 
-	g_fp->_aniMan->getPicAniInfo(info);
-	g_fp->_aniMan->_messageQueueId = 0;
-	g_fp->_aniMan->changeStatics2(g_fp->_aniMan->_statics->_staticsId);
+	g_nmi->_aniMan->getPicAniInfo(info);
+	g_nmi->_aniMan->_messageQueueId = 0;
+	g_nmi->_aniMan->changeStatics2(g_nmi->_aniMan->_statics->_staticsId);
 
-	int x = g_fp->_aniMan->_ox;
-	int y = g_fp->_aniMan->_oy;
+	int x = g_nmi->_aniMan->_ox;
+	int y = g_nmi->_aniMan->_oy;
 
-	g_fp->_aniMan->setPicAniInfo(info);
+	g_nmi->_aniMan->setPicAniInfo(info);
 
-	int id = g_fp->_aniMan->_statics->_staticsId;
+	int id = g_nmi->_aniMan->_statics->_staticsId;
 	int qid = 0;
 
 	if (id == ST_MAN25_ONBOARD && x == 307 && y == 502) {
-		g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
+		g_nmi->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
 
 		qid = QU_SC25_BACKTOLADDER;
 	} else if (id == (ST_MAN25_ONBOARD|0x4000) && x == 192 && y == 502) {
-		g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
+		g_nmi->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
 
 		qid = QU_SC25_BOARDTOLADDER;
 	}
@@ -229,29 +229,29 @@ void sceneHandler25_toLadder() {
 }
 
 void sceneHandler25_animateBearders() {
-	if (g_fp->_rnd.getRandomNumber(32767) < 218) {
+	if (g_nmi->_rnd.getRandomNumber(32767) < 218) {
 		MessageQueue *mq;
 
-		mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC25_BEARDED), 0, 1);
+		mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC25_BEARDED), 0, 1);
 
 		mq->setParamInt(-1, g_vars->scene25_bearders[0]->_odelay);
-		mq->getExCommandByIndex(0)->_x = g_fp->_rnd.getRandomNumber(650) + 100;
+		mq->getExCommandByIndex(0)->_x = g_nmi->_rnd.getRandomNumber(650) + 100;
 		mq->chain(0);
 
 		g_vars->scene25_beardersCounter = 0;
 
-		if (g_fp->_rnd.getRandomNumber(32767) < 0x1FFF) {
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC25_BEARDED2), 0, 1);
+		if (g_nmi->_rnd.getRandomNumber(32767) < 0x1FFF) {
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC25_BEARDED2), 0, 1);
 
 			mq->setParamInt(-1, g_vars->scene25_bearders[1]->_odelay);
-			mq->getExCommandByIndex(0)->_x = g_fp->_rnd.getRandomNumber(650) + 100;
+			mq->getExCommandByIndex(0)->_x = g_nmi->_rnd.getRandomNumber(650) + 100;
 			mq->chain(0);
 
-			if (g_fp->_rnd.getRandomNumber(32767) < 8191) {
-				mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC25_BEARDED3), 0, 1);
+			if (g_nmi->_rnd.getRandomNumber(32767) < 8191) {
+				mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC25_BEARDED3), 0, 1);
 
 				mq->setParamInt(-1, g_vars->scene25_bearders[2]->_odelay);
-				mq->getExCommandByIndex(0)->_x = g_fp->_rnd.getRandomNumber(650) + 100;
+				mq->getExCommandByIndex(0)->_x = g_nmi->_rnd.getRandomNumber(650) + 100;
 				mq->chain(0);
 			}
 		}
@@ -259,44 +259,44 @@ void sceneHandler25_animateBearders() {
 }
 
 void sceneHandler25_sneeze() {
-	if (g_fp->_rnd.getRandomNumber(32767) % 10) {
-		if (g_fp->_aniMan->_statics->_staticsId == ST_MAN25_ONBOARD) {
-			g_fp->_aniMan->startAnim(MV_MAN25_ONBOARD, 0, -1);
-		} else if (g_fp->_aniMan->_statics->_staticsId == (ST_MAN25_ONBOARD|0x4000)) {
-			g_fp->_aniMan->startAnim(rMV_MAN25_ONBOARD, 0, -1);
+	if (g_nmi->_rnd.getRandomNumber(32767) % 10) {
+		if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN25_ONBOARD) {
+			g_nmi->_aniMan->startAnim(MV_MAN25_ONBOARD, 0, -1);
+		} else if (g_nmi->_aniMan->_statics->_staticsId == (ST_MAN25_ONBOARD|0x4000)) {
+			g_nmi->_aniMan->startAnim(rMV_MAN25_ONBOARD, 0, -1);
 		}
-	} else if (g_fp->_aniMan->_statics->_staticsId == ST_MAN25_ONBOARD) {
-		g_fp->_aniMan->startAnim(MV_MAN25_CHIH, 0, -1);
-	} else if (g_fp->_aniMan->_statics->_staticsId == (ST_MAN25_ONBOARD|0x4000)) {
-		g_fp->_aniMan->startAnim(rMV_MAN25_CHIH, 0, -1);
+	} else if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN25_ONBOARD) {
+		g_nmi->_aniMan->startAnim(MV_MAN25_CHIH, 0, -1);
+	} else if (g_nmi->_aniMan->_statics->_staticsId == (ST_MAN25_ONBOARD|0x4000)) {
+		g_nmi->_aniMan->startAnim(rMV_MAN25_CHIH, 0, -1);
 	}
 }
 
 void sceneHandler25_rowShovel() {
 	PicAniInfo info;
 
-	g_fp->_aniMan->getPicAniInfo(info);
-	g_fp->_aniMan->_messageQueueId = 0;
-	g_fp->_aniMan->changeStatics2(g_fp->_aniMan->_statics->_staticsId);
+	g_nmi->_aniMan->getPicAniInfo(info);
+	g_nmi->_aniMan->_messageQueueId = 0;
+	g_nmi->_aniMan->changeStatics2(g_nmi->_aniMan->_statics->_staticsId);
 
-	int x = g_fp->_aniMan->_ox;
-	int y = g_fp->_aniMan->_oy;
+	int x = g_nmi->_aniMan->_ox;
+	int y = g_nmi->_aniMan->_oy;
 
-	g_fp->_aniMan->setPicAniInfo(info);
+	g_nmi->_aniMan->setPicAniInfo(info);
 
-	int id = g_fp->_aniMan->_statics->_staticsId;
+	int id = g_nmi->_aniMan->_statics->_staticsId;
 	int qid = 0;
 
 	if (id == ST_MAN25_ONBOARD && x == 370 && y == 502) {
-		g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
+		g_nmi->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
 
 		qid = QU_SC25_ROWTOTRUBA;
 	} else if (id == (ST_MAN25_ONBOARD|0x4000) && x == 632 && y == 502) {
-		g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
+		g_nmi->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
 
 		qid = QU_SC25_ROWTOLADDER;
 
-		g_fp->playSound(SND_25_030, 0);
+		g_nmi->playSound(SND_25_030, 0);
 	}
 
 	if (qid) {
@@ -309,39 +309,39 @@ void sceneHandler25_rowShovel() {
 void sceneHandler25_rowHand() {
 	PicAniInfo info;
 
-	g_fp->_aniMan->getPicAniInfo(info);
-	g_fp->_aniMan->_messageQueueId = 0;
-	g_fp->_aniMan->changeStatics2(g_fp->_aniMan->_statics->_staticsId);
+	g_nmi->_aniMan->getPicAniInfo(info);
+	g_nmi->_aniMan->_messageQueueId = 0;
+	g_nmi->_aniMan->changeStatics2(g_nmi->_aniMan->_statics->_staticsId);
 
-	int x = g_fp->_aniMan->_ox;
-	int y = g_fp->_aniMan->_oy;
+	int x = g_nmi->_aniMan->_ox;
+	int y = g_nmi->_aniMan->_oy;
 
-	g_fp->_aniMan->setPicAniInfo(info);
+	g_nmi->_aniMan->setPicAniInfo(info);
 
-	int id = g_fp->_aniMan->_statics->_staticsId;
+	int id = g_nmi->_aniMan->_statics->_staticsId;
 	int qid = 0;
 
 	if (id == ST_MAN25_ONBOARD && x == 370 && y == 502) {
-		g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
+		g_nmi->_aniMan->changeStatics2(ST_MAN25_ONBOARD);
 
 		qid = QU_SC25_TRYROWHAND;
 	} else if (id == (ST_MAN25_ONBOARD|0x4000) && x == 632 && y == 502) {
-		g_fp->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
+		g_nmi->_aniMan->changeStatics2(ST_MAN25_ONBOARD|0x4000);
 
 		qid = QU_SC25_TRYROWHAND_R;
 	}
 
 	if (qid) {
-		chainObjQueue(g_fp->_aniMan, qid, 1);
+		chainObjQueue(g_nmi->_aniMan, qid, 1);
 		g_vars->scene25_sneezeFlipper = false;
 	}
 }
 
 void sceneHandler25_putBoard() {
-	if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
-		|| g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
-		g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
-		g_fp->_aniMan->setOXY(281, 481);
+	if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+		|| g_nmi->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
+		g_nmi->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
+		g_nmi->_aniMan->setOXY(281, 481);
 
 		chainQueue(QU_SC25_PUTBOARD, 1);
 
@@ -352,9 +352,9 @@ void sceneHandler25_putBoard() {
 }
 
 void sceneHandler25_tryWater() {
-	if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
-		|| g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
-		g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
+	if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+		|| g_nmi->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
+		g_nmi->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
 
 		chainQueue(QU_SC25_TRYWATER, 1);
 	}
@@ -363,26 +363,26 @@ void sceneHandler25_tryWater() {
 void sceneHandler25_tryRow(int obj) {
 	PicAniInfo info;
 
-	g_fp->_aniMan->getPicAniInfo(info);
-	g_fp->_aniMan->_messageQueueId = 0;
-	g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+	g_nmi->_aniMan->getPicAniInfo(info);
+	g_nmi->_aniMan->_messageQueueId = 0;
+	g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 
-	int x = g_fp->_aniMan->_ox;
-	int y = g_fp->_aniMan->_oy;
+	int x = g_nmi->_aniMan->_ox;
+	int y = g_nmi->_aniMan->_oy;
 
-	g_fp->_aniMan->setPicAniInfo(info);
+	g_nmi->_aniMan->setPicAniInfo(info);
 
 	int qid = 0;
 
 	if (x == 788 && y == 468) {
 		if (g_vars->scene25_board->_statics->_staticsId == ST_BRD25_RIGHT2) {
 			if (obj == ANI_INV_BROOM) {
-				g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+				g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 
 				qid = QU_SC25_TRYBROOM;
 			}
 			if (obj == ANI_INV_LOPAT) {
-				g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+				g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 
 				qid = QU_SC25_TRYSPADE;
 			}
@@ -390,24 +390,24 @@ void sceneHandler25_tryRow(int obj) {
 			if (qid) {
 				chainQueue(qid, 1);
 
-				g_fp->playSound(SND_25_028, 0);
+				g_nmi->playSound(SND_25_028, 0);
 
 				return;
 			}
 
 			if (obj == ANI_INV_SWAB) {
-				g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+				g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 
 				chainQueue(QU_SC25_TRYSWAB, 1);
 			} else if (!obj) {
-				g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+				g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 
-				chainObjQueue(g_fp->_aniMan, QU_SC25_TRYHAND, 1);
+				chainObjQueue(g_nmi->_aniMan, QU_SC25_TRYHAND, 1);
 
-				g_fp->playSound(SND_25_028, 0);
+				g_nmi->playSound(SND_25_028, 0);
 			}
 		} else if (g_vars->scene25_board->_statics->_staticsId == (ST_BRD25_RIGHT2 | 0x4000) && !obj) {
-			g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+			g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 
 			chainQueue(QU_SC25_TRUBATOBOARD, 1);
 
@@ -417,17 +417,17 @@ void sceneHandler25_tryRow(int obj) {
 }
 
 void sceneHandler25_ladderUp() {
-	if (g_fp->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
-		|| g_fp->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
-		g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
+	if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN_STANDLADDER
+		|| g_nmi->_aniMan->_statics->_staticsId == ST_MAN_LADDERDOWN_R) {
+		g_nmi->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
 
 		chainQueue(QU_SC25_LADDERUP, 1);
 	}
 }
 
 void sceneHandler25_backToPipe() {
-	if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == (ST_MAN_RIGHT|0x4000)) {
-		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000);
+	if (!g_nmi->_aniMan->_movement && g_nmi->_aniMan->_statics->_staticsId == (ST_MAN_RIGHT|0x4000)) {
+		g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT|0x4000);
 
 		chainQueue(QU_SC25_BACKTOTRUBA, 1);
 	}
@@ -520,15 +520,15 @@ void sceneHandler25_walkOnLadder(StaticANIObject *ani, Common::Point *pnt, Messa
 }
 
 bool sceneHandler25_isOnLadder(ExCommand *cmd) {
-	if ((g_fp->_aniMan->_movement && g_fp->_aniMan->_movement->_id == MV_MAN_GOLADDERDOWN)
-		|| g_fp->_aniMan->_statics->_staticsId == ST_MAN_GOLADDERD) {
+	if ((g_nmi->_aniMan->_movement && g_nmi->_aniMan->_movement->_id == MV_MAN_GOLADDERDOWN)
+		|| g_nmi->_aniMan->_statics->_staticsId == ST_MAN_GOLADDERD) {
 		Interaction *inter = getGameLoaderInteractionController()->getInteractionByObjectIds(PIC_SC25_LADDERDOWN, ANI_MAN, cmd->_param);
 
 		if (!inter)
 			return 0;
 
 		MessageQueue *mq = new MessageQueue(inter->_messageQueue, 0, 1);
-		PictureObject *pic = g_fp->_currentScene->getPictureObjectById(PIC_SC25_LADDERDOWN, 0);
+		PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(PIC_SC25_LADDERDOWN, 0);
 		Common::Point point;
 
 		point.x = inter->_xOffs + pic->_ox;
@@ -536,7 +536,7 @@ bool sceneHandler25_isOnLadder(ExCommand *cmd) {
 
 		mq->setFlags(mq->getFlags() | 1);
 
-		sceneHandler25_walkOnLadder(g_fp->_aniMan, &point, mq, 0);
+		sceneHandler25_walkOnLadder(g_nmi->_aniMan, &point, mq, 0);
 
 		return true;
 	} else {
@@ -570,39 +570,39 @@ int sceneHandler25(ExCommand *cmd) {
 		break;
 
 	case MSG_BRD_TURN:
-		switch (g_fp->_rnd.getRandomNumber(3)) {
+		switch (g_nmi->_rnd.getRandomNumber(3)) {
 		case 0:
-			g_fp->playSound(SND_25_025, 0);
+			g_nmi->playSound(SND_25_025, 0);
 			break;
 
 		case 1:
-			g_fp->playSound(SND_25_026, 0);
+			g_nmi->playSound(SND_25_026, 0);
 			break;
 
 		case 2:
 		default:
-			g_fp->playSound(SND_25_027, 0);
+			g_nmi->playSound(SND_25_027, 0);
 			break;
 		}
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
-			int y = g_fp->_aniMan2->_oy;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
+			int y = g_nmi->_aniMan2->_oy;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 
 			if (!g_vars->scene25_waterIsPresent) {
-				if (y < g_fp->_sceneRect.top + 200)
-					g_fp->_currentScene->_y = y - 300 - g_fp->_sceneRect.top;
+				if (y < g_nmi->_sceneRect.top + 200)
+					g_nmi->_currentScene->_y = y - 300 - g_nmi->_sceneRect.top;
 
-				if (y > g_fp->_sceneRect.bottom - 200)
-					g_fp->_currentScene->_y = y + 300 - g_fp->_sceneRect.bottom;
+				if (y > g_nmi->_sceneRect.bottom - 200)
+					g_nmi->_currentScene->_y = y + 300 - g_nmi->_sceneRect.bottom;
 			}
 		}
 
@@ -613,13 +613,13 @@ int sceneHandler25(ExCommand *cmd) {
 				sceneHandler25_animateBearders();
 		}
 
-		g_fp->_behaviorManager->updateBehaviors();
-		g_fp->startSceneTrack();
+		g_nmi->_behaviorManager->updateBehaviors();
+		g_nmi->startSceneTrack();
 
 		if (g_vars->scene25_waterIsPresent && !g_vars->scene25_water->_movement)
 			g_vars->scene25_water->startAnim(MV_WTR25_FLOW, 0, -1);
 
-		if (g_vars->scene25_dudeIsOnBoard && !g_fp->_aniMan->_movement && g_vars->scene25_sneezeFlipper)
+		if (g_vars->scene25_dudeIsOnBoard && !g_nmi->_aniMan->_movement && g_vars->scene25_sneezeFlipper)
 			sceneHandler25_sneeze();
 
 		g_vars->scene25_sneezeFlipper = true;
@@ -636,7 +636,7 @@ int sceneHandler25(ExCommand *cmd) {
 
 	case 29:
 		{
-			int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (!g_vars->scene25_waterIsPresent) {
 				if ((picId == PIC_SC25_LADDERUP || picId == PIC_SC25_LADDERDOWN) && sceneHandler25_isOnLadder(cmd))
@@ -645,12 +645,12 @@ int sceneHandler25(ExCommand *cmd) {
 				return 0;
 			}
 
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (ani) {
-				if (g_fp->_aniMan != ani) {
-					if (g_fp->_aniMan->isIdle()) {
-						if (!(g_fp->_aniMan->_flags & 0x100)) {
+				if (g_nmi->_aniMan != ani) {
+					if (g_nmi->_aniMan->isIdle()) {
+						if (!(g_nmi->_aniMan->_flags & 0x100)) {
 							if (ani->_id == ANI_WATER25) {
 								if (g_vars->scene25_dudeIsOnBoard) {
 									if (cmd->_param == ANI_INV_LOPAT) {
@@ -686,7 +686,7 @@ int sceneHandler25(ExCommand *cmd) {
 			if (picId == PIC_SC25_LADDERUP && sceneHandler25_isOnLadder(cmd))
 				cmd->_messageKind = 0;
 
-			if (!g_fp->_aniMan->isIdle() || (g_fp->_aniMan->_flags & 0x100))
+			if (!g_nmi->_aniMan->isIdle() || (g_nmi->_aniMan->_flags & 0x100))
 				return 0;
 
 			if (g_vars->scene25_dudeIsOnBoard) {
diff --git a/engines/ngi/fullpipe/scene26.cpp b/engines/ngi/fullpipe/scene26.cpp
index 158a613cd8..aace588d1c 100644
--- a/engines/ngi/fullpipe/scene26.cpp
+++ b/engines/ngi/fullpipe/scene26.cpp
@@ -42,9 +42,9 @@ void scene26_initScene(Scene *sc) {
 	g_vars->scene26_sockPic = sc->getPictureObjectById(PIC_SC26_SOCK, 0);
 	g_vars->scene26_sock = sc->getStaticANIObject1ById(ANI_SOCK_26, -1);
 
-	if (g_fp->getObjectState(sO_Hatch_26) == g_fp->getObjectEnumState(sO_Hatch_26, sO_WithSock)) {
-		g_fp->setObjectState(sO_Hatch_26, g_fp->getObjectEnumState(sO_Hatch_26, sO_Closed));
-		g_fp->setObjectState(sO_Sock_26, g_fp->getObjectEnumState(sO_Sock_26, sO_HangsOnPipe));
+	if (g_nmi->getObjectState(sO_Hatch_26) == g_nmi->getObjectEnumState(sO_Hatch_26, sO_WithSock)) {
+		g_nmi->setObjectState(sO_Hatch_26, g_nmi->getObjectEnumState(sO_Hatch_26, sO_Closed));
+		g_nmi->setObjectState(sO_Sock_26, g_nmi->getObjectEnumState(sO_Sock_26, sO_HangsOnPipe));
 	}
 
 	Interaction *inter = getGameLoaderInteractionController()->getInteractionByObjectIds(ANI_LUK26, ANI_MAN, ANI_INV_SOCK);
@@ -54,38 +54,38 @@ void scene26_initScene(Scene *sc) {
 	else
 		inter->_flags |= 0x20000;
 
-	if (g_fp->getObjectState(sO_Sock_26) == g_fp->getObjectEnumState(sO_Sock_26, sO_HangsOnPipe))
+	if (g_nmi->getObjectState(sO_Sock_26) == g_nmi->getObjectEnumState(sO_Sock_26, sO_HangsOnPipe))
 		g_vars->scene26_sockPic->_flags |= 4;
 	else
 		g_vars->scene26_sockPic->_flags &= 0xFFFB;
 
-	if (g_fp->getObjectState(sO_Valve1_26) == g_fp->getObjectEnumState(sO_Valve1_26, sO_Opened))
-		g_fp->playSound(SND_26_018, 1);
+	if (g_nmi->getObjectState(sO_Valve1_26) == g_nmi->getObjectEnumState(sO_Valve1_26, sO_Opened))
+		g_nmi->playSound(SND_26_018, 1);
 }
 
 int scene26_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor != ANI_VENT || g_fp->_cursorId != PIC_CSR_DEFAULT) {
-		if (g_fp->_cursorId == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC26_LTRUBA)
-			g_fp->_cursorId = PIC_CSR_GOL;
+	if (g_nmi->_objectIdAtCursor != ANI_VENT || g_nmi->_cursorId != PIC_CSR_DEFAULT) {
+		if (g_nmi->_cursorId == PIC_CSR_ITN && g_nmi->_objectIdAtCursor == PIC_SC26_LTRUBA)
+			g_nmi->_cursorId = PIC_CSR_GOL;
 
 		// WORKAROUND: Fixing cursor
-		if (g_fp->_objectIdAtCursor == PIC_SC26_LTRUBA &&
-			(g_fp->_cursorId == PIC_CSR_GOU || g_fp->_cursorId == PIC_CSR_GOD || g_fp->_cursorId == PIC_CSR_GOR))
-				g_fp->_cursorId = PIC_CSR_GOL;
+		if (g_nmi->_objectIdAtCursor == PIC_SC26_LTRUBA &&
+			(g_nmi->_cursorId == PIC_CSR_GOU || g_nmi->_cursorId == PIC_CSR_GOD || g_nmi->_cursorId == PIC_CSR_GOR))
+				g_nmi->_cursorId = PIC_CSR_GOL;
 	} else {
-		g_fp->_cursorId = PIC_CSR_ITN;
+		g_nmi->_cursorId = PIC_CSR_ITN;
 	}
 
-  return g_fp->_cursorId;
+  return g_nmi->_cursorId;
 }
 
 void sceneHandler26_updateDrop() {
-	if (g_fp->getObjectState(sO_Valve5_26) == g_fp->getObjectEnumState(sO_Valve5_26, sO_Closed))
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_vars->scene26_drop, 0);
+	if (g_nmi->getObjectState(sO_Valve5_26) == g_nmi->getObjectEnumState(sO_Valve5_26, sO_Closed))
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_vars->scene26_drop, 0);
 	else
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_vars->scene26_drop, 1);
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_vars->scene26_drop, 1);
 }
 
 void scene26_setupDrop(Scene *sc) {
@@ -99,19 +99,19 @@ void sceneHandler26_showChi() {
 }
 
 void sceneHandler26_updatePool() {
-	if (g_fp->getObjectState(sO_Valve1_26) == g_fp->getObjectEnumState(sO_Valve1_26, sO_Opened))
-		g_fp->setObjectState(sO_Pool, g_fp->getObjectEnumState(sO_Pool, sO_Overfull));
-	else if (g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_Overfull))
-		g_fp->setObjectState(sO_Pool, g_fp->getObjectEnumState(sO_Pool, sO_Full));
-
-	if (g_fp->getObjectState(sO_Valve2_26) == g_fp->getObjectEnumState(sO_Valve2_26, sO_Opened)) {
-		if (g_fp->getObjectState(sO_Pool) >= g_fp->getObjectEnumState(sO_Pool, sO_Full))
-			g_fp->setObjectState(sO_Pool, g_fp->getObjectEnumState(sO_Pool, sO_HalfFull));
+	if (g_nmi->getObjectState(sO_Valve1_26) == g_nmi->getObjectEnumState(sO_Valve1_26, sO_Opened))
+		g_nmi->setObjectState(sO_Pool, g_nmi->getObjectEnumState(sO_Pool, sO_Overfull));
+	else if (g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_Overfull))
+		g_nmi->setObjectState(sO_Pool, g_nmi->getObjectEnumState(sO_Pool, sO_Full));
+
+	if (g_nmi->getObjectState(sO_Valve2_26) == g_nmi->getObjectEnumState(sO_Valve2_26, sO_Opened)) {
+		if (g_nmi->getObjectState(sO_Pool) >= g_nmi->getObjectEnumState(sO_Pool, sO_Full))
+			g_nmi->setObjectState(sO_Pool, g_nmi->getObjectEnumState(sO_Pool, sO_HalfFull));
 	}
 
-	if (g_fp->getObjectState(sO_Valve3_26) == g_fp->getObjectEnumState(sO_Valve3_26, sO_Opened)) {
-		if (g_fp->getObjectState(sO_Pool) >= g_fp->getObjectEnumState(sO_Pool, sO_HalfFull))
-			g_fp->setObjectState(sO_Pool, g_fp->getObjectEnumState(sO_Pool, sO_Empty));
+	if (g_nmi->getObjectState(sO_Valve3_26) == g_nmi->getObjectEnumState(sO_Valve3_26, sO_Opened)) {
+		if (g_nmi->getObjectState(sO_Pool) >= g_nmi->getObjectEnumState(sO_Pool, sO_HalfFull))
+			g_nmi->setObjectState(sO_Pool, g_nmi->getObjectEnumState(sO_Pool, sO_Empty));
 	}
 }
 
@@ -126,50 +126,50 @@ void sceneHandler26_testVent() {
 		return;
 
 	if (g_vars->scene26_activeVent->_odelay == 0) {
-		if (g_fp->getObjectState(sO_Valve1_26) == g_fp->getObjectEnumState(sO_Valve1_26, sO_Opened))
-			g_fp->stopAllSoundInstances(SND_26_018);
+		if (g_nmi->getObjectState(sO_Valve1_26) == g_nmi->getObjectEnumState(sO_Valve1_26, sO_Opened))
+			g_nmi->stopAllSoundInstances(SND_26_018);
 		else
-			g_fp->playSound(SND_26_018, 1);
+			g_nmi->playSound(SND_26_018, 1);
 
-		if (g_fp->getObjectState(sO_Valve2_26) == g_fp->getObjectEnumState(sO_Valve2_26, sO_Opened)) {
+		if (g_nmi->getObjectState(sO_Valve2_26) == g_nmi->getObjectEnumState(sO_Valve2_26, sO_Opened)) {
 			chainQueue(QU_SC26_AUTOCLOSE2, 0);
 
-			g_fp->playSound(SND_26_020, 0);
+			g_nmi->playSound(SND_26_020, 0);
 		}
 
-		if (g_fp->getObjectState(sO_Valve3_26) == g_fp->getObjectEnumState(sO_Valve3_26, sO_Opened)) {
+		if (g_nmi->getObjectState(sO_Valve3_26) == g_nmi->getObjectEnumState(sO_Valve3_26, sO_Opened)) {
 			chainQueue(QU_SC26_AUTOCLOSE3, 0);
 
-			g_fp->playSound(SND_26_020, 0);
+			g_nmi->playSound(SND_26_020, 0);
 		}
 	} else if (g_vars->scene26_activeVent->_odelay == 1) {
-		if (g_fp->getObjectState(sO_Valve2_26) == g_fp->getObjectEnumState(sO_Valve2_26, sO_Opened))
-			g_fp->playSound(SND_26_020, 0);
+		if (g_nmi->getObjectState(sO_Valve2_26) == g_nmi->getObjectEnumState(sO_Valve2_26, sO_Opened))
+			g_nmi->playSound(SND_26_020, 0);
 		else
-			g_fp->playSound(SND_26_019, 0);
+			g_nmi->playSound(SND_26_019, 0);
 
-		if (g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_Overfull)
-			|| g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_Full))
-			g_fp->playSound(SND_26_003, 0);
+		if (g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_Overfull)
+			|| g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_Full))
+			g_nmi->playSound(SND_26_003, 0);
 
-		if (g_fp->getObjectState(sO_Valve1_26) == g_fp->getObjectEnumState(sO_Valve1_26, sO_Opened)) {
-			g_fp->stopAllSoundInstances(SND_26_018);
+		if (g_nmi->getObjectState(sO_Valve1_26) == g_nmi->getObjectEnumState(sO_Valve1_26, sO_Opened)) {
+			g_nmi->stopAllSoundInstances(SND_26_018);
 
 			chainQueue(QU_SC26_AUTOCLOSE1, 0);
 		}
 	} else if (g_vars->scene26_activeVent->_odelay == 2) {
-		if (g_fp->getObjectState(sO_Valve3_26) == g_fp->getObjectEnumState(sO_Valve3_26, sO_Opened))
-			g_fp->playSound(SND_26_020, 0);
+		if (g_nmi->getObjectState(sO_Valve3_26) == g_nmi->getObjectEnumState(sO_Valve3_26, sO_Opened))
+			g_nmi->playSound(SND_26_020, 0);
 		else
-			g_fp->playSound(SND_26_019, 0);
+			g_nmi->playSound(SND_26_019, 0);
 
-		if (g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_Overfull)
-			 || g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_Full)
-			 || g_fp->getObjectState(sO_Pool) == g_fp->getObjectEnumState(sO_Pool, sO_HalfFull))
-			g_fp->playSound(SND_26_003, 0);
+		if (g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_Overfull)
+			 || g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_Full)
+			 || g_nmi->getObjectState(sO_Pool) == g_nmi->getObjectEnumState(sO_Pool, sO_HalfFull))
+			g_nmi->playSound(SND_26_003, 0);
 
-		if (g_fp->getObjectState(sO_Valve1_26) == g_fp->getObjectEnumState(sO_Valve1_26, sO_Opened)) {
-			g_fp->stopAllSoundInstances(SND_26_018);
+		if (g_nmi->getObjectState(sO_Valve1_26) == g_nmi->getObjectEnumState(sO_Valve1_26, sO_Opened)) {
+			g_nmi->stopAllSoundInstances(SND_26_018);
 
 			chainQueue(QU_SC26_AUTOCLOSE1, 0);
 		}
@@ -202,7 +202,7 @@ void sceneHandler26_animateVents(StaticANIObject *ani) {
 
 	switch (ani->_odelay) {
 	case 0:
-		if (g_fp->getObjectState(sO_Valve1_26) == g_fp->getObjectEnumState(sO_Valve1_26, sO_Closed)) {
+		if (g_nmi->getObjectState(sO_Valve1_26) == g_nmi->getObjectEnumState(sO_Valve1_26, sO_Closed)) {
 			qId = QU_SC26_OPEN1;
 		} else {
 			qId = QU_SC26_CLOSE1;
@@ -210,7 +210,7 @@ void sceneHandler26_animateVents(StaticANIObject *ani) {
 		break;
 
 	case 1:
-		if (g_fp->getObjectState(sO_Valve2_26) == g_fp->getObjectEnumState(sO_Valve2_26, sO_Closed)) {
+		if (g_nmi->getObjectState(sO_Valve2_26) == g_nmi->getObjectEnumState(sO_Valve2_26, sO_Closed)) {
 			qId = QU_SC26_OPEN2;
 		} else {
 			qId = QU_SC26_CLOSE2;
@@ -218,7 +218,7 @@ void sceneHandler26_animateVents(StaticANIObject *ani) {
 		break;
 
 	case 2:
-		if (g_fp->getObjectState(sO_Valve3_26) == g_fp->getObjectEnumState(sO_Valve3_26, sO_Closed)) {
+		if (g_nmi->getObjectState(sO_Valve3_26) == g_nmi->getObjectEnumState(sO_Valve3_26, sO_Closed)) {
 			qId = QU_SC26_OPEN3;
 		} else {
 			qId = QU_SC26_CLOSE3;
@@ -226,7 +226,7 @@ void sceneHandler26_animateVents(StaticANIObject *ani) {
 		break;
 
 	case 3:
-		if (g_fp->getObjectState(sO_Valve4_26) == g_fp->getObjectEnumState(sO_Valve4_26, sO_Closed)) {
+		if (g_nmi->getObjectState(sO_Valve4_26) == g_nmi->getObjectEnumState(sO_Valve4_26, sO_Closed)) {
 			qId = QU_SC26_OPEN4;
 		} else {
 			qId = QU_SC26_CLOSE4;
@@ -234,7 +234,7 @@ void sceneHandler26_animateVents(StaticANIObject *ani) {
 		break;
 
 	case 4:
-		if (g_fp->getObjectState(sO_Valve5_26) == g_fp->getObjectEnumState(sO_Valve5_26, sO_Closed)) {
+		if (g_nmi->getObjectState(sO_Valve5_26) == g_nmi->getObjectEnumState(sO_Valve5_26, sO_Closed)) {
 			qId = QU_SC26_OPEN5;
 		} else {
 			qId = QU_SC26_CLOSE5;
@@ -246,7 +246,7 @@ void sceneHandler26_animateVents(StaticANIObject *ani) {
 	}
 
 	if (qId) {
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(qId), 0, 0);
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(qId), 0, 0);
 
 		mq->setFlags(mq->getFlags() | 1);
 		mq->chain(0);
@@ -254,15 +254,15 @@ void sceneHandler26_animateVents(StaticANIObject *ani) {
 }
 
 void sceneHandler26_clickVent(StaticANIObject *ani, ExCommand *cmd) {
-	if (ani->_odelay || g_fp->getObjectState(sO_Hatch_26) != g_fp->getObjectEnumState(sO_Hatch_26, sO_Opened)) {
-		if (g_fp->_aniMan->isIdle() && !(g_fp->_aniMan->_flags & 0x100)) {
+	if (ani->_odelay || g_nmi->getObjectState(sO_Hatch_26) != g_nmi->getObjectEnumState(sO_Hatch_26, sO_Opened)) {
+		if (g_nmi->_aniMan->isIdle() && !(g_nmi->_aniMan->_flags & 0x100)) {
 			g_vars->scene26_activeVent = ani;
 
 			int x = ani->_ox - 20;
 			int y = ani->_oy + 61;
 
-			if (abs(x - g_fp->_aniMan->_ox) > 1 || abs(y - g_fp->_aniMan->_oy) > 1 || g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_UP) {
-				MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, x, y, 1, ST_MAN_UP);
+			if (abs(x - g_nmi->_aniMan->_ox) > 1 || abs(y - g_nmi->_aniMan->_oy) > 1 || g_nmi->_aniMan->_movement || g_nmi->_aniMan->_statics->_staticsId != ST_MAN_UP) {
+				MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, x, y, 1, ST_MAN_UP);
 
 				if (mq) {
 					ExCommand *ex = new ExCommand(0, 17, MSG_SC26_CLICKVENT, 0, 0, 0, 1, 0, 0, 0);
@@ -272,7 +272,7 @@ void sceneHandler26_clickVent(StaticANIObject *ani, ExCommand *cmd) {
 
 					mq->addExCommandToEnd(ex);
 
-					postExCommand(g_fp->_aniMan->_id, 2, x, y, 0, -1);
+					postExCommand(g_nmi->_aniMan->_id, 2, x, y, 0, -1);
 				}
 			} else {
 				sceneHandler26_animateVents(ani);
@@ -314,7 +314,7 @@ int sceneHandler26(ExCommand *cmd) {
 
 	case MSG_SC26_CLICKVENT:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT, cmd->_param);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT, cmd->_param);
 
 			if (ani && ani->_id == ANI_VENT) {
 				sceneHandler26_clickVent(ani, cmd);
@@ -328,7 +328,7 @@ int sceneHandler26(ExCommand *cmd) {
 
 	case 29:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (ani && ani->_id == ANI_VENT) {
 				sceneHandler26_clickVent(ani, cmd);
@@ -337,19 +337,19 @@ int sceneHandler26(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
-		g_fp->startSceneTrack();
+		g_nmi->startSceneTrack();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene27.cpp b/engines/ngi/fullpipe/scene27.cpp
index e6b5f71d29..4378e1306a 100644
--- a/engines/ngi/fullpipe/scene27.cpp
+++ b/engines/ngi/fullpipe/scene27.cpp
@@ -76,36 +76,36 @@ void scene27_initScene(Scene *sc) {
 	g_vars->scene27_knockCount = 0;
 	g_vars->scene27_launchPhase = 0;
 
-	Scene *oldsc = g_fp->_currentScene;
-	g_fp->_currentScene = sc;
+	Scene *oldsc = g_nmi->_currentScene;
+	g_nmi->_currentScene = sc;
 
-	if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSwab)) {
+	if (g_nmi->getObjectState(sO_Maid) == g_nmi->getObjectEnumState(sO_Maid, sO_WithSwab)) {
 		g_vars->scene27_maid->changeStatics2(ST_MID_SWAB2);
-	} else if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithBroom)) {
+	} else if (g_nmi->getObjectState(sO_Maid) == g_nmi->getObjectEnumState(sO_Maid, sO_WithBroom)) {
 		g_vars->scene27_maid->changeStatics2(ST_MID_BROOM);
-	} else if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSpade)) {
+	} else if (g_nmi->getObjectState(sO_Maid) == g_nmi->getObjectEnumState(sO_Maid, sO_WithSpade)) {
 		g_vars->scene27_maid->changeStatics2(ST_MID_SPADE);
 	}
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
-	g_fp->setArcadeOverlay(PIC_CSR_ARCADE7);
+	g_nmi->setArcadeOverlay(PIC_CSR_ARCADE7);
 }
 
 int scene27_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
 	if (g_vars->scene27_dudeIsAiming) {
-		if (g_fp->_cursorId != PIC_CSR_DEFAULT_INV && g_fp->_cursorId != PIC_CSR_ITN_INV)
-			g_fp->_cursorId = PIC_CSR_ARCADE7_D;
+		if (g_nmi->_cursorId != PIC_CSR_DEFAULT_INV && g_nmi->_cursorId != PIC_CSR_ITN_INV)
+			g_nmi->_cursorId = PIC_CSR_ARCADE7_D;
 
-	} else if (g_fp->_objectIdAtCursor == ANI_MAN) {
+	} else if (g_nmi->_objectIdAtCursor == ANI_MAN) {
 		if (g_vars->scene27_maxPhaseReached)
-			if (g_fp->_cursorId == PIC_CSR_DEFAULT)
-				g_fp->_cursorId = PIC_CSR_ITN;
+			if (g_nmi->_cursorId == PIC_CSR_DEFAULT)
+				g_nmi->_cursorId = PIC_CSR_ITN;
 	}
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler27_driverGiveVent() {
@@ -117,22 +117,22 @@ void sceneHandler27_driverGiveVent() {
 	getCurrSceneSc2MotionController()->activate();
 	getGameLoaderInteractionController()->enableFlag24();
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
 }
 
 void sceneHandler27_winArcade() {
-	if (g_fp->getObjectState(sO_Driver) == g_fp->getObjectEnumState(sO_Driver, sO_WithSteering)) {
+	if (g_nmi->getObjectState(sO_Driver) == g_nmi->getObjectEnumState(sO_Driver, sO_WithSteering)) {
 		g_vars->scene27_dudeIsAiming = false;
 
-		g_fp->_aniMan->_callback2 = 0; // Really NULL
-		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
+		g_nmi->_aniMan->_callback2 = 0; // Really NULL
+		g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT);
 
 		sceneHandler27_driverGiveVent();
 	}
 }
 
 void sceneHandler27_takeVent() {
-	if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSwab)) {
+	if (g_nmi->getObjectState(sO_Maid) == g_nmi->getObjectEnumState(sO_Maid, sO_WithSwab)) {
 		if (g_vars->scene27_maid->isIdle()) {
 			if (g_vars->scene27_maid->_flags & 4) {
 				g_vars->scene27_maid->changeStatics2(ST_MID_SWAB2);
@@ -144,7 +144,7 @@ void sceneHandler27_takeVent() {
 
 void sceneHandler27_showNextBat() {
 	if (g_vars->scene27_bat) {
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC27_SHOWBET), 0, 1);
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC27_SHOWBET), 0, 1);
 
 		mq->setParamInt(-1, g_vars->scene27_bat->_odelay);
 		mq->chain(0);
@@ -156,10 +156,10 @@ void sceneHandler27_showNextBat() {
 int sceneHandler27_updateScreenCallback() {
 	int res;
 
-	res = g_fp->drawArcadeOverlay(getGameLoaderInteractionController()->_flag24 == 0);
+	res = g_nmi->drawArcadeOverlay(getGameLoaderInteractionController()->_flag24 == 0);
 
 	if (!res)
-		g_fp->_updateScreenCallback = 0;
+		g_nmi->_updateScreenCallback = 0;
 
 	return res;
 }
@@ -175,16 +175,16 @@ void sceneHandler27_aniManCallback(int *phase) {
 
 void sceneHandler27_throwBat() {
 	if (getGameLoaderInteractionController()->_flag24)
-		g_fp->_updateScreenCallback = sceneHandler27_updateScreenCallback;
+		g_nmi->_updateScreenCallback = sceneHandler27_updateScreenCallback;
 
-	g_fp->_aniMan->_callback2 = sceneHandler27_aniManCallback;
+	g_nmi->_aniMan->_callback2 = sceneHandler27_aniManCallback;
 
-	g_fp->_aniMan->startAnim(MV_MAN27_THROWBET, 0, -1);
+	g_nmi->_aniMan->startAnim(MV_MAN27_THROWBET, 0, -1);
 
 	getCurrSceneSc2MotionController()->deactivate();
 	getGameLoaderInteractionController()->disableFlag24();
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 
 	g_vars->scene27_maxPhaseReached = false;
 
@@ -200,14 +200,14 @@ void sceneHandler27_clickBat(ExCommand *cmd) {
 	return;
 #endif
 
-	if (ABS(bx - g_fp->_aniMan->_ox) > 1 || ABS(by - g_fp->_aniMan->_oy) > 1
-		|| g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
-		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, bx, by, 1, ST_MAN_RIGHT);
+	if (ABS(bx - g_nmi->_aniMan->_ox) > 1 || ABS(by - g_nmi->_aniMan->_oy) > 1
+		|| g_nmi->_aniMan->_movement || g_nmi->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, bx, by, 1, ST_MAN_RIGHT);
 
 		if (mq) {
 			mq->addExCommandToEnd(cmd->createClone());
 
-			postExCommand(g_fp->_aniMan->_id, 2, bx, by, 0, -1);
+			postExCommand(g_nmi->_aniMan->_id, 2, bx, by, 0, -1);
 		}
 	} else {
 		sceneHandler27_throwBat();
@@ -218,7 +218,7 @@ void sceneHandler27_maidSwab() {
 #if DBG
 	return;
 #endif
-	if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSwab))
+	if (g_nmi->getObjectState(sO_Maid) == g_nmi->getObjectEnumState(sO_Maid, sO_WithSwab))
 		g_vars->scene27_maid->changeStatics2(ST_MID_SWAB);
 }
 
@@ -232,8 +232,8 @@ void sceneHandler27_startBat(StaticANIObject *bat) {
 	newbat->ani = bat;
 	newbat->powerCos = newbat->power * cos(0.0);
 	newbat->powerSin = newbat->power * sin(0.0);
-	newbat->currX = newbat->powerCos + (double)g_fp->_aniMan->_ox + 42.0;
-	newbat->currY = newbat->powerSin + (double)g_fp->_aniMan->_oy + 58.0;
+	newbat->currX = newbat->powerCos + (double)g_nmi->_aniMan->_ox + 42.0;
+	newbat->currY = newbat->powerSin + (double)g_nmi->_aniMan->_oy + 58.0;
 
 	bat->_statics = bat->_staticsList[0];
 	bat->setOXY((int)newbat->currX, (int)newbat->currY);
@@ -248,9 +248,9 @@ void sceneHandler27_startAiming() {
 	g_vars->scene27_dudeIsAiming = false;
 	g_vars->scene27_maxPhaseReached = false;
 
-	g_fp->_aniMan->_callback2 = 0; // Really NULL
+	g_nmi->_aniMan->_callback2 = 0; // Really NULL
 
-	g_vars->scene27_launchPhase = g_fp->_aniMan->_movement->_currDynamicPhaseIndex - 6;
+	g_vars->scene27_launchPhase = g_nmi->_aniMan->_movement->_currDynamicPhaseIndex - 6;
 
 	int phase = 21 - g_vars->scene27_launchPhase;
 
@@ -260,9 +260,9 @@ void sceneHandler27_startAiming() {
 	if (phase > 20)
 		phase = 20;
 
-	g_fp->playSound(SND_27_044, 0);
+	g_nmi->playSound(SND_27_044, 0);
 
-	g_fp->_aniMan->_movement->setDynamicPhaseIndex(phase);
+	g_nmi->_aniMan->_movement->setDynamicPhaseIndex(phase);
 }
 
 void sceneHandler27_initAiming(ExCommand *cmd) {
@@ -273,7 +273,7 @@ void sceneHandler27_initAiming(ExCommand *cmd) {
 }
 
 void sceneHandler27_aimDude() {
-	int phase = (g_vars->scene27_aimStartX - g_fp->_mouseScreenPos.x) / 20 + 6;
+	int phase = (g_vars->scene27_aimStartX - g_nmi->_mouseScreenPos.x) / 20 + 6;
 
 	if (phase < 6)
 		phase = 6;
@@ -281,8 +281,8 @@ void sceneHandler27_aimDude() {
 	if (phase > 11)
 		phase = 11;
 
-	if (g_fp->_aniMan->_movement)
-		g_fp->_aniMan->_movement->setDynamicPhaseIndex(phase);
+	if (g_nmi->_aniMan->_movement)
+		g_nmi->_aniMan->_movement->setDynamicPhaseIndex(phase);
 }
 
 void sceneHandler27_wipeDo() {
@@ -335,7 +335,7 @@ void sceneHandler27_knockBats(int bat1n, int bat2n) {
 	debugC(2, kDebugSceneLogic, "scene27: knockBats(%d, %d)", bat1n, bat2n);
 
 	if (bat1->power != 0.0) {
-		double rndF = (double)g_fp->_rnd.getRandomNumber(32767) * 0.03 / 32767.0 - 0.015
+		double rndF = (double)g_nmi->_rnd.getRandomNumber(32767) * 0.03 / 32767.0 - 0.015
 			+ atan2(bat2->currY - bat1->currY, bat2->currX - bat1->currX);
 
 		double pow1x = cos(bat1->angle - rndF) * ((bat2->currX - bat1->currX) >= 0 ? bat1->power : -bat1->power);
@@ -349,7 +349,7 @@ void sceneHandler27_knockBats(int bat1n, int bat2n) {
 
 		debugC(3, kDebugSceneLogic, "scene27: knockBats: bat1 to: powerCos: %f powerSin: %f", bat1->powerCos, bat1->powerSin);
 
-		double rndF2 = (double)g_fp->_rnd.getRandomNumber(32767) * 0.03 / 32767.0 - 0.015
+		double rndF2 = (double)g_nmi->_rnd.getRandomNumber(32767) * 0.03 / 32767.0 - 0.015
 								+ atan2(bat1->currY - bat2->currY, bat1->currX - bat2->currX);
 		double pow2x = cos(bat2->angle - rndF2) * ((bat1->currX - bat2->currX) >= 0 ? bat2->power : -bat2->power);
 		double pow2y = sin(bat2->angle - rndF2) * ((bat1->currY - bat2->currY) >= 0 ? bat2->power : -bat2->power);
@@ -399,7 +399,7 @@ void sceneHandler27_knockBats(int bat1n, int bat2n) {
 		debugC(3, kDebugSceneLogic, "scene27: knockBats: bat2 corrected: powerCos: %f powerSin: %f, power: %f, angle: %f",
 				bat2->powerCos, bat2->powerSin, bat2->power, bat2->angle);
 
-		g_fp->playSound(SND_27_026, 0);
+		g_nmi->playSound(SND_27_026, 0);
 	}
 }
 
@@ -422,7 +422,7 @@ void sceneHandler27_batSetColors(int batn) {
 void sceneHandler27_driverPushButton() {
 	debugC(2, kDebugSceneLogic, "scene27: driverPushButton");
 
-	if (g_fp->getObjectState(sO_Driver) == g_fp->getObjectEnumState(sO_Driver, sO_WithSteering)) {
+	if (g_nmi->getObjectState(sO_Driver) == g_nmi->getObjectEnumState(sO_Driver, sO_WithSteering)) {
 		g_vars->scene27_driver->changeStatics2(ST_DRV_VENT);
 		chainQueue(QU_DRV_PUSHBUTTON, 1);
 
@@ -439,7 +439,7 @@ void sceneHandler27_driverPushButton() {
 
 void sceneHandler27_maidSwitchback() {
 #ifndef DBG
-	if (g_fp->getObjectState(sO_Maid) == g_fp->getObjectEnumState(sO_Maid, sO_WithSwab)) {
+	if (g_nmi->getObjectState(sO_Maid) == g_nmi->getObjectEnumState(sO_Maid, sO_WithSwab)) {
 		g_vars->scene27_maid->changeStatics2(ST_MID_SWAB);
 		g_vars->scene27_maid->startMQIfIdle(QU_MID_SWITCHBACK, 1);
 	}
@@ -481,12 +481,12 @@ void sceneHandler27_batLogic() {
 			getCurrSceneSc2MotionController()->activate();
 			getGameLoaderInteractionController()->enableFlag24();
 
-			g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+			g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
 
 			return;
 		}
 
-		MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+		MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
 		mq->setFlags(mq->getFlags() | 1);
 
@@ -514,7 +514,7 @@ void sceneHandler27_calcWinArcade() {
 		}
 
 		if (numHilite >= 3) {
-			if (g_fp->getObjectState(sO_Driver) == g_fp->getObjectEnumState(sO_Driver, sO_WithSteering)) {
+			if (g_nmi->getObjectState(sO_Driver) == g_nmi->getObjectEnumState(sO_Driver, sO_WithSteering)) {
 				sceneHandler27_driverGiveVent();
 				sceneHandler27_maidSwitchback();
 
@@ -643,7 +643,7 @@ int sceneHandler27(ExCommand *cmd) {
 
 		g_vars->scene27_wipeIsNeeded = true;
 
-		g_fp->playSound(SND_27_027, 0);
+		g_nmi->playSound(SND_27_027, 0);
 		break;
 
 	case MSG_SC27_CLICKBET:
@@ -663,20 +663,20 @@ int sceneHandler27(ExCommand *cmd) {
 		break;
 
 	case 29:
-		if (g_fp->_aniMan == g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y) && g_vars->scene27_maxPhaseReached) {
+		if (g_nmi->_aniMan == g_nmi->_currentScene->getStaticANIObjectAtPos(g_nmi->_sceneRect.left + cmd->_x, g_nmi->_sceneRect.top + cmd->_y) && g_vars->scene27_maxPhaseReached) {
 			sceneHandler27_initAiming(cmd);
 		}
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
 		if (g_vars->scene27_dudeIsAiming)
@@ -685,14 +685,14 @@ int sceneHandler27(ExCommand *cmd) {
 		if (g_vars->scene27_wipeIsNeeded) {
 			sceneHandler27_wipeDo();
 
-			if (!g_fp->_aniMan->_movement && g_fp->_aniMan->_statics->_staticsId == ST_MAN_RIGHT)
-				g_fp->_aniMan->startAnim(MV_MAN27_FLOW, 0, -1);
+			if (!g_nmi->_aniMan->_movement && g_nmi->_aniMan->_statics->_staticsId == ST_MAN_RIGHT)
+				g_nmi->_aniMan->startAnim(MV_MAN27_FLOW, 0, -1);
 		}
 
 		sceneHandler27_animateBats();
 
-		g_fp->_behaviorManager->updateBehaviors();
-		g_fp->startSceneTrack();
+		g_nmi->_behaviorManager->updateBehaviors();
+		g_nmi->startSceneTrack();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene28.cpp b/engines/ngi/fullpipe/scene28.cpp
index 8b7ddb7712..c6a93732da 100644
--- a/engines/ngi/fullpipe/scene28.cpp
+++ b/engines/ngi/fullpipe/scene28.cpp
@@ -45,35 +45,35 @@ void scene28_initScene(Scene *sc) {
 	g_vars->scene28_headBeardedFlipper = false;
 	g_vars->scene28_lift6inside = false;
 
-	g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_28"));
+	g_nmi->_floaters->init(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_28"));
 
-	g_fp->initArcadeKeys("SC_28");
+	g_nmi->initArcadeKeys("SC_28");
 }
 
 int scene28_updateCursor() {
-	g_fp->updateCursorCommon();
-	if (g_fp->_objectIdAtCursor == ANI_LIFT || g_fp->_objectIdAtCursor == ANI_LIFT_28)
-		if (g_fp->_cursorId == PIC_CSR_DEFAULT)
-			g_fp->_cursorId = PIC_CSR_ITN;
+	g_nmi->updateCursorCommon();
+	if (g_nmi->_objectIdAtCursor == ANI_LIFT || g_nmi->_objectIdAtCursor == ANI_LIFT_28)
+		if (g_nmi->_cursorId == PIC_CSR_DEFAULT)
+			g_nmi->_cursorId = PIC_CSR_ITN;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler28_lift1ShowAfter() {
-	StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN_28, -1);
+	StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_MAN_28, -1);
 
-	g_fp->_aniMan->_statics = g_fp->_aniMan->getStaticsById(ST_MAN_SIT|0x4000);
-	g_fp->_aniMan->setOXY(ani->_ox + 7, ani->_oy);
-	g_fp->_aniMan->_priority = ani->_priority;
-	g_fp->_aniMan->show1(-1, -1, -1, 0);
+	g_nmi->_aniMan->_statics = g_nmi->_aniMan->getStaticsById(ST_MAN_SIT|0x4000);
+	g_nmi->_aniMan->setOXY(ani->_ox + 7, ani->_oy);
+	g_nmi->_aniMan->_priority = ani->_priority;
+	g_nmi->_aniMan->show1(-1, -1, -1, 0);
 }
 
 void sceneHandler28_makeFaces(ExCommand *cmd) {
-	g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK4, 0)->_flags &= 0xFFFB;
+	g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK4, 0)->_flags &= 0xFFFB;
 
 	g_vars->scene28_lighteningObject = 0;
 
-	MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
+	MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
 	if (mq) {
 		int frames[5];
 
@@ -86,7 +86,7 @@ void sceneHandler28_makeFaces(ExCommand *cmd) {
 		for (int i = 0; i < 5; i++) {
 			int pos;
 
-			while (frames[pos = g_fp->_rnd.getRandomNumber(4)] == 0)
+			while (frames[pos = g_nmi->_rnd.getRandomNumber(4)] == 0)
 				;
 
 			mq->getExCommandByIndex(i)->_messageNum = frames[pos];
@@ -102,43 +102,43 @@ void sceneHandler28_trySecondaryPers() {
 
 	if (g_vars->scene28_headBeardedFlipper) {
 		if (g_vars->scene28_beardedDirection) {
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_BRD28_GOR), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_BRD28_GOR), 0, 1);
 
-			mq->getExCommandByIndex(0)->_x = g_fp->_sceneRect.left - 20;
+			mq->getExCommandByIndex(0)->_x = g_nmi->_sceneRect.left - 20;
 			mq->getExCommandByIndex(0)->_param = 1;
 			mq->setParamInt(-1, 1);
 			mq->chain(0);
 
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_BRD28_GOR), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_BRD28_GOR), 0, 1);
 
-			mq->getExCommandByIndex(0)->_x = g_fp->_sceneRect.left - 40;
+			mq->getExCommandByIndex(0)->_x = g_nmi->_sceneRect.left - 40;
 			mq->getExCommandByIndex(0)->_y += 20;
 			mq->getExCommandByIndex(0)->_param = 2;
 			mq->setParamInt(-1, 2);
 			mq->chain(0);
 
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_BRD28_GOR), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_BRD28_GOR), 0, 1);
 
-			x = g_fp->_sceneRect.left - 60;
+			x = g_nmi->_sceneRect.left - 60;
 		} else {
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_BRD28_GOL), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_BRD28_GOL), 0, 1);
 
-			mq->getExCommandByIndex(0)->_x = g_fp->_sceneRect.right + 20;
+			mq->getExCommandByIndex(0)->_x = g_nmi->_sceneRect.right + 20;
 			mq->getExCommandByIndex(0)->_param = 1;
 			mq->setParamInt(-1, 1);
 			mq->chain(0);
 
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_BRD28_GOL), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_BRD28_GOL), 0, 1);
 
-			mq->getExCommandByIndex(0)->_x = g_fp->_sceneRect.right + 40;
+			mq->getExCommandByIndex(0)->_x = g_nmi->_sceneRect.right + 40;
 			mq->getExCommandByIndex(0)->_y += 20;
 			mq->getExCommandByIndex(0)->_param = 2;
 			mq->setParamInt(-1, 2);
 			mq->chain(0);
 
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_BRD28_GOL), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_BRD28_GOL), 0, 1);
 
-			x = g_fp->_sceneRect.right + 60;
+			x = g_nmi->_sceneRect.right + 60;
 		}
 
 		mq->getExCommandByIndex(0)->_x = x;
@@ -150,13 +150,13 @@ void sceneHandler28_trySecondaryPers() {
 		g_vars->scene28_beardedDirection = !g_vars->scene28_beardedDirection;
 	} else {
 		if (g_vars->scene28_headDirection) {
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_GLV28_GOR), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_GLV28_GOR), 0, 1);
 
-			x = g_fp->_sceneRect.left - 40;
+			x = g_nmi->_sceneRect.left - 40;
 		} else {
-			mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_GLV28_GOL), 0, 1);
+			mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_GLV28_GOL), 0, 1);
 
-			x = g_fp->_sceneRect.right + 40;
+			x = g_nmi->_sceneRect.right + 40;
 		}
 
 		mq->getExCommandByIndex(0)->_x = x;
@@ -170,15 +170,15 @@ void sceneHandler28_trySecondaryPers() {
 
 void sceneHandler28_turnOn2() {
 	if (g_vars->scene28_fliesArePresent) {
-		g_fp->_floaters->genFlies(g_fp->_currentScene, 1013, 329, 60, 4);
+		g_nmi->_floaters->genFlies(g_nmi->_currentScene, 1013, 329, 60, 4);
 
-		g_fp->_floaters->_array2[g_fp->_floaters->_array2.size() - 1].val13 = 30;
-		g_fp->_floaters->_array2[g_fp->_floaters->_array2.size() - 1].countdown = g_fp->_rnd.getRandomNumber(12) + 12;
+		g_nmi->_floaters->_array2[g_nmi->_floaters->_array2.size() - 1].val13 = 30;
+		g_nmi->_floaters->_array2[g_nmi->_floaters->_array2.size() - 1].countdown = g_nmi->_rnd.getRandomNumber(12) + 12;
 
-		g_fp->_floaters->genFlies(g_fp->_currentScene, 1074, 311, 60, 4);
+		g_nmi->_floaters->genFlies(g_nmi->_currentScene, 1074, 311, 60, 4);
 
-		g_fp->_floaters->_array2[g_fp->_floaters->_array2.size() - 1].val13 = 30;
-		g_fp->_floaters->_array2[g_fp->_floaters->_array2.size() - 1].countdown = g_fp->_rnd.getRandomNumber(12) + 12;
+		g_nmi->_floaters->_array2[g_nmi->_floaters->_array2.size() - 1].val13 = 30;
+		g_nmi->_floaters->_array2[g_nmi->_floaters->_array2.size() - 1].countdown = g_nmi->_rnd.getRandomNumber(12) + 12;
 	}
 
 	g_vars->scene28_fliesArePresent = false;
@@ -187,13 +187,13 @@ void sceneHandler28_turnOn2() {
 void sceneHandler28_startWork1() {
 	debugC(2, kDebugSceneLogic, "scene28: startWork");
 
-	g_fp->_aniMan->hide();
+	g_nmi->_aniMan->hide();
 
-	StaticANIObject *man = g_fp->_currentScene->getStaticANIObject1ById(ANI_MAN_28, -1);
+	StaticANIObject *man = g_nmi->_currentScene->getStaticANIObject1ById(ANI_MAN_28, -1);
 
 	man->_statics = man->getStaticsById(ST_MAN28_RIGHT);
-	man->setOXY(g_fp->_aniMan->_ox, g_fp->_aniMan->_oy);
-	man->_priority = g_fp->_aniMan->_priority;
+	man->setOXY(g_nmi->_aniMan->_ox, g_nmi->_aniMan->_oy);
+	man->_priority = g_nmi->_aniMan->_priority;
 	man->show1(-1, -1, -1, 0);
 
 	chainQueue(QU_SC28_LIFT1_WORK, 1);
@@ -204,9 +204,9 @@ void sceneHandler28_lift0Start() {
 }
 
 void sceneHandler28_lift1Start() {
-	g_fp->_aniMan->_flags |= 0x100;
+	g_nmi->_aniMan->_flags |= 0x100;
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 
 	chainQueue(QU_SC28_LIFT1_START, 1);
 }
@@ -220,9 +220,9 @@ void sceneHandler28_lift3Start() {
 }
 
 void sceneHandler28_lift4Start() {
-	g_fp->_aniMan->_flags |= 0x100;
+	g_nmi->_aniMan->_flags |= 0x100;
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 
 	chainQueue(QU_SC28_WMN_START, 1);
 }
@@ -232,11 +232,11 @@ void sceneHandler28_lift5Start() {
 }
 
 void sceneHandler28_lift6Start() {
-	g_fp->_aniMan->_flags |= 0x100;
+	g_nmi->_aniMan->_flags |= 0x100;
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 
-	StaticANIObject *woman = g_fp->_currentScene->getStaticANIObject1ById(ANI_TIOTIA, -1);
+	StaticANIObject *woman = g_nmi->_currentScene->getStaticANIObject1ById(ANI_TIOTIA, -1);
 
 	if (woman && (woman->_flags & 4))
 		chainQueue(QU_SC28_LIFT6_START2, 1);
@@ -260,12 +260,12 @@ void sceneHandler28_clickLift(int numLift) {
 	default: break;
 	}
 
-	if (abs(x - g_fp->_aniMan->_ox) > 1 || abs(472 - g_fp->_aniMan->_oy) > 1
-		|| g_fp->_aniMan->_movement
-		|| g_fp->_aniMan->_statics->_staticsId != ST_MAN_UP) {
+	if (abs(x - g_nmi->_aniMan->_ox) > 1 || abs(472 - g_nmi->_aniMan->_oy) > 1
+		|| g_nmi->_aniMan->_movement
+		|| g_nmi->_aniMan->_statics->_staticsId != ST_MAN_UP) {
 		debugC(2, kDebugSceneLogic, "scene28: clickLift: overwrite");
 
-		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, x, 472, 1, ST_MAN_UP);
+		MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, x, 472, 1, ST_MAN_UP);
 		if (mq) {
 			ExCommand *ex = new ExCommand(0, 17, MSG_SC28_CLICKLIFT, 0, 0, 0, 1, 0, 0, 0);
 			ex->_excFlags |= 3;
@@ -273,7 +273,7 @@ void sceneHandler28_clickLift(int numLift) {
 
 			mq->addExCommandToEnd(ex);
 
-			postExCommand(g_fp->_aniMan->_id, 2, x, 472, 0, -1);
+			postExCommand(g_nmi->_aniMan->_id, 2, x, 472, 0, -1);
 		}
 	} else {
 		switch (numLift) {
@@ -310,7 +310,7 @@ int sceneHandler28(ExCommand *cmd) {
 
 	switch (cmd->_messageNum) {
 	case MSG_SC28_LIFT6MUSIC:
-		g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_28"), "MUSIC_TIOTIA", 1);
+		g_nmi->playTrack(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_28"), "MUSIC_TIOTIA", 1);
 		break;
 
 	case MSG_SC28_LIFT6INSIDE:
@@ -330,57 +330,57 @@ int sceneHandler28(ExCommand *cmd) {
 		break;
 
 	case MSG_SC28_TURNOFF_0:
-		g_vars->scene28_lighteningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK0, 0);
+		g_vars->scene28_lighteningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK0, 0);
 		g_vars->scene28_lighteningObject->_flags |= 4;
 		break;
 
 	case MSG_SC28_TURNON_0:
-		g_vars->scene28_darkeningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK0, 0);
+		g_vars->scene28_darkeningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK0, 0);
 		break;
 
 	case MSG_SC28_TURNON_1:
-		g_vars->scene28_darkeningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK1, 0);
+		g_vars->scene28_darkeningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK1, 0);
 		break;
 
 	case MSG_SC28_TURNOFF_1:
-		g_vars->scene28_lighteningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK1, 0);
+		g_vars->scene28_lighteningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK1, 0);
 		g_vars->scene28_lighteningObject->_flags |= 4;
 		break;
 
 	case MSG_SC28_TURNON_2:
-		g_vars->scene28_darkeningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK2, 0);
+		g_vars->scene28_darkeningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK2, 0);
 		sceneHandler28_turnOn2();
 		break;
 
 	case MSG_SC28_TURNOFF_2:
-		g_vars->scene28_lighteningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK2, 0);
+		g_vars->scene28_lighteningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK2, 0);
 		g_vars->scene28_lighteningObject->_flags |= 4;
 		break;
 
 	case MSG_SC28_TURNON_3:
-		g_vars->scene28_darkeningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK3, 0);
+		g_vars->scene28_darkeningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK3, 0);
 		break;
 
 	case MSG_SC28_TURNOFF_3:
-		g_vars->scene28_lighteningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK3, 0);
+		g_vars->scene28_lighteningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK3, 0);
 		g_vars->scene28_lighteningObject->_flags |= 4;
 		break;
 
 	case MSG_SC28_TURNON_4:
-		g_vars->scene28_darkeningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK4, 0);
+		g_vars->scene28_darkeningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK4, 0);
 		break;
 
 	case MSG_SC28_TURNOFF_4:
-		g_vars->scene28_lighteningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK4, 0);
+		g_vars->scene28_lighteningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK4, 0);
 		g_vars->scene28_lighteningObject->_flags |= 4;
 		break;
 
 	case MSG_SC28_TURNON_6:
-		g_vars->scene28_darkeningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK6, 0);
+		g_vars->scene28_darkeningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK6, 0);
 		break;
 
 	case MSG_SC28_TURNOFF_6:
-		g_vars->scene28_lighteningObject = g_fp->_currentScene->getPictureObjectById(PIC_SC28_DARK6, 0);
+		g_vars->scene28_lighteningObject = g_nmi->_currentScene->getPictureObjectById(PIC_SC28_DARK6, 0);
 		g_vars->scene28_lighteningObject->_flags |= 4;
 		break;
 
@@ -395,21 +395,21 @@ int sceneHandler28(ExCommand *cmd) {
 	case MSG_SC28_ENDLIFT1:
 	case MSG_SC28_ENDLIFT6:
 	case MSG_SC28_ENDCABIN:
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
-		g_fp->_aniMan->_flags &= 0xFEFF;
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
+		g_nmi->_aniMan->_flags &= 0xFEFF;
 		break;
 
 	case 29:
 		{
 			if (g_vars->scene28_lift6inside) {
-				chainObjQueue(g_fp->_aniMan, QU_SC28_LIFT6_END, 1);
+				chainObjQueue(g_nmi->_aniMan, QU_SC28_LIFT6_END, 1);
 
-				g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_28"), "MUSIC", 1);
+				g_nmi->playTrack(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_28"), "MUSIC", 1);
 
 				g_vars->scene28_lift6inside = false;
 			}
 
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (ani)
 				if (ani->_id == ANI_LIFT || ani->_id == ANI_LIFT_28 ) {
@@ -419,30 +419,30 @@ int sceneHandler28(ExCommand *cmd) {
 					break;
 				}
 
-			if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+			if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-						|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0))
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+						|| (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0))
+						g_nmi->processArcade(cmd);
 				}
 			}
 		}
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 
-			g_fp->sceneAutoScrolling();
+			g_nmi->sceneAutoScrolling();
 		}
 
 		if (g_vars->scene28_darkeningObject) {
@@ -465,15 +465,15 @@ int sceneHandler28(ExCommand *cmd) {
 			}
 		}
 
-		g_fp->_floaters->update();
+		g_nmi->_floaters->update();
 
-		for (uint i = 0; i < g_fp->_floaters->_array2.size(); i++)
-			if (g_fp->_floaters->_array2[i].val13 == 1)
-				g_fp->_floaters->_array2[i].ani->_priority = 15;
+		for (uint i = 0; i < g_nmi->_floaters->_array2.size(); i++)
+			if (g_nmi->_floaters->_array2[i].val13 == 1)
+				g_nmi->_floaters->_array2[i].ani->_priority = 15;
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
-		g_fp->startSceneTrack();
+		g_nmi->startSceneTrack();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene29.cpp b/engines/ngi/fullpipe/scene29.cpp
index 1aee6e1db1..6e85c10b79 100644
--- a/engines/ngi/fullpipe/scene29.cpp
+++ b/engines/ngi/fullpipe/scene29.cpp
@@ -81,7 +81,7 @@ void scene29_initScene(Scene *sc) {
 
 	g_vars->scene29_bearders.clear();
 
-	ani = new StaticANIObject(g_fp->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1));
+	ani = new StaticANIObject(g_nmi->accessScene(SC_COMMON)->getStaticANIObject1ById(ANI_BEARDED_CMN, -1));
 
 	ani->_statics = ani->getStaticsById(ST_BRDCMN_EMPTY);
 
@@ -106,7 +106,7 @@ void scene29_initScene(Scene *sc) {
 	g_vars->scene29_scrollingDisabled = false;
 	g_vars->scene29_hitBall = 0;
 
-	g_fp->setArcadeOverlay(PIC_CSR_ARCADE8);
+	g_nmi->setArcadeOverlay(PIC_CSR_ARCADE8);
 }
 
 void sceneHandler29_winArcade() {
@@ -144,7 +144,7 @@ void sceneHandler29_winArcade() {
 		chainQueue(QU_SC29_ESCAPE, 1);
 	}
 
-	g_fp->setObjectState(sO_LeftPipe_29, g_fp->getObjectEnumState(sO_LeftPipe_29, sO_IsOpened));
+	g_nmi->setObjectState(sO_LeftPipe_29, g_nmi->getObjectEnumState(sO_LeftPipe_29, sO_IsOpened));
 }
 
 void sceneHandler29_shootGreen() {
@@ -176,31 +176,31 @@ void sceneHandler29_shootRed() {
 }
 
 void sceneHandler29_manJump() {
-	if (!g_fp->_aniMan->_movement || g_fp->_aniMan->_movement->_id == MV_MAN29_RUN || g_fp->_aniMan->_movement->_id == MV_MAN29_STANDUP) {
+	if (!g_nmi->_aniMan->_movement || g_nmi->_aniMan->_movement->_id == MV_MAN29_RUN || g_nmi->_aniMan->_movement->_id == MV_MAN29_STANDUP) {
 		g_vars->scene29_rideBackEnabled = false;
 		g_vars->scene29_manIsHit = false;
 		g_vars->scene29_reachedFarRight = true;
 
-		g_fp->_aniMan->changeStatics2(ST_MAN29_RUNR);
-		g_fp->_aniMan->startAnim(MV_MAN29_JUMP, 0, -1);
+		g_nmi->_aniMan->changeStatics2(ST_MAN29_RUNR);
+		g_nmi->_aniMan->startAnim(MV_MAN29_JUMP, 0, -1);
 	}
 
-	g_vars->scene29_manX = g_fp->_aniMan->_ox;
-	g_vars->scene29_manY = g_fp->_aniMan->_oy;
+	g_vars->scene29_manX = g_nmi->_aniMan->_ox;
+	g_vars->scene29_manY = g_nmi->_aniMan->_oy;
 }
 
 void sceneHandler29_manBend() {
-	if (!g_fp->_aniMan->_movement || g_fp->_aniMan->_movement->_id == MV_MAN29_RUN || g_fp->_aniMan->_movement->_id == MV_MAN29_STANDUP) {
+	if (!g_nmi->_aniMan->_movement || g_nmi->_aniMan->_movement->_id == MV_MAN29_RUN || g_nmi->_aniMan->_movement->_id == MV_MAN29_STANDUP) {
 		g_vars->scene29_rideBackEnabled = false;
 		g_vars->scene29_manIsHit = false;
 		g_vars->scene29_reachedFarRight = true;
 
-		g_fp->_aniMan->changeStatics2(ST_MAN29_RUNR);
-		g_fp->_aniMan->startAnim(MV_MAN29_BEND, 0, -1);
+		g_nmi->_aniMan->changeStatics2(ST_MAN29_RUNR);
+		g_nmi->_aniMan->startAnim(MV_MAN29_BEND, 0, -1);
 	}
 
-	g_vars->scene29_manX = g_fp->_aniMan->_ox;
-	g_vars->scene29_manY = g_fp->_aniMan->_oy;
+	g_vars->scene29_manX = g_nmi->_aniMan->_ox;
+	g_vars->scene29_manY = g_nmi->_aniMan->_oy;
 }
 
 bool sceneHandler29_checkRedBallHit(StaticANIObject *ani, int maxx) {
@@ -215,13 +215,13 @@ bool sceneHandler29_checkRedBallHit(StaticANIObject *ani, int maxx) {
 		&& (ani->_ox < g_vars->scene29_manX + 8 || maxx > g_vars->scene29_manX + 27))
 		return false;
 
-	if (!g_fp->_aniMan->_movement)
+	if (!g_nmi->_aniMan->_movement)
 		return true;
 
-	int phase = g_fp->_aniMan->_movement->_currDynamicPhaseIndex;
+	int phase = g_nmi->_aniMan->_movement->_currDynamicPhaseIndex;
 
-	if (g_fp->_aniMan->_movement->_id != MV_MAN29_BEND && g_fp->_aniMan->_movement->_id != MV_MAN29_RUN
-		&& (g_fp->_aniMan->_movement->_id != MV_MAN29_JUMP || (phase >= 3 && phase <= 6)))
+	if (g_nmi->_aniMan->_movement->_id != MV_MAN29_BEND && g_nmi->_aniMan->_movement->_id != MV_MAN29_RUN
+		&& (g_nmi->_aniMan->_movement->_id != MV_MAN29_JUMP || (phase >= 3 && phase <= 6)))
 		return false;
 	else
 		return true;
@@ -248,17 +248,17 @@ bool sceneHandler29_checkGreenBallHit(StaticANIObject *ani, int maxx) {
 		}
 	}
 
-	if (!g_fp->_aniMan->_movement)
+	if (!g_nmi->_aniMan->_movement)
 		return true;
 
-	if (g_fp->_aniMan->_movement->_id == MV_MAN29_JUMP)
+	if (g_nmi->_aniMan->_movement->_id == MV_MAN29_JUMP)
 		return true;
 
-	if (g_fp->_aniMan->_movement->_id == MV_MAN29_RUN)
+	if (g_nmi->_aniMan->_movement->_id == MV_MAN29_RUN)
 		return true;
 
-	if (g_fp->_aniMan->_movement->_id == MV_MAN29_BEND) {
-		if (g_fp->_aniMan->_movement->_currDynamicPhaseIndex < 1 || g_fp->_aniMan->_movement->_currDynamicPhaseIndex > 5)
+	if (g_nmi->_aniMan->_movement->_id == MV_MAN29_BEND) {
+		if (g_nmi->_aniMan->_movement->_currDynamicPhaseIndex < 1 || g_nmi->_aniMan->_movement->_currDynamicPhaseIndex > 5)
 			return true;
 	}
 
@@ -270,10 +270,10 @@ void sceneHandler29_manHit() {
 
 	g_vars->scene29_manIsHit = true;
 
-	g_fp->_aniMan->changeStatics2(ST_MAN29_RUNR);
-	g_fp->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
+	g_nmi->_aniMan->changeStatics2(ST_MAN29_RUNR);
+	g_nmi->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
 
-	mkQueue.ani = g_fp->_aniMan;
+	mkQueue.ani = g_nmi->_aniMan;
 	mkQueue.staticsId2 = ST_MAN29_SITR;
 	mkQueue.y1 = 463;
 	mkQueue.x1 = g_vars->scene29_manX <= 638 ? 351 : 0;
@@ -289,7 +289,7 @@ void sceneHandler29_manHit() {
 		if (g_vars->scene29_manX <= 638) {
 			ex = new ExCommand(ANI_MAN, 1, MV_MAN29_STANDUP_NORM, 0, 0, 0, 1, 0, 0, 0);
 			ex->_excFlags = 2;
-			ex->_param = g_fp->_aniMan->_odelay;
+			ex->_param = g_nmi->_aniMan->_odelay;
 			mq->addExCommandToEnd(ex);
 
 			ex = new ExCommand(0, 17, MSG_SC29_STOPRIDE, 0, 0, 0, 1, 0, 0, 0);
@@ -303,13 +303,13 @@ void sceneHandler29_manHit() {
 		} else {
 			ex = new ExCommand(ANI_MAN, 1, MV_MAN29_STANDUP, 0, 0, 0, 1, 0, 0, 0);
 			ex->_excFlags = 2;
-			ex->_param = g_fp->_aniMan->_odelay;
+			ex->_param = g_nmi->_aniMan->_odelay;
 			mq->addExCommandToEnd(ex);
 		}
 
 		mq->setFlags(mq->getFlags() | 1);
 
-		if (!mq->chain(g_fp->_aniMan))
+		if (!mq->chain(g_nmi->_aniMan))
 			delete mq;
 	}
 }
@@ -345,7 +345,7 @@ void sceneHandler29_ballHitCheck() {
 
 				sceneHandler29_manHit();
 
-				g_fp->playSound(SND_29_014, 0);
+				g_nmi->playSound(SND_29_014, 0);
 
 				ani->startAnim(MV_SHG_HITMAN, 0, -1);
 
@@ -378,7 +378,7 @@ void sceneHandler29_ballHitCheck() {
 
 				sceneHandler29_manHit();
 
-				g_fp->playSound(SND_29_027, 0);
+				g_nmi->playSound(SND_29_027, 0);
 
 				ani->startAnim(MV_SHR_HITMAN, 0, -1);
 
@@ -405,12 +405,12 @@ void sceneHandler29_manFromL() {
 		getCurrSceneSc2MotionController()->activate();
 		getGameLoaderInteractionController()->enableFlag24();
 
-		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
+		g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT | 0x4000);
 		chainQueue(QU_SC29_MANFROM_L, 1);
 
 		g_vars->scene29_scrollingDisabled = true;
 
-		g_fp->_scrollSpeed = g_vars->scene29_scrollSpeed;
+		g_nmi->_scrollSpeed = g_vars->scene29_scrollSpeed;
 	}
 }
 
@@ -429,10 +429,10 @@ void sceneHandler29_manFromR() {
 int sceneHandler29_updateScreenCallback() {
 	int res;
 
-	res = g_fp->drawArcadeOverlay(g_vars->scene29_arcadeIsOn);
+	res = g_nmi->drawArcadeOverlay(g_vars->scene29_arcadeIsOn);
 
 	if (!res)
-		g_fp->_updateScreenCallback = 0;
+		g_nmi->_updateScreenCallback = 0;
 
 	return res;
 }
@@ -447,12 +447,12 @@ void sceneHandler29_manToL() {
 
 	g_vars->scene29_arcadeIsOn = true;
 
-	g_vars->scene29_aniHandler.attachObject(g_fp->_aniMan->_id);
+	g_vars->scene29_aniHandler.attachObject(g_nmi->_aniMan->_id);
 
-	g_fp->_updateScreenCallback = sceneHandler29_updateScreenCallback;
+	g_nmi->_updateScreenCallback = sceneHandler29_updateScreenCallback;
 
-	g_fp->_msgY = -1;
-	g_fp->_msgX = -1;
+	g_nmi->_msgY = -1;
+	g_nmi->_msgX = -1;
 }
 
 void sceneHandler29_manToR() {
@@ -464,17 +464,17 @@ void sceneHandler29_manToR() {
 	chainQueue(QU_SC29_MANTO_R, 1);
 
 	g_vars->scene29_manIsRiding = true;
-	g_fp->_msgY = -1;
-	g_fp->_msgX = -1;
+	g_nmi->_msgY = -1;
+	g_nmi->_msgX = -1;
 
 	g_vars->scene29_scrollingDisabled = false;
 
-	g_vars->scene29_scrollSpeed = g_fp->_scrollSpeed;
-	g_fp->_scrollSpeed = 4;
+	g_vars->scene29_scrollSpeed = g_nmi->_scrollSpeed;
+	g_nmi->_scrollSpeed = 4;
 }
 
 void sceneHandler29_clickPorter(ExCommand *cmd) {
-	if (!g_fp->_aniMan->isIdle() || g_fp->_aniMan->_flags & 0x100) {
+	if (!g_nmi->_aniMan->isIdle() || g_nmi->_aniMan->_flags & 0x100) {
 		cmd->_messageKind = 0;
 
 		return;
@@ -482,32 +482,32 @@ void sceneHandler29_clickPorter(ExCommand *cmd) {
 
 	if (g_vars->scene29_manX <= g_vars->scene29_porter->_ox) {
 		if (ABS(351 - g_vars->scene29_manX) > 1 || ABS(443 - g_vars->scene29_manY) > 1
-			|| g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
-			if (g_fp->_msgX != 351 || g_fp->_msgY != 443) {
-				MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 351, 443, 1, ST_MAN_RIGHT);
+			|| g_nmi->_aniMan->_movement || g_nmi->_aniMan->_statics->_staticsId != ST_MAN_RIGHT) {
+			if (g_nmi->_msgX != 351 || g_nmi->_msgY != 443) {
+				MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 351, 443, 1, ST_MAN_RIGHT);
 
 				if (mq) {
 					mq->addExCommandToEnd(cmd->createClone());
 
-					postExCommand(g_fp->_aniMan->_id, 2, 351, 443, 0, -1);
+					postExCommand(g_nmi->_aniMan->_id, 2, 351, 443, 0, -1);
 				}
 			}
 		} else {
 			sceneHandler29_manToL();
 		}
 	} else {
-		g_vars->scene29_manX = g_fp->_aniMan->_ox;
-		g_vars->scene29_manY = g_fp->_aniMan->_oy;
+		g_vars->scene29_manX = g_nmi->_aniMan->_ox;
+		g_vars->scene29_manY = g_nmi->_aniMan->_oy;
 
-		if (ABS(1582 - g_vars->scene29_manX) > 1 || ABS(445 - g_fp->_aniMan->_oy) > 1
-			|| g_fp->_aniMan->_movement || g_fp->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) {
-			if (g_fp->_msgX != 1582 || g_fp->_msgY != 445) {
-				MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_fp->_aniMan, 1582, 445, 1, (0x4000 | ST_MAN_RIGHT));
+		if (ABS(1582 - g_vars->scene29_manX) > 1 || ABS(445 - g_nmi->_aniMan->_oy) > 1
+			|| g_nmi->_aniMan->_movement || g_nmi->_aniMan->_statics->_staticsId != (0x4000 | ST_MAN_RIGHT)) {
+			if (g_nmi->_msgX != 1582 || g_nmi->_msgY != 445) {
+				MessageQueue *mq = getCurrSceneSc2MotionController()->startMove(g_nmi->_aniMan, 1582, 445, 1, (0x4000 | ST_MAN_RIGHT));
 
 				if (mq) {
 					mq->addExCommandToEnd(cmd->createClone());
 
-					postExCommand(g_fp->_aniMan->_id, 2, 1582, 445, 0, -1);
+					postExCommand(g_nmi->_aniMan->_id, 2, 1582, 445, 0, -1);
 				}
 			}
 		} else {
@@ -517,26 +517,26 @@ void sceneHandler29_clickPorter(ExCommand *cmd) {
 }
 
 void sceneHandler29_shootersProcess() {
-	if (g_fp->_aniMan->_statics->_staticsId == ST_MAN29_RUNR) {
+	if (g_nmi->_aniMan->_statics->_staticsId == ST_MAN29_RUNR) {
 		if (g_vars->scene29_manX > 1436) {
 			sceneHandler29_manFromR();
 		} else {
 			g_vars->scene29_shootDistance = (1310 - g_vars->scene29_manX) * 5213 / 100000 + 25;
 
 			if (!g_vars->scene29_manIsHit)
-				g_fp->_aniMan->startAnim(MV_MAN29_RUN, 0, -1);
+				g_nmi->_aniMan->startAnim(MV_MAN29_RUN, 0, -1);
 		}
 	}
 
-	g_vars->scene29_manX = g_fp->_aniMan->_ox;
-	g_vars->scene29_manY = g_fp->_aniMan->_oy;
+	g_vars->scene29_manX = g_nmi->_aniMan->_ox;
+	g_vars->scene29_manY = g_nmi->_aniMan->_oy;
 }
 
 void sceneHandler29_shootersEscape() {
 	if (g_vars->scene29_arcadeIsOn) {
 		g_vars->scene29_manX += 2;
 
-		g_fp->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
+		g_nmi->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
 
 		if (g_vars->scene29_manX > 1310 && !g_vars->scene29_shooter1->_movement && !g_vars->scene29_shooter2->_movement
 				&& g_vars->scene29_shooter1->_statics->_staticsId == ST_STR1_RIGHT) {
@@ -552,24 +552,24 @@ void sceneHandler29_shootersEscape() {
 			g_vars->scene29_ass->queueMessageQueue(0);
 			g_vars->scene29_ass->hide();
 
-			g_fp->setObjectState(sO_LeftPipe_29, g_fp->getObjectEnumState(sO_LeftPipe_29, sO_IsOpened));
+			g_nmi->setObjectState(sO_LeftPipe_29, g_nmi->getObjectEnumState(sO_LeftPipe_29, sO_IsOpened));
 		}
 	} else if (g_vars->scene29_manIsRiding) {
 		g_vars->scene29_manX -= 4;
 
-		g_fp->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
+		g_nmi->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
 	}
 }
 
 void sceneHandler29_manRideBack() {
 	g_vars->scene29_manX -= 2;
 
-	g_fp->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
+	g_nmi->_aniMan->setOXY(g_vars->scene29_manX, g_vars->scene29_manY);
 }
 
 void sceneHandler29_shoot() {
 	if (g_vars->scene29_arcadeIsOn && g_vars->scene29_manX < 1310) {
-		if (g_fp->_rnd.getRandomNumber(32767) <= 16383|| g_vars->scene29_shooter1->_movement || g_vars->scene29_shooter1->_statics->_staticsId != ST_STR1_RIGHT) {
+		if (g_nmi->_rnd.getRandomNumber(32767) <= 16383|| g_vars->scene29_shooter1->_movement || g_vars->scene29_shooter1->_statics->_staticsId != ST_STR1_RIGHT) {
 			if (!g_vars->scene29_shooter2->_movement && g_vars->scene29_shooter2->_statics->_staticsId == ST_STR2_RIGHT) {
 				if (g_vars->scene29_shooter2->_flags & 4) {
 					g_vars->scene29_shooter2->startAnim(MV_STR2_SHOOT, 0, -1);
@@ -599,7 +599,7 @@ void sceneHandler29_animBearded() {
 				x -= 4;
 
 				if (x - g_vars->scene29_manX < 100 || !g_vars->scene29_arcadeIsOn) {
-					mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC29_BRDOUT1), 0, 1);
+					mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC29_BRDOUT1), 0, 1);
 
 					mq->setParamInt(-1, ani->_odelay);
 					mq->chain(0);
@@ -619,7 +619,7 @@ void sceneHandler29_animBearded() {
 					if (g_vars->scene29_manX - x < 60 || x - g_vars->scene29_manX < -260 || !g_vars->scene29_arcadeIsOn) {
 						ani->changeStatics2(ST_BRDCMN_RIGHT);
 
-						mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC29_BRDOUT2), 0, 1);
+						mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC29_BRDOUT2), 0, 1);
 
 						mq->setParamInt(-1, ani->_odelay);
 						mq->chain(0);
@@ -637,7 +637,7 @@ void sceneHandler29_animBearded() {
 		if (g_vars->scene29_arcadeIsOn && g_vars->scene29_bearders[i]->wbcounter > 30) {
 			int newx;
 
-			if (g_fp->_rnd.getRandomNumber(1))
+			if (g_nmi->_rnd.getRandomNumber(1))
 				goto dostuff;
 
 			if (g_vars->scene29_manX <= 700) {
@@ -652,11 +652,11 @@ void sceneHandler29_animBearded() {
 					continue;
 				}
 
-				mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC29_BRD2), 0, 1);
+				mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC29_BRD2), 0, 1);
 
 				newx = g_vars->scene29_manX - 200;
 			} else {
-				mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC29_BRD1), 0, 1);
+				mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC29_BRD1), 0, 1);
 
 				newx = g_vars->scene29_manX + 350;
 			}
@@ -686,9 +686,9 @@ int sceneHandler29(ExCommand *cmd) {
 
 	case MSG_SC29_LAUGH:
 		if (g_vars->scene29_hitBall == ANI_SHELL_GREEN) {
-			g_fp->playSound(SND_29_028, 0);
+			g_nmi->playSound(SND_29_028, 0);
 		} else {
-			g_fp->playSound(SND_29_029, 0);
+			g_nmi->playSound(SND_29_029, 0);
 		}
 		break;
 
@@ -753,7 +753,7 @@ int sceneHandler29(ExCommand *cmd) {
 	case 29:
 		if (!g_vars->scene29_manIsRiding || g_vars->scene29_arcadeIsOn) {
 			if (!g_vars->scene29_arcadeIsOn) {
-				StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+				StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(g_nmi->_sceneRect.left + cmd->_x, g_nmi->_sceneRect.top + cmd->_y);
 
 				if (ani && ani == g_vars->scene29_porter) {
 					sceneHandler29_clickPorter(cmd);
@@ -776,24 +776,24 @@ int sceneHandler29(ExCommand *cmd) {
 
 	case 33:
 		if (g_vars->scene29_arcadeIsOn) {
-			if (g_vars->scene29_manX > g_fp->_sceneRect.right - 500)
-				g_fp->_currentScene->_x = g_fp->_sceneRect.right - g_vars->scene29_manX - 350;
+			if (g_vars->scene29_manX > g_nmi->_sceneRect.right - 500)
+				g_nmi->_currentScene->_x = g_nmi->_sceneRect.right - g_vars->scene29_manX - 350;
 
-			if (g_vars->scene29_manX < g_fp->_sceneRect.left + 100)
-				g_fp->_currentScene->_x = g_vars->scene29_manX - g_fp->_sceneRect.left - 100;
+			if (g_vars->scene29_manX < g_nmi->_sceneRect.left + 100)
+				g_nmi->_currentScene->_x = g_vars->scene29_manX - g_nmi->_sceneRect.left - 100;
 
-		} else if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		} else if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 300)
-				g_fp->_currentScene->_x = x - 400 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 300)
+				g_nmi->_currentScene->_x = x - 400 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 300)
-				g_fp->_currentScene->_x = x + 400 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 300)
+				g_nmi->_currentScene->_x = x + 400 - g_nmi->_sceneRect.right;
 		}
 
-		g_vars->scene29_manX = g_fp->_aniMan->_ox;
-		g_vars->scene29_manY = g_fp->_aniMan->_oy;
+		g_vars->scene29_manX = g_nmi->_aniMan->_ox;
+		g_vars->scene29_manY = g_nmi->_aniMan->_oy;
 
 		sceneHandler29_ballHitCheck();
 
@@ -802,7 +802,7 @@ int sceneHandler29(ExCommand *cmd) {
 
 		if (g_vars->scene29_manIsRiding)
 			sceneHandler29_manFromL();
-		else if (g_vars->scene29_arcadeIsOn && !g_fp->_aniMan->_movement)
+		else if (g_vars->scene29_arcadeIsOn && !g_nmi->_aniMan->_movement)
 			sceneHandler29_shootersProcess();
 
 		if (g_vars->scene29_reachedFarRight)
@@ -817,8 +817,8 @@ int sceneHandler29(ExCommand *cmd) {
 
 		sceneHandler29_animBearded();
 
-		g_fp->_behaviorManager->updateBehaviors();
-		g_fp->startSceneTrack();
+		g_nmi->_behaviorManager->updateBehaviors();
+		g_nmi->startSceneTrack();
 
 		break;
 
@@ -830,22 +830,22 @@ int sceneHandler29(ExCommand *cmd) {
 }
 
 int scene29_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
 	if (g_vars->scene29_arcadeIsOn) {
-		if (g_fp->_cursorId != PIC_CSR_DEFAULT_INV && g_fp->_cursorId != PIC_CSR_ITN_INV)
-			g_fp->_cursorId = -1;
+		if (g_nmi->_cursorId != PIC_CSR_DEFAULT_INV && g_nmi->_cursorId != PIC_CSR_ITN_INV)
+			g_nmi->_cursorId = -1;
 	} else if (g_vars->scene29_manIsRiding) {
-		if (g_fp->_cursorId != PIC_CSR_DEFAULT_INV && g_fp->_cursorId != PIC_CSR_ITN_INV)
-			g_fp->_cursorId = PIC_CSR_DEFAULT;
-	} else if (g_fp->_objectIdAtCursor == ANI_PORTER) {
-		if (g_fp->_cursorId == PIC_CSR_DEFAULT)
-			g_fp->_cursorId = PIC_CSR_ITN;
+		if (g_nmi->_cursorId != PIC_CSR_DEFAULT_INV && g_nmi->_cursorId != PIC_CSR_ITN_INV)
+			g_nmi->_cursorId = PIC_CSR_DEFAULT;
+	} else if (g_nmi->_objectIdAtCursor == ANI_PORTER) {
+		if (g_nmi->_cursorId == PIC_CSR_DEFAULT)
+			g_nmi->_cursorId = PIC_CSR_ITN;
 	} else {
-		if (g_fp->_objectIdAtCursor == PIC_SC29_LTRUBA && g_fp->_cursorId == PIC_CSR_ITN)
-			g_fp->_cursorId = PIC_CSR_GOL;
+		if (g_nmi->_objectIdAtCursor == PIC_SC29_LTRUBA && g_nmi->_cursorId == PIC_CSR_ITN)
+			g_nmi->_cursorId = PIC_CSR_GOL;
 	}
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 } // End of namespace NGI
diff --git a/engines/ngi/fullpipe/scene30.cpp b/engines/ngi/fullpipe/scene30.cpp
index 4356cf223a..1ebe4ff903 100644
--- a/engines/ngi/fullpipe/scene30.cpp
+++ b/engines/ngi/fullpipe/scene30.cpp
@@ -39,30 +39,30 @@ namespace NGI {
 void scene30_enablePass(Scene *sc) {
 	MovGraphLink *lnk = getSc2MctlCompoundBySceneId(sc->_sceneId)->getLinkByName(sO_WayToPipe);
 
-	if (g_fp->getObjectState(sO_Leg) == g_fp->getObjectEnumState(sO_Leg, sO_WithAll))
+	if (g_nmi->getObjectState(sO_Leg) == g_nmi->getObjectEnumState(sO_Leg, sO_WithAll))
 		lnk->_flags &= 0xDFFFFFFF;
 	else
 		lnk->_flags |= 0x20000000;
 }
 
 void scene30_initScene(Scene *sc, int flag) {
-	Scene *oldsc = g_fp->_currentScene;
+	Scene *oldsc = g_nmi->_currentScene;
 
 	g_vars->scene30_leg = sc->getStaticANIObject1ById(ANI_LEG, -1);
-	g_fp->_currentScene = sc;
+	g_nmi->_currentScene = sc;
 
-	if (g_fp->getObjectState(sO_Leg) == g_fp->getObjectEnumState(sO_Leg, sO_ShowingHeel))
+	if (g_nmi->getObjectState(sO_Leg) == g_nmi->getObjectEnumState(sO_Leg, sO_ShowingHeel))
 		g_vars->scene30_leg->changeStatics2(ST_LEG_UP);
-	else if (g_fp->getObjectState(sO_Leg) == g_fp->getObjectEnumState(sO_Leg, sO_WithoutJugs))
+	else if (g_nmi->getObjectState(sO_Leg) == g_nmi->getObjectEnumState(sO_Leg, sO_WithoutJugs))
 		g_vars->scene30_leg->changeStatics2(ST_LEG_DOWN);
-	else if (g_fp->getObjectState(sO_Leg) == g_fp->getObjectEnumState(sO_Leg, sO_WithBig))
+	else if (g_nmi->getObjectState(sO_Leg) == g_nmi->getObjectEnumState(sO_Leg, sO_WithBig))
 		g_vars->scene30_leg->changeStatics2(ST_LEG_DOWN1);
-	else if (g_fp->getObjectState(sO_Leg) == g_fp->getObjectEnumState(sO_Leg, sO_WithSmall))
+	else if (g_nmi->getObjectState(sO_Leg) == g_nmi->getObjectEnumState(sO_Leg, sO_WithSmall))
 		g_vars->scene30_leg->changeStatics2(ST_LEG_DOWN2);
-	else if (g_fp->getObjectState(sO_Leg) == g_fp->getObjectEnumState(sO_Leg, sO_WithAll))
+	else if (g_nmi->getObjectState(sO_Leg) == g_nmi->getObjectEnumState(sO_Leg, sO_WithAll))
 		g_vars->scene30_leg->changeStatics2(ST_LEG_EMPTY);
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
 	scene30_enablePass(sc);
 
@@ -71,18 +71,18 @@ void scene30_initScene(Scene *sc, int flag) {
 	else
 		g_vars->scene30_liftFlag = 1;
 
-	g_fp->lift_setButton(sO_Level8, ST_LBN_8N);
+	g_nmi->lift_setButton(sO_Level8, ST_LBN_8N);
 
-	g_fp->lift_init(sc, QU_SC30_ENTERLIFT, QU_SC30_EXITLIFT);
+	g_nmi->lift_init(sc, QU_SC30_ENTERLIFT, QU_SC30_EXITLIFT);
 }
 
 int scene30_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_cursorId == PIC_CSR_ITN && g_fp->_objectIdAtCursor == PIC_SC30_LTRUBA) {
-		g_fp->_cursorId = PIC_CSR_GOL;
+	if (g_nmi->_cursorId == PIC_CSR_ITN && g_nmi->_objectIdAtCursor == PIC_SC30_LTRUBA) {
+		g_nmi->_cursorId = PIC_CSR_GOL;
 	}
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 int sceneHandler30(ExCommand *cmd) {
@@ -91,39 +91,39 @@ int sceneHandler30(ExCommand *cmd) {
 
 	switch(cmd->_messageNum) {
 	case MSG_LIFT_CLOSEDOOR:
-		g_fp->lift_closedoorSeq();
+		g_nmi->lift_closedoorSeq();
 		break;
 
 	case MSG_LIFT_EXITLIFT:
-		g_fp->lift_exitSeq(cmd);
+		g_nmi->lift_exitSeq(cmd);
 		break;
 
 	case MSG_LIFT_STARTEXITQUEUE:
-		g_fp->lift_startExitQueue();
+		g_nmi->lift_startExitQueue();
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_clickButton();
+		g_nmi->lift_clickButton();
 		break;
 
 	case MSG_SC30_UPDATEPATH:
-		scene30_enablePass(g_fp->_currentScene);
+		scene30_enablePass(g_nmi->_currentScene);
 		break;
 
 	case 64:
-		g_fp->lift_hoverButton(cmd);
+		g_nmi->lift_hoverButton(cmd);
 		break;
 
 	case MSG_LIFT_GO:
-		g_fp->lift_goAnimation();
+		g_nmi->lift_goAnimation();
 		break;
 
 	case 29:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(g_nmi->_sceneRect.left + cmd->_x, g_nmi->_sceneRect.top + cmd->_y);
 
 			if (ani && ani->_id == ANI_LIFTBUTTON) {
-				g_fp->lift_animateButton(ani);
+				g_nmi->lift_animateButton(ani);
 
 				cmd->_messageKind = 0;
 			}
@@ -131,17 +131,17 @@ int sceneHandler30(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene31.cpp b/engines/ngi/fullpipe/scene31.cpp
index 9b79f201ce..2951c736fd 100644
--- a/engines/ngi/fullpipe/scene31.cpp
+++ b/engines/ngi/fullpipe/scene31.cpp
@@ -40,21 +40,21 @@ void scene31_initScene(Scene *sc) {
 	g_vars->scene31_chantingCountdown = 0;
 	g_vars->scene31_cactus = sc->getStaticANIObject1ById(ANI_CACTUS_31, -1);
 
-	if (g_fp->getObjectState(sO_Cactus) == g_fp->getObjectEnumState(sO_Cactus, sO_HasGrown)) {
-		Scene *oldsc = g_fp->_currentScene;
-		g_fp->_currentScene = sc;
+	if (g_nmi->getObjectState(sO_Cactus) == g_nmi->getObjectEnumState(sO_Cactus, sO_HasGrown)) {
+		Scene *oldsc = g_nmi->_currentScene;
+		g_nmi->_currentScene = sc;
 
 		g_vars->scene31_cactus->changeStatics2(ST_CTS31_GROWN2);
 		g_vars->scene31_cactus->_priority = 22;
 
-		g_fp->_currentScene = oldsc;
+		g_nmi->_currentScene = oldsc;
 	} else {
 		g_vars->scene31_cactus->hide();
 	}
 
 	g_vars->scene31_plusMinus = sc->getStaticANIObject1ById(ANI_PLUSMINUS, -1);
 
-	if (g_fp->getObjectState(sO_Guard_3) == g_fp->getObjectEnumState(sO_Guard_3, sO_Off))
+	if (g_nmi->getObjectState(sO_Guard_3) == g_nmi->getObjectEnumState(sO_Guard_3, sO_Off))
 		g_vars->scene31_plusMinus->_statics = g_vars->scene31_plusMinus->getStaticsById(ST_PMS_MINUS);
 	else
 		g_vars->scene31_plusMinus->_statics = g_vars->scene31_plusMinus->getStaticsById(ST_PMS_PLUS);
@@ -62,7 +62,7 @@ void scene31_initScene(Scene *sc) {
 
 void sceneHandler31_testCactus(ExCommand *cmd) {
 	if ((g_vars->scene31_cactus->_flags & 4) && g_vars->scene31_cactus->_statics->_staticsId == ST_CTS31_GROWN2) {
-		MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
+		MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
 
 		if (mq) {
 			mq->getExCommandByIndex(0)->_messageKind = 0;
@@ -84,7 +84,7 @@ int sceneHandler31(ExCommand *cmd) {
 		break;
 
 	case MSG_SC15_STOPCHANTING:
-		g_fp->stopAllSoundInstances(SND_31_001);
+		g_nmi->stopAllSoundInstances(SND_31_001);
 
 		g_vars->scene31_chantingCountdown = 120;
 		break;
@@ -98,24 +98,24 @@ int sceneHandler31(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 		}
 
 		if (g_vars->scene31_chantingCountdown > 0) {
 			--g_vars->scene31_chantingCountdown;
 
 			if (!g_vars->scene31_chantingCountdown)
-				g_fp->playSound(SND_31_001, 1);
+				g_nmi->playSound(SND_31_001, 1);
 		}
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene32.cpp b/engines/ngi/fullpipe/scene32.cpp
index bd3e99d1a0..45b642ec0d 100644
--- a/engines/ngi/fullpipe/scene32.cpp
+++ b/engines/ngi/fullpipe/scene32.cpp
@@ -56,21 +56,21 @@ void scene32_initScene(Scene *sc) {
 	g_vars->scene32_massGreen->startAnim(MV_TSTG_FLOW, 0, -1);
 	g_vars->scene32_massGreen->_movement->setDynamicPhaseIndex(26);
 
-	Scene *oldsc = g_fp->_currentScene;
+	Scene *oldsc = g_nmi->_currentScene;
 	StaticANIObject *ani;
 
-	if (g_fp->getObjectState(sO_ClockHandle) == g_fp->getObjectEnumState(sO_ClockHandle, sO_In_32_Lies)) {
+	if (g_nmi->getObjectState(sO_ClockHandle) == g_nmi->getObjectEnumState(sO_ClockHandle, sO_In_32_Lies)) {
 		ani = sc->getStaticANIObject1ById(ANI_INV_HANDLE, -1);
 		if (ani) {
-			g_fp->_currentScene = sc;
+			g_nmi->_currentScene = sc;
 
 			ani->changeStatics2(ST_HDL_LAID);
 		}
 	} else {
-		if (g_fp->getObjectState(sO_ClockHandle) == g_fp->getObjectEnumState(sO_ClockHandle, sO_In_32_Sticks)) {
+		if (g_nmi->getObjectState(sO_ClockHandle) == g_nmi->getObjectEnumState(sO_ClockHandle, sO_In_32_Sticks)) {
 			ani = sc->getStaticANIObject1ById(ANI_INV_HANDLE, -1);
 
-			g_fp->_currentScene = sc;
+			g_nmi->_currentScene = sc;
 
 			if (ani)
 				ani->changeStatics2(ST_HDL_PLUGGED);
@@ -79,38 +79,38 @@ void scene32_initScene(Scene *sc) {
 		}
 	}
 
-	g_fp->_currentScene = oldsc;
+	g_nmi->_currentScene = oldsc;
 
-	if (g_fp->getObjectState(sO_Cube) == g_fp->getObjectEnumState(sO_Cube, sO_In_32)) {
+	if (g_nmi->getObjectState(sO_Cube) == g_nmi->getObjectEnumState(sO_Cube, sO_In_32)) {
 		MessageQueue *mq = new MessageQueue(sc->getMessageQueueById(QU_KBK32_START), 0, 0);
 
 		mq->sendNextCommand();
 	}
 
-	g_fp->lift_setButton(sO_Level9, ST_LBN_9N);
-	g_fp->lift_init(sc, QU_SC32_ENTERLIFT, QU_SC32_EXITLIFT);
+	g_nmi->lift_setButton(sO_Level9, ST_LBN_9N);
+	g_nmi->lift_init(sc, QU_SC32_ENTERLIFT, QU_SC32_EXITLIFT);
 
-	g_fp->initArcadeKeys("SC_32");
+	g_nmi->initArcadeKeys("SC_32");
 
-	warning("cactus: %d, state: %d", g_fp->getObjectState(sO_Cactus), g_vars->scene32_cactus->_statics->_staticsId);
+	warning("cactus: %d, state: %d", g_nmi->getObjectState(sO_Cactus), g_vars->scene32_cactus->_statics->_staticsId);
 }
 
 void scene32_setupMusic() {
-	if (g_fp->lift_checkButton(sO_Level6))
-		g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_32"), "MUSIC2", 1);
+	if (g_nmi->lift_checkButton(sO_Level6))
+		g_nmi->playTrack(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_32"), "MUSIC2", 1);
 }
 
 int scene32_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor == PIC_SC32_LADDER && g_fp->_cursorId == PIC_CSR_ITN)
-		g_fp->_cursorId = g_vars->scene32_dudeOnLadder ? PIC_CSR_GOD : PIC_CSR_GOU;
+	if (g_nmi->_objectIdAtCursor == PIC_SC32_LADDER && g_nmi->_cursorId == PIC_CSR_ITN)
+		g_nmi->_cursorId = g_vars->scene32_dudeOnLadder ? PIC_CSR_GOD : PIC_CSR_GOU;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler32_tryCube() {
-	if (g_fp->getObjectState(sO_Cube) == g_fp->getObjectEnumState(sO_Cube, sO_In_33))
+	if (g_nmi->getObjectState(sO_Cube) == g_nmi->getObjectEnumState(sO_Cube, sO_In_33))
 		chainQueue(QU_KBK32_GO, 0);
 }
 
@@ -120,7 +120,7 @@ void sceneHandler32_startCactus() {
 }
 
 void sceneHandler32_spin(ExCommand *cmd) {
-	MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
+	MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
 
 	if (!mq || mq->getCount() == 0)
 		return;
@@ -171,7 +171,7 @@ void sceneHandler32_startFlagRight() {
 }
 
 void sceneHandler32_trySit(ExCommand *cmd) {
-	MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
+	MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
 
 	if (!mq || mq->getCount() == 0)
 		return;
@@ -187,7 +187,7 @@ void sceneHandler32_trySit(ExCommand *cmd) {
 		ex->_parentId = ANI_MAN;
 		ex->_messageKind = 1;
 		ex->_messageNum = MV_MAN32_SITDOWN;
-		ex->_param = g_fp->_aniMan->_odelay;
+		ex->_param = g_nmi->_aniMan->_odelay;
 
 		g_vars->scene32_dudeIsSitting = true;
 
@@ -197,8 +197,8 @@ void sceneHandler32_trySit(ExCommand *cmd) {
 }
 
 void sceneHandler32_buttonPush() {
-	if (g_fp->getObjectState(sO_ClockHandle) == g_fp->getObjectEnumState(sO_ClockHandle, sO_In_32_Sticks)) {
-		StaticANIObject *ani = g_fp->_currentScene->getStaticANIObject1ById(ANI_INV_HANDLE, -1);
+	if (g_nmi->getObjectState(sO_ClockHandle) == g_nmi->getObjectEnumState(sO_ClockHandle, sO_In_32_Sticks)) {
+		StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObject1ById(ANI_INV_HANDLE, -1);
 		if (ani)
 			ani->changeStatics2(ST_HDL_PLUGGED);
 
@@ -215,7 +215,7 @@ void sceneHandler32_installHandle() {
 }
 
 void sceneHandler32_animateCactus() {
-	if (g_fp->_aniMan->_statics->_staticsId != ST_MAN32_SIT)
+	if (g_nmi->_aniMan->_statics->_staticsId != ST_MAN32_SIT)
 		chainQueue(QU_CTS_GROW, 1);
 	else
 		chainQueue(QU_CTS_GROWMAN, 1);
@@ -225,15 +225,15 @@ void sceneHandler32_animateCactus() {
 }
 
 void sceneHandler32_ladderLogic(ExCommand *cmd) {
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC32_FROMLADDER), 0, 0);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC32_FROMLADDER), 0, 0);
 
-	if (g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) != PIC_SC32_LADDER)
+	if (g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY) != PIC_SC32_LADDER)
 		mq->addExCommandToEnd(cmd->createClone());
 
 	mq->setFlags(mq->getFlags() | 1);
 
-	g_fp->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
-	if (!mq->chain(g_fp->_aniMan))
+	g_nmi->_aniMan->changeStatics2(ST_MAN_STANDLADDER);
+	if (!mq->chain(g_nmi->_aniMan))
 		delete mq;
 
 	g_vars->scene32_dudeOnLadder = false;
@@ -244,7 +244,7 @@ void sceneHandler32_ladderLogic(ExCommand *cmd) {
 
 void sceneHandler32_potLogic(ExCommand *cmd) {
 	if (g_vars->scene32_cactusCounter < 0 || g_vars->scene32_cactusCounter > 20) {
-		MessageQueue *mq = new MessageQueue(g_fp->_globalMessageQueueList->compact());
+		MessageQueue *mq = new MessageQueue(g_nmi->_globalMessageQueueList->compact());
 
 		ExCommand *ex = new ExCommand(ANI_MAN, 1, MV_MAN32_STANDUP, 0, 0, 0, 1, 0, 0, 0);
 
@@ -252,7 +252,7 @@ void sceneHandler32_potLogic(ExCommand *cmd) {
 
 		mq->addExCommandToEnd(ex);
 
-		StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+		StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 		if (!ani || ani->_id != ANI_KADKA)
 			mq->addExCommandToEnd(cmd->createClone());
@@ -273,27 +273,27 @@ int sceneHandler32(ExCommand *cmd) {
 
 	switch (cmd->_messageNum) {
 	case MSG_LIFT_CLOSEDOOR:
-		g_fp->lift_closedoorSeq();
+		g_nmi->lift_closedoorSeq();
 		break;
 
 	case MSG_LIFT_EXITLIFT:
-		g_fp->lift_exitSeq(cmd);
+		g_nmi->lift_exitSeq(cmd);
 		break;
 
 	case MSG_LIFT_STARTEXITQUEUE:
-		g_fp->lift_startExitQueue();
+		g_nmi->lift_startExitQueue();
 		break;
 
 	case MSG_SC32_TRUBATOBACK:
-		g_fp->_currentScene->getPictureObjectById(PIC_SC32_RTRUBA, 0)->_priority = 20;
+		g_nmi->_currentScene->getPictureObjectById(PIC_SC32_RTRUBA, 0)->_priority = 20;
 		break;
 
 	case MSG_SC32_TRUBATOFRONT:
-		g_fp->_currentScene->getPictureObjectById(PIC_SC32_RTRUBA, 0)->_priority = 0;
+		g_nmi->_currentScene->getPictureObjectById(PIC_SC32_RTRUBA, 0)->_priority = 0;
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_clickButton();
+		g_nmi->lift_clickButton();
 		break;
 
 	case MSG_SC33_TRYKUBIK:
@@ -326,7 +326,7 @@ int sceneHandler32(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_GO:
-		g_fp->lift_goAnimation();
+		g_nmi->lift_goAnimation();
 		break;
 
 	case MSG_SC32_ONLADDER:
@@ -341,7 +341,7 @@ int sceneHandler32(ExCommand *cmd) {
 		break;
 
 	case 64:
-		g_fp->lift_hoverButton(cmd);
+		g_nmi->lift_hoverButton(cmd);
 		break;
 
 	case MSG_SC6_INSTHANDLE:
@@ -349,16 +349,16 @@ int sceneHandler32(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 
-			g_fp->sceneAutoScrolling();
+			g_nmi->sceneAutoScrolling();
 		}
 
 		if (!g_vars->scene32_flag->_movement) {
@@ -383,15 +383,15 @@ int sceneHandler32(ExCommand *cmd) {
 			if (g_vars->scene32_cactusCounter > 0)
 				--g_vars->scene32_cactusCounter;
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
-			g_fp->startSceneTrack();
+			g_nmi->startSceneTrack();
 		} else {
 			sceneHandler32_animateCactus();
 
-			g_fp->_behaviorManager->updateBehaviors();
+			g_nmi->_behaviorManager->updateBehaviors();
 
-			g_fp->startSceneTrack();
+			g_nmi->startSceneTrack();
 
 		}
 		break;
@@ -403,20 +403,20 @@ int sceneHandler32(ExCommand *cmd) {
 			break;
 		}
 
-		if (!g_vars->scene32_dudeIsSitting || g_fp->_aniMan->_movement) {
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+		if (!g_vars->scene32_dudeIsSitting || g_nmi->_aniMan->_movement) {
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
 
 			if (ani && ani->_id == ANI_LIFTBUTTON) {
-				g_fp->lift_animateButton(ani);
+				g_nmi->lift_animateButton(ani);
 
 				cmd->_messageKind = 0;
 				break;
 			}
 
-			if (g_fp->_cursorId == PIC_CSR_GOFAR_R || g_fp->_cursorId == PIC_CSR_GOFAR_L) {
-				if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1)
-					|| (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0))
-					g_fp->processArcade(cmd);
+			if (g_nmi->_cursorId == PIC_CSR_GOFAR_R || g_nmi->_cursorId == PIC_CSR_GOFAR_L) {
+				if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1)
+					|| (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0))
+					g_nmi->processArcade(cmd);
 			}
 			break;
 		}
diff --git a/engines/ngi/fullpipe/scene33.cpp b/engines/ngi/fullpipe/scene33.cpp
index 016cac219c..7b7fa05bd2 100644
--- a/engines/ngi/fullpipe/scene33.cpp
+++ b/engines/ngi/fullpipe/scene33.cpp
@@ -45,7 +45,7 @@ void scene33_initScene(Scene *sc) {
 	g_vars->scene33_cubeX = -1;
 	g_vars->scene33_handleIsDown = false;
 
-	if (g_fp->getObjectState(sO_Cube) == g_fp->getObjectEnumState(sO_Cube, sO_In_33)) {
+	if (g_nmi->getObjectState(sO_Cube) == g_nmi->getObjectEnumState(sO_Cube, sO_In_33)) {
 		MessageQueue *mq = new MessageQueue(sc->getMessageQueueById(QU_KBK33_START), 0, 0);
 
 		mq->sendNextCommand();
@@ -58,25 +58,25 @@ void scene33_initScene(Scene *sc) {
 		g_vars->scene33_ventsState[i] = ventsInit[i];
 	}
 
-	g_fp->initArcadeKeys("SC_33");
+	g_nmi->initArcadeKeys("SC_33");
 }
 
 void scene33_setupMusic() {
-	if (g_fp->lift_checkButton(sO_Level6))
-		g_fp->playTrack(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_33"), "MUSIC2", 1);
+	if (g_nmi->lift_checkButton(sO_Level6))
+		g_nmi->playTrack(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_33"), "MUSIC2", 1);
 }
 
 int scene33_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if (g_fp->_objectIdAtCursor == PIC_SC33_ZONES && g_fp->_cursorId == PIC_CSR_DEFAULT)
-		g_fp->_cursorId = PIC_CSR_ITN;
+	if (g_nmi->_objectIdAtCursor == PIC_SC33_ZONES && g_nmi->_cursorId == PIC_CSR_DEFAULT)
+		g_nmi->_cursorId = PIC_CSR_ITN;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler33_processJettie(ExCommand *cmd) {
-	MessageQueue *mq = g_fp->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
+	MessageQueue *mq = g_nmi->_globalMessageQueueList->getMessageQueueById(cmd->_parId);
 
 	if (mq && g_vars->scene33_jettie->_movement) {
 		ExCommand *ex = mq->getExCommandByIndex(0);
@@ -114,13 +114,13 @@ void sceneHandler33_processVents() {
 	for (int i = 0; i < 9; i++)
 		if (((g_vars->scene33_cubeX < g_vars->scene33_ventsX[i]) != (g_vars->scene33_cube->_ox < g_vars->scene33_ventsX[i]))
 			&& g_vars->scene33_ventsState[i] != ventsInit[i])
-				sceneHandler33_switchVent(g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, i));
+				sceneHandler33_switchVent(g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, i));
 
 	g_vars->scene33_cubeX = g_vars->scene33_cube->_ox;
 }
 
 void sceneHandler33_tryCube() {
-	if (g_fp->getObjectState(sO_Cube) == g_fp->getObjectEnumState(sO_Cube, sO_In_32))
+	if (g_nmi->getObjectState(sO_Cube) == g_nmi->getObjectEnumState(sO_Cube, sO_In_32))
 		chainQueue(QU_KBK33_GO, 0);
 }
 
@@ -171,28 +171,28 @@ void sceneHandler33_zoneClickProcess(StaticANIObject *ani) {
 
 		switch (ani->_odelay) {
 		case 0:
-			vent1 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 2);
-			vent2 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 3);
+			vent1 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 2);
+			vent2 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 3);
 			break;
 
 		case 1:
-			vent1 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 3);
-			vent2 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 4);
+			vent1 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 3);
+			vent2 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 4);
 			break;
 
 		case 2:
-			vent1 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 4);
-			vent2 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 0);
+			vent1 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 4);
+			vent2 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 0);
 			break;
 
 		case 3:
-			vent1 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 0);
-			vent2 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 1);
+			vent1 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 0);
+			vent2 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 1);
 			break;
 
 		case 4:
-			vent1 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 1);
-			vent2 = g_fp->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 2);
+			vent1 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 1);
+			vent2 = g_nmi->_currentScene->getStaticANIObject1ById(ANI_VENT_33, 2);
 			break;
 
 		default:
@@ -210,8 +210,8 @@ void sceneHandler33_clickZones(ExCommand *cmd) {
 	StaticANIObject *closest = 0;
 	double mindist = 1e10;
 
-	for (uint i = 0; i < g_fp->_currentScene->_staticANIObjectList1.size(); i++) {
-		StaticANIObject *ani = g_fp->_currentScene->_staticANIObjectList1[i];
+	for (uint i = 0; i < g_nmi->_currentScene->_staticANIObjectList1.size(); i++) {
+		StaticANIObject *ani = g_nmi->_currentScene->_staticANIObjectList1[i];
 
 		if (ani->_id == ANI_VENT_33) {
 			int dx = ani->_ox - cmd->_sceneClickX;
@@ -235,11 +235,11 @@ int sceneHandler33(ExCommand *cmd) {
 
 	switch (cmd->_messageNum) {
 	case MSG_SC32_TRUBATOFRONT:
-		g_fp->_currentScene->getPictureObjectById(PIC_SC33_LTRUBA, 0)->_priority = 0;
+		g_nmi->_currentScene->getPictureObjectById(PIC_SC33_LTRUBA, 0)->_priority = 0;
 		break;
 
 	case MSG_SC32_TRUBATOBACK:
-		g_fp->_currentScene->getPictureObjectById(PIC_SC33_LTRUBA, 0)->_priority = 20;
+		g_nmi->_currentScene->getPictureObjectById(PIC_SC33_LTRUBA, 0)->_priority = 20;
 		break;
 
 	case MSG_SC33_TESTMUG:
@@ -247,7 +247,7 @@ int sceneHandler33(ExCommand *cmd) {
 		break;
 
 	case MSG_SC33_UPDATEKUBIK:
-		g_vars->scene33_cube = g_fp->_currentScene->getStaticANIObject1ById(ANI_KUBIK, -1);
+		g_vars->scene33_cube = g_nmi->_currentScene->getStaticANIObject1ById(ANI_KUBIK, -1);
 
 		if (g_vars->scene33_cube)
 			g_vars->scene33_cubeX = g_vars->scene33_cube->_ox;
@@ -268,44 +268,44 @@ int sceneHandler33(ExCommand *cmd) {
 
 	case 29:
 		{
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(g_nmi->_sceneRect.left + cmd->_x, g_nmi->_sceneRect.top + cmd->_y);
 
-			if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+			if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
 				if (pic && pic->_id == PIC_SC33_ZONES) {
 					sceneHandler33_clickZones(cmd);
 					break;
 				}
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1) || (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0))
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1) || (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0))
+						g_nmi->processArcade(cmd);
 				}
 			}
 		}
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 
-			g_fp->sceneAutoScrolling();
+			g_nmi->sceneAutoScrolling();
 		}
 
 		if (g_vars->scene33_cube)
 			sceneHandler33_processVents();
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
-		g_fp->startSceneTrack();
+		g_nmi->startSceneTrack();
 
 		break;
 
diff --git a/engines/ngi/fullpipe/scene34.cpp b/engines/ngi/fullpipe/scene34.cpp
index d039f66bca..4232d831e1 100644
--- a/engines/ngi/fullpipe/scene34.cpp
+++ b/engines/ngi/fullpipe/scene34.cpp
@@ -39,23 +39,23 @@ namespace NGI {
 void sceneHandler34_setExits() {
 	int state;
 
-	if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_NearPipeWithStool)) {
-		if (g_fp->getObjectState(sO_Hatch_34) == g_fp->getObjectEnumState(sO_Hatch_34, sO_Closed))
-			state = g_fp->getObjectEnumState(sO_Plank_34, sO_ClosedWithBoot);
+	if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_NearPipeWithStool)) {
+		if (g_nmi->getObjectState(sO_Hatch_34) == g_nmi->getObjectEnumState(sO_Hatch_34, sO_Closed))
+			state = g_nmi->getObjectEnumState(sO_Plank_34, sO_ClosedWithBoot);
 		else
-			state = g_fp->getObjectEnumState(sO_Plank_34, sO_OpenedWithBoot);
+			state = g_nmi->getObjectEnumState(sO_Plank_34, sO_OpenedWithBoot);
 	} else {
-		if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_OnStool)) {
-			if (g_fp->getObjectState(sO_Hatch_34) == g_fp->getObjectEnumState(sO_Hatch_34, sO_Closed))
-				state = g_fp->getObjectEnumState(sO_Plank_34, sO_IsClosed);
+		if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_OnStool)) {
+			if (g_nmi->getObjectState(sO_Hatch_34) == g_nmi->getObjectEnumState(sO_Hatch_34, sO_Closed))
+				state = g_nmi->getObjectEnumState(sO_Plank_34, sO_IsClosed);
 			else
-				state = g_fp->getObjectEnumState(sO_Plank_34, sO_IsOpened);
+				state = g_nmi->getObjectEnumState(sO_Plank_34, sO_IsOpened);
 		} else {
-			state = g_fp->getObjectEnumState(sO_Plank_34, sO_Passive);
+			state = g_nmi->getObjectEnumState(sO_Plank_34, sO_Passive);
 		}
 	}
 
-	g_fp->setObjectState(sO_Plank_34, state);
+	g_nmi->setObjectState(sO_Plank_34, state);
 }
 
 void scene34_initScene(Scene *sc) {
@@ -64,10 +64,10 @@ void scene34_initScene(Scene *sc) {
 	g_vars->scene34_hatch = sc->getStaticANIObject1ById(ANI_LUK_34, -1);
 	g_vars->scene34_boot = sc->getStaticANIObject1ById(ANI_BOOT_34, -1);
 
-	if (g_fp->getObjectState(sO_Cactus) == g_fp->getObjectEnumState(sO_Cactus, sO_HasGrown)) {
-		Scene *oldsc = g_fp->_currentScene;
+	if (g_nmi->getObjectState(sO_Cactus) == g_nmi->getObjectEnumState(sO_Cactus, sO_HasGrown)) {
+		Scene *oldsc = g_nmi->_currentScene;
 
-		g_fp->_currentScene = sc;
+		g_nmi->_currentScene = sc;
 
 		g_vars->scene34_cactus->changeStatics2(ST_CTS34_EMPTY);
 		g_vars->scene34_cactus->setOXY(506, 674);
@@ -76,49 +76,49 @@ void scene34_initScene(Scene *sc) {
 		g_vars->scene34_cactus->changeStatics2(ST_CTS34_GROWNEMPTY2);
 		g_vars->scene34_cactus->_flags |= 4;
 
-		g_fp->_currentScene = oldsc;
+		g_nmi->_currentScene = oldsc;
 	}
 
-	if (g_fp->getObjectState(sO_Grandma) == g_fp->getObjectEnumState(sO_Grandma, sO_Strolling))
-		g_fp->setObjectState(sO_Grandma, g_fp->getObjectEnumState(sO_Grandma, sO_OnStool));
+	if (g_nmi->getObjectState(sO_Grandma) == g_nmi->getObjectEnumState(sO_Grandma, sO_Strolling))
+		g_nmi->setObjectState(sO_Grandma, g_nmi->getObjectEnumState(sO_Grandma, sO_OnStool));
 
 	sceneHandler34_setExits();
 
 	g_vars->scene34_dudeClimbed = false;
 	g_vars->scene34_dudeOnBoard = false;
 	g_vars->scene34_dudeOnCactus = false;
-	g_vars->scene34_fliesCountdown = g_fp->_rnd.getRandomNumber(500) + 500;
+	g_vars->scene34_fliesCountdown = g_nmi->_rnd.getRandomNumber(500) + 500;
 
-	g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_34"));
+	g_nmi->_floaters->init(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_34"));
 
-	g_fp->lift_setButton(sO_Level7, ST_LBN_7N);
-	g_fp->lift_init(sc, QU_SC34_ENTERLIFT, QU_SC34_EXITLIFT);
+	g_nmi->lift_setButton(sO_Level7, ST_LBN_7N);
+	g_nmi->lift_init(sc, QU_SC34_ENTERLIFT, QU_SC34_EXITLIFT);
 
-	g_fp->initArcadeKeys("SC_34");
+	g_nmi->initArcadeKeys("SC_34");
 }
 
 void scene34_initBeh() {
-	g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene34_cactus, ST_CTS34_GROWNEMPTY2, QU_CTS34_FALLEFT, 0);
-	g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene34_cactus, ST_CTS34_GROWNEMPTY2, QU_CTS34_FALLRIGHT, 0);
+	g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene34_cactus, ST_CTS34_GROWNEMPTY2, QU_CTS34_FALLEFT, 0);
+	g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene34_cactus, ST_CTS34_GROWNEMPTY2, QU_CTS34_FALLRIGHT, 0);
 }
 
 int scene34_updateCursor() {
-	g_fp->updateCursorCommon();
+	g_nmi->updateCursorCommon();
 
-	if ((g_fp->_objectIdAtCursor != ANI_STOOL_34 || getGameLoaderInventory()->getSelectedItemId() != ANI_INV_BOX)
-		 && (g_fp->_objectIdAtCursor != ANI_BOX_34 || getGameLoaderInventory()->getSelectedItemId() != ANI_INV_STOOL))
+	if ((g_nmi->_objectIdAtCursor != ANI_STOOL_34 || getGameLoaderInventory()->getSelectedItemId() != ANI_INV_BOX)
+		 && (g_nmi->_objectIdAtCursor != ANI_BOX_34 || getGameLoaderInventory()->getSelectedItemId() != ANI_INV_STOOL))
 		; // emtpy
 	else
-		g_fp->_cursorId = PIC_CSR_ITN_INV;
+		g_nmi->_cursorId = PIC_CSR_ITN_INV;
 
-	return g_fp->_cursorId;
+	return g_nmi->_cursorId;
 }
 
 void sceneHandler34_leaveBoard() {
 	getCurrSceneSc2MotionController()->activate();
 	getGameLoaderInteractionController()->enableFlag24();
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
 
 	g_vars->scene34_dudeOnBoard = false;
 }
@@ -127,17 +127,17 @@ void sceneHandler34_onBoard() {
 	getCurrSceneSc2MotionController()->deactivate();
 	getGameLoaderInteractionController()->disableFlag24();
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 
 	g_vars->scene34_dudeOnBoard = true;
 }
 
 void sceneHandler34_testVent() {
-	if (g_fp->_aniMan->_movement->_id == MV_MAN34_TURNVENT_R) {
+	if (g_nmi->_aniMan->_movement->_id == MV_MAN34_TURNVENT_R) {
 		g_vars->scene34_hatch->changeStatics2(ST_LUK34_CLOSED);
 
 		chainQueue(QU_LUK34_OPEN, 0);
-	} else if (g_fp->_aniMan->_movement->_id == MV_MAN34_TURNVENT_L) {
+	} else if (g_nmi->_aniMan->_movement->_id == MV_MAN34_TURNVENT_L) {
 		g_vars->scene34_hatch->changeStatics2(ST_LUK34_OPEN);
 
 		chainQueue(QU_LUK34_CLOSE, 0);
@@ -145,36 +145,36 @@ void sceneHandler34_testVent() {
 }
 
 void sceneHandler34_hideStool() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_STOOL_34, -1)->hide();
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_STOOL_34, -1)->hide();
 }
 
 void sceneHandler34_climb() {
 	getCurrSceneSc2MotionController()->deactivate();
 	getGameLoaderInteractionController()->disableFlag24();
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 
 	g_vars->scene34_dudeClimbed = true;
 }
 
 void sceneHandler34_genFlies() {
-	g_fp->_floaters->genFlies(g_fp->_currentScene, 1072, -50, 100, 4);
+	g_nmi->_floaters->genFlies(g_nmi->_currentScene, 1072, -50, 100, 4);
 
-	g_fp->_floaters->_array2[g_fp->_floaters->_array2.size() - 1].countdown = 1;
-	g_fp->_floaters->_array2[g_fp->_floaters->_array2.size() - 1].val6 = 1072;
-	g_fp->_floaters->_array2[g_fp->_floaters->_array2.size() - 1].val7 = -50;
+	g_nmi->_floaters->_array2[g_nmi->_floaters->_array2.size() - 1].countdown = 1;
+	g_nmi->_floaters->_array2[g_nmi->_floaters->_array2.size() - 1].val6 = 1072;
+	g_nmi->_floaters->_array2[g_nmi->_floaters->_array2.size() - 1].val7 = -50;
 
-	g_vars->scene34_fliesCountdown = g_fp->_rnd.getRandomNumber(500) + 500;
+	g_vars->scene34_fliesCountdown = g_nmi->_rnd.getRandomNumber(500) + 500;
 }
 
 void sceneHandler34_fromCactus(ExCommand *cmd) {
-	if (g_fp->_aniMan->_movement || g_vars->scene34_cactus->_movement || (g_fp->_aniMan->_flags & 0x100)) {
+	if (g_nmi->_aniMan->_movement || g_vars->scene34_cactus->_movement || (g_nmi->_aniMan->_flags & 0x100)) {
 		cmd->_messageKind = 0;
 
 		return;
 	}
 
-	MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC34_FROMCACTUS), 0, 0);
+	MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC34_FROMCACTUS), 0, 0);
 
 	ExCommand *ex = new ExCommand(ANI_MAN, 34, 256, 0, 0, 0, 1, 0, 0, 0);
 
@@ -189,12 +189,12 @@ void sceneHandler34_fromCactus(ExCommand *cmd) {
 	mq->setFlags(mq->getFlags() | 1);
 	mq->chain(0);
 
-	g_fp->_aniMan->_flags |= 0x100;
+	g_nmi->_aniMan->_flags |= 0x100;
 }
 
 void sceneHandler34_animateLeaveBoard(ExCommand *cmd) {
-	if (!g_fp->_aniMan->_movement) {
-		MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC34_LEAVEBOARD), 0, 0);
+	if (!g_nmi->_aniMan->_movement) {
+		MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC34_LEAVEBOARD), 0, 0);
 
 		mq->addExCommandToEnd(cmd->createClone());
 		mq->setFlags(mq->getFlags() | 1);
@@ -205,12 +205,12 @@ void sceneHandler34_animateLeaveBoard(ExCommand *cmd) {
 }
 
 void sceneHandler34_animateAction(ExCommand *cmd) {
-	if (g_fp->_aniMan->_movement)
+	if (g_nmi->_aniMan->_movement)
 		return;
 
-	int ox = g_fp->_aniMan->_ox;
-	int oy = g_fp->_aniMan->_oy;
-	StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+	int ox = g_nmi->_aniMan->_ox;
+	int oy = g_nmi->_aniMan->_oy;
+	StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(g_nmi->_sceneRect.left + cmd->_x, g_nmi->_sceneRect.top + cmd->_y);
 
 	if (!ani || ani->_id != ANI_VENT_34) {
 		int qId = 0;
@@ -225,7 +225,7 @@ void sceneHandler34_animateAction(ExCommand *cmd) {
 				return;
 
 			if (oy == 286) {
-				MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(QU_SC34_FROMBOX), 0, 0);
+				MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(QU_SC34_FROMBOX), 0, 0);
 
 				mq->addExCommandToEnd(cmd->createClone());
 				mq->chain(0);
@@ -242,7 +242,7 @@ void sceneHandler34_animateAction(ExCommand *cmd) {
 		}
 
 		if (qId) {
-			MessageQueue *mq = new MessageQueue(g_fp->_currentScene->getMessageQueueById(qId), 0, 0);
+			MessageQueue *mq = new MessageQueue(g_nmi->_currentScene->getMessageQueueById(qId), 0, 0);
 
 			mq->addExCommandToEnd(cmd->createClone());
 			mq->chain(0);
@@ -253,18 +253,18 @@ void sceneHandler34_animateAction(ExCommand *cmd) {
 
 	if (ox == 887) {
 		if (oy == 370)
-			g_fp->_aniMan->startAnim(MV_MAN34_TRYTABUR, 0, -1);
+			g_nmi->_aniMan->startAnim(MV_MAN34_TRYTABUR, 0, -1);
 
 	} else if (ox == 916) {
 		if (oy == 286) {
 			int id = g_vars->scene34_vent->_statics->_staticsId;
 			if (id == ST_VNT34_UP2) {
-				g_fp->_aniMan->startAnim(MV_MAN34_TURNVENT_R, 0, -1);
+				g_nmi->_aniMan->startAnim(MV_MAN34_TURNVENT_R, 0, -1);
 			} else if (id == ST_VNT34_RIGHT3) {
-				g_fp->_aniMan->startAnim(MV_MAN34_TURNVENT_L, 0, -1);
+				g_nmi->_aniMan->startAnim(MV_MAN34_TURNVENT_L, 0, -1);
 			}
 		} else if (oy == 345) {
-			g_fp->_aniMan->startAnim(MV_MAN34_TRY, 0, -1);
+			g_nmi->_aniMan->startAnim(MV_MAN34_TRY, 0, -1);
 		}
 	}
 }
@@ -279,7 +279,7 @@ void sceneHandler34_showVent() {
 }
 
 void sceneHandler34_showBox() {
-	g_fp->_currentScene->getStaticANIObject1ById(ANI_STOOL_34, -1)->changeStatics2(ST_STL34_BOX2);
+	g_nmi->_currentScene->getStaticANIObject1ById(ANI_STOOL_34, -1)->changeStatics2(ST_STL34_BOX2);
 }
 
 void sceneHandler34_showStool() {
@@ -290,7 +290,7 @@ void sceneHandler34_unclimb() {
 	getCurrSceneSc2MotionController()->activate();
 	getGameLoaderInteractionController()->enableFlag24();
 
-	g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+	g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
 
 	g_vars->scene34_dudeClimbed = false;
 }
@@ -317,7 +317,7 @@ int sceneHandler34(ExCommand *cmd) {
 		break;
 
 	case MSG_LIFT_CLICKBUTTON:
-		g_fp->lift_clickButton();
+		g_nmi->lift_clickButton();
 		break;
 
 	case MSG_SC34_FROMCACTUS:
@@ -326,34 +326,34 @@ int sceneHandler34(ExCommand *cmd) {
 		getCurrSceneSc2MotionController()->activate();
 		getGameLoaderInteractionController()->enableFlag24();
 
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 1);
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 1);
 		break;
 
 	case MSG_SC34_RETRYVENT:
-		if (!g_fp->_aniMan->isIdle())
+		if (!g_nmi->_aniMan->isIdle())
 			break;
 
-		g_fp->_aniMan->changeStatics2(ST_MAN_RIGHT);
-		g_fp->_aniMan->_flags &= 0xFEFF;
+		g_nmi->_aniMan->changeStatics2(ST_MAN_RIGHT);
+		g_nmi->_aniMan->_flags &= 0xFEFF;
 
-		getGameLoaderInteractionController()->handleInteraction(g_fp->_aniMan, g_vars->scene34_vent, cmd->_param);
+		getGameLoaderInteractionController()->handleInteraction(g_nmi->_aniMan, g_vars->scene34_vent, cmd->_param);
 		break;
 
 	case MSG_SC34_ONBUMP:
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene34_cactus, ST_CTS34_GROWNEMPTY2, QU_CTS34_FALLEFT, 1);
-		g_fp->_behaviorManager->setBehaviorEnabled(g_vars->scene34_cactus, ST_CTS34_GROWNEMPTY2, QU_CTS34_FALLRIGHT, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene34_cactus, ST_CTS34_GROWNEMPTY2, QU_CTS34_FALLEFT, 1);
+		g_nmi->_behaviorManager->setBehaviorEnabled(g_vars->scene34_cactus, ST_CTS34_GROWNEMPTY2, QU_CTS34_FALLRIGHT, 1);
 		break;
 
 	case MSG_LIFT_CLOSEDOOR:
-		g_fp->lift_closedoorSeq();
+		g_nmi->lift_closedoorSeq();
 		break;
 
 	case MSG_LIFT_EXITLIFT:
-		g_fp->lift_exitSeq(cmd);
+		g_nmi->lift_exitSeq(cmd);
 		break;
 
 	case MSG_LIFT_STARTEXITQUEUE:
-		g_fp->lift_startExitQueue();
+		g_nmi->lift_startExitQueue();
 		break;
 
 	case MSG_SC22_HIDESTOOL:
@@ -382,7 +382,7 @@ int sceneHandler34(ExCommand *cmd) {
 		getCurrSceneSc2MotionController()->deactivate();
 		getGameLoaderInteractionController()->disableFlag24();
 
-		g_fp->_behaviorManager->setFlagByStaticAniObject(g_fp->_aniMan, 0);
+		g_nmi->_behaviorManager->setFlagByStaticAniObject(g_nmi->_aniMan, 0);
 		break;
 
 	case MSG_SC34_SHOWVENT:
@@ -390,11 +390,11 @@ int sceneHandler34(ExCommand *cmd) {
 		break;
 
 	case 64:
-		g_fp->lift_hoverButton(cmd);
+		g_nmi->lift_hoverButton(cmd);
 		break;
 
 	case MSG_LIFT_GO:
-		g_fp->lift_goAnimation();
+		g_nmi->lift_goAnimation();
 		break;
 
 	case 29:
@@ -414,17 +414,17 @@ int sceneHandler34(ExCommand *cmd) {
 				break;
 			}
 
-			StaticANIObject *ani = g_fp->_currentScene->getStaticANIObjectAtPos(g_fp->_sceneRect.left + cmd->_x, g_fp->_sceneRect.top + cmd->_y);
+			StaticANIObject *ani = g_nmi->_currentScene->getStaticANIObjectAtPos(g_nmi->_sceneRect.left + cmd->_x, g_nmi->_sceneRect.top + cmd->_y);
 
 			if (ani) {
 				if ((ani->_id == ANI_STOOL_34 && cmd->_param == ANI_INV_BOX) || (ani->_id == ANI_BOX_34 && cmd->_param == ANI_INV_STOOL)) {
-					getGameLoaderInteractionController()->handleInteraction(g_fp->_aniMan, g_vars->scene34_vent, cmd->_param);
+					getGameLoaderInteractionController()->handleInteraction(g_nmi->_aniMan, g_vars->scene34_vent, cmd->_param);
 
 					cmd->_messageKind = 0;
 				}
 
 				if (ani->_id == ANI_LIFTBUTTON) {
-					g_fp->lift_animateButton(ani);
+					g_nmi->lift_animateButton(ani);
 
 					cmd->_messageKind = 0;
 
@@ -432,13 +432,13 @@ int sceneHandler34(ExCommand *cmd) {
 				}
 			}
 
-			if (!ani || !canInteractAny(g_fp->_aniMan, ani, cmd->_param)) {
-				int picId = g_fp->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
-				PictureObject *pic = g_fp->_currentScene->getPictureObjectById(picId, 0);
+			if (!ani || !canInteractAny(g_nmi->_aniMan, ani, cmd->_param)) {
+				int picId = g_nmi->_currentScene->getPictureObjectIdAtPos(cmd->_sceneClickX, cmd->_sceneClickY);
+				PictureObject *pic = g_nmi->_currentScene->getPictureObjectById(picId, 0);
 
-				if (!pic || !canInteractAny(g_fp->_aniMan, pic, cmd->_param)) {
-					if ((g_fp->_sceneRect.right - cmd->_sceneClickX < 47 && g_fp->_sceneRect.right < g_fp->_sceneWidth - 1) || (cmd->_sceneClickX - g_fp->_sceneRect.left < 47 && g_fp->_sceneRect.left > 0)) {
-						g_fp->processArcade(cmd);
+				if (!pic || !canInteractAny(g_nmi->_aniMan, pic, cmd->_param)) {
+					if ((g_nmi->_sceneRect.right - cmd->_sceneClickX < 47 && g_nmi->_sceneRect.right < g_nmi->_sceneWidth - 1) || (cmd->_sceneClickX - g_nmi->_sceneRect.left < 47 && g_nmi->_sceneRect.left > 0)) {
+						g_nmi->processArcade(cmd);
 						break;
 					}
 				}
@@ -447,16 +447,16 @@ int sceneHandler34(ExCommand *cmd) {
 		break;
 
 	case 33:
-		if (g_fp->_aniMan2) {
-			int x = g_fp->_aniMan2->_ox;
+		if (g_nmi->_aniMan2) {
+			int x = g_nmi->_aniMan2->_ox;
 
-			if (x < g_fp->_sceneRect.left + 200)
-				g_fp->_currentScene->_x = x - 300 - g_fp->_sceneRect.left;
+			if (x < g_nmi->_sceneRect.left + 200)
+				g_nmi->_currentScene->_x = x - 300 - g_nmi->_sceneRect.left;
 
-			if (x > g_fp->_sceneRect.right - 200)
-				g_fp->_currentScene->_x = x + 300 - g_fp->_sceneRect.right;
+			if (x > g_nmi->_sceneRect.right - 200)
+				g_nmi->_currentScene->_x = x + 300 - g_nmi->_sceneRect.right;
 
-			g_fp->sceneAutoScrolling();
+			g_nmi->sceneAutoScrolling();
 		}
 
 		--g_vars->scene34_fliesCountdown;
@@ -464,11 +464,11 @@ int sceneHandler34(ExCommand *cmd) {
 		if (!g_vars->scene34_fliesCountdown)
 			sceneHandler34_genFlies();
 
-		g_fp->_floaters->update();
+		g_nmi->_floaters->update();
 
-		g_fp->_behaviorManager->updateBehaviors();
+		g_nmi->_behaviorManager->updateBehaviors();
 
-		g_fp->startSceneTrack();
+		g_nmi->startSceneTrack();
 		break;
 
 	default:
diff --git a/engines/ngi/fullpipe/scene35.cpp b/engines/ngi/fullpipe/scene35.cpp
index bb0686e2cc..b5edc4c439 100644
--- a/engines/ngi/fullpipe/scene35.cpp
+++ b/engines/ngi/fullpipe/scene35.cpp
@@ -52,7 +52,7 @@ void scene35_initScene(Scene *sc) {
 
 	int sndId = 0;
 
-	if (g_fp->getObjectState(sO_Valve_35) == g_fp->getObjectEnumState(sO_Valve_35, sO_TurnedOn)) {
+	if (g_nmi->getObjectState(sO_Valve_35) == g_nmi->getObjectEnumState(sO_Valve_35, sO_TurnedOn)) {
 		if ((g_vars->scene35_hose->_flags & 4) && g_vars->scene35_hose->_statics->_staticsId == ST_HZE_NORM) {
 			sndId = SND_35_012;
 		} else if (g_vars->scene35_bellyInflater->_statics->_staticsId == ST_PDV_SMALL) {
@@ -61,20 +61,20 @@ void scene35_initScene(Scene *sc) {
 	}
 
 	if (sndId)
-		g_fp->playSound(sndId, 1);
+		g_nmi->playSound(sndId, 1);
 
-	g_fp->lift_setButton(sO_Level6, ST_LBN_6N);
-	g_fp->lift_init(sc, QU_SC35_ENTERLIFT, QU_SC35_EXITLIFT);
+	g_nmi->lift_setButton(sO_Level6, ST_LBN_6N);
+	g_nmi->lift_init(sc, QU_SC35_ENTERLIFT, QU_SC35_EXITLIFT);
 
-	g_fp->initArcadeKeys("SC_35");
+	g_nmi->initArcadeKeys("SC_35");
 
-	g_fp->_floaters->init(g_fp->getGameLoaderGameVar()->getSubVarByName("SC_35"));
+	g_nmi->_floaters->init(g_nmi->getGameLoaderGameVar()->getSubVarByName("SC_35"));
 }
 
 void sceneHandler35_stopFlow() {
-	g_fp->setObjectState(sO_Valve_35, g_fp->getObjectEnumState(sO_Valve_35, sO_TurnedOff));
-	g_fp->stopAllSoundInstances(SND_35_011);
-	g_fp->playSound(SND_35_026, 0);
+	g_nmi->setObjectState(sO_Valve_35, g_nmi->getObjectEnumState(sO_Valve_35, sO_TurnedOff));
+	g_nmi->stopAllSoundInstances(SND_35_011);
+	g_nmi->playSound(SND_35_026, 0);
 }


Commit: 52ec2180210734cd842d7b1c8cd8b746f9631831
    https://github.com/scummvm/scummvm/commit/52ec2180210734cd842d7b1c8cd8b746f9631831
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-10-05T00:26:48+02:00

Commit Message:
ENGINES: Fix include file name

Changed paths:
    engines/detection.cpp


diff --git a/engines/detection.cpp b/engines/detection.cpp
index fa143c4cb4..11b8323fac 100644
--- a/engines/detection.cpp
+++ b/engines/detection.cpp
@@ -24,7 +24,7 @@
 
 #include "base/plugins.h"
 #include "engines/metaengine.h"
-#include "engines/advanceddetector.h"
+#include "engines/advancedDetector.h"
 #include "engines/detection.h"
 
 


Commit: 55b2d57d470a36d9b7751034e6cb1a0a75a3ecf6
    https://github.com/scummvm/scummvm/commit/55b2d57d470a36d9b7751034e6cb1a0a75a3ecf6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-10-05T00:26:48+02:00

Commit Message:
NGI: Further work on MDream

Changed paths:
    engines/ngi/gameloader.cpp
    engines/ngi/stateloader.cpp


diff --git a/engines/ngi/gameloader.cpp b/engines/ngi/gameloader.cpp
index 0da19cb8e2..b1724603b0 100644
--- a/engines/ngi/gameloader.cpp
+++ b/engines/ngi/gameloader.cpp
@@ -108,7 +108,8 @@ bool GameLoader::load(MfcArchive &file) {
 
 	_gameProject.reset(new GameProject());
 
-	_gameProject->load(file);
+	if (!_gameProject->load(file))
+		error("Cannot load project");
 
 	g_nmi->_gameProject = _gameProject.get();
 
diff --git a/engines/ngi/stateloader.cpp b/engines/ngi/stateloader.cpp
index 63f61e612f..1fbc3a2e25 100644
--- a/engines/ngi/stateloader.cpp
+++ b/engines/ngi/stateloader.cpp
@@ -23,6 +23,7 @@
 #include "ngi/ngi.h"
 
 #include "ngi/constants.h"
+#include "ngi/detection.h"
 #include "ngi/gameloader.h"
 #include "ngi/interaction.h"
 #include "ngi/objects.h"
@@ -376,6 +377,9 @@ bool GameProject::load(MfcArchive &file) {
 	debugC(1, kDebugLoading, "_scrollSpeed = %d", g_nmi->_scrollSpeed);
 	debugC(1, kDebugLoading, "_headerFilename = %s", _headerFilename.c_str());
 
+	if (g_nmi->getGameGID() == GID_MDREAM)
+		return false;
+
 	_sceneTagList.reset(new SceneTagList());
 
 	_sceneTagList->load(file);




More information about the Scummvm-git-logs mailing list