Eye of the Beholder Maze Information Format

From ModdingWiki
Jump to navigation Jump to search
Edge of map!

! Wikify formatting

! Add infobox


.dro files are used in localized versions such as the spanish one. .dro files are non-compressed .inf files. .elo files are used in some localized versions such as the german one. .elo files are non-compressed .inf files without header.

General Each maze consist of a .maz file and an accompaning .inf file. This document describes the .inf file and how it relates to the .maz files. The .inf files are standard CPS files. However the german and spanish versions are uncompressed. This document assumes that you've depacked the .inf files using for instance uncps.exe.

Header

struct Monster
{
    unsigned char  index;
    unsigned char  levelType;
    unsigned short pos;
    unsigned char  subpos;
    unsigned char  direction;
    unsigned char  type;
    unsigned char  picture;
    unsigned char  phase;
    unsigned char  pause;
    unsigned short weapon;
    unsigned short pocket_item;
}

Position gives the x and y values. It's lower 5 bits are the y coordinate value and the next 5 bits are the x coordinate value.

    x_pos = (pos >> 5) & 0x1F;
    y_pos = pos & 0x1F;

Values sign must be confirmed.

struct Inf
{
    unsigned short triggersOffset;
    char           mazeName[12];
    char           vmpVcnName[12];
    char           paletteName[12];
    unsigned char  unknown[9];
    unsigned char  monster1CompressionMethod;
    unsigned char  monster1Name[12];
    unsigned char  monster2CompressionMethod;
    unsigned char  monster2Name[12];
    unsigned char  unknown[5];
    Monster        monsters[30];
    unsigned short nbrDecCommands;
    DecCommand     commands[nbrDecCommands];
}


Decoration data After the header comes the decoration data. It's loaded as a command sequence. The first unsigned short determines number of commands to execute. After that follows the first command code. Each command code is one byte.

Command codes

0xec (Load overlay image picture + overlay image rectangle data)

    graphics data name, 12 bytes containing a null terminated string. Points to a .cps file containg wall graphics data.
    rectangles data name, 12 bytes containing a null terminated string. Points to a .dat file containing rectangular data that point into the graphics data.


0xfb (Define wall mapping)

struct WallMapping
{
   unsigned char wallMappingIndex; /* This is the index used by the .maz file. */
   unsigned char wallType; /* Index to what backdrop wall type that is being used. */
   unsigned char decorationID; /* Index to and optional overlay decoration image in
                                  the DecorationData.decorations array in the
                                  [[eob.dat|.dat]] files. */
   unsigned char unknownFlags1;
   unsigned char unknownFlags2;
};

Event data After the decoration data comes a sequence of event data. It's also loaded as a command sequence. Each command code is one byte.

Command codes

0xff (Set wall)
0xfe (Change wall)
0xfd (Open door)
0xfc (Close coor)
0xfb (Create monster)
0xfa (Teleport)
0xf9 (Steal small item)
0xf8 (Message)
0xf7 (Set flag)
0xf6 (Sound)
0xf5 (Clear flag)
0xf4 (Heal)
0xf3 (Damage)
0xf2 (Jump)
0xf1 (End code)
0xf0 (Return)
0xef (Call)
0xee (Conditions)
0xed (Item consume)
0xec (Change level)
0xeb (Give experience)
0xea (New item)
0xe9 (Launcher)
0xe8 (Turn)
0xe7 (Identify all items)
0xe6 (Encounters)
0xe5 (Wait)
0xe4 (Update screen)
0xe3 (Text menu)
0xe2 (Special window pictures)

Each command code is executed using a parsing function for that specific code. Number of bytes following each code is very specific to what command it is.

0xff (Set wall)

unsigned char subcode=nextUnsignedChar();
 
switch (subcode)
{
   case 0xf7: // Set complete maze block (all four walls)
      unsigned short position=nextUnsignedShort();
      unsigned char wallMappingIndex=nextUnsignedChar();
      for (int i=0; i<4; i++)
         maze[position][i]=wallMappingIndex;
   break;
 
   case 0xe9; // Change one wall
      unsigned short position=nextUnsignedShort();
      unsigned char wallMappingIndex=nextUnsignedChar();
      unsigned char direction=nextUnsignedChar();
      maze[position][direction]=wallMappingIndex;
   break;
 
   case 0xed; // Turn party
      Party.facing = nextUnsignedChar();
};


0xfe (Change wall)

unsigned char subcode=nextUnsignedChar();
 
switch (subcode)
{
   case 0xf7: //Flip four sides
      unsigned short position=nextUnsignedShort();
      unsigned char sourceWallMappingIndex=nextUnsignedChar();
      unsigned char destinationWallMappingIndex=nextUnsignedChar();
      for (int i=0; i<4; i++)
      {
         if (maze[position][i] == sourceWallMappingIndex)
            maze[position][i] = destinationWallMappingIndex;
      }
   break;
 
   case 0xe9;// Change one wall
      unsigned short position=nextUnsignedShort();
      unsigned char direction=nextUnsignedChar();
      unsigned char sourceWallMappingIndex=nextUnsignedChar();
      unsigned char destinationWallMappingIndex=nextUnsignedChar();
      if (maze[position][direction] == sourceWallMappingIndex)
         maze[position][direction] = destinationWallMappingIndex;
   break;
 
   case 0xea; // Unknown
      unsigned short unknown=nextUnsigndShort();
   break;
};


0xfb (Monster Creation)

char MoNo;
char MoTime;
short int position;
char subpos;
char facing;
char type;
char pic;
char phase;
char pause;
short int weapon; /* Item Number */
short int pocket; /* Dropped on Monster killed */

0xf6 (Sound)

char SoundId;
short int position;

0xf6 (Sound) in the demo version of the EOB1

char SoundId;

All other commands, except 0xf6, are identical in all EOB1 versions.


Far from all command codes have been documented here, however most of it have already been reverse engineered. Feel free to check the source code for the script decompiler: Script Decompiler 2 at the tools section.

.inf dump with comments
EOB1 INF file resourced for assembler 68000 (To See here for all the INF files
EOB-InfFile-Asm.lha
EOB-InfFile-Asm.lha

    Details
    Download
    91 KB


 BOPT uo+
 BOPT ue-
 BOPT ua+
 OUTPUT LEVEL1.INF.dec
 ;Source Created by "EOB Langage File ReSourcerINF" Beta
 ;A Tool done by CFou! on June 2006
Start
Hunk0:
 dc.b Hunk3-Start,(Hunk3-Start)/$100 ; dc.w $B10A
 ; Maze name
 dc.b 'level1.maz',0,0
 ; VCN/VMP name
 dc.b 'brick',0,'.maz',0,0
 ; Palette name
 dc.b 'brick',0,'.maz',0,0
_0026:
 ; Nb of doors and doorknobs
 dc.w $0000,$FF03
_002A:
 ; Max monster / tdiff etc
 dc.b $00,$00,$00,$00,$00
_002F:
 ; Number of procedure for extraction of monster picture
 dc.b $01
 ; Name Of Monster pic CPS file
 dc.b 'kobold',0,'maz',0,0
_003C:
 ; Number of procedure for extraction of monster picture
 dc.b $00
 ; Name Of Monster pic CPS file
 dc.b 'leech',0,0,'maz',0,0
_0049:
 ; Timer0 | Timer 1| Timerdiff (in Ticks)
 dc.b $00,$19
 ; Timer0 | Timer 1| Timerdiff
 dc.b $01,$23
 ; End of Timer
 dc.b $FF
_004E:
 ; Monster Description X 30: Start point and so on
 dc.b $01,$00,$14,$01,$04,$02,$00,$00,$06,$00,$04,$00,$00,$00
 dc.b $02,$00,$F4,$00,$04,$02,$00,$00,$06,$00,$00,$00,$04,$00
 dc.b $03,$00,$15,$01,$04,$02,$00,$00,$06,$00,$04,$00,$00,$00
 dc.b $04,$00,$F5,$00,$04,$02,$00,$00,$06,$00,$04,$00,$37,$00
 dc.b $05,$00,$B4,$01,$00,$00,$00,$00,$04,$00,$04,$00,$00,$00
 dc.b $06,$00,$B4,$01,$01,$00,$00,$00,$04,$00,$00,$00,$04,$00
 dc.b $07,$00,$B4,$01,$02,$00,$00,$00,$04,$00,$04,$00,$00,$00
 dc.b $08,$00,$B4,$01,$03,$00,$00,$00,$04,$00,$04,$00,$00,$00
 dc.b $09,$00,$4A,$02,$04,$01,$00,$00,$05,$00,$00,$00,$04,$00
 dc.b $0A,$00,$4B,$02,$04,$03,$00,$00,$05,$00,$04,$00,$00,$00
 dc.b $0B,$00,$4C,$02,$04,$01,$00,$00,$05,$00,$04,$00,$00,$00
 dc.b $0C,$00,$2C,$03,$02,$02,$00,$00,$04,$00,$04,$00,$00,$00
 dc.b $0D,$00,$2C,$03,$03,$02,$00,$00,$04,$00,$04,$00,$00,$00
 dc.b $0E,$00,$59,$02,$02,$02,$00,$00,$04,$00,$00,$00,$04,$00
 dc.b $0F,$00,$59,$02,$03,$02,$00,$00,$04,$00,$04,$00,$00,$00
 dc.b $10,$00,$6B,$02,$04,$01,$00,$00,$06,$00,$04,$00,$3B,$00
 dc.b $11,$00,$2C,$02,$04,$02,$00,$00,$06,$00,$00,$00,$00,$00
 dc.b $12,$00,$8F,$01,$04,$02,$00,$00,$01,$00,$00,$00,$00,$00
 dc.b $13,$01,$86,$03,$04,$00,$01,$01,$01,$00,$00,$00,$00,$00
 dc.b $14,$01,$66,$03,$04,$00,$01,$01,$01,$00,$00,$00,$00,$00
 dc.b $15,$01,$45,$03,$04,$01,$01,$01,$05,$00,$00,$00,$00,$00
 dc.b $16,$01,$2A,$03,$04,$00,$01,$01,$01,$00,$00,$00,$00,$00
 dc.b $17,$01,$E8,$02,$04,$01,$01,$01,$01,$00,$00,$00,$00,$00
 dc.b $18,$01,$EF,$02,$04,$03,$01,$01,$01,$00,$00,$00,$00,$00
 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
 dc.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
_01F2:
Hunk1:
 ; Nb of $EC & $FB command Hunk 1
 dc.w $1B00
 ; Command $EC & $FB
 dc.b $EC
 dc.b 'brick1',0,'maz',0,0
 dc.b 'brick.dat',0,0,0
 dc.b $FB,$27,$01,$00,$03,$04
 dc.b $FB,$28,$01,$01,$04,$04
 dc.b $FB,$3E,$01,$17,$02,$04
 dc.b $FB,$2B,$01,$28,$02,$04
 dc.b $FB,$3F,$01,$16,$02,$04
 dc.b $FB,$32,$01,$04,$02,$04
 dc.b $FB,$41,$01,$1A,$02,$04
 dc.b $FB,$2F,$01,$30,$02,$04
 dc.b $FB,$2C,$01,$2F,$02,$04
 dc.b $FB,$2A,$01,$31,$02,$04
 dc.b $EC
 dc.b 'brick2',0,'at',0,0,0
 dc.b 'brick.dat',0,0,0
 dc.b $FB,$1A,$00,$1C,$00,$03
 dc.b $FB,$17,$04,$21,$00,$05
 dc.b $FB,$18,$05,$22,$00,$05
 dc.b $FB,$1C,$00,$1D,$00,$03
 dc.b $FB,$19,$00,$FF,$00,$07
 dc.b $FB,$3C,$01,$24,$03,$04
 dc.b $FB,$3D,$01,$25,$04,$04
 dc.b $FB,$37,$01,$1E,$03,$04
 dc.b $FB,$38,$01,$1F,$04,$04
 dc.b $FB,$1D,$01,$20,$0A,$84
 dc.b $FB,$33,$01,$26,$02,$04
 dc.b $FB,$3A,$01,$23,$00,$04
 dc.b $EC
 dc.b 'brick3',0,'at',0,0,0
 dc.b 'brick.dat',0,0,0
 dc.b $FB,$45,$00,$27,$02,$04
 dc.b $FB,$31,$00,$2D,$02,$04
 ;$1B Command Resourced
Hunk2:
 ; New Section
_02CF: dc.b $EE,$E0,$01
_02D2: dc.b $FF,$EE,_035A-Start,(_035A-Start)/$100 ; dc.b $5A,$03
_02D6: dc.b $EE,$ED,$01
_02D9: dc.b $FF,$EE,_0308-Start,(_0308-Start)/$100 ; dc.b $08,$03
_02DD: dc.b $EE,$EF,$1F,$00
_02E1: dc.b $FF,$EE,_02EA-Start,(_02EA-Start)/$100 ; dc.b $EA,$02
_02E5: dc.b $E6,$0A
_02E7: dc.b $F7,$EF,$1F
_02EA: dc.b $F8,"going down...",0,$05,$00
_02FB: dc.b $F6,$4F,$00,$00
_02FF: dc.b $EC,$E5,$02,$F3,$02,$01
_0305: dc.b $F2,_035A-Start,(_035A-Start)/$100 ; dc.b $5A,$03
_0308: dc.b $F8,"you can't go that way.",0,$0F,$00
_0322: dc.b $F6,$1D,$00,$00
_0326: dc.b $EE,$01,$00
_0329: dc.b $FF,$EE,_0333-Start,(_0333-Start)/$100 ; dc.b $33,$03
_032D: dc.b $FA,$E8,$00,$00,$12,$03
_0333: dc.b $EE,$01,$01
_0336: dc.b $FF,$EE,_0340-Start,(_0340-Start)/$100 ; dc.b $40,$03
_033A: dc.b $FA,$E8,$00,$00,$F1,$02
_0340: dc.b $EE,$01,$02
_0343: dc.b $FF,$EE,_034D-Start,(_034D-Start)/$100 ; dc.b $4D,$03
_0347: dc.b $FA,$E8,$00,$00,$D2,$02
_034D: dc.b $EE,$01,$03
_0350: dc.b $FF,$EE,_035A-Start,(_035A-Start)/$100 ; dc.b $5A,$03
_0354: dc.b $FA,$E8,$00,$00,$F3,$02
_035A: dc.b $EE,$E0,$04
_035D: dc.b $FF,$EE,_0395-Start,(_0395-Start)/$100 ; dc.b $95,$03
_0361: dc.b $EE,$01,$00
_0364: dc.b $FF,$EE,_036E-Start,(_036E-Start)/$100 ; dc.b $6E,$03
_0368: dc.b $FA,$F5,$F2,$02,$12,$03
_036E: dc.b $EE,$01,$01
_0371: dc.b $FF,$EE,_037B-Start,(_037B-Start)/$100 ; dc.b $7B,$03
_0375: dc.b $FA,$F5,$F2,$02,$F1,$02
_037B: dc.b $EE,$01,$02
_037E: dc.b $FF,$EE,_0388-Start,(_0388-Start)/$100 ; dc.b $88,$03
_0382: dc.b $FA,$F5,$F2,$02,$D2,$02
_0388: dc.b $EE,$01,$03
_038B: dc.b $FF,$EE,_0395-Start,(_0395-Start)/$100 ; dc.b $95,$03
_038F: dc.b $FA,$F5,$F2,$02,$F3,$02
_0395:
 dc.b $F1
_0396: dc.b $EE,$EF,$0A,$00
_039A: dc.b $FF,$EE,_03A5-Start,(_03A5-Start)/$100 ; dc.b $A5,$03
_039E: dc.b $EB,$E2,$40,$06
_03A2: dc.b $F7,$EF,$0A
_03A5:
 dc.b $F1
_03A6: dc.b $EB,$E2,$10,$27
_03AA:
 dc.b $F1
_03AB: dc.b $EE,$EF,$08,$00
_03AF: dc.b $FF,$EE,_03BA-Start,(_03BA-Start)/$100 ; dc.b $BA,$03
_03B3: dc.b $EB,$E2,$40,$06
_03B7: dc.b $F7,$EF,$08
_03BA:
 dc.b $F1
_03BB: dc.b $EE,$EF,$04,$00
_03BF: dc.b $FF,$EE,_03CA-Start,(_03CA-Start)/$100 ; dc.b $CA,$03
_03C3: dc.b $EB,$E2,$90,$01
_03C7: dc.b $F7,$EF,$04
_03CA:
 dc.b $F1
_03CB: dc.b $F6,$01,$AD,$01
_03CF: dc.b $FE,$EA,$AE,$01
_03D3: dc.b $EE,$EF,$01,$00
_03D7: dc.b $FF,$EE,_03E2-Start,(_03E2-Start)/$100 ; dc.b $E2,$03
_03DB: dc.b $EB,$E2,$20,$03
_03DF: dc.b $F7,$EF,$01
_03E2:
 dc.b $F1
_03E3: dc.b $EE,$F7,$75,$01,$01
_03E8: dc.b $FE,$EE,_03F6-Start,(_03F6-Start)/$100 ; dc.b $F6,$03
_03EC: dc.b $FF,$F7,$11,$02,$01
_03F1: dc.b $FF,$F7,$2E,$03,$01
_03F6: dc.b $EE,$EF,$02,$00
_03FA: dc.b $FF,$EE,_0405-Start,(_0405-Start)/$100 ; dc.b $05,$04
_03FE: dc.b $EB,$E2,$90,$01
_0402: dc.b $F7,$EF,$02
_0405:
 dc.b $F1
_0406: dc.b $EE,$F7,$11,$02,$01
_040B: dc.b $FE,$EE,_041F-Start,(_041F-Start)/$100 ; dc.b $1F,$04
_040F: dc.b $FF,$E9,$C9,$02,$00,$01
_0415: dc.b $FF,$F7,$75,$01,$01
_041A: dc.b $FF,$F7,$4D,$03,$01
_041F: dc.b $F7,$EF,$02
_0422:
 dc.b $F1
_0423: dc.b $EE,$E9,$00,$B7,$01,$01
_0429: dc.b $FE,$EE,_0444-Start,(_0444-Start)/$100 ; dc.b $44,$04
_042D: dc.b $F6,$07,$B7,$01
_0431: dc.b $FE,$EA,$B6,$01
_0435: dc.b $EE,$EF,$05,$00
_0439: dc.b $FF,$EE,_0444-Start,(_0444-Start)/$100 ; dc.b $44,$04
_043D: dc.b $EB,$E2,$20,$03
_0441: dc.b $F7,$EF,$05
_0444:
 dc.b $F1
_0445: dc.b $EE,$F7,$D6,$01,$1C
_044A: dc.b $FF,$EE,_0465-Start,(_0465-Start)/$100 ; dc.b $65,$04
_044E: dc.b $F6,$0C,$D6,$01
_0452: dc.b $FE,$EA,$B6,$01
_0456: dc.b $EE,$EF,$07,$00
_045A: dc.b $FF,$EE,_0465-Start,(_0465-Start)/$100 ; dc.b $65,$04
_045E: dc.b $EB,$E2,$20,$03
_0462: dc.b $F7,$EF,$07
_0465:
 dc.b $F1
_0466: dc.b $EE,$E0,$01
_0469: dc.b $FF,$F5,$FF,$36,$02,$00
_046F: dc.b $FF,$F9,$E0,$04,$FF
_0474: dc.b $F5,$FF,$36,$02,$01
_0479: dc.b $FF,$F9,$F1,$36,$02,$00
_047F: dc.b $FF,$F9,$F8,$EE,_048C-Start,(_048C-Start)/$100 ; dc.b $8C,$04
_0485: dc.b $F6,$0C,$36,$02
_0489: dc.b $FD,$76,$02
_048C: dc.b $EE,$E0,$02
_048F: dc.b $FF,$F5,$FF,$36,$02,$00
_0495: dc.b $FF,$F9,$E0,$08,$FF
_049A: dc.b $F5,$FF,$36,$02,$00
_049F: dc.b $FF,$F9,$F1,$36,$02,$00
_04A5: dc.b $FF,$F9,$F8,$EE,_04B2-Start,(_04B2-Start)/$100 ; dc.b $B2,$04
_04AB: dc.b $F6,$0C,$36,$02
_04AF: dc.b $FC,$76,$02
_04B2:
 dc.b $F1
_04B3: dc.b $F6,$01,$52,$02
_04B7: dc.b $FE,$EA,$53,$02
_04BB:
 dc.b $F1
_04BC: dc.b $EE,$E9,$01,$6E,$02,$01
_04C2: dc.b $FE,$EE,_04DD-Start,(_04DD-Start)/$100 ; dc.b $DD,$04
_04C6: dc.b $F6,$07,$6E,$02
_04CA: dc.b $FE,$EA,$4E,$02
_04CE: dc.b $EE,$EF,$05,$00
_04D2: dc.b $FF,$EE,_04DD-Start,(_04DD-Start)/$100 ; dc.b $DD,$04
_04D6: dc.b $EB,$E2,$20,$03
_04DA: dc.b $F7,$EF,$05
_04DD:
 dc.b $F1
_04DE: dc.b $EE,$F7,$4D,$02,$1C
_04E3: dc.b $FF,$EE,_04FE-Start,(_04FE-Start)/$100 ; dc.b $FE,$04
_04E7: dc.b $F6,$0C,$4D,$02
_04EB: dc.b $FE,$EA,$4E,$02
_04EF: dc.b $EE,$EF,$07,$00
_04F3: dc.b $FF,$EE,_04FE-Start,(_04FE-Start)/$100 ; dc.b $FE,$04
_04F7: dc.b $EB,$E2,$20,$03
_04FB: dc.b $F7,$EF,$07
_04FE:
 dc.b $F1
_04FF: dc.b $F6,$07,$B2,$02
_0503: dc.b $F6,$0D,$93,$02
_0507: dc.b $FE,$F7,$93,$02,$00,$01
_050D: dc.b $FA,$F3,$93,$02,$73,$02
_0513: dc.b $EE,$EF,$06,$00
_0517: dc.b $FF,$EE,_0522-Start,(_0522-Start)/$100 ; dc.b $22,$05
_051B: dc.b $EB,$E2,$40,$06
_051F: dc.b $F7,$EF,$06
_0522:
 dc.b $F1
_0523: dc.b $F6,$07,$BA,$02
_0527: dc.b $FA,$F3,$99,$02,$79,$02
_052D: dc.b $F6,$0D,$99,$02
_0531: dc.b $FE,$F7,$99,$02,$00,$01
_0537: dc.b $EE,$EF,$06,$00
_053B: dc.b $FF,$EE,_0546-Start,(_0546-Start)/$100 ; dc.b $46,$05
_053F: dc.b $EB,$E2,$40,$06
_0543: dc.b $F7,$EF,$06
_0546:
 dc.b $F1
_0547: dc.b $EE,$E9,$01,$E7,$02,$01
_054D: dc.b $FE,$EE,_0568-Start,(_0568-Start)/$100 ; dc.b $68,$05
_0551: dc.b $F6,$07,$E7,$02
_0555: dc.b $FE,$EA,$C8,$02
_0559: dc.b $EE,$EF,$05,$00
_055D: dc.b $FF,$EE,_0568-Start,(_0568-Start)/$100 ; dc.b $68,$05
_0561: dc.b $EB,$E2,$20,$03
_0565: dc.b $F7,$EF,$05
_0568:
 dc.b $F1
_0569: dc.b $F6,$07,$C9,$02
_056D: dc.b $EE,$E9,$00,$C9,$02,$01
_0573: dc.b $FE,$EE,_0590-Start,(_0590-Start)/$100 ; dc.b $90,$05
_0577: dc.b $FE,$EA,$C8,$02
_057B: dc.b $FF,$E9,$E7,$02,$01,$01
_0581: dc.b $EE,$EF,$05,$00
_0585: dc.b $FF,$EE,_0590-Start,(_0590-Start)/$100 ; dc.b $90,$05
_0589: dc.b $EB,$E2,$20,$03
_058D: dc.b $F7,$EF,$05
_0590:
 dc.b $F1
_0591: dc.b $F6,$0C,$11,$03
_0595: dc.b $FD,$F1,$02
_0598:
 dc.b $F1
_0599: dc.b $EE,$E0,$01
_059C: dc.b $FF,$F5,$FF,$F0,$02,$00
_05A2: dc.b $FF,$F9,$EE,_05AE-Start,(_05AE-Start)/$100 ; dc.b $AE,$05
_05A7: dc.b $F6,$0C,$F0,$02
_05AB: dc.b $FC,$F1,$02
_05AE: dc.b $EE,$E0,$04
_05B1: dc.b $FF,$F1,$F0,$02,$00
_05B6: dc.b $FF,$F5,$FF,$F0,$02,$02
_05BC: dc.b $FD,$F9,$F9,$EE,_05C9-Start,(_05C9-Start)/$100 ; dc.b $C9,$05
_05C2: dc.b $F6,$0C,$F0,$02
_05C6: dc.b $FC,$F1,$02
_05C9:
 dc.b $F1
_05CA: dc.b $EE,$EF,$00,$00
_05CE: dc.b $FF,$EE,_05F1-Start,(_05F1-Start)/$100 ; dc.b $F1,$05
_05D2: dc.b $F8,"it smells terrible here.",0,$02,$00
_05EE: dc.b $F7,$EF,$00
_05F1:
 dc.b $F1
_05F2: dc.b $F8,"this slimy, smelly drain pipe reveals nothing.",0,$02,$00
_0624: dc.b $EE,$EF,$03,$00
_0628: dc.b $FF,$EE,_0633-Start,(_0633-Start)/$100 ; dc.b $33,$06
_062C: dc.b $EB,$E2,$20,$03
_0630: dc.b $F7,$EF,$03
_0633:
 dc.b $F1
_0634: dc.b $F8,"there is a drainage grate here.",0,$02,$00
_0657: dc.b $EE,$EF,$03,$00
_065B: dc.b $FF,$EE,_0666-Start,(_0666-Start)/$100 ; dc.b $66,$06
_065F: dc.b $EB,$E2,$20,$03
_0663: dc.b $F7,$EF,$03
_0666: dc.b $EE,$E7,$F5,$00
_066A: dc.b $FF,$EF,$01,$00
_066E: dc.b $FF,$F9,$EE,_067C-Start,(_067C-Start)/$100 ; dc.b $7C,$06
_0673: dc.b $EA,$3A,$00,$FF,$FF,$00
_0679: dc.b $F7,$EF,$01
_067C:
 dc.b $F1
_067D: dc.b $F8,"this slimy, smelly drain pipe reveals nothing.",0,$02,$00
_06AF: dc.b $EE,$EF,$03,$00
_06B3: dc.b $FF,$EE,_06BE-Start,(_06BE-Start)/$100 ; dc.b $BE,$06
_06B7: dc.b $EB,$E2,$20,$03
_06BB: dc.b $F7,$EF,$03
_06BE:
 dc.b $F1
_06BF: dc.b $F8,"there is a drainage grate here.",0,$02,$00
_06E2: dc.b $EE,$EF,$03,$00
_06E6: dc.b $FF,$EE,_06F1-Start,(_06F1-Start)/$100 ; dc.b $F1,$06
_06EA: dc.b $EB,$E2,$20,$03
_06EE: dc.b $F7,$EF,$03
_06F1:
 dc.b $F1
_06F2: dc.b $F8,"there is a drainage grate here.",0,$02,$00
_0715: dc.b $EE,$EF,$03,$00
_0719: dc.b $FF,$EE,_0724-Start,(_0724-Start)/$100 ; dc.b $24,$07
_071D: dc.b $EB,$E2,$20,$03
_0721: dc.b $F7,$EF,$03
_0724:
 dc.b $F1
_0725: dc.b $EE,$EF,$03,$00
_0729: dc.b $FF,$EE,_0734-Start,(_0734-Start)/$100 ; dc.b $34,$07
_072D: dc.b $EB,$E2,$20,$03
_0731: dc.b $F7,$EF,$03
_0734: dc.b $EE,$F1,$CE,$01,$01
_0739: dc.b $FF,$EE,_07AF-Start,(_07AF-Start)/$100 ; dc.b $AF,$07
_073D: dc.b $EE,$E9,$03,$CF,$01,$2C
_0743: dc.b $FF,$EE,_0789-Start,(_0789-Start)/$100 ; dc.b $89,$07
_0747: dc.b $F8,"something scurries deeper into the floor drain.",0,$02,$00
_077A: dc.b $FF,$E9,$CF,$01,$03,$3E
_0780: dc.b $FF,$E9,$CF,$01,$01,$2C
_0786: dc.b $F2,_07AC-Start,(_07AC-Start)/$100 ; dc.b $AC,$07
_0789: dc.b $F8,"there is a drainage grate here.",0,$02,$00
_07AC: dc.b $F2,_081E-Start,(_081E-Start)/$100 ; dc.b $1E,$08
_07AF: dc.b $EE,$E9,$01,$CF,$01,$2C
_07B5: dc.b $FF,$EE,_07FB-Start,(_07FB-Start)/$100 ; dc.b $FB,$07
_07B9: dc.b $F8,"something scurries deeper into the floor drain.",0,$02,$00
_07EC: dc.b $FF,$E9,$CF,$01,$01,$3E
_07F2: dc.b $FF,$E9,$CF,$01,$03,$2C
_07F8: dc.b $F2,_081E-Start,(_081E-Start)/$100 ; dc.b $1E,$08
_07FB: dc.b $F8,"there is a drainage grate here.",0,$02,$00
_081E:
 dc.b $F1
_081F: dc.b $FF,$E9,$CF,$01,$03,$2C
_0825: dc.b $FF,$E9,$CF,$01,$01,$2C
_082B:
 dc.b $F1
_082C: dc.b $F8,"this slimy, smelly drain pipe reveals nothing.",0,$02,$00
_085E: dc.b $EE,$EF,$03,$00
_0862: dc.b $FF,$EE,_086D-Start,(_086D-Start)/$100 ; dc.b $6D,$08
_0866: dc.b $EB,$E2,$20,$03
_086A: dc.b $F7,$EF,$03
_086D:
 dc.b $F1
_086E: dc.b $EE,$EF,$03,$00
_0872: dc.b $FF,$EE,_087D-Start,(_087D-Start)/$100 ; dc.b $7D,$08
_0876: dc.b $EB,$E2,$20,$03
_087A: dc.b $F7,$EF,$03
_087D: dc.b $EE,$DD,$04,$01
_0881: dc.b $FF,$EE,_08A7-Start,(_08A7-Start)/$100 ; dc.b $A7,$08
_0885: dc.b $F8,"kobold rune for 'entrance'.",0,$02,$00
_08A4: dc.b $F2,_08C5-Start,(_08C5-Start)/$100 ; dc.b $C5,$08
_08A7: dc.b $F8,"this rune is unrecognized.",0,$02,$00
_08C5:
 dc.b $F1
_08C6: dc.b $EE,$EF,$03,$00
_08CA: dc.b $FF,$EE,_08D5-Start,(_08D5-Start)/$100 ; dc.b $D5,$08
_08CE: dc.b $EB,$E2,$20,$03
_08D2: dc.b $F7,$EF,$03
_08D5: dc.b $EE,$DD,$04,$01
_08D9: dc.b $FF,$EE,_08FF-Start,(_08FF-Start)/$100 ; dc.b $FF,$08
_08DD: dc.b $F8,"kobold rune for 'entrance'.",0,$02,$00
_08FC: dc.b $F2,_091D-Start,(_091D-Start)/$100 ; dc.b $1D,$09
_08FF: dc.b $F8,"this rune is unrecognized.",0,$02,$00
_091D:
 dc.b $F1
_091E: dc.b $EE,$F5,$05,$0C,$03,$00
_0924: dc.b $FB,$F0,$01,$00
_0928: dc.b $FF,$F9,$EE,_0962-Start,(_0962-Start)/$100 ; dc.b $62,$09
_092D: dc.b $F8,"special quest for this level!",0,$03,$00
_094E: dc.b $F6,$1C,$00,$00
_0952: dc.b $F7,$F0,$01
_0955: dc.b $ED,$05,$0C,$03
_0959: dc.b $EA,$31,$00,$0C,$03,$08
_095F: dc.b $F7,$F0,$01
_0962: dc.b $EE,$EF,$09,$00
_0966: dc.b $FF,$EE,_0971-Start,(_0971-Start)/$100 ; dc.b $71,$09
_096A: dc.b $EB,$E2,$90,$01
_096E: dc.b $F7,$EF,$09
_0971:
 dc.b $F1
_0972: dc.b $F8,"fallen rocks block the way.",0,$02,$00
_0991:
 dc.b $F1
_0992: dc.b $FF,$E9,$CA,$01,$02,$31
_0998:
 dc.b $F1
_0999: dc.b $FF,$E9,$CA,$01,$02,$45
_099F:
 dc.b $F1
_09A0: dc.b $EE,$E9,$03,$62,$00,$08
_09A6: dc.b $FF,$EE,_0A86-Start,(_0A86-Start)/$100 ; dc.b $86,$0A
_09AA: dc.b $EE,$E7,$E1,$26
_09AE: dc.b $FF,$E7,$F6,$01
_09B2: dc.b $FF,$F9,$EE,_09C3-Start,(_09C3-Start)/$100 ; dc.b $C3,$09
_09B7: dc.b $F6,$0E,$81,$00
_09BB: dc.b $FD,$62,$00
_09BE: dc.b $ED,$FF
_09C0: dc.b $F2,_0A83-Start,(_0A83-Start)/$100 ; dc.b $83,$0A
_09C3: dc.b $EE,$E7,$E1,$26
_09C7: dc.b $FF,$EE,_09E5-Start,(_09E5-Start)/$100 ; dc.b $E5,$09
_09CB: dc.b $F8,"it doesn't fit.",0,$06,$00
_09DE: dc.b $F6,$51,$81,$00
_09E2: dc.b $F2,_0A83-Start,(_0A83-Start)/$100 ; dc.b $83,$0A
_09E5: dc.b $EE,$E7,$E1,$1C
_09E9: dc.b $FF,$EE,_0A66-Start,(_0A66-Start)/$100 ; dc.b $66,$0A
_09ED: dc.b $EE,$DC,$08,$01
_09F1: dc.b $FF,$EE,_0A43-Start,(_0A43-Start)/$100 ; dc.b $43,$0A
_09F5: dc.b $F6,$51,$81,$00
_09F9: dc.b $F8,"failed lock pick attempt.",0,$05,$00
_0A16: dc.b $EE,$DB,$01,$64,$00,$01
_0A1C: dc.b $FF,$EE,_0A40-Start,(_0A40-Start)/$100 ; dc.b $40,$0A
_0A20: dc.b $F6,$52,$00,$00
_0A24: dc.b $F8,"the lock picks break!.",0,$06,$00
_0A3E: dc.b $ED,$FF
_0A40: dc.b $F2,_0A63-Start,(_0A63-Start)/$100 ; dc.b $63,$0A
_0A43: dc.b $F8,"only a thief can pick locks.",0,$06,$00
_0A63: dc.b $F2,_0A83-Start,(_0A83-Start)/$100 ; dc.b $83,$0A
_0A66: dc.b $F8,"this lock requires a key.",0,$0F,$00
_0A83: dc.b $F2,_0AA2-Start,(_0AA2-Start)/$100 ; dc.b $A2,$0A
_0A86: dc.b $F8,"the lock appears jammed.",0,$06,$00
_0AA2:
 dc.b $F1
_0AA3: dc.b $FF,$E9,$22,$00,$03,$31
_0AA9:
 dc.b $F1
_0AAA: dc.b $FF,$E9,$22,$00,$03,$45
_0AB0:
 dc.b $F1
_0AB1:
Hunk3:
 ; Nb reloc info
 dc.b $26,$00
 dc.b $F2,$02,$A8,_02CF-Start,(_02CF-Start)/$100 ; dc.b $CF,$02
 dc.b $F1,$02,$08,_0396-Start,(_0396-Start)/$100 ; dc.b $96,$03
 dc.b $AA,$01,$08,_03A6-Start,(_03A6-Start)/$100 ; dc.b $A6,$03
 dc.b $96,$02,$08,_03AB-Start,(_03AB-Start)/$100 ; dc.b $AB,$03
 dc.b $CE,$01,$60,_03BB-Start,(_03BB-Start)/$100 ; dc.b $BB,$03
 dc.b $AD,$01,$00,_03CB-Start,(_03CB-Start)/$100 ; dc.b $CB,$03
 dc.b $50,$01,$08,_03E3-Start,(_03E3-Start)/$100 ; dc.b $E3,$03
 dc.b $91,$01,$08,_0406-Start,(_0406-Start)/$100 ; dc.b $06,$04
 dc.b $B7,$01,$00,_0423-Start,(_0423-Start)/$100 ; dc.b $23,$04
 dc.b $D6,$01,$08,_0445-Start,(_0445-Start)/$100 ; dc.b $45,$04
 dc.b $36,$02,$78,_0466-Start,(_0466-Start)/$100 ; dc.b $66,$04
 dc.b $52,$02,$00,_04B3-Start,(_04B3-Start)/$100 ; dc.b $B3,$04
 dc.b $6E,$02,$00,_04BC-Start,(_04BC-Start)/$100 ; dc.b $BC,$04
 dc.b $4D,$02,$08,_04DE-Start,(_04DE-Start)/$100 ; dc.b $DE,$04
 dc.b $B2,$02,$00,_04FF-Start,(_04FF-Start)/$100 ; dc.b $FF,$04
 dc.b $BA,$02,$00,_0523-Start,(_0523-Start)/$100 ; dc.b $23,$05
 dc.b $E7,$02,$00,_0547-Start,(_0547-Start)/$100 ; dc.b $47,$05
 dc.b $C9,$02,$00,_0569-Start,(_0569-Start)/$100 ; dc.b $69,$05
 dc.b $11,$03,$00,_0591-Start,(_0591-Start)/$100 ; dc.b $91,$05
 dc.b $F0,$02,$28,_0599-Start,(_0599-Start)/$100 ; dc.b $99,$05
 dc.b $79,$02,$08,_05CA-Start,(_05CA-Start)/$100 ; dc.b $CA,$05
 dc.b $07,$03,$00,_05F2-Start,(_05F2-Start)/$100 ; dc.b $F2,$05
 dc.b $CD,$02,$00,_0634-Start,(_0634-Start)/$100 ; dc.b $34,$06
 dc.b $14,$03,$00,_067D-Start,(_067D-Start)/$100 ; dc.b $7D,$06
 dc.b $B8,$02,$00,_06BF-Start,(_06BF-Start)/$100 ; dc.b $BF,$06
 dc.b $32,$02,$00,_06F2-Start,(_06F2-Start)/$100 ; dc.b $F2,$06
 dc.b $CF,$01,$00,_0725-Start,(_0725-Start)/$100 ; dc.b $25,$07
 dc.b $8E,$01,$08,_081F-Start,(_081F-Start)/$100 ; dc.b $1F,$08
 dc.b $94,$01,$00,_082C-Start,(_082C-Start)/$100 ; dc.b $2C,$08
 dc.b $93,$01,$00,_086E-Start,(_086E-Start)/$100 ; dc.b $6E,$08
 dc.b $CF,$02,$00,_08C6-Start,(_08C6-Start)/$100 ; dc.b $C6,$08
 dc.b $0C,$03,$60,_091E-Start,(_091E-Start)/$100 ; dc.b $1E,$09
 dc.b $CA,$01,$00,_0972-Start,(_0972-Start)/$100 ; dc.b $72,$09
 dc.b $EB,$01,$08,_0992-Start,(_0992-Start)/$100 ; dc.b $92,$09
 dc.b $EA,$01,$08,_0999-Start,(_0999-Start)/$100 ; dc.b $99,$09
 dc.b $81,$00,$00,_09A0-Start,(_09A0-Start)/$100 ; dc.b $A0,$09
 dc.b $41,$00,$08,_0AA3-Start,(_0AA3-Start)/$100 ; dc.b $A3,$0A
 dc.b $21,$00,$08,_0AAA-Start,(_0AAA-Start)/$100 ; dc.b $AA,$0A
 END
Eye of the Beholder 2

The .inf file structure and data is somewhat different from its predecessor.

All offsets here are 16bit. All strings are null terminated c-strings. Filenames have usually 13 byte (8 letters + dot + 3 letters + null)

There are different data blocks:

Beginning of .inf file:
#x0000 offset to block_B
#x0002 block_A
 
block_A:
{
   subblocks belong to different sublevels:
   sub_block_A1:
   {
      #x0000 offset (relative to start of block_A) to sub_block_A2
      #x0002 control byte, when = #xEC then this block follows:
      #x0003:
      {
         #x0000: maze file name string usually "levelx.maz"; length: 13 byte
         #x000D: file name string without extention: used to load .vmp .pal; length: 13 byte
         #x001A: usually 0xFF, if not then the next 13 byte are again a string
                 without extention and used to load .pal
      }
      next: file name string without extention for sound file .adl or .snd
            -> depends on game configuration;length: 13 byte
      next: 2 bytes -> each my have the value #xEC or #xEA
 
      more to follow here (monster and decoration data)
   }
   the following blocks are optional: [
      sub_block_A2:
      {
         #x0000 offset to sub_block_A3
         ...
      }
 
      sub_block_A3
      {
         ...
      } ]
} end of block_A
 
block_B:
{
   #x0000 offset to block_C after the scripting data
   #x0002 control byte, if #xEC then this block follows:
   {
      (control byte | data byte) sequence;
      first control byte = #xFF is already next data structure
   }
   here follows: 30*monster data structure, each with length 30 byte
   after that: scripting data block:
   {
      #x0000 offset (relative to scripting data block) of the first string
      next: events
      next: strings
   }
} end of block_B
 
block_C:
{
   #x0000 number of special blocks wich follow; these link maze
          fields to scripting data and contain flags; each 6 bytes long
   #x0002 maze special 1
   #x0008 maze special 2
   #x000E maze special 3
   ...
} end of block_C
 
----
 
a maze special block has the following structure:
{
   uint16: number of block in maze (0...1023)
   uint16: flag
   uint16: offset to scripting data (relative to scripting data block)
}
 


More Eye of the beholder 2 info, nothing new here. but nice to show the data storage.

struct sMonsterGFX
{
    bool used;
    int loadProg;
    int unk0;
    u8 unk1;
    char* label;
};
struct sDice
{
    u8 count;
    u8 dice;
    u8 plus;
};
 
struct sMonsterType
{
    u8 idx; // 0
    u8 unk0; //1
    u8 THAC0; //2
    u8 unk1; //3
 
    sDice HPDice; //4
    u8 numberOfAttacks; // 7
    sDice attackDice[3]; // 16
    unsigned short specialAttackFlag; //18
    unsigned short AbilitiesFlag; // 20
    unsigned short unk2;        //22
    unsigned short EXPGain; //24
 
    u8 size;
    u8 attackSound;
    u8 moveSound;
    u8 unk3;
    // optional
        bool isAttack2;
        u8 distantAttack;
        u8 MaxAttkCnt;
        u8 attackList[4];
 
    u8 turnUndead;
    u8 unk4;
    u8 unk5[3];
 
};
 
struct sMonster
{
    u8 MoNo;
    u8 MoTime;
    short position;
    u8 subpos;
    u8 facing;
    u8 type;
    u8 pic;
    u8 phase;
    u8 pause;
    short weapon; /* Item Number */
    short pocket; /* Dropped on Monster killed */
};
 
struct sWallMapping
{
  u8 idx;
  u8 WallType;
  u8 DecorationID;
  u8 FileIndex;      // index number in DecorationFNames
  u8 unk0;
  u8 unk1;
};
 
 struct sDecorationFName
 {
  char GFXName[13];
  char DECName[13];
 };
 
 
 
struct sRectangle
{
    short x;
    short y;
    short w;
    short h;
};
 
 
struct sDoorInfo
{
    u8 cmd;
    u8 idx;
    u8 typ;
    u8 knob;
    char GFXfile[13];
 
    sRectangle doorRect[3];
    sRectangle buttionRect[2];
    u8 buttonPos[2][2];
 
};



.inf EOB2 dump with comments
EOB2 INF resourced fro assembler 68000 (To See here for all the INF files
EOB2-GB-FilesToTranslate.lha
EOB2-GB-FilesToTranslate.lha

    Details
    Download
    170 KB


BOPT uo+
BOPT ue-
BOPT ua+
OUTPUT LEVEL10.INF.dec
;Source Created by "EOB2 Language File ReSourcerINF V2" Beta
;A Tool done by CFou! on Nov 2006
Start
Hunk0:
dc.b Hunk1-Start,(Hunk1-Start)/$100 ; dc.b $E9,$00
SubHunk0:
dc.b SubHunk1-Start-2,(SubHunk1-Start-2)/$100 ; dc.b $E7,$00
dc.b $EC
;Maze name
dc.b 'level10.maz',0,0
;VCN/VMP File name
dc.b 'mezz',0,'10.maz',0,0
;Palette File name
dc.b $01
dc.b 'azure',0,'0.maz',0,0
;Sound File name
dc.b 'azure',0,'0.maz',0,0
;Door name & Positions + offset
dc.b $EC
dc.b 'door2',0,'0.maz',0,0
dc.b $00,$00,$00,$14,$00,$47,$00,$09,$00,$46,$00,$09,$00,$8F,$00,$07
dc.b $00,$2F,$00,$10,$00,$58,$00,$04,$00,$1D,$00,$10,$00,$B3,$00,$01
dc.b $00,$0A,$00,$7E,$00,$28,$00,$11,$00,$B3,$00,$01,$00,$06,$00,$72
dc.b $00,$2A,$00
;Door name & Positions + offset
dc.b $FF
 
;Max nb Monster ????
dc.b $00,$00
;Monster file name
dc.b $FF
;Monster file name
dc.b $FF
;Monster Struct
dc.b $FF
;Decorate Structure
dc.b $EC
; Nb Decorate Block
dc.b $0C,$00
dc.b $EC
; Decorate file name
dc.b 'azure1',0,'.maz',0,0
; Decorate file name
dc.b 'azure.dec',0,'z',0,0
; Decorate Positions/offsets
dc.b $FB,$1B,$01,$11,$03,$04
dc.b $FB,$1C,$01,$12,$04,$04
dc.b $FB,$23,$00,$07,$00,$03
dc.b $FB,$24,$00,$09,$00,$03
dc.b $FB,$25,$00,$0D,$00,$03
dc.b $FB,$29,$01,$05,$00,$04
dc.b $FB,$28,$01,$03,$02,$04
dc.b $FB,$2C,$00,$FF,$00,$07
dc.b $FB,$2D,$01,$0B,$0A,$84
dc.b $FB,$2E,$01,$FF,$00,$07
dc.b $FB,$4A,$00,$FF,$00,$04
dc.b $01,$00
dc.b $03,$00
dc.b $FF,$FF,$FF,$FF
SubHunk1:
Hunk1:
dc.b Hunk3-Start,(Hunk3-Start)/$100 ; dc.b $F5,$03
dc.b $FF
Hunk2:
;TextBank Offset
dc.b TextBank-Hunk2,(TextBank-Hunk2)/$100 ; dc.b $89,$02
;Game script
_0002: dc.b $EE,$E0,$D2,$01,$00 ; -> Condition Test
_0007: dc.b $FF,$EE,_0077-Hunk2,(_0077-Hunk2)/$100 ; ->Condition branch/case
_000B: dc.b $EE,$ED,$D2,$02,$00 ; -> Condition Test
_0010: dc.b $FF,$EE,_0027-Hunk2,(_0027-Hunk2)/$100 ; ->Condition branch/case
_0014: dc.b $F8,$00,$00,$05,$00 ; FCT: Display Message
_0019: dc.b $F6,$4F,$00,$00 ; FCT: Sound
_001D: dc.b $EC,$E5,$06,$00,$16,$02,$02 ; FCT: Change Level
_0024: dc.b $F2,_0074-Hunk2,(_0074-Hunk2)/$100 ; FCT: Jump Code
_0027: dc.b $F8,$01,$00,$0F,$00 ; FCT: Display Message
_002C: dc.b $F6,$1D,$00,$00 ; FCT: Sound
_0030: dc.b $EE,$D2,$02,$00,$D2,$00,$00 ; -> Condition Test
_0037: dc.b $FF,$EE,_0041-Hunk2,(_0041-Hunk2)/$100 ; ->Condition branch/case
_003B: dc.b $FA,$E8,$00,$00,$16,$02 ; FCT: Teleport????
_0041: dc.b $EE,$D2,$02,$00,$D2,$01,$00 ; -> Condition Test
_0048: dc.b $FF,$EE,_0052-Hunk2,(_0052-Hunk2)/$100 ; ->Condition branch/case
_004C: dc.b $FA,$E8,$00,$00,$F5,$01 ; FCT: Teleport????
_0052: dc.b $EE,$D2,$02,$00,$D2,$02,$00 ; -> Condition Test
_0059: dc.b $FF,$EE,_0063-Hunk2,(_0063-Hunk2)/$100 ; ->Condition branch/case
_005D: dc.b $FA,$E8,$00,$00,$D6,$01 ; FCT: Teleport????
_0063: dc.b $EE,$D2,$02,$00,$D2,$03,$00 ; -> Condition Test
_006A: dc.b $FF,$EE,_0074-Hunk2,(_0074-Hunk2)/$100 ; ->Condition branch/case
_006E: dc.b $FA,$E8,$00,$00,$F7,$01 ; FCT: Teleport????
_0074: dc.b $F2,_0080-Hunk2,(_0080-Hunk2)/$100 ; FCT: Jump Code
_0077: dc.b $FA,$F5 ; FCT: Teleport????
_0079: dc.b $EB,$F6,$01 ; FCT: Give Experience
_007C: dc.b $E5,$06,$16,$02 ; FCT: Wait
_0080: dc.b $F1 ; FCT: End Code
_0081: dc.b $EE,$E0,$D2,$01,$00 ; -> Condition Test
_0086: dc.b $FF,$EE,_00F6-Hunk2,(_00F6-Hunk2)/$100 ; ->Condition branch/case
_008A: dc.b $EE,$ED,$D2,$03,$00 ; -> Condition Test
_008F: dc.b $FF,$EE,_00A6-Hunk2,(_00A6-Hunk2)/$100 ; ->Condition branch/case
_0093: dc.b $F8,$02,$00,$05,$00 ; FCT: Display Message
_0098: dc.b $F6,$4F,$00,$00 ; FCT: Sound
_009C: dc.b $EC,$E5,$0B,$00,$D1,$03,$03 ; FCT: Change Level
_00A3: dc.b $F2,_00F3-Hunk2,(_00F3-Hunk2)/$100 ; FCT: Jump Code
_00A6: dc.b $F8,$01,$00,$0F,$00 ; FCT: Display Message
_00AB: dc.b $F6,$1D,$00,$00 ; FCT: Sound
_00AF: dc.b $EE,$D2,$03,$00,$D2,$00,$00 ; -> Condition Test
_00B6: dc.b $FF,$EE,_00C0-Hunk2,(_00C0-Hunk2)/$100 ; ->Condition branch/case
_00BA: dc.b $FA,$E8,$00,$00,$F2,$03 ; FCT: Teleport????
_00C0: dc.b $EE,$D2,$03,$00,$D2,$01,$00 ; -> Condition Test
_00C7: dc.b $FF,$EE,_00D1-Hunk2,(_00D1-Hunk2)/$100 ; ->Condition branch/case
_00CB: dc.b $FA,$E8,$00,$00,$D1,$03 ; FCT: Teleport????
_00D1: dc.b $EE,$D2,$03,$00,$D2,$02,$00 ; -> Condition Test
_00D8: dc.b $FF,$EE,_00E2-Hunk2,(_00E2-Hunk2)/$100 ; ->Condition branch/case
_00DC: dc.b $FA,$E8,$00,$00,$B2,$03 ; FCT: Teleport????
_00E2: dc.b $EE,$D2,$03,$00,$D2,$03,$00 ; -> Condition Test
_00E9: dc.b $FF,$EE,_00F3-Hunk2,(_00F3-Hunk2)/$100 ; ->Condition branch/case
_00ED: dc.b $FA,$E8,$00,$00,$D3,$03 ; FCT: Teleport????
_00F3: dc.b $F2,_00FF-Hunk2,(_00FF-Hunk2)/$100 ; FCT: Jump Code
_00F6: dc.b $FA,$F5 ; FCT: Teleport????
_00F8: dc.b $EB,$D2,$03 ; FCT: Give Experience
_00FB: dc.b $E5,$0B,$D1,$03 ; FCT: Wait
_00FF: dc.b $F1 ; FCT: End Code
_0100: dc.b $EE,$E7,$F6,$D2,$FF,$FF ; -> Condition Test
_0106: dc.b $FF,$EE,_010D-Hunk2,(_010D-Hunk2)/$100 ; ->Condition branch/case
_010A: dc.b $FF,$ED,$03 ; ->Condition branch/case
_010D: dc.b $EE,$E0,$D2,$01,$00 ; -> Condition Test
_0112: dc.b $FF,$EE,_0126-Hunk2,(_0126-Hunk2)/$100 ; ->Condition branch/case
_0116: dc.b $F6,$0F,$11,$03 ; FCT: Sound
_011A: dc.b $FF,$ED,$01 ; ->Condition branch/case
_011D: dc.b $FA,$E8,$00,$00,$01,$03 ; FCT: Teleport????
_0123: dc.b $F2,_012E-Hunk2,(_012E-Hunk2)/$100 ; FCT: Jump Code
_0126: dc.b $FA,$F5 ; FCT: Teleport????
_0128: dc.b $EB,$11,$03 ; FCT: Give Experience
_012B: dc.b $EB,$01,$03 ; FCT: Give Experience
_012E: dc.b $F1 ; FCT: End Code
_012F: dc.b $EE,$E0,$D2,$01,$00 ; -> Condition Test
_0134: dc.b $FF,$EE,_0148-Hunk2,(_0148-Hunk2)/$100 ; ->Condition branch/case
_0138: dc.b $F6,$0F,$C5,$03 ; FCT: Sound
_013C: dc.b $FF,$ED,$01 ; ->Condition branch/case
_013F: dc.b $FA,$E8,$00,$00,$CC,$02 ; FCT: Teleport????
_0145: dc.b $F2,_0150-Hunk2,(_0150-Hunk2)/$100 ; FCT: Jump Code
_0148: dc.b $FA,$F5 ; FCT: Teleport????
_014A: dc.b $EB,$C5,$03 ; FCT: Give Experience
_014D: dc.b $EB,$CC,$02 ; FCT: Give Experience
_0150: dc.b $F1 ; FCT: End Code
_0151: dc.b $F8,$03,$00,$01,$00 ; FCT: Display Message
_0156: dc.b $F1 ; FCT: End Code
_0157: dc.b $F8,$04,$00,$01,$00 ; FCT: Display Message
_015C: dc.b $F1 ; FCT: End Code
_015D: dc.b $EE,$E9,$03,$43,$02,$D2,$08,$00 ; -> Condition Test
_0165: dc.b $FF,$F5,$01,$FF,$62,$02,$D2,$00,$00 ; ->Condition branch/case
_016E: dc.b $FB,$F9,$EE,$84,$01
_0173: dc.b $ED,$FE,$62,$02 ; FCT: Item Consume
_0177: dc.b $FD,$43,$02 ; FCT:Open Door
_017A: dc.b $E4 ; FCT: Update Screen
_017B: dc.b $E5,$01,$00 ; FCT: Wait
_017E: dc.b $FF,$E9,$41,$02,$01,$1B ; ->Condition branch/case
_0184: dc.b $F1 ; FCT: End Code
_0185: dc.b $EE,$E0,$D2,$01,$00 ; -> Condition Test
_018A: dc.b $FF,$EE,_019F-Hunk2,(_019F-Hunk2)/$100 ; ->Condition branch/case
_018E: dc.b $F6,$0F,$65,$02 ; FCT: Sound
_0192: dc.b $FC,$43,$02 ; FCT: Close Door
_0195: dc.b $FF,$ED,$01 ; ->Condition branch/case
_0198: dc.b $FA,$E8,$00,$00,$2C,$03 ; FCT: Teleport????
_019E: dc.b $F0 ; FCT: Return
_019F: dc.b $FA,$F5 ; FCT: Teleport????
_01A1: dc.b $EB,$65,$02 ; FCT: Give Experience
_01A4: dc.b $EB,$2C,$03 ; FCT: Give Experience
_01A7: dc.b $F1 ; FCT: End Code
_01A8: dc.b $F6,$01,$0F,$01 ; FCT: Sound
_01AC: dc.b $E4 ; FCT: Update Screen
_01AD: dc.b $E5,$01,$00 ; FCT: Wait
_01B0: dc.b $FF,$E9,$0F,$01,$00,$1B ; ->Condition branch/case
_01B6: dc.b $FF,$F7,$4F,$00,$2C ; ->Condition branch/case
_01BB: dc.b $F7,$EF,$01 ; FCT: Set Flag
_01BE: dc.b $F1 ; FCT: End Code
_01BF: dc.b $EE,$E0,$D2,$01,$00 ; -> Condition Test
_01C4: dc.b $FF,$F5,$00,$FF,$4D,$00,$D2,$00,$00 ; ->Condition branch/case
_01CD: dc.b $FF,$F9,$E0,$D2,$04,$00 ; ->Condition branch/case
_01D3: dc.b $FF,$F5,$00,$FF,$4D,$00,$D2,$01,$00 ; ->Condition branch/case
_01DC: dc.b $FF,$F9,$F1,$F1,$4D,$00,$D2,$00,$00 ; ->Condition branch/case
_01E5: dc.b $FF,$F9,$F8,$EE,_01FA-Hunk2,(_01FA-Hunk2)/$100 ; ->Condition branch/case
_01EB: dc.b $FF,$F7,$4D,$00,$24 ; ->Condition branch/case
_01F0: dc.b $F6,$0C,$4D,$00 ; FCT: Sound
_01F4: dc.b $FF,$E9,$0F,$01,$00,$1B ; ->Condition branch/case
_01FA: dc.b $EE,$E0,$D2,$02,$00 ; -> Condition Test
_01FF: dc.b $FF,$F5,$00,$FF,$4D,$00,$D2,$00,$00 ; ->Condition branch/case
_0208: dc.b $FF,$F9,$E0,$D2,$08,$00 ; ->Condition branch/case
_020E: dc.b $FF,$F5,$00,$FF,$4D,$00,$D2,$00,$00 ; ->Condition branch/case
_0217: dc.b $FF,$F9,$F1,$F1,$4D,$00,$D2,$00,$00 ; ->Condition branch/case
_0220: dc.b $FF,$F9,$F8,$EE,_0235-Hunk2,(_0235-Hunk2)/$100 ; ->Condition branch/case
_0226: dc.b $FF,$F7,$4D,$00,$23 ; ->Condition branch/case
_022B: dc.b $F6,$0C,$4D,$00 ; FCT: Sound
_022F: dc.b $FF,$E9,$0F,$01,$00,$01 ; ->Condition branch/case
_0235: dc.b $F1 ; FCT: End Code
_0236: dc.b $EE,$EF,$01,$D2,$01,$00 ; -> Condition Test
_023C: dc.b $FF,$EE,_025B-Hunk2,(_025B-Hunk2)/$100 ; ->Condition branch/case
_0240: dc.b $EE,$EF,$02,$D2,$01,$00 ; -> Condition Test
_0246: dc.b $FF,$EE,_0258-Hunk2,(_0258-Hunk2)/$100 ; ->Condition branch/case
_024A: dc.b $FF,$F7,$4F,$00,$00 ; ->Condition branch/case
_024F: dc.b $F5,$EF,$01 ; FCT: Clear Flag
_0252: dc.b $F5,$EF,$02 ; FCT: Clear Flag
_0255: dc.b $F2,_025B-Hunk2,(_025B-Hunk2)/$100 ; FCT: Jump Code
_0258: dc.b $F7,$EF,$02 ; FCT: Set Flag
_025B: dc.b $F1 ; FCT: End Code
_025C: dc.b $EE,$F7,$4F,$00,$D2,$2C,$00 ; -> Condition Test
_0263: dc.b $FF,$EE,_0288-Hunk2,(_0288-Hunk2)/$100 ; ->Condition branch/case
_0267: dc.b $EE,$E0,$D2,$01,$00 ; -> Condition Test
_026C: dc.b $FF,$EE,_0280-Hunk2,(_0280-Hunk2)/$100 ; ->Condition branch/case
_0270: dc.b $F6,$0F,$4F,$00 ; FCT: Sound
_0274: dc.b $FF,$ED,$01 ; ->Condition branch/case
_0277: dc.b $FA,$E8,$00,$00,$2C,$03 ; FCT: Teleport????
_027D: dc.b $F2,_0288-Hunk2,(_0288-Hunk2)/$100 ; FCT: Jump Code
_0280: dc.b $FA,$F5 ; FCT: Teleport????
_0282: dc.b $EB,$6F,$02 ; FCT: Give Experience
_0285: dc.b $EB,$2C,$03 ; FCT: Give Experience
_0288: dc.b $F1 ; FCT: End Code
 
;TextBank
TextBank:
dc.b 'going down...',0
dc.b 'you can',"'",'t go that way.',0
dc.b 'going up...',0
dc.b 'the plaque reads: you will pay for your freedom...',0
dc.b 'the plaque reads: one item.',0
Hunk3:
;Special Maze Blocks Bank (offset)
; Nb Special Maze Blocks
dc.b $0C,$00
; Special Maze Blocks List:
dc.b $F6,$01,$A8,$00,_0002-Hunk2,(_0002-Hunk2)/$100 ; dc.b $02,$00
dc.b $D2,$03,$A8,$00,_0081-Hunk2,(_0081-Hunk2)/$100 ; dc.b $81,$00
dc.b $11,$03,$A8,$00,_0100-Hunk2,(_0100-Hunk2)/$100 ; dc.b $00,$01
dc.b $C5,$03,$A8,$00,_012F-Hunk2,(_012F-Hunk2)/$100 ; dc.b $2F,$01
dc.b $A4,$01,$00,$00,_0151-Hunk2,(_0151-Hunk2)/$100 ; dc.b $51,$01
dc.b $21,$02,$00,$00,_0157-Hunk2,(_0157-Hunk2)/$100 ; dc.b $57,$01
dc.b $41,$02,$00,$00,_015D-Hunk2,(_015D-Hunk2)/$100 ; dc.b $5D,$01
dc.b $65,$02,$A8,$00,_0185-Hunk2,(_0185-Hunk2)/$100 ; dc.b $85,$01
dc.b $0F,$01,$00,$00,_01A8-Hunk2,(_01A8-Hunk2)/$100 ; dc.b $A8,$01
dc.b $4D,$00,$78,$00,_01BF-Hunk2,(_01BF-Hunk2)/$100 ; dc.b $BF,$01
dc.b $01,$00,$00,$00,_0236-Hunk2,(_0236-Hunk2)/$100 ; dc.b $36,$02
dc.b $4F,$00,$A8,$00,_025C-Hunk2,(_025C-Hunk2)/$100 ; dc.b $5C,$02
END