Releases: johanberntsson/ozmoo
Releases · johanberntsson/ozmoo
Release 14.36
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
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 filename of the Z-code file used 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
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
Bugfixes:
- Fixed screen colour initialization issues
- Stopped using ti_variable (RTC value in RAM) 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
New/changed features:
- 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
- Changed savefile prefix (all platforms), Zcode filename and font filename (X16 only), to make sure boot file is listed first on X16
- Made a 255 byte command history buffer the default on X16, just like on MEGA65
- Border colour is now set on X16 (for screen modes which have a border)
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
- Using a custom font on X16 made the font stay after QUIT
Release 14.7
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
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.
- Made game saves generic between MEGA65 and X16, and between builds using different versions and features of Ozmoo on these two platforms. 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. (But save games made with Ozmoo before Release 14 can NOT be used with release 14+ builds)
- 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.
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
New features:
- A script to test a number of builds (tests/test_builds.rb), to check that bugfixes and new features don't break Ozmoo when using certain combinations of command line parameters. This is mainly useful for the developers of Ozmoo.
Bugfixes:
- 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.
- make.rb now prints a warning if undo support was requested but game is z5-z8 and doesn't support undo.
Release 13.1
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
New/changed features:
- Undo support added: Player can undo a turn in z5+ games (using UNDO command) and in z1-z4 games (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.