حجم‌ها · bei.pm

منتشر شده در 19/11/2015·به‌روزرسانی شده در 13/02/2025·پرسش
این متن به‌صورت خودکار توسط OpenAI GPT-4o Mini ترجمه شده است.

فرمت‌های فایل توصیف‌شده در این صفحه بر پایه تحلیل فنی مالکیت معنوی شرکت Dynamix, Inc. و Sierra Entertainment بنا شده است.
مالکیت معنوی امروزه بخشی از دارایی‌های Activision Publishing, Inc. / Activision Blizzard, Inc. است و در حال حاضر در مالکیت Microsoft Corp. قرار دارد.

این اطلاعات از طریق مهندسی معکوس و تحلیل داده‌ها برای اهداف بایگانی و تعامل‌پذیری با داده‌های تاریخی جمع‌آوری شده است.
هیچ مشخصات مالکیتی یا محرمانه‌ای مورد استفاده قرار نگرفته است.

این بازی در حال حاضر می‌تواند از gog.com به صورت دانلودی خریداری شود.

حجم‌ها یک ظرف داده برای بازی هستند، مشابه به یک فرمت آرشیو مانند Tarball. حداقل در Outpost 2 این فرمت تنها شامل فایل‌ها است - بدون پوشه‌ها. احتمالاً می‌توان این‌ها را از طریق نام‌های فایل مناسب شبیه‌سازی کرد.

یک حجم شامل سرصفحه حجم و چندین بلوک حجم است که با فایل‌های خاص مطابقت دارند.

"حجم‌ها" فایل‌هایی هستند با پسوند 'vol' در دایرکتوری بازی.

آدرس x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF شخصیت
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
آدرس جابه‌جایی نوع داده نام توضیح
0x0000 uint(32) بایت‌های جادویی
0x0004 uint(24) بلوک-طول
0x0007 uint(8) پرچم‌ها

سرصفحه حجم

آدرس x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF شخصیت
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
آدرس جابه‌جایی نوع داده نام توضیح
0x0000 uint(32) بایت‌های جادویی
0x0004 uint(24) بلوک-طول
0x0007 uint(8) پرچم‌ها

هدر حجم خود هیچ داده‌ای ندارد.
این فقط به عنوان یک کانتینر عمل می‌کند.

به عنوان تاریخ اول در هدر حجم، باید رشته‌های حجم قرار داشته باشند؛ و پس از آن اطلاعات حجم دنبال می‌آید.

رشته‌های حجم

آدرس x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF شخصیت
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
آدرس جابه‌جایی نوع داده نام توضیح
0x0000 uint(32) بایت‌های جادویی
0x0004 uint(24) بلوک-طول
0x0007 uint(8) پرچم‌ها
آدرس x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF شخصیت
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
آدرس جابه‌جایی نوع داده نام توضیح
0x0000 uint(32) بایت‌های جادویی
0x0004 uint(24) بلوک-طول
0x0007 uint(8) پرچم‌ها
0x0008 uint(32) طول بارگذاری

مشخص می‌کند که چند بایت از داده‌های زیر واقعاً داده‌های مفید هستند.

داده‌های باقی‌مانده در لیست رشته‌های حجم به وضوح باید به عنوان زائد در نظر گرفته شوند.

در فایل‌های با تاریخ‌های جدیدتر، این 'داده‌های باقی‌مانده' 0x00 هستند، که می‌تواند به نواقص موجود در ابزارهای توسعه در حین ساخت بازی اشاره کند، به عبارت دیگر، نشان می‌دهد که یک توسعه‌دهنده بسیار دیر به درست کردن مقداردهی اولیه بافرها پرداخته است، زیرا این که داده‌ها مقداردهی اولیه شده‌اند یا نه تأثیری بر بازی ندارد.

0x000c uint(8)[] لیست نام‌های فایل

این یک لیست از نام فایل‌ها است که با ۰ بایت خاتمه یافته و انتظار می‌رود که - حداقل در این بخش از داده‌ها - تنها شامل کاراکترهای ASCII باشد.

لازم نیست هنگام تجزیه داده‌ها، این بلوک داده را به دقت بیشتری ارزیابی کرد، زیرا در اطلاعات حجم به طور مستقیم آدرس‌های نام فایل‌ها اشاره شده است.

رشته‌های حجم شامل فهرستی از نام‌های فایل هستند که درون حجم موجود است.

اطلاعات حجم

آدرس x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF شخصیت
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
آدرس جابه‌جایی نوع داده نام توضیح
0x0000 uint(32) بایت‌های جادویی
0x0004 uint(24) بلوک-طول
0x0007 uint(8) پرچم‌ها

اطلاعات حجم شامل جزئیات بیشتری درباره فایل‌ها می‌باشد. این اطلاعات به نوعی به یک ورودی دایرکتوری FAT (FAT = جدول تخصیص فایل) شباهت دارد.

تعداد فایل‌ها از تقسیم اندازه بلوک بر طول ورودی‌های دایرکتوری - 14 بایت به دست می‌آید.

هر یک از ورودی‌های دایرکتوری دارای ساختار زیر می‌باشند:

آدرس x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF شخصیت
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
آدرس جابه‌جایی نوع داده نام توضیح
0x0000 uint(32) آفست نام فایل

نشان می‌دهد که در کدام offset (!) در داخل لیست نام‌های فایل (Volume-Strings) نام فایل قرار دارد.

این موضوع به ابتدای بلوک داده‌های مفید اشاره دارد.

0x0004 uint(32) آفست فایل

موقعیت فایل را در داخل کل فایل حجم نشان می‌دهد.

0x0008 uint(32) حجم فایل

حجم فایل را به بایت مشخص می‌کند.

0x000c uint(16) پرچم‌ها؟

به نظر می‌رسد اطلاعات اضافی درباره کدگذاری فایل ارائه می‌شود.

  • 0x03 تنظیم شده است، اگر فایل فشرده باشد. به نظر می‌رسد که در اینجا از یک درخت هافمن استفاده شده است.
  • 0x80 به طور ظاهری همیشه تنظیم شده است.

بلوک حجم

آدرس x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF شخصیت
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
آدرس جابه‌جایی نوع داده نام توضیح
0x0000 uint(32) بایت‌های جادویی
0x0004 uint(24) بلوک-طول
0x0007 uint(8) پرچم‌ها

یک بلوک حجم به معنای یک کانتینر است که فایل‌ها را در خود جای می‌دهد. او تنها یک بار دیگر - به دلیل فرمت بلوک - اندازه فایل را به صورت اضافی شامل می‌شود و سپس داده‌های مورد استفاده به طور مستقیم دنبال می‌شوند.