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)
fast change directory with python and ruby

fcdir fast change directory with python and ruby run run python script , chose drirectoy and change your directory need you need python and ruby deskt

XCO 2 Jun 20, 2022
Better directory iterator and faster os.walk(), now in the Python 3.5 stdlib

scandir, a better directory iterator and faster os.walk() scandir() is a directory iteration function like os.listdir(), except that instead of return

Ben Hoyt 506 Dec 29, 2022
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

Department for International Trade 206 Jan 02, 2023
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
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
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
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
Python function to construct a ZIP archive with on the fly - without having to store the entire ZIP in memory or disk

Python function to construct a ZIP archive with on the fly - without having to store the entire ZIP in memory or disk

Department for International Trade 34 Jan 05, 2023
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
Listreqs is a simple requirements.txt generator. It's an alternative to pipreqs

⚡ Listreqs Listreqs is a simple requirements.txt generator. It's an alternative to pipreqs. Where in Pipreqs, it helps you to Generate requirements.tx

Soumyadip Sarkar 4 Oct 15, 2021
Python interface for reading and appending tar files

Python interface for reading and appending tar files, while keeping a fast index for finding and reading files in the archive. This interface has been

Lawrence Livermore National Laboratory 1 Nov 12, 2021
PaddingZip - a tool that you can craft a zip file that contains the padding characters between the file content.

PaddingZip - a tool that you can craft a zip file that contains the padding characters between the file content.

phithon 53 Nov 07, 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
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
Extract the windows major and minor build numbers from an ISO file, and automatically sort the iso files.

WindowsBuildFromISO Extract the windows major and minor build numbers from an ISO file, and automatically sort the iso files. Features Parse multiple

Podalirius 9 Nov 09, 2022
Measure file similarity in a many-to-many fashion

Mesi Mesi is a tool to measure the similarity in a many-to-many fashion of long-form documents like Python source code or technical writing. The outpu

GatorEducator 3 Feb 02, 2022
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
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
Two scripts help you to convert csv file to md file by template

Two scripts help you to convert csv file to md file by template. One help you generate multiple md files with different filenames from the first colume of csv file. Another can generate one md file w

2 Oct 15, 2022