Skip to content

Commit

Permalink
Decompiled a bunch of functions from 87010.c
Browse files Browse the repository at this point in the history
  • Loading branch information
Gillou68310 committed May 26, 2023
1 parent b17338a commit 8d7d538
Show file tree
Hide file tree
Showing 5 changed files with 178 additions and 6 deletions.
4 changes: 2 additions & 2 deletions dukenukemzerohour.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ segments:
- [0x814D0, c, src/code0/edl]
- [0x82480, c, src/code0/82480]
- [0x84490, c, src/code0/84490]
- [0x87010, c, gen/code0/87010]
- [0x87010, c, src/code0/87010]
- [0x88690, c, src/code0/88690]
- [0x8E670, c, gen/code0/8E670]
- [0x8EFE0, c, gen/code0/8EFE0]
Expand Down Expand Up @@ -384,7 +384,7 @@ segments:
- [0xE9D10, .rodata, src/code0/7FCE0]
- [0xE9D20, .rodata, src/code0/82480]
- [0xE9D60, .rodata, src/code0/84490] # For modern gcc
- [0xE9D60, .rodata, gen/code0/87010]
- [0xE9D60, .rodata, src/code0/87010]
- [0xE9D70, .rodata, src/code0/88690]
- [0xEA330, .rodata, gen/code0/8EFE0]
- [0xEA760, .rodata, src/code0/95500]
Expand Down
4 changes: 2 additions & 2 deletions include/code0/87010.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
#include "common.h"

void func_80086410(void);
void func_800867CC(s16 spritenum, s32 x1, s32 y1, s32 z1, s32 x2, s32 y2, s32 z2, s32, s32);
void func_80087174(s16 spritenum, s32 x1, s32 y1, s32 z1, s32 x2, s32 y2, s32 z2, s32, s32);
void func_800867CC(s16 spritenum, s32 x1, s32 y1, s32 z1, s32 x2, s32 y2, s32 z2, s16, u8);
void func_80087174(s16 spritenum, s32 x1, s32 y1, s32 z1, s32 x2, s32 y2, s32 z2, s16, u8);
void func_800879E8(void);

#endif
4 changes: 2 additions & 2 deletions src/code0/84490.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
/*800E0F50*/ EXTERN_DATA STATIC s32 D_800E0F50;
/*800E0F54*/ EXTERN_DATA STATIC s32 D_800E0F54;
/*800E0F58*/ EXTERN_DATA s32 D_800E0F58;
/*800E0F5C*/ EXTERN_DATA STATIC s8 D_800E0F5C;
/*800E0F5C*/ EXTERN_DATA STATIC u8 D_800E0F5C;

/*.comm*/
/*800FCBE4*/ s32 D_800FCBE4;
Expand All @@ -33,7 +33,7 @@
/*8013F924*/ code0UnkStruct21 *D_8013F924;
/*8016A170*/ code0UnkStruct18 D_8016A170[2048] ALIGNED(16);
/*80197DD0*/ s32 D_80197DD0;
/*80199108*/ s8 D_80199108;
/*80199108*/ u8 D_80199108;
/*80199968*/ s32 D_80199968;
/*801AE534*/ s32 D_801AE534;
/*801AE900*/ s32 D_801AE900;
Expand Down
165 changes: 165 additions & 0 deletions src/code0/87010.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
#include "common.h"
#include "code0/code0.h"

typedef struct {
/*0x00*/ u8 unk0;
/*0x01*/ u8 unk1;
/*0x02*/ u8 unk2;
/*0x03*/ u8 pad;
/*0x04*/ s16 unk4;
/*0x06*/ s16 unk6;
/*0x08*/ s16 unk8;
/*0x0A*/ s16 unkA;
/*0x0C*/ s32 unkC;
/*0x10*/ s32 unk10;
/*0x14*/ s32 unk14;
/*0x18*/ u8 pad2[178];
/*0xCC*/ s32 unkCC;
/*0xD0*/ s32 unkD0;
/*0xD4*/ s32 unkD4;
/*0xD8*/ u8 pad3[10];
} _87010UnkStruct1;

typedef struct {
/*0x00*/ u8 unk0;
/*0x01*/ u8 unk1;
/*0x02*/ u8 unk2;
/*0x03*/ u8 pad;
/*0x04*/ s16 unk4;
/*0x06*/ s16 unk6;
/*0x08*/ s16 unk8;
/*0x0A*/ s16 unkA;
/*0x0C*/ s32 unkC;
/*0x10*/ s32 unk10;
/*0x14*/ s32 unk14;
/*0x18*/ s32 unk18;
/*0x1C*/ s32 unk1C;
/*0x20*/ s32 unk20;
} _87010UnkStruct2;

/*.comm*/
/*8011AE00*/ _87010UnkStruct1 D_8011AE00[16] ALIGNED(16);
/*8012B988*/ _87010UnkStruct2 D_8012B988[16] ALIGNED(8);
/*8016D182*/ u8 D_8016D182;

/*.text*/

/*80086410*/
void func_80086410(void)
{
s16 i;

for (i = 0; i < ARRAY_COUNT(D_8011AE00); i++)
{
D_8011AE00[i].unk0 = 0;
D_8011AE00[i].unk4 = -9;
D_8012B988[i].unk0 = 0;
D_8012B988[i].unk4 = -9;
}
}

STATIC void func_80086490(_87010UnkStruct1 *, s16, s16);
INCLUDE_ASM("nonmatchings/src/code0/87010", func_80086490);

/*800867CC*/
void func_800867CC(s16 spritenum, s32 x1, s32 y1, s32 z1, s32 x2, s32 y2, s32 z2, s16 arg7, u8 arg8)
{
_87010UnkStruct1 *ptr;
s16 i, j, ang;

j = -1;

for (i = 0; i < ARRAY_COUNT(D_8011AE00); i++)
{
if (D_8011AE00[i].unk0 == 0)
j = i;

if (D_8011AE00[i].unk4 == spritenum)
{
j = i;
break;
}
}

if (j != -1)
{
ptr = &D_8011AE00[j];
ang = getAngle(x2 - x1, y2 - y1);
ptr->unk6 = (arg7 * gpSinTable[(ang + 1024) & 0x7FF]) / 16384;
ptr->unk8 = (arg7 * gpSinTable[(ang + 512) & 0x7FF]) / 16384;
ptr->unkA = arg7;
ptr->unkC = x1;
ptr->unk10 = y1;
ptr->unk14 = z1 / 16;
ptr->unkCC = x2;
ptr->unkD0 = y2;
ptr->unkD4 = z2 / 16;

if ((guRandom() % 256) >= 5)
D_8016D182 = 0;
else
D_8016D182 = 1;

func_80086490(ptr, 0, 8);
ptr->unk0 = 2;
ptr->unk1 = arg8;
ptr->unk4 = spritenum;
ptr->unk2 = krand() | 0x80;
}
}

INCLUDE_ASM("nonmatchings/src/code0/87010", func_80086A24);

/*80087174*/
void func_80087174(s16 spritenum, s32 x1, s32 y1, s32 z1, s32 x2, s32 y2, s32 z2, s16 arg7, u8 arg8)
{
_87010UnkStruct2 *ptr;
s16 i, j, ang;

j = -1;

for (i = 0; i < ARRAY_COUNT(D_8012B988); i++)
{
if (D_8012B988[i].unk0 == 0)
j = i;

if (D_8012B988[i].unk4 == spritenum)
{
j = i;
break;
}
}

if (j != -1)
{
ptr = &D_8012B988[j];
ang = getAngle(x2 - x1, y2 - y1);
ptr->unk6 = (arg7 * gpSinTable[(ang + 1024) & 0x7FF]) / 16384;
ptr->unk8 = (arg7 * gpSinTable[(ang + 512) & 0x7FF]) / 16384;
ptr->unkA = arg7;
ptr->unkC = x1;
ptr->unk10 = y1;
ptr->unk14 = z1 / 16;
ptr->unk18 = x2;
ptr->unk1C = y2;
ptr->unk20 = z2 / 16;
ptr->unk0 = 2;
ptr->unk1 = arg8;
ptr->unk4 = spritenum;
ptr->unk2 = krand() | 0x80;
}
}

INCLUDE_ASM("nonmatchings/src/code0/87010", func_8008736C);

/*800879E8*/
void func_800879E8(void)
{
s16 i;

for (i = 0; i < ARRAY_COUNT(D_8011AE00); i++)
{
D_8011AE00[i].unk0 = MAX((D_8011AE00[i].unk0-1), 0);
D_8012B988[i].unk0 = MAX((D_8012B988[i].unk0-1), 0);
}
}
7 changes: 7 additions & 0 deletions symbol_addrs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -877,6 +877,10 @@ func_80086068 = 0x80086068; // type:func size:0x44
func_800860AC = 0x800860AC; // type:func size:0x54 (local, .text, src/code0/84490.c)
func_80086100 = 0x80086100; // type:func size:0xF4 (local, .text, src/code0/84490.c)
func_800861F4 = 0x800861F4; // type:func size:0x210 (global, .text, src/code0/84490.c)
func_80086410 = 0x80086410; // type:func size:0x80 (global, .text, src/code0/87010.c)
func_800867CC = 0x800867CC; // type:func size:0x258 (global, .text, src/code0/87010.c)
func_80087174 = 0x80087174; // type:func size:0x1F8 (global, .text, src/code0/87010.c)
func_800879E8 = 0x800879E8; // type:func size:0x9C (global, .text, src/code0/87010.c)
Fenvelope = 0x800A4980; // type:func size:0x14C (local, .text, libs/libmus/src/player.c)
MusInitialize = 0x800A4ACC; // type:func size:0x298 (global, .text, libs/libmus/src/player.c)
MusSetMasterVolume = 0x800A4D64; // type:func size:0x2C (global, .text, libs/libmus/src/player.c)
Expand Down Expand Up @@ -5387,6 +5391,7 @@ gPrevSpriteStat = 0x80119AB0; // type:data size:0xBB8
gCacheMemEnd = 0x8011A668; // type:data size:0x4 (global, .comm, src/code0/main.c)
D_8011A670 = 0x8011A670; // type:data size:0x8 (global, .comm, src/code0/code0.c)
D_8011A680 = 0x8011A680; // type:data size:0x780 (global, .comm, src/code0/code0.c)
D_8011AE00 = 0x8011AE00; // type:data size:0xE40 (global, .comm, src/code0/87010.c)
D_8011BC40 = 0x8011BC40; // type:data size:0x4 (global, .comm, src/code0/code0.c)
D_8011BC48 = 0x8011BC48; // type:data size:0x4 (global, .comm, src/code0/code0.c)
D_8011BC54 = 0x8011BC54; // type:data size:0x4 (global, .comm, src/code0/36410.c)
Expand All @@ -5398,6 +5403,7 @@ D_80129808 = 0x80129808; // type:data size:0x4
gMusicBuffer = 0x80129810; // type:data size:0x2130 (global, .comm, src/code0/audio.c)
D_8012B940 = 0x8012B940; // type:data size:0x4 (global, .comm, src/code0/84490.c)
D_8012B948 = 0x8012B948; // type:data size:0x40 (global, .comm, src/code0/code0.c)
D_8012B988 = 0x8012B988; // type:data size:0x240 (global, .comm, src/code0/87010.c)
D_8012BBCC = 0x8012BBCC; // type:data size:0x2 (global, .comm, src/code0/code0.c)
D_8012BBD0 = 0x8012BBD0; // type:data size:0x53 (global, .comm, src/code0/4600.c)
D_8012BC70 = 0x8012BC70; // type:data size:0x800 (global, .comm, src/code0/code0.c)
Expand Down Expand Up @@ -5534,6 +5540,7 @@ D_8016D174 = 0x8016D174; // type:data size:0x4
gGfxTime = 0x8016D178; // type:data size:0x4 (global, .comm, src/code0/main.c)
D_8016D17C = 0x8016D17C; // type:data size:0x4 (global, .comm, src/code0/7F6A0.c)
D_8016D180 = 0x8016D180; // type:data size:0x2 (global, .comm, src/code0/code0.c)
D_8016D182 = 0x8016D182; // type:data size:0x1 (global, .comm, src/code0/87010.c)
gVertexN64 = 0x8016D184; // type:data size:0x8 (global, .comm, src/code0/main.c)
gAudioMemory = 0x8016D190; // type:data size:0x28000 (global, .comm, src/code0/audio.c)
gAmbientBuffer = 0x80195190; // type:data size:0x2710 (global, .comm, src/code0/audio.c)
Expand Down

0 comments on commit 8d7d538

Please sign in to comment.