[Scummvm-cvs-logs] scummvm master -> 8c4beffdf05126c5798e23ef78e1cc98face1256

bluegr bluegr at gmail.com
Sat Dec 1 21:01:53 CET 2012


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

Summary:
3fdddd53b2 TINSEL: Start handling the BE resources of the Mac versions of DW1
8c4beffdf0 SCI: Add the French DOS version of Freddy Pharkas (bug #3589449)


Commit: 3fdddd53b2b970aae3e967bebc0bff6e642a5111
    https://github.com/scummvm/scummvm/commit/3fdddd53b2b970aae3e967bebc0bff6e642a5111
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2012-12-01T11:53:33-08:00

Commit Message:
TINSEL: Start handling the BE resources of the Mac versions of DW1

Refer to bug #3110936

This is still work in progress, but it doesn't affect the rest
of the LE versions of DW1. Both the Mac demo and the full
version still crash. The music in the Mac version is skipped for
now, as it isn't MIDI

Changed paths:
    engines/tinsel/anim.cpp
    engines/tinsel/bg.cpp
    engines/tinsel/cursor.cpp
    engines/tinsel/font.cpp
    engines/tinsel/multiobj.cpp
    engines/tinsel/music.cpp
    engines/tinsel/palette.cpp
    engines/tinsel/play.cpp
    engines/tinsel/scene.cpp
    engines/tinsel/tinsel.h



diff --git a/engines/tinsel/anim.cpp b/engines/tinsel/anim.cpp
index 034296c..cfc2612 100644
--- a/engines/tinsel/anim.cpp
+++ b/engines/tinsel/anim.cpp
@@ -189,7 +189,7 @@ SCRIPTSTATE DoNextFrame(ANIM *pAnim) {
 		default:	// must be an actual animation frame handle
 
 			// set objects new animation frame
-			pAnim->pObject->hShape = FROM_LE_32(pAni[pAnim->scriptIndex].hFrame);
+			pAnim->pObject->hShape = FROM_32(pAni[pAnim->scriptIndex].hFrame);
 
 			// re-shape the object
 			MultiReshape(pAnim->pObject);
diff --git a/engines/tinsel/bg.cpp b/engines/tinsel/bg.cpp
index a3e21a8..0c0db12 100644
--- a/engines/tinsel/bg.cpp
+++ b/engines/tinsel/bg.cpp
@@ -124,7 +124,7 @@ static void BGmainProcess(CORO_PARAM, const void *param) {
 			pReel = (const FREEL *)param;
 
 			// Get the MULTI_INIT structure
-			pmi = (const MULTI_INIT *)LockMem(FROM_LE_32(pReel->mobj));
+			pmi = (const MULTI_INIT *)LockMem(FROM_32(pReel->mobj));
 
 			// Initialize and insert the object, and initialize its script.
 			g_pBG[0] = MultiInitObject(pmi);
@@ -249,10 +249,10 @@ void StartupBackground(CORO_PARAM, SCNHANDLE hFilm) {
 
 	pim = GetImageFromFilm(hFilm, 0, NULL, NULL, &pfilm);
 
-	SetBackPal(FROM_LE_32(pim->hImgPal));
+	SetBackPal(FROM_32(pim->hImgPal));
 
 	// Extract the film speed
-	g_BGspeed = ONE_SECOND / FROM_LE_32(pfilm->frate);
+	g_BGspeed = ONE_SECOND / FROM_32(pfilm->frate);
 
 	// Start display process for each reel in the film
 	CoroScheduler.createProcess(PID_REEL, BGmainProcess, &pfilm->reels[0], sizeof(FREEL));
diff --git a/engines/tinsel/cursor.cpp b/engines/tinsel/cursor.cpp
index bf901c0..5b365fc 100644
--- a/engines/tinsel/cursor.cpp
+++ b/engines/tinsel/cursor.cpp
@@ -324,14 +324,14 @@ IMAGE *GetImageFromReel(const FREEL *pfr, const MULTI_INIT **ppmi) {
 	const MULTI_INIT *pmi;
 	const FRAME *pFrame;
 
-	pmi = (const MULTI_INIT *)LockMem(FROM_LE_32(pfr->mobj));
+	pmi = (const MULTI_INIT *)LockMem(FROM_32(pfr->mobj));
 	if (ppmi)
 		*ppmi = pmi;
 
-	pFrame = (const FRAME *)LockMem(FROM_LE_32(pmi->hMulFrame));
+	pFrame = (const FRAME *)LockMem(FROM_32(pmi->hMulFrame));
 
 	// get pointer to image
-	return (IMAGE *)LockMem(READ_LE_UINT32(pFrame));
+	return (IMAGE *)LockMem(READ_32(pFrame));
 }
 
 /**
@@ -620,7 +620,7 @@ void DwInitCursor(SCNHANDLE bfilm) {
 	g_hCursorFilm = bfilm;
 
 	pfilm = (const FILM *)LockMem(g_hCursorFilm);
-	g_numTrails = FROM_LE_32(pfilm->numreels) - 1;
+	g_numTrails = FROM_32(pfilm->numreels) - 1;
 
 	assert(g_numTrails <= MAX_TRAILERS);
 }
diff --git a/engines/tinsel/font.cpp b/engines/tinsel/font.cpp
index 54aa7cc..6f7c391 100644
--- a/engines/tinsel/font.cpp
+++ b/engines/tinsel/font.cpp
@@ -102,14 +102,14 @@ void FettleFontPal(SCNHANDLE fontPal) {
 	assert(g_hTalkFont); // Talk font not declared
 
 	pFont = (const FONT *)LockMem(g_hTagFont);
-	pImg = (IMAGE *)LockMem(FROM_LE_32(pFont->fontInit.hObjImg));	// get image for char 0
+	pImg = (IMAGE *)LockMem(FROM_32(pFont->fontInit.hObjImg));	// get image for char 0
 	if (!TinselV2)
 		pImg->hImgPal = TO_LE_32(fontPal);
 	else
 		pImg->hImgPal = 0;
 
 	pFont = (const FONT *)LockMem(g_hTalkFont);
-	pImg = (IMAGE *)LockMem(FROM_LE_32(pFont->fontInit.hObjImg));	// get image for char 0
+	pImg = (IMAGE *)LockMem(FROM_32(pFont->fontInit.hObjImg));	// get image for char 0
 	if (!TinselV2)
 		pImg->hImgPal = TO_LE_32(fontPal);
 	else
diff --git a/engines/tinsel/multiobj.cpp b/engines/tinsel/multiobj.cpp
index c48fefd..37769a7 100644
--- a/engines/tinsel/multiobj.cpp
+++ b/engines/tinsel/multiobj.cpp
@@ -40,22 +40,22 @@ OBJECT *MultiInitObject(const MULTI_INIT *pInitTbl) {
 	OBJECT *pFirst, *pObj;	// object pointers
 	FRAME *pFrame;		// list of images for the multi-part object
 
-	if (FROM_LE_32(pInitTbl->hMulFrame)) {
+	if (FROM_32(pInitTbl->hMulFrame)) {
 		// we have a frame handle
-		pFrame = (FRAME *)LockMem(FROM_LE_32(pInitTbl->hMulFrame));
+		pFrame = (FRAME *)LockMem(FROM_32(pInitTbl->hMulFrame));
 
-		obj_init.hObjImg  = READ_LE_UINT32(pFrame);	// first objects shape
+		obj_init.hObjImg  = READ_32(pFrame);	// first objects shape
 	} else {	// this must be a animation list for a NULL object
 		pFrame = NULL;
 		obj_init.hObjImg = 0;	// first objects shape
 	}
 
 	// init the object init table
-	obj_init.objFlags = (int)FROM_LE_32(pInitTbl->mulFlags);	// all objects have same flags
-	obj_init.objID    = (int)FROM_LE_32(pInitTbl->mulID);	// all objects have same ID
-	obj_init.objX     = (int)FROM_LE_32(pInitTbl->mulX);	// all objects have same X ani pos
-	obj_init.objY     = (int)FROM_LE_32(pInitTbl->mulY);	// all objects have same Y ani pos
-	obj_init.objZ     = (int)FROM_LE_32(pInitTbl->mulZ);	// all objects have same Z pos
+	obj_init.objFlags = (int)FROM_32(pInitTbl->mulFlags);	// all objects have same flags
+	obj_init.objID    = (int)FROM_32(pInitTbl->mulID);	// all objects have same ID
+	obj_init.objX     = (int)FROM_32(pInitTbl->mulX);	// all objects have same X ani pos
+	obj_init.objY     = (int)FROM_32(pInitTbl->mulY);	// all objects have same Y ani pos
+	obj_init.objZ     = (int)FROM_32(pInitTbl->mulZ);	// all objects have same Z pos
 
 	// create and init the first object
 	pObj = pFirst = InitObject(&obj_init);
@@ -65,9 +65,9 @@ OBJECT *MultiInitObject(const MULTI_INIT *pInitTbl) {
 
 		pFrame++;
 
-		while (READ_LE_UINT32(pFrame) != 0) {
+		while (READ_32(pFrame) != 0) {
 			// set next objects shape
-			obj_init.hObjImg = READ_LE_UINT32(pFrame);
+			obj_init.hObjImg = READ_32(pFrame);
 
 			// create next object and link to previous
 			pObj = pObj->pSlave = InitObject(&obj_init);
@@ -378,9 +378,9 @@ void MultiReshape(OBJECT *pMultiObj) {
 		// update previous
 		pMultiObj->hMirror = hFrame;
 
-		while (READ_LE_UINT32(pFrame) != 0 && pMultiObj != NULL) {
+		while (READ_32(pFrame) != 0 && pMultiObj != NULL) {
 			// a normal image - update the current object with this image
-			AnimateObject(pMultiObj, READ_LE_UINT32(pFrame));
+			AnimateObject(pMultiObj, READ_32(pFrame));
 
 			// move to next image for this frame
 			pFrame++;
diff --git a/engines/tinsel/music.cpp b/engines/tinsel/music.cpp
index b3bfbcc..15406c5 100644
--- a/engines/tinsel/music.cpp
+++ b/engines/tinsel/music.cpp
@@ -281,6 +281,10 @@ void OpenMidiFiles() {
 	if (TinselV0 || TinselV2)
 		return;
 
+	// TODO: The Macintosh version does not use MIDI for music
+	if (TinselV1Mac)
+		return;
+
 	if (g_midiBuffer.pDat)
 		// already allocated
 		return;
diff --git a/engines/tinsel/palette.cpp b/engines/tinsel/palette.cpp
index e6c9467..544dc03 100644
--- a/engines/tinsel/palette.cpp
+++ b/engines/tinsel/palette.cpp
@@ -546,7 +546,7 @@ void CreateTranslucentPalette(SCNHANDLE hPalette) {
 	// leave background color alone
 	g_transPalette[0] = 0;
 
-	for (uint i = 0; i < FROM_LE_32(pPal->numColors); i++) {
+	for (uint i = 0; i < FROM_32(pPal->numColors); i++) {
 		// get the RGB color model values
 		uint8 red   = TINSEL_GetRValue(pPal->palRGB[i]);
 		uint8 green = TINSEL_GetGValue(pPal->palRGB[i]);
diff --git a/engines/tinsel/play.cpp b/engines/tinsel/play.cpp
index 9e0baa7..718ee7f 100644
--- a/engines/tinsel/play.cpp
+++ b/engines/tinsel/play.cpp
@@ -81,7 +81,7 @@ static void PokeInPalette(SCNHANDLE hMulFrame) {
 		pFrame = (const FRAME *)LockMem(hMulFrame);
 
 		// get pointer to image
-		pim = (IMAGE *)LockMem(READ_LE_UINT32(pFrame));	// handle to image
+		pim = (IMAGE *)LockMem(READ_32(pFrame));	// handle to image
 
 		pim->hImgPal = TO_LE_32(BgPal());
 	}
@@ -451,10 +451,10 @@ static void t1PlayReel(CORO_PARAM, const PPINIT *ppi) {
 	_ctx->pfreel = &pfilm->reels[ppi->column];
 
 	// Get the MULTI_INIT structure
-	pmi = (const MULTI_INIT *)LockMem(FROM_LE_32(_ctx->pfreel->mobj));
+	pmi = (const MULTI_INIT *)LockMem(FROM_32(_ctx->pfreel->mobj));
 
 	// Save actor's ID
-	_ctx->reelActor = (int32)FROM_LE_32(pmi->mulID);
+	_ctx->reelActor = (int32)FROM_32(pmi->mulID);
 
 	/**** New (experimental? bit 5/1/95 ****/
 	if (!TinselV0 && !actorAlive(_ctx->reelActor))
@@ -488,7 +488,7 @@ static void t1PlayReel(CORO_PARAM, const PPINIT *ppi) {
 		return;
 
 	// Poke in the background palette
-	PokeInPalette(FROM_LE_32(pmi->hMulFrame));
+	PokeInPalette(FROM_32(pmi->hMulFrame));
 
 	// Set up and insert the multi-object
 	_ctx->pPlayObj = MultiInitObject(pmi);
@@ -534,7 +534,7 @@ static void t1PlayReel(CORO_PARAM, const PPINIT *ppi) {
 	if (ppi->actorid == 0 && !actorAlive(_ctx->reelActor))
 		_ctx->lifeNoMatter = true;
 
-	InitStepAnimScript(&_ctx->thisAnim, _ctx->pPlayObj,  FROM_LE_32(_ctx->pfreel->script), ppi->speed);
+	InitStepAnimScript(&_ctx->thisAnim, _ctx->pPlayObj,  FROM_32(_ctx->pfreel->script), ppi->speed);
 
 	// If first column, set Z position as per
 	// Otherwise, column 0's + column number
@@ -952,10 +952,10 @@ void NewestFilm(SCNHANDLE film, const FREEL *reel) {
 	const MULTI_INIT *pmi;		// MULTI_INIT structure
 
 	// Get the MULTI_INIT structure
-	pmi = (const MULTI_INIT *)LockMem(FROM_LE_32(reel->mobj));
+	pmi = (const MULTI_INIT *)LockMem(FROM_32(reel->mobj));
 
-	if (!TinselV2 || ((int32)FROM_LE_32(pmi->mulID) != -2))
-		SetActorLatestFilm((int32)FROM_LE_32(pmi->mulID), film);
+	if (!TinselV2 || ((int32)FROM_32(pmi->mulID) != -2))
+		SetActorLatestFilm((int32)FROM_32(pmi->mulID), film);
 }
 
 // *******************************************************
@@ -988,7 +988,7 @@ void PlayFilm(CORO_PARAM, SCNHANDLE hFilm, int x, int y, int actorid, bool splay
 	ppi.y = y;
 	ppi.z = 0;
 	ppi.bRestore = false;
-	ppi.speed = (ONE_SECOND / FROM_LE_32(pFilm->frate));
+	ppi.speed = (ONE_SECOND / FROM_32(pFilm->frate));
 	ppi.actorid = actorid;
 	ppi.splay = splay;
 	ppi.bTop = bTop;
@@ -997,7 +997,7 @@ void PlayFilm(CORO_PARAM, SCNHANDLE hFilm, int x, int y, int actorid, bool splay
 	ppi.myescEvent = myescEvent;
 
 	// Start display process for each reel in the film
-	for (int i = FROM_LE_32(pFilm->numreels) - 1; i >= 0; i--) {
+	for (int i = FROM_32(pFilm->numreels) - 1; i >= 0; i--) {
 		NewestFilm(hFilm, &pFilm->reels[i]);
 
 		ppi.column = i;
diff --git a/engines/tinsel/scene.cpp b/engines/tinsel/scene.cpp
index c544451..37088fd 100644
--- a/engines/tinsel/scene.cpp
+++ b/engines/tinsel/scene.cpp
@@ -167,7 +167,7 @@ static void SceneTinselProcess(CORO_PARAM, const void *param) {
 	assert(_ctx->pInit->hTinselCode);		// Must have some code to run
 
 	_ctx->pic = InitInterpretContext(GS_SCENE,
-		READ_LE_UINT32(&_ctx->pInit->hTinselCode),
+		READ_32(&_ctx->pInit->hTinselCode),
 		TinselV2 ? _ctx->pInit->event : NOEVENT,
 		NOPOLY,			// No polygon
 		0,				// No actor
@@ -265,8 +265,8 @@ static void LoadScene(SCNHANDLE scene, int entry) {
 		StartTaggedActors(FROM_LE_32(ss->hTaggedActor), FROM_LE_32(ss->numTaggedActor), true);
 
 		// Run the appropriate entrance code (if any)
-		es = (const ENTRANCE_STRUC *)LockMem(FROM_LE_32(ss->hEntrance));
-		for (i = 0; i < FROM_LE_32(ss->numEntrance); i++) {
+		es = (const ENTRANCE_STRUC *)LockMem(FROM_32(ss->hEntrance));
+		for (i = 0; i < FROM_32(ss->numEntrance); i++) {
 			if (FROM_LE_32(es->eNumber) == (uint)entry) {
 				if (es->hScript) {
 					init.event = STARTUP;
diff --git a/engines/tinsel/tinsel.h b/engines/tinsel/tinsel.h
index 1232491..02a0d0f 100644
--- a/engines/tinsel/tinsel.h
+++ b/engines/tinsel/tinsel.h
@@ -135,6 +135,8 @@ typedef bool (*KEYFPTR)(const Common::KeyState &);
 
 #define READ_16(v) (TinselV1Mac ? READ_BE_UINT16(v) : READ_LE_UINT16(v))
 #define READ_32(v) (TinselV1Mac ? READ_BE_UINT32(v) : READ_LE_UINT32(v))
+#define FROM_16(v) (TinselV1Mac ? FROM_BE_16(v) : FROM_LE_16(v))
+#define FROM_32(v) (TinselV1Mac ? FROM_BE_32(v) : FROM_LE_32(v))
 
 // Global reference to the TinselEngine object
 extern TinselEngine *_vm;


Commit: 8c4beffdf05126c5798e23ef78e1cc98face1256
    https://github.com/scummvm/scummvm/commit/8c4beffdf05126c5798e23ef78e1cc98face1256
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2012-12-01T12:00:45-08:00

Commit Message:
SCI: Add the French DOS version of Freddy Pharkas (bug #3589449)

Changed paths:
    engines/sci/detection_tables.h



diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 98b72a2..736d0b7 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -581,6 +581,15 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 	 	Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI)	},
 
+	// Freddy Pharkas - French DOS Floppy (supplied by misterhands in bug report #3589449)
+	// Executable scanning reports "1.cfs.081"
+	{"freddypharkas", "Floppy", {
+		{"resource.map", 0, "a32674e7fbf7b213b4a066c8037f16b6", 5816},
+		{"resource.000", 0, "fed4808fdb72486908ac7ad0044b14d8", 5233230},
+		{"resource.msg", 0, "4dc478f5c73b57e5d690bdfffdcf1c44", 816518},
+		AD_LISTEND},
+	 	Common::FR_FRA, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI)	},
+
 	// Freddy Pharkas - Windows (supplied by abevi in bug report #2612718)
 	// Executable scanning reports "1.cfs.081"
 	// SCI interpreter version 1.001.132 (just a guess)






More information about the Scummvm-git-logs mailing list