mirror of
https://github.com/OpenDriver2/REDRIVER2.git
synced 2024-11-25 03:42:34 +01:00
892 lines
18 KiB
C
892 lines
18 KiB
C
#include "THISDUST.H"
|
|
#include "TEXTURE.H"
|
|
#include "SYSTEM.H"
|
|
|
|
|
|
SXYPAIR tpagepos[20] =
|
|
{
|
|
{ 640, 0 },
|
|
{ 704, 0 },
|
|
{ 768, 0 },
|
|
{ 832, 0 },
|
|
{ 896, 0 },
|
|
{ 960, 0 },
|
|
{ 512, 256 },
|
|
{ 576, 256 },
|
|
{ 640, 256 },
|
|
{ 704, 256 },
|
|
{ 768, 256 },
|
|
{ 832, 256 },
|
|
{ 896, 256 },
|
|
{ 448, 0 },
|
|
{ 512, 0 },
|
|
{ 576, 0 },
|
|
{ 320, 256 },
|
|
{ 384, 256 },
|
|
{ 448, 256 },
|
|
|
|
{ 65535, 65535 }
|
|
};
|
|
|
|
int texture_is_icon = 0;
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// void /*$ra*/ IncrementClutNum(struct RECT *clut /*$a0*/)
|
|
// line 116, offset 0x00080ddc
|
|
/* begin block 1 */
|
|
// Start line: 1163
|
|
/* end block 1 */
|
|
// End Line: 1164
|
|
|
|
/* begin block 2 */
|
|
// Start line: 232
|
|
/* end block 2 */
|
|
// End Line: 233
|
|
|
|
/* begin block 3 */
|
|
// Start line: 1164
|
|
/* end block 3 */
|
|
// End Line: 1165
|
|
|
|
// [D]
|
|
void IncrementClutNum(RECT *clut)
|
|
{
|
|
short sVar1;
|
|
|
|
sVar1 = clut->x + 0x10;
|
|
clut->x = sVar1;
|
|
if (sVar1 == 0x400) {
|
|
clut->x = 0x3c0;
|
|
clut->y = clut->y + 1;
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// void /*$ra*/ IncrementTPageNum(struct RECT *tpage /*$t0*/)
|
|
// line 126, offset 0x00080528
|
|
/* begin block 1 */
|
|
// Start line: 127
|
|
// Start offset: 0x00080528
|
|
// Variables:
|
|
// int i; // $a3
|
|
/* end block 1 */
|
|
// End offset: 0x000805EC
|
|
// End Line: 153
|
|
|
|
/* begin block 2 */
|
|
// Start line: 252
|
|
/* end block 2 */
|
|
// End Line: 253
|
|
|
|
/* begin block 3 */
|
|
// Start line: 255
|
|
/* end block 3 */
|
|
// End Line: 256
|
|
|
|
void IncrementTPageNum(RECT *tpage)
|
|
{
|
|
UNIMPLEMENTED();
|
|
/*
|
|
short sVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
|
|
iVar4 = 1;
|
|
while (true) {
|
|
iVar2 = iVar4 + -1;
|
|
if (((tpage->x == (&tpagepos)[iVar2].x) &&
|
|
(iVar3 = iVar4 << 2, tpage->y == (&tpagepos)[iVar2].y)) ||
|
|
(iVar3 = iVar4 * 4, (&tpagepos)[iVar4].x == -1)) break;
|
|
iVar4 = iVar4 + 1;
|
|
}
|
|
sVar1 = *(short *)((int)&tpagepos.x + iVar3);
|
|
tpage->x = sVar1;
|
|
tpage->y = *(short *)((int)&tpagepos.y + iVar3);
|
|
if (sVar1 == -1) {
|
|
NoTextureMemory = 100;
|
|
tpage->x = (&tpagepos)[iVar2].x;
|
|
tpage->y = (&tpagepos)[iVar2].y;
|
|
}
|
|
return;*/
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// int /*$ra*/ LoadTPageAndCluts(struct RECT *tpage /*$s5*/, struct RECT *cluts /*$s2*/, int tpage2send /*$s6*/, char *tpageaddress /*$s0*/)
|
|
// line 155, offset 0x00080e14
|
|
/* begin block 1 */
|
|
// Start line: 156
|
|
// Start offset: 0x00080E14
|
|
// Variables:
|
|
// int i; // $s3
|
|
// int npalettes; // $s4
|
|
// struct RECT temptpage; // stack offset -40
|
|
/* end block 1 */
|
|
// End offset: 0x00080F3C
|
|
// End Line: 185
|
|
|
|
/* begin block 2 */
|
|
// Start line: 1243
|
|
/* end block 2 */
|
|
// End Line: 1244
|
|
|
|
int LoadTPageAndCluts(RECT *tpage, RECT *cluts, int tpage2send, char *tpageaddress)
|
|
{
|
|
UNIMPLEMENTED();
|
|
return 0;
|
|
/*
|
|
u_short uVar1;
|
|
u_short *puVar2;
|
|
int iVar3;
|
|
int iVar4;
|
|
short local_28;
|
|
short local_26;
|
|
short local_24;
|
|
undefined2 local_22;
|
|
|
|
iVar4 = *(int *)tpageaddress;
|
|
tpageaddress = tpageaddress + 4;
|
|
iVar3 = 0;
|
|
if (0 < iVar4) {
|
|
puVar2 = &texture_cluts + tpage2send * 0x20;
|
|
do {
|
|
LoadImage(cluts, tpageaddress);
|
|
tpageaddress = tpageaddress + 0x20;
|
|
iVar3 = iVar3 + 1;
|
|
uVar1 = GetClut((int)cluts->x, (int)cluts->y);
|
|
*puVar2 = uVar1;
|
|
IncrementClutNum(cluts);
|
|
puVar2 = puVar2 + 1;
|
|
} while (iVar3 < iVar4);
|
|
}
|
|
local_28 = tpage->x;
|
|
local_26 = tpage->y;
|
|
local_24 = tpage->w;
|
|
local_22 = 0x100;
|
|
decomp_asm(&DAT_000f3000, tpageaddress);
|
|
LoadImage(&local_28, &DAT_000f3000);
|
|
uVar1 = GetTPage(0, 0, (int)tpage->x, (int)tpage->y);
|
|
(&texture_pages)[tpage2send] = uVar1;
|
|
IncrementTPageNum(tpage);
|
|
return 1;
|
|
*/
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// int /*$ra*/ Find_TexID(struct MODEL *model /*$t0*/, int t_id /*$a1*/)
|
|
// line 191, offset 0x000805ec
|
|
/* begin block 1 */
|
|
// Start line: 192
|
|
// Start offset: 0x000805EC
|
|
// Variables:
|
|
// char *polylist; // $a2
|
|
// int i; // $a3
|
|
|
|
/* begin block 1.1 */
|
|
// Start line: 203
|
|
// Start offset: 0x00080638
|
|
/* end block 1.1 */
|
|
// End offset: 0x00080650
|
|
// End Line: 206
|
|
|
|
/* begin block 1.2 */
|
|
// Start line: 209
|
|
// Start offset: 0x00080650
|
|
/* end block 1.2 */
|
|
// End offset: 0x00080650
|
|
// End Line: 212
|
|
|
|
/* begin block 1.3 */
|
|
// Start line: 215
|
|
// Start offset: 0x00080650
|
|
/* end block 1.3 */
|
|
// End offset: 0x00080650
|
|
// End Line: 218
|
|
|
|
/* begin block 1.4 */
|
|
// Start line: 222
|
|
// Start offset: 0x00080650
|
|
/* end block 1.4 */
|
|
// End offset: 0x00080650
|
|
// End Line: 225
|
|
|
|
/* begin block 1.5 */
|
|
// Start line: 229
|
|
// Start offset: 0x00080650
|
|
/* end block 1.5 */
|
|
// End offset: 0x00080650
|
|
// End Line: 232
|
|
|
|
/* begin block 1.6 */
|
|
// Start line: 235
|
|
// Start offset: 0x00080650
|
|
/* end block 1.6 */
|
|
// End offset: 0x00080650
|
|
// End Line: 238
|
|
|
|
/* begin block 1.7 */
|
|
// Start line: 241
|
|
// Start offset: 0x00080650
|
|
/* end block 1.7 */
|
|
// End offset: 0x00080650
|
|
// End Line: 244
|
|
|
|
/* begin block 1.8 */
|
|
// Start line: 247
|
|
// Start offset: 0x00080650
|
|
/* end block 1.8 */
|
|
// End offset: 0x00080650
|
|
// End Line: 250
|
|
/* end block 1 */
|
|
// End offset: 0x00080688
|
|
// End Line: 258
|
|
|
|
/* begin block 2 */
|
|
// Start line: 356
|
|
/* end block 2 */
|
|
// End Line: 357
|
|
|
|
/* begin block 3 */
|
|
// Start line: 395
|
|
/* end block 3 */
|
|
// End Line: 396
|
|
|
|
int Find_TexID(MODEL *model, int t_id)
|
|
{
|
|
UNIMPLEMENTED();
|
|
return 0;
|
|
/*
|
|
byte *pbVar1;
|
|
int iVar2;
|
|
|
|
pbVar1 = (byte *)model->poly_block;
|
|
iVar2 = 0;
|
|
if (model->num_polys != 0) {
|
|
do {
|
|
switch ((uint)*pbVar1 & 0x1f) {
|
|
case 4:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 0x14:
|
|
case 0x15:
|
|
case 0x16:
|
|
case 0x17:
|
|
if ((uint)pbVar1[2] == t_id) {
|
|
return 1;
|
|
}
|
|
}
|
|
iVar2 = iVar2 + 1;
|
|
pbVar1 = pbVar1 + PolySizes[*pbVar1];
|
|
} while (iVar2 < (int)(uint)model->num_polys);
|
|
}
|
|
return 0;
|
|
*/
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// struct TEXINF * /*$ra*/ GetTEXINFName(char *name /*$fp*/, int *tpagenum /*stack 4*/, int *texturenum /*stack 8*/)
|
|
// line 261, offset 0x00080f3c
|
|
/* begin block 1 */
|
|
// Start line: 262
|
|
// Start offset: 0x00080F3C
|
|
// Variables:
|
|
// int i; // $s4
|
|
// int j; // $s1
|
|
// int texamt; // $s2
|
|
// struct TEXINF *texinf; // $s3
|
|
// char *nametable; // $s6
|
|
/* end block 1 */
|
|
// End offset: 0x00081038
|
|
// End Line: 287
|
|
|
|
/* begin block 2 */
|
|
// Start line: 1407
|
|
/* end block 2 */
|
|
// End Line: 1408
|
|
|
|
/* begin block 3 */
|
|
// Start line: 1484
|
|
/* end block 3 */
|
|
// End Line: 1485
|
|
|
|
/* begin block 4 */
|
|
// Start line: 1490
|
|
/* end block 4 */
|
|
// End Line: 1491
|
|
|
|
TEXINF * GetTEXINFName(char *name, int *tpagenum, int *texturenum)
|
|
{
|
|
UNIMPLEMENTED();
|
|
return 0;
|
|
/*
|
|
char *pcVar1;
|
|
int iVar2;
|
|
TEXINF *pTVar3;
|
|
int iVar4;
|
|
int iVar5;
|
|
TEXINF *pTVar6;
|
|
int iVar7;
|
|
int *piVar8;
|
|
TEXINF **ppTVar9;
|
|
|
|
pcVar1 = texturename_buffer;
|
|
iVar7 = 0;
|
|
pTVar6 = (TEXINF *)0x0;
|
|
if (0 < tpage_amount) {
|
|
ppTVar9 = tpage_ids128;
|
|
piVar8 = &tpage_texamts;
|
|
do {
|
|
iVar5 = *piVar8;
|
|
pTVar6 = *ppTVar9;
|
|
iVar4 = 0;
|
|
pTVar3 = pTVar6;
|
|
if (0 < iVar5) {
|
|
do {
|
|
iVar2 = strcmp(pcVar1 + pTVar3->nameoffset, name);
|
|
if (iVar2 == 0) {
|
|
*tpagenum = iVar7;
|
|
*texturenum = iVar4;
|
|
return pTVar3;
|
|
}
|
|
iVar4 = iVar4 + 1;
|
|
pTVar3 = pTVar3 + 1;
|
|
} while (iVar4 < iVar5);
|
|
}
|
|
ppTVar9 = ppTVar9 + 1;
|
|
iVar7 = iVar7 + 1;
|
|
piVar8 = piVar8 + 1;
|
|
} while (iVar7 < tpage_amount);
|
|
}
|
|
return pTVar6;
|
|
*/
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// struct TEXINF * /*$ra*/ GetTextureInfoName(char *name /*$a0*/, struct TPAN *result /*$s0*/)
|
|
// line 290, offset 0x00080da0
|
|
/* begin block 1 */
|
|
// Start line: 291
|
|
// Start offset: 0x00080DA0
|
|
// Variables:
|
|
// int tpagenum; // stack offset -16
|
|
// int texturenum; // stack offset -12
|
|
/* end block 1 */
|
|
// End offset: 0x00080DDC
|
|
// End Line: 300
|
|
|
|
/* begin block 2 */
|
|
// Start line: 580
|
|
/* end block 2 */
|
|
// End Line: 581
|
|
|
|
TEXINF * GetTextureInfoName(char *name, TPAN *result)
|
|
{
|
|
UNIMPLEMENTED();
|
|
return 0;
|
|
/*
|
|
TEXINF *pTVar1;
|
|
uchar local_10[4];
|
|
uchar local_c[4];
|
|
|
|
pTVar1 = GetTEXINFName(name, (int *)local_10, (int *)local_c);
|
|
result->texture_page = local_10[0];
|
|
result->texture_number = local_c[0];
|
|
return pTVar1;
|
|
*/
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// void /*$ra*/ update_slotinfo(int tpage /*$a0*/, int slot /*$a1*/, struct RECT *pos /*$a2*/)
|
|
// line 334, offset 0x00081038
|
|
/* begin block 1 */
|
|
// Start line: 1606
|
|
/* end block 1 */
|
|
// End Line: 1607
|
|
|
|
/* begin block 2 */
|
|
// Start line: 1654
|
|
/* end block 2 */
|
|
// End Line: 1655
|
|
|
|
/* begin block 3 */
|
|
// Start line: 1655
|
|
/* end block 3 */
|
|
// End Line: 1656
|
|
|
|
void update_slotinfo(int tpage, int slot, RECT *pos)
|
|
{
|
|
UNIMPLEMENTED();
|
|
/*
|
|
(&tpageslots)[slot] = (uchar)tpage;
|
|
tpageloaded[tpage] = (uchar)slot;
|
|
(&slot_tpagepos)[slot].vx = pos->x;
|
|
(&slot_tpagepos)[slot].vy = pos->y;
|
|
return;
|
|
*/
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// void /*$ra*/ ProcessTextureInfo(char *lump_ptr /*$a1*/)
|
|
// line 347, offset 0x00081080
|
|
/* begin block 1 */
|
|
// Start line: 348
|
|
// Start offset: 0x00081080
|
|
// Variables:
|
|
// int i; // $a0
|
|
/* end block 1 */
|
|
// End offset: 0x00081118
|
|
// End Line: 375
|
|
|
|
/* begin block 2 */
|
|
// Start line: 1686
|
|
/* end block 2 */
|
|
// End Line: 1687
|
|
|
|
void ProcessTextureInfo(char *lump_ptr)
|
|
{
|
|
UNIMPLEMENTED();
|
|
/*
|
|
int iVar1;
|
|
TEXINF *pTVar2;
|
|
int *piVar3;
|
|
TEXINF **ppTVar4;
|
|
|
|
iVar1 = *(int *)lump_ptr;
|
|
texamount = *(int *)(lump_ptr + 4);
|
|
tpage_position = (TP *)(lump_ptr + 8);
|
|
pTVar2 = (TEXINF *)(tpage_position + iVar1 + 1);
|
|
tpage_amount = iVar1;
|
|
if (0 < iVar1) {
|
|
ppTVar4 = tpage_ids128;
|
|
piVar3 = &tpage_texamts;
|
|
do {
|
|
texamount = *(int *)&pTVar2->id;
|
|
*ppTVar4 = (TEXINF *)&pTVar2->x;
|
|
ppTVar4 = ppTVar4 + 1;
|
|
iVar1 = iVar1 + -1;
|
|
pTVar2 = (TEXINF *)&pTVar2->x + texamount;
|
|
*piVar3 = texamount;
|
|
piVar3 = (int *)((ulong *)piVar3 + 1);
|
|
} while (iVar1 != 0);
|
|
}
|
|
nspecpages = *(ulong *)&pTVar2[0x10].x;
|
|
nperms = *(ulong *)&pTVar2->id;
|
|
speclist = (XYPAIR *)(pTVar2 + 0x11);
|
|
permlist = (XYPAIR *)&pTVar2->x;
|
|
return;*/
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// void /*$ra*/ LoadPermanentTPages(int *sector /*$fp*/)
|
|
// line 378, offset 0x00080688
|
|
/* begin block 1 */
|
|
// Start line: 379
|
|
// Start offset: 0x00080688
|
|
// Variables:
|
|
// int tloop; // $s1
|
|
// int i; // $s1
|
|
// int tset; // $s0
|
|
// int nsectors; // $s3
|
|
// char *tpagebuffer; // $s2
|
|
|
|
/* begin block 1.1 */
|
|
// Start line: 445
|
|
// Start offset: 0x000808DC
|
|
// Variables:
|
|
// int specmodel; // $a1
|
|
// int page1; // $s6
|
|
// int page2; // $s5
|
|
|
|
/* begin block 1.1.1 */
|
|
// Start line: 465
|
|
// Start offset: 0x00080984
|
|
// Variables:
|
|
// int temp; // $s4
|
|
// int clutsLoaded; // $s7
|
|
/* end block 1.1.1 */
|
|
// End offset: 0x00080AD8
|
|
// End Line: 504
|
|
/* end block 1.1 */
|
|
// End offset: 0x00080AD8
|
|
// End Line: 505
|
|
/* end block 1 */
|
|
// End offset: 0x00080BB0
|
|
// End Line: 575
|
|
|
|
/* begin block 2 */
|
|
// Start line: 762
|
|
/* end block 2 */
|
|
// End Line: 763
|
|
|
|
/* begin block 3 */
|
|
// Start line: 883
|
|
/* end block 3 */
|
|
// End Line: 884
|
|
|
|
void LoadPermanentTPages(int *sector)
|
|
{
|
|
UNIMPLEMENTED();
|
|
/*
|
|
byte bVar1;
|
|
byte bVar2;
|
|
bool bVar3;
|
|
_MISSION *p_Var4;
|
|
short sVar5;
|
|
short sVar6;
|
|
short sVar7;
|
|
short sVar8;
|
|
u_short uVar9;
|
|
int nsectors;
|
|
int iVar10;
|
|
uchar *puVar11;
|
|
int *addr;
|
|
int *piVar12;
|
|
int iVar13;
|
|
u_short *puVar14;
|
|
uint tpage;
|
|
DVECTOR *pDVar15;
|
|
int nsectors_00;
|
|
int iVar16;
|
|
uint uVar17;
|
|
char *tpageaddress;
|
|
DVECTOR *pDVar18;
|
|
|
|
puVar14 = &texture_pages;
|
|
nsectors_00 = 0x7f;
|
|
MaxSpecCluts = 0;
|
|
do {
|
|
uVar9 = GetTPage(0, 0, 0x3c0, 0);
|
|
*puVar14 = uVar9;
|
|
nsectors_00 = nsectors_00 + -1;
|
|
puVar14 = puVar14 + 1;
|
|
} while (-1 < nsectors_00);
|
|
nsectors_00 = 0;
|
|
iVar16 = 1;
|
|
do {
|
|
puVar14 = &texture_cluts + nsectors_00 * 0x20;
|
|
nsectors_00 = 0x1f;
|
|
do {
|
|
uVar9 = GetClut(0x3c0, 0x10);
|
|
*puVar14 = uVar9;
|
|
nsectors_00 = nsectors_00 + -1;
|
|
puVar14 = puVar14 + 1;
|
|
} while (-1 < nsectors_00);
|
|
bVar3 = iVar16 < 0x80;
|
|
nsectors_00 = iVar16;
|
|
iVar16 = iVar16 + 1;
|
|
} while (bVar3);
|
|
slotsused = 0;
|
|
memset(tpageloaded, 0, 0x80);
|
|
clutpos.x = 0x3c0;
|
|
clutpos.y = 0x100;
|
|
clutpos._4_4_ = 0x10010;
|
|
tpage.w = 0x40;
|
|
tpage.h = 0x100;
|
|
mapclutpos.x = 0x3c0;
|
|
mapclutpos.y = 0x100;
|
|
mapclutpos.w = 0x10;
|
|
mapclutpos.h = 1;
|
|
tpage.x = tpagepos.x;
|
|
tpage.y = tpagepos.y;
|
|
nsectors_00 = 0;
|
|
IncrementClutNum(&clutpos);
|
|
fontclutpos.x = clutpos.x;
|
|
fontclutpos.y = clutpos.y;
|
|
fontclutpos._4_4_ = clutpos._4_4_;
|
|
IncrementClutNum(&clutpos);
|
|
ProcessPalletLump(palette_lump, 0);
|
|
load_civ_palettes(&clutpos);
|
|
tpageaddress = mallocptr;
|
|
if (0 < nperms) {
|
|
addr = &permlist->y;
|
|
iVar16 = nperms;
|
|
do {
|
|
nsectors = *addr + 0x7ff;
|
|
if (nsectors < 0) {
|
|
nsectors = *addr + 0xffe;
|
|
}
|
|
nsectors_00 = nsectors_00 + (nsectors >> 0xb);
|
|
iVar16 = iVar16 + -1;
|
|
addr = addr + 2;
|
|
} while (iVar16 != 0);
|
|
}
|
|
loadsectors(mallocptr, *sector, nsectors_00);
|
|
*sector = *sector + nsectors_00;
|
|
nsectors_00 = 0;
|
|
if (0 < nperms) {
|
|
do {
|
|
nsectors = nsectors_00 + 1;
|
|
iVar16 = permlist[nsectors_00].y;
|
|
nsectors_00 = permlist[nsectors_00].x;
|
|
update_slotinfo(nsectors_00, slotsused, &tpage);
|
|
LoadTPageAndCluts(&tpage, &clutpos, nsectors_00, tpageaddress);
|
|
slotsused = slotsused + 1;
|
|
tpageaddress = tpageaddress + (iVar16 + 0x7ffU & 0xfffff800);
|
|
nsectors_00 = nsectors;
|
|
} while (nsectors < nperms);
|
|
}
|
|
iVar16 = slotsused;
|
|
addr = (int *)mallocptr;
|
|
nsectors_00 = GameLevel;
|
|
slot_clutpos[slotsused].vx = clutpos.x;
|
|
p_Var4 = MissionHeader;
|
|
slot_clutpos[iVar16].vy = clutpos.y;
|
|
nsectors = nsectors_00 * 0xc;
|
|
nsectors_00 = nsectors_00 * 8;
|
|
iVar13 = (p_Var4->residentModels[4] + -8) * 2;
|
|
specialSlot = (short)slotsused;
|
|
bVar1 = specTpages[iVar13 + nsectors];
|
|
carTpages[nsectors_00 + 6] = bVar1;
|
|
iVar16 = nspecpages;
|
|
bVar2 = specTpages[iVar13 + nsectors + 1];
|
|
bVar3 = nspecpages != 0;
|
|
carTpages[nsectors_00 + 7] = bVar2;
|
|
if (bVar3) {
|
|
iVar13 = 0;
|
|
nsectors_00 = 0;
|
|
nsectors = 0;
|
|
if (0 < iVar16) {
|
|
piVar12 = &speclist->y;
|
|
do {
|
|
iVar10 = *piVar12 + 0x7ff;
|
|
if (iVar10 < 0) {
|
|
iVar10 = *piVar12 + 0xffe;
|
|
}
|
|
nsectors = nsectors + (iVar10 >> 0xb);
|
|
iVar16 = iVar16 + -1;
|
|
piVar12 = piVar12 + 2;
|
|
} while (iVar16 != 0);
|
|
}
|
|
loadsectors((char *)addr, *sector, nsectors);
|
|
*sector = *sector + nsectors;
|
|
uVar17 = 0;
|
|
if (0 < nspecpages) {
|
|
do {
|
|
iVar13 = iVar13 + *addr;
|
|
iVar16 = speclist[uVar17].y;
|
|
tpage = speclist[uVar17].x;
|
|
if ((uVar17 & 1) != 0) {
|
|
if (MaxSpecCluts < iVar13) {
|
|
MaxSpecCluts = iVar13;
|
|
}
|
|
iVar13 = 0;
|
|
}
|
|
if ((tpage == (uint)bVar1) || (tpage == (uint)bVar2)) {
|
|
update_slotinfo(tpage, slotsused, &tpage);
|
|
LoadTPageAndCluts(&tpage, &clutpos, tpage, (char *)addr);
|
|
nsectors_00 = nsectors_00 + *addr;
|
|
slotsused = slotsused + 1;
|
|
}
|
|
uVar17 = uVar17 + 1;
|
|
addr = (int *)((int)addr + (iVar16 + 0x7ffU & 0xfffff800));
|
|
} while ((int)uVar17 < nspecpages);
|
|
}
|
|
if (nsectors_00 < MaxSpecCluts) {
|
|
do {
|
|
nsectors_00 = nsectors_00 + 1;
|
|
IncrementClutNum(&clutpos);
|
|
} while (nsectors_00 < MaxSpecCluts);
|
|
}
|
|
}
|
|
if (clutpos.x != 0x3c0) {
|
|
clutpos.y = clutpos.y + 1;
|
|
clutpos.x = 0x3c0;
|
|
}
|
|
if (slotsused < 0x13) {
|
|
pDVar18 = &slot_tpagepos + slotsused;
|
|
pDVar15 = slot_clutpos + slotsused;
|
|
nsectors_00 = slotsused;
|
|
do {
|
|
sVar8 = clutpos.y;
|
|
sVar7 = clutpos.x;
|
|
sVar6 = tpage.y;
|
|
sVar5 = tpage.x;
|
|
puVar11 = &tpageslots + nsectors_00;
|
|
nsectors_00 = nsectors_00 + 1;
|
|
*puVar11 = -1;
|
|
pDVar15->vx = sVar7;
|
|
pDVar15->vy = sVar8;
|
|
pDVar18->vx = sVar5;
|
|
pDVar18->vy = sVar6;
|
|
IncrementTPageNum(&tpage);
|
|
pDVar18 = pDVar18 + 1;
|
|
clutpos.y = clutpos.y + 8;
|
|
pDVar15 = pDVar15 + 1;
|
|
} while (nsectors_00 < 0x13);
|
|
}
|
|
return;*/
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// void /*$ra*/ ReloadIcons()
|
|
// line 578, offset 0x00081118
|
|
/* begin block 1 */
|
|
// Start line: 580
|
|
// Start offset: 0x00081118
|
|
// Variables:
|
|
// struct RECT tpage; // stack offset -88
|
|
// struct RECT clutpos; // stack offset -80
|
|
// char name[64]; // stack offset -72
|
|
/* end block 1 */
|
|
// End offset: 0x00081140
|
|
// End Line: 599
|
|
|
|
/* begin block 2 */
|
|
// Start line: 1965
|
|
/* end block 2 */
|
|
// End Line: 1966
|
|
|
|
/* begin block 3 */
|
|
// Start line: 2169
|
|
/* end block 3 */
|
|
// End Line: 2170
|
|
|
|
/* begin block 4 */
|
|
// Start line: 2170
|
|
/* end block 4 */
|
|
// End Line: 2171
|
|
|
|
/* begin block 5 */
|
|
// Start line: 2174
|
|
/* end block 5 */
|
|
// End Line: 2175
|
|
|
|
/* WARNING: Unknown calling convention yet parameter storage is locked */
|
|
|
|
// [D]
|
|
void ReloadIcons(void)
|
|
{
|
|
ReportMode(0);
|
|
ReportMode(1);
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
// decompiled code
|
|
// original method signature:
|
|
// void /*$ra*/ GetTextureDetails(char *name /*stack 0*/, struct TEXTURE_DETAILS *info /*$s3*/)
|
|
// line 602, offset 0x00080bb0
|
|
/* begin block 1 */
|
|
// Start line: 603
|
|
// Start offset: 0x00080BB0
|
|
// Variables:
|
|
// int i; // $s2
|
|
// int j; // $s1
|
|
// int texamt; // $s4
|
|
// struct TEXINF *texinf; // $v1
|
|
// char *nametable; // stack offset -56
|
|
/* end block 1 */
|
|
// End offset: 0x00080D70
|
|
// End Line: 647
|
|
|
|
/* begin block 2 */
|
|
// Start line: 1517
|
|
/* end block 2 */
|
|
// End Line: 1518
|
|
|
|
/* begin block 3 */
|
|
// Start line: 1545
|
|
/* end block 3 */
|
|
// End Line: 1546
|
|
|
|
/* begin block 4 */
|
|
// Start line: 1552
|
|
/* end block 4 */
|
|
// End Line: 1553
|
|
|
|
void GetTextureDetails(char *name, TEXTURE_DETAILS *info)
|
|
{
|
|
UNIMPLEMENTED();
|
|
/*
|
|
ushort uVar1;
|
|
char *pcVar2;
|
|
int iVar3;
|
|
TEXINF *pTVar4;
|
|
TEXINF **ppTVar5;
|
|
int iVar6;
|
|
int iVar7;
|
|
int iVar8;
|
|
ushort *puVar9;
|
|
int *piVar10;
|
|
|
|
pcVar2 = texturename_buffer;
|
|
iVar7 = 0;
|
|
if (0 < tpage_amount) {
|
|
ppTVar5 = tpage_ids128;
|
|
piVar10 = &tpage_texamts;
|
|
puVar9 = &texture_pages;
|
|
do {
|
|
iVar8 = *piVar10;
|
|
pTVar4 = *ppTVar5;
|
|
iVar6 = 0;
|
|
if (0 < iVar8) {
|
|
do {
|
|
iVar3 = strcmp(pcVar2 + pTVar4->nameoffset, name);
|
|
if ((iVar3 == 0) && ((texture_is_icon == 0 || (iVar7 == environmenttpage)))) {
|
|
info->tpageid = *puVar9;
|
|
uVar1 = (&texture_cluts)[iVar7 * 0x20 + iVar6];
|
|
info->texture_number = (char)iVar6;
|
|
info->texture_page = (char)iVar7;
|
|
info->clutid = uVar1;
|
|
(info->coords).u0 = pTVar4->x;
|
|
(info->coords).v0 = pTVar4->y;
|
|
(info->coords).u1 = pTVar4->x + pTVar4->width + -1;
|
|
(info->coords).v1 = pTVar4->y;
|
|
(info->coords).u2 = pTVar4->x;
|
|
(info->coords).v2 = pTVar4->y + pTVar4->height + -1;
|
|
(info->coords).u3 = pTVar4->x + pTVar4->width + -1;
|
|
(info->coords).v3 = pTVar4->y + pTVar4->height + -1;
|
|
return;
|
|
}
|
|
iVar6 = iVar6 + 1;
|
|
pTVar4 = pTVar4 + 1;
|
|
} while (iVar6 < iVar8);
|
|
}
|
|
ppTVar5 = ppTVar5 + 1;
|
|
piVar10 = piVar10 + 1;
|
|
iVar7 = iVar7 + 1;
|
|
puVar9 = puVar9 + 1;
|
|
} while (iVar7 < tpage_amount);
|
|
}
|
|
texture_is_icon = 0;
|
|
GetTextureDetails((char *)&PTR_DAT_000aa9c0, info);
|
|
return;
|
|
*/
|
|
}
|
|
|
|
|
|
|
|
|
|
|