Skip to content

Releases: johanberntsson/ozmoo

Release 13

17 Jul 12:29
Compare
Choose a tag to compare

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.

Release 12.2

26 Dec 09:52
Compare
Choose a tag to compare

New/changed features:

  • Allow C64 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 Dec 14:36
Compare
Choose a tag to compare

Release 12.1

Bugfixes:

  • If the player started a z1 or z2 game built with scrollback support, and chose to use the REU for caching story data, scrollback data would overwrite story data in the REU, leading to crashes and/or other weird behaviour.

Release 12

20 Dec 09:07
Compare
Choose a tag to compare

New/changed features:

  • Added soft scrolling as an option for C64 and for C128 in 40 col mode
  • Made scrolling flicker free and tear free except when using fastest scroll speed, on all but 80 col C128.
  • Let player choose slower scrolling, key repeat mode and change device# for saves.
  • Games start in slow scroll mode if available, otherwise with scroll slowness = 1 (fastest mode that is flicker-free and tear-free).
  • 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.)

Optimizations:

  • 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 page copying on C64 and C128 with REU, by copying to the REU and then from it.
  • 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:

  • Fixed bug that could cause z5+ games that use colour to print invisible text.
  • 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 Aug 17:51
Compare
Choose a tag to compare

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

09 Aug 13:15
Compare
Choose a tag to compare

Bugfixes:

  • Fixed bug which caused disks / disk images to be unmounted when using scrollback mode on MEGA65.

Release 11

08 Aug 20:16
Compare
Choose a tag to compare

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

16 Jun 01:19
Compare
Choose a tag to compare

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

28 Nov 12:15
Compare
Choose a tag to compare

New features:

  • Support for Z-machine version 1, 2 and 7 story files (z1/z2/z7).

Release 8: Make MEGA65 terp fast

02 Oct 22:52
Compare
Choose a tag to compare

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)