Coder Social home page Coder Social logo

Setup CD conversion support about openage HOT 7 OPEN

sfttech avatar sfttech commented on April 28, 2024 1
Setup CD conversion support

from openage.

Comments (7)

hwmrocker avatar hwmrocker commented on April 28, 2024

Why do you need ISO support? It is so easy to mount an ISO in Linux and Windows (and I am pretty sure also on a Mac)

If you point just to the filesystem structure of the DVD content and export the data from there it is all a user want. If try to read the content of the iso you need more dependencies and bloat your software. The usability gain is minimal.

Those people who have an iso probably know how to mount it.

from openage.

mic-e avatar mic-e commented on April 28, 2024

@hwmrocker: right... I think ISO browsing is pretty low priority; we shouldn't spend time to implement an ISOFS reader, nor should we make an ISOFS library a dependency. But if the user happens to have an ISO-browsing Python library installed, why not use it.

from openage.

boombatower avatar boombatower commented on April 28, 2024

Additionally, it would seem CD-ROM drives are being phased out of machine builds. Would also be cool if we could verify legal steam copy or cdkey and just provide assets, but probably as tricky and messy as drm.

from openage.

caschulz88 avatar caschulz88 commented on April 28, 2024

Did anyone already implemented something related to this issue in the past? Otherwise I would like to start doing so because I don't really want to install WINE just to extract the media files from the AoE2 installer.

Do we have CD file layouts from all editions that are available out there? I think they might differ from version to version. I only have the first release fullversion on CD-ROM available here. Would be great to get information on differences between this release and others like the Gold Edition or the extension pack.

from openage.

TheJJ avatar TheJJ commented on April 28, 2024

We have a cab reader and filesystem abstraction so you can transparently access all the archives on the CD. Mounting the iso should be done through udisksctl or something.

You can find the cab reading in openage/cabextract/.
The version detection is in openage/convert/driver.py, you might wanna improve and extend it.

We require the 1.0c patch i think, as the data format of empires.dat might be different before that.

You basically just wanna mix together now-existing stuff:

  • Mount the CD via udiskctl (or if the user mounted already, query the path).
  • Assemble the file structure via util.fslike (mount the cab archives).
  • Adjust the converter to do better version detection and extract whatever is needed (driver.py)

from openage.

azrdev avatar azrdev commented on April 28, 2024

@caschulz88 I collected some of the disk layouts here: https://gist.github.com/azrdev/e20c13f360840bc0157c. No guarantees about those without "verified original" in the title, though.
You can fork that gist as any other repo, maybe even to PRs. I'm happy to extend the list!


w.r.t. Implementing disk support: We have to decide if GameVersion should be different for an install disk and its installed variant. Since an installation (say, AoK+TC) often maps to multiple different disks.

I tend to make GameVersion an abstract class, whose singleton subclasses know how to identify themselves on a given sourcedir, and that known where the files the conversion needs are (see e.g. the empires2_x1 being named EMIRE_1.DAT in AOE2_GOLD).
The Disks would then have separate subclasses, probably.

Things might get even more complicated if we need multiple disks: AOE2 disk on its own lacks the TC content, but does TC disk have everything we need, or do we require both disks (how would we handle that)? AFAIK 1.0c patch is a requirement, what would we do with a TC disk pre-1.0c (does such exist?)

from openage.

zuntrax avatar zuntrax commented on April 28, 2024

Yup, pretty sure pre 1.0c TC disks exists. The patch can be downloaded from the internet, Age2XPatch.exe contains a cab archive at offset 0x4ADC8. This archive seems to be compressed with MSZIP (aka deflate aka rfc1951). We should implement MSZIPStream similar to LZXDStream to get this working. import zlib is our friend.

from openage.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.