Skip to content

Commit

Permalink
Updated documentation for upcoming release
Browse files Browse the repository at this point in the history
  • Loading branch information
johanberntsson committed Mar 27, 2024
1 parent a629898 commit c9b9a0f
Show file tree
Hide file tree
Showing 12 changed files with 44 additions and 55 deletions.
36 changes: 12 additions & 24 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,23 +1,10 @@
all: x16-test
all: xx16

x16-test:
ruby make.rb -s test.z5 -t:x16 -v

mega65-test:
ruby make.rb -s test.z5 -t:mega65 -v

x16-dragontroll:
ruby make.rb -s examples/dragontroll.z5 -t:x16 -v

x16:
ruby make.rb -s examples/dejavu.z3 -t:x16 -v
tail --bytes=+8193 x16_dejavu/dump.bin > x16_dejavu/dump2.bin
cmp x16_dejavu/dump2.bin x16_dejavu/zcode
#acme --cpu 65c02 -o testx16.bin --format cbm -l temp/acme_labels.txt testx16.asm
# Need F12 to enter the debugger
#grep testscreen temp/acme_labels.txt
#grep s_printchar temp/acme_labels.txt
#x16-emulator/x16emu -prg testx16.bin -scale 2 -dump B -zeroram -debug -run
xx16:
#ruby make.rb games/infocom/sherlock.z5 -s -ch:100 -t:x16 -v
ruby make.rb -df:0 -ch:100 -s examples/dejavu.z3 -t:x16 -v
#ruby make.rb -ch:100 -s games/temple.z5 -t:x16 -v
#ruby make.rb -ch:100 -s examples/dragontroll.z5 -t:x16 -v

mega65:
ruby make.rb -t:mega65 ./games/infocom/sherlock.z5 -u -s -ch:100 -sb:0 -dm:0 -v
Expand All @@ -41,7 +28,7 @@ mega65:
#ruby make.rb -s infocom/zork1-invclues-r52-s871125.z5 -t:mega65
#ruby make.rb -s ./games/infocom/amfvUnprotected.z4 -t:mega65
#ruby make.rb -s infocom/beyondzork.z5 -81 -t:mega65
#ruby make.rb -s -P examples/dragontroll.z5 -t:mega65
#ruby make.rb -s -ch examples/dragontroll.z5 -t:mega65
#ruby make.rb -s examples/dejavu.z3 -t:mega65
#ruby make.rb games/eas.z5 -s -t:mega65
#ruby make.rb -rc:7=11,8=15 -dc:7:8 infocom/planetfall.z5 -s -t:mega65
Expand All @@ -54,22 +41,23 @@ c128:
#ruby make.rb -s ./games/infocom/amfvUnprotected.z4 -t:c128
#ruby make.rb -s infocom/zork1-invclues-r52-s871125.z5 -t:c128
#ruby make.rb -s infocom/beyondzork.z5 -t:c128
#ruby make.rb -s examples/dragontroll.z5 -t:c128
ruby make.rb -s -ch examples/dragontroll.z5 -t:c128
#ruby make.rb -s examples/dejavu.z3 -t:c128
#ruby make.rb -s games/infocom/borderzone.z5 -t:c128 -u
#ruby make.rb -cb:5 -s games/infocom/hollywood.z3 -t:c128
#ruby make.rb -ch -s games/infocom/sherlock.z5 -t:c128 -u
ruby make.rb examples/minizork.z3 -t:c128 -u:r -s
#ruby make.rb examples/minizork.z3 -t:c128 -u:r -s
#ruby make.rb -ch -s games/infocom/hollywood.z3 -t:c128 -sb:6 -u

c64:
ruby make.rb -s examples/dejavu.z3
#ruby make.rb examples/Aventyr.z5 -f fonts/sv/ClairsysOzmoo-Bold-SV.fnt -cm:sv -ch -s -81
#ruby make.rb -t:c64 games/infocom/hollywood.z3 -s -ch:100 -sb:0 -dm:0 -smooth
#ruby make.rb custard.z7 -81 -s
#ruby make.rb green.z2 -ch:20 -u -s
#ruby make.rb infocom/minizork.z3 -ch:20 -s -smooth
#ruby make.rb infocom/minizork.z3 -v -i loaderpic.kla
ruby make.rb examples/minizork.z3 -u -s
#ruby make.rb examples/minizork.z3 -u -s
#ruby make.rb -v games/drakmagi.z5
#ruby make.rb -ch -s infocom/zork1-invclues-r52-s871125.z5
#ruby make.rb games/infocom/planetfall.z5 -s -sw:0
Expand Down Expand Up @@ -105,4 +93,4 @@ plus4:
#ruby make.rb -s games/infocom/borderzone.z5 -t:plus4 -81

clean:
rm -f *d64 *d71 *d81
rm -rf *d64 *d71 *d81 x16_*
15 changes: 0 additions & 15 deletions asm/ozmoo.asm
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
}

!ifdef TARGET_X16 {
; X16_DEBUG = 1
TARGET_MEGA65_OR_X16 = 1
NO_VMEM_CACHE = 1
TARGET_ASSIGNED = 1
Expand All @@ -31,9 +30,6 @@
}
; SKIP_BUFFER = 1 ; This is for SLOW mode and non-VMEM mode, which we know we have
}
!ifdef X16_DEBUG {
DEBUG = 1
}
!ifdef TARGET_MEGA65 {
TARGET_MEGA65_OR_X16 = 1
TARGET_ASSIGNED = 1
Expand Down Expand Up @@ -1790,17 +1786,6 @@ z_init
; sty alphabet_table + 1
; Copy z_pc from header
!ifdef cX16_DEBUG {
sta mem_temp
; lda #0
; sta z_operand_value_low_arr
; jsr z_ins_buffer_mode
jsr print_following_string
!text "x16 debug",13,0
jsr printchar_flush
- jmp -
lda mem_temp
}
ldy #header_initial_pc
jsr read_header_word
pha
Expand Down
6 changes: 3 additions & 3 deletions documentation/manual/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ all:
pandoc --metadata-file=custom-player.yaml --from=markdown+multiline_tables -H custom.tex player_manual.md -o player_manual.pdf
rm manual2.md
rm techreport2.md
mv manual.pdf ../ozmoo_13.pdf
mv techreport.pdf ../techreport_13.pdf
mv player_manual.pdf ../player_manual_13.pdf
mv manual.pdf ../ozmoo_14.pdf
mv techreport.pdf ../techreport_14.pdf
mv player_manual.pdf ../player_manual_14.pdf
2 changes: 1 addition & 1 deletion documentation/manual/custom.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ include-before: |
_A Z-machine interpreter for the Commodore 64_ and similar computers
Release 13: 18 July 2023
Release 14: 28 March 2024
 
Expand Down
20 changes: 17 additions & 3 deletions documentation/manual/manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Overview

Ozmoo is a a redistributable interpreter of Z-code games - Infocom games and games written in Inform, ZIL or Dialog. Ozmoo can be used for new interactive fiction works on the Commodore 64, Commodore 128, Commodore Plus/4 and MEGA65. There is also a fork of Ozmoo for the Acorn computers (BBC Micro and other variants). While the old Infocom interpreters are still available, the license situation is not clear so it is risky to use in new work, especially commercial. Furthermore, some of the newer Inform-based games use features which the old Infocom interpreters can't handle. Ozmoo is written to provide a free alternative that doesn't have these risks and limitations.
Ozmoo is a a redistributable interpreter of Z-code games - Infocom games and games written in Inform, ZIL or Dialog. Ozmoo can be used for new interactive fiction works on the Commodore 64, Commodore 128, Commodore Plus/4, Commander X16 and MEGA65. There is also a fork of Ozmoo for the Acorn computers (BBC Micro and other variants). While the old Infocom interpreters are still available, the license situation is not clear so it is risky to use in new work, especially commercial. Furthermore, some of the newer Inform-based games use features which the old Infocom interpreters can't handle. Ozmoo is written to provide a free alternative that doesn't have these risks and limitations.

## Features

Expand Down Expand Up @@ -48,6 +48,7 @@ You need to install:
- Ruby (Tested with 2.4.2, but any 2.4 version should work fine)
- The Vice emulator to test C64, C128 and Plus/4 builds on virtual hardware
- The xemu-xmega65 emulator if you want to test MEGA65 builds on virtual hardware
- The Commander X16 emulator test X16 builds on virtual hardware

#### Windows

Expand Down Expand Up @@ -127,6 +128,7 @@ Ozmoo was originally written for the Commodore 64, but has been adapted for some
| -t:c128 | Build Ozmoo for the Commodore 128 |
| -t:plus4 | Build Ozmoo for the Commodore Plus/4 |
| -t:mega65 | Build Ozmoo for the MEGA65 |
| -t:x16 | Build Ozmoo for the Commander X16 |

Note that not all build options are supported for every platform. If an option isn't supported, the make.rb script will stop with an appropriate error message, and no Ozmoo files will be produced.

Expand All @@ -148,6 +150,10 @@ The Commodore Plus/4 version makes use of the simplified memory map compared to

The MEGA65 version is very similar to the C64 version of Ozmoo. It runs in C64 mode on the MEGA65, but uses the 80 column screen mode, extended sound support, higher clockspeed, and the extra RAM of the MEGA65. There is no limitation on dynamic memory size. The only supported build mode is -81. A loader image is currently not supported. Undo is enabled by default for games that support it.

## X16

The X16 version is using the extended RAM fully to preload the story file by default. It also adapts automatically to the screen resoultion used when starting the game.

## Other targets

A fork of Ozmoo targeting the Acorn computers (BBC Micro and other variants) can be found at https://github.com/ZornsLemma/ozmoo/tree/acorn. Note that this fork is using a different build script called make-acorn.py.
Expand Down Expand Up @@ -261,9 +267,13 @@ Disks used:

- Boot / Story disk

### Modes requiring an SD2IEC:
### Archive Modes

To be added at a later date. An SD2IEC mode could enable full 512 KB story sizes.
ZIP: _Compressed archive with game and story data_

Any story size: Full preloading. Full amount of RAM available for virtual memory system.

Creates a ZIP archive containing a folder with two files, the game executable and the zcode story file. This is currently only used for X16 targets.

# Splash Screen

Expand Down Expand Up @@ -500,6 +510,10 @@ Smooth scrolling is automatically activated at program startup if the support wa

# Miscellaneous options

## Option -df:n

-df:n provides additional control to the ZIP build mode. ZIP mode creates a folder, adding the game binary and the zcode story file to it, and then compressing the folder into the final zip archive. -df controls what will happen with this temporary folder. The accepted values are 0 (create zip archive and keep the folder), 1 (delete the folder if zip archive created successfully) and f ('force'/always delete the folder). The default is 0.

## Option -sp:n

-sp:n is used to set the size of the Z-machine stack, in pages (1 page = 256 bytes). The default value is 4. Many games, especially ones from Infocom, can be run with just two pages of stack. The main reason for reducing this to two pages would be to squeeze in a slightly bigger game in build mode P, or to build a game where dynamic memory is slightly too big with the standard settings.
Expand Down
11 changes: 9 additions & 2 deletions documentation/manual/techreport.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ These source files are located in the asm dictory. The table also shows the most
| | |
| picloader.asm | code to show a picture while reading the story file |
| | |
| reu.asm | implements the Ram Expansion Unit interface for C64 and C128, and an interface to Attic RAM on MEGA65 |
| reu.asm | implements the Ram Expansion Unit interface for C64 and C128, banked RAM for the X16, and an interface to Attic RAM on MEGA65 |
| | |
| screen.asm | printing routines |
| | |
Expand Down Expand Up @@ -87,6 +87,8 @@ These source files are located in the asm dictory. The table also shows the most
| | |
| vdc.asm | low level routines to write text on the C128 in 80 column mode |
| | |
| vera.asm | low level routines to write text on the X16 |
| | |
| vmem.asm | virtual memory routines, and corresponding routines for non-vmem builds |
| | |
| zaddress.asm | routines to access data (i.e. not program code) in the Z-machine memory space |
Expand Down Expand Up @@ -143,7 +145,10 @@ The standard text mode needs 80 x 60 x 2 = 9600 bytes, starting from \$1b000, si

| **Address range** | **KB** | **Usage** |
| -- | - | ---- |
| \$00000-\$7ffff | 512 | Story file |
| \$00000-\$02000 | 8 | Reserved space |
| \$02000-\$7ffff | 504 | Story file |

The extended memory is mapped into \$a000-\$bfff, so the memory is accessible in 8KB chunks. Note that the first 8KB is used by the kernal and DOS routines, so we load the story file from \$02000.

## MEGA65 builds

Expand Down Expand Up @@ -193,6 +198,8 @@ Screenkernal is started by calling s_init. Internally it keeps track of the curs

For the Commodore 64 version the characters are stored directly in the video memory, and the colour in the colour memory. The Commodore 128 version detects if 40 or 80 columns mode is used while running the program. If 40 characters are used, then it works like the Commodore 64 version. But if 80 columns are used, then the C128's Video Display Controller chip (VDC) is used. Instead of writing directly into the video memory, character output, scrolling and other screen commands are sent by VDC registers. The file vdc.asm contains functions that make this communication easier.

The X16 is using a separate chip called VERA for text output, similar to VDC for the C128. The file vdc.asm contains low-level functions for putting characters to the screen.

The Plus/4 and Commodore 128 in 80 column mode doesn't use the same palette as the Commodore 64. Mapping tables (plus4_vic_colours and vdc_vic_colours) are used to assign C64 colours to their closest equivalents on these platforms.

# The stack
Expand Down
Binary file removed documentation/ozmoo_13.pdf
Binary file not shown.
Binary file added documentation/ozmoo_14.pdf
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion make.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2144,7 +2144,7 @@ def print_usage
puts " [-dt:\"text\"] [-rd] [-as(a|w) <soundpath>] "
puts " [-u[:0|1|r]] [-df[:0|1|f]] <storyfile>"
puts " -t: specify target machine. Available targets are c64 (default), c128, plus4, mega65 and x16."
puts " -S1|-S2|-D2|-D3|-71|-81|-P: build mode. Defaults to S1 (71 for C128, 81 for MEGA65). See docs."
puts " -S1|-S2|-D2|-D3|-71|-81|-P|-ZIP: build mode. Defaults to S1 (71 for C128, 81 for MEGA65, ZIP for X16). See docs."
puts " -v: Verbose mode. Print as much details as possible about what make.rb is doing."
puts " -p: preload a maximum of n virtual memory blocks to make game faster at start."
puts " -b: only preload virtual memory blocks that can be included in the boot file."
Expand Down
7 changes: 1 addition & 6 deletions releasenotes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Release 14: 26 March 2024

New/changed features:
- Added target platform Commander X16 (use switch -t:x16)
- Added build mode -ZIP, for X16 targets.
- 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.
- Made game saves generic between MEGA65 and X16, and between builds using different versions and features of Ozmoo. 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.
Expand All @@ -23,12 +24,6 @@ Bugfixes:
- 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.7:

New/changed features:
- Commander X16 support

================================================
Release 13.6: 17 November 2023

Expand Down

0 comments on commit c9b9a0f

Please sign in to comment.