Showing posts with label Terraria. Show all posts
Showing posts with label Terraria. Show all posts

June 9, 2020

RTResolution v0.4.0 Troubleshooting

RTResolution will be released to the general public on Friday after being released to patrons early today.  This post will collect the troubleshooting information from early adopters.

The game crashes on launch.
The RTResolution patcher now drops two files in your save game folder: Terraria.exe and RTRHooks.dll.  Make sure you copy both files over to your save game folder.
Update 6/10 7:24pm: Fixed in RTResolution 0.4.2.


The game won't go over 4096 in any one direction.
There are memory constraints within the Terraria process when you start going larger than this.  If you want to risk it, try the 8K experimental build.  I'm aware of at least one crash at higher resolutions due to an issue inside of Terraria with ultra-high resolutions, though.
Update 6/10 7:24pm: Fixed in RTResolution 0.4.1.

June 8, 2020

RTResolution v0.4 Released Tomorrow For Patrons, Friday For Everyone Else

I'll be releasing RTResolution v0.4 tomorrow for patrons.  This has the verified biome fix, works for Terraria v1.4.0.5, and is tested in multimonitor scenarios as well.  This also unlocks me being able to do more mods in the future the way I used to do them in RomTerraria.

The build will be released for everyone sometime on Friday.


For those of you who have been popping on to my Patreon, grabbing builds, then dropping off...I'm tracking that.

June 29, 2017

RTResolution Next Steps

First, the good news.  It looks like RTResolution v0.2 properly handles all of the stock use cases.  Yay!

Now for the not so good news.  It looks like TModLoader doesn't quite like RTResolution.  If so, not that much of a surprise.  Getting mods to work well together isn't exactly easy.  Ask the Skyrim modding community...

I don't have an extended weekend coming up like most Americans, so I'm going to be spending the next couple of evenings digging into TModLoader and what's going on when it gets patched with RTResolution.  One of three things will happen as a result:
  1. I might realize that getting TModLoader and RTResolution to play nicely together will be too much of a pain in the ass and just punt on working with the mod;
  2. I might find the cause and realize that patching it my way would be a pain in the ass so I'll report the issue as a bug to the TModLoader team; or
  3. I'll find the solution and prepare RTResolution v0.3.
Stay tuned.

Update 6/30/2017 5:06pm: TModLoader moves all of the rendering code over to a method called do_Draw.  The crash is happening because I don't modify do_Draw.

Update 6/30/2017 5:17pm: Testing with TModLoader now. Still getting a crash.  It's looking for something that I don't touch.

Update 6/30/2017 5:34pm: Option #2 it is.  Issue filed with TModLoader team.

June 21, 2017

RTResolution v0.2 Available Now

Download here.

This build does only two things for Terraria 1.3.5.3:
  1. Removes the forced minimum zoom.
  2. Allows resolutions greater than 4096x4096 (memory allowing).
This build doesn't currently work with TModLoader 0.10.0.2.  The compiler version that they are using is newer than the version of Mono.Cecil that I'm using and the two don't place nicely together.  A ticket has been filed with the TModLoader team.

June 11, 2017

RTResolution v0.1 Available Now

Update 5/17/2020 11:05am Pacific: v0.3 released.
Update 6/21/2017 9:48pm Pacific: v0.2 released.

This should give you 1:1 pixel resolution at resolutions above 1920x1200 in Terraria 1.3.5.3.

To clarify, the only thing that this mod does is remove the forced minimum zoom level in Terraria.  If you open the options and the lowest value for zoom is higher than 100%, this will let you set your zoom to 100%.

Note that this currently requires that you have the .NET Framework 4.6.1 or higher installed.

The most common complaint appears to be this not running or appearing to have crashed on run.  Rebooting, then running RTResolution again, appears to fix this for the vast majority of users.

Showing 1:1 pixel resolution at 3840x2160 in Terraria 1.3.5.3

May 3, 2017

RomTerraria Post-1.3.5 Update

I've been spending a few hours a night working on the two successors to RomTerraria.

RomTerraria is going to be split into two separate programs.

The first is going to be called RTReach.  This will allow you to switch the XNA profile from HiDef to Reach and back on various executables.  This will allow people who were able to run Terraria pre-1.3.5 to run it again.

The second is going to be called RTResolution.  This will do two things and two things only.  First, it will unlock resolutions higher than 4096x4096.  Second, it will (hopefully) allow 1:1 pixel scaling.

All other functionality contained within RomTerraria is going to be discontinued.  You can work with the tModLoader community to add back in anything else that you require.

I am not going to solicit or accept funds for this work.

Once the two mods are released, the source for them will be available on GitHub.

I'm hoping to have initial releases of both mods available this weekend, but cannot guarantee the release date.

Once these are released and the source is released, if the tModLoader team wants to integrate my work into their project, they are welcome to it.

I really want to be able to get back to working on my own games rather than work on maintaining this project, but since it seems this is what the community wants me to do...

Finally, I'll be unavailable from May 31 through June 11.

Update 5/6/2017, 3:00pm: Test release of RTReach 0.1 available.  This switches the XNA profile from HiDef to Reach so that people with older video cards who were locked out of v1.3.5.x should be able to run the game again.  Still working on the resolution unlock patch.  Had to roll back from Mono.Cecil v0.9.6.x to v0.9.5 due to some assembly resolution stuff that Terraria does.

Update 5/7/2017, 10:35am: RTResolution is mostly there.  I removed the max-4K resolution limitation and have it so that you can set the zoom to 1:1 pixel, but something else in the core game is still overriding the 1:1 pixel code.  Sorry for the delay, still working on it.

Update 5/17/2017, 6:00pm: I've been sidetracked while covering for a coworker who was out on vacation and am almost done getting caught back up.  Still working on it.

Update 6/11/2017, 5:10pm: With 1.3.5.3 out and me back at my home PC, I've resumed work on RTResolution.

I've also finally found the code responsible for the forced minimum zoom level.  I think I can get rid of it.

Update 6/11/2017, 6:00pm: RTResolution v0.1.  Let me know if it works for you.

April 19, 2017

RomTerraria and v1.3.5.x: Just When I Think I'm Out...

Consider this the request post.

Right now, there are two items that I see as being needed for Terraria v1.3.5.x.

1) The ability to revert to the XNA Reach profile.  People who have older (e.g. crap) machines/GPUs don't appear to be able to run the game anymore.  When I look at the resolution code in Terraria, they appear to still have the old non-4K limits in place if the Reach profile is embedded in the executable.  I already have the code to handle this.

2) "Uncap" the minimum zoom level.  This is going to take a little while to figure out where they're putting the cap in place and then figure out how to circumvent the cap.  (Update 4/21, 8:00pm: I just started up 1.3.5.2 and...yeah, rather than scale to pixel, they're scaling to their "maximum" 1920x1200 view.  This might take a while to figure out.)

Anything I'm missing?

Update 4/30/2017, 3:00pm: I'm working on two patchers.  The first patcher will handle number one on the list above only.  The second patcher will be resolution patching only.  Expect releases for both sometime this week if all goes well.

Update 5/6/2017, 3:00pm: Test release of RTReach 0.1 available.  This switches the XNA profile from HiDef to Reach so that people with older video cards who were locked out of v1.3.5.x should be able to run the game again.  Still working on the resolution unlock patch.  Had to roll back from Mono.Cecil v0.9.6.x to v0.9.5 due to some assembly resolution stuff that Terraria does.

Update 5/7/2017, 10:35am: RTResolution is mostly there.  I removed the max-4K resolution limitation and have it so that you can set the zoom to 1:1 pixel, but something else in the core game is still overriding the 1:1 pixel code.  Sorry for the delay, still working on it.

Update 5/17/2017, 6:00pm: I've been sidetracked while covering for a coworker who was out on vacation and am almost done getting caught back up.  Still working on it.

Update 6/11/2017, 5:10pm: With 1.3.5.3 out and me back at my home PC, I've resumed work on RTResolution.

Update 6/11/2017, 6:00pm: RTResolution v0.1.  Let me know if it works for you.

Terraria 1.3.5

Well, there's no longer going to be a need for RomTerraria in its current form.

The core piece of RomTerraria (resolution unlocking) is now fully integrated into Terraria proper.  Specifically, the code I wrote to unlock higher resolutions is literally inside Terraria 1.3.5's Terraria.Main.TrySupporting8K() method.

With that, my job is done and RomTerraria is going to be going on hiatus while I figure out what, if anything, I can do with the game.

April 15, 2017

RomTerraria TModLoader Experimental Fix

If you are experiencing crashes with using RomTerraria with TModLoader, I have an experimental build here that might fix a specific subset of crashes.

Give it a shot and let me know.

Update 8/19 7:29am: Looks like Terraria 1.3.5 may be released today.  No version of RomTerraria will be compatible with v1.3.5 due to the severe amount of changes that are going into it.

February 28, 2017

Crashes With tModLoader and RomTerraria

I've been getting several reports of crashes when people take tModLoader and apply RomTerraria on top of it.

While the latest version of RomTerraria includes updates to handle the base cases, I'm still trying to figure out the cause of a race condition with rendering that appears to be affected by certain mods.

If you are experiencing crashes with a modded Terraria with RomTerraria applied, please reply to this post with the list of mods that you are adding.

Update 3/26/2017 4:23pm: Fix coming shortly.

Update 4/3/2017 7:04pm: I'm still working on a global fix. The major cause of most of these problems (and crashes with non-retro lighting) appears to be assumptions about the state of the SpriteBatch object. If a mod works in retro mode, but not in other lighting modes, it's a bug in the mod. I'm working on a deeper fix, but it's going to take a bit more time.

February 4, 2017

The Future of RomTerraria

Sounds like there is a rumor going around that large monitor support and UI scaling support will be added to Terraria as part of 1.3.5.  I'm hopeful.  The XNA alternative that is used on the Mac and Linux ports doesn't have the XNA texture size restriction that limits them to 2048x2048 and lower resolutions on PC, so if they just use the same codebase for Windows, all will be good.

So, if the number one feature of RomTerraria gets put as a feature of the main game, what will happen with RomTerraria going forward?  I don't know.  In the past, the main feature of RomTerraria was the minimap, and that was brought in.

If I had to guess, assuming nothing blows up with the retail release, RomTerraria as it exists will be retired completely come the release of v1.3.5.  I'll likely take a break from Terraria modding for a couple of months, then come back with something new.

December 17, 2016

RomTerraria and v1.3.4.4

If you are using the test version of RomTerraria for v1.3.4.3 and above and are experiencing water not rendering, please repair your Terraria installation, launch the game once, exit, then repatch.

If you are using the patch and the map is not coming up or you are stuck in a lower lighting mode, it means that an exception has been thrown.  I need to know the resolution you are trying to run at.

I'll be spending time tomorrow working on any reported issues.  Today I have to go finish my Christmas shopping and try to ignore the fact that today would have been my twenty-second wedding anniversary.

[Removed three weeks worth of outdated information]

Update 1/8/2016 12:03pm: I'm still getting reports of water and lava not properly rendering.  If you have deleted your config file, reset your resolution, then restarted the game, and you are still having issues, look in your Documents/My Games/Terraria folder and look for a file called CrashInitTargets.txt and post the contents of that.

Update 1/9/2016 7:30am: I received a CrashInitTargets.txt that showed a NotSupportedException creating the waterTarget RenderTarget.  That's really odd because that particular exception shouldn't be thrown by the RenderTarget2D constructor.  Will research when I get home tonight.

Update 1/9/2016 6:45pm: Okay, I just made a change that should free up an extra 140-210MB of RAM.  Water is working using the following values in config.rt.json (I game RomTerraria its own config file to help keep things simple:)

{
  "SmartCursorToggle": true,
  "MapEnabled": true,
  "InvasionBarMode": 2,
  "AutoSave": true,
  "AutoPause": false,
  "Language": 1,
  "PlacementPreview": true,
  "GoreVisualsAllowed": true,
  "VolumeSound": 1.0,
  "VolumeAmbient": 0.75,
  "VolumeMusic": 0.75,
  "UseExperimentalFeatures": false,
  "Fullscreen": true,
  "WindowMaximized": false,
  "WindowBorderless": false,
  "DisplayWidth": 3840,
  "DisplayHeight": 2160,
  "GraphicsQuality": 0,
  "BackgroundEnabled": true,
  "FrameSkipMode": 2,
  "LightingMode": 0,
  "LightingThreads": 0,
  "Parallax": 0.88,
  "ShowItemText": true,
  "LastLaunchedVersion": 188,
  "UseSmartCursorForCommonBlocks": false,
  "UseSmartAxeAfterSmartPickaxe": false,
  "UseSmartWallReplacement": true,
  "DisableLeftShiftTrashCan": false,
  "HighlightNewItems": true,
  "HidePasswords": false,
  "ReverseUpDownForArmorSetBonuses": false,
  "MouseShowBuildingGrid": false,
  "AllowUnfocusedInputOnGamepad": false,
  "LockOnPriority": 2,
  "InvisibleCursorForGamepad": true,
  "GamepadDisableInstructionsDisplay": false,
  "SettingsUnlock_WorldEvil": false,
  "SettingsEnabled_MinersWobble": true,
  "UseStormEffect": true,
  "UseHeatDistortion": true,
  "WaveQuality": 3,
  "MouseColor": {
    "R": 255,
    "G": 50,
    "B": 95
  },
  "MouseBorderColor": {
    "R": 0,
    "G": 0,
    "B": 0,
    "A": 0
  },
  "QuickLaunch": false,
  "CloudSavingDefault": false,
  "FilterLimit": 16,
  "FilterPriorityThreshold": "VeryLow"
}

I'm packaging up the build now.

Update 1/9/2016, 6:54pm: Here is my update. The big change here is that I eliminated depth buffers for all of the render targets. Users of Terraria will see this result in ~210MB of RAM being saved. Users of RomTerraria will see this result in ~140MB of RAM being saved (I used to reduce the depth buffer to 16 bits instead of 24 bits). Again, this is an EXPERIMENTAL RELEASE. Have fun.

November 23, 2016

The 1.3.4.3 Method Rewrite Post

While I was taking my Uber back from the Postmodern Jukebox concert, I figured out how I was going to "fix" Terraria and allow myself to release an update for RomTerraria at the same time: I'm going to rewrite the method that is introducing the issue.

I've patched bugs in the base game before. For the longest time, if you didn't have a My Games/Terraria folder in your Documents folder, the game would crash when trying to create the settings file.  I patched that with the original releases of RomTerraria.

Fortunately, I've got a good place to handle injecting my replacement method.  LiquidRenderer.PrepareDraw just calls the internal method.

I'm going to do this patch in two phases.

Phase one will be out tomorrow on Thanksgiving assuming nothing else blows up and will simply make PrepareDraw be a no-op.  This will allow everything else to work as is EXCEPT for the new water effects.

Phase two will take significantly longer.  I'm going to rewrite LiquidRenderer.InternalPrepareDraw.  It's a bit over 400 lines of, well, not good code.  I mean, it's dereferencing to memory before a pointer.  If I was going to be a total dick, I could craft a world file that could potentially turn into a native code exploit.  Fortunately, I'm not a total dick.  This will take me a lot longer to do and may end up moot if they fix the issue before my rewrite is done.

I've only got this weekend to do this, so here goes nothing.

Update 11/24/2016, 11:57am: Well, it's not going to happen this morning, but I am working on it...


Update 11/24/2016, 12:20pm: I've gotten the replacement class building as a standalone DLL.  I've got to do IL-patches to replace 14 instances of the class in six methods in two classes.  I'm going to try to get that done before I have to leave for my afternoon social obligation.

Update 11/24/2016, 4:38pm: I'm back from my social obligation and am resuming my coding.  I've almost got the replacement working.

Update 11/24/2016, 9:57pm: Stopping for the night.  I've got my replacement class patched in and am working on debugging, but I'm exhausted.  That said, making PrepareDraw a no-op has other side effects and isn't a good solution, so I'm dropping that part of the plan.

Update 11/25/2016, 12:18pm: Taking a lunch break.  Since I'm afraid I'm going to have to do this kind of thing again in the future, I've created a general purpose class replacement system. Will resume testing once I am fed.

Update 11/25/2016, 1:03pm: I'm now able to reproduce the crash inside my custom class inside the debugger.  Should help me fix it.

Update 11/25/2016, 1:09pm: Well, it's good that I made the class replacement system generic, because the crash is NOT caused by the code I suspected.  It appears that something else is running amok around memory.  Give me a bit of time to figure out the appropriate memory layout so I can figure out which object is immediately before this one in the heap.

Update 11/25/2016, 1:30pm: I've got a 1.2GB memory dump that I'm manually going through.  I'd be going faster, but the .NET memory tools require a minimum .NET version of 4.5 and Terraria is compiled to 4.0.

Update 11/25/2016, 2:25pm: Good news: managed to stop the game from crashing. Bad news: filled blocks of water aren't rendering.  Still going.

Update 11/25/2016, 3:53pm: I've checked my current code into Github.  Still trying to figure out why full blocks don't render.  Note that this doesn't truly fix the memory overwrite, but it leaves the old 160KB object around as a "safety buffer."  I'm going to try for another hour, then call it a day.  I've still got work to do around the house.

Update 11/25/2016, 5:51pm: Part of the problem is that the version of Telerik JustDecompile that I'm using doesn't properly decompile unsafe code evidently.  Testing a fix now.

Update 11/25/2016 6:00pm: Adding padding around the wave bank let me run with water effects for almost ten seconds before the game crashed in a spectacular fashion.  Looks like something is hardcoded with a max resolution and when you go above that resolution, it starts walking over memory it shouldn't.  Dinner shortly, then more research

Update 11/25/2016 6:09pm: Here's a test version.  This is not guaranteed to work, but appears to be working in my limited testing.  Please let me know if it crashes for you.

Update 12/6/2016 1:13pm: v1.3.4.4 was just released.  The test version was compiled and tested against v1.3.4.3, and may not work with v1.3.4.4.  I'm at work for several more hours.  Let me know if I need to address anything after the fix.

Update 12/19/2016 9:35pm: Added LAA support code.  Trying to fix an issue with rendering water that surfaced at certain resolutions for v1.3.4.4 before releasing an update.

Update 12/25/2016 3:58pm: Build for v1.3.4.4 here.  You'll have to set up your settings again.

Update

I'm currently at a concert for Postmodern Jukebox and won't be home until almost midnight.

I've got tomorrow morning blocked out for rewriting the defective method in Terraria that's doing a negative address pointer dereference and swapping it out.  I've patched the base game before.  I'll do it again...

November 16, 2016

1.3.4 Support Coming

Sounds like Terraria v1.3.4.x broke RomTerraria again.

If I had to make a guess, I'd say that the new render pathway for water changed the number of RenderTarget2D's in the code.  If that is the case, it's probably a 20-30 minute fix.

That said, I haven't had a chance to look at it because I've been working, and I won't be getting home from work until late tonight.

I'll take a look at it after dinner tonight.

Update 11/16/2016, 8:23pm: I've got the resolution patch working, but the new water effects are causing the following crash that I need to fix first...

...removed for space...

Update 11/22/2016, 11:10am: Patch appears to be working, but I have to finish my test pass before I release it.  Hopefully tonight after dinner.

Update 11/22/2016, 6:41pm: I found a crash bug with 1.3.4.3. Working on patching it now.

Update 11/22/2016, 8:24pm: Okay, I've got a choice.  I can either release a version that will only work with all the visual bells and whistles turned off, or I can hold back and release it once I figure out what is causing the wave mask to get corrupted and crash approximately ten frames into rendering.  Right now, I'm planning on holding back until I get this tracked down.

I know that isn't what people want to hear, but I'd like you to remember two things.  First, the reason that RomTerraria works as well as it does across multiple versions of the game is that I don't do source decompiling/recompiling.  I do MSIL-level opcode patching.  This requires a lot more time to do right because if I do it wrong, I create invalid code and that breaks everything else.

Second, the reason that you never see anything about this mod over on anything official is because back when Terraria launched, some asshats were using my mod as a crack for Terraria and they bundled my mod with the cracked version.  Because of this, Re-Logic appears to see this mod as something bad.  As someone who spent a decade in the games industry fighting pirates, I can't blame them.  I'm absolutely certain that they see me as someone who has enabled bad behavior and they don't want to enable me to succeed in this venture.

I've been maintaining this mod as a spare-time project for over five years now, and it wears on me.  I don't make any money off of it, partly because I don't want to further enrage Re-Logic, and partly because it doesn't seem right to me to make money off of mods.  However, that means that this mod is secondary to other projects at both work and home.  Even tonight, I've had to spend time helping out a lady friend.

I spend the time that I can afford to on this, both from a financial point of view, but also a mental point of view.  Working on this mod isn't as simple as hitting F5 in Visual Studio and seeing what happens.  It requires a lot of time to trace through each failure.  It requires a lot of effort to inject diagnostics code into the assemblies.  It requires a lot of patience to track down crashes, support comments, etc.  I have a finite amount of willpower to get through each day and this mod gets the last few minutes of the day usually.

I'll keep working until I head to bed tonight, but I won't be able to work on it again until Thursday night or Friday morning at the earliest due to the holiday and social obligations.  I'm off Friday, however, so hopefully I can refocus my energies for a bit and get this fixed.

Update 11/22/2016, 8:50pm: Around 40 frames in, something is corrupting Terraria.GameContent.Liquid.LiquidRenderer._waveMask and changing it from an array of 40000 XNA Color structs to an array of 39936 XNA Color structs.  This is going to take a lot longer to figure out since Terraria uses unsafe code to work with that array.

Update 11/22/2016, 9:05pm: Well, the good news is that I figured out the root cause.  There's a bad bug in LiquidRenderer.InternalPrepareDraw when it's dealing with a fixed pointer to _waveMask.  This code has a lot of issues.  It's not cache coherent (looping over Y inside of a loop over X), and the root cause is a chunk of code that starts writing before the variable if you are on a screen with certain conditions set:

*(vISCOSITYMASK - 200 * sizeof(Color)) = *vISCOSITYMASK;

They're trying to set the pixel above a point to the value of that point.  That line should scare you.  Scares the hell out of me.  Until I can trace through what the hell led to this, or Re-Logic writes a cache coherent version of this method that doesn't write to memory before vISCOSITYMASK pointer, there will not be an update to RomTerraria.

Update 11/26/2016, 12:57am: A test version that seems to work with 1.3.4.3 is available over at the update post.

September 11, 2016

RomTerraria v1.2 Released

Go here to download.

My test map running at 4K resolution on Terraria 1.3.3.1.


This release fixes the "Retro" lighting bug introduced with v1.1 for Terraria 1.3.3.

THE INSTRUCTIONS HAVE CHANGED!  MAKE SURE THAT YOU READ THEM!

Working on fixing the LightMode error

Re-Logic added some code into Terraria to cap the size of render targets to 2048x2048.  This makes it so that if you use high resolutions through RomTerraria, it restricts you to Retro lighting.

Working on the fix now.  Will do another release once fixed.

September 10, 2016

RomTerraria 4 v1.1 Released

Go here to download.

THE INSTRUCTIONS HAVE CHANGED!  MAKE SURE THAT YOU READ THEM!

Also, you may notice a new disabled checkbox. Some new (and returning) features are in the works. If you want to help out, why not head over to GitHub?

September 9, 2016

RomTerraria and Terraria 1.3.3

Re-Logic released Terraria 1.3.3 about an hour ago, after I had already left for work.

I do not know if 1.3.3 breaks RomTerraria or not.  Ideally, it shouldn't.

If you patch 1.3.3 with RomTerraria and it crashes once, please try running it one more time.  There appears to be a race condition on first launch with larger display sizes.

I'll check 1.3.3 out when I get home from work tonight.  I'd love to do it sooner, but working on free mods doesn't pay the bills.

[Update 9/10/2016 10:46am: Working on a fix now.]

[Update 9/10/2016 11:02am: The main render target changed visibility, and a new render target was added.  However, other variables changed.  Still working on it.] 

[Update 9/10/2016 11:26am: All variables updated.  Working on updating a couple of method calls.]

[Update 9/10/2016 11:40am: New version uploaded.  Read the instructions, as they have changed.]

July 21, 2016

RomTerraria and Terraria 1.3.2.1

I'm at work, but I'm seeing reports that RomTerraria is having problems working with Terraria 1.3.2.1.  I'm not going to be home until late tonight, but I'll look into it when I get home.

[Update 1:  7/23/2016, 2:25pm.  I've been able to replicate the crash that people are reporting locally.  Working on a fix now.]

[Update 2:  7/23/2016, 2:30pm.  Unfortunately, the crash isn't consistently reproducible.  I get a null pointer dereference sometimes when I start the game, but if I relaunch, the dereference doesn't happen.]

[Update 3: 8/13/2016, 6:17pm.  Crash workaround found!  After you reset your copy of Terraria, and before you patch it with RomTerraria, you must run the game stock once.  After that, you can patch it and it'll work just fine.  It may still occasionally crash on the first launch after a system reboot, however.]