decompile _DmaCopy

This commit is contained in:
Behemoth
2020-08-26 14:01:39 +02:00
parent 02eaaf938e
commit 264cce346a
32 changed files with 110 additions and 151 deletions
+5 -5
View File
@@ -55,7 +55,7 @@ static void sub_08050624(u32);
static void sub_0805066C(void);
static void sub_080507FC(void);
extern void sub_0801D66C(const void* src, void* dest, u32 size);
extern void _DmaCopy(const void* src, void* dest, u32 size);
extern void sub_08056FEC(u32, struct_020227E8*);
extern void sub_0805F46C(u32, struct_080FC844*);
extern void sub_0801C4A0(u32, u32);
@@ -83,7 +83,7 @@ void sub_08050318(u32 arg0, u32 arg1) {
struct_080FC844 var0;
sub_08050384();
sub_0801D66C(&gUnk_080FC844, &var0, sizeof(gUnk_080FC844));
_DmaCopy(&gUnk_080FC844, &var0, sizeof(gUnk_080FC844));
sub_08056FEC(arg1, &gUnk_020227E8);
var0.unk10 |= gUnk_080FC85C[arg0][0] << 0xC;
sub_0805F46C(gUnk_080FC85C[arg0][1], &var0);
@@ -136,7 +136,7 @@ void sub_0805041C(u32 saveFileId) {
if (saveFileId < 3) {
((struct_02000000 *)0x2000000)->saveFileId = saveFileId;
saveFile = &gSaveFiles[saveFileId];
sub_0801D66C(saveFile, &gUnk_02002A40, sizeof(*saveFile));
_DmaCopy(saveFile, &gUnk_02002A40, sizeof(*saveFile));
}
sub_080503E4(saveFileId);
}
@@ -281,7 +281,7 @@ void sub_0805070C(void) {
for (j = 0; j < 6; j++) {
sub_0805F7DC(playerName[j], var0);
}
sub_0801D66C(var0->unk8, (void*)(OBJ_VRAM0 + 0x4000 + i * 0x200), 0x200);
_DmaCopy(var0->unk8, (void*)(OBJ_VRAM0 + 0x4000 + i * 0x200), 0x200);
}
sub_0805F300(var0);
}
@@ -307,7 +307,7 @@ void sub_08050790(void) {
sub_0805F7DC(var1, var0);
var1++;
}
sub_0801D66C(gUnk_02000D00, (void*)(BG_VRAM + i * 0x400), 0x400);
_DmaCopy(gUnk_02000D00, (void*)(BG_VRAM + i * 0x400), 0x400);
}
sub_0805F300(var0);
}
+1 -1
View File
@@ -160,7 +160,7 @@ void sub_08054524(void) {
bVar1 = 0;
}
sub_0801D66C(&gUnk_080015BC + gUnk_080FE1C6[bVar1] * 0x8, &gUnk_02034398, 0x20);
_DmaCopy(&gUnk_080015BC + gUnk_080FE1C6[bVar1] * 0x8, &gUnk_02034398, 0x20);
}
#else
NAKED
+21 -5
View File
@@ -12,13 +12,12 @@ void _DmaFill32(u32 value, u8* dest, u32 size) {
DmaFill32(3, value, dest, size);
}
void _DmaZero(u8 *src, u32 size)
{
void _DmaZero(u8* src, u32 size) {
u32 zero = 0;
switch (((u32)src | size) & 3) {
case 0:
_DmaFill32(0,src, size);
_DmaFill32(0, src, size);
break;
case 2:
_DmaFill16(0, src, size);
@@ -28,6 +27,23 @@ void _DmaZero(u8 *src, u32 size)
*src = zero;
src++;
size--;
} while (size != 0);
} while (size != 0);
}
}
}
void _DmaCopy(const u8* src, u8* dst, u32 size) {
switch (((u32)src | (u32)dst | size) & 3) {
case 0:
DmaCopy32(3, src, dst, size);
break;
case 2:
DmaCopy16(3, src, dst, size);
break;
default:
do {
*dst = *src;
src++;
dst++;
} while (--size);
}
}
+3 -3
View File
@@ -193,16 +193,16 @@ void sub_0805E92C(u32 param_1) {
}
extern Entity gUnk_020369F0;
extern void sub_0801D66C(const void* src, void* dest, size_t size); // dma copy
extern void _DmaCopy(const void* src, void* dest, size_t size); // dma copy
extern void sub_0805E98C(void);
void sub_0805E958(void) {
sub_0801D66C(&gEntityLists, &gUnk_020369F0, 0x48);
_DmaCopy(&gEntityLists, &gUnk_020369F0, 0x48);
sub_0805E98C();
}
void sub_0805E974(void) {
sub_0801D66C(&gUnk_020369F0, &gEntityLists, 0x48);
_DmaCopy(&gUnk_020369F0, &gEntityLists, 0x48);
}
void sub_0805E98C(void) {
+3 -3
View File
@@ -8,7 +8,7 @@ extern void sub_0804FF84(u32);
extern u16 gPaletteBuffer[];
extern void VBlankInterruptWait(void);
extern void DisableInterruptsAndDMA(void);
extern void sub_0801D66C(void*, u8*, int);
extern void _DmaCopy(void*, u8*, int);
extern void sub_08016B34(void);
static void sub_08055F70(void);
@@ -99,12 +99,12 @@ static void sub_08055F70(void) {
_DmaZero(gUnk_02000030, size);
size = (u32)gUnk_080B2CD8 - (u32)sub_080B197C;
if (size != 0) {
sub_0801D66C(sub_080B197C, gUnk_030056F0, size);
_DmaCopy(sub_080B197C, gUnk_030056F0, size);
}
size = (u32)gUnk_080B2CD8_2 - (u32)gUnk_080B2CD8_3;
if (size != 0) {
sub_0801D66C(gUnk_080B2CD8_3, gUnk_02038560, size);
_DmaCopy(gUnk_080B2CD8_3, gUnk_02038560, size);
}
sub_0801DA90(0);