mirror of
https://github.com/zeldaret/tmc
synced 2026-08-17 21:33:45 -04:00
manager4: matched sub_0805795C
This commit is contained in:
+13
-19
@@ -62,37 +62,31 @@ void sub_08057920(Manager* this) {
|
||||
|
||||
void sub_08057A18(Manager*, DiggingCaveEntrance*);
|
||||
|
||||
NONMATCH("asm/non_matching/manager4/sub_0805795C.inc", u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr)) {
|
||||
u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) {
|
||||
u16 offsetX, offsetY, offsetX2, offsetY2;
|
||||
u32 tmp;
|
||||
if (gUnk_03004030.unk_00) { // TODO .address_width (?)
|
||||
u32 tmp, tmp2;
|
||||
if (gUnk_03004030.unk_08) {
|
||||
offsetX = gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX;
|
||||
offsetY = gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY;
|
||||
offsetX2 = (entr->unk_00 & 0x3F) * 16 + 8;
|
||||
offsetY2 = ((entr->unk_00 & 0xFC0) >> 6) * 16 + 0x18;
|
||||
if ((u32)(offsetX - offsetX2) + 0x18 > 0x30)
|
||||
tmp = offsetX - offsetX2;
|
||||
if (tmp + 0x18 > 0x30 || offsetY - offsetY2 + 8 > 0x10U)
|
||||
return 0;
|
||||
if ((u32)(offsetY - offsetY2) + 8 > 0x10)
|
||||
if (offsetY < offsetY2 && tmp + 0xC <= 0x18)
|
||||
return 0;
|
||||
if (((offsetY < offsetY2)))
|
||||
if ((u32)(offsetX - offsetX2) + 0xC <= 0x18)
|
||||
return 0;
|
||||
|
||||
sub_08057A18(this, entr);
|
||||
return 1;
|
||||
} else {
|
||||
// offsetX = ((gPlayerEntity.x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3F;
|
||||
// offsetY = ((gPlayerEntity.y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3F;
|
||||
// tmp = offsetX | (offsetY << 6);
|
||||
tmp = COORD_TO_TILE((&gPlayerEntity));
|
||||
if (tmp != entr->unk_00)
|
||||
if (COORD_TO_TILE(&gPlayerEntity) != entr->unk_00)
|
||||
return 0;
|
||||
offsetY = gRoomControls.roomOriginY + ((tmp >> 6) * 16) + 6;
|
||||
if (gPlayerEntity.y.HALF.HI >= offsetY)
|
||||
offsetY2 = gRoomControls.roomOriginY + ((entr->unk_00 >> 6) << 4) + 6;
|
||||
if (gPlayerEntity.y.HALF.HI >= offsetY2)
|
||||
return 0;
|
||||
sub_08057A18(this, entr);
|
||||
return 1;
|
||||
}
|
||||
sub_08057A18(this, entr);
|
||||
return 1;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
extern void sub_08080930();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user