Skip to content
Uto edited this page Dec 1, 2019 · 47 revisions

Maluva is a DAAD extension which can be loaded so DAAD has new features not included in the original interpreters. Maluva supports different features, and most of them are supported by all the 8 bit targets DAAD supports. In some cases, a specific feature is not suported by Maluva for a given target, cause that target already supported that feature natively.

Table of contents

Which functions are provided by Maluva?

  • Maluva can load raster graphics directly from floppy or hard drive, so you can make better pictures than those vectorial graphics used in the 80s, and also save the RAM those vectorial graphics were using, so you can develope larger adventures. This function is named XPICTURE.

  • Maluva can load and save the game status to floppy or hard disk. These functions are named XSAVE and XLOAD.

  • Maluva can load messages (text) directly from disk, what would allow you to create large games with more text, and not be limited to the amount of text fitting in memory. This function is called XMES and/or XMESSAGE (like the normal messages are called via MES or MESSAGE condacts).

  • Maluva can be told, in case the game have several parts, which part it is running. That helps having both parts in the same disk, using each one different file names. At the moment it's only used byt the XMESSAGEs function, so two different sets of files can hold the messages for each part.

  • Maluva has a replacement for BEEP for some machines where BEEP condact was not supported. That also helps using XPLAY feature if you use the DRC compiler for DAAD, althoug XPLAY is not a Maluva function.

Which functions are implemented for each platform?

Spectrum ESXDOS Spectrum +3 CPC C64 / Plus4 MSX Spectrum Next PCW
XPICTURE Yes Yes Yes Yes Yes Yes Native
XSAVE Yes Yes Native Native Yes Yes Native
XLOAD Yes Yes Native Native Yes Yes Native
XMESSAGE Yes Yes Yes Yes Yes Yes Yes
XPART Yes Yes Yes Yes Yes Yes Yes
XBEEP Native Native Yes Native Yes Native No

Please notice "Native" means the original interpreter already supports a similar feature, so Maluva does not support it. In most cases, DRC compiler will replace the Xcondacts with normal ones when the target is one machine supporting features natively.

Using Maluva Functions with DRC

Although it's possible to use Maluva - at least partially - with old DC compiler, it's much better if you use it with the new compiler: DRC

To let DRC know you will use Maluva you have to define it as an extern just before the /CTL section:

#extern "MALUVA"

Please notice DRC accepts only a BIN file as parameter for #extern, but if the parameter is "MALUVA" then it will determine which BIN file is used depending on target and subtarget chosen. So for instance, if your target is CPC, then DRC will replace that "MALUVA" with "MLC_CPC.BIN", and if target/subtarget is ZX/PLUS3 then it will replace "MALUVA" with "MLV_P3.BIN". Make sure you have downloaded all BIN files from latest release. You can also get the binary files directly from Github release folder, but take in mind there may be development builds there.

Function 0 : XPICTURE

DRC soporta el condacto directamente:

XPICTURE <picno>

You can of course use indirection in that parameter, for instance use this call to load the picture whose number is the current location number:


You can also use it directly to load a specific picture:


The picture files should be available in the disk where the game is, and their file name should be in the following format:


Where nnn is the picture number with three digits (i.e. 001, 067 or 212) and ext depends on target:

  • ZXS: for ZX Spectrum +3 or ESXDOS (001.ZXS, 067.ZXS, 212.ZXS)
  • NXT: for ZX Spectrum Next (001.NXT, 067.NXT, 212.NXT)
  • MS2: for MSX (001.MS2, 067.MS2, 212.MS2)
  • CPC: for CPC (001.CPC, 067.CPC, 212.CPC)
  • 64: for Commodore 64. Important note: Commodore 64 files should not have the dot to separate number and extension (00164, 06764 and 212).

To create the files required you should use SC2DAAD utility, avaliable in the Maluva package.

Please notice DRC would convert XPICTURE calls into PICTURE calls when the target platform does support raster graphics natively.

Function 1: XSAVE

DRC supports the XSAVE condact, which will be replaced by SAVE condact automatically when the target platform does natively support saving to disk.


In case the target directly natively supports saving to disk, DRC will replace XSAVE with a standar SAVE call automatically. Although XSAVE has opt parameter as the original SAVE condact, the value will be ignored, but will be used in case XSAVE becomes eventually a standard SAVE.

Function 2: LOAD

DRC supports the XLOAD condact, which will be replaced by LOAD condact automatically when the target platform does natively support loading from disk.


In case the target directly natively supports loading from disk, DRC will replace XLOAD with a standar LOAD call automatically. Although XLOAD has opt parameter as the original LOAD condact, the value will be ignored, but will be used in case XLOAD becomes eventually a standard LOAD.

Functión 3: XMESSAGE

DRC supports the XMESSAGE and XMES condacts, which will be replaced my MESSAGE and MES if the target platform does not support loading messages from files.

XMESSAGE "Hello world!"
XMES "This is a message without carriage return"

To make XMESSAGES work you have to make sure you include in the game floppy disk the file 0.XMB generated by DRC, apart from the .DDB file.

Please notice for CPC and C64 there could be several XMB files, in the nn.XBM format, make sure you copy them all. See C64 build notes below for a special detail on how to copy these XMB files.

Functión 4: XPART

If you a two-parts game, and want to hold the files in the same disk, you may run into a problem when you have to store two different XMB (xmessage) files. As Maluva expect them to be named the same for both parts writing them on same disk would make one overwrite the other. XPART may be run before any XMESSAGE/XMES is executed, so Maluva knows it's running some other part.

  • For Spectrum and MSX, the parameter will be added to the '0' at'0.XMB'. So for instance if value is 1, then Maluva will load 1.XMB instead of 0.XMB, if value is 7 then 7.XMB would be loaded, etc. Don't try to use values above 9, it won't work as you expect.

  • For C64 and CPC, if value is not zero, then 50 will be added to file names. That means instead of loading 00.XMB, 01.XMB, etc. the files 50.XMB, 51.XMB will be loaded. On C64 instead, of file "00" Maluva will read "50", instead of "01", it will take "51", etc.

Function 5: XBEEP

  • Duration is in 1/50 for second, so duration 50 equals one second.
  • Tone is a value from 48 to 238, which allow playing notes for 8 different octaves. Values above or below will be taken as silence.

Only even values are valid, that is C is 48, C# is 50, D is 52, D# is 64, E is 66, F is 68, etc. If you use an odd value, you will probably just get noise.

For each octave this are the ranges:

Octave Range
1 48-70
2 72-96
3 98-118
4 120-142
5 144-166
6 168-190
7 192-214
8 216-238

For machines not supporting XBEEP, DRC compiler will replace XBEEP with BEEP.

Building release disks

There are several methods to build your final disks using Maluva, please follow the links for detailed explanation:

What does Maluva mean?

Maluva is not a an acronym, nor has an special meaning, it's just a tribute to first adventure made with DAAD, which was a free version of "Adventure", named "La Aventura Original". One of the NPCs in that game was a dwarf named "Maluva", some kind of shortening of spanish expression "tener mala uva", which is somehow similar to being unkind, unpleasant, or in the end, to be a nasty piece of work. Unlike the dwarf, the current Maluva extension is not , of course, any of that.

You can’t perform that action at this time.