Difference between revisions of "SCUMM/NES"
< SCUMM
Jump to navigation
Jump to search
(→Sound: add sound format data) |
(→Known Issues: this one was fixed in Trac#2536) |
||
(17 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
== General == | |||
The NES version is supported (American, European, Swedish, French, German, Spanish, Italian). Please note the beta version is not supported. | |||
The Famicom version (Japanese) is not supported as it does not use the SCUMM engine. | |||
== Things To Do == | == Things To Do == | ||
=== Engine Verification === | === Engine Verification === | ||
* Verify functions: | * Verify functions: | ||
Line 40: | Line 43: | ||
*** clearState01 | *** clearState01 | ||
*** drawObject | *** drawObject | ||
*** pickupObject * | *** pickupObject * partially checked | ||
*** loadRoomWithEgo * unchecked | *** loadRoomWithEgo * unchecked | ||
*** setBitVar * unchecked | *** setBitVar * unchecked | ||
*** getBitVar * unchecked | *** getBitVar * unchecked | ||
*** setOwnerOf * unchecked | *** setOwnerOf * unchecked | ||
*** delay | *** delay | ||
*** walkActorToObject * unchecked | *** walkActorToObject * unchecked | ||
*** putActorAtObject * unchecked | *** putActorAtObject * unchecked | ||
*** walkActorTo * unchecked | *** walkActorTo * unchecked | ||
*** setActorElevation * | *** setActorElevation * different - does not multiply elevation by 2, takes it as-is | ||
*** putActor * unchecked | *** putActor * unchecked | ||
*** setObjPreposition * | *** setObjPreposition * different - does nothing at all | ||
*** getObjPreposition | *** getObjPreposition | ||
*** doSentence * | *** doSentence * partially checked | ||
*** drawSentence * unchecked | *** drawSentence * unchecked | ||
*** cutscene * | *** cutscene * difference - also saves _currentScript and clears some click-related vars | ||
*** endCutscene * | *** endCutscene * difference - clears the _currentScript var saved in cutscene | ||
*** setCameraAt * | *** setCameraAt * difference - sets camera to Panning mode, not Normal mode | ||
*** panCameraTo * | *** panCameraTo * difference - no mention of camera._movingToActor | ||
*** cursorCommand | *** cursorCommand | ||
*** getActorX | *** getActorX | ||
*** getActorY | *** getActorY | ||
*** getActorElevation * | *** getActorElevation * different - does not divide elevation by 2, returns it as-is | ||
*** getActorWalkBox | *** getActorWalkBox | ||
*** animateActor * unchecked | *** animateActor * unchecked | ||
*** lights * partially checked | |||
*** setObjectName * unchecked | *** setObjectName * unchecked | ||
*** resourceRoutines * different - does nothing at all | |||
*** resourceRoutines * | |||
*** restart * unchecked | *** restart * unchecked | ||
*** setBoxFlags | *** setBoxFlags | ||
*** verbOps * | *** verbOps * different - no case for 0xFF (verb on/off), sets fewer vars | ||
*** roomOps * | *** roomOps * different - lacks case 2 (room color) | ||
*** actorOps | *** actorOps | ||
*** actorFromPos * unchecked | *** actorFromPos * unchecked | ||
*** findObject * unchecked | *** findObject * unchecked | ||
Line 96: | Line 99: | ||
*** getDist * unchecked | *** getDist * unchecked | ||
*** getClosestObjActor * unchecked | *** getClosestObjActor * unchecked | ||
*** getRandomNr | *** getRandomNr | ||
*** getActorMoving | *** getActorMoving | ||
*** isSoundRunning | *** isSoundRunning | ||
*** isScriptRunning | *** isScriptRunning | ||
*** delayVariable | *** delayVariable | ||
*** stopSound | *** stopSound | ||
*** startMusic/startSound | *** startMusic/startSound | ||
*** walkActorToActor * unchecked | *** walkActorToActor * unchecked | ||
*** putActorInRoom * unchecked | *** putActorInRoom * unchecked | ||
*** actorFollowCamera * unchecked | *** actorFollowCamera * unchecked | ||
*** getActorCostume | *** getActorCostume | ||
*** getActorRoom | *** getActorRoom | ||
*** getActorFacing | *** getActorFacing | ||
*** faceActor * unchecked | *** faceActor * unchecked | ||
*** | *** saveLoadGame | ||
*** stopMusic * | *** stopMusic * different - only stops music track | ||
=== Graphics === | === Graphics === | ||
Line 121: | Line 124: | ||
* Somehow add static MM logo and LucasArts logo (needs to be done before engine initializes) | * 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. | |||
* 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 11:41, 1 September 2024
General
The NES version is supported (American, European, Swedish, French, German, Spanish, Italian). Please note the beta version is not supported.
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.
- 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).