Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

Initial D Arcade Stage 6AA *.xaf

Featured Replies

  • Author
  • Localization

aluigi, posted Thu Nov 09, 2017 12:34 pm (29900)


That tool does not decompress the file so it's totally useless
  • Author
  • Localization

skys215, posted Sat Dec 23, 2017 3:14 pm (30981)


I recently unpack the .xaf file according to a fork of the above-mentioned repo: https://github.com/neos7/assamUnpack.
Since I don't have C# environment and I don't want to install it, I rewrote with python.
Code:
import os
import struct

basePath = "E:\\MyDocuments\\initiald6\\" #the path to place unpacked files

f = open("G:\\Games\\Initial D 6AA\\data\\COURSE.xaf","rb") # the xaf file
fileLists = []
class fileinfo(object):
    name = ''
    isFile = ''
    parent = ''
    nextSibling = ''
    firstChild = ''
    unknown1 = ''
    length = ''
    unknown2 = ''
    blockOffset = ''
    unknown3 = ''
    """docstring for fileinfo"""
    def __init__(self, arg):
        super(fileinfo, self).__init__()
        self.name = arg['name']
        self.isFile = arg['isFile']
        self.parent = arg['parent']
        self.nextSibling = arg['nextSibling']
        self.firstChild = arg['firstChild']
        self.unknown1 = arg['unknown1']
        self.length = arg['length']
        self.unknown2 = arg['unknown2']
        self.blockOffset = arg['blockOffset']
        self.unknown3 = arg['unknown3']
    def __str__(self):
        return str(self.name)

try:
    header_descripter,header_version,header_alignment,header_numFiles,header_unknown1,header_title,header_author,header_unknown2 = struct.unpack('4siii32s64s64s80s', f.read(256))

    for i in range(0,header_numFiles):
        file = {}
        file['name'],file['isFile'],file['parent'],file['nextSibling'],file['firstChild'],file['unknown1'],file['length'],file['unknown2'],file['blockOffset'],file['unknown3'] = struct.unpack('128siiii8si4si12s',f.read(176))

        fileLists.append( fileinfo(file) )

    for i in range(0, header_numFiles):
        filepath = ''
        if(int(fileLists[i].isFile) != 0):
            p = i
            filepath = "\\" fileLists[p].name.rstrip(b'\x00').decode('utf-8') filepath #should use os.path to join parentFolder for different os compability
            p = int(fileLists[p].parent)
            while(p!=-1): #since python has no do...while structure, need do the same thing before while structure
                filepath = "\\" fileLists[p].name.rstrip(b'\x00').decode('utf-8') filepath
                p = int(fileLists[p].parent)
            filepath = basePath filepath

            if os.path.isdir(os.path.dirname(filepath)) == False:
                try:
                    os.makedirs(os.path.dirname(filepath))
                except OSError as exc:  # Python >2.5
                    if exc.errno == errno.EEXIST and os.path.isdir(filepath):
                        pass
                    else:
                        raise
            fileOffset = fileLists[i].blockOffset * header_alignment
            f.seek(fileOffset)
            content = f.read(fileLists[i].length)
            try:
                n = open(filepath,'wb')
                n.write(content)
            finally:
                n.close()
finally:
    f.close()



One strange thing is, there's some .ini file in the package, but after extract, it has the YS header as file descriptor, which it is the file descriptor of .efo file.
Though I've got the .efo file, but I have no experience with 3d modeling.
So I have completly no idea how to open this file.
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.