Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Flashback (PC DOS) Doc
- MBK (Bank) [Map!]
- PGE (Piege) [Map Layout] [In Doc]
- PAL (Palette) [Map Layout] [In Doc]
- CT (Collision) [Map Layout] [In Doc]
- MAP (Map) [Map Layout] [In Doc]
- RP (Bank Sprite_car) [Map!]
- ANI (Animations) [Map!] [In Doc]
- OBJ (Objects) [Map!] [In Doc]
- TBN (Texts) [Map!] [In Doc]
- SPC (Global Sprites "global.spc") [!]
- ICN (Icons "GLOBAL.ICN") [!]
- SPR (Sprites) [!]
- FNT (Font "FB_TXT.FNT") [!]
- TXT (Cutscene Text) [!]
- BIN (Cutscene Text Offsets) [!]
- DEMO*.BIN (Demo) [!]
- CMD (Cutscene Commands) [!] [In Doc]
- POL (Cutscene Polygons) [!] [In Doc]
- OFF (SPRM indice) [!]
- -
- LEV (Map) [Amiga]
- TAB (Sprite Table) [Amiga?]
- SGD (Sprite Map) [Amiga?]
- FIB
- ------------------
- LEVEL FILE NAMES
- level1
- level2
- level3, dt (Amiga)
- level4, level4_1 (PGE/OBJ/ANI/TBN), level3_1 (Amiga)
- level4, level4_2 (PGE/OBJ/ANI/TBN), level3_2 (Amiga)
- level5, level5_1 (PGE/OBJ/ANI/TBN), level4_1 (Amiga)
- level5, level5_2 (PGE/OBJ/ANI/TBN), level4_2 (Amiga)
- ------------------
- MBK files - Bank Data
- First byte is the number of entries
- Pointer Entry (6 bytes):
- 0x0000 - 8-bit - Amount of Entries
- 0x0000 - 32-bit BE - Offset
- 0x0004 - 16-bit BE - Size / 32 [in bytes] (bit15 set = Uncompressed)
- [repeats]
- Entry:
- -0x004 - 32-bit BE - Size (bytes) if compressed?
- 0x0000 - Entry
- ---------
- PGE files - Piege
- Offset - Size - Desc
- 0x0000 - 16-bit LE - Number of entries
- ---
- Entry (32 bytes):
- 0x0000 - 16-bit LE - Type
- 0x0002 - 16-bit LE - Position X
- 0x0004 - 16-bit LE - Position Y
- 0x0006 - 16-bit LE - Object Node Number
- 0x0008 - 16-bit LE - Life
- 0x000A - 16-bit LE - Counter Value 1
- 0x000C - 16-bit LE - Counter Value 2
- 0x000E - 16-bit LE - Counter Value 3
- 0x0010 - 16-bit LE - Counter Value 4
- 0x0012 - 8-bit - Object Type
- 0x0013 - 8-bit - Init Room
- 0x0014 - 8-bit - Room Location
- 0x0015 - 8-bit - Init Flags
- 0x0016 - 8-bit - Colliding Icon Number
- 0x0017 - 8-bit - Icon Number
- 0x0018 - 8-bit - Object ID
- 0x0019 - 8-bit - Skill
- 0x001A - 8-bit - Mirror X
- 0x001B - 8-bit - Flags
- 0x001C - 8-bit - Unknown
- 0x001D - 8-bit - none
- 0x001E - 16-bit LE - Text Number
- ---------
- PAL files - Palette
- Collection of 16-color palettes
- Color Format:
- 16-bit BE = 0x0BGR (PC)
- 16-bit LE = 0x0RGB (Amiga)
- 0x000F << 2
- 0x00F0 >> 2
- 0x0F00 >> 6
- If not black
- R |= 3
- G |= 3
- B |= 3
- ---------
- CT files - Collisions
- Delphine Compressed!
- 0x0000 - 0x40 - Up Room Transport Number
- 0x0040 - 0x40 - Down Room Transport Number
- 0x0080 - 0x40 - Right Room Transport Number
- 0x00C0 - 0x40 - Left Room Transport Number
- 0x0100 - 0x1C00 - Collision Entries for each room
- Entry:
- 0x00 - 0x70 - Collision
- 0x00 = No Collision
- 0x01 = Collision
- Even Offsets 0x00, 0x20... = Climbable, Walk...
- Odd Offsets 0x10, 0x30... = Walls
- ---------
- MAP files - Room Map graphics
- ---
- 0x0 - 0x180 - Room Map Offset Entries (0x40 rooms)
- -Offset Entry:
- 0x0 - 32-bit LE - Offset to MAP entry
- 0x4 - 16-bit LE - Size
- -MAP Entry:
- 0x0 - 8-bit - Palette Slot 1
- 0x1 - 8-bit - Palette Slot 2
- 0x2 - 8-bit - Palette Slot 3
- 0x3 - 8-bit - Palette Slot 4
- 0x4 - Graphics
- Unpacked Graphics (Negative Offset, offset = -offset):
- 0x0000 - 0xE000 - Graphics
- Linear format, 0x40 bytes per line, 8bpp
- 0x40 (X) * 224 (Y) bytes
- 256 * 56 * 4
- 1/4 uses a different palette?
- L0PPCCCC
- C= Color
- P= Palette
- L= Layer
- Packed Graphics (Positive Offset):
- 0x0 - 16-bit LE - Graphics Part 1 Size (does not count itself)
- 0x2 - Size - Packed Graphics Part 1
- 0x? - 16-bit LE - Graphics Part 2 Size (does not count itself)
- 0x? - Size - Packed Graphics Part 2
- 0x? - 16-bit LE - Graphics Part 3 Size (does not count itself)
- 0x? - Size - Packed Graphics Part 3
- 0x? - 16-bit LE - Graphics Part 4 Size (does not count itself)
- 0x? - Size - Packed Graphics Part 4
- Pack Format:
- Read Code
- If code < 0
- N = 1 - code
- put next byte N times
- Else (code >= 0)
- N = code++
- copy N number of bytes
- ---------
- SPC - GLOBAL.SPC - Sprites
- 0x00 - 16-bit BE - Number of Entries / 2
- ---------
- TBN files - Interaction Text/Item names
- 16-bit BE absolute offsets to ASCII text.
- First text is always 0x00.
- ---------
- ANI files - Animations
- 0x00 - 16-bit LE - Number of animation entries (DOES NOT COUNT TO OFFSETS)
- 0x02 - 16-bit LE - Entry Offsets (- 2)
- Entry Header:
- 0x00 - 16-bit LE - Number of frames (Seq)
- 0x02 - 8-bit - Sound ID
- 0x03 - 8-bit - Unused
- 0x04 - 16-bit LE - PGE Flag 0x8
- 0x06 - 32-bits - Frames
- Frame Data:
- 0x00 - 16-bit LE - Animation Number (0x7FFF), bit15 = Mirror X
- 0x02 - 8-bit - Delta X
- 0x03 - 8-bit - Delta Y
- ---------
- OBJ files - Object Nodes
- Header
- 0x0000 - 16-bit LE - Number of object nodes
- Pointers
- 0x0002 - 32-bit LE (aligned) - Pointer Offset to OBJ Node Entry
- [and so on]
- Node Entry
- 0x00 - 16-bit - Unused?
- 0x02 - 16-bit LE - Last OBJ Number (Number of objects?)
- [Object Entries]
- How to count:
- Diff = (OBJ Node Entry Offset + 1) - (OBJ Node Entry Offset)
- Object Entries = (Diff - 2) / 0x12
- Object Entry (0x12 bytes)
- 0x00 - 16-bit LE - Type
- 0x02 - 8-bit - dx
- 0x03 - 8-bit - dy
- 0x04 - 16-bit LE - Init OBJ Type
- 0x06 - 8-bit - Opcode 2
- 0x07 - 8-bit - Opcode 1
- 0x08 - 8-bit - Flags
- 0x09 - 8-bit - Opcode 3
- 0x0A - 16-bit LE - Opcode Argument 1
- 0x0C - 16-bit LE - Opcode Argument 2
- 0x0E - 16-bit LE - Opcode Argument 3
- 0x10 - 16-bit LE - ???
- Call:
- Opcode 1: A = arg1; B = 0;
- Opcode 2: A = arg2; B = arg1;
- Opcode 3: A = arg3; B = 0;
- If all goes well:
- Type = Init OBJ Type
- Check Flags
- Flags--:
- 0bSSSSCIDF
- SSSS = Score
- C = Infinite Life
- I = Increment Life
- D = Decrement Life
- F = XOR bit0 of PGE
- Opcodes--:
- 0x00 - none
- 0x01 - Is Input Up?
- 0x02 - Is Input Backwards?
- 0x03 - Is Input Down?
- 0x04 - Is Input Forward?
- 0x05 - Is Input Up Mod?
- 0x06 - Is Input Backwards Mod?
- 0x07 - Is Input Down Mod?
- 0x08 - Is Input Forward Mod?
- 0x09 - Is Input Idle?
- 0x0A - Is Input No Mod?
- 0x0B - Get Collision 0u
- 0x0C - Get Collision 00
- 0x0D - Get Collision 0d
- 0x0E - Get Collision 1u
- 0x0F - Get Collision 10
- 0x10 - Get Collision 1d
- 0x11 - Get Collision 2u
- 0x12 - Get Collision 20
- 0x13 - Get Collision 2d
- 0x14 - Does Not Collide 0u
- 0x15 - Does Not Collide 00
- 0x16 - Does Not Collide 0d
- 0x17 - Does Not Collide 1u
- 0x18 - Does Not Collide 10
- 0x19 - Does Not Collide 1d
- 0x1A - Does Not Collide 2u
- 0x1B - Does Not Collide 20
- 0x1C - Does Not Collide 2d
- 0x1D - Collides 0o0d
- 0x1E - Collides 2o2d
- 0x1F - Collides 0o0u
- 0x20 - Collides 2o2u
- 0x21 - Collides 2u2o
- 0x22 - Is In Group? (A = Group Number)
- 0x23 - Update Group 0
- 0x24 - Update Group 1
- 0x25 - Update Group 2
- 0x26 - Update Group 3
- 0x27 - Is Piege Dead?
- 0x28 - Collides 1u2o
- 0x29 - Collides 1u1o
- 0x2A - Collides 1o1u
- 0x2B - ZOrder If Type And Different Direction (A = ?)
- 0x2C - ZOrder If Type And Same Direction (A = ?)
- 0x2D - ZOrder By Object (A = ?)
- 0x2E - NOP
- 0x2F - Pickup Object (A = ?)
- 0x30 - Add Item to Inventory (A = ?)
- 0x31 - Copy Piege (A = Source Piege)
- 0x32 - Can Use Current Inventory Item?
- 0x33 - Remove Item from Inventory
- 0x34 - Unknown (Collision) (A = ?)
- 0x35 - Is Input Mod?
- 0x36 - Set Collision State 1 (A = ?)
- 0x37 - Set Collision State 0 (A = ?)
- 0x38 - Is In Group 1? (A = ?)
- 0x39 - Is In Group 2? (A = ?)
- 0x3A - Is In Group 3? (A = ?)
- 0x3B - Is In Group 4? (A = ?)
- 0x3C - ZOrder By Anim Y If Type (A = ?; B = ?)
- 0x3D - ZOrder By Anim Y (A = ?)
- 0x3E - Set Piege Counter (A = Value)
- 0x3F - Dec Piege Counter (A = ?)
- 0x40 - Unknown (A = ?)
- 0x41 - Wake Up Piege (A = Counter Value ID)
- 0x42 - Remove Piege (A = Counter Value ID)
- 0x43 - Remove Piege If Not Near
- 0x44 - Load Piege Counter (A = Counter Value ID)
- 0x45 - ZOrder By Number (A = ?)
- 0x46 - ZOrder If Different Direction, Compare Var1 = 0 (A = ?)
- 0x47 - ZOrder If Same Direction, Compare Var2 = 0 (A = ?)
- 0x48 - Unknown (A = ?) [Ian]
- 0x49 - ZOrder If Index (A = ?)
- 0x4A - Inventory? (A = ?)
- 0x4B - Kill Piege
- 0x4C - Is In Current Room?
- 0x4D - Is Not In Current Room?
- 0x4E - Scroll Position Y (A = Delta Y)
- 0x4F - Play Default Death Cutscene (A = Death Cutscene if no default)
- 0x50 - ZOrder By Object (A = ?)
- 0x51 - none
- 0x52 - Hit Detection 1 (A = ?; B = ?)
- 0x53 - Hit Detection 2 (A = ?; B = ?)
- 0x54 - Is Piege Near? (A = Piege?)
- 0x55 - Set Life (A = Value)
- 0x56 - Inc Life (A = Value Inc)
- 0x57 - Set Piege Default Anim? (A = Counter Value ID)
- 0x58 - Set Life Counter (A = Piege?)
- 0x59 - Dec Life Counter (A = Piege?)
- 0x5A - Play Cutscene (A = Cutscene ID)
- 0x5B - Is Temp Var 2 Set To A? (A = Value)
- 0x5C - Play Death Cutscene (A = Death Cutscene ID)
- 0x5D - Hit Detection 3 (A = ?; B = ?)
- 0x5E - Hit Detection 4 (A = ?; B = ?)
- 0x5F - Collision?
- 0x60 - Find And Copy Piege (A = Group ID?)
- 0x61 - Is In Random Range? (A = Modulo?)
- 0x62 - Hit Detection 5 (A = ?; B = ?)
- 0x63 - Hit Detection 6 (A = ?; B = ?)
- 0x64 - Gun Hit Detection 1 (A = ?; B = ?)
- 0x65 - Add To Credits (A = Counter Value ID [3 = invalid])
- 0x66 - Sub From Credits (A = Counter Value ID [3 = invalid])
- 0x67 - Unknown (A = ?)
- 0x68 - Set Collision State 2 (A = ?)
- 0x69 - Save State
- 0x6A - Unknown (A = ?)
- 0x6B - Is In Group Slice?
- 0x6C - Unknown (A = ?)
- 0x6D - Is Colliding Object? (A = ?)
- 0x6E - Elevator? (A = Group ID?)
- 0x6F - Unknown (A = Group ID?)
- 0x70 - Inventory? (A = Group ID?)
- 0x71 - Reorder Inventory? Elevator? (A = Group ID?)
- 0x72 - Collision?
- 0x73 - Find Piege, Inventory? (A = Piege?)
- 0x74 - Collides 4u (A = ?)
- 0x75 - Does Not Collide 4u (A = ?)
- 0x76 - Is Below Conrad?
- 0x77 - Is Above Conrad?
- 0x78 - Is Not Facing Conrad? (A = ?)
- 0x79 - Is Facing Conrad? (A = ?)
- 0x7A - Collides 2u1u (A = ?)
- 0x7B - Display Text (A = Text To Display)
- 0x7C - Find Piege? (A = ?)
- 0x7D - Play Sound (A = 0xVVII; VV = Volume; II = SFX ID)
- 0x7E - ZOrder By Index, Compare Var1 (A = ?)
- 0x7F - Collision?
- 0x80 - Set Piege Pos X
- 0x81 - Set Piege Pos Mod X
- 0x82 - Change Room (A = ?)
- 0x83 - Has Inventory Item? (A = Object ID)
- 0x84 - Change Level (A = Level + 1)
- 0x85 - Shake Screen
- 0x86 - Gun Hit Detection 2 (A = ?; B = ?)
- 0x87 - Play Sound Group (A = Counter Value ID)
- 0x88 - Adjust Position
- 0x89 - none
- 0x8A - Set Temp Var 1 (A = Value)
- 0x8B - Is Temp Var 1 Set To A? (A = Value)
- ---------
- Cutscene Format
- CMD files - Cutscene Commands
- Header--
- 0x00 - 16-bit BE - Number of Cutscene Entries
- Entry-
- 0x00 - 16-bit BE - Offset (Does not count header)
- Full offset is calcutated like this:
- (NN + 1) * 2 + Entry Offset
- Opcodes--
- 0x00 - Mark Current Position
- 0x04 NN - Refresh Screen (NN = Flag)
- 0x08 NN - Wait for Sync (NN = Frame Delay)
- 0x0C SSSS (XXXX YYYY) - Draw Shape (S = Shape Offset, if > 0x8000 then custom X and Y)
- 0x10 NN SS - Set Palette
- 0x14 - Mark Current Position
- 0x18 NNNN - Draw String at bottom (N = String ID)
- 0x1C - NOP
- 0x20 - Skip 3 bytes
- 0x24 [MM NNNN]*n - Refresh All [Same as Handle Keys]
- 0x28 SSSS (XXXX YYYY) ZZZZ XZ YZ - Draw Shape and Scale (Same as before, ZZZZ = Zoom (512 as base), XZ/YZ = Scale)
- 0x2C SSSS (XXXX YYYY ZZZZ) XZ YZ IIII OOOO 1111 (2222 3333) - Draw Shape Scale and Rotate
- S & 0x8000: XXXX YYYY
- S & 0x4000: ZZZZ
- S & 0x2000: 2222
- S & 0x1000: 3333
- 0x30 - Draw Credits Text
- 0x34 NNNN XX YY - Draw String at Position
- 0x38 [MM NNNN]*n - Handle Keys (M = Mask, NNNN = Relative position?)
- MM & 1: Up
- MM & 2: Down
- MM & 4: Left
- MM & 8: Right
- MM & 0x80: Button
- MM == 0xFF: End (no NNNN)
- 0x80-FF - Stop
- Arguments are Big Endian
- ----------
- POL files - Cutscene Polygons
- 0x0000 - Shape Table Offset
- 0x0004 - Pallette Data Offset
- 0x0008 - Vertices Table Offset
- 0x000C - Shape Data Offset
- 0x0010 - Vertices Data Offset
- --Shape Table Offsets
- 0x0 - 16-bit BE - Shape Data Offset [ID = NNNN & 0x7FF]
- --Pallette Data Format
- 16 colors Format: 0RGB
- --Shape Data Format
- 0x0000 - 16-bit BE - Number of entries (Fake 16-bit, 8-bit)
- 0x0002 - Entries
- -Entry
- 0x0000 - 16-bit BE - Vertices ID (0x3FFF = max)
- 0x0002 - 8-bit - Color
- if (ID & 0x8000):
- 0x0002 - 16-bit BE - dx (if ID & 0x8000)
- 0x0004 - 16-bit BE - dy (if ID & 0x8000)
- 0x0006 - 8-bit - Color
- ID & 0x4000 = Alpha Color?
- --Vertices Data Format
- 0x0000 - 8-bit - Number of vertice entries
- -Entry
- If number & 0x80 = true (Ellipse)
- XXXX YYYY IIII OOOO
- Ellipse from X,Y to I,O
- If 0 vertices (Point)
- XXXX YYYY
- Draw Point at X,Y
- Else (Polygon)
- XXXX YYYY [II OO]*NN
- X,Y as base, I,O relative X,Y to base
- ----------
- Flashback Genesis (U)
- 0018E8:6000 - Anti-Anti-Mod (E) (Rev 1) also (U)
- LEVEL1.OBJ?
- 0x083E5C - 0x230 - LEVEL1.CT
- 0x08408C - 0x8B1C - LEVEL1.LEV
- 0x08CBA8 - 0xC0 - LEVEL1.PAL
- 0x08CC68 - 0x3062 - LEVEL1.MBK
- 0x08FCCA - 0xF425 - LEVEL1.SGD
- 0x09F0F0 - 0xD62 - LEVEL1.PGE
- 0x09FE52 - 0x4A? - LEVEL1.RP/RPC?
- 0x09FE9C - 0xFF - LEVEL1.TBN (ENG)
- 0x0BCD04 - LEVEL2.PGE
- 0x112CAA - Cutscene French Text Offsets (Relative 16-bit)
- 0x112D94 - Cutscene French Text
- 0x1141E8 - Cutscene English Text Offsets (Relative 16-bit)
- 0x1142D2 - Cutscene English Text
- 0x15EBA4 - Cutscene Offsets (8 bytes per cutscene, first is CMD, second is POL)
- DEBUT.CMD
- DEBUT.POL
- (0x15EBDC - Intro)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement