[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