Jump to content

Lane

Members
  • Posts

    30
  • Joined

  • Last visited

  • Days Won

    7

Everything posted by Lane

  1. New KPM release, we're at 0.7.0 now!
    https://github.com/LaneDibello/Kotor-Patch-Manager/releases/tag/0.7.0

    Highlights:
    - A ton of behind the scenes changes to help support future patch developments
    - Vastly improved support for MacOS (Special thanks to FTD and Synchro for pushing on this front). Including a native mac app, and a few mac compatible patches
    - Various Bug Fixes
    - Some script extender updates and fixes
    - Early MVP of the Mod Options patch included.
    - Better support for unknown EXEs (such as those that have already been patched via a different process)

     

    More coming soon, including a UI rework, a proper release of the mod options patch, more Mac OS support, and streamlining of more of the core functionality!

    1. TCS

      TCS

      epic work!

       

    2. Salk

      Salk

      Congratulations!

  2. It's been a while since I've given this thread an update, though I wanted to share a little demo of something I've been working on lately: Coming soon to a KPM near you
  3. the main kotor discord is just: https://discord.gg/kotor
  4. The way that one works is one module has several different UTM files, that get swapped out via dialogue script. So it's not so much that items are being cleared, but the full store is replaced. Yup! See `baseitems.2da`
  5. This is good too know! I know that we have some folk in the OpenKotor discord that have experimented with similar things. We've also done graphical hardware patching on the windows versions. There are some plans to do Mac OS patching in the future to try and fix some of the issues on that platform, though it's pretty back-logged right now. Getting things running on Apple Silicon would be pretty huge, though. You're welcome to join and share thoughts/findings if you're interested. I'm sure people over there will have takes: https://discord.gg/wS3YNGyMFe
  6. May be able to get away with just filtering out certain base items. Like plot items will reliably be base item 64 (Plot_usable_items). And maybe also filter Aesthetic items, Data_Pads, etc. Though I guess that depends on how you're clearing the items... I'm not aware of any master lists, though there aren't too too many merchants in these games. May just have to do some checking
  7. Hello there, I use Deadly stream semi-regularly to keep of with kotor modding things. I noticed that after the redesign the site became borderline unusable for me. With extreme stuttering when trying to scroll down the page. I finally got around to profiling the issues today. I am on Firefox, I typically run with the config `layers.acceleration.disabled = true`, which disabled a lot of the hardware acceleration. For 99% of website this isn't a problem. However, Deadlystream seems to rely and the render pipeline HARD, such that when I would access the site with that setting, my CPU would jump to 100%. I was rasterizing at 2560×1440 with 1.25× scaling (about 4.6 million pixels) at 60 fps. A tough job sure, but nothing a modern CPU shouldn't be able to handle. Looking into the profiling results I had several findings: It would seem the entire viewport is getting re-rasterized on every scroll. Freeing basically all of the picture cache tiles. Scrolling should translate cached tiles, not redraw them. Something is killing WebRender's tile cache completely. The layout is also being flushed every frame from what I can tell. In my 7 second profile I saw around 304 reflows (40+ per second). Something in the JS handling scrolling is not behaving here This seems related to however the scroll bar is handled. To recreate: Using a recent version of Firefox Open `about:config` in the search bar Find the `layers.acceleration.disabled ` setting, and set it to true Load up Deadlystream and attempt to scroll
  8. Sorry I've been slow to update this thread. A lot of the discussion has moved to Discord for better or for worse. But I'll try to put major updates here when I can. @DarthOuroboros Regarding a Lua machine, I had considered this option previously when I was planning out the script extender, but discarded it as the scripting community is already very well established, and asking people to adopt a new scripting paradigm might be a hard sell. However, that's not to say there'll never be a Lua machine implemented as you describe. There's room in the patching project for all sorts of ideas and features (provided someone is willing to create them). It just isn't currently on my or anyone elses docket to look into that.
  9. @darthbdaman since you asked about this last year: It's not perfect, but it's a good start/proof-of-concept I have plans to allow for even more columns than this, was mostly just checking if possible
    Solid tool for basic editing. Doesn't have the ability to add new columns, only new rows. I understand that this isn't a typical 2DA use case, but it would prove useful for some niche applications
  10. So it's kinda a mix. It depends what about the combat messages you want to modify. You are correct in that these messages mostly get built from custom tokens. For example see TLK # 1403 in kotor 1: > <CUSTOM0> damages <CUSTOM1> for <CUSTOM2> damage This gets conditionally combined and adjusted using other TLK entries. Like TLK 1440-1448 in kotor 1 has most the damage types. I guess the question is, what particular message are you looking to adjust and how?
  11. @DarthParametricinteresting! I have a few ideas of how that could be accomplished. I'll add it to the list
  12. @Salk This ended up being super quick and easy:
  13. Been chatting with a few community members, and I've been asked to share some of the other binaries I've come across. Attached below are the binary executables for Kotor 1 Mac, Kotor 2 Mac, Kotor 1 Android, Kotor 1 Xbox XKOTOR KOTOR2sub libKOTOR.so default.xbe
  14. @DarthParametric for the time being it is just 50. Though I plan to make it adjustable in the future. This was mostly a proof of concept In an ideal world, a level cap would be selected that is appropriate to the mods installed. I could forsee a future where there is so much added mod content that 50 levels would be too few Not to mention the associated 2DAs can be adjusted to make the higher levels less over-powered. Such as increasing the exp requirements, or introducing diminishing returns for things like feats, spells, defense, etc. But yeah, this is just laying the ground work
  15. Today's little demo: This patch was originally put together by @LanguageWriter123 (see here). He and I worked together to see what it would take to port this over, and today I decided to give it a shot, and I'm very pleased with the results! cc @darthbdaman as you asked about level caps earlier
  16. Hi @Salk I know what your talking about! The load behavior of a main menu load, a hard load (load game menu in game), an autosave load, and a quick load all have subtle but important differences. This has actually come up in the speedrun world a few times. For example, the effect duration glitch (in which they last a long time) only happens if you have previously loaded a hard save in this session (as that messes up the global timers). There's a variety of other small differences, between these functions; most of which I haven't dug too deeply into. But I'm unsurprised you've run into this before. If you could provide an example of a specific script related issue that performs differently for different loads (to use as a reference point), I'd be happy to mount a bit of an investigation into it when I get the time. As mentioned above, it's a busy time of year so this may be backlogged a bit. I'd also be happy to field any other questions! Thanks, Lane
  17. 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!
  18. Another little demo: Here I show off directly accessing 2DA values from scripts
  19. @th3w1zard1 Been avoiding AI thus far (largely so I could learn about how kotor works while I reversed it), but you're probably right that using Ghidra MCP would probably be a reasonable next step. The primary difference between Steam and Gog, is the steam version has DRM, which for one means, that we need to do our patching at runtime (after steam DRM decrypts everything), it also means the entry point is a bit different. But yeah, I've already did some experiments with attaching at runtime for the Steam version, and I absolutely plan to support it as well. An example of where this entry point difference causes some issue is the additional console commands patch. Console commands get initialized during the static initialization block before the call to `main()`, which means (in its current form) it doesn't work with Steam, as we have to wait for the game to spin up before we can attach the patcher, and so we miss this initialization step. I have a few ideas for how to work around this, but I haven't gotten around to it just yet. @DarthOuroboros The script extender can be pushed quite far, seeing as we can basically inject whatever C++ code we want wherever we want in the game. So, specifying your own custom file formats is definitely possible, if a bit high-effort. That's not quite on my radar at the moment, though I'd be happy to help on-board you if you're interested in taking a crack at something like that (assuming you're comfortable with C++ and Windows API). For .gltf specifically, Kotor already imports opengl.dll, and some related tooling, expanding that to handle some modern graphical formats/infrastructure would be an interesting project, the main struggle would be coming up with a solid translation layer for the Aurora Gob/Part system used under the hood.
  20. Ah, what I meant was that because I created a robust file I/O interface, that it wasn't clear how valuable the existing (unimplemented/gutted) print features would be. Though, in that the functions *are used*, but just not doing anything. Then yes, I agree, this would be quite valuable for sleuthing existing game logic and debugging those issues. For new mods though, I'd definitely recommend my function that's just a wrapper for `fopen`. But regardless, getting logs/feedback out of the game has been asked for a lot, and establishing several avenues for y'all is definitely a high priority for me.
  21. Little demo for this morning, showing off FreeCam in both games:
  22. @DarthParametric I actually cracked the debug camera a long time ago when I was working on thread injection: Around 2-minutes in that video Honestly this entire playlist is filled with things I've gotten up to in these games. I haven't stuck a way to use it in the patcher just yet, but I have a few ideas.
  23. Well the print screen stuff is another one of my earlier patches to re-enable the AurPostString function, which is also separately not implemented in the base game. That patch is a little more complicated, as I essentially need to redirect the execute command call to actually invoke the PostString function. As far as script logging goes, I'm not seeing anything. The PrintString, PrintInt PrintObject, etc functions are in various states of incomplete. With things like PrintInt simply doing nothing, whereas PrintString looks like it should do something, but when you dig into it more it doesn't. These could probably be restored to some degree, though I have also implemented file I/O, so it's unclear the degree to which this would be valuable. I didn't actually know about that level 50 hack. Looking at it, he seems to take a code-cave approach. Pretty nifty, though has a few issues by the looks of things.
  24. That should be very doable, right now the shipBuild function just return `true`, and does nothing else. So as far as patching goes, it's as easy as swapping a byte or two. I'll throw something together later today, and make a mini demo. Good suggestion, I'll add this to the list @DarthParametric Here ya go:
×
×
  • Create New...

Important Information

By using this site, you agree to our Guidelines.