Giter VIP home page Giter VIP logo

scummc's Introduction

ScummC - A Scumm Compiler

I. What is ScummC ?

ScummC is a set of tools allowing to create SCUMM games from scratch. It is capable to create games for SCUMM version 6 (used by Day Of The Tentacle, aka dott) and somewhat support version 7 (used by Full Throttle).

II. This release

In this release you will find:

  • scc : the compiler
  • sld : the linker
  • boxedit : a room box editor
  • cost : a costume compiler
  • char : a charset converter
  • costview : a costume viewer/editor prototype
  • soun : a simple soun resources builder
  • midi : a tool to hack MIDI files

Some utilities that might (or might not) be useful with SCUMM related hacking.

  • zpnn2bmp : convert ZPnn blocks to bmp
  • imgsplit : split a bmp (it conserve the palette)
  • imgremap : exchange two colors (both palette and data)
  • palcat : combine bmp palettes.
  • raw2voc : read some raw 8bit unsigned samples and pack them in a voc.
  • scvm : a VM prototype that should become a debugger some day.

III. Compiling it

Requirements:

  • GNU make >= 3.80
  • bison >= 2.7
  • GTK >= 2.4 (for boxedit and costview)

Optional libraries:

  • Freetype (to build charsets from ttf fonts)
  • SDL (for scvm)
  • xsltproc (for the man pages and help messages)

To compile just run configure and then make (or gmake). If you want to also compile the extra utilities run make all. To see all available targets run make help.

The code is now continuously tested with Travis CI and AppVeyor, the following platforms are currently known to work:

  • GNU/Linux x86
  • Mingw64 x86 (native and cross compiled from GNU/Linux)
  • OSX x86

Past versions have been known to build on NetBSD, FreeBSD, OpenBSD, Solaris, OS2 and AmigaOS.

IV. What can i do with that ?

Already quite a lot ;) All major features from the engine are usable, and a full game can be built from scratch. SCUMM version 6 is the default target, but version 7 is also partially supported.

V. Getting started

An example is provided. Just cd into one of the example directory and run make. If all went well it should produce 3 files: scummc6.000, scummc6.001 and scummc6.sou.

To run ScummC games with ScummVM their is two ways. The recommended way is to patch ScummVM to have it recognise ScummC games and run them without any game specific hack. Otherwise you can run the game as Day of the tentacle, this is not recommended because a few hacks might kick in. However that shouldn't be a problem with small test games.

To patch ScummVM cd in your ScummVM source directory and run: patch -p1 < ~/scummc-X.X/patches/scummvm-Y.Y.Y-scummc.diff

Alternatively you can use the original LEC interpreter, but be warned that a few things (namely save/load) are currently not working with it. Not that you really need to save in the example game ;)

Note that to run the game as Day of the Tentacle with ScummVM or with the LEC interpreter you must give the following extra options to sld: -o tentacle -key 0x69. For the LEC interpreter you must also rename tentacle.sou to monster.sou. The example games can be built as Day of the Tentacle by running make tentacle.

Documentation is currently limited, the two most useful sources are:

VI. The box editor

This tool allow you to define the boxes in your room in a graphical manner and to name them for easy reffering in the scripts. Be warned that the interface is perhaps a bit unusual. The 2 open and save buttons should be self-explicit. But both have an alternative action if clicked with a shift key pressed. Namely open a background image and save as. On the view you have following actions:

  • left button : add point to the selection

  • right button : remove point from the selection

  • shift+left button : add box to the selection

  • shift+right button : remove box from the selection

  • ctrl+left button : select other point (a point need to be selected first)

  • ctrl+right button : select other box (a box need to be selected first)

  • left button drag : move the selection

  • middle button drag : move the view

There are also the following keys:

  • b : create a new box
  • d / suppr : delete the selection
  • esc : clear selection
  • u / q : undo
  • r / o : redo
  • / + : zoom in

  • < / - : zoom out
  • s : save
  • S : save as

I'm using a Dvorak layout so the o/q are well placed, i put u/r as alternative because they are easy to remember. However i would be glad to add some qzerty friendly bindings.

On the command line you can specify a box filename and/or a background image with the -img parameter.

VII. Warning and other legal stuff

Be warned this is still beta, some features are still missing. Use at your own risk. All the code has been written by myself and is under GPL. Some bit of code have been stolen (ie. copy/pasted and c-ifier) from scummvm. I don't have time for legal stuff at the moment so just play fair ;)

VIII. Thanks

Big thanks to all ScummVM coders and contributors. All this would have never been possible without you !!!!

Big thanks to David Given, http://www.cowlark.com/scumm was a very useful source.

Big thanks to sourceforge.net for the compile farm that allowed making this software portable on 10 different platforms.

Big thanks to Jesse McGrew and James Urquhart for their contributions.

Big thanks to Gerrit Karius for OpenQuest and generally making this project move forward.

And last but not least, thanks to the few people who at least tried to compile and perhaps even used a bit one of those early versions.

IX. Contact

ScummC is hosted on github: https://github.com/AlbanBedel/scummc There you can find the wiki, bug tracker, etc

For anything relevant to ScummC and SCUMM games developement use the github bug tracker at https://github.com/AlbanBedel/scummc/issues, for anything else I can be reached at [email protected].

Patches and suggestions of all kinds are always welcome!

scummc's People

Contributors

albanbedel avatar fzipp avatar huth avatar ioixd avatar jamesu avatar stephengroat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scummc's Issues

"Problems" compiling on MacOS

Hello,

I managed to compile all the things, except the boxeditor and costview (due the gtk2.4 requirement). It's posible to downgrade the gtk version to something like 2.24 or upgrading it to gtk3 ? macOs with brew is something "weird" about releases and compiling outside libraries.

Thanks for your work.

License change question

Hi.

I'd like to take over maintainership/create an active hard fork of this project (With a preference for the latter. I already have a few ideas in regards to the build system, GUI tooling, documentation and syntax changes).

Would you and the other contributors consider a change to GPL3?

Makefile invalid

After running configure on my 64bit Mac Mini 2011, make doesn't work:

$ make
Makefile:125: *** target pattern contains no `%'.  Stop.

Since line 125 reads $(foreach target,$(TARGETS),$(eval $(call TARGET_template,$(target)))), It could be that some line before that contains letters that were parsed as regular expression. But I cannot easily find my way around this shell stuff, so I'm filing this issue, hoping to make progress or attract support :)

Cannot find boxedit

Hello,

First I'd like to thank you for keeping ScummC alive. I just started to use ScummC recently and can't manage to find 'boxedit' binaries (source code is obviously there).

Where is it ?

Thanks a lot.

Parsing error (scc_parse.y)

Hello,

I can't compile it on Windows and Linux (Ubuntu).
All of them came to the same error

Windows output:

make[1]: Entering directory '/home/memor/scummc-0.2.0/build.DESKTOP-I9JE0CE/i686-msys-gcc-6.3.0-debug'
Compiling scc_parse.tab.o for i686-msys-gcc-6.3.0-debug
scc_parse.tab.c: In function ‘scc_parser_parse_internal’:
/home/memor/scummc-0.2.0/scc_parse.y:84:15: error: too few arguments to function ‘scc_lex_lex’
#define yylex scc_lex_lex
^
scc_parse.tab.c:1851:16: note: in expansion of macro ‘yylex’
yychar = yylex (&yylval, &yylloc);
^~~~~
In file included from /home/memor/scummc-0.2.0/scc_parse.y:53:0:
/home/memor/scummc-0.2.0/scc_lex.h:90:5: note: declared here
int scc_lex_lex(YYSTYPE *lvalp, YYLTYPE llocp,scc_lex_t lex);
make[1]: *** [Makefile:185: scc_parse.tab.o] Error 1
make[1]: Leaving directory '/home/memor/scummc-0.2.0/build.DESKTOP-I9JE0CE/i686-msys-gcc-6.3.0-debug'
make: *** [Makefile:119: i686-msys-gcc-6.3.0-debug_progs] Error 2

Linux output

scc_parse.tab.c: In function ‘scc_parser_parse_internal’:
/home/memorix101/scummc-0.2.0/scc_parse.y:84:15: error: too few arguments to function ‘scc_lex_lex’
#define yylex scc_lex_lex
^
scc_parse.tab.c:1851:16: note: in expansion of macro ‘yylex’
yychar = yylex (&yylval, &yylloc);
^~~~~
In file included from /home/memorix101/scummc-0.2.0/scc_parse.y:53:0:
/home/memorix101/scummc-0.2.0/scc_lex.h:90:5: note: declared here
int scc_lex_lex(YYSTYPE *lvalp, YYLTYPE llocp,scc_lex_t lex);
Makefile:184: recipe for target 'scc_parse.tab.o' failed
make[1]: *** [scc_parse.tab.o] Error 1
make[1]: Leaving directory '/home/memorix101/scummc-0.2.0/build.ubuntu/i686-gnu-gcc-6.3.0-debug'
Makefile:119: recipe for target 'i686-gnu-gcc-6.3.0-debug_progs' failed
make: *** [i686-gnu-gcc-6.3.0-debug_progs] Error 2

Specify build folder

Currently, the compiled binaries are in the folder named so:

build.<hostname>.<compiler_name_and_version>

Would it be possible to add an argument to the makefile that overrides that default scheme? This would be useful to generate builds in reproducible output folders.

Sprite sheet support

Am I right to assume that, unlike ScummGen, ScummC doesn't support sprite sheets?
I can't find any related grammar.

Instructions on how to create/add music

I'd appreciate a short tutorial on how to create/add midi music to a ScummC game.
For testing purposes I took a midi file of the Secret of Monkey Island main theme, dropped it next to the soun tool and ran soun -midi MainTheme.midi, then renamed output.soun, dropped it into examples/openquest and added the following two lines to officeroom.scc

startMusic(themeMusic);

The startMusic bit I added directly inside if(firstInit).

Expected result: Having music play in the background.
Actual result: The game crashes.

It's compiled ! So... What now?

Hi ! Thanks for keeping ScummC updated ! That's awesoooooome
We compiled successfully, but ScummVM cannot recognize files as a game (and therefore can't read it).
Can you give us a hint, please?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.