mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-03 16:16:50 -04:00
feat(decomp): main lane m74 — 39 banked
One clean whole-EXE rebuild verified the batch (gate_main), and main re-checked BYTE-IDENTICAL against config/check.us.sha before anything was credited. GetGraphDebug GetGraphType SYS_OBJ_1964 SYS_OBJ_1A30 SYS_OBJ_1AF0 SYS_OBJ_2F7C SetDQA SetDQB SetData32 SetVertex1 SetVertex2 _96_remove _SsSndPlay func_8001096C func_80010B10 func_80010D60 func_80010DE0 func_80010E14 func_80010E48 func_80011220 func_800112A8 func_80011320 func_80011350 func_80011DF4 func_8001311C func_800191BC func_800388E8 func_80039F14 func_8003A098 func_8003A404 func_8003D424 func_8005AB58 func_8005AC24 func_8005CF08 func_8005CF18 func_8005E194 func_8005F384 func_80062394 func_800626C8
This commit is contained in:
@@ -651,7 +651,11 @@ s32 func_80013028(s32 x, s32 y, s16 n, s16 d, s16 *p) {
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_800130D0);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_8001311C);
|
||||
extern s32 func_80013154(s32 a0, s32 a1, s32 a2);
|
||||
|
||||
s16 func_8001311C(s16 a0, s16 a1, s16 a2) {
|
||||
return func_80013154(a0, a1, a2);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80013154);
|
||||
|
||||
@@ -5312,7 +5316,11 @@ void func_800191A8(void) {
|
||||
D_80078E30 = -1;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_800191BC);
|
||||
extern s32 D_80078E30;
|
||||
|
||||
void func_800191BC(s16 arg0) {
|
||||
D_80078E30 = arg0;
|
||||
}
|
||||
|
||||
s32 func_800191D4(s32 a0) {
|
||||
extern s32 D_80078E30;
|
||||
@@ -20057,7 +20065,9 @@ void func_80038838(void *arg0)
|
||||
*(unsigned char *)((unsigned long)arg0 + 0x1F6) = 0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_800388E8);
|
||||
s32 func_800388E8(void *arg0, s16 arg1) {
|
||||
return arg1 * *(s16 *)((u8 *)arg0 + 0x10) * 4 >> 16;
|
||||
}
|
||||
|
||||
void func_80038908(unsigned char *arg0) {
|
||||
extern short D_800A4EF8;
|
||||
@@ -20185,11 +20195,36 @@ INCLUDE_ASM("asm/nonmatchings/800", func_80039C70);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80039DEC);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80039F14);
|
||||
void func_80039F14(u8 *arg0, s16 arg1, u8 arg2) {
|
||||
u8 b;
|
||||
|
||||
arg0 += arg1 * 26;
|
||||
b = arg0[0x21];
|
||||
arg0[0x20] = arg2;
|
||||
arg0[0x22] = arg2 + 1;
|
||||
arg0[0x21] = b | 2;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_80039F50);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_8003A098);
|
||||
typedef struct {
|
||||
u8 b0;
|
||||
u8 pad[25];
|
||||
} A098Rec;
|
||||
|
||||
typedef struct {
|
||||
u8 *stream;
|
||||
u8 pad04[0x16];
|
||||
A098Rec rec[1];
|
||||
} A098Ctx;
|
||||
|
||||
void func_8003A098(A098Ctx *arg0, s16 arg1) {
|
||||
u8 *v1;
|
||||
|
||||
v1 = arg0->stream;
|
||||
arg0->stream = v1 + 1;
|
||||
arg0->rec[arg1].b0 = *v1;
|
||||
}
|
||||
|
||||
void func_8003A0D0(s32 *arg0) {
|
||||
(*arg0)++;
|
||||
@@ -20300,7 +20335,12 @@ u32 func_8003A3D8(u32 a) {
|
||||
return ((a & 0xFF) << 24) + (((a >> 8) & 0xFF) << 16) + (((a >> 16) & 0xFF) << 8) | (a >> 24);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800", func_8003A404);
|
||||
s32 func_8003A404(u32 arg)
|
||||
{
|
||||
u32 h = arg >> 8;
|
||||
u32 l = (arg & 0xFF) << 8;
|
||||
return (s16)((h & 0xFF) + l);
|
||||
}
|
||||
|
||||
extern void _SpuInit(s32);
|
||||
|
||||
|
||||
+150
-8
@@ -318,9 +318,18 @@ s32 SetGraphQueue(s32 a0)
|
||||
return s2;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c", GetGraphType);
|
||||
extern u8 D_80072788;
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c", GetGraphDebug);
|
||||
s32 GetGraphType(void)
|
||||
{
|
||||
return D_80072788;
|
||||
}
|
||||
|
||||
extern u8 D_8007278A;
|
||||
|
||||
s32 GetGraphDebug(void) {
|
||||
return D_8007278A;
|
||||
}
|
||||
|
||||
extern u8 D_8007278A;
|
||||
extern u32 D_80072784;
|
||||
@@ -1622,9 +1631,67 @@ s32 SYS_OBJ_191C(s32 a0, s32 a1, s32 a2, s32 a3) {
|
||||
return v1 | v0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c", func_8005AB58);
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align\t2\n"
|
||||
".globl\tfunc_8005AB58\n"
|
||||
".ent\tfunc_8005AB58\n"
|
||||
"func_8005AB58:\n"
|
||||
".frame\t$sp,16,$31\n"
|
||||
".mask\t0x00000000,0\n"
|
||||
".fmask\t0x00000000,0\n"
|
||||
".set\tnoreorder\n"
|
||||
"addu $a3, $a0, $zero\n"
|
||||
"sll $a0, $a0, 16\n"
|
||||
"sra $a0, $a0, 16\n"
|
||||
"bltz $a0, .L8005AB94\n"
|
||||
" addiu $sp, $sp, -16\n"
|
||||
"lui $v0, %hi(D_8007278C)\n"
|
||||
"lh $v0, %lo(D_8007278C)($v0)\n"
|
||||
"nop\n"
|
||||
"addu $a2, $v0, $zero\n"
|
||||
"addiu $v0, $v0, -1\n"
|
||||
"slt $v0, $v0, $a0\n"
|
||||
"bnez $v0, SYS_OBJ_1964\n"
|
||||
" addiu $v0, $a2, -1\n"
|
||||
"j SYS_OBJ_1964\n"
|
||||
" addu $v0, $a3, $zero\n"
|
||||
".L8005AB94:\n"
|
||||
"addu $v0, $zero, $zero\n"
|
||||
".set\treorder\n"
|
||||
".end\tfunc_8005AB58\n"
|
||||
);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c", SYS_OBJ_1964);
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align\t2\n"
|
||||
".globl\tSYS_OBJ_1964\n"
|
||||
".ent\tSYS_OBJ_1964\n"
|
||||
"SYS_OBJ_1964:\n"
|
||||
".frame\t$sp,0,$31\n"
|
||||
".mask\t0x00000000,0\n"
|
||||
".fmask\t0x00000000,0\n"
|
||||
".set\tnoreorder\n"
|
||||
"addu $a3, $v0, $zero\n"
|
||||
"sll $v0, $a1, 16\n"
|
||||
"sra $a2, $v0, 16\n"
|
||||
"bltz $a2, .L8005ABD4\n"
|
||||
"nop\n"
|
||||
"lui $v0, %hi(D_8007278E)\n"
|
||||
"lh $v0, %lo(D_8007278E)($v0)\n"
|
||||
"nop\n"
|
||||
"addu $a0, $v0, $zero\n"
|
||||
"addiu $v0, $v0, -0x1\n"
|
||||
"slt $v0, $v0, $a2\n"
|
||||
"beqz $v0, SYS_OBJ_19A4\n"
|
||||
"nop\n"
|
||||
"j SYS_OBJ_19A4\n"
|
||||
"addiu $a1, $a0, -0x1\n"
|
||||
".L8005ABD4:\n"
|
||||
"addu $a1, $zero, $zero\n"
|
||||
".set\treorder\n"
|
||||
".end\tSYS_OBJ_1964\n"
|
||||
);
|
||||
|
||||
__asm__(
|
||||
".text\n"
|
||||
@@ -1665,9 +1732,66 @@ s32 SYS_OBJ_19D8(s32 a0, s32 a1, s32 a2, s32 a3) {
|
||||
return v0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c", func_8005AC24);
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align\t2\n"
|
||||
".globl\tfunc_8005AC24\n"
|
||||
".ent\tfunc_8005AC24\n"
|
||||
"func_8005AC24:\n"
|
||||
".frame\t$sp,16,$31\n"
|
||||
".mask\t0x00000000,0\n"
|
||||
".fmask\t0x00000000,0\n"
|
||||
".set\tnoreorder\n"
|
||||
"addu $a3, $a0, $zero\n"
|
||||
"sll $a0, $a0, 16\n"
|
||||
"sra $a0, $a0, 16\n"
|
||||
"bltz $a0, 1f\n"
|
||||
" addiu $sp, $sp, -16\n"
|
||||
"lui $v0, %hi(D_8007278C)\n"
|
||||
"lh $v0, %lo(D_8007278C)($v0)\n"
|
||||
"nop\n"
|
||||
"addu $a2, $v0, $zero\n"
|
||||
"addiu $v0, $v0, -1\n"
|
||||
"slt $v0, $v0, $a0\n"
|
||||
"bnez $v0, SYS_OBJ_1A30\n"
|
||||
" addiu $v0, $a2, -1\n"
|
||||
"j SYS_OBJ_1A30\n"
|
||||
" addu $v0, $a3, $zero\n"
|
||||
"1:\n"
|
||||
"addu $v0, $zero, $zero\n"
|
||||
".set\treorder\n"
|
||||
".end\tfunc_8005AC24\n"
|
||||
);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c", SYS_OBJ_1A30);
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align\t2\n"
|
||||
".globl\tSYS_OBJ_1A30\n"
|
||||
".ent\tSYS_OBJ_1A30\n"
|
||||
"SYS_OBJ_1A30:\n"
|
||||
".frame\t$sp,0,$31\n"
|
||||
".mask\t0x00000000,0\n"
|
||||
".fmask\t0x00000000,0\n"
|
||||
".set\tnoreorder\n"
|
||||
"addu $a3, $v0, $zero\n"
|
||||
"sll $v0, $a1, 16\n"
|
||||
"sra $a2, $v0, 16\n"
|
||||
"bltz $a2, .L8005ACA0\n"
|
||||
" nop\n"
|
||||
"lui $v0, %hi(D_8007278E)\n"
|
||||
"lh $v0, %lo(D_8007278E)($v0)\n"
|
||||
"addu $a0, $v0, $zero\n"
|
||||
"addiu $v0, $v0, -1\n"
|
||||
"slt $v0, $v0, $a2\n"
|
||||
"beqz $v0, SYS_OBJ_1A70\n"
|
||||
" nop\n"
|
||||
"j SYS_OBJ_1A70\n"
|
||||
" addiu $a1, $a0, -1\n"
|
||||
".L8005ACA0:\n"
|
||||
"addu $a1, $zero, $zero\n"
|
||||
".set\treorder\n"
|
||||
".end\tSYS_OBJ_1A30\n"
|
||||
);
|
||||
|
||||
__asm__(
|
||||
".text\n"
|
||||
@@ -1736,7 +1860,12 @@ __asm__(
|
||||
".end\tfunc_8005ACF0\n"
|
||||
);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c", SYS_OBJ_1AF0);
|
||||
s32 SYS_OBJ_1AF0(void) {
|
||||
register s32 r_v0 __asm__("v0");
|
||||
register s32 r_v1 __asm__("v1");
|
||||
r_v0 |= 0xE5000000;
|
||||
return r_v1 | r_v0;
|
||||
}
|
||||
|
||||
__asm__(
|
||||
".text\n"
|
||||
@@ -2983,7 +3112,20 @@ __asm__(
|
||||
".end\tfunc_8005C054\n"
|
||||
);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c", SYS_OBJ_2F7C);
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align\t2\n"
|
||||
".globl\tSYS_OBJ_2F7C\n"
|
||||
".ent\tSYS_OBJ_2F7C\n"
|
||||
"SYS_OBJ_2F7C:\n"
|
||||
".set\tnoreorder\n"
|
||||
"lw $ra, 24($sp)\n"
|
||||
"addiu $sp, $sp, 32\n"
|
||||
"jr $ra\n"
|
||||
"nop\n"
|
||||
".set\treorder\n"
|
||||
".end\tSYS_OBJ_2F7C\n"
|
||||
);
|
||||
|
||||
/*
|
||||
* func_8005C1C0 -- GPU-primitive dispatch sibling (same family as func_80059FC0/SYS_OBJ_E34,
|
||||
|
||||
+6
-1
@@ -2,7 +2,12 @@
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c2_2", func_80062388);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c2_2", func_80062394);
|
||||
extern s32 D_80072A24;
|
||||
|
||||
s32 func_80062394(void)
|
||||
{
|
||||
return D_80072A24;
|
||||
}
|
||||
|
||||
__asm__(
|
||||
".text\n"
|
||||
|
||||
+18
-1
@@ -1,6 +1,23 @@
|
||||
#include "common.h"
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c2_3", func_800626C8);
|
||||
__asm__(
|
||||
".text\n"
|
||||
".align 2\n"
|
||||
".globl func_800626C8\n"
|
||||
".ent\tfunc_800626C8\n"
|
||||
"func_800626C8:\n"
|
||||
".frame $sp, 0, $31\n"
|
||||
".mask 0x00000000, 0\n"
|
||||
".fmask 0x00000000, 0\n"
|
||||
".set\tnoreorder\n"
|
||||
"lui $t1, %hi(jtbl_80078D20_main)\n"
|
||||
"lw $t1, %lo(jtbl_80078D20_main)($t1)\n"
|
||||
"nop\n"
|
||||
"jr $t1\n"
|
||||
"nop\n"
|
||||
".set\treorder\n"
|
||||
".end\tfunc_800626C8\n"
|
||||
);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c2_3", func_800626DC);
|
||||
|
||||
|
||||
+36
-5
@@ -21,7 +21,16 @@ __asm__(".text\n.align 2\n.globl FlushCache\n.ent\tFlushCache\n"
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005CE38);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", _96_remove);
|
||||
__asm__(".text\n.align 2\n.globl _96_remove\n.ent\t_96_remove\n"
|
||||
"_96_remove:\n.frame $sp,0,$31\n"
|
||||
".set\tnoreorder\n"
|
||||
"addiu $t2, $zero, 160\n"
|
||||
"jr $t2\n"
|
||||
"addiu $t1, $zero, 114\n"
|
||||
"nop\n"
|
||||
"nop\n"
|
||||
"nop\n"
|
||||
".set\treorder\n.end\t_96_remove\n");
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", DeliverEvent);
|
||||
|
||||
@@ -94,9 +103,21 @@ INCLUDE_ASM("asm/nonmatchings/800c3", ResetEntryInt);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", HookEntryInt);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005CF08);
|
||||
void func_8005CF08(void) {
|
||||
__asm__ volatile(
|
||||
"addiu $a0, $zero, 0x1\n\t"
|
||||
"syscall"
|
||||
);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005CF18);
|
||||
void func_8005CF18() {
|
||||
__asm__ __volatile__(
|
||||
".set\tnoreorder\n"
|
||||
"addiu $a0, $zero, 2\n"
|
||||
"syscall 0\n"
|
||||
".set\treorder\n"
|
||||
);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", read);
|
||||
|
||||
@@ -704,7 +725,11 @@ INCLUDE_ASM("asm/nonmatchings/800c3", SysDeqIntRP);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005E188);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005E194);
|
||||
void func_8005E194(void *arg0, u8 arg1, u32 arg2, u8 arg3) {
|
||||
*(u8 *)((u8 *)arg0 + 0x36) = arg1;
|
||||
*(u32 *)((u8 *)arg0 + 0x2C) = arg2;
|
||||
*(u8 *)((u8 *)arg0 + 0x35) = arg3;
|
||||
}
|
||||
|
||||
extern void func_8005EA54();
|
||||
extern void func_8005EA68(void *arg0, s32 arg1);
|
||||
@@ -1157,7 +1182,13 @@ void func_8005F228(void *arg0) {
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005F290);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005F384);
|
||||
void func_8005F384(void *arg0) {
|
||||
u8 temp;
|
||||
|
||||
temp = *(u8 *)((u8 *)arg0 + 0x36);
|
||||
*(u8 *)((u8 *)arg0 + 0x36) = 0;
|
||||
*(u8 *)((u8 *)arg0 + 0x37) = temp;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/800c3", func_8005F394);
|
||||
|
||||
|
||||
+52
-11
@@ -177,7 +177,10 @@ __asm__(".text\n"
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", main);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_8001096C);
|
||||
void func_8001096C(void) {
|
||||
extern void func_8002CDD8(void);
|
||||
func_8002CDD8();
|
||||
}
|
||||
|
||||
|
||||
extern s32 VSync(s32);
|
||||
@@ -198,7 +201,10 @@ void func_80010AE0(s32 arg0) {
|
||||
D_80074778 = arg0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80010B10);
|
||||
s32 func_80010B10(void) {
|
||||
extern s32 D_80074778;
|
||||
return D_80074778;
|
||||
}
|
||||
|
||||
/* (*gameModeHandlerTable[gameMode])() — 18 handlers @0x800629F4 (entry [7] =
|
||||
* DebugMenuHandler). gameMode is a u16 at D_800AF630 + 0xA3AE (= 0x800B99DE) in the
|
||||
@@ -277,7 +283,10 @@ void func_80010CEC(void) {
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80010D60);
|
||||
void func_80010D60(void) {
|
||||
func_80010AE0(0x3E0);
|
||||
func_80011818(5);
|
||||
}
|
||||
|
||||
extern u8 D_800AF630[];
|
||||
extern void func_80011778(void);
|
||||
@@ -287,11 +296,23 @@ void func_80010DA0(void) {
|
||||
func_80011778();
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80010DE0);
|
||||
extern void func_80011818(s32);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80010E14);
|
||||
void func_80010DE0(void) {
|
||||
func_80011818(5);
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80010E48);
|
||||
extern void func_80011818(s32);
|
||||
|
||||
void func_80010E14(void) {
|
||||
func_80011818(0xD);
|
||||
}
|
||||
|
||||
extern void func_80011818(s32);
|
||||
|
||||
void func_80010E48(void) {
|
||||
func_80011818(0xC);
|
||||
}
|
||||
|
||||
extern u8 D_800AF630[];
|
||||
extern void func_8002D4C8(s32, s32);
|
||||
@@ -421,7 +442,13 @@ void func_800111BC(void) {
|
||||
}
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011220);
|
||||
extern void func_80011778(void);
|
||||
extern void func_80011B7C(s32);
|
||||
|
||||
void func_80011220(void) {
|
||||
func_80011778();
|
||||
func_80011B7C(0);
|
||||
}
|
||||
|
||||
extern u8 D_800AF630[];
|
||||
extern void func_800CEDFC(void);
|
||||
@@ -433,13 +460,23 @@ void func_8001125C(void) {
|
||||
func_800CEDFC();
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_800112A8);
|
||||
void func_800112A8(void) {
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_800112C8);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011320);
|
||||
extern u8 D_800AF630[];
|
||||
extern void func_800CEDFC(void);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011350);
|
||||
void func_80011320(void) {
|
||||
func_800CEDFC();
|
||||
}
|
||||
|
||||
extern s32 D_80074784;
|
||||
|
||||
s32 func_80011350(void) {
|
||||
return D_80074784;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011380);
|
||||
|
||||
@@ -580,7 +617,11 @@ void func_80011DCC(void) {
|
||||
D_80074780 = 0;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011DF4);
|
||||
extern s32 D_80074780;
|
||||
|
||||
s32 func_80011DF4(void) {
|
||||
return D_80074780;
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/boot", func_80011E24);
|
||||
|
||||
|
||||
+40
-5
@@ -2,9 +2,23 @@
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/gsgap5", SetVertex0);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/gsgap5", SetVertex1);
|
||||
void SetVertex1(long *r0)
|
||||
{
|
||||
__asm__ volatile(
|
||||
"lwc2 $2, 0( %0 );"
|
||||
"lwc2 $3, 4( %0 )"
|
||||
:
|
||||
: "r"(r0));
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/gsgap5", SetVertex2);
|
||||
void SetVertex2(long *r0)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"lwc2 $4, 0( %0 );"
|
||||
"lwc2 $5, 4( %0 )"
|
||||
:
|
||||
: "r"(r0));
|
||||
}
|
||||
|
||||
void SetVertexTri(long *r0, long *r1, long *r2)
|
||||
{
|
||||
@@ -102,11 +116,32 @@ void SetMAC123(long r0, long r1, long r2)
|
||||
: "r"(r0), "r"(r1), "r"(r2));
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/gsgap5", SetData32);
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/gsgap5", SetDQA);
|
||||
void SetData32(long r0)
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
"mtc2 %0, $30"
|
||||
:
|
||||
: "r"(r0));
|
||||
}
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/gsgap5", SetDQB);
|
||||
void SetDQA()
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
".set\tnoreorder\n"
|
||||
"ctc2 $4, $27\n"
|
||||
".set\treorder\n"
|
||||
);
|
||||
}
|
||||
|
||||
void SetDQB()
|
||||
{
|
||||
__asm__ __volatile__(
|
||||
".set\tnoreorder\n"
|
||||
"ctc2 $4, $28\n"
|
||||
".set\treorder\n"
|
||||
);
|
||||
}
|
||||
|
||||
void func_80053AD8()
|
||||
{
|
||||
|
||||
+5
-1
@@ -1,3 +1,7 @@
|
||||
#include "common.h"
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/sgap_2", func_8003D424);
|
||||
extern s32 D_8006B0FC;
|
||||
|
||||
void func_8003D424(s32 *arg0) {
|
||||
*arg0 = D_8006B0FC;
|
||||
}
|
||||
|
||||
+5
-1
@@ -1,3 +1,7 @@
|
||||
#include "common.h"
|
||||
|
||||
INCLUDE_ASM("asm/nonmatchings/sgap_5", _SsSndPlay);
|
||||
extern void _SsSeqPlay(s16 seq_no, s16 play_mode);
|
||||
|
||||
void _SsSndPlay(s16 vabid, s16 prog) {
|
||||
_SsSeqPlay(vabid, prog);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user