Skip to content
LB-- edited this page Dec 4, 2012 · 1 revision

Without further ado, here is a quick list of the projects:

MMF2SDK

The original, official SDK. This SDK may compile under a C compiler. Not Unicode compatible; see MMF2SDK Unicode SDK.

Blank MMFSDK

This project is a template for anyone who wants to use the MMF2SDK. Should only be modified in case of bugs in the supplied MMF2SDK, or if there is a code demonstration that is needed in most extensions. Keep it compatible with C if it is originally compatible.

CDAudio

The CD-Audio object interacts with the CD drive and uses MDI to access its playing compatibility, allowing you to open files that have *.cda extensions when you view the CD contents under Windows Explorer. Slightly old. Possible updates:

  • Drive selection (currently only the primary CD drive may be accessed).

Download

The original Download object, featured in many applications, limited to 4 slots downloading at a time. The Download++ object, under rSDK, is an improvement of this object. Only edit this object's code for readability; efficiency and regular edits are not permitted without author permission, and should be done to Download++ instead.

Possible upgrades: Edit Download++ for anything but bug fixes and author permission.

  • Pauses MMF2 app while download starts
  • Increase number of slots

MMF2SDK_Unicode

Official SDK for Unicode compatibility. Same style as MMF2SDK. Uses "TCHAR" variables, which evaluate to 2 byte characters in Unicode solution configurations, and 1-byte characters in regular solution configurations. You may also be interested in rSDK - Tab Control project, as it also is Unicode.

Simple Control

The Simple Control is a plain editbox, given as an example to the MMF2 Unicode SDK.

rSDK

Revised SDK created by Jamie McLaughlin, well-known extension developer who formed the Aquadasoft coding group (now known as LeDev). He first worked in freelance programming and has since been hired by Clickteam. Currently he is working on some MMF2 exporters and MMF3. The rSDK was very maintained, and heavily uses #define macros. The author released EDIF SDK later and recommends that in its stead. Not designed for Unicode originally, but TabControl shows how it can be done.

Blank rSDK

A template rSDK included with the rSDK.

Download++

A modification of the MMF2SDK Download object. Features 32 slots as opposed to the original 4. Besides that, not much modification. Was meant as an update to Download object, and was started on with rSDK, but a series of compiling errors (now removed) stopped the development.

Possible upgrades:

  • Pauses MMF2 app while starting download; a thread could be booted to run the connection process.
  • Variable number of slots
  • More variables about downloads

FixedValueList

A simple object designed to loop through every object's fixed value in the application, excluding those contained within sub-applications (but including the sub-application objects themselves). Has a help file in the rSDK folder.

Possible upgrades:

  • Selection of each object in a loop, like ForEach but for every object in the frame
  • Loop through objects contained within sub-applications

OpenCV collection

A collection of objects designed to receive input from the webcam and microphone. The OpenCV library may be downloaded very easily from a Google search, and there is plenty to work on for this collection.

Possible upgrades:

  • Lots. (expand this list)

PBDKF2

A simple encryption object, requested several months previously and forgotten about. Uses a closed-source library; a trial that lasts 30 days.

Possible upgrades:

  • Registering and supplying key to UnlockComponent() function.
  • More functionality than a single uncompleted action.

TabControl

An officially released fully functional extension by Looki which shows a tab control. This code has been modified by Phi to work under Unicode.

Possible upgrades:

  • Changing background colour to non-system colour.
  • Changing background colour when system colours are updated.
  • Removing edittime text property bug - default tabs are not copied properly to runtime.
  • Adding middle-mouse-click detection for tabs.

UnzipMe

A quickly-wrote extension for replacing the Zip object, which would crash if you gave it a zip file which WinRAR had applied a password to. Unfortunately this object also suffers this crash (which was half-expected), and is only provided here for helping new developers. Try not to duplicate the functionality of Archive object if you improve it.

Possible upgrades:

  • Fixing the crash for WinRAR-encrypted ZIPs.
  • Support of more compression formats.

ZlibStream

A simple compression extension which would use multi-threading to compress/decompress files with zlib without MMF2 having to wait. Allows several operations at once, and both appending and writing to files.

Possible upgrades:

  • Support of Unicode paths.

EDIF

Several years after creating rSDK, Jamie McLaughlin created the EDIF (Extension Development Is Fun) SDK. This SDK supports Unicode and other platforms by supplying action/condition/expression menus in the MFX and the other platform's code remains coded elsewhere, externally. The SDK supports loading menus via a ASCII text file in JSON format, and three languages (English, French and Japanese). It works under Visual Studio 2008 and above, whereas the newer derivative DarkEDIF only works under the VS2010 compiler, as it supports more C++11.

DarkSocket

Originally coded in rSDK, DarkSocket was moved to EDIF for clarity. To quote the product page: DarkSocket is a powerful socket extension, capable of creating sockets in several ways. The basic functionality has a choice of TCP, UDP and ICMP (pinging), which gives a total of 6 methods of using the object (server & client). Or for advanced users, use different actions, and gain access to over ten thousand possible methods of using the object. A total of 28 protocols, 29 different address families, and 5 different socket types are supported. The extension is multithreaded so your program will not halt during any operations - you can have up to 256 sockets open at once, if your hardware is capable enough. The socket extension has already been tested and can receive on the TCP/INTERNET/STREAM method - e.g. http://www.google.com/. The product was released as pre-alpha on 22nd October 2011, and development halted due to an EDIF bug on 17th November 2011. The bug has still not been repaired.

Possible upgrades:

  • Repair of the EDIF bug.
  • Test of all socket types.

DebugObject

This is a simple object for debugging MMF2 programs, currently featuring:

  • Logging to a file
  • Modifiable timestamp
  • Debug disabling/enabling (default disabled)
  • Edittime properties and defaults
  • Crashing in a number of ways
  • Catching all exceptions, thrown by any object or even MMF2 runtime itself
  • Handling said exceptions in a variety of ways: Use 0 for closing app, 1 for infinite loop, 2 for passing to debugger, 3 for continuing (specify how many times in 2nd parameter).

Possible upgrades:

  • Live console window showing all log output
  • Showing module name in crash (i.e. PortAudio.mfx)
  • Parsing module name to extension name (PortAudio.mfx -> PortAudio)
  • Allowing custom crash dialog
  • Creating minidump and emailing to application developers

MyCharSet

A converter between ANSI (standard MMF2 runtime), UTF-8 and UTF-16 (Unicode runtime). If a ANSI Lacewing string message is received in a Unicode application, it is possible to encode it to Unicode for displaying in another Unicode-based object. And vice versa. Currently subject to crashes and was not completed to release.

Possible upgrades:

  • Removing crashes
  • Allow appending encoding symbols (BOM mark) to the front of files
  • Allow removing BOM prefix from files
  • More UTF-8 support
  • More application-charset support

ObjectAttacher

An example object from Looki which teaches how to attach multiple Active objects to an extension to gain control over them.

Possible upgrades:

  • Allowing different extensions in attachment

PortAudio

PortAudio is a multi-platform, multi-threaded audio recording/playback extension which is based on the PortAudio library. The extension is designed to:

  • Record audio from a microphone
  • Make the raw data available in the memory
  • Open raw data from a memory location and play it
  • Change the raw data into a wave format and save as a *.wav file This makes the object suitable for online gaming, VoIP chatting, etc.

Possible upgrades:

  • Variable data instead of a series of #define's.
  • All functionality as above added and tested.

RangeHandler

An object designed to convert a list of numbers into a string of ranges, so "1,2,3,4,50,92" will become "1-4,50,92".

Possible upgrades:

  • Does not allow ranges that are not sorted (i.e. "1,5,2,3,4,9" should be "1-5,9" but it is "1,5,2-4,9")
  • a range of 2 numbers is not considered a range by some people and conversion of "1,2,4,5,6" to "1-2,4-6" instead of "1,2,4-5" should be optional.
  • May not support negative values.
  • Does not support floating-point values.

SHA-1

A quick object made by Phi in under an hour, designed to duplicate QuickHash's SHA-1 file-encryption functionality. QuickHash was (at the time) subject to supplying a null pointer to MMF2 instead of a hex-encoded hash results if no hash operation had been done.

Possible upgrades:

  • Support of Unicode paths.

StringCmp

A quick object made by Phi in under an hour, designed to compare two strings in a safe way (Some objects and MMF2 tended to crash if supplied a null pointer instead of a string, and this object reported nulls instead). Made for Fanotherpg.

Possible upgrades:

  • Case sensitivity optional.

String Replacer

A quick object that duplicated Substring Replacer object's functionality without the crash that existed at the time.

Possible upgrades:

  • Support of Unicode strings.

DarkEDIF

A derivative of the popular, clean EDIF SDK which focuses on using C++11 features to improve the efficiency of the SDK. Only supposed to be compatible with VS10 and above. Still under development.

DarkEDIF Blank

The original template, the only DarkEDIF object that should exist, until release date.

Should support:

  • Properties specified in the JSON.
  • Properties for several languages (English, French, Japanese).
  • The shortest and most concise extension development possible.

Anaconda

A multi-platform, open-source MMF2 exporter, which exports to Windows, Linux and Mac OS X. Uses OpenGL for HLSL shader support. All extensions are written in Python and are so open-source.

ZlibStream

An attempt to convert ZlibStream to Anaconda was foiled by multi-threading issues. A fix would be welcome, but steer clear of using RehandleObject() for compressing.

Possible upgrades:

  • One bug fix.
  • Please maintain any code changes with the C++ rSDK version.

Mac (Objective-C)

This folder contains code for the MMF2 iOS exporter.

ZlibStream

A poor attempt to convert ZlibStream to Objective-C. It failed because Phi didn't actually know Objective-C at all, and didn't have access to a compiler or Objective-C IDE.

Possible upgrades:

  • ...isn't it obvious?