mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
277 lines
7.5 KiB
C
277 lines
7.5 KiB
C
#include "ultra64.h"
|
|
#include "game/indy_commands.h"
|
|
#include "game/indy_comms.h"
|
|
|
|
s32 init_indy_if_not_ready(void) {
|
|
if (indy_ready != 1)
|
|
{
|
|
indy_ready = 1;
|
|
init_indy_if_ready();
|
|
}
|
|
}
|
|
|
|
void nullsub_48(void) {
|
|
return;
|
|
}
|
|
|
|
void init_indy_if_ready(void) {
|
|
if (indy_ready != 0)
|
|
{
|
|
post_indy__res_cmd_initialize_seq();
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef NONMATCHING
|
|
void load_resource_on_indy(s32 arg1) {
|
|
? sp18;
|
|
? sp1C;
|
|
? sp20;
|
|
|
|
// Node 0
|
|
if (indy_ready != 0)
|
|
{
|
|
// Node 1
|
|
post_indyrescmd_req_filename_size(0x400000);
|
|
response_indyrescmd_1_8_2(&sp20, &sp1C, &sp18, arg1);
|
|
}
|
|
// Node 2
|
|
return;
|
|
}
|
|
#else
|
|
GLOBAL_ASM(
|
|
.text
|
|
glabel load_resource_on_indy
|
|
/* 104ACC 7F0CFF9C 3C0E8005 */ lui $t6, %hi(indy_ready)
|
|
/* 104AD0 7F0CFFA0 8DCEEAC8 */ lw $t6, %lo(indy_ready)($t6)
|
|
/* 104AD4 7F0CFFA4 27BDFFD8 */ addiu $sp, $sp, -0x28
|
|
/* 104AD8 7F0CFFA8 AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 104ADC 7F0CFFAC 11C00008 */ beqz $t6, .L7F0CFFD0
|
|
/* 104AE0 7F0CFFB0 AFA5002C */ sw $a1, 0x2c($sp)
|
|
/* 104AE4 7F0CFFB4 0FC342E9 */ jal post_indyrescmd_req_filename_size
|
|
/* 104AE8 7F0CFFB8 3C050040 */ lui $a1, 0x40
|
|
/* 104AEC 7F0CFFBC 27A40020 */ addiu $a0, $sp, 0x20
|
|
/* 104AF0 7F0CFFC0 27A5001C */ addiu $a1, $sp, 0x1c
|
|
/* 104AF4 7F0CFFC4 27A60018 */ addiu $a2, $sp, 0x18
|
|
/* 104AF8 7F0CFFC8 0FC345FF */ jal response_indyrescmd_1_8_2
|
|
/* 104AFC 7F0CFFCC 8FA7002C */ lw $a3, 0x2c($sp)
|
|
.L7F0CFFD0:
|
|
/* 104B00 7F0CFFD0 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 104B04 7F0CFFD4 27BD0028 */ addiu $sp, $sp, 0x28
|
|
/* 104B08 7F0CFFD8 03E00008 */ jr $ra
|
|
/* 104B0C 7F0CFFDC 00000000 */ nop
|
|
)
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef NONMATCHING
|
|
void indy_send_capture_data(s32 arg1, ? arg2) {
|
|
? sp1C;
|
|
|
|
// Node 0
|
|
if (indy_ready != 0)
|
|
{
|
|
// Node 1
|
|
post_indyrescmd_send_capture_data(arg2, arg1);
|
|
response_indyrescmd_1_A_2(&sp1C);
|
|
}
|
|
// Node 2
|
|
return;
|
|
}
|
|
#else
|
|
GLOBAL_ASM(
|
|
.text
|
|
glabel indy_send_capture_data
|
|
/* 104B10 7F0CFFE0 3C0E8005 */ lui $t6, %hi(indy_ready)
|
|
/* 104B14 7F0CFFE4 8DCEEAC8 */ lw $t6, %lo(indy_ready)($t6)
|
|
/* 104B18 7F0CFFE8 27BDFFE0 */ addiu $sp, $sp, -0x20
|
|
/* 104B1C 7F0CFFEC AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 104B20 7F0CFFF0 11C00006 */ beqz $t6, .L7F0D000C
|
|
/* 104B24 7F0CFFF4 AFA50024 */ sw $a1, 0x24($sp)
|
|
/* 104B28 7F0CFFF8 00C02825 */ move $a1, $a2
|
|
/* 104B2C 7F0CFFFC 0FC3431A */ jal post_indyrescmd_send_capture_data
|
|
/* 104B30 7F0D0000 8FA60024 */ lw $a2, 0x24($sp)
|
|
/* 104B34 7F0D0004 0FC34619 */ jal response_indyrescmd_1_A_2
|
|
/* 104B38 7F0D0008 27A4001C */ addiu $a0, $sp, 0x1c
|
|
.L7F0D000C:
|
|
/* 104B3C 7F0D000C 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 104B40 7F0D0010 27BD0020 */ addiu $sp, $sp, 0x20
|
|
/* 104B44 7F0D0014 03E00008 */ jr $ra
|
|
/* 104B48 7F0D0018 00000000 */ nop
|
|
)
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef NONMATCHING
|
|
void indy_loadfile(void) {
|
|
? sp1C;
|
|
? sp20;
|
|
? sp24;
|
|
|
|
// Node 0
|
|
if (indy_ready != 0)
|
|
{
|
|
// Node 1
|
|
post_indyrescmd_request_ramrom_file();
|
|
response_indyrescmd_1_10_2(&sp24, &sp20, &sp1C);
|
|
}
|
|
// Node 2
|
|
return;
|
|
}
|
|
#else
|
|
GLOBAL_ASM(
|
|
.text
|
|
glabel indy_loadfile
|
|
/* 104B4C 7F0D001C 3C0E8005 */ lui $t6, %hi(indy_ready)
|
|
/* 104B50 7F0D0020 8DCEEAC8 */ lw $t6, %lo(indy_ready)($t6)
|
|
/* 104B54 7F0D0024 27BDFFD8 */ addiu $sp, $sp, -0x28
|
|
/* 104B58 7F0D0028 AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 104B5C 7F0D002C 51C00008 */ beql $t6, $zero, .L7F0D0050
|
|
/* 104B60 7F0D0030 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 104B64 7F0D0034 0FC34346 */ jal post_indyrescmd_request_ramrom_file
|
|
/* 104B68 7F0D0038 00000000 */ nop
|
|
/* 104B6C 7F0D003C 27A40024 */ addiu $a0, $sp, 0x24
|
|
/* 104B70 7F0D0040 27A50020 */ addiu $a1, $sp, 0x20
|
|
/* 104B74 7F0D0044 0FC3462B */ jal response_indyrescmd_1_10_2
|
|
/* 104B78 7F0D0048 27A6001C */ addiu $a2, $sp, 0x1c
|
|
/* 104B7C 7F0D004C 8FBF0014 */ lw $ra, 0x14($sp)
|
|
.L7F0D0050:
|
|
/* 104B80 7F0D0050 27BD0028 */ addiu $sp, $sp, 0x28
|
|
/* 104B84 7F0D0054 03E00008 */ jr $ra
|
|
/* 104B88 7F0D0058 00000000 */ nop
|
|
)
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef NONMATCHING
|
|
void check_file_exported(s32 arg1, ? arg2) {
|
|
? sp1C;
|
|
|
|
// Node 0
|
|
if (indy_ready != 0)
|
|
{
|
|
// Node 1
|
|
post_indyrescmd_game_prof_sendfile(arg2, arg1);
|
|
response_indyrescmd_1_E_2(&sp1C);
|
|
}
|
|
// Node 2
|
|
return;
|
|
}
|
|
#else
|
|
GLOBAL_ASM(
|
|
.text
|
|
glabel check_file_exported
|
|
/* 104B8C 7F0D005C 3C0E8005 */ lui $t6, %hi(indy_ready)
|
|
/* 104B90 7F0D0060 8DCEEAC8 */ lw $t6, %lo(indy_ready)($t6)
|
|
/* 104B94 7F0D0064 27BDFFE0 */ addiu $sp, $sp, -0x20
|
|
/* 104B98 7F0D0068 AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 104B9C 7F0D006C 11C00006 */ beqz $t6, .L7F0D0088
|
|
/* 104BA0 7F0D0070 AFA50024 */ sw $a1, 0x24($sp)
|
|
/* 104BA4 7F0D0074 00C02825 */ move $a1, $a2
|
|
/* 104BA8 7F0D0078 0FC34374 */ jal post_indyrescmd_game_prof_sendfile
|
|
/* 104BAC 7F0D007C 8FA60024 */ lw $a2, 0x24($sp)
|
|
/* 104BB0 7F0D0080 0FC34642 */ jal response_indyrescmd_1_E_2
|
|
/* 104BB4 7F0D0084 27A4001C */ addiu $a0, $sp, 0x1c
|
|
.L7F0D0088:
|
|
/* 104BB8 7F0D0088 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 104BBC 7F0D008C 27BD0020 */ addiu $sp, $sp, 0x20
|
|
/* 104BC0 7F0D0090 03E00008 */ jr $ra
|
|
/* 104BC4 7F0D0094 00000000 */ nop
|
|
)
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef NONMATCHING
|
|
void check_file_found_on_indy(void) {
|
|
|
|
}
|
|
#else
|
|
GLOBAL_ASM(
|
|
.text
|
|
glabel check_file_found_on_indy
|
|
/* 104BC8 7F0D0098 3C0E8005 */ lui $t6, %hi(indy_ready)
|
|
/* 104BCC 7F0D009C 8DCEEAC8 */ lw $t6, %lo(indy_ready)($t6)
|
|
/* 104BD0 7F0D00A0 27BDFFE0 */ addiu $sp, $sp, -0x20
|
|
/* 104BD4 7F0D00A4 AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 104BD8 7F0D00A8 15C00003 */ bnez $t6, .L7F0D00B8
|
|
/* 104BDC 7F0D00AC AFA50024 */ sw $a1, 0x24($sp)
|
|
/* 104BE0 7F0D00B0 10000007 */ b .L7F0D00D0
|
|
/* 104BE4 7F0D00B4 00001025 */ move $v0, $zero
|
|
.L7F0D00B8:
|
|
/* 104BE8 7F0D00B8 0FC342C3 */ jal post_indyrescmd_game_printf_send
|
|
/* 104BEC 7F0D00BC 00000000 */ nop
|
|
/* 104BF0 7F0D00C0 27A4001C */ addiu $a0, $sp, 0x1c
|
|
/* 104BF4 7F0D00C4 0FC345EB */ jal response_indyrescmd_1_6_2
|
|
/* 104BF8 7F0D00C8 8FA50024 */ lw $a1, 0x24($sp)
|
|
/* 104BFC 7F0D00CC 8FA2001C */ lw $v0, 0x1c($sp)
|
|
.L7F0D00D0:
|
|
/* 104C00 7F0D00D0 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 104C04 7F0D00D4 27BD0020 */ addiu $sp, $sp, 0x20
|
|
/* 104C08 7F0D00D8 03E00008 */ jr $ra
|
|
/* 104C0C 7F0D00DC 00000000 */ nop
|
|
)
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef NONMATCHING
|
|
void response_from_command_string(void) {
|
|
|
|
}
|
|
#else
|
|
GLOBAL_ASM(
|
|
.text
|
|
glabel response_from_command_string
|
|
/* 104C10 7F0D00E0 3C0E8005 */ lui $t6, %hi(indy_ready)
|
|
/* 104C14 7F0D00E4 8DCEEAC8 */ lw $t6, %lo(indy_ready)($t6)
|
|
/* 104C18 7F0D00E8 27BDFFE0 */ addiu $sp, $sp, -0x20
|
|
/* 104C1C 7F0D00EC AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 104C20 7F0D00F0 15C00003 */ bnez $t6, .L7F0D0100
|
|
/* 104C24 7F0D00F4 00000000 */ nop
|
|
/* 104C28 7F0D00F8 10000006 */ b .L7F0D0114
|
|
/* 104C2C 7F0D00FC 00001025 */ move $v0, $zero
|
|
.L7F0D0100:
|
|
/* 104C30 7F0D0100 0FC3439D */ jal post_indyrescmd_1_B_2
|
|
/* 104C34 7F0D0104 00000000 */ nop
|
|
/* 104C38 7F0D0108 0FC34654 */ jal response_indyrescmd_1_C_2
|
|
/* 104C3C 7F0D010C 27A4001C */ addiu $a0, $sp, 0x1c
|
|
/* 104C40 7F0D0110 8FA2001C */ lw $v0, 0x1c($sp)
|
|
.L7F0D0114:
|
|
/* 104C44 7F0D0114 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 104C48 7F0D0118 27BD0020 */ addiu $sp, $sp, 0x20
|
|
/* 104C4C 7F0D011C 03E00008 */ jr $ra
|
|
/* 104C50 7F0D0120 00000000 */ nop
|
|
)
|
|
#endif
|
|
|
|
|
|
void sub_GAME_7F0D0124(void) {
|
|
if (indy_ready != 0)
|
|
{
|
|
rmon_debug_returns_neg_1();
|
|
}
|
|
return;
|
|
}
|
|
|
|
void send_indy_close_port_cmd(void) {
|
|
response_from_command_string("sleep 5; /etc/killall ghost gload");
|
|
}
|
|
|
|
|
|
|
|
|