Utility Talk:Tweak

From Dwarf Fortress Wiki
Jump to navigation Jump to search

Suggested Addition(s)[edit]

How hard would it be to adapt Regional Prospector 1 2 to this application?
From what I've seen of your newest tool, it looks like it should become the standard for future 'tweaks' :p
Thanks tons for your contributions to the cause! --Edward 19:41, 24 March 2008 (EDT)

Oh, and one other idea... Perhaps a small readme/guide for each of the tools?
Something like those on the Utilities page would be fine.

It could probably be easily ported but I'm not sure I want to take someone elses work so quickly for Tweak. I am working on that kind of a list (see the Tile Edit link on the core modules list). —Rick 19:49, 24 March 2008 (EDT)
List? RP doesn't make lists that I know of. And I know TileEdit can create magma/lava (which one is it btw? lava I'm guessing, since I don't think it can create a replenishing pipe in it's current form.) but unless I really get desperate, I'm not going to make a huge pool of lava to tap for various oddities. (i.e. traps/constructions) TileEdit's great for occasionally making a single tile of the stuff when it'd otherwise be a pain to get the liquid to the desired point, or for replenishing an already small source. Unless you're planning on making TileEdit capable of modifying regional tiles, (or alternatively, working like a designation for many tiles at once...) I don't see how it could relate to what RP does. --Edward 17:31, 29 March 2008 (EDT)
As far as I can tell, the list in question is a list of readmes/guides like those on the Utilities page.
Magma = lava in an underground square. Lava = magma in an aboveground square. They are identical in all but name. --Savok 19:52, 29 March 2008 (EDT)
Is there an as yet unidentified flag that causes replenishment? --Edward 00:15, 31 March 2008 (EDT)
By 'list' I meant looking up what mineral types, etc, are in the current map. The module is called 'Survey', for obvious reasons. —Rick 00:39, 30 March 2008 (EDT)
Hmm.. well, unless you plan on doing that at an embark level, (as opposed to the in-fort level it sounds like,) it still won't be duplicating any effects that RP currently does. --Edward 00:15, 31 March 2008 (EDT)
I don't intend to duplicate the features of it. —Rick 01:04, 31 March 2008 (EDT)

Help for the Noob(s)[edit]

Just downloaded the tweaker after some confusion, for the sake of healing the sole broker of my fort so he can get up and trade smartly enough to save my fort (to be filled with lava, but that's beside the point). Once I started it on up, all the modules but the address lookup were red, and the lookup only turns up <address name="starting_dwarf_count" value="0x00f77927"'.

I'm not entirely sure where to go from here... Any guide forthcoming?

Red modules mean they are incompatible, I'm going to assume you are running on .38b, the latest is .38c, which Tweak has full support for. I did not bother to provide full support for .38b. —Rick 05:34, 29 March 2008 (EDT)

Error report[edit]

For some reason, the latest version ( crashes whenever I try to run it. This is with or without DF running. Version on the other hand worked fine for me, and still does. This is the debugging info returned for the crash in

An unhandled exception of type 'System.IO.FileNotFoundException' occurred in Gibbed.DwarfFortress.Tweak.exe

Additional information: Could not load file or assembly
'System.Core, Version=, Culture=neutral,  PublicKeyToken=b77a5c561934e089'
or one of its dependencies. The system cannot find the file specified.

This is with it directly extracted from the zip with proper folder structure, no changes made. I've also tried moving it out to a root folder on the drive in case the long path was confusing it with no success. --Janus 01:04, 1 April 2008 (EDT)

Sounds like you don't have .NET 3.5 installed. —Rick 01:53, 1 April 2008 (EDT)
Did version not require it? That version has been working fine, and I could have sworn I had to install the .NET 3.5 Framework to get it working.
However, whatever the case, I've just (re?)installed the 3.5 framework and that does indeed seem to have taken care of it. Thanks. --Janus 02:38, 1 April 2008 (EDT)
I wasn't using any features of 3.5 yet -- which changed with —Rick 03:40, 1 April 2008 (EDT)

Found an error in the adjust profile module, happens when I click the "reset profile" button when "reset/read/write all" is checked.

 System.ArgumentException: 'child' is not a child control of this parent.
  at System.Windows.Forms.Control.ControlCollection.GetChildIndex(Control child, Boolean throwException)
  at System.Windows.Forms.Control.ControlCollection.GetChildIndex(Control child)
  at Rinn.DwarfFortress.Tools.AdjustProfile.Configuration.textBox_TextChanged(Object sender, EventArgs e)
  at System.Windows.Forms.Control.OnTextChanged(EventArgs e)
  at System.Windows.Forms.TextBoxBase.OnTextChanged(EventArgs e)
  at System.Windows.Forms.Control.set_Text(String value)
  at System.Windows.Forms.TextBoxBase.set_Text(String value)
  at System.Windows.Forms.TextBox.set_Text(String value)
  at Rinn.DwarfFortress.Tools.AdjustProfile.Configuration.buttonReset_Click(Object sender, EventArgs e)
  at System.Windows.Forms.Control.OnClick(EventArgs e)
  at System.Windows.Forms.Button.OnClick(EventArgs e)
  at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  at System.Windows.Forms.Control.WndProc(Message& m)
  at System.Windows.Forms.ButtonBase.WndProc(Message& m)
  at System.Windows.Forms.Button.WndProc(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Cheapweed 18:01, 12 April 2008 (EDT)

Please report that on Rinn's AdjustProfile talk pageRick 22:33, 12 April 2008 (EDT)

NET 3.5 Compatability[edit]

Just a quick FYI: Those of us on 2000 cannot (as far as I've been able to determine) install .NET 3.5, which makes it impossible to use the latest version of Tweak. Keeping the 1.1 version online maintains availability of this invaluable tool to those of us who refuse to be infected with the XP virus. —Rochndil 14:49, 3 April 2008 (EDT)

While I do use .NET 3.5 features, I will see if I can move to .NET 2.0 (or make a 2.0 compatible version). —Rick 22:58, 3 April 2008 (EDT)
++! I'd dearly love a 2.0 version; various vexing vagaries prohibit me from installing 3.5. Has there been any news since April? Spirilus 16:46, 5 August 2008 (EDT)
Or leave it. Seeing as its an 8 year old Operating system that you can't buy any more. More to the point if you are running DF your computer is more than adequate for running Windows XP. --Gorfob 19:00, 14 July 2008 (EDT)
What .NET 3.5 features do you use? Note that VB9/C#3 language features can still be used even if you target an earlier framework. Random832 18:17, 5 March 2009 (EST)
Dont forget the linux users. They can only use .Net 2.0 inside wine...

Blue modules[edit]

I just installed Tweak for the first time and I seem to have a problem. The buttons beside all the modules are blue, not green like in the picture, and the modules don't appear to do anything. I am running DF version and Tweak version I tied to update to version but it still shows as the old version.

If your Tile Edit is 1.1, not 1.0, you have As for blue modules, you need to 'Select Process' before you can use anything. There is an option to automatically select a process on startup. Once you do this, modules will either turn red or green as like before. —Rick 22:58, 3 April 2008 (EDT)
Didn't work for me. whenever I select one I get something like this "are you sure you want to select process 2828?" then when I click yes, "could not find the following hash 59ab29201aca9f3c66b1ab102fb3ceea"

Windows Installer 3.1[edit]

It says I need Windows Installer 3.1. Help? --Savok 19:12, 3 April 2008 (EDT)

Tweak does, or the .NET 3.5 install does? —Rick 22:58, 3 April 2008 (EDT)
Sorry. .NET 3.5 install does. --Savok 11:41, 4 April 2008 (EDT)
What operating system are you using? Windows Installer 3.1 RedistributableRick 12:16, 4 April 2008 (EDT)
Windows XP Home Edition Version 2002 Service Pack 2.
Out of curiosity, what does that 3.1 installer do? --Savok 15:55, 4 April 2008 (EDT)
It's for MSI installers I would assume. Though I'm not sure how you don't have the Windows Installer 3.1 on XP. —Rick 22:49, 4 April 2008 (EDT)

Freezing Tile Edit[edit]

For some reason, whenever I edit a tile using the Tile Edit programme, the next dwarf to step on the tile freezes to death (as will the many dwarves who come to loot the corpse). In the tile edit window, in the temperature section, it shows 0 in the first box (always) and another number of around 12000 in the second. The values by themselves give no indication as to the temperature, and even when I leave them alone, simply changing the tile will result in it becoming a freezing tile of death. I have no idea if anyone else is experiencing this with tile edit, or whether I'm doing something horribly wrong. unsigned comment by Maw3193

I get this whenever I try to add water to a square. The water freezes into a block of absolute-zero ice, and freezes to death anybody who steps on it. It doesn't happen when I add magma, or change magma depth. The title bar says version, but TileEdit is 1.1 so I guess it's actually (see above) Anydwarf 12:56, 17 April 2008 (EDT)
Tile Edit is broken like this. You need to manually set a temperature for EVERY tile you edit. Rick, fix it! >8( --GreyMario 15:44, 3 May 2008 (EDT)
Also, as an addendum, the top temperature is the NEW temperature for the tile, the bottom temperature is the CURRENT temperature. --GreyMario 15:45, 3 May 2008 (EDT)
It's not just absolute-zero. According to the Dwarf Fortress temperature scale, it's over nine thousand degrees below absolute-zero :) unsigned comment by Maw3193
Before editing any of the tile, press Reset first, it should fill the first temperature in for you. --SP2 19:20, 7 May 2008 (EDT)
Still doesn't work for me, I've tried all of this. I've set the temperature about five different times.. still the freezing tile of DOOM. --Jaxstrife 20:51, 7 May 2008 (EDT)
I've identified the bug and it will be fixed in the next release. —Rick 08:16, 9 May 2008 (EDT)

Developer page[edit]

I'm interested in making a module for Tweak, will there be more info soon about contributing to it? (if there is a page I couldn't find that talks about it, feel free to let me know :) --Corc

There hasn't really been any demand for it, but now that there is I'll fill out some info for you. —Rick 01:33, 27 April 2008 (EDT)
I've added some preliminary information to the development page. —Rick 17:41, 30 April 2008 (EDT)

How easy would it be to get started with writing a module? I assume Tweak handles the memory editing, but does it hand the module a bunch of bytes, or a fully parsed structure? I'd be interested in at least trying to write up a module.. Maybe you could just post the source for Heal or one of the other simple modules. Anydwarf 18:57, 29 April 2008 (EDT)

I would just like to add my vote for a .NET 2.0 version since 3+ causes severe problems on my system trying to connect to M$ all the time :P

I downloaded 3.5 and even got the express versions of Visual Studio to play with. I believe there is an option to "check" when you install that will stop it from contacting MS--I was asked a few times.
--Corc 23:57, 28 April 2008 (EDT)
Tweak's memory access doesn't deal with structures, but does allow for easy reading of common data types (and raw memory, if that's your deal). Reading structures may come in the future, though. —Rick 17:41, 30 April 2008 (EDT)

Adjust Start: Less Than Seven Dwarves Crashes Game Upon Embarking[edit]

Crash replicated on two different computers both running windows XP both using .38c version of DF. Different parameter set worlds and different local areas still results in crash, as does both embarking carefully and not carefully. When it crashes I get an error message from windows saying that "dwarffort.exe has encountered a problem and needs to close." I have tested this for 1, 4, and 6 dwarves with the game crashing, and found that with 10 dwarves it did not crash.


(Debated about putting this here or on your sample code discussion.) To test out making a new module (very easy btw, awesome) I modified reveal to just reveal interesting stuff like ore and gems. Instead of releasing a whole new (very similar and 99% your code) module maybe you could add a quick if statement/popup that people could check when they run it? Basically what I did was inside the nested for loops I added in getting the "type" data and if the type was for an event, B8 01, then I'd let it do your unhide bit.

memory.Read(block + designation, ref data);
memory.Read(block + typeoffset, ref types); // added types, half the size of data, (256 * 2)
for (int i = 0; i < 16 * 16; i++)
   byte[] temp = BitConverter.GetBytes(BitConverter.ToInt16(types, i * 2)); // actual type
   if (temp[0] == 184) // I found that 0xB8 is all that is needed to check
      byte[] newdata = BitConverter.GetBytes(BitConverter.ToUInt32(data, i * 4) & ~0x200);
      data[(i * 4) + 0] = newdata[0];
      data[(i * 4) + 1] = newdata[1];
      data[(i * 4) + 2] = newdata[2];
      data[(i * 4) + 3] = newdata[3];   

This unhides only Gems, Ore, "Special" Stone like Orthoclase, adamantine and any other out of the ordinary biome stone.

I thought about making a crazy convoluted module that would scan the map for types of events and let the user enable the ones they wanted unhidden and then unhide them. But, after going into the event list and finding event IDs (I've got a complete list now) I found it to be too crazy... actually as I typed that I figured out how I could do it with about a forth of what I had coded earlier. --Corc 04:04, 11 May 2008 (EDT)

.NET install freeze?[edit]

Does .NET ever finish installing? As I write this it's been sitting with a full progress bar for 35 minutes, and took an inordinate amount of time to even get there. (And the bootstrap downloader was completely unusable, kept losing progress.)
As far as I can tell, it's not even spinning the HDD... though it went through long periods of that before, too.
Addendum: Rebooting on its own didn't help, but rebooting and aggressively killing running processes down to the bare-bones did... finally.unsigned comment by Shurhaian

That's some highly unusual behavior, and I would recommend a through virus and adware scan using atleast two versions of each.
For Viruses, Trend Micro has a good online scanner, and AVG is a good offline scanner.
For Adware, Spybot S&D is just about as good as it gets, and Microsoft has a semi-decent one as well.
All of these are free. Hope this helps! If not, *could be* some core OS files have been damaged somehow, and *may* require a re-install. --Edward 21:40, 14 May 2008 (EDT)

Another on the 3.5 bug list[edit]

Allright; I have .net Framework 3.5 installed and its giving me the same error a guy midway up had; the.......... IO.notfound thing

Okay scratch that i unzipped tweak again and its running fine. it seems tweak doesnt like XP.

Your program has good tastes sir.

Problem not otherwise found on here.[edit]

When trying to select a process, I get this error. Net framework 3.5 is installed.

************** Exception Text **************
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
   at System.Security.Cryptography.MD5CryptoServiceProvider..ctor()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeConstructor(Object[] args, SignatureStruct& signature, IntPtr declaringType)
   at System.RuntimeMethodHandle.InvokeConstructor(Object[] args, SignatureStruct signature, RuntimeTypeHandle declaringType)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Security.Cryptography.CryptoConfig.CreateFromName(String name, Object[] args)
   at System.Security.Cryptography.MD5.Create(String algName)
   at System.Security.Cryptography.MD5.Create()
   at Gibbed.DwarfFortress.Tweak.GameVersionLoader.GetProcessHash(Process process)
   at Gibbed.DwarfFortress.Tweak.ModulePicker.onSelectProcess(Object sender, EventArgs e)
   at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ToolStrip.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
What version of windows are you running? —Rick 20:47, 13 July 2008 (EDT)

.NET 3.5 errors: Tweak not Vista compatiale?[edit]

I have installed .NET 3.5 and tried to run Tweak on my computer. However, It instantly crashes. Is there anything else I should have installed? I am running windows Vista.


Can you please paste the exact error, I cannot help with problems without knowing specifics. —Rick 20:46, 13 July 2008 (EDT)

I Have the exact same problem, the error is the default vista error. i think this only happens with the newest version of tweak, as i used to beable to run it (though the tile editor never ran for me) —Corhen 8:55, 15 July 2008

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.UnauthorizedAccessException: Access to the path 'C:\Program Files\Dwarf Fortress\tweak\configuration.xml' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode)
   at Gibbed.DwarfFortress.Tweak.ModulePicker.LoadConfiguration()
   at Gibbed.DwarfFortress.Tweak.ModulePicker.onLoad(Object sender, EventArgs e)
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
   at System.Windows.Forms.Form.OnCreateControl()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************
    Assembly Version:
    Win32 Version: 2.0.50727.1434 (REDBITS.050727-1400)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/Gibbed.DwarfFortress.Tweak.exe
    Assembly Version:
    Win32 Version: 2.0.50727.1434 (REDBITS.050727-1400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/
    Assembly Version:
    Win32 Version: 2.0.50727.1434 (REDBITS.050727-1400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/
    Assembly Version:
    Win32 Version: 2.0.50727.1434 (REDBITS.050727-1400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/Gibbed.DwarfFortress.Utilities.DLL
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/plugins/Gibbed.DwarfFortress.Tools.AdjustStart.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/plugins/Gibbed.DwarfFortress.Tools.EnableMagmaBuildings.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/plugins/Gibbed.DwarfFortress.Tools.Heal.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/plugins/Gibbed.DwarfFortress.Tools.Resume.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/plugins/Gibbed.DwarfFortress.Tools.Reveal.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/plugins/Gibbed.DwarfFortress.Tools.TileEdit.dll
    Assembly Version:
    Win32 Version:
    CodeBase: file:///C:/Program%20Files/Dwarf%20Fortress/tweak/plugins/Gibbed.DwarfFortress.Tools.Warp.dll
    Assembly Version:
    Win32 Version: 2.0.50727.1434 (REDBITS.050727-1400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/
    Assembly Version:
    Win32 Version: 2.0.50727.1434 (REDBITS.050727-1400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/
    Assembly Version:
    Win32 Version: 2.0.50727.1434 (REDBITS.050727-1400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/
    Assembly Version:
    Win32 Version: 2.0.50727.1434 (REDBITS.050727-1400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging

For example:

    <system.windows.forms jitDebugging="true" />

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Okay. I got an error message for you to look at. What's wrong?--Toad 13:37, 24 February 2009 (EST)

Start Error[edit]

Opening Tweak, the program crashes. There's no error message per se, it just doesn't open and give the default windows error message, and asks me if I want to send a report. Help?

you need to install separately .NET 1.1 as well as .NET 2.0, .NET 3.5 does not install these previous versions....

Even with all versions of .NET that exist already installed, Tweak crashed on startup. I am using an up-to-date version of WinXP SP3. I hope that it causes no problems that I unfortunately have a German language version of XP. Proof of installed .NET versions: http://members.arstechnica.com/x/dio82/software.png

Error message:

EventType : clr20r3 P1 : gibbed.dwarffortress.tweak.exe P2 : P3 : 47f19dc1 P4 : mscorlib P5 : P6 : 471ebc5b P7 : 3404 P8 : 119 P9 : system.io.directorynotfound

Many thanks to potential fixes -Dio82 08:36, 4 July 2008 (EDT)

I'd just like to note that I also have all three .NET versions downloaded and installed, and I still get the general Windows Vista error message (Tweak has stopped working, windows is searching for a solution... A program caused the program to stop working, windows will close the program). I've tried starting up Tweak before loading DF, during the DF title screen, and while playing a current fortress. I didn't, however, get the detailed error message described above. --Untelligent 21:57, 4 July 2008 (EDT)

The above error message is part of the report that XP/Vista wants to send to Microsoft. Just click on details of the report when Vista prompts you about sending that report. --Dio82 06:05, 5 July 2008 (EDT)
It didn't prompt me for sending a report. --Untelligent 16:17, 6 July 2008 (EDT)
This error is basically saying you did not extract Tweak correctly, the Tweak zip file contains several directories that Tweak needs to function correctly. —Rick 20:46, 13 July 2008 (EDT)

Reveal and Profile Edit Issue[edit]

I've downloaded your program and managed to get a few features working, such as the one that allows you to change your starting dwarf number and points. The two modules I wanted to use most, however, Reveal and Profile Edit, don't seem to want to work at all, and as far as I can tell, I'm not getting a program error so much as... I don't know, a failure to recognize something. I'm not a programmer, you'll notice.

When attempting to use Reveal at the regional map, I get this.

When attempting to use the Profile Editor at the "preparing carefully" screen, as it says, I get this, and if I click the OK button it says this.

Apologies for the largish screenshots. Any idea what might help? --Anfini 15:57, 11 July 2008 (EDT)

The Reveal tool is only used while already embarked. Find a place to start your fortress, embark, and then run Reveal. And, keep in mind if you want to reveal all of the map you have to designate the bottom layer for digging completely then undesignated it BEFORE you run reveal--this will make DF load up the map for Reveal to find. As for the other errors, I'm not sure what is going on. Sorry. --Corc 18:36, 11 July 2008 (EDT)
Thanks for the help with Reveal, that worked perfectly. I suppose I misunderstood the module. The Profile dealie is the one I really want to use, though! If anyone has insight on how to work it, I would be grateful. Thanks! --Anfini 19:24, 11 July 2008 (EDT)

Tile Edit Tile ID List[edit]

Further explorations with Tweak leave me convinced we're missing another memory location that holds each block's type. Sandy clay Wall in one area doesn't match up with the data I gathered for my table of IDs, and there isn't enough data to be customized in Tile Edit to account for all the possibilities of ores and gems. Unfortunately I'm not knowledgable enough, nor am I patient enough, to find this memory location. →Valarnin 19:37, 16 July 2008 (EDT)

Tile composition and gem type are special cases that are not held in tile data, and they have not been completely understood. —Rick 19:58, 16 July 2008 (EDT)
Actually Gems and ore are understood. They are considered Events (from the memory hack page terms) and are flagged by a bitmap. The code sample I posted above, to add in finding only deposits of ore to Reveal, uses another 16x16 array to specify quickly that an event is taking place in that tile--then checks the bitmaps for what kind of ore (gem/ore/whatever) goes there. The events use the global tile ids which it gets from the raw files (and is in the order read in from those raw files). Using events you can add any type of deposit to the tile area (add sand to obsidian). When I was looking into the TileIDs I came to the conclusion that the IDs are in a pattern and the type of rock/soil is dependent on the biome set for that tile. IDs X -> Y for example will always be smooth walls, just of main biome material. What designates the Biome is probably another one of the 16x16 blocks of data--I just got on a side track and never figured out which one for sure. To test/confirm this, try finding a value that changes a stone type to a soil type then give that same soil TileID to a different kind of stone on another layer--it should turn into a soil type as well, but most likely not the same kind as before. Doing that on the first 2 layers of the map will make it easier since it usually has both rock and soil from the same biome. I started documenting this on my user page. --Corc 20:34, 16 July 2008 (EDT)
I'm not sure why you wrote that blurb instead of linking to my page on it. I know the gem stuff is known, I should have been more clear, I meant the composition/type regional layer muckery. —Rick 20:51, 16 July 2008 (EDT)
Sorry 'bout that. Which page are you talking about? There are so many, that when I was looking for info I really didn't know where to look for valid info. I wrote the blurb because he was talking about gems and ore specifically, and I guess I misunderstood your response. --Corc 21:34, 16 July 2008 (EDT)
User:Rick/Memory_research#Mineral_EventRick 22:01, 16 July 2008 (EDT)
OK, great, I wasn't sure if there was a newer one made. Now Valarnin has a link and a short explanation to go with it. So now he may be inspired to continue having fun digging in the memory :) --Corc 00:38, 17 July 2008 (EDT)
I'm not sure I understand exactly what's going on there. Is the vector a pointer to the mineral event's location? It would be so much easier if this was mapped out in Tile Edit. Speaking of Tile Edit, is the source available? I may be able to modify it to show the extra info. →Valarnin 13:37, 17 July 2008 (EDT)
Okay, I built Corc's modification to Reveal and learned a bit from that, but I have no example of a GUI and I'm a C++ programmer, not a C# programmer. I need an example of a GUI. →Valarnin 14:11, 17 July 2008 (EDT)
I was trying to do something similar myself. Just in case you didn't see it, here is a link to Rick's Dev discussion (User_Talk:Rick/Tweak/Development) which might be a better place to talk about all this. What I did was just go through the c# gui sample and copy and paste stuff in while reading about what does what. --Corc 14:26, 17 July 2008 (EDT)

New Versions[edit]

Any Idea when we will have an update for the most recent versions? What is needed? What do us Noobs do to get it to work?--ERoberts 13:58, 17 July 2008 (EDT)

I'm currently busy "in real life" with work so I can't tend to Tweak for the latest version of DF just yet. Aside from minor bugs with Tweak modules (such as the freezing bug with Tile Edit) there is no need for an update other than providing Tweak with data for the version you want to use it with. You can probably find the information needed for Tweak's XML files for the new version on Jifodus's user page. —Rick 05:20, 18 July 2008 (EDT)
Sorry its been a while since I've done this, do I still just put that info in a memory.ini file?
I've got something to do today, but if no one has done it yet, I'll try to get something available later tonight for people. --Corc 11:42, 18 July 2008 (EDT)
You get the hash for the newest version, open up versions.xml, and add a new line such as this:
	<version name="" hash="8f8cf06b1cd5ea102881a7cced767d4f" />
Then, you copy the newest version's folder you have in the versions folder and rename it to the newest version. Finally, you change the data in each xml file to match Jifodus's user page. I've uploaded the newest versions and the versions.xml file for 39b and 39c here:
However, I couldn't get anything to do with creatures to work. I couldn't seem to find a value to put in for race_vector from Jifodus's page. Corc, if you happen to know, tell me and I'll update the file.
Sorry to drop the ball. I don't think I could do much more than what was done already without spending a lot of time I don't have. Very grateful to whoever set that up (post your sig next time :P) --Corc 00:32, 20 July 2008 (EDT)
T'was me. I was a bit tired when I posted that. You could have checked the uploader on DFFD too. →Valarnin 02:47, 20 July 2008 (EDT)
Any chance of getting compatibility with 39e? --Deekin 15:44, 1 August 2008 (EDT)
Looks like Deekin beat me to the punch. Ditto on the 39e request. :) --Mozleron 12:46, 1 August 2008 (PDT)
Fix for 39e is here (hash included)EDIT: Only address lookup works: http://www.geocities.com/jifodus/tables/dwarvis/v0.28.181.39e.core.xml --Aluminus 11:12, 4 August 2008 (EDT)

If someone who knows how has the time, could you please add a section explaining how to get the hash for the new version? That way we can update this to work with new versions faster. Dangerous Beans 01:54, 3 August 2008 (EDT)

If you're running one instance of the new version of DF, and in Tweak you choose File->Select Process, it will ask you if you're sure you want to connect to the process (and it will give you the PID). If you say yes, it will calculate the hash, look it up in versions.xml, find no match, and then show you a message box that includes the hash. Copy that down, and then you can edit versions.xml. --Exponent 12:19, 9 August 2008 (EDT)
Looks like you'll need to manually create a directory in "versions" to keep it from crashing and even then, you'd need to have the correct memory offsets to make it work. --Aristoi 19:31, 10 August 2008 (EDT)

How I got tweak to work with 39f (and 40c)[edit]

This should work with newer versions, too, as long as jifodus finds new memory locations as quickly as he did this time. It only got Adjust Start, Reveal, and Tile Edit to work, though.

  • Create a new folder tweak/versions/
  • Download http://www.geocities.com/jifodus/tables/dwarvis/v0.28.181.39f.core.xml and save it in the new folder as core.xml
  • Open core.xml and tweak/versions.xml in notepad
  • Add the line <version name="" hash="33db0401081058fb54252210bf371344" /> after the other versions in versions.xml; for other versions than 39f, find the hash at the end of the new core.xml
  • In core.xml, delete everything between the last <offset name=... line and the </memory> line.
  • Save and close versions.xml and core.xml.
  • Now start Tweak and use it like normal. Adjust Start, Reveal, and Tile Edit should work fine.

Of course, it would be nice if someone found all of the Tweak-related memory locations right away, but I'm not willing to be that someone, so I can't be too demanding.

--Nagromo 22:07, 10 August 2008 (EDT)

Great work! I had a bit of a problem with it until I deleted all of these lines fromt he XML:
< !-- the following is used by 3D Dwarf/Dwarf Visualizer -->
<pe timestamp_offset="0x004000F8" timestamp="0x489D8C7F" />
<version name="v0.28.181.39f" />
< !-- add the following line to DwarfFortress.Versions.xml
<version name="" number="28181396" hash="33db0401081058fb54252210bf371344" />
-- >
--Aristoi 22:33, 11 August 2008 (EDT)
I re-worded the directions to try to make it more clear. Also, I just did this for 40c, and it worked fine.
--Nagromo 17:12, 30 August 2008 (EDT)
Geocities has closed down. That's what yahoo says. So where do I get the core.xml for 40d16?
--Darkond2100 03:53, 7 March 2010 (UTC)

How do I get it to work with the new version?[edit]

How do I get tweak to work with v0.28.181.40a? I am not good with computers.--Demosthenes 22:59, 20 August 2008 (EDT)

Getting it to work with version 40c[edit]

Nevermind, found the appropriate core.xml


for the current ones, check here:


Test version of Tweak with .40c supportRick 20:16, 31 August 2008 (EDT)

Doesn't seem to work with 40d.[edit]

After updating tweak to the new version, the modules are still red. I'm assuming this means that they're incompatible. When I enter the log, I get this:

    Error: Failed to load C:\etc.\tweak\versions\\core.xml: There is an error in XML document (34, 3).  Validation error: The element 'memory' has invalid child element 'pe'. List of possible elements expected: 'address, offset'.
     Info: Welcome to Dwarf Fortress Tweak!
  Verbose: Found possible game at process ID 4644.
  Verbose: Selected game with process ID 4644, hash is 2c686c26307dcccd7c36cc79737ebe4f.
  Verbose: Game is version

Just a heads up. The core.xml seems to not function correctly.

Never mind. Found a thread to fix my problem.


Everything except the Adjust Profile module works, which is a bit awkward, since that's the only one I really wanted. I'll do some more digging.

That link fixed it for me, the "updated for .40d" link was crashing out for me in all but Tile Edit, so it may not have been correctly updated - or it might just be Vista64 vagaries --Soor 15:59, 16 March 2009 (UTC)
I'm getting the same error message. Error: Failed to load Q:\Software\DFG 18-40d11\tweak\versions\\core.xml: There is an error in XML document (34, 3). Validation error: The element 'memory' has invalid child element 'pe'. List of possible elements expected: 'address, offset'. I got that both before and after I followed the steps given at that topic. In addition, tweak will always say "no dwarf fortress processes found" when I press select process. Shukaro

Problem When Selecting Processes[edit]

Whenever I attempt to select a process, I get this message

Could not a find a version for the following hash: 2c686c26307dcccd7c36cc79737ebe4f Look this hash up on the tweak website?

Any help?

Same problem here. D: Only mine is "59ab29021aca9f3c66b1ab102fbeceea"--Kungasi 19:37, 18 February 2010 (UTC)

Are you using a non-standard version of DF? For example, are you using Mayday's DFG? The hashes for those are not listed in tweak's versions.xml, causing the error you describe.
There is an easy* fix: find the version of DF that your exe is based off (e.g. my copy of DFG21 is based off 40d), then manually add the hash for your exe to versions.xml for that version of DF. BACKUP YOUR STUFF BEFORE YOU DO THIS, just in case.
*depending on your confidence with editing XML. 13:50, 25 February 2010 (UTC)

Error 299[edit]

When I try to start a module, I've got the following message box :

error 299.

Gibbed.DwarfFortress.Tweak.Win32Exception: error 299

à Gibbed.DwarfFortress.Tweak.ProcessMemory.Read(UInt32 address, Byte[]& data, UInt32 size) à Gibbed.DwarfFortress.Tweak.ProcessMemory.ReadVector(UInt32 address, Boolean andData) à Gibbed.DwarfFortress.Tools.Heal.Module.Run(ModuleMode mode, IVersion version, IMemory memory, ILogger log, String[] args) à Gibbed.DwarfFortress.Tweak.ModulePicker.onActivateModule(Object sender, EventArgs e) à System.Windows.Forms.ListView.OnItemActivate(EventArgs e) à System.Windows.Forms.ListView.WmReflectNotify(Message& m) à System.Windows.Forms.ListView.WndProc(Message& m) à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

I'm running Vista SP1, DF, Tweak, and .NET 3.5 is installed. Any help ?

I'm getting this as well when I try to heal, rather annoying cuz I thought this version was finally fully updated.-Userpay

Can't use most modules[edit]

So, I updated tweak to .39e, and I'm having major problems with this software.

It recognizes DF just fine, but when I'm preparing carefully I try to use Adjust Profile and it gives me an error saying "You can only use this when preparing carefully", even though I am.

So then I designate for mining the entire bottom level of the map, undesignate it, and run reveal, and it says "Map data not available" or something like that.

Then I try to run Tile Edit and it says the same thing.

So then I thought, maybe I need to lookup the addresses each of these modules need, right?

So I run lookup address, and it takes two seconds to find only the addresses needed for "Enable Magma Buildings".

Basically, I'm only using this to enable magma buildings after using tile edit on Dtil, because I get errors on every single module on this software.

I'm running the latest version of tweak, it's properly updated, I'm pretty sure I have net runtime 3.5 installed because otherwise I wouldn't get it to run in the first place.


Version 40d11?[edit]

Tweak currently does not work under 40d11, and any attempts by me to get it to work by editing the XML files has failed. With which methods is the for example the version hash generated? unsigned comment by Dio82

Considering the relatively rapid releases of the d# series, I wouldn't expect any utility support. I actually don't expect any support for any release not posted on the Official Download page. Among other reasons why, is the high probability that there are a great deal of memory use/address changes related to the OpenGL changes that the d# series uses... possibly even completely breaking the current methods used to find and edit DF's relevant memory locations. (I'm not saying for sure, but it seems pretty likely) --Edward 22:13, 30 April 2009 (UTC)
There is a version of reveal.exe for 40d11 on dffd at least. For the rest of the modules there seems to be no alternative --CptFastbreak 18:45, 20 May 2009 (UTC)
That's the old standalone reveal, not the tweak module. I had to hexedit it to get it working, and it still has problems under Vista.
To answer the original question, the version hash is an MD5 digest of the entire DF executable.
0x517A5D 04:57, 21 May 2009 (UTC)

version mismatch, trouble fixing.[edit]

So, I open tweak and it tells me "Could not find a version for the following hash: 2c686c26307dcccd7c36cc79737ebe4f" . If I choose to look it up, it says something about the site not having it there. Thinking it was to do with my version, I went to fix that but encountered a problem: 6. Go to Dwarvis' Page and download the core.xml that matches your version of DF. Save it to the folder you just created, and rename it to "core.xml" The site seems to have disappeared.

BTW, I have a whole bunch of custom entities and items and creatures, are these causing problems and/or likely to cause problems?

If the version of DF that you're using is already listed in version.xml you can try replacing the hash listed in version.xml with the hash for your copy. This will overcome the hash mismatch without needing to add a new core.xml. However, if there are significant differences, tweak may end up barfing because what it finds in the core.xml for that version doesn't match what your copy of DF is actually doing. 13:57, 25 February 2010 (UTC)

Source Code available[edit]

For those of us who love to hack DF and like to code I'd totally appreciate it if you could release the source code of Tweak to the big, wide world. You don't have to since .NET Reflector would also do the job very well. But I guess, well documented code from the original developer's brain would be much more comfortable. :) What do you say? --SeveQ 11:31, 26 February 2010 (UTC)

I don't think the author is paying attention. His last Wiki edit was in September 2008. His last Bay12 Forum Post was in August 2008. And he didn't comment about my hack job on his Reveal utility.
0x517A5D 21:31, 13 March 2010 (UTC)

Update for 0.34.11?[edit]

Sorry for posting this here, but would it be possible to update for 0.34.11? I tried updating via the instructions for the xml files, but it won't find the process. Is this in need of updating or PEBCAC? I'd appreciate any help. Thanks.

I've been able to get it working with most new versions since 0.31; linky. —Andux 03:49, 25 September 2012 (UTC)