Skip to content

Releases: johanberntsson/ozmoo

Release 15.5

02 Mar 21:02

Choose a tag to compare

New/changed functionality:

  • Changed statusline (z1-z3) to show "99:999" or "12:34 PM" for 32 column screen, nothing for 20-22 column screen, "Sc: 99 Mv:999" for 40 column screen.

Optimizations:

  • Slight optimizations in code for virtual memory optimization.
  • Optimized statusline (z1-z3) so it doesn't print spaces where score/moves will be printed anyway.
  • Turned subroutines into macros for performance in text.asm: convert_zchar_to_char, get_next_zchar, init_get_zchar, was_last_zchar.
  • Optimized convert_zchar_to_char and translate_zscii_to_petscii.
  • Reversed numbering of chars in a zchar triplet when decoding strings, so first char is # 2 and last char is # 0, as this makes for shorter, faster code.

Bugfixes:

  • Fixed bug: On C128, if there was a page in the vmem cache, which belongs to the vmem block we decide to throw out, and the block was below $d000 in bank 1, the page index wasn't updated to reflect that the page became invalid, which could lead to the program crashing.
  • 40 column screen was showing streaks of garbage during initial loading of game data, when launching game in 80 column mode on C128, if not caching to REU.

Release 15

22 Feb 10:28

Choose a tag to compare

New/changed features:

  • Added option for continuous virtual memory optimization on C64 and C128 - switch little used vmem blocks in unbanked RAM for much used vmem blocks in banked RAM, for performance. Enabled by default. Can be disabled with -vo:0. Cost 430 bytes on C64, 640 bytes on C128. Note: this has no effect when an REU is used for caching game data.
  • Updated tech report (and to a lesser extent, the manual).
  • Added tests/memcheck_c64.rb and memcheck_c128.rb to check a memory dump for virtual memory corruption.

Optimizations:

  • Use REU for fast memory copying even if REU caching not active, if REU is 256+ KB, on C64 and on C128 in 80 column mode.
  • Use a macro instead of a subroutine to read data at PC on C128 (like we already do on C64), for performance.

Bugfixes:

  • Fixed very old bug: If REU was too small to cache game, Undo was blocked from using REU.
  • Changed some old error messages in make.rb, referring to command line options which have been renamed.

Release 14.64

19 Jan 17:16

Choose a tag to compare

Optimizations:

  • Reuse object start address in object table, if same object is used twice in a row.
  • Minor optimization affecting all opcodes that read or write property values.

Bugfixes:

  • Fixed: If the last line on a screenful of text ended with a character in the rightmost column and then a newline character, the MORE prompt was printed on the next line, thus making the top line scroll off screen when it shouldn't.

Release 14.60

20 Dec 18:13

Choose a tag to compare

New/changed features:

  • A loader image can now be added for C128 builds as well. The image should be in Koala Multicolor format (same as for C64) and is shown on the 40-column display until the player presses a key or 17 seconds pass - then the game loads.
  • Solutions for Calypso (release 8, serial 250827), PunyInform Advent (release 1-7, serial 241124, 250704, 250809, 251011, 251113, 251126, 251205), and Inform 6 Advent (release 9, serial 060321) added to benchmarks.json, allowing Ozmoo to auto-play the games for benchmarking purposes.
  • Renamed example game advent.z3 to advent_zil.z3
  • Added example game advent_punyinform.z5

Bugfixes:

  • Added missing file to repo: asm/walkthrough.tpl
  • Queueing of @sound_effect commands fired after the same keyboard input, now works properly, as required by Lurking Horror (Issue #78). Each sound is played at least one full repetition.
  • Fixed: Asking to play a new sound while one was playing, caused the repeat and routine arguments of the new sound to be used for the currently playing sound. (Issue #77)
  • @sound_effect with effect = 4 (finish with) was ignored. It is now correctly treated as effect = 3 (stop).
  • @sound_effect with number = 0 and effect = 3 (stop) or 4 (finish with) produced a beep instead of stopping the current sound. Fixed. (Issue #76)
  • Fixed old method name in tests/test_builds.rb
  • Fixed typos in comments in source code (Issue #75)

Release 14.56

06 Aug 14:32

Choose a tag to compare

New/changed features:

  • Added support for showing a loader image on MEGA65 (Type: IFF)
  • Added information on max call depth to VIEW_STACK_RECORDS mode.

Bugfixes:

  • Fixed bug in calculation of save slot count for non-VM builds on C64, Plus/4 and MEGA65.
  • Init dynmem_pointer on MEGA65 before splash screen, as it's used if player changes to darkmode while on splash screen, and this would cause the interpreter to break on a MEGA65 with a newer ROM version.

Release 14.51

20 Feb 18:06

Choose a tag to compare

New/changed features:

  • Added option to write an Ozmoo signature into the game header - target platform (1-5), minor version#, "OZ", at $38-$3b. Can be controlled with -sig[:0|1|noninfocom]. Default is noninfocom, meaning it's written if the serial number starts with 0-7 or 9.
  • Added option -username:"value" to write a username into the game header. E.g. to make the debug verb "flush 33" work in Hollywood Hijinx, you can do -username:TOMAS

Bugfixes:

  • Fixed corrupt story file in RAM after restart command or a reset, on X16.

Release 14.49

26 Jan 17:16

Choose a tag to compare

Bugfixes:

  • If a game was built with a scrollback buffer in RAM, less than 12 KB in size, on C64 or C128, and the RAM buffer was used when playing (because the player lacked an REU or had insufficient REU space) , the game would sometimes crash soon after exiting scrollback viewing mode.

Release 14.48

01 Dec 10:53

Choose a tag to compare

Bug fixes:

  • Fixed bug which stopped sound games from building.
  • Fixed test cases in tests folder which hadn't been updated to new way of specifying colours.

Release 14.47

30 Nov 23:46

Choose a tag to compare

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

28 Sep 18:20

Choose a tag to compare

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.