Made ArmsItem.cpp ASM-accurate

This commit is contained in:
Clownacy 2019-05-13 19:00:48 +01:00
parent 9b82baeb02
commit d3af5e372f
2 changed files with 81 additions and 10 deletions

View file

@ -2,10 +2,78 @@
# = (0x401000 - PE header offset) (0x400 for VC5 linker)
address_offset = 0x400000
[[func]]
name = "ClearArmsData"
addr = 0x401000
[[func]]
name = "ClearItemData"
addr = 0x401030
[[func]]
name = "AddArmsData"
addr = 0x401050
[[func]]
name = "SubArmsData"
addr = 0x401160
[[func]]
name = "TradeArms"
addr = 0x401220
[[func]]
name = "AddItemData"
addr = 0x4012D0
[[func]]
name = "SubItemData"
addr = 0x401330
[[func]]
name = "MoveCampCursor"
addr = 0x4013C0
[[func]]
name = "PutCampObject"
addr = 0x4016F0
[[func]]
name = "CampLoop"
addr = 0x401D10
[[func]]
name = "CheckItem"
addr = 0x401F20
[[func]]
name = "CheckArms"
addr = 0x401F60
[[func]]
name = "UseArmsEnergy"
addr = 0x401FA0
[[func]]
name = "ChargeArmsEnergy"
addr = 0x402020
[[func]]
name = "FullArmsEnergy"
addr = 0x402090
[[func]]
name = "RotationArms"
addr = 0x4020E0
[[func]]
name = "RotationArmsRev"
addr = 0x402190
[[func]]
name = "ChangeToFirstArms"
addr = 0x402240
[[func]]
name = "InitBack"
addr = 0x402270

View file

@ -270,6 +270,10 @@ void MoveCampCursor()
void PutCampObject()
{
int i;
RECT rcArms;
RECT rcItem;
// Get rects
RECT rcPer = {72, 48, 80, 56};
RECT rcNone = {80, 48, 96, 56};
@ -284,11 +288,10 @@ void PutCampObject()
RECT rcBoxBottom = {0, 16, 244, 24};
// Draw box
int y;
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, (WINDOW_HEIGHT - 224) / 2, &rcBoxTop, SURFACE_ID_TEXT_BOX);
for (y = 1; y < 18; y++)
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, ((WINDOW_HEIGHT - 240) / 2) + (8 * (y + 1)), &rcBoxBody, SURFACE_ID_TEXT_BOX);
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, ((WINDOW_HEIGHT - 240) / 2) + (8 * (y + 1)), &rcBoxBottom, SURFACE_ID_TEXT_BOX);
for (i = 1; i < 18; ++i)
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, ((WINDOW_HEIGHT - 240) / 2) + (8 * (i + 1)), &rcBoxBody, SURFACE_ID_TEXT_BOX);
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, ((WINDOW_HEIGHT - 240) / 2) + (8 * (i + 1)), &rcBoxBottom, SURFACE_ID_TEXT_BOX);
// Move titles
if (gCampTitleY > (WINDOW_HEIGHT - 208) / 2)
@ -308,12 +311,11 @@ void PutCampObject()
PutBitmap3(&rcView, 40 * gSelectedArms + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT / 2) - 96, &rcCur1[1], SURFACE_ID_TEXT_BOX);
// Draw arms
for (int i = 0; i < ARMS_MAX; i++)
for (i = 0; i < ARMS_MAX; i++)
{
if (gArmsData[i].code == 0)
break;
RECT rcArms;
rcArms.left = 16 * (gArmsData[i].code % 16);
rcArms.right = rcArms.left + 16;
rcArms.top = 16 * (gArmsData[i].code / 16);
@ -343,12 +345,11 @@ void PutCampObject()
else
PutBitmap3(&rcView, 32 * (gSelectedItem % 6) + (WINDOW_WIDTH - 224) / 2, 16 * (gSelectedItem / 6) + (WINDOW_HEIGHT - 88) / 2, &rcCur2[1], SURFACE_ID_TEXT_BOX);
for (int i = 0; i < ITEM_MAX; i++)
for (i = 0; i < ITEM_MAX; i++)
{
if (gItemData[i].code == 0)
break;
RECT rcItem;
rcItem.left = 32 * (gItemData[i].code % 8);
rcItem.right = rcItem.left + 32;
rcItem.top = 16 * (gItemData[i].code / 8);
@ -360,10 +361,12 @@ void PutCampObject()
int CampLoop()
{
int arms_num;
char old_script_path[PATH_LENGTH];
RECT rcView = {0, 0, WINDOW_WIDTH, WINDOW_HEIGHT};
// Load the inventory script
char old_script_path[PATH_LENGTH];
GetTextScriptPath(old_script_path);
LoadTextScript2("ArmsItem.tsc");
@ -373,7 +376,7 @@ int CampLoop()
gSelectedItem = 0;
// Run script
int arms_num = 0;
arms_num = 0;
for (; gArmsData[arms_num].code != 0;)
++arms_num;