Difference between revisions of "SCUMM/NES"

From ScummVM :: Wiki
Jump to navigation Jump to search
m (Clarify on this page about Famicom version not using SCUMM)
 
(18 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
== General ==
 +
The NES version is supported(American, European, Swedish, French, German, Spanish, Italian).
 +
 +
The Famicom version(Japanese) is not supported as it does not use the SCUMM engine.
 
== Things To Do ==
 
== Things To Do ==
 
+
=== Engine Verification ===
* Make inventory work<br>Checked functions:
+
* Verify functions:
 
** ScummEngine::runInputScript()
 
** ScummEngine::runInputScript()
 
** V2 opcodes:
 
** V2 opcodes:
Line 38: Line 42:
 
*** clearState01
 
*** clearState01
 
*** drawObject
 
*** drawObject
*** pickupObject * checking
+
*** pickupObject * partially checked
 
*** loadRoomWithEgo * unchecked
 
*** loadRoomWithEgo * unchecked
 
*** setBitVar * unchecked
 
*** setBitVar * unchecked
 
*** getBitVar * unchecked
 
*** getBitVar * unchecked
 
*** setOwnerOf * unchecked
 
*** setOwnerOf * unchecked
*** delay * unchecked
+
*** delay
 
*** walkActorToObject * unchecked
 
*** walkActorToObject * unchecked
 
*** putActorAtObject * unchecked
 
*** putActorAtObject * unchecked
 
*** walkActorTo * unchecked
 
*** walkActorTo * unchecked
*** setActorElevation * unchecked
+
*** setActorElevation * different - does not multiply elevation by 2, takes it as-is
 
*** putActor * unchecked
 
*** putActor * unchecked
*** setObjPreposition * unchecked
+
*** setObjPreposition * different - does nothing at all
*** getObjPreposition * unchecked
+
*** getObjPreposition
*** doSentence * unchecked
+
*** doSentence * partially checked
 
*** drawSentence * unchecked
 
*** drawSentence * unchecked
*** cutscene * unchecked
+
*** cutscene * difference - also saves _currentScript and clears some click-related vars
*** endCutscene * unchecked
+
*** endCutscene * difference - clears the _currentScript var saved in cutscene
*** setCameraAt * unchecked
+
*** setCameraAt * difference - sets camera to Panning mode, not Normal mode
*** panCameraTo * unchecked
+
*** panCameraTo * difference - no mention of camera._movingToActor
*** cursorCommand * unchecked
+
*** cursorCommand
*** getActorX * unchecked
+
*** getActorX
*** getActorY * unchecked
+
*** getActorY
*** getActorElevation * unchecked
+
*** getActorElevation * different - does not divide elevation by 2, returns it as-is
*** getActorWalkBox * unchecked
+
*** getActorWalkBox
 
*** animateActor * unchecked
 
*** animateActor * unchecked
 +
*** lights * partially checked
 
*** setObjectName * unchecked
 
*** setObjectName * unchecked
*** saveLoadGame * unchecked
+
*** resourceRoutines * different - does nothing at all
*** resourceRoutines * unchecked
 
 
*** restart * unchecked
 
*** restart * unchecked
*** setBoxFlags * unchecked
+
*** setBoxFlags
*** verbOps * unchecked
+
*** verbOps * different - no case for 0xFF (verb on/off), sets fewer vars
*** roomOps * unchecked
+
*** roomOps * different - lacks case 2 (room color)
*** actorOps * unchecked
+
*** actorOps
 
*** actorFromPos * unchecked
 
*** actorFromPos * unchecked
 
*** findObject * unchecked
 
*** findObject * unchecked
Line 94: Line 98:
 
*** getDist * unchecked
 
*** getDist * unchecked
 
*** getClosestObjActor * unchecked
 
*** getClosestObjActor * unchecked
*** getRandomNr * unchecked
+
*** getRandomNr
*** getActorMoving * unchecked
+
*** getActorMoving
*** isSoundRunning * unchecked
+
*** isSoundRunning
*** isScriptRunning * unchecked
+
*** isScriptRunning
*** delayVariable * unchecked
+
*** delayVariable
*** stopSound * unchecked
+
*** stopSound
*** startMusic/startSound * unchecked
+
*** startMusic/startSound
 
*** walkActorToActor * unchecked
 
*** walkActorToActor * unchecked
 
*** putActorInRoom * unchecked
 
*** putActorInRoom * unchecked
 
*** actorFollowCamera * unchecked
 
*** actorFollowCamera * unchecked
*** getActorCostume * unchecked
+
*** getActorCostume
*** getActorRoom * unchecked
+
*** getActorRoom
*** getActorFacing * unchecked
+
*** getActorFacing
 
*** faceActor * unchecked
 
*** faceActor * unchecked
*** lights * unchecked
+
*** saveLoadGame
*** stopMusic * unchecked
+
*** stopMusic * different - only stops music track
* Embed extract tool into File class, i.e. use technique similiar to Mac bundles
+
 
 +
=== Graphics ===
 
* Flashlight shape
 
* Flashlight shape
 
* Gray room palette in flashlight mode
 
* Gray room palette in flashlight mode
 +
 +
=== Scripts ===
 
* Fix freeze after scrolling Maniac Manion logo
 
* Fix freeze after scrolling Maniac Manion logo
* Add static MM logo and LucasArts logo
+
* Somehow add static MM logo and LucasArts logo (needs to be done before engine initializes)
** is this necessary? in the NES version, this happens before the SCUMM engine starts; besides, the C64 and PC versions (V1/V2) don't have Lucasfilm logos in them - Zak was the first to have that --[[User:Quietust|Quietust]] 03:43, 30 Mar 2005 (UTC)
+
 
* Sound
+
== Known Issues ==
 +
* Moving the cursor in the verb/inventory area will 'select' objects in the room if they touch the top of the room (example: stairs)
 +
* Text wrapping doesn't work for the sentence bar (it moves down 1 pixel, right in the middle of the word; needs to wrap at name/word boundaries)
 +
* Walking and talking at the same time doesn't work - stop walking while talking and your mouth will not move, stop talking while walking and you start sliding across the room.
 +
* Clicking in the top 16 pixels of the screen (above the subtitle bar) crashes the program.
 +
* Walkboxes have some bugs - in some cases, you can walk through corners. This appears to be a bug with all V1-V2 games.
 +
* After you select your characters and hit start, the first sound that gets played is 'chirping crickets' instead of 'pickup item'. This may be due to improper handling of o2_stopMusic()
 +
* The 'maniac mansion' logo scroll during the intro gets stuck due to a camera issue (original engine expects screen to be 224 wide, but in ScummVM it's 256 wide so it can't scroll far enough).

Latest revision as of 04:02, 4 December 2009

General

The NES version is supported(American, European, Swedish, French, German, Spanish, Italian).

The Famicom version(Japanese) is not supported as it does not use the SCUMM engine.

Things To Do

Engine Verification

  • Verify functions:
    • ScummEngine::runInputScript()
    • V2 opcodes:
      • beginOverride
      • waitForMessage
      • waitForSentence
      • waitForActor
      • assignVarWordIndirect
      • assignVarByte
      • addIndirect
      • subIndirect
      • add
      • subtract
      • isLessEqual
      • isGreaterEqual
      • isLess
      • isGreater
      • ifClassOfIs
      • startScript
      • chainScript
      • ifNotState08
      • ifState08
      • ifNotState04
      • ifState04
      • ifState02
      • ifNotState02
      • ifNotState01
      • ifState01
      • setState08 * does not appear to request redraw (as clearState08 does)
      • clearState08
      • setState04
      • clearState04
      • setState02
      • clearState02
      • setState01
      • clearState01
      • drawObject
      • pickupObject * partially checked
      • loadRoomWithEgo * unchecked
      • setBitVar * unchecked
      • getBitVar * unchecked
      • setOwnerOf * unchecked
      • delay
      • walkActorToObject * unchecked
      • putActorAtObject * unchecked
      • walkActorTo * unchecked
      • setActorElevation * different - does not multiply elevation by 2, takes it as-is
      • putActor * unchecked
      • setObjPreposition * different - does nothing at all
      • getObjPreposition
      • doSentence * partially checked
      • drawSentence * unchecked
      • cutscene * difference - also saves _currentScript and clears some click-related vars
      • endCutscene * difference - clears the _currentScript var saved in cutscene
      • setCameraAt * difference - sets camera to Panning mode, not Normal mode
      • panCameraTo * difference - no mention of camera._movingToActor
      • cursorCommand
      • getActorX
      • getActorY
      • getActorElevation * different - does not divide elevation by 2, returns it as-is
      • getActorWalkBox
      • animateActor * unchecked
      • lights * partially checked
      • setObjectName * unchecked
      • resourceRoutines * different - does nothing at all
      • restart * unchecked
      • setBoxFlags
      • verbOps * different - no case for 0xFF (verb on/off), sets fewer vars
      • roomOps * different - lacks case 2 (room color)
      • actorOps
      • actorFromPos * unchecked
      • findObject * unchecked
      • switchCostumeSet
    • V5 opcodes:
      • jumpRelative * unchecked
      • stopObjectCode * unchecked
      • breakHere * unchecked
      • setVarRange * unchecked
      • move * unchecked
      • increment * unchecked
      • decrement * unchecked
      • equalZero * unchecked
      • notEqualZero * unchecked
      • isNotEqual
      • isEqual
      • stopScript * unchecked
      • pseudoRoom * unchecked
      • loadRoom * unchecked
      • getObjectOwner * unchecked
      • printEgo * unchecked
      • print * unchecked
      • getDist * unchecked
      • getClosestObjActor * unchecked
      • getRandomNr
      • getActorMoving
      • isSoundRunning
      • isScriptRunning
      • delayVariable
      • stopSound
      • startMusic/startSound
      • walkActorToActor * unchecked
      • putActorInRoom * unchecked
      • actorFollowCamera * unchecked
      • getActorCostume
      • getActorRoom
      • getActorFacing
      • faceActor * unchecked
      • saveLoadGame
      • stopMusic * different - only stops music track

Graphics

  • Flashlight shape
  • Gray room palette in flashlight mode

Scripts

  • Fix freeze after scrolling Maniac Manion logo
  • Somehow add static MM logo and LucasArts logo (needs to be done before engine initializes)

Known Issues

  • Moving the cursor in the verb/inventory area will 'select' objects in the room if they touch the top of the room (example: stairs)
  • Text wrapping doesn't work for the sentence bar (it moves down 1 pixel, right in the middle of the word; needs to wrap at name/word boundaries)
  • Walking and talking at the same time doesn't work - stop walking while talking and your mouth will not move, stop talking while walking and you start sliding across the room.
  • Clicking in the top 16 pixels of the screen (above the subtitle bar) crashes the program.
  • Walkboxes have some bugs - in some cases, you can walk through corners. This appears to be a bug with all V1-V2 games.
  • After you select your characters and hit start, the first sound that gets played is 'chirping crickets' instead of 'pickup item'. This may be due to improper handling of o2_stopMusic()
  • The 'maniac mansion' logo scroll during the intro gets stuck due to a camera issue (original engine expects screen to be 224 wide, but in ScummVM it's 256 wide so it can't scroll far enough).