Jump to content

Sam.

Modders
  • Posts

    493
  • Joined

  • Last visited

Posts posted by Sam.

  1. From what I can discern, what you're asking about is a bit of a mixed bag.  An executable's (EXE, DLL, etc) "resources" including FileVersion, ProductName, etc. can be edited with Resource Hacker.  See the "Version Info" field, although in recent versions only if it has not been compressed with an EXE compressor like UPX or mpress.  Many of these fields show up in the details provided by Explorer.  Many other fields (such as name, timestamps, etc.) are NTFS metadata or extended attributes.  FileAlyzer can view these, but can't edit them.  Various programs can edit some of these programmatically, but I'm not familiar with a single program that can edit ALL NTFS metadata/attributes.  As an example, AutoHotkey can be used to edit modification time, creation time, and last access time.  To further complicate things, many file formats, especially multi-media files like WAV, MP3, MPEG, etc. can have metadata embedded in to the file format which Explorer can directly display (either in the main window when set to Details or under a file's Properties as you have shown).  These can include Artist, Title, Album, etc.  And to make matters even harder, Explorer can display attributes read directly from some file format's internal structure, such as an image's dimension.  MediaInfo is a fantastic tool for displaying (but not editing) this type of information.

    It would help to know exactly what you are after.

     

  2. 5 minutes ago, AL|EN said:

    I wanted to do it on my own where I could simply replace movie files, without touching CHITIN.KEY.

    Compiling a BIFF inherently modifies CHITIN.KEY, doesn't it?

    5 minutes ago, AL|EN said:

    It seems that it wont be enough.

    ?

  3. IIRC Disable Startup Movies just overwrote the MVEs with zero byte files, but the download link is bad so I can't check.  However, by looking at the MVE file format description and actual MVE files, I believe the attached is the minimal "valid" MVE file.  Haven't tested it and NI doesn't like it, but the latter isn't entirely unexpected as there is no data to decode, just header, magic number, shutdown chunk, and end chunk.

    BLANK.MVE

  4. 6 hours ago, DreamSlaveOne said:

    But I don't know any automated way to generate 254-color index from bunch of renders (this way you preserve most of the original colors) and insert two colors at the beginning for transparency and shadows. I still think some BAM converting tool is better candidate for such tasks.

    5 hours ago, Acifer said:

    Using BamWorkshop II is very time-consuming, however, so I hope there is another tool that can handle shadow colors and create a 256-bit palette bam.

    PS BAM can do all this, or I could add the necessary functionality.  With hundreds or thousands of frames this large it wouldn't be particularly fast, but it would be automated so you could just let it run in the background.  A quick automated pre-pass with ImageMagick to clear up the fuzziness at the edges of the shadow and ensure the shadow colors are set properly, and you wouldn't have to do anything manually.  I'd be willing to do it, or help, or provide a detailed guide.

  5. 10 minutes ago, Jarno Mikkola said:
    4 hours ago, Sam. said:

    The count starts at 0.

    This is the programmer within you that says this. "The count" starts for me from the "first" color, not zero'th one, as we are not dealing with ones and zeros only, aka binary, but of decimal one. Yes, even though it might be flagged as zero in the binary data(I have no way to verify this). Which is why we use the ordinal form of the word "one" rather than the word itself. And if it's not obvious, there's no such a thing as "zeroth" in English, as it doesn't make sense. And yes, wikipedia is wrong.

    I say the count starts at 0 because the internal structure of the binary file format starts counting from 0.  This is an objective fact.  Please keep your verbal vomiting to yourself.

  6. 3 hours ago, Jarno Mikkola said:

    I would remember it to be the second one in the palette. First being the invisible one.... I said "I would remember", as it's been far too long to know.

    The count starts at 0.

     

    3 hours ago, Acifer said:
    On 12/2/2021 at 12:09 PM, Artemius I said:

    And yeah, I’ve been zigzagging between whether I’d prefer the shadows to be more defined or more translucent, but those shadows definitely do not look good in game.

    You will receive the best results by assigning a unique shadow color to your shadow catchter material, for example a strong red (RGB 255.0.0). BAMWorkshop 2 used a pink color to determine where shadows are present. That way the shadows are assigned to palette entry #1 (the 2nd palette colour) and there are no "false" shadows in the darker portions of the creature.

    This makes a lot of sense, however, depending on which games you intend to use the animations in, there are definitive reasons to ensure the shadow color is in palette entry 1 and that it is set back to pure black.  For greatest compatibility with all engine and graphics settings variants, no other entry in the palette should be pure black.

  7. There are several version of stutter debugging tools out there that, while not quite what you're looking for, are in that direction.  They won't give all the information you're looking for, but will tell you which blocks are firing.  Combine that with either TobEx or the EE's CLUAConsole LogMessages() and LogSet() functions, and you can save the info to file.

    Stutter related tools

    How to gather clues when debugging stuttering

  8. 6 minutes ago, Sarge945 said:

    Yeah. I wonder how hard it would be to create a module that simple toggles the "you can't rest here" flag for all locations, (or optionally only dungeons), forcing players to rest at an inn if they want to heal and recharge.

    That's probably way too punishing, though.

    Toggling the flag would be easy.  Not breaking NPCs, special encounters, etc. in doing so would be much more effort.

  9. 7 hours ago, Axatax said:

    On a similar note, I think the WEIDU package for SCS calculates fluid dynamics during the installation.

    If it's calculating true analytic (not numerical) solutions to the full no-assumptions Navier–Stokes equations, I'm very interested in that.  Moreover, if DavidW has solved the Navier–Stokes existence and smoothness problem, that would be pretty cool.

  10. When I run

    ACTION_DEFINE_ARRAY foo BEGIN 1 2 3 END
    
    DEFINE_ACTION_FUNCTION xyz STR_VAR foo = "" BEGIN
      ACTION_PHP_EACH foo AS k => v BEGIN
        PRINT ~%v%~ // should print 1, 2 and 3
      END
    END
    
    LAF xyz STR_VAR foo END

    with the MODDER flag on, I get this warning

    Quote

    Installing [Test Array Functions] [v0.0.0]
    WARNING:
    WARNING: possible missing EVALUATE_BUFFER in
    [array name at $"foo"("0")]

    1
    WARNING:
    WARNING: possible missing EVALUATE_BUFFER in
    [array name at $"foo"("1")]

    2
    WARNING:
    WARNING: possible missing EVALUATE_BUFFER in
    [array name at $"foo"("2")]

    3

     

    INSTALLED WITH WARNINGS     Test Array Functions

    but if I run

    ACTION_DEFINE_ARRAY bar BEGIN 1 2 3 END
    
    DEFINE_ACTION_FUNCTION xyz STR_VAR foo = "" BEGIN
      ACTION_PHP_EACH foo AS k => v BEGIN
        PRINT ~%v%~ // should print 1, 2 and 3
      END
    END
    
    LAF xyz STR_VAR foo = bar END

    there are no warnings but 1 2 3 are not printed.  What am I missing?

  11. 32 minutes ago, Lauriel said:
    1 hour ago, Sam. said:

    I'll try to come up with a working example of how I'd do it.

    Oh you're awesome!  Thank you.

    Let's start off simple, and then we can add layers of automation/safety as we get more comfortable with the process.

    For a test, I decided to move a door from AR0200 to BD0010 in BGEE w/ SoD.  The first step was to use NI's Area Viewer to figure out which tiles I wanted to move.  I determined I wanted to move tiles 2985, 2986, 3054, and 3055 from AR0200.tis to tiles 140, 141, 160, and 161 in BD0010.tis.  To double check my maths, I used this to blank out those tiles to make sure I got the right ones:

    // Test that we've picked the correct tiles by blanking them out and then check with NI's area viewer or in game
    COPY_EXISTING ~AR0200.tis~ ~override~
      LPF ps_tileset_add_tiles INT_VAR Pos = 2985 MaxCount = 2 PVRz_Page = "-1" PVRz_X = 0 PVRz_Y = 0 STR_VAR Method = "Replace" RET Count END // Blank out a tile in a PVRz-based tileset using a manually specified tile
      LPF ps_tileset_add_tiles INT_VAR Pos = 3054 MaxCount = 2 PVRz_Page = "-1" PVRz_X = 0 PVRz_Y = 0 STR_VAR Method = "Replace" RET Count END // Blank out a tile in a PVRz-based tileset using a manually specified tile
    BUT_ONLY
    
    COPY_EXISTING ~BD0010.tis~ ~override~
      LPF ps_tileset_add_tiles INT_VAR Pos = 140 MaxCount = 2 PVRz_Page = "-1" PVRz_X = 0 PVRz_Y = 0 STR_VAR Method = "Replace" RET Count END // Blank out a tile in a PVRz-based tileset using a manually specified tile
      LPF ps_tileset_add_tiles INT_VAR Pos = 160 MaxCount = 2 PVRz_Page = "-1" PVRz_X = 0 PVRz_Y = 0 STR_VAR Method = "Replace" RET Count END // Blank out a tile in a PVRz-based tileset using a manually specified tile
    BUT_ONLY

    Looked at them in NI's are viewer, and they were the right ones so I uninstalled this code to reset them.  The next step was to determine which PVRz file the 4 tiles from AR0200.tis were using, and what the X and Y offsets were.

    COPY_EXISTING ~AR0200.tis~ ~override~
      LPF ps_tileset_info INT_VAR Verbose = 2 Log = 1 END // Log verbose output of PVRz-based tileset to file
    BUT_ONLY

    Looked at the log and extracted:

    Quote

    Tile 2985:
      PVRz_Page = 8 (A020008.pvrz)
      PVRz_X = 128
      PVRz_Y = 704

    Tile 2986:
      PVRz_Page = 8 (A020008.pvrz)
      PVRz_X = 192
      PVRz_Y = 704

    Tile 3054:
      PVRz_Page = 8 (A020008.pvrz)
      PVRz_X = 128
      PVRz_Y = 768

    Tile 3055:
      PVRz_Page = 8 (A020008.pvrz)
      PVRz_X = 192
      PVRz_Y = 768

    Last bit of info we need is an unused PVRz index for BD0010.tis.  Looking for B0010**.pvrz files in NI, we see that 00-02 are used, so 03 is free.  Now let's install the new door:

    COPY_EXISTING ~A020008.pvrz~ ~override\B001003.pvrz~
    COPY_EXISTING ~BD0010.tis~ ~override~
      LPF ps_tileset_add_tiles INT_VAR Pos = 140 MaxCount = 1 PVRz_Page = 3 PVRz_X = 128 PVRz_Y = 704 STR_VAR Method = "Replace" RET Count END // Overwrite tile
      LPF ps_tileset_add_tiles INT_VAR Pos = 141 MaxCount = 1 PVRz_Page = 3 PVRz_X = 192 PVRz_Y = 704 STR_VAR Method = "Replace" RET Count END // Overwrite tile
      LPF ps_tileset_add_tiles INT_VAR Pos = 160 MaxCount = 1 PVRz_Page = 3 PVRz_X = 128 PVRz_Y = 768 STR_VAR Method = "Replace" RET Count END // Overwrite tile
      LPF ps_tileset_add_tiles INT_VAR Pos = 161 MaxCount = 1 PVRz_Page = 3 PVRz_X = 192 PVRz_Y = 768 STR_VAR Method = "Replace" RET Count END // Overwrite tile
    BUT_ONLY

    And it works.image.png.57e435ba862c5acf1f9787f6e4b17f2e.png

    Again, much of this could/should be automated further, but now we have an outline of what to do.

  12. I have realized I had forgotten about a vitally important fact which led me to give you bad information which in turn has likely caused you no small amount of frustration and wasted time.  I sincerely apologize.

    On 8/25/2021 at 7:48 AM, Sam. said:

    IF AND ONLY IF both BG0200.TIS and BD0010.TIS are both PVRz-based tilesets AND both are already in the same game (along with their associated PVRz files), then you should be able to export the tiles from BG0200 (ps_tileset_export_tiles) and use them to overwrite tiles in BD0010 using ps_tileset_add_tile with STR_VAR Method = "Replace".

    This is untrue.

    19 hours ago, Sam. said:

    Rename your new mini-tileset to any valid name not already in the target game, preferably with your modder prefix if you have one.

    This was terrible advice.

     

    Here's why:  from the IESDP:

    Quote

    Filenames of referenced PVRZ resources are made up from the first character of the TIS filename, the four digits of the area code, the optional 'N' from night tilesets and this page value as a zero-padded two digits number. Example: AR2600N.TIS would refer to A2600Nxx.PVRZ where xx indicates the PVRZ page.

    If you're wanting to replace tiles in BD0010.TIS, then your exported tiles should be BL0010.TIS and the PVRz file it references should be B0010xx.PVRZ.  Here, L is part of your modder prefix and xx is the original index of the PVRz.  You should then be able to install the files with Argent77's function and then replace the tiles with PS_Tileset.  However, I'm thinking this whole process of exporting tiles is entirely unnecessary.  I'll try to come up with a working example of how I'd do it.

     

  13. 1 hour ago, Lauriel said:

    Well, that means this would only work for EET and not for separate BG1/SoD games.  At least I know what I'm attempting isn't possible and that I should try another method.  Thank you. And thank you for explaining the different file types.  I knew they were different but not how they were different.

    Much appreciated. :)

    I said that it would be a bit trickier, not that it wouldn't be possible.  The first thing you'll need to do is figure out which PVRz file(s) the tiles you are interested in are pointing to.  You should be able to use the ps_tileset_info function to look it up.  You should then fall into 1 of 2 categories:

    1. The PVRz file names referenced do NOT already exist in the game you want to add them to.  If this is the case, just dump the PVRz files into the override folder and proceed as I previously suggested.

    2.  The PVRz file names referenced DO already exist in the game.  In this case, you'll need to remap them.  Export the desired tiles with the ps_tileset_export_tiles function, but specify "tis" as the OutType.  You'll also need to extract the referenced PVRz files from the game, using NearInfinity or WeiDU.  Rename your new mini-tileset to any valid name not already in the target game, preferably with your modder prefix if you have one.  Next, use this method to install the tileset into the target game and update the PVRz references.  Now proceed as I previously suggested, but using this newly updated tileset.  Afterward you can delete the TIS file, but make sure to leave the PVRz files in the game.

×
×
  • Create New...