Re: 128bitvector

From: Anton Graham (
Date: 03/22/01

Jons scrawled the following:
> How about 128bitvector with OasisOLC and ascii pfile? Are there anything
> that I should change to make them work with 128bitvector? If yes, how?

My solution was to implement bitvector_t as an unsigned long long (64 bits
on an ix86 running Linux).  This is sort of a bridge between the 128 bit
patch and the implementation of additional flags.  I did, hewever, run into
a few problems:

  1) asciiflag_conv() and sprintascii() need some fiddling to get past 52 bits

  2) printf under gcc 2.95 doesn't deal well with printing long longs, so I
     had to convert each place a bitvector was written to a file to ASCII.
     (Question: Why doesn't OASIS do this anyhow?  It seems easier to read.)

  3) 1 << x doesn't work for values of x > 31 (the compiler assumes size int).
     I worked around this by using BIT << x where bit is defined as 1LL.

This solution has the advantage over the 128 bit patch of being completely
compatible with stock world files (no conversion needed).  I have not yet
run out of flags in my initial 64 bits, and since all of my files are ASCII
I can add the additional flags later should they be needed.

As far as things that would need to be changed in OASIS and ASCII pfiles,
the 128 bit patch gets its extra 96 bits from three additional 32 bit
values.  So, you'll have to modify both to save all four bitvectors for each
flag.  There is a guide to doing this for Oasis in the olc directory of the
ftp site.

Anton Graham aka Dionysus                     Implementor of Etruria
Death is only the beginning....               -- Not Open to the Public --

   | FAQ: |
   | Archives: |

This archive was generated by hypermail 2b30 : 12/04/01 PST