Decompiled RefreshCamera

This commit is contained in:
Montagna Marco 2020-01-08 17:28:10 +01:00
parent 27e83a55ae
commit 3a3da05786
3 changed files with 55 additions and 2 deletions

View file

@ -16,7 +16,7 @@
#define FixedCamera ((void(__cdecl*)()) 0x0040E890)
#define CalculateCamera ((void(__cdecl*)()) 0x0040ED30)
#define BinocularCamera ((void(__cdecl*)()) 0x0040FC20)
#define RefreshCamera ((void(__cdecl*)(short,short*)) 0x004165E0)
//#define RefreshCamera ((void(__cdecl*)(short,short*)) 0x004165E0)
#define CameraCollisionBounds ((int (__cdecl*)(GAME_VECTOR*,int,int)) 0x0040F5C0)
#define do_new_cutscene_camera ((void(__cdecl*)()) 0x00421480)
#define SaveD3DCameraMatrix ((void(__cdecl*)()) 0x00497280)

View file

@ -3484,6 +3484,58 @@ void RumbleScreen()
}
}
void RefreshCamera(short type, short* data)
{
short trigger, value, targetOk;
targetOk = 2;
do
{
trigger = *(data++);
value = trigger & VALUE_BITS;
switch (TRIG_BITS(trigger))
{
case TO_CAMERA:
data++;
if (value == Camera.last)
{
Camera.number = value;
if ((Camera.timer < 0)
|| (Camera.type == LOOK_CAMERA)
|| (Camera.type == COMBAT_CAMERA))
{
Camera.timer = -1;
targetOk = 0;
break;
}
Camera.type = FIXED_CAMERA;
targetOk = 1;
}
else
targetOk = 0;
break;
case TO_TARGET:
if (Camera.type == LOOK_CAMERA || Camera.type == COMBAT_CAMERA)
break;
Camera.item = &Items[value];
break;
}
} while (!(trigger & END_BIT));
if (Camera.item)
if (!targetOk || (targetOk == 2 && Camera.item->lookedAt && Camera.item != Camera.lastItem))
Camera.item = NULL;
if (Camera.number == -1 && Camera.timer > 0)
Camera.timer = -1;
}
void Inject_Control()
{
INJECT(0x00416760, TestTriggers);

View file

@ -30,7 +30,7 @@
//#define RumbleScreen ((void (__cdecl*)()) 0x00442C90)
#define ExplodeItemNode ((int (__cdecl*)(ITEM_INFO*, int, int, int)) 0x0041ABF0)
//#define LavaBurn ((void (__cdecl*)(ITEM_INFO*)) 0x0048ADD0)
#define RefreshCamera ((void (__cdecl*)(short, short*)) 0x004165E0)
//#define RefreshCamera ((void (__cdecl*)(short, short*)) 0x004165E0)
//#define DoFlipMap ((void (__cdecl*)(short)) 0x00418910)
//#define PlaySoundTrack ((void (__cdecl*)(short, short)) 0x00418B90)
//#define AlterFloorHeight ((void (__cdecl*)(ITEM_INFO*, int)) 0x004159F0)
@ -86,6 +86,7 @@ void AddRoomFlipItems(ROOM_INFO* r);
void RemoveRoomFlipItems(ROOM_INFO* r);
void PlaySoundTrack(short track, short flags);
void RumbleScreen();
void RefreshCamera(short type, short* data);
unsigned __stdcall GameMain(void*);
void Inject_Control();