XeNTaX Forum Index
Forum MultiEx Commander Tools Tools Home
It is currently Wed Jun 28, 2017 10:06 am

All times are UTC + 1 hour


Forum rules


Please click here to view the forum rules



Post new topic Reply to topic  [ 6 posts ] 
Author Message
 Post subject: AirStrike 1-2 - Archives
PostPosted: Sat Dec 24, 2005 11:52 pm 
Offline
VVIP member
VVIP member

Joined: Tue Apr 12, 2005 11:36 am
Posts: 445
Has thanked: 0 time
Have thanks: 2 times














You can make the ads go away by registering

Watto in you at the site written which Game Extractor is supported APK archives from game AirStrike... while in me why there is no the this plugin ?? :oops:

http://www.divogames.com/games/airstrik ... f_demo.exe
http://www.divogames.ru/games/airstrike ... 2_demo.exe
http://www.divogames.ru/games/airstrike/as3d_demo.exe

_________________
Game Extraction Central
Game Extractor Version 1.5507
MultiEx Commander Full Version v4.3.0


Top
 Profile  
 
 Post subject:
PostPosted: Sun Dec 25, 2005 12:00 am 
Offline
VVIP member
VVIP member
User avatar

Joined: Wed Jun 30, 2004 3:01 pm
Posts: 533
Location: Australia
Has thanked: 0 time
Have thanks: 4 times
Hi mate,

Air Strike 2 is a game that is supported using the Format Scanner (available in the full version). What this means is that I was not able to work out the archive format, but there were some common files in there that could be found using the format scanner - probably *.wav files.

You can see the relevant wiki thread at http://wiki.xentax.com/index.php/Airstr ... lf_Thunder

I have actually just downloaded the demo for Airstrike 2 yesterday, but havn't had the time to look at it yet - maybe I will be able to work it out now :)

So why is there no plugin? Because it uses the format scanner. I have not included the format scanner in the source code, otherwise people would be able to compile the archive and get access to some of the full version features - but I can send you the source to 1 or 2 scanners if you really want them.

WATTO
watto@watto.org
http://www.watto.org

_________________
Game Extractor - Program to read and write hundreds of game archives.
REQUEST RULES - Read before posting a game request.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Dec 25, 2005 12:10 am 
Offline
VVIP member
VVIP member

Joined: Tue Apr 12, 2005 11:36 am
Posts: 445
Has thanked: 0 time
Have thanks: 2 times
Oke oke ..... Watto look to this


I am using Extractor v2.4 ( This game scanner )


Attachments:


You do not have the required permissions to view the files attached to this post. Register to gain access.


_________________
Game Extraction Central
Game Extractor Version 1.5507
MultiEx Commander Full Version v4.3.0


Top
 Profile  
 
 Post subject:
PostPosted: Sun Dec 25, 2005 12:31 am 
Offline
VVIP member
VVIP member

Joined: Tue Apr 12, 2005 11:36 am
Posts: 445
Has thanked: 0 time
Have thanks: 2 times
After the starting of game is created astrike.log the file of this content


Code:
---- Initializing file system ----

  pak0.apk - 840 files
  pak1.apk - 486 files
  pak2.apk - 25 files

F_Init:
3 data files found.

---- Initializing sound system ----
  BASS_Init: Succeeded.

File 'gfx\logo\glow.tga' not found.
G_LoadObjects:  760 objects parsed succefully.

ERROR: Unknown object 'boss_1_rapidgun_proj'.
ERROR: Unknown object 'boss_1_rapidgun_flash'.
File 'gfx\logo\glow.tga' not found.
Shutting down sound system.


:) I am using AirStrike3D II - Gulf Demo

_________________
Game Extraction Central
Game Extractor Version 1.5507
MultiEx Commander Full Version v4.3.0


Top
 Profile  
 
 Post subject:
PostPosted: Wed Dec 28, 2005 11:37 am 
Offline
VVIP member
VVIP member
User avatar

Joined: Wed Jun 30, 2004 3:01 pm
Posts: 533
Location: Australia
Has thanked: 0 time
Have thanks: 4 times
I do not yet have a TGA scanner in Game Extractor - I did originally but I removed it because it was slow (worked backwards through a file instead of forwards). I might look into re-supporting this format when I have some time to do it.

The error log file that happens when the game starts is just because the game developer removed some of the images from the archive, but did not remove the links from the startup script - this should not be a problem.

I hope this is the kind of thing you were asking.

WATTO
watto@watto.org
http://www.watto.org

_________________
Game Extractor - Program to read and write hundreds of game archives.
REQUEST RULES - Read before posting a game request.


Top
 Profile  
 
 Post subject: Re: AirStrike 1-2 - Archives
PostPosted: Thu Mar 02, 2017 12:27 am 
Offline
ultra-n00b

Joined: Thu Mar 02, 2017 12:22 am
Posts: 1
Has thanked: 0 time
Have thanks: 1 time
12 years late but whatever...

I found this thread as pretty much the only search result for AirStrike so I had to work it out from scratch. Here's a writeup on the .apk file format including the "encryption" (skip to the bottom section) -> http://www.tkte.ch/2017/02/27/air-strike-3d.html

Just in case links aren't allowed on this forum, everything you need:

Code:
#!/usr/bin/env python
# -*- utf-8 -*-
import sys
import struct


class PakParser(object):
    #: File prefix.
    MAGIC_NUMBER = b'\x00\x00\x80\x3F\x99\x99\x00\x00'
    TABLE_ENTRY_SIZE = 76

    def __init__(self):
        self.file_count = 0
        self.cipher_table = None
        self.file_table = {}

    def load(self, file_obj):
        if not file_obj.read(len(self.MAGIC_NUMBER)) == self.MAGIC_NUMBER:
            raise IOError('invalid magic number')

        # The start of the file listing table (given from the start of the
        # file) and the number of file entries.
        file_table_offset, self.file_count = struct.unpack(
            '<II',
            file_obj.read(8)
        )

        # The cipher table comes after the header fields and is always exactly
        # 1kb.
        self.cipher_table = file_obj.read(1024)

        # Each entry in the file listing table is 76 bytes.
        file_obj.seek(file_table_offset, 0)

        self.file_table = dict(
            (filename.strip('\x00'), (offset, size))
            for filename, offset, size in (
                self.unpack_table_entry(
                    self.decipher(
                        file_obj.read(self.TABLE_ENTRY_SIZE),
                        i * self.TABLE_ENTRY_SIZE
                    )
                )
                for i in xrange(self.file_count)
            )
        )

    def decipher(self, chunk, offset):
        return ''.join(
            chr(
                ord(c)
                ^
                ord(self.cipher_table[(i + offset) % 1024])
            )
            for i, c in enumerate(chunk)
        )

    def unpack_table_entry(self, entry):
        # Filename (64 bytes)
        # Offset (4 bytes)
        # Size (4 bytes)
        # The unknown 4 bytes seem to always be 0.
        return struct.unpack_from('<64sIII', entry)[:3]

    def extract_file(self, file_obj, file_name):
        offset, size = self.file_table[file_name]
        file_obj.seek(offset, 0)
        return file_obj.read(size)


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 6 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: Yahoo [Bot] and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group