-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwhatsnew.doc
More file actions
378 lines (332 loc) · 17.1 KB
/
whatsnew.doc
File metadata and controls
378 lines (332 loc) · 17.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
This document lists what is new in each version of Super ZZ Zero. Things
that are only relevant for modifying Super ZZ Zero itself are usually not
listed here, but you can look in the commit history. Some things that are
too minor to be listed here also aren't listed here.
The notation is:
+ Added feature
- Removed feature
= Bug fixed
* Others
The time zone for the dates in this file is Pacific (British Columbia).
=== Version ??? ===
GAME
+ Optional special uses for item definitions and inventory slots.
+ Music can now have instruments with delay line and special effects.
+ Dynamic music (although sz0music currently lacks the way to use this).
+ Zones in board grids, with several uses.
+ User structured data (.USD) lumps.
+ Allow SMZX mode to be usable.
+ Variable properties to adjust the video mode.
+ Item definition event flag.
+ Partial implementation of advanced fonts (including animated fonts
and partial fonts).
= Fix a memory leak with loading variable property lists.
SCRIPTS
+ The #SENT condition to check if a message was successfully sent.
+ Numeric storage labels.
+ Conditions #INZONE and #PLAYERINZONE to read/write zones.
+ The #EVENT: condition to check/modify event flags of items.
+ The #EDITFONT command to modify a single character of the font.
+ Each stat instance now has a 16-bit "extra value", which can be set
with the #EXTRA command and read with the (E) numeric expression.
+ New subroutine specifications.
= Fix bugs with some commands and conditions.
= Fix bugs with script frames and script subroutines.
ASSEMBLY
+ New instructions for dealing with zones.
+ IGET and IPUT can now be used to copy item slots.
+ A new flag for IGIV and ITAK to restrict it to a single slot.
+ IMOV to move items from one inventory list to another.
+ CALS and RETS to use a call stack stored in the program memory.
+ Each stat instance now has a 16-bit "extra value", which can be set
with the PEX instruction and read with the GEX instruction.
+ ASN.1 operators. (This feature is considered experimental.)
+ Control flag to automatically stop key repeat when opening and closing
a text window or item window.
+ Control flag to cause stats moving in the overlay to remember what
used to be in their place using the sensor field.
= Fix bugs with some instructions.
* Numbers on the number pad are no longer automatically treated as
directions if num lock is on; instead, whether numbers (all numbers,
not only the number pad) are treated as directions is a control flag.
EDITOR
+ Improvements to text editor.
+ Font editor now displays numeric values of the raster data.
+ You can now specify modification of a single character of a font in
the variable property editor. (This variable property was already
implemented, but the editor for this feature was previously missing.)
+ Menu to manage sound effects and music.
+ Export MZM in screen editor.
= Changed a conflicting keyboard command in the item definition editor.
= The overlay draw mode works correctly now.
OTHERS
+ Experimental "front" mode to communicate with external programs.
+ The [Colors] division in the configuration file.
+ A few minor improvements in sz0music program.
+ Improve encoding of .SCR lumps. The meaning of codes 240 and 247 are
changed, which is technically incompatible but is unlikely to matter
unless you write your own Super ZZ Zero editor, since previous
versions of Super ZZ Zero never wrote those codes to .SCR lumps.
= More fixes to avoid processing key events multiple times when saving
or restoring a save game file.
= Fix a bug with writing the ELEMENT lump.
=== Version 0.7.0 (2025-11-04) ===
GAME
+ Board flags to always allow saving the game in certain circumstances;
this applies only if saving is disabled due to control flags.
+ Custom fonts/palettes.
+ An indicator type for if the board user data is nonzero.
+ Can set initial font, palette, and/or scroll position per board and
per screen.
+ Some of the settings in the user configuration file can be overridden
by the game world (unless disallowed by the user configuration file).
+ New boards can be created at run time.
+ Item definitions and inventory (including item windows).
+ Colours can now be defined for states of different parts of windows.
+ The F2 key can now be used to toggle sounds in a text window or item
window, as well as working during the normal game play.
+ Music is implemented.
= The current board number display now works correctly. (Previously this
was documented but the implementation was missing.)
SCRIPTS
+ The #NOSAVE flag can be used to disable saving (this modifies a
control flag).
+ The #NOSCROLL flag can be used to disable scrolling (this modifies a
control flag).
+ Load fonts/palettes by #LOADFONT and #LOADPAL command.
+ RNDB and RNDNB directions.
+ Script commands for dealing with items/inventory: #IFITEM, #IFNOTITEM,
#GIVEITEM, #TAKEITEM.
+ "CC" in numeric expressions to count the number of links that can be
chosen in the text so far.
+ #MIXCHOICES command mixes up the order of choices in a text window.
+ #AUTOCHOICE makes a selection automatically instead of displaying the
text window with choices.
+ When using #ESCAPE, you can now use {L} and {R} to do right alignment
with leaders.
+ #MUSIC command to set the music.
ASSEMBLY
+ The $C6 memory cell now stores the address of the next instruction if
a branch or return occurs, as though it did not occur.
+ The $C7 memory cell can be used to create new boards at run time.
+ Control flag to make message line text last forever until overridden.
+ Control flag to disallow saving the game by F3 and F5 keys.
+ Some instructions can now use J and K as the first operand.
+ Control flags to save/restore the board state in a separate lump.
+ Deck of cards working, using instructions DPUT, DTAK, DEAL.
+ PROP dealing with a variable property list.
+ CHEX to change board exits at run time.
+ You can cancel an existing key repeat by "KEYB A,0". (This might be
useful if you do not want movement or other commands to continue if
the screen changes to a different board or screen.)
+ STEX is now able to load item scripts.
+ New instructions and zero page memory cells for working with items
and inventory lists.
+ STR pseudo for forcing strings to be given new consecutive numbers.
+ Add the window keyboard event. This is usable in text windows and
in item windows, if enabled by the window definition.
- Remove EAP0 and EAP1.
EDITOR
= The config.shift_arrows no longer affects the screen editor (now it
only affects the board editor), since shift+arrows already has a
meaning in the screen editor (for numeric extension).
= Restore window editor screen properly after displaying a help file.
* The "appearance mapping" and "animation" menus are now submenus of
the "element" menu, since their use is related.
* The "memory" screen element has been moved from F4 to F1.
TEMPLATE
+ "Time:" is no longer displayed unless the board has a time limit.
OTHERS
+ Improved audio resampling.
= Avoid processing the same key event multiple times after restoring
a save game file.
= Avoid saving the joystick configuration in the world file if the
joystick configuration is empty.
* The save game format has been changed (and is no longer compatible
with older versions of Super ZZ Zero; if you have a save game file
from an older version of Super ZZ Zero, it will not work with this
version, although the world file will (probably) still work).
* When config.show_status=0 the border is removed.
=== Version 0.6.0 (2025-06-28) ===
GAME
+ Add the A_PERMANENT attribute.
+ Counter-based random appearance of elements.
+ Message sending can now set the delay to zero (this can be changed
at run time).
+ A new way to handle the key repeat during the game play. This new way
can be configured and can be disabled.
+ Screen definitions can now enable or disable message edging. (The
default is now to disable; this is a change from previous versions.)
+ Wave sounds. (Currently lacks support in the editor.)
+ Dynamic stats and independent stats.
+ Element 240 is now used for overlay tiles.
= Restore named flags from save game files.
= Save/restore script frames and delay and flags for global scripts.
= Message edging now uses correct colours.
SCRIPTS
+ The #VISIBLE condition is implemented.
+ Conditions for named flags in specific numbered positions.
+ Script libraries are possible. You can use this to create scripts
which can then be loaded in multiple boards at run time. The use of
STEX instruction can be used to decide the loading at run time, too.
= Correction of #BECOME.
ASSEMBLY
+ OREQ is like EQ but leaves condition flag unchanged if unequal.
+ GMOD and PMOD deal with mode bits of stats (a new feature in this
version of Super ZZ Zero).
+ INEW adds a new stat instance independently of the board grid.
+ STEX sets the text of a stat that does not already have a text.
+ OVM to work with overlay memory (not the same as board overlays).
- The original $C6 and $C7 global events are removed.
= Correct return value of UNEW, MNEW, ONEW.
EDITOR
+ Implement area buffer in board editor.
+ Implement tile queue in board editor.
+ Functions to copy instance data in the stat XY editor.
+ Push R in board editor to clear stat from stored tile.
+ The z and Z prefixes now work in block selection mode without causing
the block selection to be lost.
+ Use ALT+P in text editor for adding a character number.
+ Push i in screen editor to invert mark.
+ Settings to specify the behaviour of arrows with modifier keys.
+ Import MZM in screen editor.
+ Push s and S in board editor to edit stat instances at cursor.
+ The "modify" colon command in the board editor.
+ Push W in board editor for a single command in boardwalk mode.
+ Push ^E, ^N, etc in boardwalk mode to go to board and move cursor.
+ Push q in mass mode to write tile in main layer.
= Retain selection of character for ^P in text editor.
= Save board when leaving due to following exits in boardwalk mode.
= Set cursor position in board list when exiting board editor.
= Correct a bug in the board editor when adding a stat by a F1 menu.
TEMPLATE
+ Many additions to default template.
+ #BOARD command to go to another board.
+ #ENDGAME command to end the game.
- Removed the "blank" template, which is not necessary; you can create
an empty world file with no template.
= Correct the right margin.
* The default template now sets CONTROL_DELAY0_SEND by default.
=== Version 0.5.0 (2025-05-05) ===
GAME
+ Dynamic strings are implemented.
+ A world can optionally be defined as 40-columns mode.
= Correct the implementation of board grid scrolling.
SCRIPTS
+ Use the {D} code to display dynamic strings in text.
+ Use "d" operator in numeric expressions for dice.
+ The #PUSHABLE condition to check if something is pushable.
= A bug dealing with executing commands after a link in a long text
has been selected, has been corrected.
ASSEMBLY
+ DYN opcode for dealing with dynamic strings.
+ SCFR is a new instruction to affect script frames.
+ Implemented the CAM instruction (affects camera position).
+ MEM is a new instruction for memory block copy/display/exchange/fill.
+ ED ';' and ED 'V' and ED4 65 are added.
+ SPIN instruction spins stuff around a tile.
= Correction in assembler of parsing the source part of a extension
operand if its value is 1.
= Missing "break" in ED4 and ED5 cases in assembler.
EDITOR
+ You can use ^P in the board editor to edit the text of a stat.
+ The :boardinfo command to alter board info.
+ Default settings for new boards can now be made by the asm file. (This
function can be disabled by the user configuration file.)
+ The editor now writes the Super ZZ Zero version number into the world
file by default, allowing older versions of Super ZZ Zero to recognize
that the world is not compatible and a newer version is required. This
feature can be disabled by the configuration file.
+ An advanced editor menu is added; you can use this to edit OID sets
directly (most users are unlikely to need this function).
+ In the board editor now you can make a menu of revealing lists, to
temporarily reveal certain kind of tiles.
+ Secondary mark grid.
+ In board editor and screen editor, "r" reverses foreground/background
colours of the current colour.
= Use of inverse bit in parameter editors is corrected.
= Double column F menus now (seems to) work correctly.
TEMPLATE
+ Default settings for new boards are now specified.
+ Added joystick configuration into template.
+ Add CONVEYOR element.
+ Add the revealing menu in the editor.
+ There is now a documentation file for the default template.
+ Add GUN element.
+ Still/flowing water.
OTHERS
+ The TEMPLATE.DER lump is usable for affecting the creation of new
world files from a template. (There is currently no way to create
this lump within Super ZZ Zero itself; an external program must be
used instead.)
+ Joystick configuration is implemented.
+ Added options to set the name of temporary files.
+ Changes to text input implementation. (This may eventually support
non-ASCII input, although the ability to do so is incomplete.)
* Carriage returns at the end of lines in the user configuration file
are now ignored.
* The configuration file is now split into divisions. For backward
compatibility, the heading is not needed for the [Options] division.
* Add example file into release list.
* Improved handling of versions and OID sets.
=== Version 0.4.0 (2025-02-25) ===
GAME
+ The four previously unused layer/lock bits are now meaningful (and
their meaning is now documented in opcodes.doc; see ASSEMBLY below).
+ Sensors are implemented.
- The A_TRANSPORTER flag is no longer used (it is now called A_SENSOR);
the EV_TRANSPORT event alone decides if it is a transporter.
SCRIPTS
+ #ESCAPE is implemented. This allows text in scripts to include {}
codes to be replaced with dynamic data (such as calculated numbers).
+ #ZAPALL is implemented, which zaps all instances of a specified label
or choice item.
+ #FACE and #WALK can be used to set the facing and walking directions.
There are also FACE and FLOW directions, and new conditions #FACING:
and #WALKING: and #WALK to test the facing/walking state. There is
also F, B, L, R directions which are abbreviations of FACE, OPP FACE,
etc, and can be used with / and ? commands.
+ Directions with parameters can be delimited by spaces or underscores.
+ Script subroutines. Any label can optionally be a subroutine call, so
that when it receives the message it can remember what part was being
executed and can return to it later.
= Corrected spelling of "WEST".
ASSEMBLY
+ LOCK can now set the six high bits instead of only two high bits.
+ New and changed instructions for dealing with sensors.
+ M1L and M2L, like PEEL but also saves the final value of the register
into memory after it is finished with it.
= Changing stats with CHA and CHAX now resets the instruction pointer
if the stat number changed.
= DIE can now destroy stats that have invalid parameters.
* Addresses $0080 to $00FF are now reserved, instead of $00C0 to $00FF.
EDITOR
+ You can now set the facing/walking flags of stats in the board editor.
(The keyboard commands of the stat XY editor have changed in order to
choose more appropriate letters for the facing/walking.)
TEMPLATE
+ Add OBJECT walking like ZZT (including the :THUD label).
+ Add SENSOR element (similar to MegaZeux, but not quite).
+ Add a "Explode Bombs" potion effect.
OTHERS
+ The "video_gamma" setting can be used to modify the colours.
* The handling of version numbers in GENERAL.DER has been changed.
* The -T switch is now mentioned in the man page. (This was already
implemented but was not documented before.)
=== Version 0.3.0 (2025-02-18) ===
GAME
= Correct the implementation of save games (previously it would fail if
you restored a game and then tried to save or restore again).
ASSEMBLY
+ TEXT F allows using numeric formatting in strings.
+ The working of the OMOV opcode is changed. The previous implementation
and documentation were both wrong.
+ LAST is implemented, which gets the last instance of a stat.
+ SIP is implemented, like SIN but in the reverse direction.
+ INFO allows accessing various miscellaneous information, such as some
information about the current screen and current board, which is not
otherwise accessible.
= Correct the implementation of memory operands.
EDITOR
+ Keyboard commands in the text editor for quickly inserting lines.
+ More preset gradients, and a better menu for selecting them.