Leaderboard


Popular Content

Showing content with the highest reputation on 02/09/2026 in Posts

  1. 1 point
    Upscales approved and now available on Deadly Stream: https://deadlystream.com/topic/12120-skinrevenge-of-revan-upscales/
  2. 1 point
    Hey everyone! My Name is Lane. Some of you know me from Kotor Speedrunning, and others from my various Youtube exploits. I don't ever really post on Deadly Stream, but I've been lurking in and around the KotOR modding community for about a decade now. I have a degree in computer Science and decided to put it to good use, and reverse engineer KotOR 1 (the GoG version). This has been an on-going project for about 2-3 years now, and I've been sharing my progress with friends, and in some Youtube Videos. However, I've pretty much hit a wall with what I can do with this effort now. So I wanted to release my progress publicly, so other smart and clever people can start doing fun stuff with this. Linked below is a Google Drive with several useful things: A Ghidra Zip File (GZF) containing everything you need to use this A Ghidra SARIF export that contains all data types, function labels, parameters, Classes, and other additions I've made A Ghidra Format XML that contains the labels and function adjustments I've worked on. This is lighter weight than the SARIF file, but has more limitations when it comes to import fidelity. A generated `.h` file, that contains the Header information I have pieced together over time. Even lighter-weight, and more limited than the above What this is not: True Debug Symbols for kotor BioWare Intellectual Property A runnable or compilable program Kotor's Source Code A reverse engineering of Kotor 2 A reverse engineering of the Steam version * * A note about Kotor 1 Steam: While this reverse engineering effort targeted the GoG release of KotOR 1, the Steam version has MANY similarities; often times having identical memory addresses for most functions. Any Patch made for the GoG version can be pretty reasonably ported to Steam with a little bit of effort. What this is: A decently representative result of what Kotor's debug symbols might look like (format and terminology pulled from the MacOS symbols, and existing NWN docs) A research-based labeling and reverse engineering of the GoG version of Kotor 1 A labor of love for the past several years that I'm happy to share Why this is cool/important: This provides a stepping off point for creating proper patches for KotOR 1 This also provides a means for researching underlying issues with things such as memory management, graphical limitations, and compatibility This also provides a researching angle for coming to understand some of the more mysterious file formats, and how they interact with the game itself There are also a variety of fundamental similarities between this and KotOR 2. Which may unlock some insights for that game This is also the first step towards a proper re-compilation (though that is a long-ways off) How do I use the GZF? (New way) You need Ghidra installed, with a modern Java Runtime Download `k1_win_gog_swkotor.exe.gzf` from the google drive below Create a new Ghidra project Drag the GZF into the project Double click it to begin browsing You now have a decently labeled/decompiled instance of KotOR 1 How do I use the SARIF or XML? (Old way) You need Ghidra installed, with a modern Java Runtime Create a new project, and import swkotor.exe (as purchased from GoG) Open the EXE in Ghidra's code browser When it asks if you want it analyzed, select 'Yes" The default analyzers are fine, technically you could speed this up by stripping out a few unneeded analyzers The analyzers will take several minutes to complete (progress can be tracked in the bottom right) Once the analyzers have run, we can proceed Select "File > Add To Program..." and select the SARIF (or XML) file (download below) The importer will analyze the symbols and apply them to the project You now have a decently labeled/decompiled instance of KotOR 1 Limitations: 99.9% of the functions have been labeled, however there were a few stragglers that I was never able to work out. These will appear as `FUN_<address>` 92.3% of the Data is labeled, with stragglers being named `DAT_address` Data Types are VERY incomplete. The labeled ones consist mostly of frequently used types, and known fields. Unknown fields are marked `field<index>_<offset>` Virtual Function calls are very under labeled (largely due to the difficultly of labeling vtables in Ghidra). Though you can determine the underlying function by applying the offset to the associated Class vtable. Most functions have only automatic variables defined within their decomp. Typing and purpose of underlying variables beyond function names, and parameter types, are left up to inference. Overlapping functions. Certain functions overlap in this compilation, due optimizations within the Visual C++ runtime. As a result some functions such as `GetProperty0x30` are shared by multiple classes, and thus lack a name-space. You can usually work out their purpose by checking the associated data type at that offset. If you used the XML import, you will be missing a lot of typing and Function Class/Namespace info Final Notes: Please feel free to ask me any questions about this effort, or any thing strange you might find within the decomp. I've grown to be quite the kotor expert over the years, and I'd be happy to share any insights. You can reach out to me on Discord @lane_d, I'm in the Kotor server, OpenKotOR server, DeadlyStream server, and the kotor speedrunning server. I will be periodically posting updates to this drive, whenever I get the chance to work on this more. If anyone has any major contributions they'd like to see added, please reach out! I'd be happy to chat. Google Drive Link Here
  3. 1 point
    The Russian modder did just that, but since he's presumably gone he can't come back and bug fix his own work or release it to the English-speaking Kotor Community. But as for why no one else has done it, it's simple - it takes effort to make a good quality mod. The TSL Expanded Ending mod adds a really high quality ending that puts TSLRCM's ending to shame, but it was made by a very talented modder. If he ever decides to work on the rest of Malachor, it probably won't be released for a very long time as it'd take a long time to not only make but ensure it's compatible with TSLRCM and other popular mods as there are lots of variables to consider for the end game - and this even includes him using Malachor VI as a base for his work, good mods take time to make and it's very easy to get burnt out during that process.
  4. 1 point
    For those who are hungry for updates, thanks for all the kind words and support. As holidays are around the corner, my free-time has been a bit taxed lately as I strike the balance between KotOR things and spending time with my and my fiance's family. (Not to mention keeping up with my real job 😬) However, I did spend some time formalizing some of the various "wishlist" features, as well as other pending investigations within the repository issues view. Most upcoming work on my radar for this project is of the unexciting sort. I want to adjust the way I'm modelling game objects in the patching framework to better reflect the underlying inheritance in the base game (i.e. Functions that take a CSWCObject can accept a CSWCCreature, which is derivative, as valid input, etc). I also want to improve/expand the address database system. Right now, they're being stored in plain-text TOML format, which is fine at the current scale, but as this project has grown, this system is already becoming unwieldy. I'm looking to swap to using SQLIte, such that we can have efficient, live, swappable local databases that we can just dump address data directly out Ghidra into. Finally, kotor 2 reverse engineering just needs more work. Kotor 1 is in a great place, such that if we were only targeting that game, I could really accelerate this project. But since I'm endeavoring to provide a solid framework for both games, some TL&C is required to get kotor 2 at least somewhat up to speed. I likley will be giving DarthOuroboros's GhidraMCP suggestion a shot to see if that can accelerate things more here. As a lot of the work to be done is mostly comparative reverse engineering, which I hope falls into the low-complexity class of problem that AI typically excels at. As always let me know if there are any questions or suggestions! P.S. @ajdrenter Galaxy map stuff would be pretty interesting, I've added an issue for me to investigate that at some point in the future. Thanks for the suggestion!
  5. 1 point
    Amazing work! You managed to break down so much limitations... This is extremely exciting :)
  6. 1 point
    Two demos in one day! In this one I show, kotor 1 working with more than 256 rows in placeables 2DA (something that previously wasn't possible).
  7. 1 point
    (Cross posted from Discord) More progress has been made on doing some patching in KotOR 1! Here I demonstrate adding in a simple test function mto the NWScript VM, and running it in-game. The summarize what all is happening here: We patch the space allocated and existing bounds checks for script IDs (I extend the space such that we could have up to 1000 total functions, but I can always extend it more in the future) I patch the existing initialize commands function in the game to continue onto my own block of code where I initialize this new `TestScriptExtension` command to call a simple execution script (using an identical pattern to the existing scripts in this game) I added this command to nwscript.nss so `nwnnsscomp.exe` would recognize and compile the script with this new function (special thanks to Edward T. Smith for making a tool that is so well designed that it works out of the box for our very custom situation here) Set it to run when I talked to carth The actually function just prints some debug text to Windows Debug, however, we can also have them call other game functions, implement custom stack logic, among other things. There's still A LOT of work to be done: I want to clean up the patcher/launcher so that using it is actually intuitive I want to add a bunch more commands to the script extender I want to tutorialize the creation of both new commands and patches, so that the lovely and creative people of kotor modding world can contribute in the future Setting up Kotor 2 compatibility much much more Let me know if ya got any questions!
  8. 1 point
    I know it's been quite a while since I made any announcements on this project. 2019 was a very busy year for me. Even so, I was still able to work on the code a bit, and pushed code updates to the GitHub repo every so often. 2020 is still looking to be just as crazy if not more. I'm hoping to be able to post more updates on my progress. I've compiled an alpha build for anyone to test out. It can be downloaded from the release page of the GitHub project here: https://github.com/KobaltBlu/KotOR.js/releases/tag/v0.0.1 Download and unzip the contents somewhere. KotOR-js.exe is the main executable. When you run either game or the toolset for the first time, it will ask you to locate the game directory for the original games first. After that you should be good to go. It is an alpha so expect some things to be broken and or act weird. Compatibility Note: This is a 64bit build. I also believe it only supports win7 and up. I'm always eager to hear any and all feedback! This project continues to be a lot of fun to work on, and it's always forcing me to push the boundaries of what I know about coding and game design. If I can say something of encouragement to the new modders or coders that may be out there browsing these forums. It would be to chase that crazy idea and push yourself to try. When you spend hours and hours writing code or creating a mod, that feeling of seeing your hard work finally bear fruit is amazing. I can't count how many times i've seen modders discouraged from attempting projects because other people think they are biting off more than they can chew. I know that if I would have announced this project when I was just beginning, I fear I would have received similar remarks from some. The thing is that you very well might be over your head, and thats ok! Failure doesn't have to be the end of the road, it can be a stepping stone to better things if you learn something along the way and apply it the next go around. At least that's how I see it 😅. Anyways I apologize for rambling on, I'll sign off for now!
  9. 1 point
    Hey everybody, As you might already know, there are 3 different heights in KotOR 1, Soldier being the tallest (literally being able to look down upon Calo Nord) and Scoundrel being the shortest (requiring everyone in the galaxy, except Mission, to look down just to see you), while Scout is tall enough for a direct eye contact most of the time. There is a mod, "K1 Player Character Height Adjustment" (https://deadlystream.com/files/file/397-k1-player-character-height-adjustment/), that makes you as tall as Soldier regardless of the class but ONLY while wearing armors and Jedi robes. Problem is, I'd like to play through the game as a Scoundrel with the default clothing, which is a red jacket for the class, but because it doesn't qualify as armor (or a Jedi robe) like the mod requires, so you can't have a tall Scoundrel. So, I really would appreciate if a mod that makes Scoundrel as tall as Soldier could be made. Even if such a thing isn't possible, I thank and appreciate you all for at least taking your time to read this. Have a great day and a great life.