July 25, 2015

RomTerraria v4 and Mac/Linux FAQ

Will RomTerraria work with the Mac/Linux versions of Terraria introduced with


Are you planning on making RomTerraria work with the Mac/Linux versions?

I may be able to come up with a workaround to allow the resolution unlock to work, but don't plan on it just yet.  I'm currently adding "Browse" support to find your Terraria executable for those goofy cases where I can't find it, so in that case, you'll just point RomTerraria to the Mac/Linux executable on your Windows machine and I'll try to patch it...but again, no guarantees.

Why not?

I haven't looked at how they did the port, but I'm going to assume that it's using MonoGame.  That's fairly easy to handle.  If I detect a MonoGame version, I won't have to inject the code I'm using to change the XNA profile or uncap the maximum texture size limitation for XNA.  Relatively simple.

However, I'm working on some other code right now to allow users to swap the left/right mouse buttons based on complaints I've been hearing in the Steam and Terraria forums from left-handed users.  Let's use this as a simple example.  The easiest way for me to handle this via Mono.Cecil is to iterate through the classes and swap references from LMB to RMB and vice versa.  However, those references differ between XNA and MonoGame.  They're in different assemblies.  If I have to do that kind of odd detection for each branch, the complexity will eventually get overwhelming.

Plus, I can test on a Mac easy enough since I have a MacBook Air, but it'll take me a bit to get a Linux VM set up that would be able to handle it.  That said, it's going to be a bit before I resume coding.

Why aren't you currently coding?

My left ankle is currently twice the size of my right ankle.  I've been going back and forth to the doctor's to try to figure out what is going on.  So far, we've ruled out infection and DVT, but still can't figure out what is causing the swelling.  It's difficult to write effective code when you can't focus.

July 19, 2015

RomTerraria 4 v0.8 Feature List

Still working on the next update while my ankle recovers.  As I get things working, will add them to the list here so you'll know what's in the next update.
  • In windowed mode, you'll no longer be restricted to the size of your primary desktop.  However, if you stretch your window so that it is larger than 8192 pixels in any direction, the game may crash.

July 13, 2015

Update on RomTerraria Ultra-High Resolution Support

If you are still crashing with resolutions higher than 4096 pixels in any one direction (for example, 5760x1080) after updating to, I'm sorry.  I've put in as much troubleshooting as possible without being able to reproduce the issue in-house...which is my next step.

Right now, I'm running on a 2560x1440 monitor with a GeForce GTX 760.  I'm going to see if I can get another two monitors attached to this guy this week in hopes of breaking the ultra-wide resolution barrier and I'll see if I can reproduce the issue under a debugger then.

It's currently looking like a write-after-free bug with a render target.

If anyone can attach a debugger to their Terraria.exe process patched to with v0.7 before then and can get me any detail, I can work on patching it, but until then, I'm stuck.

Sorry for the delay.

July 12, 2015

RomTerraria 4 v0.7 Released

Taking care of a sick friend this weekend has pushed a lot of stuff back.

Download link on this page.

In this release:
  • Option to force Terraria to catch CorruptedStateExceptions.  This option adds the HandleCorruptedStateException and SecurityCritical attributes to Terraria.Program.LaunchGame.
  • Added tooltips to currently enabled options.

July 10, 2015

Trip This Weekend; Updates Sunday Evening

Almost done getting RomTerraria's code cleaned up for release on GitHub, but may not have it done tonight.  The only issues that I'm aware of right now are that people who are using RomTerraria on certain multimonitor configurations are crashing out without a stack trace.  Enabling the legacy corrupted state exception mechanism should have worked to let me diagnose that, but it turns out that it didn't.  I'm now looking into injecting exception handlers into methods to try to help with diagnosing.

I've got an unexpected trip down to Yosemite tomorrow morning, but I'll be back on Sunday.