Comments (7)
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.
@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.
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.
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.
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.
@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.
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)
- "error: βDictβ is not a member of βnyanβ" during build HOT 7
- Can't build with clang, error: "jthread is supported now, remove custom definition" HOT 4
- Asset conversion issue, AttributeError: 'NoneType' object has no attribute 'readable' HOT 6
- Adding PR/ISSUE Templates for this repo HOT 7
- Asset path type is incorrectly used HOT 5
- error: Couldn't find qml root folder HOT 15
- Test fail when building with GCC 13.2.1 HOT 10
- Error launching game, uncaught exception(s) HOT 25
- openage game: error: the following arguments are required: --modpacks HOT 4
- Running Error on Mac osx 13.4(Macbook M1 Pro ARM architecture) HOT 1
- FATAL: terminate has been called uncaught exception std::exception of type std::__1::system_error: thread::join failed: Invalid argument HOT 2
- Multiple cmake issues when trying to build HOT 4
- Submission to Steam HOT 2
- OpenGL error when launching on Wayland HOT 11
- CMake can't find toml11 on Linux Mint 21.2 HOT 4
- Errors after the new PR merged HOT 3
- Link on website https://openage.sft.mx/ to windows packages is a broken link HOT 2
- Windows Build: Python Command Requiring --modpacks Argument HOT 3
- Asset conversion stalls on media conversion HOT 10
- Fix Ubuntu Dependency installation script HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openage.