[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re-engineered: Wizardry III, Legacy of Llylgamyn



Differences in versions of Wizardry III (Part 4 of xx)
------------------------------------------------------

MASTER Scenario (flip side of the BOOT diskette)

The BOOT side and the MASTER SCENARIO side both have WIZARDRY.CODE.
For the May version the same code exists on the BOOT side as the
SCENARIO side.  For the Aug version it is also the same on both sides
(but obviously different between May and Aug).

SCENARIO.MESGS is the same in the May version and the Aug version.

In the May version, the order of files in the directory and on the
disk is:

  WIZARDRY.CODE
  SCENARIO.DATA
  SCENARIO.MESGS

In the Aug version, the order is:

  WIZARDRY.CODE
  SCENARIO.MESGS
  SCENARIO.DATA

The boot sector (T$0 S$0) is different between the May version and the
Aug version.  The May version boot sector is identical to the boot
sector on UCSD Pascal 1.1 disk 1.  When the MASTER scenario is used to
boot the Apple, the boot code cannot find SYSTEM.APPLE so it displays:

  NO FILE SYSTEM.APPLE

The boot sector for Aug displays the following message:

  FLIP DISKETTE, THEN PRESS [RETURN]

Booting the MASTER SCENARIO side of the diskette can therefore easily
distinguish between the May and the Aug versions of Wizardry III.

Interesting note:  In the Aug version they fixed the "volume name" on
the BOOT side from KODBV2 to "LOLBOOT", yet on the MASTER SCENARIO
side, both the May and Aug versions have "KODBTTM" (Knight of
Diamonds).

Like the boot side, the MASTER SCENARIO side for Wizardry "steals"
sector 5 for it's own use.  There is a "serial number", or "disk
identifier" number, in the first 7 bytes (some code thinks it is 8
bytes!?) of the sector that are different from the  serial number on
the BOOT side.  When transferring characters to your DUPLICATE
scenario, these values are checked.  They are also checked when
backing up characters and when recovering characters.

When making a DUPLICATE scenario from the MASTER SCENARIO, T$0 S$5 is
copied and then modified.  (See SSB4BL5 in WIZUTIL).  The first 7
bytes are a "serial number".  The bytes at offsets $A, $B, and $C are
modified as follows:

  $A is set to ($B MOD 255) + 1
  $B is cleared to 0.
  $C is set to a RANDOM value.

I don't think the values in $A, $B, or $C are otherwise used.  I
suppose if you make another DUPLICATE scenario, but use this first
copy then the value in the new DUPLICATE scenario will have different
values.

Note:  Most of the code is extremely well written, but then there is
code like the following:

  1049   8   11:3   198             SB10 := SSB4BL5[ 11] + 1;
  1050   8   11:3   208             IF SB10 = 256 THEN
  1051   8   11:4   217               SB10 := 1;
  1052   8   11:3   221             SSB4BL5[ 10] := SB10;
  1053   8   11:3   229             SSB4BL5[ 11] :=  0;
  1054   8   11:3   235             SSB4BL5[ 12] := (SSB4BL5[ 12] +
RANDNUM) MOD 256

I think lines 1049 to 1052 can be written as:
    SSB4BL5[ 10] := (SSB4BL5[ 11] MOD 255) + 1;

And line 1054 (assuming RANDNUM truly is random):
    SSB4BL5[ 12] := RANDNUM MOD 256;

In the May version, the first 14 bytes on T$0 S$5 are:
	06 30 30 30 33 32 30 00   F000320@
	00 00 00 01 6A 00

In the Aug version, these values are:
        06 30 30 30 30 30 39 00   F000009@
        00 00 00 01 52 00

The rest of the values in sector 5 are not used, but have random
residual garbage.  May and Aug have about 43 bytes that don't compare.


SCENARIO.DATA differences
=========================

There are several different sections to SCENARIO.DATA (OBJECTS,
ENEMIES, MAZE, REWARDS, etc.)  I've written some software to display
all the records in each section for each of the data attributes.  In
the following descriptions, the heading refer to record names in the
source code.

OBJECTS (in SCENARIO.DATA)
-------
                       CHGCHANC
  SOPIC PHILTRE  May      0
                 Aug     80

    In the Aug version, SOPIC PHILTRE has an 80% chance to change into
a BROKEN ITEM.

                       CHANGETO
  DIALKO AMULET  May     41
                 Aug      0

    In the Aug version, DIALKO AMULET will change to a BROKEN ITEM
instead of PLATE ARMOR+1 (still at 25% chance).

                       SPELLPWR
  BOOK OF DEATH  May      0
                 Aug     47

    Now BOOK OF DEATH has MABADI associated with it instead of
NOTHING.
    (Similar to BOOK OF LIFE having DI (43) associated with it.)


ENEMIES (in SCENARIO.DATA)
-------
                       CLASS
  GARIAN RAIDER  May     0
                 Aug     3

                       EXPAMT.LOW
  GARIAN PRIEST  May     150
                 Aug     100

                       TEAMPERC
  MAN AT ARMS    May      20
                 Aug      30
    TeamPercent was increased, therefore there is a greater chance to
be paired with a GARIAN RAIDER.


                       HPREC.LEVEL  HPREC.HPFAC  HPREC.HPMINADD  AC
  NINJA          May       3            4            3            4
                 Aug       2            6            4            5

     HPREC is used to calculate Hit Points.

Each enemy has 2 reward value "packages" associated with it (REWARD
and REWARD2).  Gold and "found" items are based on these reward
packages.  The following had their REWARD2 value changed from package
19 to package 17.

  LEPRECHAUN
  UNICORN
  CRUSADER
  PIXIE
  CENTAUR

                       EXPAMT.LOW    MAGSPELS
  PIXIE          May      300           1
                          350           2

                       HPREC.HPMINADD
  MASTER NINJA   May      0
                 Aug      7

The following had REWARD2 changed from 23 to 21:

  CRUSADER LORD
  FAERIE
  SERAPH
  T'IEN LUNG
  ROC

                        EXPAMT.LOW
  CRUSADER LORD  May       600
                 Aug       700

                        HPREC.HPFAC   HPREC.HPMINADD
  FAERIE         May       10             0
                 Aug        8             8

                        MAGSPELS
  ELVEN MAGE     May        4
                 Aug        5

                        RECSN   3A 3B 3C
  SAMURAI        May        2    0  0  0
                 Aug        3    1  6  4

                        EXPAMT.LOW
  WIGHT          May      1000
                 Aug      3000

                        HPREC.HPFAC  HPREC.HPMINADD
  ARCHDEMON      May       10           10
                 Aug        2           60

                        HPREC.LEVEL  HPREC.HPFAC  HPREC.HPMINADD
  CYCLOPS        May       10           10            0
                 Aug        8            3           60

                        HPREC.HPFAC  HPREC.HPMINADD
  ARCHANGEL      May       10           10
                 Aug        2           60

                        TEAMPERC
  PO'LE          May       -1
                 Aug        0

                        TEAMPERC
  L'KBRETH       May       -1
                 Aug        0


MAZE (in SCENARIO.DATA)
----

For level 1 of the maze, the ENMYCALC table was changed slightly.
This table determines the type of enemies you will encounter under
different circumstances.  The values for MINENEMY for records 1 and 2
were altered:

  May:
        ENMYCALC  MINENEMY MULTWORS WORSE01 RANGE0N PERCWORS
           1         2        0       0        5       -1
           2         7        0       0        5       -1
           3         7        0       0        5       -1

  May:
        ENMYCALC  MINENEMY MULTWORS WORSE01 RANGE0N PERCWORS
           1         7        0       0        5       -1
           2         2        0       0        5       -1
           3         7        0       0        5       -1


REWARDS (in SCENARIO.DATA)
-------

There are 24 different "reward packages".  These determine if there is
a trap, what kind of trap, the gold reward, and any item reward.  I
will only list a few of the changes here in detail.  The following
records were changed:

  0, 1, 3, 4, 5, 6, 7, 8, 9, 13, 15, 17, 21

Each reward package can have up to 9 (?) different sub-records
associated with it.  Some of the changes they made might not be quite
correct.  For example, for reward 0 they changed the values for the
second set of rewards from zeroes to normal type values, but did not
bump the REWRDCNT value that determines the number of rewards in the
package.  A sub-record has these fields:

  REWDPERC BITEM TRIES AVEAMT MINADD MULTX TRIES2 AVEAMT2 MINADD2
  REWDPERC BITEM MININDX MFACTOR MAXTIMES RANGE PERCBIGR

  (Line 1 above describes the sub-record when BITEM is 0, otherwise
line 2 describes the sub-record.)

Also for reward package 15, they decremented the REWRDCNT field from 2
to 1, but did not change the values for the second sub-record to
zeroes (to be consistent).

I will show the changes for reward package 9.

  May:
    REWRDCNT REWDPERC BITEM TRIES AVEAMT MINADD MULTX TRIES2 AVEAMT2
MINADD2
    6        100      0     6     10     40     5     3      1       3
             REWDPERC BITEM MININDX MFACTOR MAXTIMES RANGE PERCBIGR
             100      1     31      10      2        10    50
              50      1     61      10      2        10    25
              25      1     74      10      2        10    30
              75      1     53       0      0         1    -1
              75      1     53       0      0         1    -1
  Aug:
    REWRDCNT REWDPERC BITEM TRIES AVEAMT MINADD MULTX TRIES2 AVEAMT2
MINADD2
    6        100      0     6     10     40     5     3      1       3
             REWDPERC BITEM MININDX MFACTOR MAXTIMES RANGE PERCBIGR
              90      1     30      12      2        12    50
              80      1     54      10      2        10    50
              50      1     74      10      2        10    30
              40      1     84      10      2        10    50
              50      1     62      10      2        10    35


This pretty much completes the description of differences between the
May and Aug versions of Wizardry III.

I think the next thing I'll tackle is trying to display the records
that make up SCENARIO.DATA.  For example, all the OBJECTS and their
associated record values, all the ENEMIES and their records, the MAZE
description (Walls, Hidden, where fights are likely to occur...).

--Tommy