![]() |
#1 |
Extracting Raptor GLB files
Hi all,
Does anyone know if the Raptor GLB format is known? I am investigating it and I have made a little progress, but I'm a bit stuck. I have worked out that the first 1536*28 bytes is the list of files and offsets, and this is encrypted (none of the data is encrypted though.) You can partially decode the file like this: - Read a byte - Subtract the previous byte read (may cause integer wrap) - XOR with the next byte in the first key The first key is the string "32768GLB". The decryption starts at the second character ("2") and when it gets to the end of the string it loops back to the first character ("3"). After this, you can begin to see the structure of the FAT. Every second block of 28 bytes is XOR encrypted again with the hex key 75 7B 74 0B. Applying this makes every second block of 28 bytes look like the other blocks. This is as far as I have gotten. The first file is a 768-byte VGA palette starting directly after the FAT at offset 0xA800, and in the FAT at offset 0x20 you can see the number 0xB800 which I think is 0xA800 but encrypted. At offset 0x24 the number 0x0D00 is, I think, the size (0x0300) encrypted. At offset 0x28 I think is the encrypted filename. If I XOR the first three bytes with 0x80 I get the letters "PAL" which seems correct as this file is a palette, but I can't get the rest of the filename to come out. If anyone has any ideas or suggestions about figuring out this file format, please let me know! |
|
![]() |
![]() |
#2 |
Re: Extracting Raptor GLB files
Well I couldn't find *anything* about this format so I sat down and reverse engineered it. The encryption algorithm and file format is now documented at the ModdingWiki and the next release of Camoto will have support for editing Raptor's .GLB files.
Here's a taste of what FILE0000.GLB looks like: Code:
$ gamearch file0000.glb -l Opening files/file0000.glb as type <autodetect> File is definitely a Raptor GLB File [glb-raptor] @0 ATENTION_TXT [encrypted; 443 bytes] @1 LASTSCR1_TXT [encrypted; 4000 bytes] @2 LASTSCR2_TXT [encrypted; 4000 bytes] @3 FILE_ID_DIZ [encrypted; 447 bytes] @4 FILE_ID_DIX [encrypted; 497 bytes] @5 DIZ_ERR [encrypted; 241 bytes] @6 CREDITS_TXT [encrypted; 417 bytes] @7 ORDER_TXT [encrypted; 323 bytes] @8 END0_TXT [encrypted; 389 bytes] @9 END1_TXT [encrypted; 507 bytes] @10 END2_TXT [encrypted; 539 bytes] @11 END3_TXT [encrypted; 512 bytes] @12 DMXGUS_INI [6311 bytes] @13 GENMIDI_OP2 [11908 bytes] @14 STARTHELP [0 bytes] @15 REG_VER1_TXT [encrypted; 407 bytes] @16 REG_VER2_TXT [encrypted; 481 bytes] @17 HELP1_TXT [encrypted; 842 bytes] @18 STORY1_TXT [encrypted; 504 bytes] @19 OVERVW01_TXT [encrypted; 468 bytes] @20 OVERVW02_TXT [encrypted; 498 bytes] @21 TRAIN01_TXT [encrypted; 470 bytes] @22 TRAIN02_TXT [encrypted; 452 bytes] @23 OVERVW03_TXT [encrypted; 504 bytes] @24 OVERVW04_TXT [encrypted; 670 bytes] @25 OVERVW05_TXT [encrypted; 370 bytes] @26 OVERVW06_TXT [encrypted; 565 bytes] @27 OVERVW07_TXT [encrypted; 575 bytes] @28 OVERVW08_TXT [encrypted; 390 bytes] @29 OVERVW09_TXT [encrypted; 486 bytes] @30 GAMEHLP1_TXT [encrypted; 593 bytes] @31 GAMEHLP2_TXT [encrypted; 643 bytes] @32 GAMEHLP3_TXT [encrypted; 633 bytes] @33 GAMEHLP4_TXT [encrypted; 671 bytes] @34 GAMEHLP5_TXT [encrypted; 601 bytes] @35 HINTS01_TXT [encrypted; 440 bytes] @36 HINTS02_TXT [encrypted; 478 bytes] @37 NEWPLAY1_TXT [encrypted; 488 bytes] @38 NEWPLAY2_TXT [encrypted; 534 bytes] @39 LOADPLY1_TXT [encrypted; 488 bytes] @40 LOADPLY2_TXT [encrypted; 451 bytes] @41 HANGHLP1_TXT [encrypted; 533 bytes] ... Code:
TEXT_IMAGE SMCYGLOG_PIC 100 10 TEXT_COLOR 80 TEXT_POS 31 66 PROGRAMMER: TEXT_POS 195 66 SCOTT HOST TEXT_POS 31 87 ARTISTS: TEXT_POS 195 87 RICH FLEIDER TIM NEVEU TEXT_POS 31 119 LEVEL DESIGN: TEXT_POS 195 119 JIM MOLINETS TEXT_POS 31 140 SOUND SYSTEM: TEXT_POS 195 140 PAUL RADEK TEXT_POS 31 163 MUSIC: TEXT_POS 195 163 MATT MURPHY |
|
![]() |
Bookmarks |
|
|