diff options
| author | Roman971 <32455037+Roman971@users.noreply.github.com> | 2020-05-01 17:09:20 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-01 11:09:20 -0400 |
| commit | 9f98210488073f1b5c8136152b95e3fc8970b6e4 (patch) | |
| tree | 9793615dfb0a6580cfb93bfbb9f8f5d6412f3a3e /src/code/z_map_mark.c | |
| parent | 9f1c996db5590edf0d612aeaeb10492f4391e8dc (diff) | |
Decompile z_map_exp.c (2 non matchings left) (#104)
Also documented the map data table (not decompiled yet however), and added a DungeonItem enum to use with gSaveContext.dungeonItems reads/writes.
Diffstat (limited to 'src/code/z_map_mark.c')
| -rw-r--r-- | src/code/z_map_mark.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/src/code/z_map_mark.c b/src/code/z_map_mark.c index 8fdef5d0c..798ec5874 100644 --- a/src/code/z_map_mark.c +++ b/src/code/z_map_mark.c @@ -18,9 +18,9 @@ typedef struct { /* 0x00 */ void* loadedRamAddr; // original name: "allocp" /* 0x04 */ u32 vromStart; /* 0x08 */ u32 vromEnd; - /* 0x0C */ u32 vramStart; - /* 0x10 */ u32 vramEnd; - /* 0x14 */ u32 vramTable; + /* 0x0C */ void* vramStart; + /* 0x10 */ void* vramEnd; + /* 0x14 */ void* vramTable; } MapMarkDataOverlay; // size = 0x18 static u32 sBaseImageSizes[] = { 0, 1, 2, 3 }; @@ -46,18 +46,16 @@ static MapMarkDataOverlay sMapMarkDataOvl = { NULL, (u32)_ovl_map_mark_dataSegmentRomStart, (u32)_ovl_map_mark_dataSegmentRomEnd, - (u32)_ovl_map_mark_dataSegmentStart, - (u32)_ovl_map_mark_dataSegmentEnd, - (u32)gMapMarkDataTable, + _ovl_map_mark_dataSegmentStart, + _ovl_map_mark_dataSegmentEnd, + gMapMarkDataTable, }; static MapMarksData** sLoadedMarkDataTable; -extern u8** D_8015FFD0; - void MapMark_Init(GlobalContext* globalCtx) { MapMarkDataOverlay* overlay = &sMapMarkDataOvl; - u32 overlaySize = overlay->vramEnd - overlay->vramStart; + u32 overlaySize = (u32)overlay->vramEnd - (u32)overlay->vramStart; overlay->loadedRamAddr = Game_Alloc(&globalCtx->state, overlaySize, "../z_map_mark.c", 235); LogUtils_CheckNullPointer("dlftbl->allocp", overlay->loadedRamAddr, "../z_map_mark.c", 236); @@ -65,10 +63,10 @@ void MapMark_Init(GlobalContext* globalCtx) { Overlay_Load(overlay->vromStart, overlay->vromEnd, overlay->vramStart, overlay->vramEnd, overlay->loadedRamAddr); sLoadedMarkDataTable = gMapMarkDataTable; - sLoadedMarkDataTable = - (void*)(s32)((overlay->vramTable != 0) - ? (void*)(overlay->vramTable - (s32)(overlay->vramStart - (s32)overlay->loadedRamAddr)) - : NULL); + sLoadedMarkDataTable = (void*)(u32)( + (overlay->vramTable != NULL) + ? (void*)((u32)overlay->vramTable - (s32)((u32)overlay->vramStart - (u32)overlay->loadedRamAddr)) + : NULL); } void MapMark_ClearPointers(GlobalContext* globalCtx) { @@ -81,24 +79,24 @@ void MapMark_Draw(GlobalContext* globalCtx) { MapMarkData* mapMarkData; MapMarkPoint* markPoint; MapMarkInfo* markInfo; - u16 dungeonId; + u16 dungeon; s32 i; s32 rectLeft; s32 rectTop; GraphicsContext* gfxCtx; Gfx* dispRefs[4]; - dungeonId = gSaveContext.dungeonIndex; + dungeon = gSaveContext.mapIndex; interfaceCtx = &globalCtx->interfaceCtx; - if ((D_8015FFD0 != NULL) && (globalCtx->interfaceCtx.roomNum >= D_8015FFD0[7][dungeonId])) { + if ((gMapData != NULL) && (globalCtx->interfaceCtx.mapRoomNum >= gMapData->dgnMinimapCount[dungeon])) { // Translates to: "ROOM NUMBER EXCEEDED, YIKES %d/%d MapMarkDraw PROCESSING INTERRUPTED" osSyncPrintf(VT_COL(RED, WHITE) "部屋番号がオーバーしてるで,ヤバイで %d/%d \nMapMarkDraw の処理を中断します\n", - VT_RST, globalCtx->interfaceCtx.roomNum, D_8015FFD0[7][dungeonId]); + VT_RST, globalCtx->interfaceCtx.mapRoomNum, gMapData->dgnMinimapCount[dungeon]); return; } - mapMarkData = &sLoadedMarkDataTable[dungeonId][interfaceCtx->roomNum][0]; + mapMarkData = &sLoadedMarkDataTable[dungeon][interfaceCtx->mapRoomNum][0]; gfxCtx = globalCtx->state.gfxCtx; Graph_OpenDisps(dispRefs, globalCtx->state.gfxCtx, "../z_map_mark.c", 303); |
