MFL basics

The MFL structure contains one (ore more) levelset(s), which consist of multiple modules. The MFL structure is saved in a .mfl file. The basic structure is as following:

MFL

- Version information

- A hidden field

- Metadata

- - Array with codename and value pairs (greeting, name, comment, author, editor (without version number), editorver)

- Timestamp

- CRC

- Levelset(s)

Levelset

- Version information

- A hidden field

- Metadata

- - Array with codename and value pairs (name, name2 (for specifying stuff like EGA/VGA), comment, author, editor (without version number), editorver)

- Timestamp

- Application identifier

- Default videomode (this can probably be replaced with something else, by using modes (mf2m1)

- Level ID

- Parent level ID

- CRC32

- Parent CRC32

- Modulelink (to simplify creation of modulelinks in the individual modules)

- Modules

Module

- Module family

- Module ID

- Pointer to dump function

- Pointer to init function

- Pointer to execute function

- Pointer to free function

- Flags

- - Critical (the parser must be able to parse this module)

- - Levelset type (main module, the parser will execute this module

- Modulelink

- Module data

The modules is arranged in different module families. Below is a list of all current modules.

MFL module family 1: Reserved for levelset types. - MFL module 1:1, modCBasic (levelset type, critical)

MFL module family 2: Reserved for "low level" container modules. - MFL module 2:1, modCModes (critical) - MFL module 2:2, modCRawData (critical), for storing of raw data - MFL module 2:3, modCString (critical), for storing of strings - MFL module 2:4, modCImgFormat (critical), for storing of image formats (needed by modCImages) - MFL module 2:5, modCImages (critical), for storing of images - MFL module 2:6, modCFont (critical), for storing of font data - MFL module 2:7, modCSplashes (critical), for storing of splash screens (text, image or animation) - MFL module 2:8, modCScreens (critical) - MFL module 2:9, modCSprites (critical) - MFL module 2:10, modNAudio (not critical)

MFL module family 3: Reserved for TTF "high level" modules. This module family isn't complete yet, but here is the current draft:

"Player" (critical), player sprite list, may contain 2 sets? (titus/moktar)

"modCSkeleton" (critical), level skeleton (size, name, start location, goals to proceed to next level (finish location), modeID) "Tiles" (critical), level tiles overlay "Enemy" (critical), enemy overlay "Elevators" (critical), elevator overlay "Gates" (critical), gates overlay "Bonus" (critical), bonus overlay "Password" (critical), password overlay "Music" (not critical), music overlay