Skip to content

betajaen/goodsoup

Repository files navigation

Short:        Amiga port of Curse of Monkey Island
Uploader:     betajaen@users.noreply.github.com (Robin Southern)
Author:       betajaen@users.noreply.github.com (Robin Southern)
Type:         game/role
Requires:     68020, CyberGfx, COMI data files
Version:      0.5
Architecture: m68k-amigaos >= 3.1
Distribution: Aminet

This is a game interpreter and player for the Lucasarts game "Curse of Monkey Island" (COMI) 
for the Commodore Amiga (CBM Amiga) range of computers. This allows you to play the 
Curse of Monkey Island game, natively without emulation on the Commodore Amiga using its 
software APIs using a copy of the COMI PC data files only.

In laymans terms; Goodsoup is "COMI.exe" for the Amiga.

Goodsoup is a partial fork and reimplementation of the following codebases:

	- ScummVM 0.9.1 (SCUMM V8) Code by the ScummVM Team.
	- NScumm (NScumm.Scumm) Code by Valéry Sablonnière.

Copying
-------

Goodsoup is licensed under the GNU General Public License version 2. Please refer to the
COPYING file, which is included in this source code distribution.

Supported Games
---------------

* The Curse of Monkey Island					[comi]
  - English: GOG.com

Requirements
------------

An CBM Amiga (or CBM Amiga Emulator) with the following features:-

* Workbench Release 3.1 or higher
* At least 2 MiBs of RAM
* At least a Motorola 68020 Processor
* A Harddrive partition with 940 MiB free of space
* A P96 compatible graphics software and hardware that is capable of supporting 
  a 640x480 8-bit resolution at least 25 frames per second.
* AHI software installed with compatible audio hardware

Status
------

	Feature          |  Status
	-----------------+--------------------
	Actors           | Placeholder code.
	AGA Support      | After RTG is completed and the game is mostly playable.
	Audio            | In progress.
	Custom Cursors   | Future.
	Debugging        | Done.
	File Formats     | Complete.
	Fonts            | Mostly Complete.
	Gameplay         | Little.
	Input            | In Progress.
	Inventory        | Placeholder code.
	Objects          | In Progress.
	RTG Support      | In Progress.
	Save Games       | None
	Scripting        | Nearly Done.
	Translations     | None.
	Video (SMUSH)    | Nearly Done. Video 100%, Audio 90%, Subtitles 100%, Timing - TODO

General Notes:

	As of 04-August-2022

	The game is capable of loading the boot script. It then displays the difficulty selection
	dialogue. The game is hardcoded to select the easy option on a mouse click, for which it
	then plays the Monkey Screaming CMI screen. It then plays the opening SAN video, which
	shows Monkey Island, then Guybrush in a dodgem car floating in the water writing his log, 
	it then shows the Curse of Monkey Island logo, and then a canon battle between LeChuck and 
	Elaine, with Guybrush who has drifted into the middle stuck in the middle. This can be skipped 
	via the ESCAPE key.

	It will then show the chapter one title card, and then fade into the scene where Guybrush and 
	Wally are in the Canon room. Wally, Guybrush, the canon and some objects are not shown on the
	screen, but Wally is appearing to be talking as the scripts are running in this room.

Installation
------------

Copy the Goodsoup folder to your harddrive. Inside the goodsoup folder should be 
placed from the COMI data disks the following files:-

	- COMI.LA0
	- COMI.LA1
	- COMI.LA2
	- RESOURCE/BBSAN.SAN
	- RESOURCE/CURSERNG.SAN
	- RESOURCE/FG010GP.SAN
	- RESOURCE/FINALE.SAN
	- RESOURCE/FONT0.NUT
	- RESOURCE/FONT1.NUT
	- RESOURCE/FONT2.NUT
	- RESOURCE/FONT3.NUT
	- RESOURCE/FONT4.NUT
	- RESOURCE/KIS030.SAN
	- RESOURCE/LANGUAGE.TAB
	- RESOURCE/LAVARIDE.SAN
	- RESOURCE/LIFTCRSE.SAN
	- RESOURCE/MORESLAW.SAN
	- RESOURCE/MUSDISK1.BUN
	- RESOURCE/MUSDISK2.BUN
	- RESOURCE/NEWBOOTS.SAN
	- RESOURCE/OPENING.SAN
	- RESOURCE/SB010.SAN
	- RESOURCE/SB020.SAN
	- RESOURCE/SINKSHP.SAN
	- RESOURCE/VOXDISK1.BUN
	- RESOURCE/VOXDISK2.BUN
	- RESOURCE/WRECKSAN.SAN
	- RESOURCE/ZAP010.SAN

Double click on the monkey3 program to launch the program from Workbench, or
from shell. Type the following:-

	stack 65536
	monkey3

Usage
-----

The game itself is straightforward to play. To access the game controls,
the game must be paused via the space bar. You can access the Amiga RMB Menu,
to access controls to; Resume and Quit the Game. Press the space bar again to
resume playing.

Whilst paused, you can press the S key to step the game forward by one frame.

Once the game has been exited, a message will appear to Thanking you for playing,
this ensures that all the memory allocated and disk resources have been released
correctly.

Shell Arguments
---------------

The Goodsoup program accepts one numerical argument to change its behaviour, such
to play videos, convert and optimize files, or run the game in a different way.

In a shell it they can be given in as the following:

	> stack 65536
	> monkey3 101

These arguments are:

	0     Play the Game normally
	100   Play the video BBSAN and quit
	101   Play the video CURSERNG and quit
	102   Play the video FG010GP and quit
	103   Play the video FINALE and quit
	104   Play the video KIS030 and quit
	105   Play the video LAVARIDE and quit
	106   Play the video LIFTCRSE and quit
	107   Play the video MORESLAW and quit
	108   Play the video NEWBOOTS and quit
	109   Play the video OPENING and quit
	110   Play the video SB010 and quit
	111   Play the video SB020 and quit
	112   Play the video SINKSHP and quit
	113   Play the video WRECKSAN and quit
	114   Play the video ZAP010 and quit
	115   Play all videos in alphabetical order and then quit
	200   Convert FONT0.NUT to FONT0.GSF and quit
	201   Convert FONT1.NUT to FONT1.GSF and quit
	202   Convert FONT2.NUT to FONT2.GSF and quit
	203   Convert FONT3.NUT to FONT3.GSF and quit
	204   Convert FONT4.NUT to FONT4.GSF and quit
	205   Convert all fonts from NUT to GSF in numerical order and then quit
	300   Convert and optimize the video BBSAN and quit
	301   Convert and optimize the video CURSERNG and quit
	302   Convert and optimize the video FG010GP and quit
	303   Convert and optimize the video FINALE and quit
	304   Convert and optimize the video KIS030 and quit
	305   Convert and optimize the video LAVARIDE and quit
	306   Convert and optimize the video LIFTCRSE and quit
	307   Convert and optimize the video MORESLAW and quit
	308   Convert and optimize the video NEWBOOTS and quit
	309   Convert and optimize the video OPENING and quit
	310   Convert and optimize the video SB010 and quit
	311   Convert and optimize the video SB020 and quit
	312   Convert and optimize the video SINKSHP and quit
	313   Convert and optimize the video WRECKSAN and quit
	314   Convert and optimize the video ZAP010 and quit
	350   Convert to 320x240 and optimize the video BBSAN and quit
	351   Convert to 320x240 and optimize the video CURSERNG and quit
	352   Convert to 320x240 and optimize the video FG010GP and quit
	353   Convert to 320x240 and optimize the video FINALE and quit
	354   Convert to 320x240 and optimize the video KIS030 and quit
	355   Convert to 320x240 and optimize the video LAVARIDE and quit
	356   Convert to 320x240 and optimize the video LIFTCRSE and quit
	357   Convert to 320x240 and optimize the video MORESLAW and quit
	358   Convert to 320x240 and optimize the video NEWBOOTS and quit
	359   Convert to 320x240 and optimize the video OPENING and quit
	360   Convert to 320x240 and optimize the video SB010 and quit
	361   Convert to 320x240 and optimize the video SB020 and quit
	362   Convert to 320x240 and optimize the video SINKSHP and quit
	363   Convert to 320x240 and optimize the video WRECKSAN and quit
	364   Convert to 320x240 and optimize the video ZAP010 and quit
	365   Convert to 320x240 and optimize all videos in alphabetical order and quit	
	

Compiling
---------

Goodsoup is written in strict C++98 and should be compiled with a GCC compiler.

Options:

	make clean              To clean object files and compiled executables.
	make PLATFORM=amiga     To compile for Amiga Platforms using the Bebbo GCC Compiler.
	make PLATFORM=sdl       To compile for Linux Platforms using a 32-bit GCC Compiler.

Various options can be added to the make command when building:
	DEMO_MODE=0/1           Demonstration Mode:-
	                        0 - Play the Game as Normal
	                        1 - Play the opening SMUSH Video (OPENING.SAN) and then quit
	FAST_MODE=0/1           Ignore frame rate timing
	MUTE_AUDIO=0/1          Process but do not play Audio
	SAN_CODEC47=0/1/2       SAN (SMUSH) Codec decoder:-
	                        0 - None, only show keyframes
	                        1 - Stock
	                        2 - ULONG optimised
	VM_DEBUG=0/1            Log excess information about the Virtual Machine to a log file.
	CHECKED=0/1             Perform extra checking on parameters and external data.
	ONE_FRAME=0/1           Quit after displaying one frame
	GAME_PATH="COMI:"       Path to where the data files are
	IGNORE_NO_FEATURE=0/1   Shut up about missing features