This document tries to cover all of the incompatible SAV file format changes and counter addition/removals since 2.51s1. Going back further would be valuable. Contributions from Terryn and ajs. == MZX 2.51s1 ================================================================= + Added MOUSEX, MOUSEY, BUTTONS, MBOARDx, MBOARDy, SCROLLEDx, SCROLLEDy, PLAYERX, PLAYERY, CURSORSTATE, LOCAL == MZX 2.51s2 ================================================================= + Added MOD * == MZX 2.51s3.2 =============================================================== + Added BIMESG == MZX 2.60 =================================================================== + File access added: FREAD, FWRITE, FREAD_OPEN, FWRITE_OPEN, FWRITE_APPEND, FREAD_POS, FWRITE_POS, FREAD_PAGE/FWRITE_PAGE (these two were removed (in 2.80, IIRC - it wasn't used anyway.)) + KEY_PRESSED + INT, BIT_PLACE, INT2BIN + CHAR_X, CHAR_Y, PIXEL + CHAR_BYTE, CHAR, BYTE + R_PLAYERDIST (removed in 2.68) + F2_MENU, ENTER_MENU, HELP_MENU + BULLETTYPE, LAVA_WALK + COMMANDS + : "key#" + (read_length and write_length counters are claimed, but I don't see them working?) Ak additions incorporated into 2.60: + DATE_DAY, DATE_MONTH, DATE_YEAR + TIME_HOURS, TIME_MINUTES, TIME_SECONDS + MZX_SPEED + CURRENT_COLOR, RED_VALUE, GREEN_VALUE, BLUE_VALUE + OVERLAY_X, OVERLAY_Y, OVERLAY_CHAR, OVERLAY_COLOR + BOARD_X, BOARD_Y, BOARD_COLOR, BOARD_CHAR + ROBOT_ID + ABS_VALUE, SQRT_VALUE, VALUE (removed in 2.68 in favor of expressions) == MZX 2.62 =================================================================== + Strings added. 10 total; names limited to $string0 through $string9. String comparison possible. + INPUT, BOARD_NAME, BOARD_SCAN built-in strings. FREAD/FWRITE now have added string writing/reading functionality. + MOD_ORDER == MZX 2.65 =================================================================== + FREAD_COUNTER, FWRITE_COUNTER + BOARD_W, BOARD_H + ROBOT_ID_Name + R#.Counter + Sprites added; limit set at 64 global: SPRn_REFX, SPRn_REFY, SPRn_HEIGHT, SPRn_WIDTH, SPRn_X, SPRn_Y, SPRn_CX, SPRn_CY, SPRn_CWIDTH, SPRn_CHEIGHT, SPR_COLLISIONS, SPR_CLISTn, SPRn_STATIC, SPRn_OVERLAID, SPRn_CCHECK, SPRn_OFF, SPR_YORDER, SPR_NUM, SPRn_SETVIEW, SPRn_SWAP; Sprite and Sprite_colliding objects added. + Subroutines added, require setting up the stack with a line like (. "#*-1-2-3") etc, special "#return" and "#top" labels. + Hex outputs with && added using + and # (ex: &+counter&, &#counter&). # adds a 0 to the output if the counter is less than 0x10. + Partial chars became loadable Through +xxname.char (xx is in hex and is the starting position). == MZX 2.68 =================================================================== - Added DIVIDER, MULTIPLIER, C_DIVISIONS - Added SIN, COS, TAN, ATAN, ASIN, ACOS, SQRT, ABS - Added SAVE_GAME, LOAD_GAME - Removed R_PLAYERDIST, ABS_VALUE, CHAR_X, WRAP - MZMs, Strings, Expressions added Save file breaks due to Sprites, Math, Input/Output file, see below.. +MZX save file format extensions + +These all are stored after the counters in the save file. + +Byte(s) + +00-1023 Sprites (16 bytes each * 64) +1024 Total sprite count +1025 Sprite y_order flag +1026-1091 Sprite collision info (66 bytes) +1092-2115 Strings (16 bytes each * 64) +2116-2117 Math multiplier +2118-2119 Math divider +2120-2121 Circle divider +2122-2133 Input file name +2134-2137 Input file position +2138-2149 Output file name +2150-2153 Output file position == MZX 2.69 =================================================================== - Added SMZX_PALETTE, SMZX_MODE, SMZX_{R,G,B} - Added KEY?, KEY_RELEASE, KEY_CODE (possibly just altered, it's unclear) Save file breaks due to writing SMZX mode, SMZX mode 2 palette (optionally) and COMMANDS counter. == MZX 2.69b ================================================================== - Added ROBOT_NAME - Added ridName (aka rid?) Save format got broken again, but for no good reason I can see? == MZX 2.69c ================================================================== - Added FWRITE_MODIFY (?) - Added SAVE_WORLD - Added VLAYER_WIDTH, VLAYER_HEIGHT, VCH, VCO - Overlay mode 2 vlayer modification, probably breaks SAV files Sprites seemed to get a rewrite in this version. It broke the SAV file format again. VLayer stuff got written out (width, height, chars, colors) to SAV. == MZX 2.70 =================================================================== - Added load_robot, save_robot, load_bc, save_bc (and N variants) == MZX 2.80+ ================================================================== This is a bit more work and we haven't started it yet.