diff options
| author | James Brown | 2003-01-26 06:17:25 +0000 | 
|---|---|---|
| committer | James Brown | 2003-01-26 06:17:25 +0000 | 
| commit | a0b77e7389686d38cf938136e729a5d6fa2dd8be (patch) | |
| tree | 0a116455d8361189b9bdfb49f49ec49d5de6d2a7 /scumm/script_v8.cpp | |
| parent | 5956e5ee183917efa250ce792d54243399a3aadb (diff) | |
| download | scummvm-rg350-a0b77e7389686d38cf938136e729a5d6fa2dd8be.tar.gz scummvm-rg350-a0b77e7389686d38cf938136e729a5d6fa2dd8be.tar.bz2 scummvm-rg350-a0b77e7389686d38cf938136e729a5d6fa2dd8be.zip  | |
LCA03 sync: Modified version of the untrap patch, debugger
savegame/loadgame changes, attempts at making the ComI save/load screen
(F1) work. The savegame part of the screen does not work due to a crash,
the load part SHOULD... but something resets the saveload flags before
they are processed (help! :)
svn-id: r6545
Diffstat (limited to 'scumm/script_v8.cpp')
| -rw-r--r-- | scumm/script_v8.cpp | 54 | 
1 files changed, 46 insertions, 8 deletions
diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp index c87f674f41..f520342031 100644 --- a/scumm/script_v8.cpp +++ b/scumm/script_v8.cpp @@ -249,7 +249,7 @@ void Scumm_v8::setupOpcodes()  		OPCODE(o6_pickupObject),  		OPCODE(o6_setBoxFlags),  		/* A8 */ -		OPCODE(o6_createBoxMatrix), +		OPCODE(o8_createBoxMatrix),  		OPCODE(o6_invalid),  		OPCODE(o8_resourceRoutines),  		OPCODE(o8_roomOps), @@ -865,6 +865,20 @@ void Scumm_v8::o8_cursorCommand()  	_vars[VAR_USERPUT] = _userPut;  } +void Scumm_v8::o8_createBoxMatrix() +{ +	int i; +	Actor *a; + +	createBoxMatrix(); + +	for(i = 1; i < NUM_ACTORS; i++) { +		a = &_actors[i]; +		if (a && a->isInCurrentRoom()) +			a->adjustActorPos(); +	} +} +  void Scumm_v8::o8_resourceRoutines()  {  	// TODO @@ -1457,15 +1471,35 @@ void Scumm_v8::o8_kernelSetFunctions()  	case 24:	// clearTextQueue  		warning("o8_kernelSetFunctions: clearTextQueue()");  		break; -	case 25:	// saveGameWrite -		warning("o8_kernelSetFunctions: saveGameWrite(%d, %d)", args[1], args[2]); +	case 25: {	// saveGameReadName +		SaveFileManager *mgr = _system->get_savefile_manager(); +		char *address = (char*)getStringAddress(args[2]); +		char name[30]; + +		if (!address) { +			warning("o8_kernelSetFunctions: saveGameReadName failed finding slot string %d", args[2]); +			break; +		} +		getSavegameName(args[1] - 1, name, mgr); +		if (strlen(name) > 0 && strlen(name) < 30) +			strcpy(address, name);  		break; -	case 26:	// saveGameRead -		warning("o8_kernelSetFunctions: saveGameRead(%d, %d)", args[1], args[2]); +	} +	case 26: {	// saveGame? +		//SaveFileManager *mgr = _system->get_savefile_manager(); +		//char *address = (char*)getStringAddress(args[2]); +		char address[30]; +		warning("o8_kernelSetFunctions: saveGame?(%d, %s)", args[1], address);  		break; -	case 27:	// saveGameReadName -		warning("o8_kernelSetFunctions: saveGameReadName(%d)", args[1]); +	} +	case 27: {	// FIXME: This doesn't work +			// saveGameRead +		_saveLoadSlot = 0; +		_saveLoadFlag = 2; +		_saveLoadCompatible = false; +		warning("Sgl: %d\n", args[1]);  		break; +	}  	case 28:	// saveGameStampScreenshot  		warning("o8_kernelSetFunctions: saveGameStampScreenshot(%d, %d, %d, %d, %d, %d)", args[1], args[2], args[3], args[4], args[5], args[6]);  		break; @@ -1686,14 +1720,18 @@ void Scumm_v8::o8_getObjectImageHeight()  void Scumm_v8::o8_getStringWidth()  { +	char temp[1024];  	int charset = pop();  	int len = resStrLen(_scriptPointer);  	int oldID = _charset->getCurID();   	int width; +	// Parse the string to get rid of substitution codes +	strcpy(temp, (char*)_scriptPointer); +	addMessageToStack((byte*)&temp);  	// Temporary set the specified charset id  	_charset->setCurID(charset); -	width = _charset->getStringWidth(0, _scriptPointer); +	width = _charset->getStringWidth(0, (byte*)temp);  	_charset->setCurID(oldID);  	push(width);  | 
