port SwitchCollision2

This commit is contained in:
rr- 2021-03-05 13:41:33 +01:00
parent f966020644
commit dce2736a1a
4 changed files with 67 additions and 22 deletions

View file

@ -558,7 +558,7 @@
<rect width="12.00" height="12.00" x="70.00" y="171.00" class="decompiled"><title>PickUpScion4Collision</title></rect> <rect width="12.00" height="12.00" x="70.00" y="171.00" class="decompiled"><title>PickUpScion4Collision</title></rect>
<rect width="12.00" height="12.00" x="84.00" y="171.00" class="decompiled"><title>MidasCollision</title></rect> <rect width="12.00" height="12.00" x="84.00" y="171.00" class="decompiled"><title>MidasCollision</title></rect>
<rect width="12.00" height="12.00" x="98.00" y="171.00" class="decompiled"><title>SwitchCollision</title></rect> <rect width="12.00" height="12.00" x="98.00" y="171.00" class="decompiled"><title>SwitchCollision</title></rect>
<rect width="12.00" height="12.00" x="112.00" y="171.00" class="named"><title>SwitchCollision2</title></rect> <rect width="12.00" height="12.00" x="112.00" y="171.00" class="decompiled"><title>SwitchCollision2</title></rect>
<rect width="12.00" height="12.00" x="126.00" y="171.00" class="named"><title>KeyHoleCollision</title></rect> <rect width="12.00" height="12.00" x="126.00" y="171.00" class="named"><title>KeyHoleCollision</title></rect>
<rect width="12.00" height="12.00" x="140.00" y="171.00" class="named"><title>PuzzleHoleCollision</title></rect> <rect width="12.00" height="12.00" x="140.00" y="171.00" class="named"><title>PuzzleHoleCollision</title></rect>
<rect width="12.00" height="12.00" x="154.00" y="171.00" class="named"><title>SwitchControl</title></rect> <rect width="12.00" height="12.00" x="154.00" y="171.00" class="named"><title>SwitchControl</title></rect>
@ -1029,7 +1029,7 @@
<rect width="11.03" height="12.00" x="659.07" y="352.13" class="todo"><title>sub_40C25A</title></rect> <rect width="11.03" height="12.00" x="659.07" y="352.13" class="todo"><title>sub_40C25A</title></rect>
<rect width="10.98" height="12.00" x="672.10" y="352.13" class="named"><title>phd_PutPolygons</title></rect> <rect width="10.98" height="12.00" x="672.10" y="352.13" class="named"><title>phd_PutPolygons</title></rect>
<rect width="10.92" height="12.00" x="685.08" y="352.13" class="decompiled"><title>phd_InitWindow</title></rect> <rect width="10.92" height="12.00" x="685.08" y="352.13" class="decompiled"><title>phd_InitWindow</title></rect>
<rect width="11.14" height="11.66" x="525.45" y="366.13" class="named"><title>SwitchCollision2</title></rect> <rect width="11.14" height="11.66" x="525.45" y="366.13" class="decompiled"><title>SwitchCollision2</title></rect>
<rect width="11.14" height="11.49" x="525.45" y="379.79" class="decompiled"><title>LaraAsRun</title></rect> <rect width="11.14" height="11.49" x="525.45" y="379.79" class="decompiled"><title>LaraAsRun</title></rect>
<rect width="11.14" height="11.49" x="525.45" y="393.28" class="named"><title>GunHit</title></rect> <rect width="11.14" height="11.49" x="525.45" y="393.28" class="named"><title>GunHit</title></rect>
<rect width="11.14" height="11.43" x="525.45" y="406.77" class="named"><title>mn_reset_sound_effects</title></rect> <rect width="11.14" height="11.43" x="525.45" y="406.77" class="named"><title>mn_reset_sound_effects</title></rect>
@ -1463,10 +1463,10 @@
<rect width="-0.06" height="-0.07" x="694.51" y="536.07" class="todo"><title>sub_440EF0</title></rect> <rect width="-0.06" height="-0.07" x="694.51" y="536.07" class="todo"><title>sub_440EF0</title></rect>
<rect width="-0.45" height="-0.55" x="696.45" y="536.07" class="todo"><title>sub_437BC0</title></rect> <rect width="-0.45" height="-0.55" x="696.45" y="536.07" class="todo"><title>sub_437BC0</title></rect>
<rect width="-0.45" height="-1.52" x="696.45" y="537.52" class="named"><title>S_CDVolume</title></rect> <rect width="-0.45" height="-1.52" x="696.45" y="537.52" class="named"><title>S_CDVolume</title></rect>
<rect width="12.00" height="12.00" x="0.00" y="564.50" class="decompiled"/><text x="17.00" y="570.50">Functions decompiled (count): 56.77%</text> <rect width="12.00" height="12.00" x="0.00" y="564.50" class="decompiled"/><text x="17.00" y="570.50">Functions decompiled (count): 56.91%</text>
<rect width="12.00" height="12.00" x="0.00" y="582.50" class="decompiled"/><text x="17.00" y="588.50">Functions decompiled (bytesize): 52.16%</text> <rect width="12.00" height="12.00" x="0.00" y="582.50" class="decompiled"/><text x="17.00" y="588.50">Functions decompiled (bytesize): 52.25%</text>
<rect width="12.00" height="12.00" x="0.00" y="600.50" class="named"/><text x="17.00" y="606.50">Functions not decompiled, but with known names (count): 29.14%</text> <rect width="12.00" height="12.00" x="0.00" y="600.50" class="named"/><text x="17.00" y="606.50">Functions not decompiled, but with known names (count): 29.00%</text>
<rect width="12.00" height="12.00" x="0.00" y="618.50" class="named"/><text x="17.00" y="624.50">Functions not decompiled, but with known names (bytesize): 32.02%</text> <rect width="12.00" height="12.00" x="0.00" y="618.50" class="named"/><text x="17.00" y="624.50">Functions not decompiled, but with known names (bytesize): 31.92%</text>
<rect width="12.00" height="12.00" x="0.00" y="636.50" class="todo"/><text x="17.00" y="642.50">Functions not decompiled, with unknown names (count): 14.09%</text> <rect width="12.00" height="12.00" x="0.00" y="636.50" class="todo"/><text x="17.00" y="642.50">Functions not decompiled, with unknown names (count): 14.09%</text>
<rect width="12.00" height="12.00" x="0.00" y="654.50" class="todo"/><text x="17.00" y="660.50">Functions not decompiled, with unknown names (bytesize): 15.83%</text> <rect width="12.00" height="12.00" x="0.00" y="654.50" class="todo"/><text x="17.00" y="660.50">Functions not decompiled, with unknown names (bytesize): 15.83%</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 157 KiB

Before After
Before After

View file

@ -786,7 +786,7 @@ PickUpScion4Collision 0x004333B0 0x00000108 +
MidasOnAfterInventory ---------- ---------- + MidasOnAfterInventory ---------- ---------- +
MidasCollision 0x004334C0 0x00000217 + MidasCollision 0x004334C0 0x00000217 +
SwitchCollision 0x004336F0 0x0000011C + SwitchCollision 0x004336F0 0x0000011C +
SwitchCollision2 0x00433810 0x000000F0 * SwitchCollision2 0x00433810 0x000000F0 +
KeyHoleOnAfterInventory ---------- ---------- - KeyHoleOnAfterInventory ---------- ---------- -
KeyHoleCollision 0x00433900 0x00000227 * KeyHoleCollision 0x00433900 0x00000227 *
PuzzleOnAfterInventory ---------- ---------- - PuzzleOnAfterInventory ---------- ---------- -

View file

@ -34,9 +34,6 @@ static int16_t PickUpBoundsUW[12] = {
+45 * PHD_DEGREE, +45 * PHD_DEGREE,
}; };
static PHD_VECTOR PickUpPosition = { 0, 0, -100 };
static PHD_VECTOR PickUpPositionUW = { 0, -200, -350 };
static int16_t PickUpScionBounds[12] = { static int16_t PickUpScionBounds[12] = {
-256, -256,
+256, +256,
@ -51,7 +48,6 @@ static int16_t PickUpScionBounds[12] = {
0, 0,
0, 0,
}; };
static PHD_VECTOR PickUpScionPosition = { 0, 640, -310 };
static int16_t PickUpScion4Bounds[12] = { static int16_t PickUpScion4Bounds[12] = {
-256, -256,
@ -67,17 +63,16 @@ static int16_t PickUpScion4Bounds[12] = {
0, 0,
0, 0,
}; };
static PHD_VECTOR PickUpScion4Position = { 0, 280, -512 + 105 };
static int16_t MidasBounds[12] = { static int16_t MidasBounds[12] = {
-700, -700,
700, +700,
384 - 100, +384 - 100,
384 + 100 + 512, +384 + 100 + 512,
-700, -700,
700, +700,
-10 * PHD_DEGREE, -10 * PHD_DEGREE,
10 * PHD_DEGREE, +10 * PHD_DEGREE,
-30 * PHD_DEGREE, -30 * PHD_DEGREE,
+30 * PHD_DEGREE, +30 * PHD_DEGREE,
-10 * PHD_DEGREE, -10 * PHD_DEGREE,
@ -87,10 +82,10 @@ static int16_t MidasBounds[12] = {
static int16_t Switch1Bounds[12] = { static int16_t Switch1Bounds[12] = {
-200, -200,
+200, +200,
0, +0,
0, +0,
WALL_L / 2 - 200, +WALL_L / 2 - 200,
WALL_L / 2, +WALL_L / 2,
-10 * PHD_DEGREE, -10 * PHD_DEGREE,
+10 * PHD_DEGREE, +10 * PHD_DEGREE,
-30 * PHD_DEGREE, -30 * PHD_DEGREE,
@ -99,6 +94,18 @@ static int16_t Switch1Bounds[12] = {
+10 * PHD_DEGREE, +10 * PHD_DEGREE,
}; };
static int16_t Switch2Bounds[12] = {
-WALL_L, +WALL_L, -WALL_L, +WALL_L,
-WALL_L, +WALL_L / 2, -80 * PHD_DEGREE, +80 * PHD_DEGREE,
-80 * PHD_DEGREE, +80 * PHD_DEGREE, -80 * PHD_DEGREE, +80 * PHD_DEGREE,
};
static PHD_VECTOR PickUpPosition = { 0, 0, -100 };
static PHD_VECTOR PickUpPositionUW = { 0, -200, -350 };
static PHD_VECTOR PickUpScionPosition = { 0, 640, -310 };
static PHD_VECTOR PickUpScion4Position = { 0, 280, -512 + 105 };
static PHD_VECTOR Switch2Position = { 0, 0, 108 };
void AnimateLaraUntil(ITEM_INFO* lara_item, int32_t goal) void AnimateLaraUntil(ITEM_INFO* lara_item, int32_t goal)
{ {
lara_item->goal_anim_state = goal; lara_item->goal_anim_state = goal;
@ -340,6 +347,43 @@ void SwitchCollision(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll)
} }
} }
void SwitchCollision2(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll)
{
ITEM_INFO* item = &Items[item_num];
if (!CHK_ANY(Input, IN_ACTION) || item->status != IS_NOT_ACTIVE
|| Lara.water_status != LWS_UNDERWATER) {
return;
}
if (lara_item->current_anim_state != AS_TREAD) {
return;
}
if (!TestLaraPosition(Switch2Bounds, item, lara_item)) {
return;
}
if (item->current_anim_state == SS_ON
|| item->current_anim_state == SS_OFF) {
if (!MoveLaraPosition(&Switch2Position, item, lara_item)) {
return;
}
lara_item->fall_speed = 0;
AnimateLaraUntil(lara_item, AS_SWITCHON);
lara_item->goal_anim_state = AS_TREAD;
Lara.gun_status = LGS_HANDSBUSY;
item->status = IS_ACTIVE;
if (item->current_anim_state == SS_ON) {
item->goal_anim_state = SS_OFF;
} else {
item->goal_anim_state = SS_ON;
}
AddActiveItem(item_num);
AnimateItem(item);
}
}
int32_t KeyTrigger(int16_t item_num) int32_t KeyTrigger(int16_t item_num)
{ {
ITEM_INFO* item = &Items[item_num]; ITEM_INFO* item = &Items[item_num];
@ -366,5 +410,6 @@ void T1MInjectGamePickup()
INJECT(0x004333B0, PickUpScion4Collision); INJECT(0x004333B0, PickUpScion4Collision);
INJECT(0x004334C0, MidasCollision); INJECT(0x004334C0, MidasCollision);
INJECT(0x004336F0, SwitchCollision); INJECT(0x004336F0, SwitchCollision);
INJECT(0x00433810, SwitchCollision2);
INJECT(0x00433EA0, KeyTrigger); INJECT(0x00433EA0, KeyTrigger);
} }

View file

@ -4,7 +4,6 @@
#include <stdint.h> #include <stdint.h>
// clang-format off // clang-format off
#define SwitchCollision2 ((void (*)(int16_t item_num, ITEM_INFO* litem, COLL_INFO* coll))0x00433810)
#define KeyHoleCollision ((void (*)(int16_t item_num, ITEM_INFO* litem, COLL_INFO* coll))0x00433900) #define KeyHoleCollision ((void (*)(int16_t item_num, ITEM_INFO* litem, COLL_INFO* coll))0x00433900)
#define PuzzleHoleCollision ((void (*)(int16_t item_num, ITEM_INFO* litem, COLL_INFO* coll))0x00433B40) #define PuzzleHoleCollision ((void (*)(int16_t item_num, ITEM_INFO* litem, COLL_INFO* coll))0x00433B40)
#define SwitchControl ((void (*)(int16_t item_num))0x00433DE0) #define SwitchControl ((void (*)(int16_t item_num))0x00433DE0)
@ -21,6 +20,7 @@ void PickUpScion4Collision(
int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll); int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll);
void MidasCollision(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll); void MidasCollision(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll);
void SwitchCollision(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll); void SwitchCollision(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll);
void SwitchCollision2(int16_t item_num, ITEM_INFO* lara_item, COLL_INFO* coll);
int32_t KeyTrigger(int16_t item_num); int32_t KeyTrigger(int16_t item_num);
void T1MInjectGamePickup(); void T1MInjectGamePickup();