Releases: johanberntsson/ozmoo
Releases · johanberntsson/ozmoo
Release 11
New/changed features:
- 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.
- When restarting a game with sound (MEGA65 only) Ozmoo detects that the sounds have already been loaded, making restart a lot faster.
- Player can now switch to darkmode by pressing F1 on the splash screen.
- New option -rd to reserve the entire directory track, i.e. don't store any story data there, typically to allow for directory art.
- 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.
- New make.rb syntax for command history: -ch or -ch:1 to enable it, using the default buffer size. -ch:0 to disable it.
- Command history is now enabled by default on MEGA65.
- Changed MEGA65 version to store entire zcode file as one file instead of one file for dynmem and one for statmem
- The MEGA65 version now has no config information stored on disk. This, together with the zcode file being stored in a regular file, means that you can copy a game by just copying the files on the disk. However, the zcode file is stored with an optimized interleave pattern which yields the best loading times when loading from a real floppy - if you make a file copy, you lose that. Copying a floppy image / floppy to a floppy image / floppy with the BACKUP command on the MEGA65 retains the interleave pattern.
- Ozmoo used to hope an REU was big enough to hold the game data. It can now use any REU size - it calculates the size and figures out what fits. The REU can be used to cache game data and/or scrollback buffer.
- Fixed PRINTSPEED mode which was broken. It now prints the # of instructions executed per second, twice per second.
- Indentation on splash screen is now rounded up instead of down (looks better)
- Documented MEGA65 specifics in tech report.
- Documented source files for sound support in tech report.
- Fixed minor problems in tech report.
- Renamed source code 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).
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 was 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
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: Support for z1, z2 and z7
New features:
- Support for Z-machine version 1, 2 and 7 story files (z1/z2/z7).
Release 8: Make MEGA65 terp fast
New/change features:
- Changed history to allow cursor up/down even if there is pending user input
- Improved error messages when giving bad z-code palette options
Optimizations:
- Added support for caching story data in HyperRAM 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.
- Made all page copying use DMA on MEGA65
- 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
- Minor optimization in reading and writing global variables in non-SLOW mode on C64 and MEGA65.
Bugfixes:
- Fixed indexing bug in add_line_to_history (issue 36)
- Stopped downcasing accented characters for read_char
- 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: MEGA65 support
New/change features:
- Target MEGA65 is now supported.
- Made z3 timeline print score and moves separately on 80 column screens.
Optimizations:
- Optimized search for properties, utilizing that they are stored in descending order.
Bugfixes:
- Updated font Clairsys Regular for German and Swedish, since there was an incorrect character in them.
Release 6: Input history, input colours, font updates
New/changed features:
- Optional input history implemented. Activate with -ch
- Added player input colour parameters -ic and -dmic
- New version of Clairsys font, new localized versions of Clairsys.
- New font Clairsys Bold, including localized versions.
- Font folder has been reorganized.
- 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 on every access. This allows for bigger games to use this mode.
- Updated to Exomizer 3.1.0.
Optimizations:
- Made scrolling faster. A lot.
- Reordered and optimized code in the main loop to shave off some cycles, based on how often different code paths are used.
- Optimized calculation of object address
- 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.
- Slight optimizations in test_attr, set_attr and clear_attr.
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.2: Fixed -t:c64 builds crashing
- Fixed bug which crashed builds if you explicitly set target to C64 ( -t:c64 ) when invoking make.rb
Release 5: C128 and Plus/4 targets, Beyond Zork mode, preload updates and bug fixes
New/changed features:
- C128 support (both 40 and 80 column screens)
- Plus/4 support (also C16 expanded to 64 KB RAM)
- 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.
- All produced disk images get names starting with the platform name
- 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.
- 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).
- Interpreter number can now be customized with -in:N in make.rb
- Changed so C128 interpreter uses interpreter# 7 by default.
- 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.
- 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.
- make.rb can optionally fill up with more vmem blocks to load when using preload optimization (commandline switch -cf).
- 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.
- 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
- Commandline flag -r for make.rb to use reduced memory has been removed.
- 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).
- 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.
- 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.
- 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.
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).
- 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 5.1: Fix an ugly warning when building for C128
Bugfixes:
- Acme (newest version only) threw a warning when building for C128.
Release 4: Configurable cursor, loadscreen, bugfixes
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 buffered printing (routine printchar_buffered).
Fixed bugs:
- SuperCPU + REU combination bug avoided by deselecting REU when SuperCPU used
- Fixed bug in docs for colour settings
- Fixed code that caused errors and warnings with new version of ACME
- Merged bug fixes in virtual memory code from Steven Flintham