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)
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
BOOTH宛先印刷用CSVから色々な便利なリストを作成してCSVで出力するプログラムです。

BOOTH注文リスト作成スクリプト このPythonスクリプトは、BOOTHの「宛名印刷用CSV」から、 未発送の注文 今月の注文 特定期間の注文 を抽出した上で、各注文を商品毎に一覧化したCSVとして出力するスクリプトです。 簡単な使い方 ダウンロード 通常は、Relaseから、booth_ord

hinananoha 1 Nov 28, 2021
Singer is an open source standard for moving data between databases, web APIs, files, queues, and just about anything else you can think of.

Singer is an open source standard for moving data between databases, web APIs, files, queues, and just about anything else you can think of. Th

Singer 1.1k Jan 05, 2023
A simple bulk file renamer, written in python.

Python File Editor A simple bulk file renamer, written in python. There are two functions, the bulk rename and the bulk file extention change. Bulk Fi

Sam Bloomfield 2 Dec 22, 2021
Organizer is a python program that organizes your downloads folder

Organizer Organizer is a python program that organizes your downloads folder, it can run as a service and so will start along with the system, and the

Gustavo 2 Oct 18, 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
Swiss army knife for Apple's .tbd file manipulation

Description Inspired by tbdswizzler, this simple python tool for manipulating Apple's .tbd format. Installation python3 -m pip install --user -U pytbd

10 Aug 31, 2022
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

Furkan Baytekin 1 Oct 17, 2021
This is a file deletion program that asks you for an extension of a file (.mp3, .pdf, .docx, etc.) to delete all of the files in a dir that have that extension.

FileBulk This is a file deletion program that asks you for an extension of a file (.mp3, .pdf, .docx, etc.) to delete all of the files in a dir that h

Enoc Mena 1 Jun 26, 2022
useful files for the Freenove Big Hexapod

FreenoveBigHexapod useful files for the Freenove Big Hexapod HexaDogPos is a utility for converting the Freenove xyz co-ordinate system to servo angle

Alex 2 May 28, 2022
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
Kartothek - a Python library to manage large amounts of tabular data in a blob store

Kartothek - a Python library to manage (create, read, update, delete) large amounts of tabular data in a blob store

15 Dec 25, 2022
dotsend is a web application which helps you to upload your large files and share file via link

dotsend is a web application which helps you to upload your large files and share file via link

Devocoe 0 Dec 03, 2022
File storage with API access. Used as a part of the Swipio project

API File storage File storage with API access. Used as a part of the Swipio project 📝 About The Project File storage allows you to upload and downloa

25 Sep 17, 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
This program can help you to move and rename many files at once

This program can help you to rename and save many files in a folder in seconds, but don't give the same name to files, it can delete both files.

João Assalim 1 Oct 10, 2022
Media file renamer and organizion tool

mnamer mnamer (media renamer) is an intelligent and highly configurable media organization utility. It parses media filenames for metadata, searches t

Jessy Williams 533 Dec 29, 2022
A Certificate renaming tool made for IEEE CS SBC, SJCE.

PDF Batch Renamer Made for IEEE CS SBC, SJCE How to use? Before using the python script, ensure that pytesseract, pdf2image, opencv and other supporti

Ashwin Kumar U 2 Nov 14, 2021
BREP : Binary Search in plaintext and gzip files

BREP : Binary Search in plaintext and gzip files Search large files in O(log n) time using binary search. We support plaintext and Gzipped files. Benc

Arnaud de Saint Meloir 5 Dec 24, 2021
Python's Filesystem abstraction layer

PyFilesystem2 Python's Filesystem abstraction layer. Documentation Wiki API Documentation GitHub Repository Blog Introduction Think of PyFilesystem's

pyFilesystem 1.8k Jan 02, 2023