diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2022-12-19 11:06:32 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-19 12:06:32 -0700 |
| commit | ca71275bbecc7db9a4eeca3a6ac4215b66de4318 (patch) | |
| tree | c2851f8cec211216fe0cb6a31a0260a62fc3bf53 /src/d/save/d_save.cpp | |
| parent | 1114b13da81ab0b52fd4bb56a32f32331a21e581 (diff) | |
big d_a_alink pass (#214)
* d_a_alink pass1 wip
* more d_a_alink work
* remove asm
* more daalink work
* 20% dol code decompiled
* fixed some nonmatchings for building
* a few daalink functions and labeling some HIO data
Diffstat (limited to 'src/d/save/d_save.cpp')
| -rw-r--r-- | src/d/save/d_save.cpp | 177 |
1 files changed, 79 insertions, 98 deletions
diff --git a/src/d/save/d_save.cpp b/src/d/save/d_save.cpp index 2f653a457d..37014fdffc 100644 --- a/src/d/save/d_save.cpp +++ b/src/d/save/d_save.cpp @@ -242,8 +242,8 @@ void dSv_player_status_a_c::init() { unk10 = 0; for (int i = 0; i < MAX_SELECT_ITEM; i++) { - mSelectItem[i] = NO_ITEM; - mMixItem[i] = NO_ITEM; + mSelectItem[i] = 0xFF; + mMixItem[i] = 0xFF; dComIfGp_setSelectItem(i); } @@ -268,9 +268,9 @@ void dSv_player_status_a_c::init() { } } -void dSv_player_status_a_c::setSelectItemIndex(int i_no, u8 item_index) { +void dSv_player_status_a_c::setSelectItemIndex(int i_no, u8 i_slotNo) { if (i_no < MAX_SELECT_ITEM) { - mSelectItem[i_no] = item_index; + mSelectItem[i_no] = i_slotNo; } } @@ -281,9 +281,9 @@ u8 dSv_player_status_a_c::getSelectItemIndex(int i_no) const { return 0; } -void dSv_player_status_a_c::setMixItemIndex(int i_no, u8 item_index) { +void dSv_player_status_a_c::setMixItemIndex(int i_no, u8 i_slotNo) { if (i_no < MAX_SELECT_ITEM) { - mMixItem[i_no] = item_index; + mMixItem[i_no] = i_slotNo; } } @@ -312,6 +312,7 @@ BOOL dSv_player_status_a_c::isMagicFlag(u8 i_magic) const { if (i_magic == 0) { return i_dComIfGs_isEventBit(0x2304); // Magic Unlocked } + return (mMagicFlag & (u8)(1 << i_magic)) ? TRUE : FALSE; } @@ -423,7 +424,7 @@ void dSv_player_last_mark_info_c::init() { } void dSv_player_last_mark_info_c::setWarpItemData(const char* i_name, const cXyz& i_pos, - s16 i_angle, s8 i_roomNo, u8 unk1, u8 unk2) { + s16 i_angle, s8 i_roomNo, u8, u8) { strcpy(mName, i_name); mPos.set(i_pos); mAngleY = i_angle; @@ -437,25 +438,25 @@ void dSv_player_item_c::init() { } } -void dSv_player_item_c::setItem(int item_slot, u8 i_itemNo) { - if (item_slot < MAX_ITEM_SLOTS) { - mItems[item_slot] = i_itemNo; +void dSv_player_item_c::setItem(int i_slotNo, u8 i_itemNo) { + if (i_slotNo < MAX_ITEM_SLOTS) { + mItems[i_slotNo] = i_itemNo; setLineUpItem(); } for (int i = DEFAULT_SELECT_ITEM_INDEX; i < MAX_SELECT_ITEM - 1; i++) { - if (item_slot == dComIfGs_getSelectItemIndex(i)) { + if (i_slotNo == dComIfGs_getSelectItemIndex(i)) { dComIfGp_setSelectItem(i); } } } -u8 dSv_player_item_c::getItem(int slot_no, bool check_combo) const { - if (slot_no < MAX_ITEM_SLOTS) { - if (check_combo) { +u8 dSv_player_item_c::getItem(int i_slotNo, bool i_checkCombo) const { + if (i_slotNo < MAX_ITEM_SLOTS) { + if (i_checkCombo) { for (int i = 0; i < SELECT_ITEM_NUM; i++) { - if ((slot_no == dComIfGs_getSelectItemIndex(i) || - slot_no == dComIfGs_getMixItemIndex(i)) && + if ((i_slotNo == dComIfGs_getSelectItemIndex(i) || + i_slotNo == dComIfGs_getMixItemIndex(i)) && dComIfGs_getMixItemIndex(i) != NO_ITEM) { u8 select_item = mItems[dComIfGs_getSelectItemIndex(i)]; u8 mix_item = mItems[dComIfGs_getMixItemIndex(i)]; @@ -516,14 +517,16 @@ u8 dSv_player_item_c::getItem(int slot_no, bool check_combo) const { } } } - return mItems[slot_no]; + return mItems[i_slotNo]; } return NO_ITEM; } -static u8 i_item_lst[23] = {0x0A, 0x08, 0x06, 0x02, 0x09, 0x04, 0x03, 0x00, 0x01, 0x17, 0x14, 0x05, - 0x0F, 0x10, 0x11, 0x0B, 0x0C, 0x0D, 0x0E, 0x13, 0x12, 0x16, 0x15}; +static u8 i_item_lst[23] = { + 0x0A, 0x08, 0x06, 0x02, 0x09, 0x04, 0x03, 0x00, 0x01, 0x17, 0x14, 0x05, + 0x0F, 0x10, 0x11, 0x0B, 0x0C, 0x0D, 0x0E, 0x13, 0x12, 0x16, 0x15, +}; /* 800332F8-80033354 02DC38 005C+00 2/2 0/0 0/0 .text setLineUpItem__17dSv_player_item_cFv */ // this is close @@ -554,10 +557,11 @@ asm void dSv_player_item_c::setLineUpItem() { #pragma pop #endif -u8 dSv_player_item_c::getLineUpItem(int slot_no) const { - if (slot_no < MAX_ITEM_SLOTS) { - return mItemSlots[slot_no]; +u8 dSv_player_item_c::getLineUpItem(int i_slotNo) const { + if (i_slotNo < MAX_ITEM_SLOTS) { + return mItemSlots[i_slotNo]; } + return NO_ITEM; } @@ -771,13 +775,13 @@ u8 dSv_player_item_c::checkEmptyBottle() { return bottleNum; } -void dSv_player_item_c::setBombBagItemIn(u8 curBomb, u8 newBomb, bool setNum) { +void dSv_player_item_c::setBombBagItemIn(u8 i_curBomb, u8 i_newBomb, bool i_setNum) { for (int i = 0; i < 3; i++) { - if (curBomb == mItems[i + SLOT_15]) { - setItem(i + SLOT_15, newBomb); + if (i_curBomb == mItems[i + SLOT_15]) { + setItem(i + SLOT_15, i_newBomb); - if (setNum == true && newBomb != BOMB_BAG_LV1) { - dComIfGs_setBombNum(i, dComIfGs_getBombMax(newBomb)); + if (i_setNum == true && i_newBomb != BOMB_BAG_LV1) { + dComIfGs_setBombNum(i, dComIfGs_getBombMax(i_newBomb)); } for (int j = 0; j < 3; j++) { @@ -790,16 +794,16 @@ void dSv_player_item_c::setBombBagItemIn(u8 curBomb, u8 newBomb, bool setNum) { } } -void dSv_player_item_c::setBombBagItemIn(u8 curBomb, u8 newBomb, u8 bombNum, bool setNum) { +void dSv_player_item_c::setBombBagItemIn(u8 i_curBomb, u8 i_newBomb, u8 i_bombNum, bool i_setNum) { for (int i = 0; i < 3; i++) { - if (curBomb == mItems[i + SLOT_15]) { - setItem(i + SLOT_15, newBomb); + if (i_curBomb == mItems[i + SLOT_15]) { + setItem(i + SLOT_15, i_newBomb); - if (setNum == 1 && newBomb != BOMB_BAG_LV1) { - if (bombNum > dComIfGs_getBombMax(newBomb)) { - bombNum = dComIfGs_getBombMax(newBomb); + if (i_setNum == 1 && i_newBomb != BOMB_BAG_LV1) { + if (i_bombNum > dComIfGs_getBombMax(i_newBomb)) { + i_bombNum = dComIfGs_getBombMax(i_newBomb); } - dComIfGs_setBombNum(i, bombNum); + dComIfGs_setBombNum(i, i_bombNum); } for (int j = 0; j < 3; j++) { @@ -812,12 +816,12 @@ void dSv_player_item_c::setBombBagItemIn(u8 curBomb, u8 newBomb, u8 bombNum, boo } } -void dSv_player_item_c::setEmptyBombBagItemIn(u8 newBomb, bool setNum) { - setBombBagItemIn(BOMB_BAG_LV1, newBomb, setNum); +void dSv_player_item_c::setEmptyBombBagItemIn(u8 i_newBomb, bool i_setNum) { + setBombBagItemIn(BOMB_BAG_LV1, i_newBomb, i_setNum); } -void dSv_player_item_c::setEmptyBombBagItemIn(u8 newBomb, u8 bombNum, bool setNum) { - setBombBagItemIn(BOMB_BAG_LV1, newBomb, bombNum, setNum); +void dSv_player_item_c::setEmptyBombBagItemIn(u8 i_newBomb, u8 i_bombNum, bool i_setNum) { + setBombBagItemIn(BOMB_BAG_LV1, i_newBomb, i_bombNum, i_setNum); } void dSv_player_item_c::setEmptyBombBag() { @@ -829,20 +833,20 @@ void dSv_player_item_c::setEmptyBombBag() { } } -void dSv_player_item_c::setEmptyBombBag(u8 newBomb, u8 bombNum) { +void dSv_player_item_c::setEmptyBombBag(u8 i_newBomb, u8 i_bombNum) { for (int i = 0; i < 3; i++) { if (dComIfGs_getItem((u8)(i + SLOT_15), true) == NO_ITEM) { - dComIfGs_setItem((u8)(i + SLOT_15), newBomb); + dComIfGs_setItem((u8)(i + SLOT_15), i_newBomb); - if (newBomb == BOMB_BAG_LV1) { + if (i_newBomb == BOMB_BAG_LV1) { return; } - if (bombNum > dComIfGs_getBombMax(newBomb)) { - bombNum = dComIfGs_getBombMax(newBomb); + if (i_bombNum > dComIfGs_getBombMax(i_newBomb)) { + i_bombNum = dComIfGs_getBombMax(i_newBomb); } - dComIfGs_setBombNum(i, bombNum); + dComIfGs_setBombNum(i, i_bombNum); return; } } @@ -895,17 +899,17 @@ void dSv_player_item_c::setBaitItem(u8 i_itemNo) { switch (i_itemNo) { case BEE_CHILD: { i_dComIfGs_isItemFirstBit(ZORAS_JEWEL) ? mItems[SLOT_20] = JEWEL_BEE_ROD : - mItems[SLOT_20] = BEE_ROD; + mItems[SLOT_20] = BEE_ROD; break; } case WORM: { i_dComIfGs_isItemFirstBit(ZORAS_JEWEL) ? mItems[SLOT_20] = JEWEL_WORM_ROD : - mItems[SLOT_20] = WORM_ROD; + mItems[SLOT_20] = WORM_ROD; break; } case NO_ITEM: { i_dComIfGs_isItemFirstBit(ZORAS_JEWEL) ? mItems[SLOT_20] = JEWEL_ROD : - mItems[SLOT_20] = FISHING_ROD_1; + mItems[SLOT_20] = FISHING_ROD_1; break; } } @@ -922,41 +926,19 @@ void dSv_player_get_item_c::init() { } /* 80033E60-80033E94 02E7A0 0034+00 0/0 3/3 1/1 .text onFirstBit__21dSv_player_get_item_cFUc */ -// this is a few instructions off -#ifdef NONMATCHING void dSv_player_get_item_c::onFirstBit(u8 i_itemNo) { - mItemFlags[i_itemNo >> 5] |= (1 << (i_itemNo & 0x1F)); -} -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dSv_player_get_item_c::onFirstBit(u8 i_itemNo) { - nofralloc -#include "asm/d/save/d_save/onFirstBit__21dSv_player_get_item_cFUc.s" + mItemFlags[i_itemNo / 32] |= (1 << (i_itemNo % 32)); } -#pragma pop -#endif /* 80033E94-80033EC8 02E7D4 0034+00 0/0 7/7 1/1 .text offFirstBit__21dSv_player_get_item_cFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dSv_player_get_item_c::offFirstBit(u8 i_itemNo) { - nofralloc -#include "asm/d/save/d_save/offFirstBit__21dSv_player_get_item_cFUc.s" +void dSv_player_get_item_c::offFirstBit(u8 i_itemNo) { + mItemFlags[i_itemNo / 32] &= ~(1 << (i_itemNo % 32)); } -#pragma pop /* 80033EC8-80033F00 02E808 0038+00 4/4 87/87 2/2 .text isFirstBit__21dSv_player_get_item_cCFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm int dSv_player_get_item_c::isFirstBit(u8 i_itemNo) const { - nofralloc -#include "asm/d/save/d_save/isFirstBit__21dSv_player_get_item_cCFUc.s" +int dSv_player_get_item_c::isFirstBit(u8 i_itemNo) const { + return mItemFlags[i_itemNo / 32] & (1 << (i_itemNo % 32)) ? TRUE : FALSE; } -#pragma pop void dSv_player_item_record_c::init() { mArrowNum = 0; @@ -976,20 +958,20 @@ void dSv_player_item_record_c::init() { } } -void dSv_player_item_record_c::setBombNum(u8 i_bagIdx, u8 bag_id) { - mBombNum[i_bagIdx] = bag_id; +void dSv_player_item_record_c::setBombNum(u8 i_bagIdx, u8 i_bombNum) { + mBombNum[i_bagIdx] = i_bombNum; } u8 dSv_player_item_record_c::getBombNum(u8 i_bagIdx) const { return mBombNum[i_bagIdx]; } -void dSv_player_item_record_c::setBottleNum(u8 i_bottleIdx, u8 bottle_num) { - mBottleNum[i_bottleIdx] = bottle_num; +void dSv_player_item_record_c::setBottleNum(u8 i_bottleIdx, u8 i_bottleNum) { + mBottleNum[i_bottleIdx] = i_bottleNum; } -u8 dSv_player_item_record_c::addBottleNum(u8 i_bottleIdx, s16 num) { - int bottleNum = mBottleNum[i_bottleIdx] + num; +u8 dSv_player_item_record_c::addBottleNum(u8 i_bottleIdx, s16 i_no) { + int bottleNum = mBottleNum[i_bottleIdx] + i_no; dComIfGs_getItem((u8)(i_bottleIdx + SLOT_11), true); @@ -1018,27 +1000,27 @@ void dSv_player_item_max_c::init() { mItemMax[7] = 0; } -void dSv_player_item_max_c::setBombNum(u8 bomb_id, u8 bomb_max) { - switch (bomb_id) { +void dSv_player_item_max_c::setBombNum(u8 i_bombType, u8 i_maxNum) { + switch (i_bombType) { case NORMAL_BOMB: - mItemMax[NORMAL_BOMB_MAX] = bomb_max; + mItemMax[NORMAL_BOMB_MAX] = i_maxNum; return; case WATER_BOMB: - mItemMax[WATER_BOMB_MAX] = bomb_max; + mItemMax[WATER_BOMB_MAX] = i_maxNum; return; case POKE_BOMB: - mItemMax[POKE_BOMB_MAX] = bomb_max; + mItemMax[POKE_BOMB_MAX] = i_maxNum; return; } } -u8 dSv_player_item_max_c::getBombNum(u8 bombId) const { +u8 dSv_player_item_max_c::getBombNum(u8 i_bombType) const { u8 lv_multiplier = 1; if (i_dComIfGs_isItemFirstBit(BOMB_BAG_LV2)) { lv_multiplier = 2; } - switch (bombId) { + switch (i_bombType) { case NORMAL_BOMB: return (u8)(mItemMax[NORMAL_BOMB_MAX] * lv_multiplier); case WATER_BOMB: @@ -1106,9 +1088,9 @@ void dSv_light_drop_c::init() { } } -void dSv_light_drop_c::setLightDropNum(u8 i_nowLevel, u8 dropNum) { +void dSv_light_drop_c::setLightDropNum(u8 i_nowLevel, u8 i_dropNum) { if (i_nowLevel < LIGHT_DROP_STAGE || i_nowLevel > 6) { - mLightDropNum[i_nowLevel] = dropNum; + mLightDropNum[i_nowLevel] = i_dropNum; } } @@ -1166,9 +1148,9 @@ void dSv_fishing_info_c::init() { } } -void dSv_fishing_info_c::addFishCount(u8 fish_index) { - if (mFishCount[fish_index] < 999) { - mFishCount[fish_index] += 1; +void dSv_fishing_info_c::addFishCount(u8 i_fishIdx) { + if (mFishCount[i_fishIdx] < 999) { + mFishCount[i_fishIdx] += 1; } } @@ -1319,7 +1301,7 @@ void dSv_memBit_c::onDungeonItem(int i_no) { } s32 dSv_memBit_c::isDungeonItem(int i_no) const { - return mDungeonItem & (u8)(1 << i_no) ? 1 : 0; + return mDungeonItem & (u8)(1 << i_no) ? TRUE : FALSE; } void dSv_event_c::init() { @@ -1384,15 +1366,15 @@ BOOL dSv_memory2_c::isVisitedRoom(int i_no) { return (1 << (i_no & 0x1F) & mVisitedRoom[i_no >> 5]) ? TRUE : FALSE; } -bool dSv_danBit_c::init(s8 i_stage) { - if (i_stage != mStageNo) { +bool dSv_danBit_c::init(s8 i_stageNo) { + if (i_stageNo != mStageNo) { mSwitch[0] = 0; mSwitch[1] = 0; mItem[0] = 0; mItem[1] = 0; mItem[2] = 0; mItem[3] = 0; - mStageNo = i_stage; + mStageNo = i_stageNo; unk1 = 0; for (int i = 0; i < 16; i++) { @@ -1921,8 +1903,7 @@ int dSv_info_c::initdata_to_card(char* card_ptr, int dataNum) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm int dSv_info_c::initdata_to_card(char* card_ptr, int dataNum) { - nofralloc +asm int dSv_info_c::initdata_to_card(char* card_ptr, int dataNum){nofralloc #include "asm/d/save/d_save/initdata_to_card__10dSv_info_cFPci.s" } #pragma pop |
