nancygold's Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Friday, July 12th, 2024

    Time Event
    1:28a
    Stronghold Decompilation Progress
    Almost done recovering the data files.
    That was really tedious...
    Remains saving sprite sheets as *.LBM, instead of PNG.
    Then the grab process should be working again.
    That will allow easily decompiling the stash functions.

    Recovering unit sprite sheets was involved.
    The game has a set of hardcoded agent archetype structures.
    Each references a hardcoded animation table.
    Each agent variation can have up to 6 sprite sheets:
    three races, two genders.
    Ghidra structure support is top notch.
    Compared to IDA Pro, you can just define the areas you care about.

    typedef struct {
      uint8_t ai; //0=player controlled, 1=computer controlled
      uint8_t type;
      int8_t nanims;
      uint32_t sprs[6]; //stash handle for sprfls
      undefined field5_0x1b;
      undefined field6_0x1c;
      undefined field7_0x1d;
      undefined field8_0x1e;
      undefined field9_0x1f;
      undefined field10_0x20;
      undefined field11_0x21;
      undefined field12_0x22;
      undefined field13_0x23;
      uint32_t name;
      uint32_t anms;
      int16_t sprfls[6]; /* sprite file ids; 0,1,2=male; 3,4,5=female */
      undefined field20_0x38;
      undefined field21_0x39;
      undefined field22_0x3a;
      undefined field23_0x3b;
      undefined field24_0x3c;
      undefined field25_0x3d;
      undefined field26_0x3e;
      undefined field27_0x3f;
      undefined field28_0x40;
      undefined field29_0x41;
      undefined field30_0x42;
      undefined field31_0x43;
      undefined field32_0x44;
      undefined field33_0x45;
      undefined field34_0x46;
      undefined field35_0x47;
      undefined field36_0x48;
      undefined field37_0x49;
      undefined field38_0x4a;
      undefined field39_0x4b;
      undefined field40_0x4c;
      undefined field41_0x4d;
      undefined field42_0x4e;
      undefined field43_0x4f;
      undefined field44_0x50;
      undefined field45_0x51;
      undefined field46_0x52;
      undefined field47_0x53;
      int16_t prtfls[6]; /* portrait file ids; 0,1,2=male; 3,4,5=female */
      uint32_t prts[6]; /* portrait stash handles */
      uint32_t prtpals[6]; /* portrait palettes */
      uint32_t wpn_name;
      undefined field52_0x94;
    } PACKED agntG_t;






    Current Mood: accomplished
    5:09p
    Linux reinvents the RISC OS apps!
    https://en.wikipedia.org/wiki/AppImage

    It took almost 40 years, but Linux is going here now!
    Like you know this silly concept of just dragging the app where you like,
    Instead of the well and tried configure make install.

    Current Mood: amused
    6:16p
    LBM Support
    As the final step of the recovering the sprite sheets files, I have to encode them as LBMs.
    The LBM format was the PNG of 80ies and 90ies.
    Yet only a few modern programs support loading it.
    I.e. GIMP doesn't support it.

    XnView supports them, but the loader is broken.
    At first I thought there is an issue with my code.
    But nope, Deluxe Paint loads my LBMs just fine.
    In any case, I have still to recover one font file.
    That one was prepared using rather involved process,
    following the markers.

    << Previous Day 2024/07/12
    [Calendar]
    Next Day >>

About LJ.Rossia.org