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

clone2727 clone2727 at gmail.com
Thu Apr 28 02:28:20 CEST 2011


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:
1331c998e3 SCUMM: Add separate game id's for soccermls and soccer2004
af28efae41 SCUMM: Fix differences in soccer's u32 op_1011


Commit: 1331c998e35a91b94c6c54cfc5d0eb2adf0eb028
    https://github.com/scummvm/scummvm/commit/1331c998e35a91b94c6c54cfc5d0eb2adf0eb028
Author: Matthew Hoops (clone2727 at gmail.com)
Date: 2011-04-27T17:23:19-07:00

Commit Message:
SCUMM: Add separate game id's for soccermls and soccer2004

There are subtle differences in their u32 code that we need to handle

Changed paths:
    engines/scumm/detection_tables.h
    engines/scumm/scumm.cpp
    engines/scumm/scumm.h



diff --git a/engines/scumm/detection_tables.h b/engines/scumm/detection_tables.h
index a5542ca..d66798c 100644
--- a/engines/scumm/detection_tables.h
+++ b/engines/scumm/detection_tables.h
@@ -372,7 +372,7 @@ static const GameSettings gameVariantsTable[] = {
 	{"arttime", 0, 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
 	{"baseball2001", 0, 0, GID_BASEBALL2001, 6, 99, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
 	{"readtime", 0, 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
-	{"SoccerMLS", 0, 0, GID_SOCCER, 6, 99, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
+	{"SoccerMLS", 0, 0, GID_SOCCERMLS, 6, 99, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
 	{"spyozon", 0, 0, GID_HEGAME, 6, 99, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
 
 	{"freddicove", "",       0, GID_HEGAME, 6,  99, MDT_NONE, GF_USE_KEY | GF_HE_LOCALIZED | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
@@ -386,7 +386,7 @@ static const GameSettings gameVariantsTable[] = {
 	{"Baseball2003", 0, 0, GID_HEGAME, 6, 100, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
 	{"basketball", 0, 0, GID_BASKETBALL, 6, 100, MDT_NONE, GF_USE_KEY| GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
 	{"football2002", 0, 0, GID_FOOTBALL, 6, 100, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
-	{"Soccer2004", 0, 0, GID_SOCCER, 6, 100, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
+	{"Soccer2004", 0, 0, GID_SOCCER2004, 6, 100, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
 
 	// U32 code required, for testing only
 	{"moonbase", 0, 0, GID_MOONBASE, 6, 100, MDT_NONE, GF_USE_KEY | GF_16BIT_COLOR, UNK, GUIO_NOLAUNCHLOAD | GUIO_NOMIDI},
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index 920887e..0e7ceff 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -1648,6 +1648,8 @@ void ScummEngine_v90he::resetScumm() {
 			break;
 
 		case GID_SOCCER:
+		case GID_SOCCERMLS:
+		case GID_SOCCER2004:
 			_logicHE = new LogicHEsoccer(this);
 			break;
 
diff --git a/engines/scumm/scumm.h b/engines/scumm/scumm.h
index 266a2c4..59b9e40 100644
--- a/engines/scumm/scumm.h
+++ b/engines/scumm/scumm.h
@@ -253,6 +253,8 @@ enum ScummGameId {
 	GID_FUNSHOP,	// Used for all three funshops
 	GID_FOOTBALL,
 	GID_SOCCER,
+	GID_SOCCERMLS,
+	GID_SOCCER2004,
 	GID_BASEBALL2001,
 	GID_BASKETBALL,
 	GID_MOONBASE,


Commit: af28efae4191a3885b2a19a9fe8a4c34f242985b
    https://github.com/scummvm/scummvm/commit/af28efae4191a3885b2a19a9fe8a4c34f242985b
Author: Matthew Hoops (clone2727 at gmail.com)
Date: 2011-04-27T17:23:19-07:00

Commit Message:
SCUMM: Fix differences in soccer's u32 op_1011

Changed paths:
    engines/scumm/he/logic_he.cpp



diff --git a/engines/scumm/he/logic_he.cpp b/engines/scumm/he/logic_he.cpp
index 70931b1..297c299 100644
--- a/engines/scumm/he/logic_he.cpp
+++ b/engines/scumm/he/logic_he.cpp
@@ -859,6 +859,8 @@ int32 LogicHEsoccer::dispatch(int op, int numArgs, int32 *args) {
 
 	case 1011:
 		// args[4] is ignored!
+		// soccer passes the argument, but then ends up not using it
+		// Makes sense that they removed it for soccermls
 		res = op_1011(args[0], args[1], args[2], args[3], args[5]);
 		break;
 
@@ -913,6 +915,8 @@ int LogicHEsoccer::startOfFrame() {
 	int res = (int)_userDataD[530];
 
 	// _userDataD[535] is not used!
+	// soccer passes the argument, but then ends up not using it
+	// Makes sense that they removed it for soccermls
 	if (res)
 		res = op_1011((int)_userDataD[531], (int)_userDataD[532], (int)_userDataD[533], (int)_userDataD[534], (int)_userDataD[536]);
 
@@ -1087,7 +1091,12 @@ int LogicHEsoccer::op_1011(int32 a1, int32 a2, int32 a3, int32 a4, int32 a5) {
 		putInArray(a2, i + 22, 1, v12);
 	}
 
-	for (int i = 18; i < 22; i++) {
+	// soccer only uses one array here
+	// soccermls/soccer2004 use four
+	int start = (_vm->_game.id == GID_SOCCER) ? 19 : 18;
+	int end = (_vm->_game.id == GID_SOCCER) ? 19 : 21;
+
+	for (int i = start; i <= end; i++) {
 		int v14 = getFromArray(a2, i, 0);
 		int v15 = getFromArray(a2, i, 1);
 
@@ -1140,10 +1149,6 @@ void LogicHEsoccer::op_1011_sub(int32 a1, int32 a2, int32 a3, int32 a4) {
 		}
 	}
 
-	int v9 = getFromArray(a1, 20, 0);
-	int v10 = getFromArray(a1, 20, 2);
-	int v11 = getFromArray(a1, 21, 0);
-	int v12 = getFromArray(a1, 21, 2);
 	int v13 = getFromArray(a1, 18, 0);
 	int v14 = getFromArray(a1, 18, 2);
 	int v15 = getFromArray(a1, 19, 0);
@@ -1151,14 +1156,29 @@ void LogicHEsoccer::op_1011_sub(int32 a1, int32 a2, int32 a3, int32 a4) {
 	int v19[15];
 	int v20[15];
 
-	for (int i = 0; i < 6; i++) {
-		v20[i] = distance(v9, v7[i], v10, v8[i]);
-		v19[i] = distance(v13, v7[i], v14, v8[i]);
-	}
+	if (_vm->_game.id == GID_SOCCER) {
+		// soccer gets to be different
+		for (int i = 0; i < 13; i++)
+			v20[i] = distance(v13, v7[i], v14, v8[i]);
+
+		for (int i = 0; i < 13; i++)
+			v19[i] = distance(v15, v7[i], v16, v8[i]);
+	} else {
+		// soccermls and soccer2004 use two other arrays here
+		int v9 = getFromArray(a1, 20, 0);
+		int v10 = getFromArray(a1, 20, 2);
+		int v11 = getFromArray(a1, 21, 0);
+		int v12 = getFromArray(a1, 21, 2);
+
+		for (int i = 0; i < 6; i++) {
+			v20[i] = distance(v9, v7[i], v10, v8[i]);
+			v19[i] = distance(v13, v7[i], v14, v8[i]);
+		}
 
-	for (int i = 6; i < 13; i++) {
-		v20[i] = distance(v11, v7[i], v12, v8[i]);
-		v19[i] = distance(v15, v7[i], v16, v8[i]);
+		for (int i = 6; i < 13; i++) {
+			v20[i] = distance(v11, v7[i], v12, v8[i]);
+			v19[i] = distance(v15, v7[i], v16, v8[i]);
+		}
 	}
 
 	for (int i = 0; i < 13; i++) {






More information about the Scummvm-git-logs mailing list