-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathPCTex.h
147 lines (124 loc) · 3.48 KB
/
PCTex.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#pragma once
#ifndef PCTEX_H
#define PCTEX_H
#include "export.h"
#include "bitmap256.h"
#include "non_win32.h"
#include "my_dx.h"
EXPORT extern u32 gMaxTextureAspectRatio;
EXPORT extern u32 gMaxTextureWidth;
EXPORT extern u32 gTextureHeight;
struct SPCTexContainer
{
u8 padTop[4];
i32 field_4;
i32 field_8;
i32 field_C;
i32 field_10;
i32 field_14;
i32 field_18;
i32 field_1C;
i32 field_20;
i32 field_24;
i32 field_28;
i32 field_2C;
i32 field_30;
i32 field_34;
i32 field_38;
i32 field_3C;
i32 field_40;
i32 field_44;
i32 field_48;
};
struct SPCTexPixelFormat
{
DDPIXELFORMAT ddpi;
};
struct ClutPC
{
ClutPC* mNext;
i16 mRefs;
i16 mColorCount;
u16* mClut;
};
struct PVRHeader
{
u8 padTop[0x18];
i32 field_18;
u16 field_1C;
u16 field_1E;
u8 pTextureData;
};
struct SPCTexture
{
u16 mSizeOne;
u16 mSizeTwo;
float mWScale;
float mHScale;
float field_C;
float field_10;
Bitmap256* mTexture;
i32 mAlpha;
IDirectDrawSurface7* mD3DTex;
i32 mFlags;
i32 field_24;
char field_28[0x1F];
i32 field_48;
u8 padAfter48[4];
i32 field_50;
i32 mSplitCount;
i32 *mSplit;
const void* pTextureData;
i32 field_60;
i32 field_64;
};
EXPORT void PCTex_SetTextureUserData(int, Bitmap256*);
EXPORT float PCTex_GetTextureWScale(int);
EXPORT float PCTex_GetTextureHScale(int);
EXPORT int PCTex_GetTextureFlags(int);
EXPORT int countBits(unsigned int);
EXPORT int PCTex_GetTextureSplitID(int, int);
EXPORT u8 CheckValidTexture(u32);
EXPORT u8 ConvertPSXPaletteToPC(const u16 *,u16 *,u32,u32);
EXPORT void PCTEX_Init(void);
EXPORT void* PCTex_BufferPVR(const char *,char *);
EXPORT i32 PCTex_CountActiveTextures(void);
EXPORT u16* PCTex_CreateClut(i32);
EXPORT i32 PCTex_CreateTexture16(i32,i32,void const *,u16 const *,char const *,i32,i32,u32);
EXPORT i32 PCTex_CreateTexture256(i32,i32,const void *,const u16 *,u32,const char *,i32,i32);
EXPORT i32 PCTex_CreateTexturePVR(i32,i32,u32,void *,u32,const char *,u32);
EXPORT i32 PCTex_CreateTexturePVRInId(i32,i32,i32,u32, void *,u32, const char*,u32);
EXPORT i32 PCTex_FindUnusedTextureId(void);
EXPORT void PCTex_FreePcIcons(void);
EXPORT IDirectDrawSurface7* PCTex_GetDirect3DTexture(i32);
EXPORT void PCTex_GetInvTextureSize(i32,float *,float *);
EXPORT void PCTex_GetTextureSize(i32,i32 *,i32 *);
EXPORT i32 PCTex_GetTextureSplitCount(i32);
EXPORT void PCTex_InitSystemTextures(void);
EXPORT i32 PCTex_LoadLtiTexture(const char*,u32,i32,u32);
EXPORT void PCTex_LoadPcIcons(void);
EXPORT void* PCTex_LoadTexturePVR(const char*,char *);
EXPORT void PCTex_ReleaseAllTextures(void);
EXPORT void PCTex_ReleaseSysTexture(i32,bool);
EXPORT void PCTex_ReleaseTexture(i32,bool);
EXPORT void PCTex_ReloadTextures(void);
EXPORT u8 PCTex_TextureHasAlpha(i32);
EXPORT void PCTex_UnbufferPVR(PVRHeader *);
EXPORT void PCTex_UnloadTextures(void);
EXPORT void PCTex_UpdateForSoftwareRenderer(void);
EXPORT ClutPC* clutToClutPc(const u16*);
EXPORT void copyBitmap(void const *,i32,void *,i32,i32,i32,i32);
EXPORT void copyConvertBitmap(void const *,i32,i32,void *,i32,i32,i32,i32,bool);
EXPORT i32 countLeadingZeroBits(u32);
EXPORT void downloadTexture(SPCTexture *,u16 *,i32,i32);
EXPORT HRESULT CALLBACK enumPixelFormatsCB(LPDDPIXELFORMAT,void *);
EXPORT void releaseClutPc(ClutPC *);
EXPORT i32 shouldForceBlend(u16 *,i32,i32,i32);
void validate_SPCTexture(void);
void validate_PVRHeader(void);
void validate_ClutPC(void);
void validate_SPCTexPixelFormat(void);
void validate_SPCTexContainer(void);
void validate_DDPIXELFORMAT(void);
void validate_ConvertPSXPaletteToPC(void);
#endif