diff options
| author | Kenix3 <kenixwhisperwind@gmail.com> | 2020-06-04 21:41:44 -0400 |
|---|---|---|
| committer | Kenix3 <kenixwhisperwind@gmail.com> | 2020-06-04 21:41:44 -0400 |
| commit | 664182c2899ba341be31f4cd7364a74867ee422c (patch) | |
| tree | 3e6b6414cbfadb915acf867e6c88380045b01a04 /src/code/z_room.c | |
| parent | dfbcac539ead5f73fb8e3e8954dded9ccd18f3fe (diff) | |
Fixes known undefined behaviour from DmaMgr and Lib_Ptr taking u32 rather than void*
Diffstat (limited to 'src/code/z_room.c')
| -rw-r--r-- | src/code/z_room.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/code/z_room.c b/src/code/z_room.c index 7d3ddd171..5e8e6d42e 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -86,7 +86,7 @@ s32 Room_StartRoomTransition(GlobalContext* ctxt, RoomContext* roomCtxt, s32 ind roomCtxt->unk31 = 1; size = ctxt->roomAddrs[index].vromEnd - ctxt->roomAddrs[index].vromStart; - roomCtxt->activeRoomVram = ((s32)roomCtxt->roomMemPages[roomCtxt->activeMemPage] - (size + 8) * roomCtxt->activeMemPage + 8) & 0xfffffff0; + roomCtxt->activeRoomVram = (void*)((s32)roomCtxt->roomMemPages[roomCtxt->activeMemPage] - (size + 8) * roomCtxt->activeMemPage + 8) & 0xfffffff0; osCreateMesgQueue(&roomCtxt->loadQueue, roomCtxt->loadMsg, 1); DmaMgr_SendRequestImpl(&roomCtxt->dmaRequest, roomCtxt->activeRoomVram, ctxt->roomAddrs[index].vromStart, size, @@ -108,8 +108,10 @@ s32 Room_HandleLoadCallbacks(GlobalContext* ctxt, RoomContext* roomCtxt) { if (!osRecvMesg(&roomCtxt->loadQueue, NULL, OS_MESG_NOBLOCK)) { roomCtxt->unk31 = 0; - roomCtxt->currRoom.segment = (void*)(roomCtxt->activeRoomVram); - gRspSegmentPhysAddrs[3] = roomCtxt->activeRoomVram + 0x80000000; + roomCtxt->currRoom.segment = roomCtxt->activeRoomVram; + // TODO: PHYSICAL_TO_VIRTUAL macro + // TODO: Segment number enum + gRspSegmentPhysAddrs[3] = (void*)((u32)roomCtxt->activeRoomVram + 0x80000000); Scene_ProcessHeader(ctxt, (SceneCmd*)roomCtxt->currRoom.segment); func_80123140(ctxt, (ActorPlayer*)ctxt->actorCtx.actorList[2].first); @@ -133,7 +135,9 @@ s32 Room_HandleLoadCallbacks(GlobalContext* ctxt, RoomContext* roomCtxt) { void Room_Draw(GlobalContext* ctxt, Room* room, u32 flags) { if (room->segment != NULL) { - gRspSegmentPhysAddrs[3] = (u32)room->segment + 0x80000000; + // TODO: PHYSICAL_TO_VIRTUAL macro + // TODO: Segment number enum + gRspSegmentPhysAddrs[3] = (void*)((u32)room->segment + 0x80000000); roomDrawFuncs[room->mesh->type0.type](ctxt, room, flags); } return; |
