Platform Conversion Utility (PCU)
Release Candidate 1
Author: Ascension64
WARNING!
This utility was made for modders. Although this utility will not damage your Baldur�s Gate or Baldur�s Gate II installation in any way, if you do not understand how this program works, refrain from using it.
DISCLAIMER
The author of this utility is not responsible for any public releases of modifications in which the development has relied partly or solely on any aspect of this utility, except in cases where the author has formally agreed to be an author of the modification.
Please give credit if this utility has been used in the development of a publicly released modification.
- A full installation of Baldur�s Gate (and Tales of the Sword Coast), and/or Baldur�s Gate II (either Shadows of Amn or Throne of Bhaal)
- Windows 95 or newer (use of xcopy /E /L)
1. Extract this archive to either your Baldur�s Gate (and Tales of the Sword Coast), or Baldur�s Gate II (either Shadows of Amn or Throne of Bhaal) installation directory, depending on what ruleset you would like to use to parse script and dialogue files.
2. Extract the modification that you would like to convert to <IE game installation directory>\PCU\Input.
3. Run <IE game installation directory>\Setup-PCU.exe.
4. Select the appropriate conversion type when prompted. If you choose a custom conversion, make sure a dictionary named Custom.tph is present in <IE game installation directory>\PCU\Dict.
6. Wait patiently till the conversion is complete.
7. The program automatically uninstalls without affecting the output.
8. The output files can be found in <IE game installation directory>\Output.
The purpose of this utility is to allow batch conversion of resource names, as file and within file types, from one naming convention to another. This utility, previously known as the Tutu2BGT converter utility, first allowed the conversion of BG1Tutu naming conventions to BGT naming conventions.
Be wary of the efficacy of this utility. See the Limitations section for details.
The utility works in an iterative, step-wise manner. Details of the conversion mechanism are described below:
a. The dictionary, containing source names and target names, is loaded depending on the subcomponent selection made by the user.
b. Filelist.txt is generated via MakeList.bat, which runs an xcopy /E /L >> Filelist.txt command. The /L switch prevents actual copying of files, but will generate a list of files that will be saved into Filelist.txt.
c. Filelist.txt is modified by PCU in a complex fashion to allow entire rows to be read.
d. For each entry in Filelist.txt, PCU determines the full path, extension, file name length, and directory path, of the entry and stores them into variables
e. If the directory path is a new directory, then that directory will be created
f. The file is copied to the output directory, and then the file type is determined under the following parameters in the following priority:
file size is 0 bytes (ignore file)
file header is AREAV1.0 (ARE file)
file has extension "BAF" (script source file)
file header is SC\nCR\nCO (BCS file) - where \n means 'new line'
file header is CRE V1.0 (CRE file)
file has extension "D" (dialogue source file)
file header is DLG V1.0 (DLG file)
file header is EFF V2.0 (EFF file)
file header is ITM V1 (ITM file)
file header is SPL V1 (SPL file)
file header is STORV1.0 (STO file)
file has extension "TRA" (TRA file)
file has extension "TP2" or "TPH" or "TPP" (TP2 file)
file header is VVC V1.0 (VVC file)
file header is WED V1.3 (WED file)
file header is WMAPV1.0 (WMP file)
g. If the file type has been successfully identified, and the file size has been verified to be valid for the identified file type, appropriate data fields in that file, or the entire textual file, undergoes a one-to-one dictionary conversion of resource names by reading the input, checking the input against a list of source names, and then converting to a target name if a source name matches the input name. The type of source name used is restricted to the type of data field, if applicable. For example, if the data field requires specification of a CRE ResRef, then the input is checked against only CRE source names.
h. In the case of a Tutu->BGT partial dictionary conversion only, if no source-to-input match is found, the data field or the entire textual file is checked for the presence of a "_" (underscore) in the prefix, and if such a prefix is present, it is removed and hex offsets are restored.
i. By this stage, if no change is made, the data field is simply left alone.
j. PCU now determines whether the current file needs to be renamed. In patching of entire textual files, especially in .tp2 files, references to files are renamed. For example, COPY ~_TASIGHT.BCS~ becomes COPY ~WTASIGHT.BCS~. The actual files themselves will also need to be renamed if references have been altered in such a manner. A one-to-one dictionary conversion of file names is attempted with a mechanism similar to that described for changing ResRefs in data fields or entire textual files.
k. In the case of a Tutu->BGT partial dictionary conversion only, renaming of files is restricted to resources with a "_" (underscore) in the prefix or is prefixed with "FW". A one-to-one dictionary conversion is attempted first. If no source-to-input match is found, a "_" (underscore) in the prefix is simply removed.
l. If the file type has not been detected and the file has not been renamed, then the file is ignored, but still copied into output.
m. At the end of the installation, statistics are displayed on the number and types of files processed, number of files ignored, and number of files renamed.
n. On exit, Rename.bat is executed. If a file has been renamed, the original file is copied into <IE game installation the directory>\PCU\Output\Renamed directory. Renamed.txt, found in the same directory, lists the full paths of files renamed.
The types of conversions possible are limited by the availability of a dictionary. Dictionaries are found as .tph files in <IE game installation directory>\PCU\Dict. Currently, the following dictionaries are available:
1. Tutu->BGT (partial dictionary) � all conversions involving simple removal of a "_" (underscore) do not appear in the dictionary
2. Tutu->BGT (full dictionary) � all conversions appear in the dictionary
3. BG->BGT
4. BG->Tutu
5. BGT->BG
6. BGT->Tutu
7. Custom � make your own dictionary. A template is provided as CustomTemplate.tph. To use the custom dictionary, make sure the dictionary is named Custom.tph.
Dictionaries currently define source and target names for:
1. ARE/MOS/WED/height table BMP/light map BMP/search region BMP
2. Door names
3. Entrance names
4. BAM
5. BCS
6. BMP
7. CRE
8. Death variables
9. DLG
10. ITM
11. MOS
12. MVE
13. SPL
14. STO
15. TIS/TIZ
16. WAV
Although PCU has the capacity to make tedious resource name conversions, thereby saving a lot of time, there are many things that cannot be batch converted in such a way. This utility relies heavily on textual replacements, and thus it is highly likely that plain non-reference text is erroneously converted. Therefore, it is of utmost importance that the output from PCU be checked and tested thoroughly to ensure that errors in the conversion process are corrected.
In terms of the actual conversion process, PCU has the following limitations:
1. All. PCU cannot convert file types of versions not used in the Baldur�s Gate series (e.g. IWD2 files are not supported)
2. 2DA/IDS. PCU cannot patch 2DA or IDS files
3. BAF/D/TP2/TPH/TPP. PCU cannot convert BAF, D, TP2, TPH, or TPP code if the file extension is not one of these
4. Batch files. PCU cannot convert references within BAT files
5. D. PCU cannot convert the exitFilename field within the CHAIN2 command
6. TP2/TPH/TPP. PCU cannot maintain file type specificity when converting type-less patches (e.g. a script change from MINSC->BGMINSC will occur even if MINSC was referenced as a .CRE; however, MINSC.CRE remains MINSC.CRE)
7. TP2/TPH/TPP. When using the BGT->Tutu or BG->Tutu dictionaries, conversion of BELT->_BELT will cross-convert the ADD/REPLACE_CRE_ITEM function when the item slot specified is ~BELT~
The data fields checked by PCU, sorted by file type, are listed below:
ARE (Areas)
0x8 WED resref
0x18 north ARE resref
0x24 east ARE resref
0x30 south ARE resref
0x3c west ARE resref
0x94 BCS resref
Actors
0x48 area-specific creature DLG resref
0x50 area-specific creature override BCS resref
0x58 area-specific creature class BCS resref
0x60 area-specific creature race BCS resref
0x68 area-specific creature general BCS resref
0x70 area-specific creature default BCS resref
0x78 area-specific creature specific BCS resref
0x80 CRE resref
Info points, trigger points, and exit
0x0 trigger name (may contain area numbers for doors, required for TriggerActivation() commands)
0x38 destination ARE resref
0x40 entrance of destination ARE char array - currently ignored
0x7c region BCS resref
0xbc trigger DLG resref for prox triggers
Entrances
0x0 entrance name (contains area numbers)
Spawn points
0x24 spawn CRE resref 1
0x2c spawn CRE resref 2
0x34 spawn CRE resref 3
0x3c spawn CRE resref 4
0x44 spawn CRE resref 5
0x4c spawn CRE resref 6
0x54 spawn CRE resref 7
0x5c spawn CRE resref 8
0x64 spawn CRE resref 9
0x6c spawn CRE resref 10
Containers
0x48 trap BCS resref
0x58 creature CRE resref
0x78 key ITM resref
Items
0x0 ITM resref
Ambient
0x30 ambient WAV resref 1
0x38 ambient WAV resref 2
0x40 ambient WAV resref 3
0x48 ambient WAV resref 4
0x50 ambient WAV resref 5
0x58 ambient WAV resref 6
0x60 ambient WAV resref 7
0x68 ambient WAV resref 8
0x70 ambient WAV resref 9
0x78 ambient WAV resref 10
Doors
0x58 door open WAV resref
0x60 door close WAV resref
0x78 key ITM resref
0x80 open BCS resref
0xb8 open DLG resref
Animations
0x28 BAM resref
Songs
0x28 area ambient WAV resref
0x30 area ambient WAV resref
0x3c area ambient WAV resref
0x44 area ambient WAV resref
Rest interruption
0x48 CRE resref 1
0x50 CRE resref 2
0x58 CRE resref 3
0x60 CRE resref 4
0x68 CRE resref 5
0x70 CRE resref 6
0x78 CRE resref 7
0x80 CRE resref 8
0x88 CRE resref 9
0x90 CRE resref 10
BAF (Script source)
Textual replace of input when a match is found with the appropriate trigger/action and the correct parameter position
ARE references
TRIGGER.IDS
Global 2
GlobalGT 2
GlobalLT 2
GlobalTimerExact 2
GlobalTimerExpired 2
GlobalTimerNotExpired 2
AreaCheck 1
AreaCheckObject 1
ACTION.IDS
SetGlobal 2
LeaveArea 1
IncrementGlobal 2
SetGlobalTimer 2
AddexperiencePartyGlobal 2
RevealAreaOnMap 1
SetMasterArea 1
MoveGlobal 1
MoveBetweenAreas 1
EscapeAreaMove 1
SaveLocation 1
SaveObjectLocation 1
HideAreaOnMap 1
CopyGroundPilesTo 1
RealSetGlobalTimer 2
EscapeAreaObjectMove 1
MoveToSavedLocationn 2
MoveToSavedLocation 2
DeathMatchPositionGlobal 1
DeathMatchPositionArea 1
DeathMatchPositionLocal 1
MoveGlobalsTo 1
MoveGlobalsTo 2
SetTokenGlobal 2
SetEncounterProbability 1
SetEncounterProbability 2
LeaveAreaLUAEntry 1
LeaveAreaLUAPanicEntry 1
CreateCreatureAtLocation 2
CreateItemGlobal 2
LeaveAreaLUA 1
LeaveAreaLUAPanic 1
MoveBetweenAreasEffect 1
BAM references
ACTION.IDS
CreateVisualEffect 1
CreateVisualEffectObject 1
CreateCreatureObjectEffect 2
CreateCreatureObjectCopyEffect 2
LeaveAreaLUA 2
LeaveAreaLUAPanic 2
MoveBetweenAreasEffect 2
BCS references
ACTION.IDS
ChangeAIScript 1
StartCutscene 1
BAM references
ACTION.IDS
StaticPalette 1
CRE references
ACTION.IDS
CreateCreature 1
ChangeAnimation 1
ChangeAnimationNoEffect 1
CreateCreatureObject 1
CreateCreatureImpassable 1
CreateCreatureDoor 1
CreateCreatureObjectDoor 1
CreateCreatureObjectOffScreen 1
CreateCreatureOffScreen 1
CreateCreatureObjectCopy 1
CreateCreatureObjectOffset 1
CreateCreatureCopyPoint 1
CreateCreatureImpassableAllowOverlap 1
CreateCreatureAtLocation 3
CreateCreatureObjectEffect 1
CreateCreatureObjectCopyEffect 1
Death variable references
ACTION.IDS
ActionOverride 1
Attack 1
BackStab 1
Dialogue 1
Dialog 1
GetItem 2
GiveItem 2
GiveOrder 1
LayHands 1
MoveToObject 1
PickPockets 1
RunAwayFrom 1
Spell 1
UseItem 2
UseItemSlot 1
Formation 1
MoveViewObject 1
ClickLButtonObject 1
ClickRButtonObject 1
DoubleClickLButtonObject 1
DoubleClickRButtonObject 1
SendTrigger 1
CallLightning 1
ProtectObject 1
GroupAttack 1
AttackNoSound 1
MoraleSet 1
MoraleInc 1
MoraleDec 1
AttackOneRound 1
ForceSpell 1
Deactivate 1
Activate 1
CutSceneId 1
Kill 1
VerbalConstant 1
ClearActions 1
AttackReevaluate 1
StartDialog 2
StartDialogue 2
PlayerDialog 1
PlayerDialogue 1
GiveItemCreate 2
StartStore 2
DisplayString 1
ChangeAIType 1
ChangeEnemyAlly 1
ChangeGeneral 1
ChangeRace 1
ChangeClass 1
ChangeSpecifics 1
ChangeGender 1
ChangeAlignment 1
ApplySpell 1
Interact 1
MoveToObjectFollow 1
ReallyForceSpell 1
RunAwayFromNoInterrupt 1
SpellNoDec 1
MoveGlobal 2
StartDialogueNoSet 1
StartDialogNoSet 1
MoveToObjectNoInterrupt 1
FollowObjectFormation 1
FaceObject 1
MoveGlobalObjectOffScreen 1
MoveGlobalObjectOffScreen 2
ReallyForceSpellDead 1
Calm 1
SaveObjectLocation 3
SetTokenObject 2
SetGabber 1
CreateCreatureObjectCopy 2
CreateCreatureObjectOffset 2
AddXPObject 1
DisplayStringNoName 1
DialogueForceInterrupt 1
DialogForceInterrupt 1
StartDialogInterrupt 2
StartDialogueInterrupt 2
StartDialogueNoSetInterrupt 1
StartDialogNoSetInterrupt 1
DisplayStringHead 1
PolymorphCopy 1
VerbalConstantHead 1
CreateVisualEffectObject 2
CreateCreatureObjectEffect 3
CreateCreatureObjectCopyEffect 3
EscapeAreaObject 1
EscapeAreaObjectMove 2
TakeItemReplace 3
PolymorphCopyBase 1
MoveGlobalObject 1
MoveGlobalObject 2
StartDialogOverride 2
StartDialogOverrideInterrupt 2
CreateCreatureCopyPoint 2
ApplyDamage 1
ApplyDamagePercent 1
DisplayStringWait 1
ForceSpellRange 1
SetPlayerSound 1
FakeEffectExpiryCheck 1
StartDialogNoName 2
SpellRES 2
ForceSpellRES 2
ApplySpellRES 2
ReallyForceSpellRES 2
SpellNoDecRES 2
ReallyForceSpellDeadRES 2
ForceSpellRangeRES 2
DisplayStringHeadDead 1
DisplayStringNoNameHead 1
TRIGGER.IDS
AttackedBy 1
Help 1
Joins 1
Leaves 1
ReceivedOrder 1
Said 1
TurnedBy 1
Alignment 1
Allegiance 1
Class 1
Exists 1
General 1
HP 1
HPGT 1
HPLT 1
LOS 1
Morale 1
MoraleGT 1
MoraleLT 1
Race 1
Range 1
Reputation 1
ReputationGT 1
ReputationLT 1
See 1
Specifics 1
HitBy 1
TargetUnreachable 1
NumCreature 1
NumCreatureLT 1
NumCreatureGT 1
HPPercent 1
HPPercentLT 1
HPPercentGT 1
Heard 1
StateCheck 1
NotStateCheck 1
Reaction 1
ReactionGT 1
ReactionLT 1
InParty 1
CheckStat 1
CheckStatGT 1
CheckStatLT 1
Died 1
Killed 1
Entered 1
Gender 1
Dead 1
Opened 1
Closed 1
Detected 1
Reset 1
Disarmed 1
Unlocked 1
NumTimesInteracted 1
NumTimesInteractedGT 1
NumTimesInteractedLT 1
PickPocketFailed 1
StealFailed 1
DisarmFailed 1
PickLockFailed 1
HasItem 2
InteractingWith 1
InWeaponRange 1
HasWeaponEquiped 1
Happiness 1
HappinessGT 1
HappinessLT 1
Clicked 1
NumDead 1
NumDeadGT 1
NumDeadLT 1
Detect 1
NumItems 2
NumItemsGT 2
NumItemsLT 2
IsOverMe 1
HasItemEquiped 2
NumCreatureVsParty 1
NumCreatureVsPartyLT 1
NumCreatureVsPartyGT 1
PartyMemberDied 1
InPartySlot 1
SpellCast 1
InLine 1
InLine 2
Level 1
LevelGT 1
LevelLT 1
Summoned 1
ObjectActionListEmpty 1
OnScreen 1
InActiveArea 1
SpellCastOnMe 1
Name 1
Name 2
SpellCastPriest 1
SpellCastInnate 1
IsValidForPartyDialog 1
IfValidForPartyDialog 1
IsValidForPartyDialogue 1
IfValidForPartyDialogue 1
HasBounceEffects 1
HasImmunityEffects 1
HasItemSlot 1
PersonalSpaceDistance 1
InMyGroup 1
Kit 1
IsGabber 1
IsActive 1
CharName 1
CharName 2
FallenRanger 1
FallenPaladin 1
InventoryFull 1
HasItemEquipedReal 2
XP 1
XPGT 1
XPLT 1
InMyArea 1
InPartyAllowDead 1
AreaCheckObject 2
WalkedToTrigger 1
DLG references
ACTION.IDS
StartDialog 1
StartDialogue 1
SetDialog 1
SetDialogue 1
StartDialogInterrupt 1
StartDialogueInterrupt 1
StartDialogOverride 1
StartDialogOverrideInterrupt 1
StartDialogNoName 1
ITM references
ACTION.IDS
DropItem 1
EquipItem 1
CreateItem 1
GetItem 1
GiveItem 1
UseItem 1
UseItemSlot 1
UseItemPoint 1
TakePartyItem 1
GiveItemCreate 1
DestroyItem 1
TakePartyItemAll 1
TakePartyItemRange 1
TakePartyItemNum 1
PickUpItem 1
TakeItemReplace 1
TakeItemReplace 2
DisplayStringHeadOwner 1
CreateItemGlobal 3
TRIGGER.IDS
Acquired 1
Unusable 1
PartyHasItem1
HasItem 1
Contains 1
NumItems 1
NumItemsGT 1
NumItemsLT 1
NumItemsParty 1
NumItemsPartyGT 1
NumItemsPartyLT 1
HasItemEquiped 1
PartyHasItemIdentified 1
HasItemEquipedReal 1
SPL references
TRIGGER.IDS
HaveSpellRES 1
ACTION.IDS
AddSpecialAbility 1
SpellRES 1
SpellPointRES 1
ForceSpellRES 1
ForceSpellPointRES 1
ApplySpellRES 1
ReallyForceSpellRES 1
SpellNoDecRES 1
SpellPointNoDecRES 1
ReallyForceSpellDeadRES 1
ForceSpellRangeRES 1
ForceSpellPointRangeRES 1
ReallyForceSpellPointRES 1
STO references
ACTION.IDS
StartStore 1
WAV references
ACTION.IDS
PlaySound 1
BCS (Scripts)
Decompiled and treated like a BAF (Script source)
CRE (Creatures)
0x34 small portrait BMP resref
0x3c large portrait BMP resref
0x248 override BCS resref
0x250 class BCS resref
0x258 race BCS resref
0x260 general BCS resref
0x268 default BCS resref
0x2cc DLG resref
Known Spells
0x0 SPL resref
Memorized Spells
0x0 SPL resref
Items
0x0 ITM resref
D (Dialog source)
Textual replace of input when a match is found with the appropriate WeiDU D file function
See BAF conversions above
WeiDU D file functions
(NOTE: exitFilename for CHAIN2 cannot be corrected using this method)
BEGIN
APPEND
APPEND_EARLY
EXTEND_TOP
EXTEND_BOTTOM
ADD_STATE_TRIGGER
ADD_TRANS_TRIGGER
ADD_TRANS_ACTION
REPLACE
SET_WEIGHT
REPLACE_SAY
REPLACE_STATE_TRIGGER
REPLACE_TRIGGER_TEXT
REPLACE_TRIGGER_TEXT_REGEXP
REPLACE_ACTION_TEXT
REPLACE_ACTION_TEXT_REGEXP
REPLACE_ACTION_TEXT_PROCESS
REPLACE_ACTION_TEXT_PROCESS_REGEXP
INTERJECT
INTERJECT_COPY_TRANS
INTERJECT_COPY_TRANS2
I_C_T
I_C_T2
END
EXTERN
COPY_TRANS
APPENDI
==
CHAIN
THEN
CHAIN2
DLG (Dialogues)
Decompiled and treated like a D (Dialog source), except for a single data field shown below
Transition Table
0x14 next dialogue DLG resref
EFF (Effects)
0x30 effect resref
0x78 effect resref2
0x94 source spell SPL resref
ITM (Items)
0x10 replacement ITM resref
0x3a inventory icon BAM resref
0x44 ground icon BAM resref
0x58 description icon BAM resref
Extended Header (Ability)
0x4 use icon BAM resref
Feature Block
0x14 resource resref
BAM � 0xd7 Play 3D Effect
BMP � 0x6b Change Portrait
BCS � 0x52 Set AI Script
CRE � 0x43 Summon Creature, 0x87 Polymorph into Specific, 0x97 Replace Creature, 0xa8 Remove Creature
ITM � 0x6f Create Item in Magical Weapon Slot, 0x70 Remove Item, 0x7a Create Inventory Item, 0x7b Remove Inventory Item, 0x8f Create Item in Slot, 0xb4 Cannot Use Item, 0xff Create Inventory Item (days)
MVE � 0x98 Play Movie
SPL � 0x92 Cast Spell (at Creature), 0x93 Learn Spell, 0x94 Cast Spell (at Point), 0xab Give Innate Ability, 0xac Remove Spell, 0xb7 Apply Effect Itemtype (SPL ResRef?), 0xce Protection from Spell, 0xcf Bounce Specified Spell, 0xe8 Cast Spell on Condition, 0xfb Change Bard Song Effect, 0xfc Set Trap, 0x100 Spell Sequencer Active (SPL ResRef?), 0x102 Spell Sequencer Activation, 0x139 HLA Denotation
WAV � 0xae Play Sound
SPL (Spells)
0x10 casting sound WAV resref
0x3a spellbook icon BAM resref
Extended Header (ability)
0x4 memorised icon BAM resref
Feature Block
0x14 resource resref (see similar block in ITM file type patching for specific features detected)
STO (Stores)
0x44 tavern rumours DLG resref
0x54 temple rumours DLG resref
Items for Sale
0x0 ITM resref
Drinks for Sale
0x0 rumour DLG resref
Cures for Sale
0x0 SPL resref
TRA (Translation file)
WAV resref in []
TP2/TPH/TPP (WeiDU installation file)
Treated as a D (Dialog source) without checking for WeiDU functions
TIS
Overlay
0x4 tileset TIS resref
VVC
0x8 animation BAM resref
0x78 starting sound WAV resref
0x80 duration sound WAV resref
0x94 ending sound WAV resref (?) � not confirmed in IESDP
WMP (Worldmap)
Map entry
0x0 map resource MOS resref
0x30 map icons BAM resref
->Area entry
0x0 area short name
0x8 area content ARE resref
0x10 area long name
0x48 loading screen MOS resref
->Area link
0x4 entrance name (contains area numbers)
0x2c random encounter ARE resref 1
0x34 random encounter ARE resref 2
0x3c random encounter ARE resref 3
0x44 random encounter ARE resref 4
0x4c random encounter ARE resref 5
Release Candidate 1 (10 Nov 2007)
-Added support for .TIS/.TIZ conversions
-Added support for patching of .TPP and .WED files
-Dictionaries added for specific BG1 Unfinished Business conversions (BG1UB->Tutu, Tutu->BG1UB); these need to be renamed to Custom.tph to work
-Updated relevant dictionaries to reflect ITM ResRef changes in BGT-WeiDU v1.05a
-Updated to BiggDU v201
PCU Internal Release 4 (Use upon request from 14 November 2006)
-Corrected various mistakes in all dictionaries
-Rename.txt now marked with PCU version and subcomponent chosen for identification purposes
-TP2: Added limited support for type-less patches (no file type specificity can be maintained)
-TP2: Added support for files referenced in ALLOW_MISSING
PCU Internal Release 3 (Use upon request from 21 October 2006)
-Added support for death variable, .MOS, and .MVE conversions
-Added support for patching of .EFF, .TPH, .TRA, .VVC, and .WMP files
-Dictionaries added for Tutu->BGT (complete), BG->Tutu, BGT->BG, BGT->Tutu, and Custom Template
-Enhanced file type specificity in patching of .BAF, .BCS, .D, .DLG, and .TP2 files
-Fixed a bug where checking of abilities and effects in .SPL files could result in read out-of-bounds errors due to typo in ability block size
-Integrated BG1 to BGT-WeiDU conversions as sub-component
-Major overhaul of conversion process
-Refined existing dictionaries for Tutu->BGT (partial), and BG->BGT
-Updated to BiggDU v196
Tutu2BGT Internal Release 2 (Development Only)
-Added ability to rename .BMP files with FW prefix, for height, light, and search map replacements
-Fixed a bug where renaming files that have a dictionary match would rename parts of filenames if a match was found inside that filename
-Fixed a bug where renaming files with a ResRef of eight characters would have their extension truncated by one character
-Fixed a bug where renaming files would use the dictionary for the incorrect filetype
-Fixed a bug where renaming of area files fitting the wildcard FW*.ARE and having eight characters in the resource name would output a .AR file
-Support for BGT-WeiDU v1.01 naming conventions
-Support for BG1 to BGT-WeiDU conversions, use Setup-BGvBGT.exe
Tutu2BGT Internal Release 1 (10 November 2005)
-First internal release
In general, BG1Tutu modifies the naming of BG1 resources in the following manner:
ARE -> area information has AR changed to FW
BAM -> prepended with _
BCS -> prepended with _ (including area scripts)
BMP -> area information has AR changed to FW
CRE -> prepended with _
DLG -> prepended with _
ITM -> prepended with _
MVE -> prepended with _
NPC portraits (BMP) -> prepended with _
STO -> prepended with _
TIS -> prepended with _
WAV -> prepended with _
WED -> area information has AR changed to FW
WORLDMAP.MOS -> prepended with _