Eye of the Beholder Maze Information Format
! 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