Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.
Zero Tolerance for Disrespect

[PC] Army Men: Sarge's War .PIK .TXD

Featured Replies

  • Localization

Captura de tela 2026-07-14 175326.pngCaptura de tela 2026-07-14 180721.png

I need help to extract the game flies TXD , PIK for Army Men: Sarge's War, please.

Edited by erickkingofarmy14
update the post and title

  • Localization

right... let me just grab one of those files off the images you posted and I'll have a extractor coming right up, just need AI to generate the contents of the file so I actually have something to work with

Edited by NeoGT404

  • Author
  • Localization

okay... I'll patiently wait for your extractor

Edited by erickkingofarmy14
update the text

  • erickkingofarmy14 changed the title to [PS2] Army Men: Sarge's War pc .PIK
  • Supporter

You don't get it don't you? He want real samples to work with. You can't just guess the struct from image. Post the files you want to unpack.

  • Author
  • Localization
4 hours ago, h3x3r said:

You don't get it don't you? He want real samples to work with. You can't just guess the struct from image. Post the files you want to unpack.

oh here h3x3r Npc.PIK for you take look...

Npc.zip

  • erickkingofarmy14 changed the title to [PC] Army Men: Sarge's War .PIK .TXD
  • Supporter

LBALZSS2 compression maybe?

Most probably...

image.png

Struct for this file...

//------------------------------------------------
//--- 010 Editor v14.0 Binary Template
//
//      File: 
//   Authors: 
//   Version: 
//   Purpose: 
//  Category: 
// File Mask: 
//  ID Bytes: 
//   History: 
//------------------------------------------------
uint32 Unknown_0;
uint32 Unknown_1;
uint32 Unknown_2;
char FileName[128];
uint32 DataDefOffset;
uint32 Unknown_5;
uint32 TOCOffset;
uint32 ResourceCount;
uint32 Unknown_6;
uint32 Unknown_7;

FSeek(DataDefOffset);
uint32 DataBaseOffset;
uint32 TotalDataSize;

FSeek(TOCOffset);
struct
{
    string ResourceName;
    FSeek(startof(ResourceName));
    FSkip(128);
    uint32 ResourceOffset; // + DataBaseOffset
    uint32 ResourceSize;
}TOC[ResourceCount]<optimize=false>;

Maybe others will share same struct. So as NeoGT suggested post more samples.

And here's bms script. Not sure if will work on other files.

##############################
get BaseFileName basename
get FileSize asize
get FileExtension extension

comtype lbalzss2

get DecompressedSize uint32
get CompressedSize uint32
getdstring Dummy 0x8
savepos Offset
clog MEMORY_FILE Offset CompressedSize DecompressedSize

goto 0 -1
getdstring Dummy 0xC -1
getdstring FileName 0x80 -1
get DataDefOffset uint32 -1
get Unknown_0 uint32 -1
get TOCOffset uint32 -1
get ResourceCount uint32 -1

goto DataDefOffset -1
get DataBaseOffset uint32 -1
get TotalDataSize uint32 -1

goto TOCOffset -1
for i = 0 < ResourceCount
	savepos StrOffset -1
	get ResourceName string -1
	goto StrOffset -1
	getdstring Dummy 0x80 -1
	get ResourceOffset uint32 -1
	get ResourceSize uint32 -1
	math ResourceOffset + DataBaseOffset -1

	string Name p "%s/%s" BaseFileName ResourceName
	log Name ResourceOffset ResourceSize -1
next i

Edited by h3x3r

  • Localization

I'd guess that there's also a directory structure thingy, so something like this: (but of course need more samples for confirmation)

struct Data<auto size, auto name> {
    u8 tag_size = 4;
    if (tag_size > size) tag_size = size;
    u8 start[tag_size] @ $ [[name(name + ":start")]];
    padding[size]; // so the size actually shows in the table
    u8 end[tag_size] @ ($ - tag_size) [[name(name + ":end")]];
};

fn fmtStr(auto a) { return a.v; };
struct Str<auto s> {
    u64 ep = $ + s;
    char v[while($ < ep && $[$])];
} [[fixed_size(s),format("fmtStr")]];

struct fe {
    Str<0x80> n;
    u32 o;
    u32 s;
    Data<s,n.v> d @ (parent.do + o);
};
struct de {
    Str<0x80> n;
    u32 datio;
    u32 u1; // dir index?
    u32 feo;
    u32 fc;
    u32 ds1;
    u32 ds2;

    u32 do @ datio;
    u32 ds @ (datio + 4);
    fe fe[fc] @ feo;
};
struct a {
    u32 u1;
    u32 u2;
    u32 dc;
    de de[dc];
};

a a @ 0;

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.