A board-local counter called "BOARD_X_CLIP". It is equal to the board width by default, and can store a number. The number is a cut-off X coordinate if non-zero. Things cannot move into the cut-off area, CHANGE and IF ANY and stuff like that ignore it, nothing in the cut-off area can be addressed by coordinates, etc. But robots in the cut-off area still update, overlays still work, and the cut-off area is unaffected by freezetime/slowtime/blind or other potion/ring effects. For example, if BOARD_X_CLIP is 30 and the width is 40, then everything with the X coordinates 30 to 39 is the cut-off area, moving east off of X=29 will go to the board east, moving west off of a board onto this board will go to X=29, etc.
A read-only counter "BOARD_NUMBER" with the number of the current board.
Counters "SAVE_BOARD" and "LOAD_BOARD" to save and load boards. If you give a number after the name of the counter, it will use that slot instead of the current board. The filename for LOAD_BOARD can be a board file, or it can be a world file and with a colon and number after the filename, in which case it will copy that board from that world.
Option in configuration file for changing ALT+D in editor between the old and new function.
Option in configuration file to disable centering the mouse at the window (leaving the real mouse pointer where it is and setting the MZX mouse pointer to the lower-right corner). Another option for mouse would be that the MZX pointer is not displayed in window mode, and the normal mouse pointer is (always) displayed, regardless of mouse pointer state. However you should still hide the real mouse pointer if a game uses the mouse coordinate counters without enabling the normal mouse cursor display.
Option in configuration file for uppercase Robotic commands.
Keyboard shortcuts in robot editor for block actions, instead of having to select from a list. (For example, CTRL+X cut, CTRL+C copy, CTRL+Z clear)
Able to use Robot/PushableRobot/Sensor/Sign/Scroll in CHANGE and similar commands. If changing something into a Robot p?? or PushableRobot p??, it will become a copy of the current robot, but starting from the beginning. If the Robot parameter is a string, it starts with a character @ or ! or % to become a copy of the robot with that name, loaded from bytecode, or loaded from a text file, respectively. If a Sensor, you give the parameter as a string indicating the sensor name, robot name, and character number, separated by semicolons (for example: c04 Sensor "sensor1;controller;254"). For Sign/Scroll, the parameter string is a name of a string variable or a filename. On the left side of a CHANGE, or in IF ANY or similar commands, using a Robot with a string parameter checks for robots with that given name.
Some way to set strings without interfering with special words. Possibly MODULO "$name" "text" could be made to do that.
Add a CHAR ID setting for the character to display for the outside of view border.
Some way to make it scrolls and signs use the in-game character set rather than the system character set.
And now for Extended MZX stuff:
First, in order to enable Extended MZX, you need to make the first line of the global robot into a comment with a greater than sign at the beginning. After the greater than sign is a filename. (I will write the C codes for interpreting the file and executing things defined in it later.) If the filename has angle-brackets around it, it will look for the file in the subdirectory of the MegaZeux executable called "Extended". If it doesn't have angle-brackets, it will look in the same directory as the world file is stored in.
The thing numbers 128-255 are Extended Kinds, and shall use a higher offset of the CHAR ID table because offsets 128-255 are already used.
The Forth codes file (indicated in global robot) is reloaded after every time you exit the global robot editor, every time the world is loaded in any way (game, title, swap, editor, etc), and when a certain key combination is pushed during the level editor or robot editor (you could make it CTRL+R, or something else if you wanted to).
Extended Kinds are defined in the Forth codes file, indicating the number 128-255, the default CHAR ID value, the parameter type (which can be any one of the built-ins), the flags, and the name. They will be listed in the F11 menu in the editor. The CHAR ID editor will list any Extended Kinds you have defined in which the default value is not 0 or 255. The names defined are now also displayed in the editor and can be used in Robotic codes.
There are Extended MZX events defined in the file also. Game play events are: KEYBOARD JUSTENTERED PLAYERHIT PLAYERHURT PLAYERMOVING UPDATE SPEC_PUSH SPEC_BOMB ITEM SPEC_SHOT AFFECTSTOOD. Editor events are: SF5 SF6 SF7 SF8 BEFOREADDBOARD AFTERADDBOARD. Some events are 128 such events, one for each Extended Kind.
Two new counters dealing with Extended MZX. The counter "FORTH_STACK" is push to data stack if written to, pop from data stack if read. The counter "FORTH_EVENT" is write-only and calls the event with that given number.
For example:
128 12 0 A_ITEM A_PUSH + EXTKIND ZztKey EV.ITEM ZztKey + :EVENT COLOR-AT DUP TAKEKEY SWAP GIVEKEY DROP 0= ; EV.BEFOREADDBOARD :EVENT GETBOARDSIZE ; EV.AFTERADDBOARD :EVENT SETBOARDSIZE REMOVE-OVERLAY ;

Help














