-
Notifications
You must be signed in to change notification settings - Fork 19
/
releasenotes.txt
613 lines (505 loc) · 37 KB
/
releasenotes.txt
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
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
RELEASE NOTES
Upcoming release
================================================
Release 14.48: 1 Dec 2024
Bugfixes:
- Fixed bug which stopped sound games from building.
- Fixed test cases in tests folder which hadn't been updated to new way of specifying colours.
================================================
Release 14.47: 1 Dec 2024
New/changed features:
- Updated the manual section on dependencies.
- Changed make.rb options for choosing colours. New options are e.g. -fgcol:black -bgcol:yellow -bordercol:fg -inputcol:lightgrey -cursorcol:lightblue -dmfgcol:blue -dmbgcol:ltgreen.
- No more colour replacing, as all 16 colours of the c64 palette are now always available. A game can use the extra colours too (colour 8-15 in the C64 palette are colour 16-23 in the Z-code palette).
- Specified the cost in bytes for some features in the instructions printed by make.rb when invoked without parameters.
Optimizations:
- Commented out a few lines of code meant for debug in zmachine.asm
Bugfixes:
- Changed File.exists to File.exist in make.rb, as the latter is correct, and the former isn't supported in newer Ruby versions.
- Removed option -scale 2 for xemu (X16 emulator), as this could wreck havoc on some screens.
- Zeropage location $ab was used to remember if text output is buffered on C64, MEGA65 and Plus/4, but this address was actually unsafe to use on all of these platforms. Changed it to $c8 on C64/MEGA65 and $d0 on Plus/4.
- Zeropage location $a7 was used to remember current window on C64/MEGA65 and Plus/4. This was breaking compatibility with fastload module of Action Replay cartridge on C64. Changed to use $d8 on all three platforms.
- Fixed broken PRNG initialization for X16.
- Overwriting save files had been broken for many months, but we didn't know. Fixed it now.
- make.rb will now stop user from accidentally specifying two different story files.
================================================
Release 14.40: 28 Sep 2024
New/changed features:
- Made Quit not show a MORE prompt if no text has been printed since the last read or read_char instruction.
- Moved all generated source files to temp folder, so asm folder can be read-only.
- A new default unicode output map makes the unicode characters available in Z-code by default print as normal characters, unless they have a specific mapping for the language used. E.g. this makes Ä print as A. Enabled by default. Turn off with -um:0 to save 83 bytes.
Optimizations:
- Changed reading a byte at PC on X16 from a subroutine to a macro, making Hollywood Hijinx about 3% faster.
================================================
Release 14.36: 6 July 2024
New/changed features:
- Undo is now supported on Commander X16.
- Documented the usage of a .ozmoorc file in the manual.
- Builds with 0 blocks of virtual memory RAM in unbanked RAM on C64 and C128 are now allowed (1 block of VMEM in unbanked RAM was a requirement up to now). This makes it possible to build Trinity for C64.
- Added commandline switch -bm to build in Benchmark Mode (automatically play through a game, using one of the walkthroughs supplied in benchmarks.json)
- Calculation of the number of save slots that fit on a disk has been changed. For MEGA65, it's now assumed that saves are placed on the game disk. For X16, there's always room for ten saves. For all other platforms, the save disk is assumed to be an initially empty 1541 disk. A slightly less consevative estimation of save file size means there will now be one more available save slot in some games.
Optimizations:
- Z-code multiplication now uses hardware multiplication on MEGA65, and a faster algorithm than before on all other platforms (Thanks to TobyLobster et al for new algorithm).
- Saved seven bytes in z1-z3 statusline routine by moving a duplicated code segment.
- Microoptimizations in memory access for X16.
Bugfixes:
- If virtual memory RAM started at exactly $d000 on C64 (maybe on C128 as well?), translation between Z-machine address and RAM address would fail, leading to (a) loading the game into REU became impossible, and (b) running without REU would break down when code or data in the first 512 byte block of static memory was accessed.
- Fixed a broken test in tests/test_builds.rb
- Disabled tear-free scrolling in benchmark mode.
- EXT opcodes #30-255 are now treated as NOP, like the standard says.
- Save file size calculation failed spectacularly for games where stack size + dynmem size + 256 > 64 KB. This was most likely to become a problem for Inform 7 games.
================================================
Release 14.29: 17 June 2024
Optimizations:
- Removed num_default_properties, a byte value which was set but never read.
Bugfixes:
- Cursor could be updated even when not on screen, potentially crashing the interpreter.
- make.rb didn't complain if story file had an unsupported Z-code version (or wasn't a Z-code file at all).
- make.rb would not report an error for X16 builds with a stack that's too big (~9+ KB), typically crashing the game at some point.
- Restart didn't work on X16 if the Z-code file had any capital letters.
- Call to @set_cursor with line = 0 are illegal (Z-machine screen starts at line 1), but happen. Ozmoo was placing the cursor on the bottom line of the screen, but now the cursor is placed on the top line (line 1) instead.
- X16 builds now perform NEW before loading game from disk again when restarting, to make debugging easier if file isn't found.
================================================
Release 14.24: 17 May 2024
New/changed features:
- Appended ".prg" to boot file on X16, so it's easily recognizable as an executable file
- Allow more characters in custom file names, now it's a-z, 0-9 and ".-()[]'"
- Added option -x to automatically change verb "x" to "examine" in player input. Enabled by default for Infocom games that don't recognize x as a synonym for examine.
Optimizations:
- Truncated long custom file names to 16 characters for all but X16, so we don't store more characters than necessary
Bugfixes:
- A z1-z3 game would hang when entering a room where the room object has a newline character in the name
- Beep on MEGA65 played 40 times too long (~3 s)
- The pause when doing save or restore on MEGA65 was 40s instead of 1s.
================================================
Release 14.17: 17 April 2024
Bugfixes:
- Fixed screen colour initialization issues
- Replaced ti_variable to fix frozen more prompt on X16
- More prompt blinking frequency adjusted on MEGA65
- More prompt now blinks in both 40 and 80 col mode on C128
- Fixed cursor blinking on X16
================================================
Release 14.14: 10 April 2024
New/changed features:
- Made a 255 byte command history buffer the default on X16, just like on MEGA65
- Set border colour on X16
- Changed savefile prefix (all platforms), Zcode filename and font filename (X16 only), to make sure boot file is listed first on X16
- User can create a .ozmoorc file to set paths to executables, e.g. X16 = C:\emu\x16emu.exe. .ozmoorc can be located in $OZMOO_HOME, cwd, or $HOME
Optimizations:
- Made scrolling 3.5 times faster on X16
- Made printing a character faster on X16
- Unified some MEGA65 + X16 code for loading story file into memory, for ease of maintenance
Bugfixes:
- Listing save files didn't work correctly if scrollback buffer was enabled
- Restart loaded entire story file on MEGA65, if a custom font was used
- A conditional jump in the code could break because it had to jump too far, if you had smooth scroll, scrollback buffer and undo enabled.
- A scrollback buffer in regular RAM made Beyond Zork builds break
- Border colour was sometimes set incorrectly on X16
- Using a custom font on X16 made the font stay after QUIT
================================================
Release 14.7: 2 April 2024
New/changed features:
- Made Quit work reliably on X16, and without resetting the computer.
- Made restart fast on X16 (only reload dynamic part of gamefile after restart)
- Enabled scroll speed control and tear-free scrolling on X16
- Made Z-machine beeps work on X16
- Added support for custom fonts on X16
Optimizations:
- Moved print_buffer, print_buffer2, memory_buffer and directory_buffer to leave more continuous space for future use.
- Made printing of a buffered line much faster on X16
- Made clearing a line, a window or the entire screen much faster on X16, and a bit faster on MEGA65
Bugfixes:
- Routine to cause delay on X16 was incorrect, could crash game when saving game.
- Removed C64 keyboard handling references from X16 code.
================================================
Release 14: 27 March 2024
New/changed features:
- Added target platform Commander X16 (use switch -t:x16)
- Added build mode -ZIP, for X16 targets.
- Added option -df:n (delete files), to decide what to do with files and folder created for the zip archive for build mode -ZIP. 0: Don't delete (default), 1: delete, f: force - always delete, even if zip operation failed.
- Added build mode -71D, for dual 1571 drives.
- Varicella is now automatically patched to (a) fix a bug in colour handling in the game, and (b) adapt the game to Ozmoo's limitations in colour handling.
- Made game saves generic between MEGA65 and X16, and between builds using different versions and features of Ozmoo. Players should now be able to copy old save games to a build using a new version of Ozmoo, or with other features enabled, or from MEGA65 to X16 or the other way around.
Optimizations:
- The code for listing save files is now faster *and* shorter.
Bugfixes:
- "erase_window 0" would crash the interpreter if window 0 had height 0.
- Default screen colours weren't written into the header after a restart on MEGA65.
- Build mode -P was broken, because dynmem size wasn't calculated. May have affected saves.
- Made QUIT work correctly on MEGA65 games with and without a custom font.
- Screen wasn't cleared after save/restore if REU caching was used.
- Fixed bugs that made Ozmoo crash when printing to lower window when it's 0 lines high, or when scrolling the window when it's 1 line high.
- Fixed debug messages and error messages that were stored with the wrong encoding. Some interpreter messages that used to be in upper case will now be in lower case.
================================================
Release 13.6: 17 November 2023
Bugfixes:
- make.rb prints a warning if undo support was requested but game is z5-z8 and doesn't support undo.
- Build using -P didn't work, probably since v13.0. Fixed.
- make.rb didn't protest when asked to build with Undo in mode P, though it's not possible. Now it halts with an error.
- make.rb would sometimes reserve too small a buffer for splash screen in mode P.
- make.rb couldn't build a mode P game using the full memory if the story file had an odd number of pages, e.g. a game of 51.25 KB couldn't be built even if a 51 KB game left an empty memory page at the end.
================================================
Release 13.1: 19 July 2023
Bugfixes:
- Fixed bug in text printing that could crash game, when printing a word longer than a line, or when text buffering was started in the middle of a screen line.
================================================
Release 13: 18 July 2023
New/changed features:
- Single step undo is supported for z5+ (using UNDO command) and for z1-z4 (using Ctrl-U key) on C64/C128 with REU, C128 without REU (slower, and with limited dynmem size), and on MEGA65.
Bugfixes:
- Picture loader gave build error.
- Fix buggy printing when erase_window was called while buffered printing was active.
- Don't recognize F5 key if there's no REU or RAM available for scrollback.
- Ozmoo on C128 would boot into 80 column mode when game restarted in 40 column mode.
Refactoring:
- Moved cursor code from text.asm to screenkernal.asm.
- Moved screen model specific code from ozmoo.asm.
================================================
Release 12.2: 26 December 2022
New/changed features:
- Allow games with just one vmem block in unbanked RAM (requirement was two, up to now).
Bugfixes:
- Game could hang if player pressed backspace while entering a save comment on MEGA65.
================================================
Release 12.1: 22 December 2022
Bugfixes:
- z1 and z2 games that used an REU for scrollback buffer *and* the player chose to use the REU for caching, crashed due to scrollback data overwriting story data.
================================================
Release 12: 20 December 2022
New/changed features:
- Allow scrollback on C64, C128 and Plus/4 to use RAM (only if REU is unavailble on C64/C128). Enable with -sb:6|8|10|12 for different buffer sizes.
- Allow build mode 71 (for 1571 disk) on C64 and Plus/4.
- Empty keyboard buffer when game starts, so player doesn't accidentally miss an initial quote screen or something.
- Allow a non-standard boot file name on MEGA65 too (makes the game not auto-boot, which may be what you want.)
- Fixed bug that could cause z5+ games that use colour to print invisible text.
- Let player choose slower scrolling, key repeat mode and change device# for saves.
- Made scrolling flicker free and tear free except when using fastest scroll speed, on all but 80 col C128.
- Added soft scrolling as an option for C64 and for C128 in 40 col mode
- Games start in slow scroll mode if available, otherwise with scroll slowness = 1 (fastest mode that is flicker-free and tear-free).
Optimizations:
- Faster page copying on C64 and C128 with REU, by copying to the REU and then from it.
- REU Boost Mode for C64 + C128 - When REU is used for caching, use a vmem model better suited to REU. This is enabled by default. Build with -rb:0 to disable.
- Faster screen clearing on C128 in 80 col mode.
- Faster writing of characters to screen on C128 in 80 col mode.
- Faster writing of buffered text to screen (faster on all platforms, a lot faster on C128 in 80 col mode).
- Optimized scrolling (don't scroll colour memory for games that don't use colour, + general code optimization).
Bugfixes:
- Made scrollback buffer turn down CPU speed on C128 while performing REU operations.
- Fixed that an extra empty line was put in scrollback buffer when a newline character came just after a line ending in the last column.
- Ozmoo didn't change the default colours when switching between lightmode and darkmode, so attempts to use colour number 1 (default colour) would always use the default colour for lightmode.
- Backslash wasn't recognized when giving a path to sound files.
- Made interpreter, in addition to make.rb, recognize scenarios on C64 when dynamic memory is so large that REU Boost mode can't be engaged.
- Fixed bad value for blue colour on Plus/4.
================================================
Release 11.2: 10 August 2022
Bugfixes:
- Workaround for ROM bug on MEGA65 which caused last byte of dynamic memory not to be saved, and then this byte was corrupted on restore.
================================================
Release 11.1: 9 August 2022
Bugfixes:
- Fixed bug which caused disks to be unmounted when using scrollback mode on MEGA65.
================================================
Release 11: 9 August 2022
New/changed features:
- When restarting a game with sound (MEGA65 only) Ozmoo detects that the sounds have already been loaded, making restart a lot faster.
- Fixed PRINTSPEED mode which was broken. It now prints the # of instructions executed per second, twice per second.
- Player can now switch to darkmode by pressing F1 on the splash screen.
- Indentation on splash screen is now rounded up instead of down (looks better)
- New option -rd to reserve the entire directory track, i.e. don't store any story data there, typically to allow for directory art.
- Changed MEGA65 version to store entire zcode file as one file instead of one file for dynmem and one for statmem
- Documented MEGA65 specifics in tech report.
- Documented source files for sound support in tech report.
- Fixed minor problems in tech report.
- Renamed file names file_name.* to file-name.* to be more similar to other source files.
- Made MEGA65 builds use the actual boot file file name when restarting instead of "*" (all other targets already did).
- New scrollback buffer available on MEGA65, C64 with REU and C128 with REU. Enabled by default on MEGA65. Enable with -sb or -sb:1. Disable with -sb:0.
- Command history is now enabled by default on MEGA65.
- New make.rb syntax for command history: -ch or -ch:1 to enable it, using the default buffer size. -ch:0 to disable it.
- Option -re (check for runtime errors) is now enabled by default for MEGA65.
- New make.rb syntax for runtime errors: -re or -re:1 to turn it on. -re:0 to turn it off.
- New make.rb syntax for slow mode: -sl or -sl:1 to turn it on. -sl:0 to turn it off.
- Option -dd (disable darkmode) has been replaced by -dm or -dm:1 to enable darkmode or -dm:0 to disable it. Darkmode is still enabled by default, except for the game Beyond Zork, where it doesn't work well.
- Ozmoo used to ignore REU:s smaller than 512 KB. It can now use any REU size. The REU can be used to cache game data and/or scrollback buffer.
Optimizations:
- Faster way to jump to instruction code
- Made restart code less different for different targets, and shorter for Plus/4 and C128.
- Optimized multiplication for input interrupt intervals, thus removing the last use of the generic 16-bit unsigned multiplication routine.
- Removed the generic 16-bit unsigned multiplication routine mult16
Bugfixes:
- Fixed bug: Cursor wasn't showing during save/restore if a blinking cursor was used and it was off when save/restore started.
- Fixed bug: Extension is included in disk title.
- Fixed bug: Ozmoo would ask player to insert Boot/Story disk when restarting, even if it was already in the boot device.
- Fixed bug: Ozmoo would ask player to reinsert Boot/Story disk after save/restore, even though the Boot/Story disk isn't needed.
- Fixed bug: Ozmoo put the computer in a weird state after Quit, if a custom font was used.
- Fixed bug: Restart on MEGA65 only worked if game was loaded from device 8.
- Fixed bug: Save always chose 8 as default save device on MEGA65 - now it chooses the boot device.
- Don't print irrelevant info on dynmem blocks and vmem blocks for MEGA65 in make.rb.
- Default colours were not written to header on MEGA65.
- Incorrect colours were retrieved from the header when the game asked to set background or foreground colours to default.
- make.rb failed to autostart game (-s option) if the story file had a space character in it.
- Fixed bad handling of left and right cursor keys in history mode.
================================================
Release 10: 16 June 2022
New/changed features:
- Added support for sound effects for MEGA65, using wav or aiff files.
- Keep story file entirely in Attic RAM on MEGA65, to allow for any size of dynamic memory.
- Allow up to 64 stack pages, to allow for Inform 7 games on MEGA65.
- New option -dt:"title" to set the disk title.
- In multi-disk build modes, add " 1/2" etc to the disk title if there is room.
- make.rb option -u to enable "unsafe" mode to remove some runtime error checks has been removed and this "unsafe" mode is now the default. There is also a new option -re to enable all runtime error checks. The default mode is now the one generating the fastest interpreter.
- Improved the QUIT instruction (z_ins_quit) for MEGA65. Will not run autoboot.c65. Works on real HW
- Switched to storing story file as two SEQ files for MEGA65, instead of raw blocks. It is now possible to replace the game with another game as long as they use the same Z-code version. Place the first n bytes of the story file, where n is a word stored highbyte first at address 14 and 15 (decimal) of the story file, rounded up to the nearest multiple of 512 bytes, in the SEQ file "zcode-dyn". Place the rest of the story file in the SEQ file "zcode-stat". Note that the first byte of a Z-code file says which Z-code version it is.
Optimizations:
- Store story file and sound files with custom interleave scheme to get higher loading speed on real floppies on MEGA65.
- Only load dynamic memory when restarting, on MEGA65, for speed
- Faster multiplication in dictionary lookup and scrolling on C128 80 col.
- Don't include subroutine z_get_low_global_variable_value unless it's needed.
- Removed (a few lines of) superfluous code.
- Exclude unused code for showing time on statusline in z1-z2 build.
- Minor optimization in object tree code.
- Removed the need for game config information on disk for MEGA65.
Bugfixes:
- Fixed bug in statusline code that stopped building z3 games for MEGA65
- Fixed bug in parsing words with special characters in v1/v2.
- Fixed bug in printing characters not in alphabet table in v1/v2.
- Fix bug: wrong character was deleted when pressing backspace on C128 in 80 col mode.
- Changed so a blinking cursor starts in ON phase instead of OFF phase.
- Improved Plus/4 colour matching to C64 colours.
- Fixed a crash that sometimes occured when not preloading any blocks.
- Ozmoo now correctly patches Trinity R11, R12 and R15 to allow for play on narrow screens. (We had a patch for R15, but it made the copyright message on start screen come out garbled)
- Fixed bug with wrong string length for U1 command sent to disk, which made C64 games running in C64 mode on MEGA65 unable to boot.
- MEGA65 fast loading code has been disabled since it broke save/restore. After switching to optimized interleave scheme, loading is actually faster than with the old fastloader).
- Stopped make.rb from accepting nonsupported options regarding preloading vmem blocks on MEGA65.
================================================
Release 9: 28 Nov 2021
- Support for z1, z2 and z7 story files.
================================================
Release 8: 3 Oct 2021
- Fixed indexing bug in add_line_to_history (issue 36)
- Changed history to allow cursor up/down even if there is pending user input
- Removed unnecessary mapping of F1 and F8 for all languages in streams.asm
- Rearranged character translation tables, making the code faster and shorter
- Changed the mechansim for downcasing user input
- Stopped downcasing accented characters for read_char
- Improved error messages when giving bad z-code palette options
- Added support for caching story data in HyperRAM on MEGA65
- Made all page copying use DMA on MEGA65
- Changed so we access the Floppy Disk Controller directly on MEGA65 when
reading raw disk blocks, instead of using DOS commands, for speed.
- Added a 60 KB cache in chipmem for disk tracks, used when reading raw disk
blocks on MEGA65.
- Minor optimization in reading and writing global variables in non-SLOW mode
on C64 and MEGA65.
- Fixed bug which copied 256 bytes instead of 0 bytes from config info to
vmap_z_h (highbytes of vmem map) when game had no preloaded vmem blocks.
- Updated outdated debug code for TRACE_VM (Issue 39)
================================================
Release 7: 4 May 2021
- Officially added support for target MEGA65.
- Optimized search for properties, utilizing that they are stored in
descending order.
- Made z3 timeline print score and turns separately on 80 col.
- Changed MEGA65 build code in make.rb to use Ruby functionality instead of
Unix-specific command "cat".
- Updated font Clairsys Regular for German and Swedish, since there was an
incorrect character in them.
================================================
Release 6: Bugfix release (19 March 2021)
New/changed features:
- Updated to Exomizer 3.1.0.
- Changed so when Ozmoo is built without vmem (mode -P), SLOW mode is
automatically enabled, and no buffers are used - memory access under IO /ROM
is instead done with banking. This allows for bigger games to use this mode.
- Added player input colour parameters -ic and -dmic
- Optional input history implemented. Activate with -ch
- New version of Clairsys font, new localized versions of Clairsys.
- New font Clairsys Bold, including localized versions.
- Font folder has been reorganized.
Optimizations:
- Reordered and optimized code in the main loop to shave off some cycles,
based on how often different code paths are used.
- Changed jump in main loop using self-modifying code to avoid checking the
z_exe_mode for every instruction.
- Optimized reading of object property data.
- Cache y value in new ZP register (mempointer_y) in vmem routines.
- Optimized skip_bytes_z_address.
- Moved Z-code instruction jump table to where it will always be in the same
page, to avoid cycle penalty in lookup.
- Optimized lookup in vmem table to it's faster and so the lowbyte part
doesn't pass a page boundary.
- Made scrolling faster. A lot.
- Slight optimizations in test_attr, set_attr and clear_attr.
- Optimized calculation of object address
Fixed bugs:
- Warning with latest Acme due to typo ("Hex literal without any digits")
- Builds crashed if -t:c64 was specified, due to SUPPORT_REU being undefined.
- Blank out 40 col screen when decruncing using 2MHz on C128.
- Fixed bug which set colour incorrectly when clearing lines or entire screen
on Plus/4
- @read_char didn't reset the row counter for the MORE prompt.
- Score/Time in z3 statusline is now placed close to the right-hand border
even on 80 column screens.
- Fixed bug in calculate_propery_length_number (issue 29)
- Moved calls to before_dynmem_read and after_dynmem_read in objecttable.asm
around to make sure they're always executed.
- Changed so the number of cache pages is always set to 4 when building for
C128, since it has to be that size or Ozmoo crashes.
- Changed so the number of cache pages is set to 0, 1 or 2 (depending on splash
screen) when using build mode -P (which doesn't use the cache, but the splash
screen code is also located in the cache area).
- SLOW mode wasn't really working any more for platforms other than Plus/4.
Fixed.
- Toggling darkmode in 40 col mode in a z5 game on C128 would change all text
on screen to the new text colour, even text that had been printed with a
different colour. Fixed. (It's still like this for 80 col, because it's hard
to read the colour memory in 80 col)
================================================
Release 5: C128/Plus4 targets, Beyond Zork mode and bug fixes (19 December 2020)
New/changed features:
- Plus/4 support
- C128 support (both 40 and 80 column screens)
- make.rb will now patch Beyond Zork story file before writing it to disk
image(s) to make it work better on 40 column screen. Original story file
is left untouched.
- make.rb detects if Beyond Zork is built and changes the interpreter number
to say it's the Apple IIe interpreter, since this gives the best results on
Ozmoo.
- Interpreter number can now be customized with -in:N in make.rb
- Darkmode support is automatically removed when building Beyond Zork, since
it gets in the way of a built-in keyboard shortcut in the game, and the
game restores the colours even if you change them.
- Cursor colour now defaults to special value 1, meaning "same as current
foreground colour".
- Cursor blink rate is now 1-99 where 1 is the fastest
- New option -u to do less checks for runtime errors, making the interpreter
a little smaller and faster
- All produced disk images get names starting with the platform name
- New build mode -71, producing 1571 disk images. Can only be used for target
C128.
- Disk drives with device# 8-15 can now be used.
- Question to use REU can now only be answered by Y or N (any other key would
work like N before, making it easy to accidentally answer no).
- Added a progress bar when loading data into REU or memory at game start.
- Added re-use of game data in REU after a restart.
- make.rb can optionally fill up with more vmem blocks to load when using
preload optimization (commandline switch -cf).
- Changed format of output from preload optimization slightly to make more
data fit on screen. This means old preload optimization files need to be
modified to be used again.
- When game restarts, it now loads the file "story". This means restart won't
work if you rename the file.
- make.rb now prints a lot less, unless you use option -v (verbose).
- Data to be read from disk when game starts in a game using preload
optimization will now be read in the order it appears on disk, making load
time shorter and causing less drive noise.
- Changed so C128 interpreter uses interpreter# 7.
- Added option -b to not preload virtual memory blocks from disk when the
game starts. This makes the interpreter a little smaller. Option is
automatically enabled if make.rb is certain no preloading from disk will
be needed anyway.
Optimizations:
- Increased vmem block age resolution by 1 bit, which should lead to better
paging, espescially for z8 games which only had a five bit resolution.
- Centralized code to pick a free vmem buffer.
Fixed bugs:
- @tokenise could use arbitrary value for parameter "flag" if it wasn't
supplied.
- @tokenise didn't skip words the way it should if parameter "flag" was set.
(which stopped Beyond Zork from recognizing any commands).
- Added support for terminating character array ($2e/$2f in the header)
- Fixed bug with creating .d81 partition, which made it impossible to use
build mode 81 for small games ( non-dynamic memory < ~10KB).
- Commandline flag -r for make.rb to use reduced memory has been removed.
- Cursor timing code was broken
- Some characters could get a weird colour in the save slot listing.
- Fixed line breaks in the wrong place in games which started buffering in
window 0 while window 1 was selected, like AMFV.
================================================
Release 4: Configurable cursor, loadscreen, bugfixes (21 September 2020)
Special thanks to Eric Sherman for cursor patches and Steve Flintham for VM bug fix patches
New features:
- cursor shape, colour and blinking configuration settings (see documentation/colours.txt)
- make.rb support for additional target platforms (currently only -t:c64)
- Added a runtime error for division by zero.
- Option -i to add a loader showing a picture while the game loads.
- Option -if to add a loader showing a picture while the game loads + a slight border flicker while loading.
Optimizations:
- Slight optimization to printchar_buffered.
Fixed bugs:
- SuperCPU + REU combination bug avoided by deselecting REU when SuperCPU used
- Fixed bug in docs for colours settings.
- Fixed code that caused errors and warnings with new version of ACME
- Merged VM bug fixes from Steven Flintham
================================================
Release 3: Darkmode, splash screen, bugfixes, more languages (5 March 2020)
Features:
- Added a secondary, configurable, colour scheme called Darkmode, which the player can toggle with the F1 key.
Added a configurable and optional splash screen which is displayed just before the game starts. The game starts after a few seconds or when the user presses a key. By default it shows the Ozmoo version and the instruction to use F1 to access Darkmode.
- Time display on statusline in z3 games has been changed to AM/PM format and made to show 99:99 PM when the player doesn't hold the watch in Cutthroats.
- Added filtering of ZSCII characters which can't be handled in output. They will now be omitted in production builds, and printed as hex codes "/ff/" in Debug mode.
- Added fonts and character mappings for Italian, Danish, Spanish and French (in addition to German and Swedish which were already supported).
- Added modified versions of the system font for several languages.
- Updated several fonts.
- Added a build flag in code (SMALL_CODE) which eliminates most runtime error checks in order to save about 120 bytes.
- Put the story file first on a d81 disk image instead of the partition. This enabled Vice to load the right file when loading "*" even without true drive emulation.
Fixed bugs:
- A paragraph ending with a character in the last screen column would not get a newline.
- A custom alphabet could change the meaning of character 7 in alphabet A2. This character should always be a newline.
- @buffer_mode always flushed the print buffer, and printed the contents to the current window.
- Time display in z3 games with time on statusline has been bugfixed.
- Bug in @scan_table.
- Bug in @set_font.
- Numerous bugs in @print_table.
- Bugs in wordwrap after player input and when text buffering started in column > 0.
- Bug in @tokenise which could make it mistakenly think there was a user dictionary.
- Bug in quickindex, a shorthand list of recently used blocks in virtual memory, which made it think it had found a block if it found one with the same address modus 65536.
- make.rb crashed when building a three-disk game.
- Fixed spurious characters being output at start of game on an Ultimate 64.
- make.rb silently clipped a story file after 51 KB in single file build mode.
- @erase_line always erased the whole line, when it should erase from cursor.
- Cursor started at bottom of screen in z5 games, when it should start at top.
- Splitscreen in z3 games was working but the terp told the games it didn't support it, so the splitscreen sonar display in Seastalker didn't work.
- £ character wasn't mapped, so games could not display it and it wouldn't be recognized in player input.
- We used a graphic character to represent the backslash character. We have now edited all fonts included with Ozmoo to make it look like a real backslash character.
- Pipe character was incorrectly mapped for output to the graphic character that looks like a pipe character, even for languages where that character has been repurposed as an accented character. Pipe character has instead been mapped to another graphic character with a vertical bar but to the left instead of in the middle of the 8x8 matrix.
- We didn't have input mapping for backslash, underscore and pipe character so if you managed to type them at an input prompt, a game still couldn't recognize them.
- @print_table printed too many characters if it encountered an illegal ZSCII code, due to a bug in translate_zscii_to_petscii.
================================================
Release 2: REU support, .d81 support, bugfixes (5 June 2019)
Features:
- REU support: All the game data that would normally be retrieved from disk as needed can be cached in an REU instead. This also allows a user with a single disk drive and an REU to play a game built for a dual drive system.
- Added support for building a game to a 1581 disk image (d81), typically to be used with an emulator, or a real C64 with a 1581 drive or an SD2IEC.
- Changed MORE prompt to not cover any text.
- Added character mappings using the C64's graphics characters to show (approximations of) the regular ASCII characters that are part of ZSCII but not PETSCII.
- Added easily usable mappings and fonts for games in Swedish and German
- Ozmoo now shows a cursor while waiting for the user to press a key. This makes a cursor appear when filling in the form in Bureaucracy, where it was dearly missed.
- Upper window now auto-expands in z3, z5 and z8, if a game prints outside its limits. This makes a lot of not-so-well-behaved games work a lot better, with menus etc.
- Text in upper window is now truncated at right border instead of overflowing into the next line. This makes games which don't expect such a narrow screen work better.
- Text in upper window can be printed outside the left border. The text doesn't show, but the cursor moves as it should. This makes quote boxes and the like written for wider screens look as good as they can.
- Handling of upper window has been bugfixed and improved in many ways to work as best practice states.
- z3 programs can now split off an upper window without it being confused with the z3 statusline.
Optimizations:
- Improved algorithm for which virtual memory block is swapped out when space is needed. This means fewer blocks typically need to be loaded during a game session.
- Faster code to convert between PETSCII and ZSCII, which speeds up all printing and player input
- Removed superfluous parsing of dictionaries
- Fixed bug which made the vmem quick index (a list of the six last used block in virtual memory) useless
- Fixed bug in make.rb which made it preload some memory blocks even when explicitly asked not to. This made PREOPT less efficient.
- Fixed bug which made make.rb use more disk blocks than necessary for story data. The bugfix allows for slightly larger games to be built with Ozmoo in modes S1 and D2.
- Fixed bug which caused make.rb to fail when building a game over a certain size in mode D2, forcing the user to use D3 instead when D2 should be enough.
Bugfixes:
- Bug in @throw, which was rendering @catch/@throw useless
- Removed extra linebreak when printing text that ended in last column.
- Bug in PREOPT mode
- Bug in timed input
- Bug in @get_cursor which made it return rows and columns starting with 0,0 instead of 1,1 as the standard states
- Bug which would sometimes crash dictionary search when searching for a word not in the dictionary
- Bug in @restart which made it not work after the game had been saved or restored to a disk in the same drive as the boot disk.
- Bugs in make.rb where the program would not signal failure properly in many cases.
- Bug which caused some extra letters to be printed on the line below the statusline in many games.
Other improvements:
- Updated documentation
- Changed screen dimension units in header to characters rather than pixels. This works well with more games.
- Updated to latest version of Exomizer (3.0.2)
================================================
Release 1: first public release (28 December 2018)