diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 62198346e2b..dabaf3030e6 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -441,7 +441,7 @@ public: static void setLookPos(cXyz*); static void setPlayerSe(u32); static bool linkGrabSubjectNoDraw(fopAc_ac_c*); - void wolfGrabSubjectNoDraw(fopAc_ac_c*); + static bool wolfGrabSubjectNoDraw(fopAc_ac_c*); static bool checkRoomRestartStart(); static u32 checkCarryStartLightBallA(); static u32 checkCarryStartLightBallB(); diff --git a/rel/d/a/e/d_a_e_yc/d_a_e_yc.cpp b/rel/d/a/e/d_a_e_yc/d_a_e_yc.cpp index a601674aa95..d664b9a8ca6 100644 --- a/rel/d/a/e/d_a_e_yc/d_a_e_yc.cpp +++ b/rel/d/a/e/d_a_e_yc/d_a_e_yc.cpp @@ -513,6 +513,19 @@ static asm void daE_YC_Draw(e_yc_class* param_0) { #pragma pop /* 807F00BC-807F01AC 0002DC 00F0+00 1/1 0/0 0/0 .text damage_check__FP10e_yc_class */ +#ifdef NONMATCHING +static void damage_check(e_yc_class* param_0) { + param_0->mCcD_GStts.Move(); + fopAc_ac_c* player = dComIfGp_getPlayer(0); + if (param_0->field_0x6AA == 0 && !param_0->mCcD_GObjInf.ChkTgHit()) { + param_0->mpTgHitObj = param_0->mCcD_GObjInf.GetTgHitObj(); + + if (((daAlink_c*)player)->getCutType() != 0x2c) { + return; + } + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -521,6 +534,7 @@ static asm void damage_check(e_yc_class* param_0) { #include "asm/rel/d/a/e/d_a_e_yc/d_a_e_yc/damage_check__FP10e_yc_class.s" } #pragma pop +#endif /* ############################################################################################## */ /* 807F2878-807F287C 000014 0004+00 0/2 0/0 0/0 .rodata @3859 */ diff --git a/src/d/a/d_a_player.cpp b/src/d/a/d_a_player.cpp index 87abd94b826..3f4012ccceb 100644 --- a/src/d/a/d_a_player.cpp +++ b/src/d/a/d_a_player.cpp @@ -303,14 +303,9 @@ BOOL daPy_py_c::checkFishingRodItem(int i_itemNo) { } /* 8015EA48-8015EA88 159388 0040+00 0/0 3/3 0/0 .text checkBombItem__9daPy_py_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL daPy_py_c::checkBombItem(int param_0) { - nofralloc -#include "asm/d/a/d_a_player/checkBombItem__9daPy_py_cFi.s" +BOOL daPy_py_c::checkBombItem(int param_0) { + return param_0 == NORMAL_BOMB || param_0 == WATER_BOMB || param_0 == POKE_BOMB; } -#pragma pop /* 8015EA88-8015EAD8 1593C8 0050+00 0/0 5/5 0/0 .text checkBottleItem__9daPy_py_cFi */ // is there a way to write this with a switch? @@ -560,7 +555,7 @@ SECTION_SDATA2 static u32 lit_4668 = 0xFF8000FF; SECTION_SDATA2 static u32 lit_4669 = 0x321400FF; /* 8015F1A0-8015F2FC 159AE0 015C+00 1/0 1/1 0/0 .text draw__18daPy_sightPacket_cFv */ -// dumb instruction block out of order +// matches with literals #ifdef NONMATCHING void daPy_sightPacket_c::draw() { GXTexObj texObj; @@ -578,9 +573,11 @@ void daPy_sightPacket_c::draw() { GXSetTevColor(GX_TEVREG0, reg0); GXSetTevColor(GX_TEVREG1, reg1); + u8 tmp2 = mpImg->mipmapCount; + tmp2 = tmp2 > 1; GXInitTexObj(&texObj, mpData, mpImg->width, mpImg->height, (GXTexFmt)mpImg->format, (GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT, - (GXBool)(mpImg->mipmapCount > 1)); + (GXBool)(tmp2)); GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, GX_FALSE, GX_FALSE, GX_ANISO_1); GXLoadTexObj(&texObj, GX_TEXMAP0); GXLoadPosMtxImm(field_0x14, GX_PNMTX0); @@ -632,14 +629,11 @@ BOOL daPy_py_c::checkMasterSwordEquip() { /* 8015F3C4-8015F3FC 159D04 0038+00 0/0 4/4 0/0 .text checkWoodShieldEquip__9daPy_py_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL daPy_py_c::checkWoodShieldEquip() { - nofralloc -#include "asm/d/a/d_a_player/checkWoodShieldEquip__9daPy_py_cFv.s" +BOOL daPy_py_c::checkWoodShieldEquip() { + u16 equipShield = dComIfGs_getSelectEquipShield(); + + return equipShield == WOOD_SHIELD || equipShield == SHIELD; } -#pragma pop BOOL daPy_py_c::checkNowWolf() { return dComIfGp_getLinkPlayer()->i_checkWolf(); @@ -727,13 +721,15 @@ asm bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* param_0) { /* 8015F60C-8015F660 159F4C 0054+00 0/0 0/0 2/2 .text * wolfGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* param_0){nofralloc -#include "asm/d/a/d_a_player/wolfGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c.s" +bool daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* param_0){ + bool ret = false; + if (checkNowWolf()) { + if (linkGrabSubjectNoDraw(param_0)) { + ret = true; + } + } + return ret; } -#pragma pop u32 daPy_py_c::getLastSceneMode() { return dComIfGs_getLastSceneMode() & 0xF;