Colouring Large Monsters - HoraceAndTheSpider/Bloodwych-68k GitHub Wiki

NOTE: ALL FILE OFFSETS ARE USING THE AMIGA BINARY FROM SPS439 ALL MEMORY LOCATIONS ARE HAVING LOADED THE AMIGA BINARY FROM SPS439

The intention of this section is to provide an understanding of how the larger non-humanoid monsters (crabs, dragons etc) are coloured within the game. This is defined by four particular items of data:

-The “Grade” Offset Value -The “Grade” Limit

  • The Master Monster Palette
  • The "Grade" Colour Selections

Definition of "Grade"

The documentation will refer to a "grade" of each monster type - this is a unique colour for each monster type, which changes with each higher level of the monster. This differs from a level because several levels (beyond the lower/upper bounds) will not result in a change of colour.

The Grade Offset Value

Each type of Monster has a unique value defined within the game code, to ensure the colour grades start at a particular level, and acting as a lower bound. E.g. if this value is set to "4" then the first colour-grade occurs at Level 4, the second at level 5, the third as level 6. All values lower (1-3) will use the same first colour grade as a level 4 monster.

Default values are as follows;

Summon ($64/$65): TBC Beholder ($66): TBC Behemoth ($67): TBC Crab ($68): TBC Large Dragon ($69): TBC Small Dragon ($6A): TBC

Crystal Guardian ($6B) * Entropy ($6C) *

The “Grade” Limit

The grade 'limit' value is also contained directly within the game code, along with a 'maximum grade number' (equal to the limit value, minus 1) which the code re-sets the grade to.

These number determine the number of grades for all large monster types, as this is non-monster specific. By default, the game has 8 colour grades available for each monster, and a "reset" value of 7 is used. (Since 'zero' is classed as one of the 8 grades)

These value may be lowered without any problem, but if raised, will require the "Grade" Colour Selections (see below) to be relocated, and changes made to the code which locates that data.

The locations of the necessary instructions containing this single-byte value are given below, and the + value should be added if you wish to edit the single byte containing the value only.

Memory Location: CMPI.B Instruction located at ($9EA0) + 3 (limit value) File Location: [$9B1F]

Memory Location: MOVEQ Instruction located at ($9EA6) + 1 (limit value minus 1)
File Location: [$9B23]

The Master Monster Palettes:

The main monster palette is a list of colour-sets available to us. Each set is comprised of 4 palette numbers as bytes. There are 13 normally available, although the final value appears to be unused. For each monster type, 8 of these are selected. With each level raised for the monster, the next colour set is used. It should be noted that each monster has an ‘offset’ value however, so grading may not be started until a particular level is reached.

The colour-set “-1” is used to define an illusion, but is has to be address-seeked separately.

Regular Large Monsters

Memory Location: LEA @ ($9EAE) + 2 File Location: [$9B2C]

Illusions

Memory Location: LEA @ ($9CE6) + 2
File Location: [$9962]

Set         Original Values     Description
01:        00 00 07 08  … Illusions / Blue-Black
00:        00 03 04 0E … Grey
01:        00 08 04 0E  … Light Blue
02:        00 05 06 0E … Light Green
03:        00 09 0A 0B … Brownish Red
04:        00 09 0C 0B … Red
05:        00 0A 0B 0D  … Light Orange
06:        00 0B 0D 0E  … Yellowy White
07:        00 0C 0B 0D …. Golden Orange
08:        00 02 03 04  … Darker grey
09:        00 08 04 0D   …. Light blue /yellow
0A:        00 05 06 0D  … Green/Yellow
0B:        00 07 08 04  … Darker blue/grey
0C:        00 07 08 0D …  Blue/Yellow ?? 

((BOS New palette Location: $5C438))

The "Grade" Colour Selections

A set of 8 bytes is kept for each monster, which selects the colour-set to be used for each grade.

((BOS selections Location: $5C3E4))

**Summon ** Colour selection File location: [$9A34] Colour selection Memory location: ($9Db8) LEA @ … ($9CF2) + 2 File Location: [$9970]

Beholder Colour selection File location: [$9E28] Colour selection memory location: ($A1AC) LEA @ … ($A18C) + 2 File Location: [$9E0A]

**Behemoth ** Colour selection File location: [$A1AA] Colour selection memory location: ($A52E) LEA @ … ($A512) + 2 File Location: [$A190]

**Crab ** Colour selection File location: [$9B9C] Colour selection memory location: ($9F20) LEA @ … ($9F02) + 2 File Location: [$9B80]

**Dragon ** Colour selection File location: [$A022] Colour selection memory location: ($A3A6) LEA @ … ($A37C) + 2 File Location: [$9FFA]