intfiction.org

The Interactive Fiction Community Forum
It is currently Sun Feb 17, 2019 4:03 pm

All times are UTC - 6 hours [ DST ]




Post new topic Reply to topic  [ 44 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next
Author Message
PostPosted: Mon Dec 03, 2018 2:57 pm 
Offline

Joined: Wed Jun 17, 2009 5:29 am
Posts: 24
Project update:

We have put a lot of work into Ozmoo lately. Things that have happened since howtophil posted an archive with Infocom games built with Ozmoo:

* Numerous bugs have been fixed
* Printing routines can now sometimes put more text on a line than before
* It is possible to build games larger than one 1541 disk, fitting them on two or three disks
* Ozmoo has become quite a bit faster
* Save/restore has been implemented
* An option to embed a custom font with a game has been added
* Support for custom alphabet tables
* Support for custom character mappings, allowing for games with accented characters

There are still bugs. We think all z3 games should be fully playable. Borderzone has lots of problems and can't really be played.

If you want to try some games using Ozmoo, you can download this little package, consisting of the z3 version of Curses (with a custom font) and z5 game The Temple (with the normal font):

http://microheaven.com/ozmoo/Ozmoo_samp ... -12-03.zip

The project homepage is still at https://github.com/johanberntsson/ozmoo


Top
 Profile Send private message  
Reply with quote  
PostPosted: Mon Dec 03, 2018 5:35 pm 
Offline
User avatar

Joined: Sun May 21, 2017 4:59 pm
Posts: 328
Location: Michigan
Nice!

_________________
~~~
My ebooks on Amazon
My ebooks on Smashwords


Top
 Profile Send private message  
Reply with quote  
PostPosted: Wed Dec 19, 2018 6:14 pm 
Offline

Joined: Wed Jun 17, 2009 5:29 am
Posts: 24
Ozmoo should soon be ready for release.

You can all help us focus our efforts by answering a very short poll:

https://goo.gl/forms/AvHABSapn4rTFDxU2

Thank you!


Top
 Profile Send private message  
Reply with quote  
PostPosted: Thu Dec 20, 2018 2:16 pm 
Offline
User avatar

Joined: Sun May 21, 2017 4:59 pm
Posts: 328
Location: Michigan
Looking forward to it :)

_________________
~~~
My ebooks on Amazon
My ebooks on Smashwords


Top
 Profile Send private message  
Reply with quote  
PostPosted: Thu Dec 27, 2018 3:41 pm 
Offline

Joined: Wed Jun 17, 2009 5:29 am
Posts: 24
We now consider Ozmoo to be ready for real-world use. Brief summary of what it is:

Ozmoo is a brand new Z-code interpreter for the Commodore 64. Ozmoo comes with a Ruby make script which bundles the interpreter with a game file and places the resulting game on one or more D64 disk images. The game can then be played on a real C64 with a 1541 disk drive or a replacement for the 1541, like an SD2IEC, 1541 Ultimate, Pi 1541 etc, or using a C64 emulator. Smaller games can be played on a system without a disk drive.

Ozmoo has the license GPL 2.0. This means anyone can use it for free, redistribute it, use it in games which they give away or sell etc. If you distribute a modified version of Ozmoo, you will need to publish the modifications. Ozmoo was written from scratch in 2018 and does not contain any of the interpreter code which was distributed with Infocom games and owned by Infocom.

Some things Ozmoo supports:

* Z-code version 3, 4, 5 and 8.
* Timed input, as used in Borderzone.
* Named saves (Use a blank, formatted disk for saves, in the same drive as the game, or in a different drive)
* Customizable colours.
* Embedding a custom font (character set). One font is included with the distribution, but you can also supply your own font or, of course, use the system font.
* The interpreter and as much of the story file as possible is stored in compressed form in a single file, which means loading is quick if the player has any kind of fastload cart.
* The person bundling the game with Ozmoo can optimize which parts of the story are loaded with the initial file, to minimize disk reads at the beginning of the game.
* A small game (story file < about 50 KB) can be stored as a single file which does not require a disk drive to play. Save/restore does require a disk drive.
* A game up to about 170 KB can be stored on a single 1541 disk side, and played on a system with a single 1541 drive.
* A game up to about 190 KB can be stored on two 1541 disk sides, and played on a system with a single 1541 drive.
* Ozmoo fully supports using extended tracks, raising these limits by about 20 KB. However, not all emulators support extended tracks, and neither does any version of SD2IEC.
* Larger games can be built and stored on two or three disk sides, but they will require a system with dual 1541 drives to play.
* Custom alphabet table (typically used for non-English games)
* Custom character mappings (Needed to play non-English games because accented characters don't exist in PETSCII)

Please note: The Commodore 64 has a 1 MHz 8-bit processor and 64 KB of RAM. Games using a lot of CPU and/or running massive amounts of code on each turn will not be fast enough to be any fun. Infocom games are fast. Inform 5 and 6 games are usually fast enough. ZIL games should be fine. Inform 7 games aren't really playable.

Go to Ozmoo's homepage for more information and downloads: https://github.com/johanberntsson/ozmoo


Top
 Profile Send private message  
Reply with quote  
PostPosted: Thu Dec 27, 2018 5:04 pm 
Offline
User avatar

Joined: Sun May 21, 2017 4:59 pm
Posts: 328
Location: Michigan
This is fantastic!

_________________
~~~
My ebooks on Amazon
My ebooks on Smashwords


Top
 Profile Send private message  
Reply with quote  
PostPosted: Fri Dec 28, 2018 3:54 am 
Offline

Joined: Mon Dec 30, 2013 4:55 am
Posts: 122
howtophil wrote:
This is fantastic!
Yes, it is!

I try to embed a font character set (cpm850-08) for French accents, but I don't understand the positions of characters in the table.
In clairsys.fnt, the first characters are @, a, b

***update***
I found this:
https://www.c64-wiki.com/wiki/File:Zeichensatz-c64-poke1k.jpg
Is this the right table? But there are only 128 characters.

***update***
All right, I think I get it. I turned clairsys.fnt into a bitmap image to understand how it works.
http://auraes.free.fr/tmp/clairsys.png


Top
 Profile Send private message  
Reply with quote  
PostPosted: Fri Dec 28, 2018 12:18 pm 
Offline

Joined: Mon Dec 30, 2013 4:55 am
Posts: 122
The program displays the printable characters.
Code:
[ Main   i key;
   for (i=32 : i<=126 : i++) {
      print (char)i, " ", i, "^";
   }
   for (i=155 : i<=251 : i++) {
      print (char)i, " ", i, "^";
   }
   @read_char 1 ->key;
];
Code:
ruby make.rb -P test.z5
x64 test.d64
In DM4 p. 520: "Characters 155 to 251 are configurable using the directive Zcharacter." But characters 156 to 159, seem to change the color of the characters.
And some characters, in lower table, are different from the DM4 lower ZSCII character set.


Top
 Profile Send private message  
Reply with quote  
PostPosted: Fri Dec 28, 2018 4:46 pm 
Offline

Joined: Wed Jun 17, 2009 5:29 am
Posts: 24
It's great to see someone is trying out the possibilities that Ozmoo opens up for non-English games.

The Z-machine uses ZSCII to encode characters. The C64 uses PETSCII. In order to create a Z-code interpreter on a C64, we need to create a mapping between these encodings. This is done in code in two places:

streams.asm: translate_zscii_to_petscii
text.asm: translate_petscii_to_zscii

One basic part of the mapping is taking into account that all letters, both lower case and upper case, move around between ZSCII and PETSCII. This happens in code in the subroutines mentioned above. What these subroutines also do, is look at the three mapping tables (character_translation_table_*) which are defined at the beginning of streams.asm. There is one table for codes that only need to be mapped for player input (PETSCII -> ZSCII), one for codes that need to be mapped both for input and output, and one for codes that need to be mapped only for text output (ZSCII -> PETSCII).

Now, you want to start using accented characters.

Since the C64's character encoding (PETSCII) doesn't have any accented characters at all, you need to replace some of the characters it does have with ones that you would like it to have, This is done by adding to the mapping tables AND replacing them in your custom character set. There is already (optional) code there to make it work for the Swedish characters. This code uses the standard substitutions which Commodore themselves used for the Swedish version of the C64:

] is replaced with å
[ is replaced with ä
£ is replaced with ö
(And similar codes for uppercase letters)

Since we're using the same replacements that Commodore used, a game using this mod will work perfectly with a Swedish C64. When you type "ö" on the keyboard, you see "ö" on the screen, and it is encoded as a ZSCII "ö".

In fact, while you are at it, you may want to map the capital letters to the corresponding lowercase letters for input (but to capital letters for output), or player input won't be recognized if the player types a capital accented letter. I haven't done it this way for the Swedish letters, since I didn't think of it until now. Maybe skip this step for now, and try to get the basic stuff to work first.

You can PM me if you have further problems.

BTW: Which characters didn't match in the lower table?


Top
 Profile Send private message  
Reply with quote  
PostPosted: Fri Dec 28, 2018 4:52 pm 
Offline

Joined: Wed Jun 17, 2009 5:29 am
Posts: 24
BTW: This is the best tool I've found to edit C64 character sets: https://csdb.dk/release/?id=110 . It's for Windows. It's really old, but works fine under Windows 10.

And yes, the C64 only has 128 characters in a character set, plus 128 more which are inverted versions of the first 128.

The C64 character ROM has two character sets in it, each consisting of 256 characters:

1: Uppercase letters, digits, special characters (!#$%<>=., etc) and graphic characters.

2: Uppercase letters, lowercase letters, digits, special characters and (fewer) graphic characters.

Ozmoo always uses character set 2.

If you have a copy of a C64 character ROM, you can extract the second half (2048 bytes) save it, edit it if you like, save it as a file and use it as a font file with Ozmoo.


Top
 Profile Send private message  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 44 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next

All times are UTC - 6 hours [ DST ]


Who is online

Users browsing this forum: Bing [Bot] and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group