summaryrefslogtreecommitdiff
path: root/src/kart_dma.c
diff options
context:
space:
mode:
authorTyler McGavran <tyler.taggerung@gmail.com>2022-08-15 01:47:11 -0400
committerGitHub <noreply@github.com>2022-08-14 22:47:11 -0700
commit7d23fcc063bb0067e7e051d98d18622a134d0248 (patch)
tree4f3e3e107d9fc8bffaf2f358cfbda68fa017c693 /src/kart_dma.c
parent2fe6c6a2f9cf10478f4d7981040a5d858c899fa6 (diff)
Fix some of the memory allocation in framebuffers (#182)
* Fix some of the memory allocation in framebuffers Also includes a the questionable change of undoing a previously made match for func_80027A20. The changes made here remove an AVOID_UB usage and (I would argue) is therefore more "correct", but undoing a byte-for-byte match is admittedly bad. Also adds in some header files and updates some not-quite-right decomps to be slighly more accurate. Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
Diffstat (limited to 'src/kart_dma.c')
-rw-r--r--src/kart_dma.c266
1 files changed, 39 insertions, 227 deletions
diff --git a/src/kart_dma.c b/src/kart_dma.c
index 6761c9706..d4daa2ad6 100644
--- a/src/kart_dma.c
+++ b/src/kart_dma.c
@@ -1,189 +1,10 @@
#include <ultra64.h>
#include <macros.h>
+#include "main.h"
+#include "variables.h"
+#include "framebuffers.h"
#include "common_structs.h"
-
-extern OSIoMesg gDmaIoMesg;
-extern OSMesgQueue gDmaMesgQueue;
-extern OSMesg gMainReceivedMesg;
-
-extern u8 _kart_texturesSegmentRomStart[];
-extern uintptr_t *gKartPalettes[];
-
-// arrays?
-extern u16 D_802F1F80[2][4][2048];
-extern u8 D_802DFB80[2][2][18688];
-
-extern u16 D_800DDEB0[];
-/*
-u16 D_800DDEB0[] = { // sizes
- 0x06c0, 0x06e0, 0x06e0, 0x0680, 0x07c0, 0x0700, 0x0680, 0x0910
-};
-*/
-extern s32 gActiveScreenMode;
-
-extern uintptr_t *gKartTextureGroup18s[];
-
-extern uintptr_t *gKartMarioGroup8[];
-extern uintptr_t *gKartMarioGroup7[];
-extern uintptr_t *gKartMarioGroup6[];
-extern uintptr_t *gKartMarioGroup5[];
-extern uintptr_t *gKartMarioGroup4[];
-extern uintptr_t *gKartMarioGroup3[];
-extern uintptr_t *gKartMarioGroup2[];
-extern uintptr_t *gKartMarioGroup1[];
-extern uintptr_t *gKartMarioGroup0[];
-
-extern uintptr_t *gKartLuigiGroup8[];
-extern uintptr_t *gKartLuigiGroup7[];
-extern uintptr_t *gKartLuigiGroup6[];
-extern uintptr_t *gKartLuigiGroup5[];
-extern uintptr_t *gKartLuigiGroup4[];
-extern uintptr_t *gKartLuigiGroup3[];
-extern uintptr_t *gKartLuigiGroup2[];
-extern uintptr_t *gKartLuigiGroup1[];
-extern uintptr_t *gKartLuigiGroup0[];
-
-extern uintptr_t *gKartYoshiGroup8[];
-extern uintptr_t *gKartYoshiGroup7[];
-extern uintptr_t *gKartYoshiGroup6[];
-extern uintptr_t *gKartYoshiGroup5[];
-extern uintptr_t *gKartYoshiGroup4[];
-extern uintptr_t *gKartYoshiGroup3[];
-extern uintptr_t *gKartYoshiGroup2[];
-extern uintptr_t *gKartYoshiGroup1[];
-extern uintptr_t *gKartYoshiGroup0[];
-
-extern uintptr_t *gKartToadGroup8[];
-extern uintptr_t *gKartToadGroup7[];
-extern uintptr_t *gKartToadGroup6[];
-extern uintptr_t *gKartToadGroup5[];
-extern uintptr_t *gKartToadGroup4[];
-extern uintptr_t *gKartToadGroup3[];
-extern uintptr_t *gKartToadGroup2[];
-extern uintptr_t *gKartToadGroup1[];
-extern uintptr_t *gKartToadGroup0[];
-
-extern uintptr_t *gKartDKGroup8[];
-extern uintptr_t *gKartDKGroup7[];
-extern uintptr_t *gKartDKGroup6[];
-extern uintptr_t *gKartDKGroup5[];
-extern uintptr_t *gKartDKGroup4[];
-extern uintptr_t *gKartDKGroup3[];
-extern uintptr_t *gKartDKGroup2[];
-extern uintptr_t *gKartDKGroup1[];
-extern uintptr_t *gKartDKGroup0[];
-
-extern uintptr_t *gKartWarioGroup8[];
-extern uintptr_t *gKartWarioGroup7[];
-extern uintptr_t *gKartWarioGroup6[];
-extern uintptr_t *gKartWarioGroup5[];
-extern uintptr_t *gKartWarioGroup4[];
-extern uintptr_t *gKartWarioGroup3[];
-extern uintptr_t *gKartWarioGroup2[];
-extern uintptr_t *gKartWarioGroup1[];
-extern uintptr_t *gKartWarioGroup0[];
-
-extern uintptr_t *gKartPeachGroup8[];
-extern uintptr_t *gKartPeachGroup7[];
-extern uintptr_t *gKartPeachGroup6[];
-extern uintptr_t *gKartPeachGroup5[];
-extern uintptr_t *gKartPeachGroup4[];
-extern uintptr_t *gKartPeachGroup3[];
-extern uintptr_t *gKartPeachGroup2[];
-extern uintptr_t *gKartPeachGroup1[];
-extern uintptr_t *gKartPeachGroup0[];
-
-extern uintptr_t *gKartBowserGroup8[];
-extern uintptr_t *gKartBowserGroup7[];
-extern uintptr_t *gKartBowserGroup6[];
-extern uintptr_t *gKartBowserGroup5[];
-extern uintptr_t *gKartBowserGroup4[];
-extern uintptr_t *gKartBowserGroup3[];
-extern uintptr_t *gKartBowserGroup2[];
-extern uintptr_t *gKartBowserGroup1[];
-extern uintptr_t *gKartBowserGroup0[];
-
-extern uintptr_t *gKartMarioGroup17[];
-extern uintptr_t *gKartMarioGroup16[];
-extern uintptr_t *gKartMarioGroup15[];
-extern uintptr_t *gKartMarioGroup14[];
-extern uintptr_t *gKartMarioGroup13[];
-extern uintptr_t *gKartMarioGroup12[];
-extern uintptr_t *gKartMarioGroup11[];
-extern uintptr_t *gKartMarioGroup10[];
-extern uintptr_t *gKartMarioGroup9[];
-
-extern uintptr_t *gKartLuigiGroup17[];
-extern uintptr_t *gKartLuigiGroup16[];
-extern uintptr_t *gKartLuigiGroup15[];
-extern uintptr_t *gKartLuigiGroup14[];
-extern uintptr_t *gKartLuigiGroup13[];
-extern uintptr_t *gKartLuigiGroup12[];
-extern uintptr_t *gKartLuigiGroup11[];
-extern uintptr_t *gKartLuigiGroup10[];
-extern uintptr_t *gKartLuigiGroup9[];
-
-extern uintptr_t *gKartYoshiGroup17[];
-extern uintptr_t *gKartYoshiGroup16[];
-extern uintptr_t *gKartYoshiGroup15[];
-extern uintptr_t *gKartYoshiGroup14[];
-extern uintptr_t *gKartYoshiGroup13[];
-extern uintptr_t *gKartYoshiGroup12[];
-extern uintptr_t *gKartYoshiGroup11[];
-extern uintptr_t *gKartYoshiGroup10[];
-extern uintptr_t *gKartYoshiGroup9[];
-
-extern uintptr_t *gKartToadGroup17[];
-extern uintptr_t *gKartToadGroup16[];
-extern uintptr_t *gKartToadGroup15[];
-extern uintptr_t *gKartToadGroup14[];
-extern uintptr_t *gKartToadGroup13[];
-extern uintptr_t *gKartToadGroup12[];
-extern uintptr_t *gKartToadGroup11[];
-extern uintptr_t *gKartToadGroup10[];
-extern uintptr_t *gKartToadGroup9[];
-
-extern uintptr_t *gKartDKGroup17[];
-extern uintptr_t *gKartDKGroup16[];
-extern uintptr_t *gKartDKGroup15[];
-extern uintptr_t *gKartDKGroup14[];
-extern uintptr_t *gKartDKGroup13[];
-extern uintptr_t *gKartDKGroup12[];
-extern uintptr_t *gKartDKGroup11[];
-extern uintptr_t *gKartDKGroup10[];
-extern uintptr_t *gKartDKGroup9[];
-
-extern uintptr_t *gKartWarioGroup17[];
-extern uintptr_t *gKartWarioGroup16[];
-extern uintptr_t *gKartWarioGroup15[];
-extern uintptr_t *gKartWarioGroup14[];
-extern uintptr_t *gKartWarioGroup13[];
-extern uintptr_t *gKartWarioGroup12[];
-extern uintptr_t *gKartWarioGroup11[];
-extern uintptr_t *gKartWarioGroup10[];
-extern uintptr_t *gKartWarioGroup9[];
-
-extern uintptr_t *gKartPeachGroup17[];
-extern uintptr_t *gKartPeachGroup16[];
-extern uintptr_t *gKartPeachGroup15[];
-extern uintptr_t *gKartPeachGroup14[];
-extern uintptr_t *gKartPeachGroup13[];
-extern uintptr_t *gKartPeachGroup12[];
-extern uintptr_t *gKartPeachGroup11[];
-extern uintptr_t *gKartPeachGroup10[];
-extern uintptr_t *gKartPeachGroup9[];
-
-extern uintptr_t *gKartBowserGroup17[];
-extern uintptr_t *gKartBowserGroup16[];
-extern uintptr_t *gKartBowserGroup15[];
-extern uintptr_t *gKartBowserGroup14[];
-extern uintptr_t *gKartBowserGroup13[];
-extern uintptr_t *gKartBowserGroup12[];
-extern uintptr_t *gKartBowserGroup11[];
-extern uintptr_t *gKartBowserGroup10[];
-extern uintptr_t *gKartBowserGroup9[];
-
-
+#include "code_80027040.h"
uintptr_t **gKartMarioTable0[] = {
gKartMarioGroup8, gKartMarioGroup7, gKartMarioGroup6,
@@ -303,31 +124,26 @@ uintptr_t ***gKartTextureTable1[] = {
* @param arg4 First buffer index always zero.
**/
void func_80027040(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
-
- s32 temp;
- if (((((((player->unk_0BC & 0x80) == 0x80) || ((player->unk_0BC & 0x40) == 0x40)) || ((player->unk_0BC & 0x80000) == 0x80000)) ||
- ((player->unk_0BC & 0x800000) == 0x800000)) || ((player->unk_0BC & 0x20000) == 0x20000)) || ((player->unk_044 & 0x800) != 0))
- {
-
+ s32 temp = player->unk_0BC;
+ if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0)) {
if (player->unk_244[arg2] != 0) {
- osInvalDCache(&D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId]);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable1[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId], &gDmaMesgQueue);
+ osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable1[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
} else {
- osInvalDCache(&D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId]);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId], &gDmaMesgQueue);
+ osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
- } else if (((((player->unk_0BC & 0x400) == 0x400) || ((player->unk_0BC & 0x1000000) == 0x1000000)) ||
- ((player->unk_0BC & 0x2000000) == 0x2000000)) || ((player->unk_0BC & 0x10000) == 0x10000))
- {
-
- osInvalDCache(&D_802DFB80[arg4][arg3][arg1 * 0x920], 0x780U);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8])], &D_802DFB80[arg4][arg3][arg1 * 0x920], 0x900U, &gDmaMesgQueue);
+ } else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) || ((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000)) {
+ osInvalDCache(&D_802DFB80[arg4][arg3][arg1], 0x780U);
+ // I think there's something off with the "player->unk_0A8 >> 8"
+ // I don't like that right-shift
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8])], &D_802DFB80[arg4][arg3][arg1], 0x900, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
} else {
- osInvalDCache(&D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId]);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId], &gDmaMesgQueue);
+ osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
}
@@ -335,47 +151,43 @@ void func_80027040(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
void func_80027560(Player *player, s8 arg1, s8 arg2, s8 arg3, s8 arg4) {
s32 temp = player->unk_0BC;
- if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) ||
- ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0))
+ if (((temp & 0x80) == 0x80) || ((temp & 0x40) == 0x40) || ((temp & 0x80000) == 0x80000) || ((temp & 0x800000) == 0x800000) || ((temp & 0x20000) == 0x20000) || ((player->unk_044 & 0x800) != 0))
{
-
if (player->unk_244[arg2] != 0) {
- osInvalDCache(&D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId]);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable1[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId], &gDmaMesgQueue);
+ osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable1[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue);
} else {
- osInvalDCache(&D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId]);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId], &gDmaMesgQueue);
+ osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue);
}
} else if (((temp & 0x400) == 0x400) || ((temp & 0x01000000) == 0x01000000) ||
((temp & 0x02000000) == 0x02000000) || ((temp & 0x10000) == 0x10000))
{
- osInvalDCache(&D_802DFB80[arg4][arg3][arg1 * 0x920], 0x780);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8])], &D_802DFB80[arg4][arg3][arg1 * 0x920], 0x900, &gDmaMesgQueue);
+ osInvalDCache(&D_802DFB80[arg4][arg3][arg1], 0x780);
+ // I think there's something off with the "player->unk_0A8 >> 8"
+ // I don't like that right-shift
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureGroup18s[player->characterId][player->unk_0A8 >> 8])], &D_802DFB80[arg4][arg3][arg1], 0x900, &gDmaMesgQueue);
} else {
- osInvalDCache(&D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId]);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1 * 0x920], D_800DDEB0[player->characterId], &gDmaMesgQueue);
+ osInvalDCache(&D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId]);
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartTextureTable0[player->characterId][player->unk_24C[arg2]][player->unk_244[arg2]])], &D_802DFB80[arg4][arg3][arg1], D_800DDEB0[player->characterId], &gDmaMesgQueue);
}
}
void func_80027A20(Player *player, s8 arg1, s8 arg2, s8 arg3) {
- // @bug: Undefined Behaviour UB
- // untested fix. [arg1 << 8] may be a fake match.
- #ifdef AVOID_UB
- void *temp_s0 = &D_802F1F80[arg3][arg2][0];
- #else
- void *temp_s0 = &D_802F1F80[arg3][arg2][arg1 << 8];
- #endif
-
+ // Weird typecasting is being done here. We define D_802F1F80 as a 3-dimensional u32 array,
+ // but its better to understand it as a 3-dimensional struct_D_802F1F80 array.
+ struct_D_802F1F80 *temp_s0 = &D_802F1F80[arg3][arg2][arg1 << 7];
switch(gActiveScreenMode) {
- case 0: case 1:
+ case 0:
+ case 1:
case 2:
- osInvalDCache(temp_s0, 0x200);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartPalettes[player->characterId])], temp_s0, 0x200, &gDmaMesgQueue);
+ osInvalDCache(temp_s0, sizeof(struct_D_802F1F80));
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartPalettes[player->characterId])], temp_s0, sizeof(struct_D_802F1F80), &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
break;
case 3:
- osInvalDCache(temp_s0, 0x200);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartPalettes[player->characterId])], temp_s0, 0x200, &gDmaMesgQueue);
+ osInvalDCache(temp_s0, sizeof(struct_D_802F1F80));
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(gKartPalettes[player->characterId])], temp_s0, sizeof(struct_D_802F1F80), &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
break;
}
@@ -383,11 +195,11 @@ void func_80027A20(Player *player, s8 arg1, s8 arg2, s8 arg3) {
void func_80027BDC(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) {
osInvalDCache(vAddr, size);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(arg1)], vAddr, size, &gDmaMesgQueue);
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(arg1)], vAddr, size, &gDmaMesgQueue);
osRecvMesg(&gDmaMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK);
}
void func_80027C74(UNUSED Player *player, s32 arg1, void *vAddr, u16 size) {
osInvalDCache(vAddr, size);
- osPiStartDma(&gDmaIoMesg, 0, 0, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(arg1)], vAddr, size, &gDmaMesgQueue);
+ osPiStartDma(&gDmaIoMesg, OS_MESG_PRI_NORMAL, OS_READ, &_kart_texturesSegmentRomStart[SEGMENT_OFFSET(arg1)], vAddr, size, &gDmaMesgQueue);
}