Dragon Age: Origins toolset to extract/build .erf files, patch language-specific .dlg files, and view the contents of files in the ERF or GFF format

Overview

DAOTools

This is a set of tools for Dragon Age: Origins modding.
It can patch the text lines of .dlg files, extract and build an .erf file, and view the contents of files in GFF and ERF format.

I made this program to fix the text lines of .dlg files, that once edited in the Dragon Age Toolset, from not being language-specific, got replaced with english lines.

I noticed, that the original .dlg files of the game, had both NTRY and RPLY CONVERSATION_LINE_TEXT set like this:
string_offset = 0
while the modified QUDAO .dlg files had either:
string_offset = 4294967295 (0xFFFFFFFF) (I don't know what this is for, but in the toolset this is represented as '{index}:', while 0x00 is '{index}')
or:
string_offset = an offset pointing to a string

Replacing the string offset with 0 is enough to fix this.
The program looks for CONVERSATION_LINE_TEXT (actually not only that), and edits the string offset to 0 (without deleting the orphaned data, since the size difference is minimal).
It does this for every .dlg file inside a directory with extracted .erf files, and builds the .erf file again.

The program is pretty slow at patching a .dlg file, because parsing the whole file is required.
When patching all of the QUDAO files extracted from the .erf file (242 .dlg files), it can need as long as 10 minutes (most likely less than 5) to process them: it depends on the number of cores your CPU has got, feel free to report the execution time in the related issue.

How to use it

pip3 install construct
git clone https://github.com/humhue/DAOTools.git
python3 DAOTools 'file.erf' 'patched_file.erf'

How to fix QUDAO

First, set up this library as explained in the previous step.
Then, download QUDAO at https://www.nexusmods.com/dragonage/mods/4689/?tab=files.
Extract the file and unzip the .dazip file as if it was a normal .zip
Now browse to Contents/addins/qwinn_fixpack_3/module/data, you'll find a file named qwinn_fixpack_3_module.erf.
That's the file we have to patch.
Assuming that we have this library installed, we can write (in the path we cloned this project) the command:

python3 DAOTools 'QUDAO Fixpack v3_5/Contents/addins/qwinn_fixpack_3/module/data/qwinn_fixpack_3_module.erf' 'QUDAO Fixpack v3_5/Contents/addins/qwinn_fixpack_3/module/data/qwinn_fixpack_3_module_patched.erf'

After this, we can delete the original .erf file in Contents/addins/qwinn_fixpack_3/module/data, replace it with the patched version, and change the name again to qwinn_fixpack_3_module.erf.
You now have to zip the Contents directory with the Manifest.xml file, and rename it QUDAO Fixpack v3 _5_patched.dazip or whatever you feel like. Now all you have to do is to install the .dazip file as you normally would.

You might also like...
Extract longest transcript or longest CDS transcript from GTF annotation file or gencode transcripts fasta file.

Extract longest transcript or longest CDS transcript from GTF annotation file or gencode transcripts fasta file.

Various technical documentation, in electronically parseable format

a-pile-of-documentation Various technical documentation, in electronically parseable format. You will need Python 3 to run the scripts and programs in

Python function to stream unzip all the files in a ZIP archive: without loading the entire ZIP file or any of its files into memory at once

Python function to stream unzip all the files in a ZIP archive: without loading the entire ZIP file or any of its files into memory at once

csv2ir is a script to convert ir .csv files to .ir files for the flipper.

csv2ir csv2ir is a script to convert ir .csv files to .ir files for the flipper. For a repo of .ir files, please see https://github.com/logickworkshop

MHS2 Save file editing tools. Transfers save files between players, switch and pc version, encrypts and decrypts.

SaveTools MHS2 Save file editing tools. Transfers save files between players, switch and pc version, encrypts and decrypts. Credits Written by Asteris

Uproot is a library for reading and writing ROOT files in pure Python and NumPy.
Uproot is a library for reading and writing ROOT files in pure Python and NumPy.

Uproot is a library for reading and writing ROOT files in pure Python and NumPy. Unlike the standard C++ ROOT implementation, Uproot is only an I/O li

A JupyterLab extension that allows opening files and directories with external desktop applications.
A JupyterLab extension that allows opening files and directories with external desktop applications.

A JupyterLab extension that allows opening files and directories with external desktop applications.

pydicom - Read, modify and write DICOM files with python code

pydicom is a pure Python package for working with DICOM files. It lets you read, modify and write DICOM data in an easy "pythonic" way.

Creates folders into a directory to categorize files in that directory by file extensions and move all things from sub-directories to current directory.

Categorize and Uncategorize Your Folders Table of Content TL;DR just take me to how to install. What are Extension Categorizer and Folder Dumper Insta

Comments
  • Write an .erf extractor

    Write an .erf extractor

    Writing an .erf extractor would let us process and fix files in an easier way. Currently, to fix a file, is required the installation of the Dragon Age Toolset, but was there such a file, the Toolset would't be required anymore.

    opened by humhue 0
  • dlg_patcher.py: patch_dlg is really slow

    dlg_patcher.py: patch_dlg is really slow

    It takes 10 minutes on my hardware to patch all the 242 .dlg files inside qwinn_fixpack_3_module.erf when using one core, 6 minutes when using two cores, and 2 minutes and a half when using 4 of them.

    opened by humhue 0
Releases(v1.1.0)
  • v1.1.0(Dec 17, 2021)

    Disclaimer

    I'm not the author of QUDAO, available at https://www.nexusmods.com/dragonage/mods/4689, whose author is Paul Escalona (aka Qwinn).
    I created only this toolset and a QUDAO patch to make QUDAO dialogues non-language-specific and thus enjoyable by non-english speakers.

    QUDAO Fixpack v3.5

    Version 3.5 has 63 new fixes, and 8 improved old ones! This fixpack attempts to address ALL dialogue, quest, scripting, plot, and most item bugs in the base game of Dragon Age: Origins. It also restores a great deal of previously inaccessible content.

    This version patches mission plots, codex entries and cutscenes.

    QUDAO Hotfix v3.52

    Main 3.5 file required. Install this manually. See included readme for installation instructions and details.

    This is the same as v1.0.0, so you don't have to update it.

    Source code(tar.gz)
    Source code(zip)
    QUDAO.Fixpack.v3_5.patch.v1_1_0.dazip(125.53 MB)
    QUDAO.Hotfix.v3_52.patched.zip(610.30 KB)
  • v1.0.1(Dec 11, 2021)

    Disclaimer

    I'm not the author of QUDAO, available at https://www.nexusmods.com/dragonage/mods/4689, whose author is Paul Escalona (aka Qwinn).
    I created only this toolset and a QUDAO patch to make QUDAO dialogues non-language-specific and thus enjoyable by non-english speakers.

    QUDAO Fixpack v3.5

    Version 3.5 has 63 new fixes, and 8 improved old ones! This fixpack attempts to address ALL dialogue, quest, scripting, plot, and most item bugs in the base game of Dragon Age: Origins. It also restores a great deal of previously inaccessible content.

    This version contains new non-language-specific .dlg text lines.

    QUDAO Hotfix v3.52

    Main 3.5 file required. Install this manually. See included readme for installation instructions and details.

    This is the same as v1.0.0, so you don't have to update it.

    Source code(tar.gz)
    Source code(zip)
    QUDAO.Fixpack.v3_5.patch.v1_0_1.dazip(125.53 MB)
    QUDAO.Hotfix.v3_52.patched.zip(610.30 KB)
  • v1.0.0(Dec 9, 2021)

    Disclaimer

    I'm not the author of QUDAO, available at https://www.nexusmods.com/dragonage/mods/4689, whose author is Paul Escalona (aka Qwinn).
    I created only this toolset and a QUDAO patch to make QUDAO dialogues non-language-specific and thus enjoyable by non-english speakers.

    QUDAO Fixpack v3.5

    Version 3.5 has 63 new fixes, and 8 improved old ones! This fixpack attempts to address ALL dialogue, quest, scripting, plot, and most item bugs in the base game of Dragon Age: Origins. It also restores a great deal of previously inaccessible content.

    QUDAO Hotfix v3.52

    Main 3.5 file required. Install this manually. See included readme for installation instructions and details.

    Source code(tar.gz)
    Source code(zip)
    QUDAO.Fixpack.v3_5.patched.dazip(125.53 MB)
    QUDAO.Hotfix.v3_52.patched.zip(610.30 KB)
Quick and dirty FAT12 filesystem to ZIP file converter

Quick and Dirty FAT12 Filesystem Converter This is a really crappy Python script I wrote to convert a semi-compatible FAT12 filesystem from my HP150's

Tube Time 2 Feb 12, 2022
Convert All TXT Files To One File.

AllToOne Convert All TXT Files To One File. Hi šŸ‘‹ , I'm Alireza A Python Developer Boy šŸ”­ I’m currently working on my C# projects 🌱 I’m currently Lea

4 Jun 07, 2022
A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".

the problem What directory should your app use for storing user data? If running on macOS, you should use: ~/Library/Application Support/AppName If

ActiveState Software 948 Dec 31, 2022
Object-oriented file system path manipulation

path (aka path pie, formerly path.py) implements path objects as first-class entities, allowing common operations on files to be invoked on those path

Jason R. Coombs 1k Dec 28, 2022
Yadl - it is a simple library for working with both dotenv files and environment variables.

Yadl Yadl - it is a simple library for working with both dotenv files and environment variables. Features Validation of whitespaces. Validation of num

Ivan Kapranov 3 Oct 19, 2021
Nintendo Game Boy music assembly files parser into musicxml format

GBMusicParser Nintendo Game Boy music assembly files parser into musicxml format This python code will get an file.asm from the disassembly of a Game

1 Dec 11, 2021
organize - The file management automation tool

organize - The file management automation tool

Thomas Feldmann 1.5k Jan 01, 2023
Pure Python tools for reading and writing all TIFF IFDs, sub-IFDs, and tags.

Tiff Tools Pure Python tools for reading and writing all TIFF IFDs, sub-IFDs, and tags. Developed by Kitware, Inc. with funding from The National Canc

Digital Slide Archive 32 Dec 14, 2022
This python project contains a class FileProcessor which allows one to grab a file and get some meta data and header information from it

This python project contains a class FileProcessor which allows one to grab a file and get some meta data and header information from it. In the current state, it outputs a PrettyTable to txt file as

Joshua Wren 1 Nov 09, 2021
CSV-Handler written in Python3

CSVHandler This code allows you to work intelligently with CSV files. A file in CSV syntax is converted into several lists, which are combined in a to

Max Tischberger 1 Jan 13, 2022
A wrapper for DVD file structure and ISO files.

vs-parsedvd DVDs were an error. A wrapper for DVD file structure and ISO files. You can find me in the IEW Discord server

7 Nov 17, 2022
Find potentially sensitive files

find_files Find potentially sensitive files This script searchs for potentially sensitive files based off of file name or string contained in the file

4 Aug 20, 2022
LightCSV - This CSV reader is implemented in just pure Python.

LightCSV Simple light CSV reader This CSV reader is implemented in just pure Python. It allows to specify a separator, a quote char and column titles

Jose Rodriguez 6 Mar 05, 2022
Extract longest transcript or longest CDS transcript from GTF annotation file or gencode transcripts fasta file.

Extract longest transcript or longest CDS transcript from GTF annotation file or gencode transcripts fasta file.

laojunjun 13 Nov 23, 2022
A python wrapper for libmagic

python-magic python-magic is a Python interface to the libmagic file type identification library. libmagic identifies file types by checking their hea

Adam Hupp 2.3k Dec 29, 2022
Search for files under the specified directory. Extract the file name and file path and import them as data.

Search for files under the specified directory. Extract the file name and file path and import them as data. Based on that, search for the file, select it and open it.

G-jon FujiYama 2 Jan 10, 2022
File-manager - A basic file manager, written in Python

File Manager A basic file manager, written in Python. Installation Install Pytho

Samuel Ko 1 Feb 05, 2022
Automatically generates a TypeQL script for doing entity and relationship insertions from a .csv file, so you don't have to mess with writing TypeQL.

Automatically generates a TypeQL script for doing entity and relationship insertions from a .csv file, so you don't have to mess with writing TypeQL.

3 Feb 09, 2022
A tool for batch processing large fasta files and accompanying metadata table to upload to repositories via API

Fasta Uploader A tool for batch processing large fasta files and accompanying metadata table to repositories via API The python fasta_uploader.py scri

Centre for Infectious Disease and One Health 1 Dec 09, 2021
This is a junk file creator tool which creates junk files in Internal Storage

This is a junk file creator tool which creates junk files in Internal Storage

KiLL3R_xRO 3 Jun 20, 2021