Skip to content

Commit

Permalink
HE: Add getStringFromArray()
Browse files Browse the repository at this point in the history
It's ARRAY_GetStringFromArray(), which was used in Moonbase networking
code as SPUTM_CStringArrayFromScummString().
  • Loading branch information
Tkachov authored and sev- committed Aug 30, 2016
1 parent aafc1ba commit d7377c4
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 6 deletions.
1 change: 1 addition & 0 deletions engines/scumm/he/intern_he.h
Expand Up @@ -288,6 +288,7 @@ class ScummEngine_v72he : public ScummEngine_v71he {

virtual byte *getStringAddress(ResId idx);
virtual int setupStringArray(int size);
void getStringFromArray(int arrayNumber, char *buffer, int maxLength);

protected:
virtual void setupOpcodes();
Expand Down
12 changes: 6 additions & 6 deletions engines/scumm/he/logic/moonbase_logic.cpp
Expand Up @@ -509,23 +509,23 @@ int LogicHEmoonbase::op_net_get_ip_from_name(int op, int numArgs, int32 *args) {
warning("STUB: op_net_get_ip_from_name()");
return 1;
}

int LogicHEmoonbase::op_net_host_tcpip_game(int op, int numArgs, int32 *args) {
char sessionName[MAX_SESSION_NAME];
char userName[MAX_PLAYER_NAME];

// TODO:
//SPUTM_CStringArrayFromScummString(args[0], sessionName, sizeof(sessionName));
//SPUTM_CStringArrayFromScummString(args[1], userName, sizeof(userName));
_vm1->getStringFromArray(args[0], sessionName, sizeof(sessionName));
_vm1->getStringFromArray(args[1], userName, sizeof(userName));

return _vm1->_moonbase->_net->hostGame(sessionName, userName);
}

int LogicHEmoonbase::op_net_join_tcpip_game(int op, int numArgs, int32 *args) {
char szIP[MAX_IP_SIZE];
char userName[MAX_PLAYER_NAME];

// TODO:
//SPUTM_CStringArrayFromScummString(args[0], szIP, sizeof(szIP));
//SPUTM_CStringArrayFromScummString(args[1], userName, sizeof(userName));
_vm1->getStringFromArray(args[0], szIP, sizeof(szIP));
_vm1->getStringFromArray(args[1], userName, sizeof(userName));

return _vm1->_moonbase->_net->joinGame(szIP, userName);
}
Expand Down
20 changes: 20 additions & 0 deletions engines/scumm/he/script_v72he.cpp
Expand Up @@ -1484,6 +1484,26 @@ void ScummEngine_v72he::writeFileFromArray(int slot, int32 resID) {
}
}

void ScummEngine_v72he::getStringFromArray(int arrayNumber, char *buffer, int maxLength) {
// I'm not really sure it belongs here and not some other version
// this is ARRAY_GetStringFromArray() from ARRAYS.cpp of SPUTM

// this function makes a C-string out of <arrayNumber> contents

VAR(0) = arrayNumber; // it was 0 in original code, but I've seen ScummVM Moonbase code which uses VAR_U32_ARRAY_UNK

int i, ch;
for (i = 0; i < maxLength; ++i) {
if (!(ch = readArray(0, 0, i))) {
break;
}

buffer[i] = ch;
}

buffer[i] = 0;
}

void ScummEngine_v72he::o72_writeFile() {
int32 resID = pop();
int slot = pop();
Expand Down

0 comments on commit d7377c4

Please sign in to comment.