mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-07-30 23:54:40 -04:00
Decompile dmaStart
This commit is contained in:
+5
-5
@@ -52,7 +52,7 @@ void func0f166eb4(void *dst, u32 scratchlen, u32 *romaddrptr, struct fileinfo *i
|
||||
|
||||
if (scratchlen == 0) {
|
||||
// DMA with no inflate
|
||||
func0000d410(dst, (void *)*romaddrptr, romsize);
|
||||
dmaExec(dst, (void *)*romaddrptr, romsize);
|
||||
} else {
|
||||
// DMA the compressed data to scratch space then inflate
|
||||
u32 scratchaddr = ((u32)dst + scratchlen) - (romsize + 7 & 0xfffffff8);
|
||||
@@ -60,7 +60,7 @@ void func0f166eb4(void *dst, u32 scratchlen, u32 *romaddrptr, struct fileinfo *i
|
||||
if (scratchaddr - (u32)dst < 8) {
|
||||
info->size = 0;
|
||||
} else {
|
||||
func0000d410((void *)scratchaddr, (void *)*romaddrptr, romsize);
|
||||
dmaExec((void *)scratchaddr, (void *)*romaddrptr, romsize);
|
||||
info->size = ALIGN16(rzipInflate((void *)scratchaddr, dst, buffer));
|
||||
}
|
||||
}
|
||||
@@ -119,7 +119,7 @@ void func0f166ff0(u16 filenum, void *memaddr, s32 offset, u32 len)
|
||||
u32 stack[2];
|
||||
|
||||
if (fileGetRomSizeByTableAddress((u32 *)&filetable[filenum])) {
|
||||
func0000d410(memaddr, (void *)((u32)filetable[filenum] + offset), len);
|
||||
dmaExec(memaddr, (void *)((u32)filetable[filenum] + offset), len);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ glabel fileGetInflatedLength
|
||||
/* f1670ac: 00000000 */ nop
|
||||
.L0f1670b0:
|
||||
/* f1670b0: 02012024 */ and $a0,$s0,$at
|
||||
/* f1670b4: 0c003504 */ jal func0000d410
|
||||
/* f1670b4: 0c003504 */ jal dmaExec
|
||||
/* f1670b8: 00808025 */ or $s0,$a0,$zero
|
||||
.L0f1670bc:
|
||||
/* f1670bc: 0c002277 */ jal rzipIs1173
|
||||
@@ -189,7 +189,7 @@ glabel fileGetInflatedLength
|
||||
// stub0f175f58(func0f166ea8((u32 *) &filetable[filenum]), (u32)alignedbuffer, 16);
|
||||
// } else {
|
||||
// alignedbuffer = (u8 *)(((u32)alignedbuffer) & ~0xf);
|
||||
// func0000d410((void *)alignedbuffer, romaddr, 0x40);
|
||||
// dmaExec((void *)alignedbuffer, romaddr, 0x40);
|
||||
// }
|
||||
//
|
||||
// if (rzipIs1173((void *)alignedbuffer)) {
|
||||
|
||||
@@ -21,5 +21,5 @@ void loadTextureList(void)
|
||||
|
||||
g_Textures = malloc(len, MEMPOOL_PERMANENT);
|
||||
|
||||
func0000d410(g_Textures, &_textureslistSegmentRomStart, len);
|
||||
dmaExec(g_Textures, &_textureslistSegmentRomStart, len);
|
||||
}
|
||||
|
||||
@@ -700,7 +700,7 @@ void getitleInit(void *addr, u32 arg1)
|
||||
var80062498 = 0;
|
||||
var8009cc90 = addr;
|
||||
|
||||
func0000d410(var8009cc90, &_getitleSegmentRomStart, ALIGN64(len));
|
||||
dmaExec(var8009cc90, &_getitleSegmentRomStart, ALIGN64(len));
|
||||
}
|
||||
|
||||
Gfx *getitleRender(Gfx *gdl)
|
||||
|
||||
@@ -85,7 +85,7 @@ void fontLoad(u8 *romstart, u8 *romend, struct font **font1, struct font2a4 **fo
|
||||
struct font *font = malloc(len, MEMPOOL_STAGE);
|
||||
struct font2a4 *font2a4 = font->unk2a4;
|
||||
|
||||
func0000d410(font, romstart, len);
|
||||
dmaExec(font, romstart, len);
|
||||
|
||||
// Convert pointers
|
||||
for (i = 0; i < 94; i++) {
|
||||
|
||||
+2
-2
@@ -221,7 +221,7 @@ glabel func0f16e3fc
|
||||
/* f16e5c8: 0000c012 */ mflo $t8
|
||||
/* f16e5cc: 03192821 */ addu $a1,$t8,$t9
|
||||
/* f16e5d0: afa80024 */ sw $t0,0x24($sp)
|
||||
/* f16e5d4: 0c003504 */ jal func0000d410
|
||||
/* f16e5d4: 0c003504 */ jal dmaExec
|
||||
/* f16e5d8: 010f2021 */ addu $a0,$t0,$t7
|
||||
/* f16e5dc: 3c0e800b */ lui $t6,%hi(var800aabb4)
|
||||
/* f16e5e0: 8fa80024 */ lw $t0,0x24($sp)
|
||||
@@ -273,7 +273,7 @@ glabel func0f16e3fc
|
||||
/* f16e694: 2718fb40 */ addiu $t8,$t8,-1216
|
||||
/* f16e698: 000e79c0 */ sll $t7,$t6,0x7
|
||||
/* f16e69c: 01f82821 */ addu $a1,$t7,$t8
|
||||
/* f16e6a0: 0c003504 */ jal func0000d410
|
||||
/* f16e6a0: 0c003504 */ jal dmaExec
|
||||
/* f16e6a4: afa80024 */ sw $t0,0x24($sp)
|
||||
/* f16e6a8: 3c19800b */ lui $t9,%hi(var800aabb4)
|
||||
/* f16e6ac: 8fa80024 */ lw $t0,0x24($sp)
|
||||
|
||||
@@ -106,7 +106,7 @@ void tagsAllocatePtrs(void)
|
||||
// Read 4KB from a random ROM location within 128KB from the start of
|
||||
// the ROM, and write it to a random memory location between 0x80010000
|
||||
// and 0x80030ff8. This will corrupt instructions in the lib segment.
|
||||
func0000d410((u8 *)((random() & 0x1fff8) + 0x80010000), (u8 *)(random() & 0x1fffe), 0x1000);
|
||||
dmaExec((u8 *)((random() & 0x1fff8) + 0x80010000), (u8 *)(random() & 0x1fffe), 0x1000);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
+3
-3
@@ -32586,7 +32586,7 @@ glabel func0f082d74
|
||||
/* f082da0: afa50020 */ sw $a1,0x20($sp)
|
||||
/* f082da4: 00e02025 */ or $a0,$a3,$zero
|
||||
/* f082da8: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* f082dac: 0c003504 */ jal func0000d410
|
||||
/* f082dac: 0c003504 */ jal dmaExec
|
||||
/* f082db0: afa70074 */ sw $a3,0x74($sp)
|
||||
/* f082db4: 3c098007 */ lui $t1,%hi(var8006abbc)
|
||||
/* f082db8: 8129abbc */ lb $t1,%lo(var8006abbc)($t1)
|
||||
@@ -32613,7 +32613,7 @@ glabel func0f082d74
|
||||
/* f082e04: 8faa0020 */ lw $t2,0x20($sp)
|
||||
/* f082e08: afa30084 */ sw $v1,0x84($sp)
|
||||
/* f082e0c: afa70074 */ sw $a3,0x74($sp)
|
||||
/* f082e10: 0c003504 */ jal func0000d410
|
||||
/* f082e10: 0c003504 */ jal dmaExec
|
||||
/* f082e14: 01482821 */ addu $a1,$t2,$t0
|
||||
/* f082e18: 3c098007 */ lui $t1,%hi(var8006abbc)
|
||||
/* f082e1c: 8129abbc */ lb $t1,%lo(var8006abbc)($t1)
|
||||
@@ -34951,7 +34951,7 @@ glabel func0f084cf0
|
||||
/* f084de8: 39e4000f */ xori $a0,$t7,0xf
|
||||
/* f084dec: 00808025 */ or $s0,$a0,$zero
|
||||
/* f084df0: 00402825 */ or $a1,$v0,$zero
|
||||
/* f084df4: 0c003504 */ jal func0000d410
|
||||
/* f084df4: 0c003504 */ jal dmaExec
|
||||
/* f084df8: 24060010 */ addiu $a2,$zero,0x10
|
||||
/* f084dfc: 3c04c757 */ lui $a0,0xc757
|
||||
/* f084e00: 0fc21338 */ jal add43214321
|
||||
|
||||
+1
-1
@@ -4032,7 +4032,7 @@ glabel func0f15b534
|
||||
/* f15b7e0: 3c010001 */ lui $at,0x1
|
||||
/* f15b7e4: 3421fffe */ ori $at,$at,0xfffe
|
||||
/* f15b7e8: 00412824 */ and $a1,$v0,$at
|
||||
/* f15b7ec: 0c003504 */ jal func0000d410
|
||||
/* f15b7ec: 0c003504 */ jal dmaExec
|
||||
/* f15b7f0: 24060040 */ addiu $a2,$zero,0x40
|
||||
.L0f15b7f4:
|
||||
/* f15b7f4: 3c04800a */ lui $a0,%hi(var800a491c)
|
||||
|
||||
+3
-3
@@ -5443,7 +5443,7 @@ glabel func0f173010
|
||||
/* f173108: 00065902 */ srl $t3,$a2,0x4
|
||||
/* f17310c: 000b3100 */ sll $a2,$t3,0x4
|
||||
/* f173110: 032a2821 */ addu $a1,$t9,$t2
|
||||
/* f173114: 0c003504 */ jal func0000d410
|
||||
/* f173114: 0c003504 */ jal dmaExec
|
||||
/* f173118: afaf0044 */ sw $t7,0x44($sp)
|
||||
/* f17311c: 8fa30044 */ lw $v1,0x44($sp)
|
||||
/* f173120: 8fac002c */ lw $t4,0x2c($sp)
|
||||
@@ -5805,7 +5805,7 @@ glabel texturesLoadConfigs
|
||||
/* f173600: ac620000 */ sw $v0,0x0($v1)
|
||||
/* f173604: 24a5b270 */ addiu $a1,$a1,%lo(_textureconfigSegmentRomStart)
|
||||
/* f173608: 00402025 */ or $a0,$v0,$zero
|
||||
/* f17360c: 0c003504 */ jal func0000d410
|
||||
/* f17360c: 0c003504 */ jal dmaExec
|
||||
/* f173610: 02203025 */ or $a2,$s1,$zero
|
||||
/* f173614: 3c18800b */ lui $t8,%hi(g_TextureConfigSegment)
|
||||
/* f173618: 8f18b554 */ lw $t8,%lo(g_TextureConfigSegment)($t8)
|
||||
@@ -6083,7 +6083,7 @@ glabel texturesLoadConfigs
|
||||
// s32 i;
|
||||
//
|
||||
// g_TextureConfigSegment = malloc(len, MEMPOOL_STAGE);
|
||||
// func0000d410(g_TextureConfigSegment, &_textureconfigSegmentRomStart, len);
|
||||
// dmaExec(g_TextureConfigSegment, &_textureconfigSegmentRomStart, len);
|
||||
//
|
||||
// var800ab550 = (u32)((u32)g_TextureConfigSegment - (u32)&_textureconfigSegmentStart);
|
||||
// var800ab564 = (Gfx *)((u32)g_TextureConfigSegment - (u32)&_textureconfigSegmentStart + 0x000); // gdl000
|
||||
|
||||
+4
-4
@@ -7164,10 +7164,10 @@ u32 var80094ad0 = 0;
|
||||
u32 var80094ad4 = 0;
|
||||
u32 var80094ad8 = 0;
|
||||
u32 var80094adc = 0;
|
||||
volatile u32 var80094ae0 = 0;
|
||||
volatile u32 g_DmaNumSlotsBusy = 0;
|
||||
u32 var80094ae4 = 0;
|
||||
struct var80094ae8 var80094ae8[32] = {0};
|
||||
u8 var80094de8[32] = {0};
|
||||
OSIoMesg g_DmaIoMsgs[32] = {0};
|
||||
u8 g_DmaSlotsBusy[32] = {0};
|
||||
OSMesg var80094e08 = NULL;
|
||||
u32 var80094e0c = 0;
|
||||
u32 var80094e10 = 0;
|
||||
@@ -7200,7 +7200,7 @@ u32 var80094e78 = 0;
|
||||
u32 var80094e7c = 0;
|
||||
u32 var80094e80 = 0;
|
||||
u32 var80094e84 = 0;
|
||||
OSMesgQueue var80094e88 = {0};
|
||||
OSMesgQueue g_DmaMesgQueue = {0};
|
||||
u32 var80094ea0 = 0;
|
||||
u32 var80094ea4 = 0;
|
||||
u32 var80094ea8 = 0;
|
||||
|
||||
@@ -61,7 +61,7 @@ typedef struct
|
||||
/*0x08*/ void *dramAddr;
|
||||
/*0x0C*/ u32 devAddr;
|
||||
/*0x10*/ u32 size;
|
||||
//OSPiHandle *piHandle; //from the official definition
|
||||
OSPiHandle *piHandle; //from the official definition
|
||||
} OSIoMesg;
|
||||
|
||||
typedef struct {
|
||||
|
||||
@@ -391,11 +391,11 @@ extern OSThread g_FaultThread;
|
||||
extern u32 g_FaultSp;
|
||||
extern OSMesgQueue g_FaultMesgQueue;
|
||||
extern OSMesg g_FaultMesg;
|
||||
extern volatile u32 var80094ae0;
|
||||
extern struct var80094ae8 var80094ae8[32];
|
||||
extern u8 var80094de8[32];
|
||||
extern volatile u32 g_DmaNumSlotsBusy;
|
||||
extern OSIoMesg g_DmaIoMsgs[32];
|
||||
extern volatile u8 g_DmaSlotsBusy[32];
|
||||
extern OSMesg var80094e08;
|
||||
extern OSMesgQueue var80094e88;
|
||||
extern OSMesgQueue g_DmaMesgQueue;
|
||||
extern u32 var80094ea0;
|
||||
extern u32 var80094ea4;
|
||||
extern u32 var80094ea8;
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
#include "types.h"
|
||||
|
||||
void dmaInit(void);
|
||||
void func0000d0f8(void *memaddr, void *romaddr, u32 len, bool arg3);
|
||||
void dmaStart(void *memaddr, u32 romaddr, u32 len, bool priority);
|
||||
u32 xorDeadbeef(u32 value);
|
||||
u32 xorDeadbabe(u32 value);
|
||||
void dmaCheckPiracy(void *memaddr, u32 len);
|
||||
void func0000d350(void);
|
||||
void func0000d410(void *memaddr, void *romaddr, u32 len);
|
||||
void func0000d44c(void *memaddr, void *romaddr, u32 len);
|
||||
void dmaWait(void);
|
||||
void dmaExec(void *memaddr, void *romaddr, u32 len);
|
||||
void dmaExecHighPriority(void *memaddr, void *romaddr, u32 len);
|
||||
void *func0000d488(void *memaddr, void *romaddr, u32 len);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -6980,13 +6980,4 @@ struct animationdefinition {
|
||||
u8 flags;
|
||||
};
|
||||
|
||||
struct var80094ae8 {
|
||||
u32 unk00;
|
||||
u32 unk04;
|
||||
u32 unk08;
|
||||
u32 unk0c;
|
||||
u32 unk10;
|
||||
u32 unk14;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+3
-3
@@ -87,7 +87,7 @@ glabel func000070d0
|
||||
/* 71d8: 02c0a025 */ or $s4,$s6,$zero
|
||||
/* 71dc: aea40000 */ sw $a0,0x0($s5)
|
||||
/* 71e0: 02402825 */ or $a1,$s2,$zero
|
||||
/* 71e4: 0c003504 */ jal func0000d410
|
||||
/* 71e4: 0c003504 */ jal dmaExec
|
||||
/* 71e8: 39c6000f */ xori $a2,$t6,0xf
|
||||
/* 71ec: 240bfff0 */ addiu $t3,$zero,-16
|
||||
/* 71f0: 12c0000c */ beqz $s6,.L00007224
|
||||
@@ -197,7 +197,7 @@ glabel func000070d0
|
||||
/* 7370: 39e6000f */ xori $a2,$t7,0xf
|
||||
/* 7374: 02402825 */ or $a1,$s2,$zero
|
||||
/* 7378: afb61474 */ sw $s6,0x1474($sp)
|
||||
/* 737c: 0c003504 */ jal func0000d410
|
||||
/* 737c: 0c003504 */ jal dmaExec
|
||||
/* 7380: afb30054 */ sw $s3,0x54($sp)
|
||||
/* 7384: 8fa31474 */ lw $v1,0x1474($sp)
|
||||
/* 7388: 12c0000b */ beqz $s6,.L000073b8
|
||||
@@ -230,7 +230,7 @@ glabel func000070d0
|
||||
/* 73e8: 01e53023 */ subu $a2,$t7,$a1
|
||||
/* 73ec: 24c6000f */ addiu $a2,$a2,0xf
|
||||
/* 73f0: 34d8000f */ ori $t8,$a2,0xf
|
||||
/* 73f4: 0c003504 */ jal func0000d410
|
||||
/* 73f4: 0c003504 */ jal dmaExec
|
||||
/* 73f8: 3b06000f */ xori $a2,$t8,0xf
|
||||
/* 73fc: 8fa40048 */ lw $a0,0x48($sp)
|
||||
/* 7400: 02402825 */ or $a1,$s2,$zero
|
||||
|
||||
+58
-128
@@ -12,129 +12,59 @@
|
||||
#include "types.h"
|
||||
|
||||
u8 g_LoadState = 0;
|
||||
u32 var8005d9a4 = 0x00000000;
|
||||
u32 var8005d9a8 = 0x00000000;
|
||||
u32 var8005d9ac = 0x00000000;
|
||||
|
||||
void dmaInit(void)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAYCOUNT(var80094de8); i++) {
|
||||
var80094de8[i] = 0;
|
||||
for (i = 0; i < ARRAYCOUNT(g_DmaSlotsBusy); i++) {
|
||||
g_DmaSlotsBusy[i] = 0;
|
||||
}
|
||||
|
||||
var80094ae0 = 0;
|
||||
g_DmaNumSlotsBusy = 0;
|
||||
|
||||
osCreateMesgQueue(&var80094e88, &var80094e08, 0x20);
|
||||
osCreateMesgQueue(&g_DmaMesgQueue, &var80094e08, 0x20);
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func0000d0f8
|
||||
/* d0f8: 27bdffa8 */ addiu $sp,$sp,-88
|
||||
/* d0fc: afb70044 */ sw $s7,0x44($sp)
|
||||
/* d100: 3c178009 */ lui $s7,%hi(var80094ae0)
|
||||
/* d104: 26f74ae0 */ addiu $s7,$s7,%lo(var80094ae0)
|
||||
/* d108: 8eee0000 */ lw $t6,0x0($s7)
|
||||
/* d10c: afb40038 */ sw $s4,0x38($sp)
|
||||
/* d110: afb30034 */ sw $s3,0x34($sp)
|
||||
/* d114: afb00028 */ sw $s0,0x28($sp)
|
||||
/* d118: 00c08025 */ or $s0,$a2,$zero
|
||||
/* d11c: 00809825 */ or $s3,$a0,$zero
|
||||
/* d120: 00a0a025 */ or $s4,$a1,$zero
|
||||
/* d124: afbf004c */ sw $ra,0x4c($sp)
|
||||
/* d128: afbe0048 */ sw $s8,0x48($sp)
|
||||
/* d12c: afb60040 */ sw $s6,0x40($sp)
|
||||
/* d130: afb5003c */ sw $s5,0x3c($sp)
|
||||
/* d134: afb20030 */ sw $s2,0x30($sp)
|
||||
/* d138: afb1002c */ sw $s1,0x2c($sp)
|
||||
/* d13c: 11c00003 */ beqz $t6,.L0000d14c
|
||||
/* d140: afa70064 */ sw $a3,0x64($sp)
|
||||
/* d144: 0c0034d4 */ jal func0000d350
|
||||
/* d148: 00000000 */ nop
|
||||
.L0000d14c:
|
||||
/* d14c: 3c010008 */ lui $at,0x8
|
||||
/* d150: 0201082b */ sltu $at,$s0,$at
|
||||
/* d154: 10200005 */ beqz $at,.L0000d16c
|
||||
/* d158: 02602025 */ or $a0,$s3,$zero
|
||||
/* d15c: 320f3fff */ andi $t7,$s0,0x3fff
|
||||
/* d160: 0010f382 */ srl $s8,$s0,0xe
|
||||
/* d164: 10000003 */ b .L0000d174
|
||||
/* d168: afaf0050 */ sw $t7,0x50($sp)
|
||||
.L0000d16c:
|
||||
/* d16c: 0000f025 */ or $s8,$zero,$zero
|
||||
/* d170: afb00050 */ sw $s0,0x50($sp)
|
||||
.L0000d174:
|
||||
/* d174: 0c013920 */ jal osInvalDCache
|
||||
/* d178: 02002825 */ or $a1,$s0,$zero
|
||||
/* d17c: 13c0001b */ beqz $s8,.L0000d1ec
|
||||
/* d180: 00009025 */ or $s2,$zero,$zero
|
||||
/* d184: 3c108009 */ lui $s0,%hi(var80094de8)
|
||||
/* d188: 3c118009 */ lui $s1,%hi(var80094ae8)
|
||||
/* d18c: 3c168009 */ lui $s6,%hi(var80094e88)
|
||||
/* d190: 26d64e88 */ addiu $s6,$s6,%lo(var80094e88)
|
||||
/* d194: 26314ae8 */ addiu $s1,$s1,%lo(var80094ae8)
|
||||
/* d198: 26104de8 */ addiu $s0,$s0,%lo(var80094de8)
|
||||
/* d19c: 24150001 */ addiu $s5,$zero,0x1
|
||||
.L0000d1a0:
|
||||
/* d1a0: a2150000 */ sb $s5,0x0($s0)
|
||||
/* d1a4: 8ee20000 */ lw $v0,0x0($s7)
|
||||
/* d1a8: 24194000 */ addiu $t9,$zero,0x4000
|
||||
/* d1ac: afb90014 */ sw $t9,0x14($sp)
|
||||
/* d1b0: 24580001 */ addiu $t8,$v0,0x1
|
||||
/* d1b4: aef80000 */ sw $t8,0x0($s7)
|
||||
/* d1b8: 02202025 */ or $a0,$s1,$zero
|
||||
/* d1bc: 8fa50064 */ lw $a1,0x64($sp)
|
||||
/* d1c0: 00003025 */ or $a2,$zero,$zero
|
||||
/* d1c4: 02803825 */ or $a3,$s4,$zero
|
||||
/* d1c8: afb30010 */ sw $s3,0x10($sp)
|
||||
/* d1cc: 0c01394c */ jal osPiStartDma
|
||||
/* d1d0: afb60018 */ sw $s6,0x18($sp)
|
||||
/* d1d4: 26520001 */ addiu $s2,$s2,0x1
|
||||
/* d1d8: 26100001 */ addiu $s0,$s0,0x1
|
||||
/* d1dc: 26310018 */ addiu $s1,$s1,0x18
|
||||
/* d1e0: 26944000 */ addiu $s4,$s4,0x4000
|
||||
/* d1e4: 165effee */ bne $s2,$s8,.L0000d1a0
|
||||
/* d1e8: 26734000 */ addiu $s3,$s3,0x4000
|
||||
.L0000d1ec:
|
||||
/* d1ec: 8fa30050 */ lw $v1,0x50($sp)
|
||||
/* d1f0: 3c168009 */ lui $s6,%hi(var80094e88)
|
||||
/* d1f4: 26d64e88 */ addiu $s6,$s6,%lo(var80094e88)
|
||||
/* d1f8: 10600014 */ beqz $v1,.L0000d24c
|
||||
/* d1fc: 24150001 */ addiu $s5,$zero,0x1
|
||||
/* d200: 3c018009 */ lui $at,%hi(var80094de8)
|
||||
/* d204: 00320821 */ addu $at,$at,$s2
|
||||
/* d208: a0354de8 */ sb $s5,%lo(var80094de8)($at)
|
||||
/* d20c: 8ee20000 */ lw $v0,0x0($s7)
|
||||
/* d210: 00124880 */ sll $t1,$s2,0x2
|
||||
/* d214: 01324823 */ subu $t1,$t1,$s2
|
||||
/* d218: 3c0a8009 */ lui $t2,%hi(var80094ae8)
|
||||
/* d21c: 254a4ae8 */ addiu $t2,$t2,%lo(var80094ae8)
|
||||
/* d220: 000948c0 */ sll $t1,$t1,0x3
|
||||
/* d224: 24480001 */ addiu $t0,$v0,0x1
|
||||
/* d228: aee80000 */ sw $t0,0x0($s7)
|
||||
/* d22c: 012a2021 */ addu $a0,$t1,$t2
|
||||
/* d230: 8fa50064 */ lw $a1,0x64($sp)
|
||||
/* d234: 00003025 */ or $a2,$zero,$zero
|
||||
/* d238: 02803825 */ or $a3,$s4,$zero
|
||||
/* d23c: afb30010 */ sw $s3,0x10($sp)
|
||||
/* d240: afa30014 */ sw $v1,0x14($sp)
|
||||
/* d244: 0c01394c */ jal osPiStartDma
|
||||
/* d248: afb60018 */ sw $s6,0x18($sp)
|
||||
.L0000d24c:
|
||||
/* d24c: 8fbf004c */ lw $ra,0x4c($sp)
|
||||
/* d250: 8fb00028 */ lw $s0,0x28($sp)
|
||||
/* d254: 8fb1002c */ lw $s1,0x2c($sp)
|
||||
/* d258: 8fb20030 */ lw $s2,0x30($sp)
|
||||
/* d25c: 8fb30034 */ lw $s3,0x34($sp)
|
||||
/* d260: 8fb40038 */ lw $s4,0x38($sp)
|
||||
/* d264: 8fb5003c */ lw $s5,0x3c($sp)
|
||||
/* d268: 8fb60040 */ lw $s6,0x40($sp)
|
||||
/* d26c: 8fb70044 */ lw $s7,0x44($sp)
|
||||
/* d270: 8fbe0048 */ lw $s8,0x48($sp)
|
||||
/* d274: 03e00008 */ jr $ra
|
||||
/* d278: 27bd0058 */ addiu $sp,$sp,0x58
|
||||
);
|
||||
void dmaStart(void *memaddr, u32 romaddr, u32 len, bool priority)
|
||||
{
|
||||
u32 numiterations;
|
||||
u32 remainder;
|
||||
s32 i;
|
||||
|
||||
if (g_DmaNumSlotsBusy) {
|
||||
dmaWait();
|
||||
}
|
||||
|
||||
if (len < 0x4000 * ARRAYCOUNT(g_DmaIoMsgs)) {
|
||||
numiterations = len / 0x4000;
|
||||
remainder = len % 0x4000;
|
||||
} else {
|
||||
// DMA size is 0x80000 or more. It won't fit in the queue, so do it
|
||||
// all in one call to osPiStartDma using the remainder variable.
|
||||
numiterations = 0;
|
||||
remainder = len;
|
||||
}
|
||||
|
||||
osInvalDCache(memaddr, len);
|
||||
|
||||
for (i = 0; i != numiterations; i++) {
|
||||
g_DmaSlotsBusy[i] = true;
|
||||
g_DmaNumSlotsBusy++;
|
||||
|
||||
osPiStartDma(&g_DmaIoMsgs[i], priority, 0, romaddr, memaddr, 0x4000, &g_DmaMesgQueue);
|
||||
|
||||
romaddr += 0x4000;
|
||||
memaddr = (void *)((u32)memaddr + 0x4000);
|
||||
}
|
||||
|
||||
if (remainder) {
|
||||
g_DmaSlotsBusy[i] = true;
|
||||
g_DmaNumSlotsBusy++;
|
||||
|
||||
osPiStartDma(&g_DmaIoMsgs[i], priority, 0, romaddr, memaddr, remainder, &g_DmaMesgQueue);
|
||||
}
|
||||
}
|
||||
|
||||
u32 xorDeadbeef(u32 value)
|
||||
{
|
||||
@@ -178,37 +108,37 @@ void dmaCheckPiracy(void *memaddr, u32 len)
|
||||
}
|
||||
}
|
||||
|
||||
void func0000d350(void)
|
||||
void dmaWait(void)
|
||||
{
|
||||
u32 stack;
|
||||
struct var80094ae8 *msg;
|
||||
OSIoMesg *msg;
|
||||
s32 i;
|
||||
|
||||
while (var80094ae0) {
|
||||
osRecvMesg(&var80094e88, (OSMesg) &msg, OS_MESG_BLOCK);
|
||||
while (g_DmaNumSlotsBusy) {
|
||||
osRecvMesg(&g_DmaMesgQueue, (OSMesg) &msg, OS_MESG_BLOCK);
|
||||
|
||||
for (i = 0; i < ARRAYCOUNT(var80094ae8); i++) {
|
||||
if (&var80094ae8[i] == msg) {
|
||||
for (i = 0; i < ARRAYCOUNT(g_DmaIoMsgs); i++) {
|
||||
if (&g_DmaIoMsgs[i] == msg) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var80094de8[i] = 0;
|
||||
var80094ae0--;
|
||||
g_DmaSlotsBusy[i] = false;
|
||||
g_DmaNumSlotsBusy--;
|
||||
}
|
||||
}
|
||||
|
||||
void func0000d410(void *memaddr, void *romaddr, u32 len)
|
||||
void dmaExec(void *memaddr, void *romaddr, u32 len)
|
||||
{
|
||||
func0000d0f8(memaddr, romaddr, len, false);
|
||||
func0000d350();
|
||||
dmaStart(memaddr, (u32) romaddr, len, false);
|
||||
dmaWait();
|
||||
dmaCheckPiracy(memaddr, len);
|
||||
}
|
||||
|
||||
void func0000d44c(void *memaddr, void *romaddr, u32 len)
|
||||
void dmaExecHighPriority(void *memaddr, void *romaddr, u32 len)
|
||||
{
|
||||
func0000d0f8(memaddr, romaddr, len, true);
|
||||
func0000d350();
|
||||
dmaStart(memaddr, (u32) romaddr, len, true);
|
||||
dmaWait();
|
||||
dmaCheckPiracy(memaddr, len);
|
||||
}
|
||||
|
||||
@@ -243,7 +173,7 @@ glabel func0000d488
|
||||
/* d4ec: 3b06000f */ xori $a2,$t8,0xf
|
||||
/* d4f0: afa4001c */ sw $a0,0x1c($sp)
|
||||
/* d4f4: afa30018 */ sw $v1,0x18($sp)
|
||||
/* d4f8: 0c003504 */ jal func0000d410
|
||||
/* d4f8: 0c003504 */ jal dmaExec
|
||||
/* d4fc: 01c02825 */ or $a1,$t6,$zero
|
||||
/* d500: 8fa30018 */ lw $v1,0x18($sp)
|
||||
/* d504: 8fa4001c */ lw $a0,0x1c($sp)
|
||||
|
||||
+19
-19
@@ -785,18 +785,18 @@ glabel func0000eb2c
|
||||
/* eb68: ae200000 */ sw $zero,0x0($s1)
|
||||
/* eb6c: 00809025 */ or $s2,$a0,$zero
|
||||
/* eb70: 02002825 */ or $a1,$s0,$zero
|
||||
/* eb74: 0c003504 */ jal func0000d410
|
||||
/* eb74: 0c003504 */ jal dmaExec
|
||||
/* eb78: 24060100 */ addiu $a2,$zero,0x100
|
||||
/* eb7c: 8e580004 */ lw $t8,0x4($s2)
|
||||
/* eb80: 02402025 */ or $a0,$s2,$zero
|
||||
/* eb84: 24060100 */ addiu $a2,$zero,0x100
|
||||
/* eb88: 0c003504 */ jal func0000d410
|
||||
/* eb88: 0c003504 */ jal dmaExec
|
||||
/* eb8c: 02182821 */ addu $a1,$s0,$t8
|
||||
/* eb90: 8e59000c */ lw $t9,0xc($s2)
|
||||
/* eb94: 02402025 */ or $a0,$s2,$zero
|
||||
/* eb98: 24060100 */ addiu $a2,$zero,0x100
|
||||
/* eb9c: 0219a021 */ addu $s4,$s0,$t9
|
||||
/* eba0: 0c003504 */ jal func0000d410
|
||||
/* eba0: 0c003504 */ jal dmaExec
|
||||
/* eba4: 02802825 */ or $a1,$s4,$zero
|
||||
/* eba8: 864a000e */ lh $t2,0xe($s2)
|
||||
/* ebac: 3c098009 */ lui $t1,%hi(var80094ea0)
|
||||
@@ -820,7 +820,7 @@ glabel func0000eb2c
|
||||
/* ebf4: ae220000 */ sw $v0,0x0($s1)
|
||||
/* ebf8: 00402025 */ or $a0,$v0,$zero
|
||||
/* ebfc: 02802825 */ or $a1,$s4,$zero
|
||||
/* ec00: 0c003504 */ jal func0000d410
|
||||
/* ec00: 0c003504 */ jal dmaExec
|
||||
/* ec04: 02603025 */ or $a2,$s3,$zero
|
||||
/* ec08: 3c098009 */ lui $t1,%hi(var80094ea0)
|
||||
/* ec0c: 8e2f0000 */ lw $t7,0x0($s1)
|
||||
@@ -949,7 +949,7 @@ glabel func0000ed68
|
||||
/* edb8: 02402025 */ or $a0,$s2,$zero
|
||||
.L0000edbc:
|
||||
/* edbc: 02802825 */ or $a1,$s4,$zero
|
||||
/* edc0: 0c003513 */ jal func0000d44c
|
||||
/* edc0: 0c003513 */ jal dmaExecHighPriority
|
||||
/* edc4: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* edc8: 00008025 */ or $s0,$zero,$zero
|
||||
/* edcc: 00001825 */ or $v1,$zero,$zero
|
||||
@@ -964,7 +964,7 @@ glabel func0000ed68
|
||||
/* edec: 020a8021 */ addu $s0,$s0,$t2
|
||||
/* edf0: 02202025 */ or $a0,$s1,$zero
|
||||
/* edf4: 02802825 */ or $a1,$s4,$zero
|
||||
/* edf8: 0c003513 */ jal func0000d44c
|
||||
/* edf8: 0c003513 */ jal dmaExecHighPriority
|
||||
/* edfc: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* ee00: 00002025 */ or $a0,$zero,$zero
|
||||
/* ee04: 00001025 */ or $v0,$zero,$zero
|
||||
@@ -1028,7 +1028,7 @@ glabel func0000ee88
|
||||
/* eed8: 02402025 */ or $a0,$s2,$zero
|
||||
.L0000eedc:
|
||||
/* eedc: 02802825 */ or $a1,$s4,$zero
|
||||
/* eee0: 0c003513 */ jal func0000d44c
|
||||
/* eee0: 0c003513 */ jal dmaExecHighPriority
|
||||
/* eee4: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* eee8: 00008025 */ or $s0,$zero,$zero
|
||||
/* eeec: 00001825 */ or $v1,$zero,$zero
|
||||
@@ -1043,7 +1043,7 @@ glabel func0000ee88
|
||||
/* ef0c: 020a8021 */ addu $s0,$s0,$t2
|
||||
/* ef10: 02202025 */ or $a0,$s1,$zero
|
||||
/* ef14: 02802825 */ or $a1,$s4,$zero
|
||||
/* ef18: 0c003513 */ jal func0000d44c
|
||||
/* ef18: 0c003513 */ jal dmaExecHighPriority
|
||||
/* ef1c: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* ef20: 00002025 */ or $a0,$zero,$zero
|
||||
/* ef24: 00001025 */ or $v0,$zero,$zero
|
||||
@@ -1107,7 +1107,7 @@ glabel func0000efa8
|
||||
/* eff8: 02402025 */ or $a0,$s2,$zero
|
||||
.L0000effc:
|
||||
/* effc: 02802825 */ or $a1,$s4,$zero
|
||||
/* f000: 0c003513 */ jal func0000d44c
|
||||
/* f000: 0c003513 */ jal dmaExecHighPriority
|
||||
/* f004: 24060140 */ addiu $a2,$zero,0x140
|
||||
/* f008: 00008025 */ or $s0,$zero,$zero
|
||||
/* f00c: 00001825 */ or $v1,$zero,$zero
|
||||
@@ -1122,7 +1122,7 @@ glabel func0000efa8
|
||||
/* f02c: 020a8021 */ addu $s0,$s0,$t2
|
||||
/* f030: 02202025 */ or $a0,$s1,$zero
|
||||
/* f034: 02802825 */ or $a1,$s4,$zero
|
||||
/* f038: 0c003513 */ jal func0000d44c
|
||||
/* f038: 0c003513 */ jal dmaExecHighPriority
|
||||
/* f03c: 24060140 */ addiu $a2,$zero,0x140
|
||||
/* f040: 00002025 */ or $a0,$zero,$zero
|
||||
/* f044: 00001025 */ or $v0,$zero,$zero
|
||||
@@ -1195,7 +1195,7 @@ glabel func0000f0d4
|
||||
/* f134: 02402025 */ or $a0,$s2,$zero
|
||||
.L0000f138:
|
||||
/* f138: 02802825 */ or $a1,$s4,$zero
|
||||
/* f13c: 0c003513 */ jal func0000d44c
|
||||
/* f13c: 0c003513 */ jal dmaExecHighPriority
|
||||
/* f140: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* f144: 00008025 */ or $s0,$zero,$zero
|
||||
/* f148: 00001825 */ or $v1,$zero,$zero
|
||||
@@ -1210,7 +1210,7 @@ glabel func0000f0d4
|
||||
/* f168: 020a8021 */ addu $s0,$s0,$t2
|
||||
/* f16c: 02202025 */ or $a0,$s1,$zero
|
||||
/* f170: 02802825 */ or $a1,$s4,$zero
|
||||
/* f174: 0c003513 */ jal func0000d44c
|
||||
/* f174: 0c003513 */ jal dmaExecHighPriority
|
||||
/* f178: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* f17c: 00002025 */ or $a0,$zero,$zero
|
||||
/* f180: 00001025 */ or $v0,$zero,$zero
|
||||
@@ -1285,7 +1285,7 @@ glabel func0000f228
|
||||
/* f278: 02402025 */ or $a0,$s2,$zero
|
||||
.L0000f27c:
|
||||
/* f27c: 02802825 */ or $a1,$s4,$zero
|
||||
/* f280: 0c003513 */ jal func0000d44c
|
||||
/* f280: 0c003513 */ jal dmaExecHighPriority
|
||||
/* f284: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* f288: 00008025 */ or $s0,$zero,$zero
|
||||
/* f28c: 00001825 */ or $v1,$zero,$zero
|
||||
@@ -1300,7 +1300,7 @@ glabel func0000f228
|
||||
/* f2ac: 020a8021 */ addu $s0,$s0,$t2
|
||||
/* f2b0: 02202025 */ or $a0,$s1,$zero
|
||||
/* f2b4: 02802825 */ or $a1,$s4,$zero
|
||||
/* f2b8: 0c003513 */ jal func0000d44c
|
||||
/* f2b8: 0c003513 */ jal dmaExecHighPriority
|
||||
/* f2bc: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* f2c0: 00002025 */ or $a0,$zero,$zero
|
||||
/* f2c4: 00001025 */ or $v0,$zero,$zero
|
||||
@@ -1524,7 +1524,7 @@ glabel func0000f49c
|
||||
/* f5c4: afab0024 */ sw $t3,0x24($sp)
|
||||
/* f5c8: a7a900aa */ sh $t1,0xaa($sp)
|
||||
/* f5cc: 24060040 */ addiu $a2,$zero,0x40
|
||||
/* f5d0: 0c003513 */ jal func0000d44c
|
||||
/* f5d0: 0c003513 */ jal dmaExecHighPriority
|
||||
/* f5d4: 30f1ffff */ andi $s1,$a3,0xffff
|
||||
/* f5d8: 8e040000 */ lw $a0,0x0($s0)
|
||||
/* f5dc: 0c003b5a */ jal func0000ed68
|
||||
@@ -1784,7 +1784,7 @@ glabel func0000f804
|
||||
/* f96c: 00408825 */ or $s1,$v0,$zero
|
||||
/* f970: 24a5bf30 */ addiu $a1,$a1,%lo(_seqctlSegmentRomStart)
|
||||
/* f974: 00402025 */ or $a0,$v0,$zero
|
||||
/* f978: 0c003504 */ jal func0000d410
|
||||
/* f978: 0c003504 */ jal dmaExec
|
||||
/* f97c: 02003025 */ or $a2,$s0,$zero
|
||||
/* f980: 3c0500d0 */ lui $a1,%hi(_seqtblSegmentRomStart)
|
||||
/* f984: 24a55f90 */ addiu $a1,$a1,%lo(_seqtblSegmentRomStart)
|
||||
@@ -1808,7 +1808,7 @@ glabel func0000f804
|
||||
/* f9cc: ae020000 */ sw $v0,0x0($s0)
|
||||
/* f9d0: 02202825 */ or $a1,$s1,$zero
|
||||
/* f9d4: 00402025 */ or $a0,$v0,$zero
|
||||
/* f9d8: 0c003504 */ jal func0000d410
|
||||
/* f9d8: 0c003504 */ jal dmaExec
|
||||
/* f9dc: 24060010 */ addiu $a2,$zero,0x10
|
||||
/* f9e0: 8e0d0000 */ lw $t5,0x0($s0)
|
||||
/* f9e4: 3c068009 */ lui $a2,%hi(var800951f0)
|
||||
@@ -1829,7 +1829,7 @@ glabel func0000f804
|
||||
/* fa20: 00c17824 */ and $t7,$a2,$at
|
||||
/* fa24: 01e03025 */ or $a2,$t7,$zero
|
||||
/* fa28: 00402025 */ or $a0,$v0,$zero
|
||||
/* fa2c: 0c003504 */ jal func0000d410
|
||||
/* fa2c: 0c003504 */ jal dmaExec
|
||||
/* fa30: 02202825 */ or $a1,$s1,$zero
|
||||
/* fa34: 8e040000 */ lw $a0,0x0($s0)
|
||||
/* fa38: 00001825 */ or $v1,$zero,$zero
|
||||
@@ -2040,7 +2040,7 @@ glabel func0000fc48
|
||||
/* fd04: 00e36021 */ addu $t4,$a3,$v1
|
||||
/* fd08: 01862023 */ subu $a0,$t4,$a2
|
||||
/* fd0c: afa40028 */ sw $a0,0x28($sp)
|
||||
/* fd10: 0c003504 */ jal func0000d410
|
||||
/* fd10: 0c003504 */ jal dmaExec
|
||||
/* fd14: afa7143c */ sw $a3,0x143c($sp)
|
||||
/* fd18: 8fa40028 */ lw $a0,0x28($sp)
|
||||
/* fd1c: 8fa5143c */ lw $a1,0x143c($sp)
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ glabel func000233c0
|
||||
/* 233fc: 24a5d1a0 */ addiu $a1,$a1,%lo(_animationsTableRomStart)
|
||||
/* 23400: 00402025 */ or $a0,$v0,$zero
|
||||
/* 23404: 02003025 */ or $a2,$s0,$zero
|
||||
/* 23408: 0c003504 */ jal func0000d410
|
||||
/* 23408: 0c003504 */ jal dmaExec
|
||||
/* 2340c: afa20020 */ sw $v0,0x20($sp)
|
||||
/* 23410: 8fa30020 */ lw $v1,0x20($sp)
|
||||
/* 23414: 3c04800a */ lui $a0,%hi(var8009a894)
|
||||
|
||||
+4
-4
@@ -351,7 +351,7 @@ glabel mainInit
|
||||
/* d764: 256bfe00 */ addiu $t3,$t3,%lo(_accessingpakSegmentRomEnd)
|
||||
/* d768: 39c4003f */ xori $a0,$t6,0x3f
|
||||
/* d76c: 00808025 */ or $s0,$a0,$zero
|
||||
/* d770: 0c003504 */ jal func0000d410
|
||||
/* d770: 0c003504 */ jal dmaExec
|
||||
/* d774: 01653023 */ subu $a2,$t3,$a1
|
||||
/* d778: 1000000e */ b .L0000d7b4
|
||||
/* d77c: 3c01ffff */ lui $at,0xffff
|
||||
@@ -366,7 +366,7 @@ glabel mainInit
|
||||
/* d79c: 25eff550 */ addiu $t7,$t7,%lo(_copyrightSegmentRomEnd)
|
||||
/* d7a0: 3b04003f */ xori $a0,$t8,0x3f
|
||||
/* d7a4: 00808025 */ or $s0,$a0,$zero
|
||||
/* d7a8: 0c003504 */ jal func0000d410
|
||||
/* d7a8: 0c003504 */ jal dmaExec
|
||||
/* d7ac: 01e53023 */ subu $a2,$t7,$a1
|
||||
/* d7b0: 3c01ffff */ lui $at,0xffff
|
||||
.L0000d7b4:
|
||||
@@ -676,9 +676,9 @@ const char var70053aa0[] = " -ml0 -me0 -mgfx100 -mvtx50 -mt700 -ma400";
|
||||
// // the texture format can be changed then copied into the framebuffer in
|
||||
// // the correct format.
|
||||
// if (g_DoBootPakMenu) {
|
||||
// func0000d410(fb, &_accessingpakSegmentRomStart, &_accessingpakSegmentRomEnd - &_accessingpakSegmentRomStart);
|
||||
// dmaExec(fb, &_accessingpakSegmentRomStart, &_accessingpakSegmentRomEnd - &_accessingpakSegmentRomStart);
|
||||
// } else {
|
||||
// func0000d410(fb, &_copyrightSegmentRomStart, &_copyrightSegmentRomEnd - &_copyrightSegmentRomStart);
|
||||
// dmaExec(fb, &_copyrightSegmentRomStart, &_copyrightSegmentRomEnd - &_copyrightSegmentRomStart);
|
||||
// }
|
||||
//
|
||||
// // Prepare space for the texture immediately before the framebuffer
|
||||
|
||||
Reference in New Issue
Block a user