forked from johanberntsson/ozmoo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreleasenotes.txt
324 lines (284 loc) · 20.2 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
RELEASE NOTES
Release 11:
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.
Optimizations:
- Faster way to jump to instructions
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.
================================================
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)