Fallout 4 VR Reverse Engineering Lesson by Example

tl;dr

  • I found it very hard to get into reverse engineering (RE), mostly because I couldn’t find many practical references or tutorials for Fallout 4 VR.
  • Recently, while working on adding VR support and a few features to Extended Dialogue Interface (XDI), I needed to find how Fallout 4 decides when the player is far enough away from an NPC to exit a dialogue.
  • This post walks through the actual steps I used: starting from a known game setting, following references in IDA, understanding the decompiled code, and finally identifying the correct function to hook.
  • The technique in one line: start from a string you can name, follow it to the data that owns it, then follow the data to the code that reads it.

I’m sure anyone with real RE experience will find this fairly simple and crude, but when I started I would have loved to find something like this. Something written is better than nothing.

Continue reading

Fallout 4 VR “Mad God Overhaul” Modlist — Fixes and Customization Guide

TL;DR

  • When installing Mad God Overhaul, I found it had game and mod compatibility issues.
  • To fix it, I removed 3 problematic mods, created 3 merge patches to fix conflicts, added Far Distance LOD (Level of Detail), and added a few mods from GingasVR’s list to enhance graphics and gameplay.
  • The result is 95% vanilla gameplay at any difficulty level, improved interface, no conflict issues, full LODs, and working Sim Settlements 2!
  • I use it as a baseline working list for swapping graphics mods for personal taste, and to set up survival just as I like it without forced imbalance.
  • Below are the steps I took to customize the list, similar to my previous GingasVR Essentials Overhaul Customization Guide.
  • For comments and questions, please see my Reddit post.
  • Maybe now I can finally play the damn game 😀
Continue reading

Creating “Clean & Minimal HUD and Map” Mod for Kingdom Come: Deliverance — or a Guide to Customizing Mods for Yourself

TL;DR

  • There are many mods that change the HUD in Kingdom Come: Deliverance (KCD), but none achieved the level of immersion I was looking for.
  • I took inspiration from existing mods to create a clean and minimal HUD/UI mod tailored to my taste.
  • The same tools and knowledge can be applied to mod other games like Skyrim and Fallout.
  • It’s not that hard — and totally worth it.
Continue reading

GingasVR’s “Fallout 4 VR Essentials Overhaul” Customization Guide

tl;dr

  • Wanting to play Fallout 4 in VR, I quickly realized I must use mods; after trying out the 3 available modlists, “GingasVR’s Essentials Overhaul” was the best.
  • After playing “vanilla” Gingas modlist for 10+ hours, I started noticing changes I didn’t like, but customizing the mods and gameplay was hard and error-prone.
  • After spending far too much time, I finally managed to customize the gameplay to my liking by removing ~30 mods, adding ~6, and tweaking INIs.
  • In my humble opinion (IMHO), the result is focused on gameplay, closer to vanilla, and better balanced.
  • I would like to offer the steps I took to customize the modlist, as a guide for others.
  • For comments and questions, please see my Reddit post.

HD Update 2025

  • GingasVR updated the modlist in August 2025.
  • Most of my guide is still relevant on how to customize a modlist.
  • I’ve added, removed, and updated recommendations where necessary.
Continue reading

Sharing Code in TypeScript and Project References

tl;dr

  • Strategies for sharing code and how they integrate within the TypeScript ecosystem.
  • Project References enable code sharing across multiple TypeScript projects within a single codebase (monorepo), offering modularization, dependency management, and incremental builds.
  • The simple use of Project References is straightforward but can result in cumbersome import paths like ../../../../../libs/dist/data-access/loader/common.js, which expose the project’s internal folder structure.
  • This post explores solutions to the import path issue, balancing complexity and elegance:
    • TypeScript paths aliasing adds complexity by requiring extra tooling for runtime import resolution.
    • Bundlers, while somewhat cumbersome, largely resolve these issues and provide production deployment tools.
    • npm workspaces mimic external npm dependencies using symlinks in node_modules, addressing import paths without aliasing or extra tooling and enabling package export management for better modularization.
  • In conclusion, TypeScript Project References combined with npm workspaces provide an optimal solution for multi-project code sharing within a single codebase in TypeScript.
Continue reading

Back to Blogging and Learning to Code Again

Oh, hi there! Well… it’s been a while since I last blogged, so let me explain…

Since my last post, a few changes have occurred in my life that affected my ability to write. I started a new job at Facebook, relocated to London, began a new relationship, got married, left Facebook/Meta to travel “the world” for almost two years, and finally relocated (again) to the US.

Continue reading

Adding auto-zoom feature to Android-Image-Cropper

In this post I will describe the work I did to add auto-zoom functionality to Android-Image-Cropper library.
The goal is a smooth zoom-in/out experience affected by the size of the cropping window. When the user adjusts the crop window to cover less than 50% of the image current total visible sub-area, auto-zoom-in is triggered to zoom-in and center on the relevant cropping image zoomed sub-area so the crop window will cover 64% of it. Similarly, when the crop rectangle is above 65% auto-zoom-out is triggered so zoomed sub-area will be 51% covered.
 
Steps:

  1. Using matrix scale type for the cropping image in image view .
  2. Handle image rotation via matrix transformation.
  3. Adding auto-zoom-in/out to matrix transformation.
  4. Smoothing transitions using animations.
  5. Cropping using invert matrix transformation.

 

Result:

result.gif
Continue reading

Android Image Cropper async support and custom progress UI

It's embarrassing really, soon after creating my Android-Image-Cropper fork as I wrote about in my previous post, a GitHub user noted that I have a slowness issue caused by loading/decoding image URI on main thread potentially causing an ANR, really a newbie mistake.
Unfortunately starting a new startup I didn't have the time to fix it then, and no one come forward with a pull request. Fortunately the company is more mature now so I can commit a bit of my free time for the project.
 
What we will have here:

  • A few words on the implementation.
  • Using setImageUriAsync and getCroppedImageAsync.
  • Handling OnSetImageUriComplete and OnGetCroppedImageComplete listeners.
  • Overriding default progress bar UI using showProgressBar view attribute and listeners.

 
TL;DR See the gist.
Continue reading