Files
BT412/engine/MUNGA_L4/libDPL/dsys/PIMAGE.H
T
arcattackandClaude Opus 4.8 7b7d465e5e Initial commit: bt411 -- standalone Windows BattleTech (Tesla 4.10 port)
Clean, self-contained extraction of the BattleTech-specific work from the
reverse-engineering workspace -- engine + game + content + build, with nothing
from Red Planet or the raw archive dumps. Builds green (Win32) and runs the
single-player drive->animate->target->fire->damage->destroy loop out of the box.

Layout:
  engine/   MUNGA + MUNGA_L4 shared 2007 engine, carrying our BT render/loader
            work (bgfload/L4D3D/L4VIDEO: BSL bit-slice decode, LOD/ground/shadow
            models) + image codec; the minimal rp/ headers the audio HAL needs
  game/     reconstructed BT logic + surviving-original BT source + fwd shims
            + WinMain launcher
  content/  full runtime tree (BTL4.RES, VIDEO/, GAUGE/, AUDIO/, eggs, BTDPL.INI)
  docs/     format specs + reconstruction ledgers
  reference/ raw Ghidra pseudocode (recon source-of-truth) + decomp exporter
  tools/    MP console emulator + map/resource scanners

One top-level CMake builds munga_engine lib + bt410_l4 game lib + btl4.exe.
All paths relativized (186 fwd shims + ~437 CMake abs paths -> repo-relative);
DXSDK is the one external, overridable via -DDXSDK. Verified: builds to a
byte-identical 2.27MB exe and runs combat (TARGET DESTROYED, 0 crashes) against
the bundled content.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-05 21:03:40 -05:00

200 lines
5.4 KiB
C++

/*
* PROJECT:
* SUBSYSTEM:
* MODULE:
*
* File: $RCSfile: pimage.h,v $
* Revision: $Revision: 1.5 $
* Date: $Date: 95/04/27 23:01:16 $
* Author: $Author: bill $
* RCS Ident: $Id: pimage.h,v 1.5 95/04/27 23:01:16 bill Exp $
*
* FUNCTION:
*
*
* $Log: pimage.h,v $
* Revision 1.5 95/04/27 23:01:16 bill
* Major ci for 3.0 Alpha (new: pgeneral, dm)
*
* Revision 1.4 95/03/21 14:50:22 bill
* Adding the global opacity setter
*
* Revision 1.3 1995/03/10 19:03:01 bill
* Ci for beta release of v2.1 dvs -> dsys change
*
* Revision 1.2 1995/03/10 18:43:29 bill
* Ci for beta release of v2.1
*
* Revision 1.1 1995/03/06 10:24:34 bill
* Initial revision
*
* Revision 1.4 1994/11/09 17:49:06 bill
* texture type was int32 instead of uint8, read wronge
*
* Revision 1.3 1994/08/30 17:18:09 bill
* Altered -t so it sets the background opacity to a given value (-ve is
* default and preserves inta, rgba and svt opacity values, sets rest to
* 255).
* Also added sgi save -> rgba format.
*
* Revision 1.2 1994/05/13 12:08:51 bill
* File name changing for release. pfile.h->pfile2.h, __pfile.h->__pfile2.h, ptools.h->ptools2.h, __ptools.h->__ptools2.h, filelib.h->filelib2.h, getparam.h->getprm.h.
*
* Revision 1.1 1994/04/15 15:43:18 bill
* new pfile and ptools that cope with spheres lines text and polygons, also uses new FL extension pfl & PF extension dpf
*
* Revision 1.1 1994/02/16 20:30:34 bill
* General edit
*
*
* Copyright (c) 1992 Division Ltd.
*
* All Rights Reserved.
*
* This Document may not, in whole or in part, be copied,
* photocopied, reproduced, translated, or reduced to any
* electronic medium or machine readable form without prior
* written consent from Division Ltd.
*/
#ifndef __PIMAGE_H__
#define __PIMAGE_H__
#include <dsys/divtypes.h>
extern char *progname ;
/****************************************************************************
* pimage error numbers */
#define dpiENO_OPEN 0x7001
#define dpiENO_READ 0x7002
#define dpiENO_WRITE 0x7003
#define dpiENO_CLOSE 0x7004
#define dpiENO_NULL 0x7005
#define dpiENO_FORM 0x7006
/****************************************************************************
* pimage error numbers */
#define dpiWARN_PROB 2
/****************************************************************************
* pimage monitor numbers */
#define dpiMON_POS 0x00010000
#define dpiMON_PALLET 0x00020000
#define dpiMON_IMAGE 0x00040000
#define VTX_ALLOW_VTX 1
#define VTX_ALLOW_SVT 2
#define VTX_ALLOW_OTHER 4
#define VTX_ALLOW_DIV 3
#define VTX_ALLOW_ALL 7
#define VTX_WIDTH_EIGHT (uint8)1
#define VTXcmpIRGB(s1,s2) memcmp(s1,s2,3)
#define VTXcmpIRGBA(s1,s2) memcmp(s1,s2,4)
#define VTXcpyIRGBA(dd,ss) memcpy(dd,ss,sizeof(VTXIRGBA))
typedef enum { VTX_GIF_FILE, VTX_BMP_FILE, VTX_SGI_FILE,
VTX_SVT_FILE, VTX_TGA_FILE, VTX_TIF_FILE,
VTX_VTX_FILE, VTX_BSL_FILE, VTX_UNKNOWN_FILE } VTX_IMG_TYPE ;
typedef enum { VTX_PREC_SINGLE=0, VTX_PREC_DOUBLE=1 } VTXPRECISION ;
/* bsl types */
#define dpiBSLNOTYPES 9
typedef enum {dpiBSLTYPE_MONO0=0, dpiBSLTYPE_MONO1=1, dpiBSLTYPE_MONO2=2,
dpiBSLTYPE_MONO3=3, dpiBSLTYPE_MONO4=4, dpiBSLTYPE_MONO5=5,
dpiBSLTYPE_BILINEAR=6,
dpiBSLTYPE_RGB=7, dpiBSLTYPE_RGBA=8 } dpiBSLTYPE ;
typedef enum VTXcoord { /* used for indexing arrays, identifying axies etc */
VTXERGBA = 4, VTX_R = 0, VTX_G = 1, VTX_B = 2, VTX_A=3
} VTXcoord;
typedef struct
{
uint8 col[VTXERGBA];
}VTXIRGBA ;
typedef struct
{
float32 col[VTXERGBA];
}VTXFRGBA ;
typedef float32 VTXBOXFILTER[3][3] ;
struct VTXTEXTURETYPE ;
typedef struct VTXTEXTURETYPE *VTXTEXTUREPTR ;
struct VTXHEADERTYPE ;
typedef struct VTXHEADERTYPE *VTXHEADERPTR ;
struct VTXFILETYPE ;
typedef struct VTXFILETYPE *VTXFILEPTR ;
int32
VTXgetFile(char *name, VTXFILEPTR *file, int32 allowFile) ;
VTXFILEPTR
VTXopenFile(char *name, int32 allowFile) ;
int32
VTXgetFileBody(VTXFILEPTR file) ;
int32
VTXcloseFile(VTXFILEPTR file) ;
int32
VTXfreeFile(VTXFILEPTR file) ;
int32
VTXputFile(char *name, VTXFILEPTR Sfile, VTX_IMG_TYPE fileType) ;
VTXFILEPTR
VTXopenNewFile(char *name, VTX_IMG_TYPE fileType) ;
int32
VTXputFileBody(VTXFILEPTR Dfile, VTXFILEPTR Sfile) ;
VTXFILEPTR
VTXcreateFile(char *name) ;
VTXTEXTUREPTR
VTXcreateTexture(void) ;
void
VTXcreateData(VTXTEXTUREPTR texture) ;
VTXTEXTUREPTR
VTXgetTexture(VTXFILEPTR file) ;
void
VTXgetTextureSize(VTXTEXTUREPTR vtx, int32 *u, int32 *v) ;
uint8
VTXgetTextureType(VTXTEXTUREPTR vtx) ;
void
VTXgetTextureBgColour(VTXTEXTUREPTR vtx, VTXIRGBA *col) ;
void
VTXsetTextureType(VTXTEXTUREPTR vtx, uint8 type) ;
void
VTXsetTextureBgColour(VTXTEXTUREPTR vtx, VTXIRGBA *col) ;
int32
VTXaddTexture(VTXFILEPTR file, VTXTEXTUREPTR text) ;
void
VTXfreeTexture(VTXTEXTUREPTR texture) ;
/* returns non-zero on error, zero otherwise. new_quads points to the same or
** a new array of quads.
*/
int32
VTXinterpolate(VTXTEXTUREPTR vtx, int32 new_width, int32 new_height) ;
int32
VTXboxFilter(VTXTEXTUREPTR file, VTXBOXFILTER BoxF) ;
/* if Opacity is < 0 then the alpha is just initialised, else it is set to
* it (range 0 -> 255)
*/
int32
VTXsetTransparency(VTXTEXTUREPTR vtx, int32 glOpacity, int32 bgOpacity) ;
VTXFILEPTR
VTXcreateBSL(char *name, int32 u, int32 v, int32 w) ;
int32
VTXmergeBSL(VTXFILEPTR Dfp, int32 type, VTXFILEPTR Sfp) ;
#endif /* __PIMAGE_H__ */