ntsc-beta: Decompile dmaStart

This commit is contained in:
Ryan Dwyer 2021-10-29 22:30:47 +10:00
parent 9b1ac7f66b
commit 67a021c5a2
1 changed files with 9 additions and 154 deletions

View File

@ -13,38 +13,7 @@ volatile u32 g_DmaNumSlotsBusy;
u32 var80094ae4;
OSIoMesg g_DmaIoMsgs[32];
volatile u8 g_DmaSlotsBusy[32];
OSMesg var80094e08;
u32 var80094e0c;
u32 var80094e10;
u32 var80094e14;
u32 var80094e18;
u32 var80094e1c;
u32 var80094e20;
u32 var80094e24;
u32 var80094e28;
u32 var80094e2c;
u32 var80094e30;
u32 var80094e34;
u32 var80094e38;
u32 var80094e3c;
u32 var80094e40;
u32 var80094e44;
u32 var80094e48;
u32 var80094e4c;
u32 var80094e50;
u32 var80094e54;
u32 var80094e58;
u32 var80094e5c;
u32 var80094e60;
u32 var80094e64;
u32 var80094e68;
u32 var80094e6c;
u32 var80094e70;
u32 var80094e74;
u32 var80094e78;
u32 var80094e7c;
u32 var80094e80;
u32 var80094e84;
OSMesg g_DmaMesgs[32];
OSMesgQueue g_DmaMesgQueue;
u8 g_LoadType = 0;
@ -59,16 +28,22 @@ void dmaInit(void)
g_DmaNumSlotsBusy = 0;
osCreateMesgQueue(&g_DmaMesgQueue, &var80094e08, 0x20);
osCreateMesgQueue(&g_DmaMesgQueue, g_DmaMesgs, ARRAYCOUNT(g_DmaMesgs));
}
#if VERSION >= VERSION_NTSC_1_0
void dmaStart(void *memaddr, u32 romaddr, u32 len, bool priority)
{
u32 numiterations;
u32 remainder;
s32 i;
#if VERSION < VERSION_NTSC_1_0
if (romaddr >= 1024 * 1024 * 32) {
func0000c1d0nb("DMA : Off the end of the rom");
CRASH();
}
#endif
if (g_DmaNumSlotsBusy) {
dmaWait();
}
@ -102,126 +77,6 @@ void dmaStart(void *memaddr, u32 romaddr, u32 len, bool priority)
osPiStartDma(&g_DmaIoMsgs[i], priority, 0, romaddr, memaddr, remainder, &g_DmaMesgQueue);
}
}
#else
const char var700542d0nb[] = "DMA : Off the end of the rom";
GLOBAL_ASM(
glabel dmaStart
/* d728: 27bdffa8 */ addiu $sp,$sp,-88
/* d72c: 3c010200 */ lui $at,0x200
/* d730: afb40038 */ sw $s4,0x38($sp)
/* d734: afb30034 */ sw $s3,0x34($sp)
/* d738: afb00028 */ sw $s0,0x28($sp)
/* d73c: 00a1082b */ sltu $at,$a1,$at
/* d740: 00c08025 */ or $s0,$a2,$zero
/* d744: 00a09825 */ or $s3,$a1,$zero
/* d748: 0080a025 */ or $s4,$a0,$zero
/* d74c: afbf004c */ sw $ra,0x4c($sp)
/* d750: afbe0048 */ sw $s8,0x48($sp)
/* d754: afb70044 */ sw $s7,0x44($sp)
/* d758: afb60040 */ sw $s6,0x40($sp)
/* d75c: afb5003c */ sw $s5,0x3c($sp)
/* d760: afb20030 */ sw $s2,0x30($sp)
/* d764: afb1002c */ sw $s1,0x2c($sp)
/* d768: 14200006 */ bnez $at,.NB0000d784
/* d76c: afa70064 */ sw $a3,0x64($sp)
/* d770: 3c047005 */ lui $a0,0x7005
/* d774: 0c003074 */ jal func0000c1d0nb
/* d778: 248442d0 */ addiu $a0,$a0,0x42d0
/* d77c: 240e0045 */ addiu $t6,$zero,0x45
/* d780: a00e0000 */ sb $t6,0x0($zero)
.NB0000d784:
/* d784: 3c178009 */ lui $s7,0x8009
/* d788: 26f77a60 */ addiu $s7,$s7,0x7a60
/* d78c: 8eef0000 */ lw $t7,0x0($s7)
/* d790: 51e00004 */ beqzl $t7,.NB0000d7a4
/* d794: 3c010008 */ lui $at,0x8
/* d798: 0c003634 */ jal dmaWait
/* d79c: 00000000 */ sll $zero,$zero,0x0
/* d7a0: 3c010008 */ lui $at,0x8
.NB0000d7a4:
/* d7a4: 0201082b */ sltu $at,$s0,$at
/* d7a8: 10200005 */ beqz $at,.NB0000d7c0
/* d7ac: 02802025 */ or $a0,$s4,$zero
/* d7b0: 32183fff */ andi $t8,$s0,0x3fff
/* d7b4: 0010f382 */ srl $s8,$s0,0xe
/* d7b8: 10000003 */ beqz $zero,.NB0000d7c8
/* d7bc: afb80050 */ sw $t8,0x50($sp)
.NB0000d7c0:
/* d7c0: 0000f025 */ or $s8,$zero,$zero
/* d7c4: afb00050 */ sw $s0,0x50($sp)
.NB0000d7c8:
/* d7c8: 0c013e48 */ jal osInvalDCache
/* d7cc: 02002825 */ or $a1,$s0,$zero
/* d7d0: 13c0001b */ beqz $s8,.NB0000d840
/* d7d4: 00009025 */ or $s2,$zero,$zero
/* d7d8: 3c108009 */ lui $s0,0x8009
/* d7dc: 3c118009 */ lui $s1,0x8009
/* d7e0: 3c168009 */ lui $s6,0x8009
/* d7e4: 26d67e08 */ addiu $s6,$s6,0x7e08
/* d7e8: 26317a68 */ addiu $s1,$s1,0x7a68
/* d7ec: 26107d68 */ addiu $s0,$s0,0x7d68
/* d7f0: 24150001 */ addiu $s5,$zero,0x1
.NB0000d7f4:
/* d7f4: a2150000 */ sb $s5,0x0($s0)
/* d7f8: 8ee20000 */ lw $v0,0x0($s7)
/* d7fc: 24084000 */ addiu $t0,$zero,0x4000
/* d800: afa80014 */ sw $t0,0x14($sp)
/* d804: 24590001 */ addiu $t9,$v0,0x1
/* d808: aef90000 */ sw $t9,0x0($s7)
/* d80c: 02202025 */ or $a0,$s1,$zero
/* d810: 8fa50064 */ lw $a1,0x64($sp)
/* d814: 00003025 */ or $a2,$zero,$zero
/* d818: 02603825 */ or $a3,$s3,$zero
/* d81c: afb40010 */ sw $s4,0x10($sp)
/* d820: 0c013e74 */ jal osPiStartDma
/* d824: afb60018 */ sw $s6,0x18($sp)
/* d828: 26520001 */ addiu $s2,$s2,0x1
/* d82c: 26100001 */ addiu $s0,$s0,0x1
/* d830: 26310018 */ addiu $s1,$s1,0x18
/* d834: 26734000 */ addiu $s3,$s3,0x4000
/* d838: 165effee */ bne $s2,$s8,.NB0000d7f4
/* d83c: 26944000 */ addiu $s4,$s4,0x4000
.NB0000d840:
/* d840: 8fa30050 */ lw $v1,0x50($sp)
/* d844: 3c168009 */ lui $s6,0x8009
/* d848: 26d67e08 */ addiu $s6,$s6,0x7e08
/* d84c: 10600014 */ beqz $v1,.NB0000d8a0
/* d850: 24150001 */ addiu $s5,$zero,0x1
/* d854: 3c018009 */ lui $at,0x8009
/* d858: 00320821 */ addu $at,$at,$s2
/* d85c: a0357d68 */ sb $s5,0x7d68($at)
/* d860: 8ee20000 */ lw $v0,0x0($s7)
/* d864: 00125080 */ sll $t2,$s2,0x2
/* d868: 01525023 */ subu $t2,$t2,$s2
/* d86c: 3c0b8009 */ lui $t3,0x8009
/* d870: 256b7a68 */ addiu $t3,$t3,0x7a68
/* d874: 000a50c0 */ sll $t2,$t2,0x3
/* d878: 24490001 */ addiu $t1,$v0,0x1
/* d87c: aee90000 */ sw $t1,0x0($s7)
/* d880: 014b2021 */ addu $a0,$t2,$t3
/* d884: 8fa50064 */ lw $a1,0x64($sp)
/* d888: 00003025 */ or $a2,$zero,$zero
/* d88c: 02603825 */ or $a3,$s3,$zero
/* d890: afb40010 */ sw $s4,0x10($sp)
/* d894: afa30014 */ sw $v1,0x14($sp)
/* d898: 0c013e74 */ jal osPiStartDma
/* d89c: afb60018 */ sw $s6,0x18($sp)
.NB0000d8a0:
/* d8a0: 8fbf004c */ lw $ra,0x4c($sp)
/* d8a4: 8fb00028 */ lw $s0,0x28($sp)
/* d8a8: 8fb1002c */ lw $s1,0x2c($sp)
/* d8ac: 8fb20030 */ lw $s2,0x30($sp)
/* d8b0: 8fb30034 */ lw $s3,0x34($sp)
/* d8b4: 8fb40038 */ lw $s4,0x38($sp)
/* d8b8: 8fb5003c */ lw $s5,0x3c($sp)
/* d8bc: 8fb60040 */ lw $s6,0x40($sp)
/* d8c0: 8fb70044 */ lw $s7,0x44($sp)
/* d8c4: 8fbe0048 */ lw $s8,0x48($sp)
/* d8c8: 03e00008 */ jr $ra
/* d8cc: 27bd0058 */ addiu $sp,$sp,0x58
);
#endif
#if VERSION >= VERSION_NTSC_1_0
u32 xorDeadbeef(u32 value)