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)
Python package to read and display segregated file names present in a directory based on type of the file

tpyfilestructure Python package to read and display segregated file names present in a directory based on type of the file. Installation You can insta

Tharun Kumar T 2 Nov 28, 2021
Get Your TXT File Length !.

TXTLen Get Your TXT File Length !. Hi 👋 , I'm Alireza A Python Developer Boy 🔭 I’m currently working on my C# projects 🌱 I’m currently Learning CSh

Alireza Hasanzadeh 1 Jan 06, 2022
A file utility for accessing both local and remote files through a unified interface.

A file utility for accessing both local and remote files through a unified interface.

AI2 19 Nov 16, 2022
The best way to convert files on your computer, be it .pdf to .png, .pdf to .docx, .png to .ico, or anything you can imagine.

The best way to convert files on your computer, be it .pdf to .png, .pdf to .docx, .png to .ico, or anything you can imagine.

JareBear 2 Nov 20, 2021
Vericopy - This Python script provides various usage modes for secure local file copying and hashing.

Vericopy This Python script provides various usage modes for secure local file copying and hashing. Hash data is captured and logged for paths before

15 Nov 05, 2022
Fast Python reader and editor for ASAM MDF / MF4 (Measurement Data Format) files

asammdf is a fast parser and editor for ASAM (Association for Standardization of Automation and Measuring Systems) MDF (Measurement Data Format) files

Daniel Hrisca 440 Dec 31, 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
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
A simple library for temporary storage of small files

TemporaryStorage An simple library for temporary storage of small files. Navigation Install Usage In Python console As a standalone application List o

2 Apr 17, 2022
Organize the files into the relevant sub-folders

This program can be used to organize files in a directory by their file extension. And move duplicate files to a duplicates folder.

Thushara Thiwanka 2 Dec 15, 2021
A simple file module for creating, editing and saving files.

A simple file module for creating, editing and saving files.

1 Nov 25, 2021
This project is a set of programs that I use to create a README.md file.

🤖 codex-readme 📜 codex-readme What is it? This project is a set of programs that I use to create a README.md file. How does it work? It reads progra

Tom Dörr 224 Jan 07, 2023
RMfuse provides access to your reMarkable Cloud files in the form of a FUSE filesystem

RMfuse provides access to your reMarkable Cloud files in the form of a FUSE filesystem. These files are exposed either in their original format, or as PDF files that contain your annotations. This le

Robert Schroll 82 Nov 24, 2022
Read and write TIFF files

Read and write TIFF files Tifffile is a Python library to store numpy arrays in TIFF (Tagged Image File Format) files, and read image and metadata fro

Christoph Gohlke 346 Dec 18, 2022
An easy-to-use library for emulating code in minidump files.

dumpulator Note: This is a work-in-progress prototype, please treat it as such. An easy-to-use library for emulating code in minidump files. Example T

Duncan Ogilvie 362 Dec 31, 2022
A Python library that provides basic functions to read / write Aseprite format files

A Python library that provides basic functions to read / write Aseprite format files

Joe Trewin 1 Jan 13, 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
This simple python script pcopy reads a list of file names and copies them to a separate folder

pCopy This simple python script pcopy reads a list of file names and copies them to a separate folder. Pre-requisites Python 3 (ver. 3.6) How to use

Madhuranga Rathnayake 0 Sep 03, 2021
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.

martinRenou 0 Oct 14, 2021