Releases: johanberntsson/ozmoo
Releases · johanberntsson/ozmoo
Release 14.48
Release 14.47
New/changed features:
- 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. See the manual for details.
- 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.
- Updated the manual section on dependencies.
Optimizations:
- Commented out a few lines of code meant for debug in zmachine.asm
Bugfixes:
- Overwriting save files had been broken for many months, but we didn't know. Fixed it now.
- Fixed broken PRNG initialization for X16.
- 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.
- make.rb will now stop user from accidentally specifying two different story files.
- 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.
Release 14.40
New/changed features:
- 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.
- 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.
Optimizations:
- Changed reading a byte at PC on X16 from a subroutine to a macro, making Hollywood Hijinx about 3% faster.
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.