
Dragonfly Game Engine 0.1 by Epsilon (GAME/TOOL, updated 27-03-2021 04:16:40) UPDATE
A Text-Based Game Engine
A Text-Based Game Engine
Dragonfly is a text-based game engine, primarily designed to teach about game engine development.
Mark Claypool wrote a free book that teaches how to program a game engine from scratch.
For more info, see the Dragonfly website.
This is a CMM2 MMBasic port of the Dragonfly Game Engine. Dragonfly as documented on the website and book, is a C++ Object Oriented Design. The CMM2 version, although written in MMBasic, has retained most of the Object Oriented Design, with some compromises for the sake of performance.
This is a CMM2 MMBasic port of the Dragonfly Game Engine. Dragonfly as documented on the website and book, is a C++ Object Oriented Design. The CMM2 version, although written in MMBasic, has retained most of the Object Oriented Design, with some compromises for the sake of performance.

GRF library v0.14 by JirSoft (TOOL/GRAPHICS, updated 22-08-2021 18:52:21) UPDATE
Simple graphic library (info and loader)
Simple graphic library (info and loader)
It enables simpler use of some graphic formats, more info on GitHub...
Info and loaders for following formats:
• general : JPG, GIF, PNG, BMP
• Atari ST : PI1, PI2, PI3, PC1, PC2, PC3
• C64 : DD,HED, KOA, HBM
• ZX Spectrum: SCR, BSC
Also can save BMP in 8- and 16-bit colors.
Info and loaders for following formats:
• general : JPG, GIF, PNG, BMP
• Atari ST : PI1, PI2, PI3, PC1, PC2, PC3
• C64 : DD,HED, KOA, HBM
• ZX Spectrum: SCR, BSC
Also can save BMP in 8- and 16-bit colors.

HexEdit 0.6 by Epsilon (TOOL, updated 22-06-2023 05:07:13) UPDATE
after disguised disguised disguised disguised
after disguised disguised disguised disguised
HexEdit allows you to edit binary files, i.e. files that you can't edit with a regular text editor such as the built-in editor. The file's contents are shown as hexadecimal byte values and as ASCII code in two side-by-side blocks. Changes can be made both in the hex table section and in the ASCII section. The usual file navigation with cursors keys, page up&down, home, end, etc. should work as expected. Hexedit is a full-screen console-only editor. I does not work over serial, sorry. The file to edit can be passed in as a command line argument. Press F1 to get help on key bindings.

MAR 0.4 by Epsilon (TOOL, updated 20-02-2021 20:15:31) UPDATE
Archiving Tool
Archiving Tool
On CMM2, mar.bas allows you to roll up and optionally compress a directory tree into a single file archive, and vice versa.
mar.py is an equivalent Python implementation intended for running on Windows, MacOSX or Linux. This allows you to create your archive on a host machine,
transfer it over to CMM2 and unpack it there, and vice versa.

MemEdit 0.2 by Epsilon (TOOL, updated 05-02-2021 13:04:06) UPDATE
Memory Editor for Color Maximite 2
Memory Editor for Color Maximite 2
MemEdit presents you with a view into CMM2's (virtual) memory and allows you to make changes. Essentially, it's a peek/poke front-end. The memory contents are shown as hexadecimal byte values and as ASCII code in two side-by-side blocks. Changes can be made both in the hex table section and in the ASCII section. The usual file navigation with cursors keys, page up&down, home, end, etc. should work as expected. MemEdit is a full-screen console-only editor. I does not work over serial, sorry. The starting address to view can be passed in as a command line argument, e.g. *memedit MM.INFO(PROGRAM) Commands such as goto and fill accept MMBasic syntax for address specifications, e.g. Go To Address (MMBasic syntax): MM.INFO(PAGE ADDRESS 0) Press F1 to get help on key bindings.

Napoleon Commander v1.40 by JirSoft (TOOL/COMM/MAC-PC, updated 07-11-2021 17:46:01) UPDATE
File explorer similar to ancient Norton, Volkov and other commanders on DOS
File explorer similar to ancient Norton, Volkov and other commanders on DOS
File and directory operations on local SD card and from/to server (serial port or ESP8266/32 over Wifi with help of Python server, full support of CMM2 DeLuxe Edition)
• Operations like copy, move, rename, delete, search...
• Data viewers (TEXT, BASIC, HEX, SPRITE, IMAGE - also some C64, ZX Spectrum and Atari ST formats), simple HEX editor
• Simple proportional text viewer (ALT F4)
• Archive and compress
Now resolution independent!
• Operations like copy, move, rename, delete, search...
• Data viewers (TEXT, BASIC, HEX, SPRITE, IMAGE - also some C64, ZX Spectrum and Atari ST formats), simple HEX editor
• Simple proportional text viewer (ALT F4)
• Archive and compress
Now resolution independent!

New Colors Test 1.0.0 by William M Leue (TOOL/GRAPHICS, updated 15-07-2021 12:33:31) UPDATE
Named colors preview
Named colors preview
A test program for viewing and analyzing all 16 "named" colors in every possible color bit depth using 5.07 or later firmware. You can look at the colors with any of the 3 bit depths (8,12,16) and if you have Gen 2 hardware, in 32-bit depth. The colors are shown with their names, hex values and r,g,b component values. This program requires firmware 5.07 or later!

NoClue v1.0 by Geoff Camp (Goksteroo) (GENERAL/TOOL/DOCS, updated 13-11-2021 12:46:58) UPDATE
Crossword Assistant
Crossword Assistant
A little programme to find crossword solutions with minimal pre-solved letters. Input any known letters from the word you're looking for (3 to 20 letters). The 661,485 word and phrases dictionary will be searched for any matching patterns and the results shown. The word lists have been obtained by combining many freely available lists of crossword answers. The lists are plain text files and can be added to with any text editor.

PropText v0.06 by JirSoft (TOOL, updated 07-11-2021 17:51:14) UPDATE
Library for proportional text
Library for proportional text
Simple library for use standard fonts on CMM2 as proportional ones. Started with version 0.02, you can mix standard (monospaced) PRINT and TEXT commands with proportional from this library. This library can be used for example in text adventures, because of better readability of texts...
Usage:
• initAll.PROP initialise offsets and widths for all built-in fonts
• initFont.PROP(fnt%) initialise offsets and widths for font fnt%
• text.PROP(x%,y%,txt$,al%,fnt%,fc%,bc%) similar to TEXT command, just size parameter is ommited
• print.PROP(txt$, addSpace$) prints proportional txt$ on current position, wraps character to next line, without line feed, if the string addSpace$ is not empty, then to Nth SPACE (" ") in txt$ is added PX pixels, where PX=ASC(MID$(addSpace$, N, 1)), you can use TAB and LF chars in txt$
• printLn.PROP(txt$, addSpace$) same as print.PROP with line feed
• wrap.PROP(txt$) word wrapped proportional text output
• justify.PROP(txt$, txtWidth%, dx%) full jutified left and right word wrapped proportional text with size txtWidth% written to offset dx%
• justifyLine.PROP(txt$, txtWidth%, dx%) full jutified ONE LINE left and right word wrapped proportional text with size txtWidth% written to offset dx%. In txt$ is then returned non printed rest of text
• getTextWidth.PROP(fnt$, txt$) returns width of the proportinal text in font fnt% in pixels
• tab.PROP(t%) will set TAB position to every t%-pixels
• font.PROP(f%) will set FONT
• color.PROP(fc%, bc%) set foreground and background color
Usage:
• initAll.PROP initialise offsets and widths for all built-in fonts
• initFont.PROP(fnt%) initialise offsets and widths for font fnt%
• text.PROP(x%,y%,txt$,al%,fnt%,fc%,bc%) similar to TEXT command, just size parameter is ommited
• print.PROP(txt$, addSpace$) prints proportional txt$ on current position, wraps character to next line, without line feed, if the string addSpace$ is not empty, then to Nth SPACE (" ") in txt$ is added PX pixels, where PX=ASC(MID$(addSpace$, N, 1)), you can use TAB and LF chars in txt$
• printLn.PROP(txt$, addSpace$) same as print.PROP with line feed
• wrap.PROP(txt$) word wrapped proportional text output
• justify.PROP(txt$, txtWidth%, dx%) full jutified left and right word wrapped proportional text with size txtWidth% written to offset dx%
• justifyLine.PROP(txt$, txtWidth%, dx%) full jutified ONE LINE left and right word wrapped proportional text with size txtWidth% written to offset dx%. In txt$ is then returned non printed rest of text
• getTextWidth.PROP(fnt$, txt$) returns width of the proportinal text in font fnt% in pixels
• tab.PROP(t%) will set TAB position to every t%-pixels
• font.PROP(f%) will set FONT
• color.PROP(fc%, bc%) set foreground and background color

rexec 0.1 by Epsilon (TOOL/COMM/MAC-PC, updated 31-03-2021 16:52:07) UPDATE
Remote command execution on host from CMM2
Remote command execution on host from CMM2
REXEC allows you to remotely execute commands on an attached host machine from the CMM2 command line. It uses rexec.py server on host (Python3 needed) and Xmodem for data transfer (correct for filesize, so you don't end up with those pesky trailing bytes at the end of a transfered file).

SimplEd v0.42 by JirSoft (TOOL/GRAPHICS, updated 22-08-2021 18:45:59) UPDATE
Font editor for fonts used by PRINT and TEXT commands.
Font editor for fonts used by PRINT and TEXT commands.
Font editor for CMM2 fonts (created fonts can be used in MMBasic's PRINT and TEXT commands). Operations like edit, rotate, shift, inverse, fill... Import from BAS, INC and FNT files, font can be also scanned from any image, HT and PS/2 mouse support.
With help of SimplEd.CFG can be defined key shortcuts and on-screen-help, sample file is on GitHub. There is also short program Show_Keys.BAS, it can be used for finding proper key combination needed...
Macros can be saved/loaded to/from text file, so you can build a macro-library.
With help of SimplEd.CFG can be defined key shortcuts and on-screen-help, sample file is on GitHub. There is also short program Show_Keys.BAS, it can be used for finding proper key combination needed...
Macros can be saved/loaded to/from text file, so you can build a macro-library.

SplitScreen library 0.05 by JirSoft (GAME/TOOL/GRAPHICS, updated 15-12-2021 22:44:51) UPDATE
Library for screen splitting
Library for screen splitting
It enables to split screen into areas, print text into it or load image. It can be used for example for text games with pictures. Example BAS file is included, more info on GitHub...
• SUB init.SPLIT(cs$, dx%, dy%, w%, h%)
• SUB setStyle.SPLIT(cs$, t%, f%, fc%, bc%)
• SUB cls.SPLIT(cs$)
• SUB print.SPLIT(cs$, txt$)
• FUNCTION loadImage.SPLIT(cs$, fn$, iw%, ih%)
• FUNCTION input.SPLIT(cs$, allowedChars$, maxLen%) AS STRING
• SUB init.SPLIT(cs$, dx%, dy%, w%, h%)
• SUB setStyle.SPLIT(cs$, t%, f%, fc%, bc%)
• SUB cls.SPLIT(cs$)
• SUB print.SPLIT(cs$, txt$)
• FUNCTION loadImage.SPLIT(cs$, fn$, iw%, ih%)
• FUNCTION input.SPLIT(cs$, allowedChars$, maxLen%) AS STRING

Testing WII Controller 1.0 by ASandr (TOOL, updated 11-06-2021 00:15:13) UPDATE
Controller text
Controller text
This little program tests the buttons and analog sticks on WII Controller Classic Pro.

TUI library v0.50 by JirSoft (GENERAL/TOOL/GRAPHICS, updated 04-12-2021 22:58:06) UPDATE
Simple text UI library
Simple text UI library
Simple LIB_TEST.BAS file is included, more info on GitHub...
• SUB TUIinfo(title AS STRING, txt() AS STRING, logo AS INTEGER)
• FUNCTION TUIwaitingON(title AS STRING) AS STRING
• SUB TUIwaitingProgress(coord AS STRING, perc AS INTEGER)
• SUB TUIwaitingOFF(coord AS STRING)
• FUNCTION TUIchoice(title AS STRING, txt AS STRING) AS INTEGER
• SUB TUIwarning(title AS STRING, txt AS STRING)
• FUNCTION TUIquestion(title AS STRING, txt AS STRING) AS INTEGER
• FUNCTION TUIinput(title AS STRING, txt AS STRING, def AS STRING, en AS STRING) AS STRING
• FUNCTION TUIselect(title AS STRING, txt AS STRING, s AS INTEGER) AS INTEGER
• FUNCTION TUIgetItem(title AS STRING, subtitle AS STRING, txt() AS STRING) AS STRING
• FUNCTION TUIgetParent(s AS STRING) AS STRING
• FUNCTION TUIgetSelect(path AS STRING, ext AS STRING) AS STRING
• FUNCTION TUIfileSelect(path AS STRING, ext AS STRING, root AS STRING) AS STRING
• FUNCTION TUIemptyON(title AS STRING, ww AS INTEGER, hh AS INTEGER, but AS STRING) AS STRING
• FUNCTION TUImenu(menu() AS STRING) AS INTEGER
• SUB TUIemptyOFF(coord AS STRING)
• SUB TUIwaitForKey
• SUB TUIwaitForNoKey
• SUB TUIinfo(title AS STRING, txt() AS STRING, logo AS INTEGER)
• FUNCTION TUIwaitingON(title AS STRING) AS STRING
• SUB TUIwaitingProgress(coord AS STRING, perc AS INTEGER)
• SUB TUIwaitingOFF(coord AS STRING)
• FUNCTION TUIchoice(title AS STRING, txt AS STRING) AS INTEGER
• SUB TUIwarning(title AS STRING, txt AS STRING)
• FUNCTION TUIquestion(title AS STRING, txt AS STRING) AS INTEGER
• FUNCTION TUIinput(title AS STRING, txt AS STRING, def AS STRING, en AS STRING) AS STRING
• FUNCTION TUIselect(title AS STRING, txt AS STRING, s AS INTEGER) AS INTEGER
• FUNCTION TUIgetItem(title AS STRING, subtitle AS STRING, txt() AS STRING) AS STRING
• FUNCTION TUIgetParent(s AS STRING) AS STRING
• FUNCTION TUIgetSelect(path AS STRING, ext AS STRING) AS STRING
• FUNCTION TUIfileSelect(path AS STRING, ext AS STRING, root AS STRING) AS STRING
• FUNCTION TUIemptyON(title AS STRING, ww AS INTEGER, hh AS INTEGER, but AS STRING) AS STRING
• FUNCTION TUImenu(menu() AS STRING) AS INTEGER
• SUB TUIemptyOFF(coord AS STRING)
• SUB TUIwaitForKey
• SUB TUIwaitForNoKey

XEdit 0.10 by Epsilon (GENERAL/TOOL, updated 24-04-2021 11:02:38) UPDATE
XEdit Text Editor for Color Maximite 2
XEdit Text Editor for Color Maximite 2
XEdit is a text editor written in MMBasic. The editor supports up to two windows (Hsplit/Vsplit or no split) and up to two buffers (files). The two buffers can be freely assigned to windows and two windows can present separate views into a single buffer. XEdit supports undo, macro recording, MMBasic syntax highlighting as well as the usual complement of editor operations: cut/copy/paste, find/replace, indent/unident selections, insert/overwrite mode, goto line.
