Open main menu
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Things To Do

Inventory

  • Make inventory work

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 * checking
      • loadRoomWithEgo * unchecked
      • setBitVar * unchecked
      • getBitVar * unchecked
      • setOwnerOf * unchecked
      • delay * unchecked
      • walkActorToObject * unchecked
      • putActorAtObject * unchecked
      • walkActorTo * unchecked
      • setActorElevation * unchecked
      • putActor * unchecked
      • setObjPreposition * unchecked
      • getObjPreposition * unchecked
      • doSentence * unchecked
      • drawSentence * unchecked
      • cutscene * unchecked
      • endCutscene * unchecked
      • setCameraAt * unchecked
      • panCameraTo * unchecked
      • cursorCommand * unchecked
      • getActorX * unchecked
      • getActorY * unchecked
      • getActorElevation * unchecked
      • getActorWalkBox * unchecked
      • animateActor * unchecked
      • setObjectName * unchecked
      • saveLoadGame * unchecked
      • resourceRoutines * unchecked
      • restart * unchecked
      • setBoxFlags * unchecked
      • verbOps * unchecked
      • roomOps * unchecked
      • actorOps * unchecked
      • 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 * unchecked
      • getActorMoving * unchecked
      • isSoundRunning * unchecked
      • isScriptRunning * unchecked
      • delayVariable * unchecked
      • stopSound * unchecked
      • startMusic/startSound * unchecked
      • walkActorToActor * unchecked
      • putActorInRoom * unchecked
      • actorFollowCamera * unchecked
      • getActorCostume * unchecked
      • getActorRoom * unchecked
      • getActorFacing * unchecked
      • faceActor * unchecked
      • lights * unchecked
      • stopMusic * unchecked

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)

Sound

  • Sound
Sound Format:
uint16 length (added by extract util)
uint8 slot - specifies which slot the sound plays in - 2 for music, 0/1/4 for sound effects 
- slot 4 sound effects appear to play in slot 0, but only if no music is playing?
uint8 type - 10 (0x0A) for sound effects, 100 (0x64) for music
uint8 data[]
Type 10 data:
[03/07/0B/0F] - next 4 bytes is data for sound channel 0/1/2/3 (square1, square2, triangle, noise)
[10] - next byte is a number of frames to wait before processing the next update
[FE] - loop back to beginning
[FF] - terminate sound
Type 100 data:
uint8 auxLen - specifies length of auxiliary data blocks
uint8 noteInstrs[auxLen] - Specifies the instrument of each predefined note
uint8 noteFreqs[auxLen] - Specifies the pitch of each predefined note
uint8 music[]:
00 thru (auxLen-1) - start playing a note using the specified instrument at the specified pitch
auxLen thru (auxLen+15) - update the note playing in the specified instrument (?)
(auxLen+16) thru 0xFF - delay N-auxLen-16 frames before parsing next byte
[FE] - loop back to beginning
[FF] - terminate sound
There are a total of 16 instruments, spread out over the 4 NES sound channels using the following mapping:
A total of 28 commands exist within the sound engine, each tied to one or more instruments.
Sound channels: (00 = square A, 01 = square B, 02 = triangle, 03 = noise)
* 00 00 00 00 00 00 00 01 01 01 02 02 01 03 03 03
Start commands:
* 05 03 06 08 0B 01 01 1A 16 06 04 17 02 10 0E 0D
Update (?) commands:
* 0F 00 00 09 00 14 15 00 00 00 1B 1B 0F 0F 0F 0F