mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-06-21 07:42:19 -04:00
179 lines
6.7 KiB
C
179 lines
6.7 KiB
C
#include <ultra64.h>
|
|
#include "constants.h"
|
|
#include "game/data/data_000000.h"
|
|
#include "game/data/data_0083d0.h"
|
|
#include "game/data/data_00e460.h"
|
|
#include "game/data/data_0160b0.h"
|
|
#include "game/data/data_01a3a0.h"
|
|
#include "game/data/data_020df0.h"
|
|
#include "game/data/data_02da90.h"
|
|
#include "gvars/gvars.h"
|
|
#include "lib/lib_04840.h"
|
|
#include "lib/lib_16110.h"
|
|
#include "lib/lib_4a360.h"
|
|
#include "types.h"
|
|
|
|
const u32 var700524b0[] = {0x3c8efa35};
|
|
const u32 var700524b4[] = {0x00000000};
|
|
const u32 var700524b8[] = {0x00000000};
|
|
const u32 var700524bc[] = {0x00000000};
|
|
|
|
GLOBAL_ASM(
|
|
glabel func00004840
|
|
/* 4840: 27bdffd0 */ addiu $sp,$sp,-48
|
|
/* 4844: 44867000 */ mtc1 $a2,$f14
|
|
/* 4848: afbf0014 */ sw $ra,0x14($sp)
|
|
/* 484c: afa50034 */ sw $a1,0x34($sp)
|
|
/* 4850: afa7003c */ sw $a3,0x3c($sp)
|
|
/* 4854: afa50034 */ sw $a1,0x34($sp)
|
|
/* 4858: afa40030 */ sw $a0,0x30($sp)
|
|
/* 485c: 0c012918 */ jal func0004a460
|
|
/* 4860: e7ae0038 */ swc1 $f14,0x38($sp)
|
|
/* 4864: 3c017005 */ lui $at,%hi(var700524b0)
|
|
/* 4868: c7ae0038 */ lwc1 $f14,0x38($sp)
|
|
/* 486c: c42424b0 */ lwc1 $f4,%lo(var700524b0)($at)
|
|
/* 4870: 3c013f00 */ lui $at,0x3f00
|
|
/* 4874: 44813000 */ mtc1 $at,$f6
|
|
/* 4878: 46047382 */ mul.s $f14,$f14,$f4
|
|
/* 487c: 00000000 */ nop
|
|
/* 4880: 46067302 */ mul.s $f12,$f14,$f6
|
|
/* 4884: 0c0068f4 */ jal cosf
|
|
/* 4888: e7ac001c */ swc1 $f12,0x1c($sp)
|
|
/* 488c: c7ac001c */ lwc1 $f12,0x1c($sp)
|
|
/* 4890: 0c0068f7 */ jal sinf
|
|
/* 4894: e7a00020 */ swc1 $f0,0x20($sp)
|
|
/* 4898: c7a80020 */ lwc1 $f8,0x20($sp)
|
|
/* 489c: c7aa003c */ lwc1 $f10,0x3c($sp)
|
|
/* 48a0: c7ac0040 */ lwc1 $f12,0x40($sp)
|
|
/* 48a4: 46004083 */ div.s $f2,$f8,$f0
|
|
/* 48a8: c7b00044 */ lwc1 $f16,0x44($sp)
|
|
/* 48ac: 8fa60030 */ lw $a2,0x30($sp)
|
|
/* 48b0: 8fa70034 */ lw $a3,0x34($sp)
|
|
/* 48b4: 46106480 */ add.s $f18,$f12,$f16
|
|
/* 48b8: 3c01bf80 */ lui $at,0xbf80
|
|
/* 48bc: 44814000 */ mtc1 $at,$f8
|
|
/* 48c0: 46106381 */ sub.s $f14,$f12,$f16
|
|
/* 48c4: 00002825 */ or $a1,$zero,$zero
|
|
/* 48c8: e4c8002c */ swc1 $f8,0x2c($a2)
|
|
/* 48cc: 44804000 */ mtc1 $zero,$f8
|
|
/* 48d0: 24040004 */ addiu $a0,$zero,0x4
|
|
/* 48d4: e4c8003c */ swc1 $f8,0x3c($a2)
|
|
/* 48d8: 460e9183 */ div.s $f6,$f18,$f14
|
|
/* 48dc: e4c20014 */ swc1 $f2,0x14($a2)
|
|
/* 48e0: 460a1103 */ div.s $f4,$f2,$f10
|
|
/* 48e4: e4c60028 */ swc1 $f6,0x28($a2)
|
|
/* 48e8: 460c6280 */ add.s $f10,$f12,$f12
|
|
/* 48ec: e4c40000 */ swc1 $f4,0x0($a2)
|
|
/* 48f0: 46105102 */ mul.s $f4,$f10,$f16
|
|
/* 48f4: 460e2183 */ div.s $f6,$f4,$f14
|
|
/* 48f8: e4c60038 */ swc1 $f6,0x38($a2)
|
|
/* 48fc: c7a00048 */ lwc1 $f0,0x48($sp)
|
|
.L00004900:
|
|
/* 4900: 00001825 */ or $v1,$zero,$zero
|
|
/* 4904: 00c01025 */ or $v0,$a2,$zero
|
|
/* 4908: c44e0000 */ lwc1 $f14,0x0($v0)
|
|
/* 490c: 24630001 */ addiu $v1,$v1,0x1
|
|
/* 4910: 46007402 */ mul.s $f16,$f14,$f0
|
|
/* 4914: 50640008 */ beql $v1,$a0,.L00004938
|
|
/* 4918: 24420004 */ addiu $v0,$v0,0x4
|
|
.L0000491c:
|
|
/* 491c: c44e0004 */ lwc1 $f14,0x4($v0)
|
|
/* 4920: 24630001 */ addiu $v1,$v1,0x1
|
|
/* 4924: e4500000 */ swc1 $f16,0x0($v0)
|
|
/* 4928: 46007402 */ mul.s $f16,$f14,$f0
|
|
/* 492c: 1464fffb */ bne $v1,$a0,.L0000491c
|
|
/* 4930: 24420004 */ addiu $v0,$v0,0x4
|
|
/* 4934: 24420004 */ addiu $v0,$v0,0x4
|
|
.L00004938:
|
|
/* 4938: e450fffc */ swc1 $f16,-0x4($v0)
|
|
/* 493c: 24a50001 */ addiu $a1,$a1,0x1
|
|
/* 4940: 14a4ffef */ bne $a1,$a0,.L00004900
|
|
/* 4944: 24c60010 */ addiu $a2,$a2,0x10
|
|
/* 4948: 10e00032 */ beqz $a3,.L00004a14
|
|
/* 494c: 3c014000 */ lui $at,0x4000
|
|
/* 4950: 44813000 */ mtc1 $at,$f6
|
|
/* 4954: 340effff */ dli $t6,0xffff
|
|
/* 4958: 3c014800 */ lui $at,0x4800
|
|
/* 495c: 4606903e */ c.le.s $f18,$f6
|
|
/* 4960: 00000000 */ nop
|
|
/* 4964: 45020004 */ bc1fl .L00004978
|
|
/* 4968: 44814000 */ mtc1 $at,$f8
|
|
/* 496c: 10000029 */ b .L00004a14
|
|
/* 4970: a4ee0000 */ sh $t6,0x0($a3)
|
|
/* 4974: 44814000 */ mtc1 $at,$f8
|
|
.L00004978:
|
|
/* 4978: 24180001 */ addiu $t8,$zero,0x1
|
|
/* 497c: 3c014f00 */ lui $at,0x4f00
|
|
/* 4980: 46124283 */ div.s $f10,$f8,$f18
|
|
/* 4984: 24080001 */ addiu $t0,$zero,0x1
|
|
/* 4988: 444ff800 */ cfc1 $t7,$31
|
|
/* 498c: 44d8f800 */ ctc1 $t8,$31
|
|
/* 4990: 00000000 */ nop
|
|
/* 4994: 46005124 */ cvt.w.s $f4,$f10
|
|
/* 4998: 4458f800 */ cfc1 $t8,$31
|
|
/* 499c: 00000000 */ nop
|
|
/* 49a0: 33180078 */ andi $t8,$t8,0x78
|
|
/* 49a4: 53000013 */ beqzl $t8,.L000049f4
|
|
/* 49a8: 44182000 */ mfc1 $t8,$f4
|
|
/* 49ac: 44812000 */ mtc1 $at,$f4
|
|
/* 49b0: 24180001 */ addiu $t8,$zero,0x1
|
|
/* 49b4: 46045101 */ sub.s $f4,$f10,$f4
|
|
/* 49b8: 44d8f800 */ ctc1 $t8,$31
|
|
/* 49bc: 00000000 */ nop
|
|
/* 49c0: 46002124 */ cvt.w.s $f4,$f4
|
|
/* 49c4: 4458f800 */ cfc1 $t8,$31
|
|
/* 49c8: 00000000 */ nop
|
|
/* 49cc: 33180078 */ andi $t8,$t8,0x78
|
|
/* 49d0: 17000005 */ bnez $t8,.L000049e8
|
|
/* 49d4: 00000000 */ nop
|
|
/* 49d8: 44182000 */ mfc1 $t8,$f4
|
|
/* 49dc: 3c018000 */ lui $at,0x8000
|
|
/* 49e0: 10000007 */ b .L00004a00
|
|
/* 49e4: 0301c025 */ or $t8,$t8,$at
|
|
.L000049e8:
|
|
/* 49e8: 10000005 */ b .L00004a00
|
|
/* 49ec: 2418ffff */ addiu $t8,$zero,-1
|
|
/* 49f0: 44182000 */ mfc1 $t8,$f4
|
|
.L000049f4:
|
|
/* 49f4: 00000000 */ nop
|
|
/* 49f8: 0700fffb */ bltz $t8,.L000049e8
|
|
/* 49fc: 00000000 */ nop
|
|
.L00004a00:
|
|
/* 4a00: 44cff800 */ ctc1 $t7,$31
|
|
/* 4a04: 3319ffff */ andi $t9,$t8,0xffff
|
|
/* 4a08: 1f200002 */ bgtz $t9,.L00004a14
|
|
/* 4a0c: a4f80000 */ sh $t8,0x0($a3)
|
|
/* 4a10: a4e80000 */ sh $t0,0x0($a3)
|
|
.L00004a14:
|
|
/* 4a14: 8fbf0014 */ lw $ra,0x14($sp)
|
|
/* 4a18: 27bd0030 */ addiu $sp,$sp,0x30
|
|
/* 4a1c: 03e00008 */ jr $ra
|
|
/* 4a20: 00000000 */ nop
|
|
);
|
|
|
|
GLOBAL_ASM(
|
|
glabel func00004a24
|
|
/* 4a24: 27bdff98 */ addiu $sp,$sp,-104
|
|
/* 4a28: 44866000 */ mtc1 $a2,$f12
|
|
/* 4a2c: 44877000 */ mtc1 $a3,$f14
|
|
/* 4a30: c7a40078 */ lwc1 $f4,0x78($sp)
|
|
/* 4a34: c7a6007c */ lwc1 $f6,0x7c($sp)
|
|
/* 4a38: c7a80080 */ lwc1 $f8,0x80($sp)
|
|
/* 4a3c: afbf0024 */ sw $ra,0x24($sp)
|
|
/* 4a40: afa40068 */ sw $a0,0x68($sp)
|
|
/* 4a44: 44066000 */ mfc1 $a2,$f12
|
|
/* 4a48: 44077000 */ mfc1 $a3,$f14
|
|
/* 4a4c: 27a40028 */ addiu $a0,$sp,0x28
|
|
/* 4a50: e7a40010 */ swc1 $f4,0x10($sp)
|
|
/* 4a54: e7a60014 */ swc1 $f6,0x14($sp)
|
|
/* 4a58: 0c001210 */ jal func00004840
|
|
/* 4a5c: e7a80018 */ swc1 $f8,0x18($sp)
|
|
/* 4a60: 27a40028 */ addiu $a0,$sp,0x28
|
|
/* 4a64: 0c0128d8 */ jal func0004a360
|
|
/* 4a68: 8fa50068 */ lw $a1,0x68($sp)
|
|
/* 4a6c: 8fbf0024 */ lw $ra,0x24($sp)
|
|
/* 4a70: 27bd0068 */ addiu $sp,$sp,0x68
|
|
/* 4a74: 03e00008 */ jr $ra
|
|
/* 4a78: 00000000 */ nop
|
|
/* 4a7c: 00000000 */ nop
|
|
); |