Merge pull request #20 from Clownacy/master
Merge Clownacy/master into master
This commit is contained in:
commit
5a2f98ece4
23 changed files with 669 additions and 354 deletions
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@ ifeq ($(RELEASE), 1)
|
||||||
LDFLAGS = -s
|
LDFLAGS = -s
|
||||||
FILENAME_DEF = CSE2
|
FILENAME_DEF = CSE2
|
||||||
else
|
else
|
||||||
CXXFLAGS = -O0 -g
|
CXXFLAGS = -Og -g3
|
||||||
FILENAME_DEF = CSE2d
|
FILENAME_DEF = CSE2d
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,78 @@
|
||||||
# = (0x401000 - PE header offset) (0x400 for VC5 linker)
|
# = (0x401000 - PE header offset) (0x400 for VC5 linker)
|
||||||
address_offset = 0x400000
|
address_offset = 0x400000
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ClearArmsData"
|
||||||
|
addr = 0x401000
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ClearItemData"
|
||||||
|
addr = 0x401030
|
||||||
|
|
||||||
[[func]]
|
[[func]]
|
||||||
name = "AddArmsData"
|
name = "AddArmsData"
|
||||||
addr = 0x401050
|
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]]
|
[[func]]
|
||||||
name = "InitBack"
|
name = "InitBack"
|
||||||
addr = 0x402270
|
addr = 0x402270
|
||||||
|
@ -287,6 +355,70 @@ addr = 0x40AD60
|
||||||
name = "DefaultConfigData"
|
name = "DefaultConfigData"
|
||||||
addr = 0x40AE30
|
addr = 0x40AE30
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ActionStripper"
|
||||||
|
addr = 0x40CF90
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "PutStripper"
|
||||||
|
addr = 0x40D010
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "SetStripper"
|
||||||
|
addr = 0x40D150
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "RestoreStripper"
|
||||||
|
addr = 0x40D240
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ActionIllust"
|
||||||
|
addr = 0x40D2D0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "PutIllust"
|
||||||
|
addr = 0x40D350
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ReloadIllust"
|
||||||
|
addr = 0x40D3A0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "InitCreditScript"
|
||||||
|
addr = 0x40D3E0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ReleaseCreditScript"
|
||||||
|
addr = 0x40D410
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "StartCreditScript"
|
||||||
|
addr = 0x40D440
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ActionCredit"
|
||||||
|
addr = 0x40D5C0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ActionCredit_Read"
|
||||||
|
addr = 0x40D620
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "GetScriptNumber"
|
||||||
|
addr = 0x40DB00
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "SetCreditIllust"
|
||||||
|
addr = 0x40DB40
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "CutCreditIllust"
|
||||||
|
addr = 0x40DB60
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "Scene_DownIsland"
|
||||||
|
addr = 0x40DB70
|
||||||
|
|
||||||
[[func]]
|
[[func]]
|
||||||
name = "Call_Escape"
|
name = "Call_Escape"
|
||||||
addr = 0x40DD70
|
addr = 0x40DD70
|
||||||
|
@ -830,6 +962,30 @@ addr = 0x41D260
|
||||||
name = "InitializeGame"
|
name = "InitializeGame"
|
||||||
addr = 0x41D550
|
addr = 0x41D550
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ClearPermitStage"
|
||||||
|
addr = 0x41D610
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "AddPermitStage"
|
||||||
|
addr = 0x41D630
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "SubPermitStage"
|
||||||
|
addr = 0x41D6A0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "MoveStageSelectCursor"
|
||||||
|
addr = 0x41D740
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "PutStageSelectObject"
|
||||||
|
addr = 0x41D840
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "StageSelectLoop"
|
||||||
|
addr = 0x41DA00
|
||||||
|
|
||||||
[[func]]
|
[[func]]
|
||||||
name = "ShootBullet_Frontia1"
|
name = "ShootBullet_Frontia1"
|
||||||
addr = 0x41DBD0
|
addr = 0x41DBD0
|
||||||
|
@ -906,6 +1062,62 @@ addr = 0x421040
|
||||||
name = "PutStar"
|
name = "PutStar"
|
||||||
addr = 0x4213B0
|
addr = 0x4213B0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "InitTextScript2"
|
||||||
|
addr = 0x4214E0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "EndTextScript"
|
||||||
|
addr = 0x421570
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "EncryptionBinaryData2"
|
||||||
|
addr = 0x4215C0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "LoadTextScript2"
|
||||||
|
addr = 0x421660
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "LoadTextScript_Stage"
|
||||||
|
addr = 0x421750
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "GetTextScriptPath"
|
||||||
|
addr = 0x4218E0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "GetTextScriptNo"
|
||||||
|
addr = 0x421900
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "StartTextScript"
|
||||||
|
addr = 0x421990
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "JumpTextScript"
|
||||||
|
addr = 0x421AF0
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "StopTextScript"
|
||||||
|
addr = 0x421C50
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "CheckNewLine"
|
||||||
|
addr = 0x421C80
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "SetNumberTextScript"
|
||||||
|
addr = 0x421D10
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "ClearTextLine"
|
||||||
|
addr = 0x421E90
|
||||||
|
|
||||||
|
[[func]]
|
||||||
|
name = "PutTextScript"
|
||||||
|
addr = 0x421F10
|
||||||
|
|
||||||
[[func]]
|
[[func]]
|
||||||
name = "TextScriptProc"
|
name = "TextScriptProc"
|
||||||
addr = 0x422510
|
addr = 0x422510
|
||||||
|
|
|
@ -129,10 +129,10 @@ BOOL AddItemData(long code)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == ITEM_MAX)
|
if (i == ITEM_MAX)
|
||||||
return false;
|
return FALSE;
|
||||||
|
|
||||||
gItemData[i].code = code;
|
gItemData[i].code = code;
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL SubItemData(long code)
|
BOOL SubItemData(long code)
|
||||||
|
@ -270,6 +270,10 @@ void MoveCampCursor()
|
||||||
|
|
||||||
void PutCampObject()
|
void PutCampObject()
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
RECT rcArms;
|
||||||
|
RECT rcItem;
|
||||||
|
|
||||||
// Get rects
|
// Get rects
|
||||||
RECT rcPer = {72, 48, 80, 56};
|
RECT rcPer = {72, 48, 80, 56};
|
||||||
RECT rcNone = {80, 48, 96, 56};
|
RECT rcNone = {80, 48, 96, 56};
|
||||||
|
@ -284,11 +288,10 @@ void PutCampObject()
|
||||||
RECT rcBoxBottom = {0, 16, 244, 24};
|
RECT rcBoxBottom = {0, 16, 244, 24};
|
||||||
|
|
||||||
// Draw box
|
// Draw box
|
||||||
int y;
|
|
||||||
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, (WINDOW_HEIGHT - 224) / 2, &rcBoxTop, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, (WINDOW_HEIGHT - 224) / 2, &rcBoxTop, SURFACE_ID_TEXT_BOX);
|
||||||
for (y = 1; y < 18; y++)
|
for (i = 1; i < 18; ++i)
|
||||||
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 * (i + 1)), &rcBoxBody, SURFACE_ID_TEXT_BOX);
|
||||||
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, ((WINDOW_HEIGHT - 240) / 2) + (8 * (y + 1)), &rcBoxBottom, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&rcView, (WINDOW_WIDTH - 244) / 2, ((WINDOW_HEIGHT - 240) / 2) + (8 * (i + 1)), &rcBoxBottom, SURFACE_ID_TEXT_BOX);
|
||||||
|
|
||||||
// Move titles
|
// Move titles
|
||||||
if (gCampTitleY > (WINDOW_HEIGHT - 208) / 2)
|
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);
|
PutBitmap3(&rcView, 40 * gSelectedArms + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT / 2) - 96, &rcCur1[1], SURFACE_ID_TEXT_BOX);
|
||||||
|
|
||||||
// Draw arms
|
// Draw arms
|
||||||
for (int i = 0; i < ARMS_MAX; i++)
|
for (i = 0; i < ARMS_MAX; i++)
|
||||||
{
|
{
|
||||||
if (gArmsData[i].code == 0)
|
if (gArmsData[i].code == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
RECT rcArms;
|
|
||||||
rcArms.left = 16 * (gArmsData[i].code % 16);
|
rcArms.left = 16 * (gArmsData[i].code % 16);
|
||||||
rcArms.right = rcArms.left + 16;
|
rcArms.right = rcArms.left + 16;
|
||||||
rcArms.top = 16 * (gArmsData[i].code / 16);
|
rcArms.top = 16 * (gArmsData[i].code / 16);
|
||||||
|
@ -322,13 +324,13 @@ void PutCampObject()
|
||||||
PutBitmap3(&rcView, 40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 192) / 2, &rcArms, SURFACE_ID_ARMS_IMAGE);
|
PutBitmap3(&rcView, 40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 192) / 2, &rcArms, SURFACE_ID_ARMS_IMAGE);
|
||||||
PutBitmap3(&rcView, 40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 128) / 2, &rcPer, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&rcView, 40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 128) / 2, &rcPer, SURFACE_ID_TEXT_BOX);
|
||||||
PutBitmap3(&rcView, 40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 160) / 2, &rcLv, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&rcView, 40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 160) / 2, &rcLv, SURFACE_ID_TEXT_BOX);
|
||||||
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 160) / 2, gArmsData[i].level, 0);
|
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 160) / 2, gArmsData[i].level, FALSE);
|
||||||
|
|
||||||
// Draw ammo
|
// Draw ammo
|
||||||
if (gArmsData[i].max_num)
|
if (gArmsData[i].max_num)
|
||||||
{
|
{
|
||||||
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 144) / 2, gArmsData[i].num, 0);
|
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 144) / 2, gArmsData[i].num, FALSE);
|
||||||
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 128) / 2, gArmsData[i].max_num, 0);
|
PutNumber4(40 * i + (WINDOW_WIDTH - 224) / 2, (WINDOW_HEIGHT - 128) / 2, gArmsData[i].max_num, FALSE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -343,12 +345,11 @@ void PutCampObject()
|
||||||
else
|
else
|
||||||
PutBitmap3(&rcView, 32 * (gSelectedItem % 6) + (WINDOW_WIDTH - 224) / 2, 16 * (gSelectedItem / 6) + (WINDOW_HEIGHT - 88) / 2, &rcCur2[1], SURFACE_ID_TEXT_BOX);
|
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)
|
if (gItemData[i].code == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
RECT rcItem;
|
|
||||||
rcItem.left = 32 * (gItemData[i].code % 8);
|
rcItem.left = 32 * (gItemData[i].code % 8);
|
||||||
rcItem.right = rcItem.left + 32;
|
rcItem.right = rcItem.left + 32;
|
||||||
rcItem.top = 16 * (gItemData[i].code / 8);
|
rcItem.top = 16 * (gItemData[i].code / 8);
|
||||||
|
@ -360,10 +361,12 @@ void PutCampObject()
|
||||||
|
|
||||||
int CampLoop()
|
int CampLoop()
|
||||||
{
|
{
|
||||||
|
int arms_num;
|
||||||
|
char old_script_path[PATH_LENGTH];
|
||||||
|
|
||||||
RECT rcView = {0, 0, WINDOW_WIDTH, WINDOW_HEIGHT};
|
RECT rcView = {0, 0, WINDOW_WIDTH, WINDOW_HEIGHT};
|
||||||
|
|
||||||
// Load the inventory script
|
// Load the inventory script
|
||||||
char old_script_path[PATH_LENGTH];
|
|
||||||
GetTextScriptPath(old_script_path);
|
GetTextScriptPath(old_script_path);
|
||||||
|
|
||||||
LoadTextScript2("ArmsItem.tsc");
|
LoadTextScript2("ArmsItem.tsc");
|
||||||
|
@ -373,7 +376,7 @@ int CampLoop()
|
||||||
gSelectedItem = 0;
|
gSelectedItem = 0;
|
||||||
|
|
||||||
// Run script
|
// Run script
|
||||||
int arms_num = 0;
|
arms_num = 0;
|
||||||
for (; gArmsData[arms_num].code != 0;)
|
for (; gArmsData[arms_num].code != 0;)
|
||||||
++arms_num;
|
++arms_num;
|
||||||
|
|
||||||
|
@ -388,7 +391,7 @@ int CampLoop()
|
||||||
|
|
||||||
if (gKeyTrg & KEY_ESCAPE)
|
if (gKeyTrg & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
switch (Call_Escape())
|
switch (Call_Escape(ghWnd))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -430,7 +433,7 @@ int CampLoop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
src/Draw.cpp
10
src/Draw.cpp
|
@ -48,8 +48,10 @@ FontObject *gFont;
|
||||||
|
|
||||||
#define FRAMERATE 20
|
#define FRAMERATE 20
|
||||||
|
|
||||||
BOOL Flip_SystemTask()
|
BOOL Flip_SystemTask(int hWnd)
|
||||||
{
|
{
|
||||||
|
(void)hWnd;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (!SystemTask())
|
if (!SystemTask())
|
||||||
|
@ -151,8 +153,10 @@ void ReleaseSurface(int s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL MakeSurface_Generic(int bxsize, int bysize, Surface_Ids surf_no)
|
BOOL MakeSurface_Generic(int bxsize, int bysize, Surface_Ids surf_no, BOOL bSystem)
|
||||||
{
|
{
|
||||||
|
(void)bSystem;
|
||||||
|
|
||||||
BOOL success = FALSE;
|
BOOL success = FALSE;
|
||||||
|
|
||||||
#ifdef FIX_BUGS
|
#ifdef FIX_BUGS
|
||||||
|
@ -251,7 +255,7 @@ static bool LoadBitmap(SDL_RWops *fp, Surface_Ids surf_no, bool create_surface)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (create_surface == false || MakeSurface_Generic(surface->w, surface->h, surf_no))
|
if (create_surface == false || MakeSurface_Generic(surface->w, surface->h, surf_no, FALSE))
|
||||||
{
|
{
|
||||||
if (magnification == 1)
|
if (magnification == 1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -52,7 +52,7 @@ struct SURFACE;
|
||||||
|
|
||||||
extern SURFACE surf[SURFACE_ID_MAX];
|
extern SURFACE surf[SURFACE_ID_MAX];
|
||||||
|
|
||||||
BOOL Flip_SystemTask();
|
BOOL Flip_SystemTask(int hWnd);
|
||||||
BOOL StartDirectDraw(int lMagnification, int lColourDepth);
|
BOOL StartDirectDraw(int lMagnification, int lColourDepth);
|
||||||
void EndDirectDraw();
|
void EndDirectDraw();
|
||||||
void ReleaseSurface(int s);
|
void ReleaseSurface(int s);
|
||||||
|
@ -60,7 +60,7 @@ BOOL MakeSurface_File(const char *name, Surface_Ids surf_no);
|
||||||
BOOL MakeSurface_Resource(const char *res, Surface_Ids surf_no);
|
BOOL MakeSurface_Resource(const char *res, Surface_Ids surf_no);
|
||||||
BOOL ReloadBitmap_File(const char *name, Surface_Ids surf_no);
|
BOOL ReloadBitmap_File(const char *name, Surface_Ids surf_no);
|
||||||
BOOL ReloadBitmap_Resource(const char *res, Surface_Ids surf_no);
|
BOOL ReloadBitmap_Resource(const char *res, Surface_Ids surf_no);
|
||||||
BOOL MakeSurface_Generic(int bxsize, int bysize, Surface_Ids surf_no);
|
BOOL MakeSurface_Generic(int bxsize, int bysize, Surface_Ids surf_no, BOOL bSystem);
|
||||||
void BackupSurface(Surface_Ids surf_no, RECT *rect);
|
void BackupSurface(Surface_Ids surf_no, RECT *rect);
|
||||||
void PutBitmap3(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no);
|
void PutBitmap3(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no);
|
||||||
void PutBitmap4(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no);
|
void PutBitmap4(RECT *rcView, int x, int y, RECT *rect, Surface_Ids surf_no);
|
||||||
|
|
250
src/Ending.cpp
250
src/Ending.cpp
|
@ -39,20 +39,27 @@ void ActionStripper()
|
||||||
// Draw casts
|
// Draw casts
|
||||||
void PutStripper()
|
void PutStripper()
|
||||||
{
|
{
|
||||||
|
RECT rc;
|
||||||
|
|
||||||
for (int s = 0; s < MAX_STRIP; s++)
|
for (int s = 0; s < MAX_STRIP; s++)
|
||||||
{
|
{
|
||||||
if (Strip[s].flag & 0x80)
|
if (Strip[s].flag & 0x80)
|
||||||
{
|
{
|
||||||
// Draw text
|
// Draw text
|
||||||
RECT rc = {0, 16 * s, 320, 16 * s + 16};
|
rc.left = 0;
|
||||||
PutBitmap3(&grcFull, (Strip[s].x + ((WINDOW_WIDTH - 320) << 8)) / 0x200, Strip[s].y / 0x200, &rc, SURFACE_ID_CREDIT_CAST);
|
rc.right = 320;
|
||||||
|
rc.top = s * 0x10;
|
||||||
|
rc.bottom = rc.top + 0x10;
|
||||||
|
|
||||||
|
PutBitmap3(&grcFull, (Strip[s].x / 0x200) + ((WINDOW_WIDTH - 320) / 2), (Strip[s].y / 0x200), &rc, SURFACE_ID_CREDIT_CAST);
|
||||||
|
|
||||||
// Draw character
|
// Draw character
|
||||||
rc.left = 24 * (Strip[s].cast % 13);
|
rc.left = 24 * (Strip[s].cast % 13);
|
||||||
rc.right = rc.left + 24;
|
rc.right = rc.left + 24;
|
||||||
rc.top = 24 * (Strip[s].cast / 13);
|
rc.top = 24 * (Strip[s].cast / 13);
|
||||||
rc.bottom = rc.top + 24;
|
rc.bottom = rc.top + 24;
|
||||||
PutBitmap3(&grcFull, (Strip[s].x + ((WINDOW_WIDTH - 320) << 8)) / 0x200 - 24, Strip[s].y / 0x200 - 8, &rc, SURFACE_ID_CASTS);
|
|
||||||
|
PutBitmap3(&grcFull, (Strip[s].x / 0x200) + ((WINDOW_WIDTH - 320) / 2) - 24, (Strip[s].y / 0x200) - 8, &rc, SURFACE_ID_CASTS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,10 +67,16 @@ void PutStripper()
|
||||||
// Create a cast object
|
// Create a cast object
|
||||||
void SetStripper(int x, int y, const char *text, int cast)
|
void SetStripper(int x, int y, const char *text, int cast)
|
||||||
{
|
{
|
||||||
for (int s = 0; s < MAX_STRIP; s++)
|
RECT rc;
|
||||||
{
|
int s;
|
||||||
|
|
||||||
|
for (s = 0; s < MAX_STRIP; s++)
|
||||||
if (!(Strip[s].flag & 0x80))
|
if (!(Strip[s].flag & 0x80))
|
||||||
{
|
break;
|
||||||
|
|
||||||
|
if (s == MAX_STRIP)
|
||||||
|
return;
|
||||||
|
|
||||||
// Initialize cast property
|
// Initialize cast property
|
||||||
Strip[s].flag = 0x80;
|
Strip[s].flag = 0x80;
|
||||||
Strip[s].x = x;
|
Strip[s].x = x;
|
||||||
|
@ -72,22 +85,29 @@ void SetStripper(int x, int y, const char *text, int cast)
|
||||||
strcpy(Strip[s].str, text);
|
strcpy(Strip[s].str, text);
|
||||||
|
|
||||||
// Draw text
|
// Draw text
|
||||||
RECT rc = {0, 16 * s, 320, 16 * s + 16};
|
rc.left = 0;
|
||||||
|
rc.right = 320;
|
||||||
|
rc.top = s * 0x10;
|
||||||
|
rc.bottom = rc.top + 0x10;
|
||||||
|
|
||||||
CortBox2(&rc, 0, SURFACE_ID_CREDIT_CAST);
|
CortBox2(&rc, 0, SURFACE_ID_CREDIT_CAST);
|
||||||
PutText2(0, 16 * s, text, RGB(0xFF, 0xFF, 0xFE), SURFACE_ID_CREDIT_CAST);
|
PutText2(0, rc.top, text, RGB(0xFF, 0xFF, 0xFE), SURFACE_ID_CREDIT_CAST);
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Regenerate cast text
|
// Regenerate cast text
|
||||||
void RestoreStripper()
|
void RestoreStripper()
|
||||||
{
|
{
|
||||||
|
RECT rc;
|
||||||
|
|
||||||
for (int s = 0; s < MAX_STRIP; s++)
|
for (int s = 0; s < MAX_STRIP; s++)
|
||||||
{
|
{
|
||||||
if (Strip[s].flag & 0x80)
|
if (Strip[s].flag & 0x80)
|
||||||
{
|
{
|
||||||
RECT rc = {0, 16 * s, 320, 16 * s + 16};
|
rc.left = 0;
|
||||||
|
rc.right = 320;
|
||||||
|
rc.top = s * 0x10;
|
||||||
|
rc.bottom = rc.top + 0x10;
|
||||||
|
|
||||||
CortBox2(&rc, 0, SURFACE_ID_CREDIT_CAST);
|
CortBox2(&rc, 0, SURFACE_ID_CREDIT_CAST);
|
||||||
PutText2(0, rc.top, Strip[s].str, RGB(0xFF, 0xFF, 0xFE), SURFACE_ID_CREDIT_CAST);
|
PutText2(0, rc.top, Strip[s].str, RGB(0xFF, 0xFF, 0xFE), SURFACE_ID_CREDIT_CAST);
|
||||||
}
|
}
|
||||||
|
@ -121,8 +141,13 @@ void ActionIllust()
|
||||||
void PutIllust()
|
void PutIllust()
|
||||||
{
|
{
|
||||||
RECT rcIllust = {0, 0, 160, 240};
|
RECT rcIllust = {0, 0, 160, 240};
|
||||||
|
#if WINDOW_WIDTH != 320 || WINDOW_HEIGHT != 240
|
||||||
|
// Widescreen edit
|
||||||
RECT rcClip = {(WINDOW_WIDTH - 320) / 2, 0, WINDOW_WIDTH, WINDOW_HEIGHT};
|
RECT rcClip = {(WINDOW_WIDTH - 320) / 2, 0, WINDOW_WIDTH, WINDOW_HEIGHT};
|
||||||
PutBitmap3(&rcClip, (Illust.x + ((WINDOW_WIDTH - 320) << 8)) / 0x200, (WINDOW_HEIGHT - 240) / 2, &rcIllust, SURFACE_ID_CREDITS_IMAGE);
|
PutBitmap3(&rcClip, (Illust.x / 0x200) + ((WINDOW_WIDTH - 320) / 2), (WINDOW_HEIGHT - 240) / 2, &rcIllust, SURFACE_ID_CREDITS_IMAGE);
|
||||||
|
#else
|
||||||
|
PutBitmap3(&grcFull, (Illust.x / 0x200) + ((WINDOW_WIDTH - 320) / 2), (WINDOW_HEIGHT - 240) / 2, &rcIllust, SURFACE_ID_CREDITS_IMAGE);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load illustration
|
// Load illustration
|
||||||
|
@ -151,8 +176,10 @@ void ReleaseCreditScript()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *credit_script = "Credit.tsc";
|
||||||
|
|
||||||
// Start playing credits
|
// Start playing credits
|
||||||
bool StartCreditScript()
|
BOOL StartCreditScript()
|
||||||
{
|
{
|
||||||
// Clear previously existing credits data
|
// Clear previously existing credits data
|
||||||
if (Credit.pData)
|
if (Credit.pData)
|
||||||
|
@ -163,22 +190,22 @@ bool StartCreditScript()
|
||||||
|
|
||||||
// Open file
|
// Open file
|
||||||
char path[PATH_LENGTH];
|
char path[PATH_LENGTH];
|
||||||
sprintf(path, "%s/%s", gDataPath, "Credit.tsc");
|
sprintf(path, "%s/%s", gDataPath, credit_script);
|
||||||
|
|
||||||
Credit.size = GetFileSizeLong(path);
|
Credit.size = GetFileSizeLong(path);
|
||||||
if (Credit.size == -1)
|
if (Credit.size == -1)
|
||||||
return false;
|
return FALSE;
|
||||||
|
|
||||||
// Allocate buffer data
|
// Allocate buffer data
|
||||||
Credit.pData = (char*)malloc(Credit.size);
|
Credit.pData = (char*)malloc(Credit.size);
|
||||||
if (Credit.pData == NULL)
|
if (Credit.pData == NULL)
|
||||||
return false;
|
return FALSE;
|
||||||
|
|
||||||
FILE *fp = fopen(path, "rb");
|
FILE *fp = fopen(path, "rb");
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
{
|
{
|
||||||
printf("Couldn't open %s", path);
|
free(Credit.pData);
|
||||||
return false;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read data
|
// Read data
|
||||||
|
@ -199,78 +226,116 @@ bool StartCreditScript()
|
||||||
|
|
||||||
// Modify cliprect
|
// Modify cliprect
|
||||||
grcGame.left = WINDOW_WIDTH / 2;
|
grcGame.left = WINDOW_WIDTH / 2;
|
||||||
|
#if WINDOW_WIDTH != 320 || WINDOW_HEIGHT != 240
|
||||||
// These three are non-vanilla: for wide/tallscreen support
|
// These three are non-vanilla: for wide/tallscreen support
|
||||||
grcGame.right = ((WINDOW_WIDTH - 320) / 2) + 320;
|
grcGame.right = ((WINDOW_WIDTH - 320) / 2) + 320;
|
||||||
grcGame.top = (WINDOW_HEIGHT - 240) / 2;
|
grcGame.top = (WINDOW_HEIGHT - 240) / 2;
|
||||||
grcGame.bottom = ((WINDOW_HEIGHT - 240) / 2) + 240;
|
grcGame.bottom = ((WINDOW_HEIGHT - 240) / 2) + 240;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Reload casts
|
// Reload casts
|
||||||
if (!ReloadBitmap_File("casts", SURFACE_ID_CASTS))
|
if (!ReloadBitmap_File("casts", SURFACE_ID_CASTS))
|
||||||
return false;
|
return FALSE;
|
||||||
|
|
||||||
// Clear casts
|
// Clear casts
|
||||||
memset(Strip, 0, sizeof(Strip));
|
memset(Strip, 0, sizeof(Strip));
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get number from text (4 digit)
|
// Get number from text (4 digit)
|
||||||
int GetScriptNumber(const char *text)
|
int GetScriptNumber(const char *text)
|
||||||
{
|
{
|
||||||
return 1000 * text[0] - 48000 +
|
return (text[0] - '0') * 1000 +
|
||||||
100 * text[1] - 4800 +
|
(text[1] - '0') * 100 +
|
||||||
10 * text[2] - 480 +
|
(text[2] - '0') * 10 +
|
||||||
text[3] - 48;
|
text[3] - '0';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse credits
|
// Parse credits
|
||||||
void ActionCredit_Read()
|
void ActionCredit_Read()
|
||||||
{
|
{
|
||||||
while (Credit.offset < Credit.size)
|
|
||||||
{
|
|
||||||
// Get character
|
|
||||||
unsigned char character = Credit.pData[Credit.offset];
|
|
||||||
|
|
||||||
int a, b, len;
|
int a, b, len;
|
||||||
switch (character)
|
char text[40];
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
if (Credit.offset >= Credit.size)
|
||||||
|
break;
|
||||||
|
|
||||||
|
switch (Credit.pData[Credit.offset])
|
||||||
{
|
{
|
||||||
case '[': // Create cast
|
case '[': // Create cast
|
||||||
// Get the range for the cast text
|
// Get the range for the cast text
|
||||||
a = ++Credit.offset;
|
++Credit.offset;
|
||||||
|
|
||||||
|
a = Credit.offset;
|
||||||
|
|
||||||
while (Credit.pData[a] != ']')
|
while (Credit.pData[a] != ']')
|
||||||
{
|
{
|
||||||
if (IsShiftJIS(Credit.pData[a]))
|
if (IsShiftJIS(Credit.pData[a]))
|
||||||
a += 2;
|
a += 2;
|
||||||
else
|
else
|
||||||
a++;
|
a += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = a - Credit.offset;
|
len = a - Credit.offset;
|
||||||
|
|
||||||
// Copy the text to the cast text
|
// Copy the text to the cast text
|
||||||
char text[40];
|
memcpy(text, &Credit.pData[Credit.offset], len);
|
||||||
memcpy(text, &Credit.pData[Credit.offset], a - Credit.offset);
|
|
||||||
text[len] = 0;
|
text[len] = 0;
|
||||||
|
|
||||||
// Get cast id
|
// Get cast id
|
||||||
Credit.offset = a + 1;
|
Credit.offset = a;
|
||||||
len = GetScriptNumber(&Credit.pData[a + 1]);
|
len = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
||||||
|
|
||||||
// Create cast object
|
// Create cast object
|
||||||
SetStripper(Credit.start_x, (WINDOW_HEIGHT << 9) + 0x1000, text, len);
|
SetStripper(Credit.start_x, (WINDOW_HEIGHT * 0x200) + (8 * 0x200), text, len);
|
||||||
|
|
||||||
// Change offset
|
// Change offset
|
||||||
Credit.offset += 4;
|
Credit.offset += 4;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case '-': // Wait for X amount of frames
|
||||||
|
++Credit.offset;
|
||||||
|
Credit.wait = GetScriptNumber(&Credit.pData[Credit.offset]);
|
||||||
|
Credit.offset += 4;
|
||||||
|
Credit.mode = 2;
|
||||||
|
return;
|
||||||
|
|
||||||
|
case '+': // Change casts x-position
|
||||||
|
++Credit.offset;
|
||||||
|
Credit.start_x = GetScriptNumber(&Credit.pData[Credit.offset]) * 0x200;
|
||||||
|
Credit.offset += 4;
|
||||||
|
return;
|
||||||
|
|
||||||
|
case '/': // Stop credits
|
||||||
|
Credit.mode = 0;
|
||||||
|
return;
|
||||||
|
|
||||||
|
case '!': // Change music
|
||||||
|
++Credit.offset;
|
||||||
|
a = GetScriptNumber(&Credit.pData[Credit.offset]);
|
||||||
|
Credit.offset += 4;
|
||||||
|
ChangeMusic(a);
|
||||||
|
return;
|
||||||
|
|
||||||
|
case '~': // Start fading out music
|
||||||
|
++Credit.offset;
|
||||||
|
SetOrganyaFadeout();
|
||||||
|
return;
|
||||||
|
|
||||||
case 'j': // Jump to label
|
case 'j': // Jump to label
|
||||||
|
++Credit.offset;
|
||||||
|
|
||||||
// Get number
|
// Get number
|
||||||
b = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
b = GetScriptNumber(&Credit.pData[Credit.offset]);
|
||||||
|
|
||||||
// Change offset
|
// Change offset
|
||||||
Credit.offset += 4;
|
Credit.offset += 4;
|
||||||
|
|
||||||
// Jump to specific label
|
// Jump to specific label
|
||||||
|
if (1)
|
||||||
|
{
|
||||||
while (Credit.offset < Credit.size)
|
while (Credit.offset < Credit.size)
|
||||||
{
|
{
|
||||||
if (Credit.pData[Credit.offset] == 'l')
|
if (Credit.pData[Credit.offset] == 'l')
|
||||||
|
@ -279,7 +344,7 @@ void ActionCredit_Read()
|
||||||
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
||||||
Credit.offset += 4;
|
Credit.offset += 4;
|
||||||
if (b == a)
|
if (b == a)
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
else if (IsShiftJIS(Credit.pData[Credit.offset]))
|
else if (IsShiftJIS(Credit.pData[Credit.offset]))
|
||||||
{
|
{
|
||||||
|
@ -290,17 +355,15 @@ void ActionCredit_Read()
|
||||||
++Credit.offset;
|
++Credit.offset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case '~': // Start fading out music
|
|
||||||
++Credit.offset;
|
|
||||||
SetOrganyaFadeout();
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 'f': // Flag jump
|
case 'f': // Flag jump
|
||||||
|
++Credit.offset;
|
||||||
|
|
||||||
// Read numbers XXXX:YYYY
|
// Read numbers XXXX:YYYY
|
||||||
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
a = GetScriptNumber(&Credit.pData[Credit.offset]);
|
||||||
Credit.offset += 5;
|
Credit.offset += 5;
|
||||||
b = GetScriptNumber(&Credit.pData[Credit.offset]);
|
b = GetScriptNumber(&Credit.pData[Credit.offset]);
|
||||||
Credit.offset += 4;
|
Credit.offset += 4;
|
||||||
|
@ -316,7 +379,7 @@ void ActionCredit_Read()
|
||||||
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
||||||
Credit.offset += 4;
|
Credit.offset += 4;
|
||||||
if (b == a)
|
if (b == a)
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
else if (IsShiftJIS(Credit.pData[Credit.offset]))
|
else if (IsShiftJIS(Credit.pData[Credit.offset]))
|
||||||
{
|
{
|
||||||
|
@ -330,48 +393,31 @@ void ActionCredit_Read()
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case '+': // Change casts x-position
|
default:
|
||||||
Credit.start_x = GetScriptNumber(&Credit.pData[++Credit.offset]) << 9;
|
|
||||||
Credit.offset += 4;
|
|
||||||
return;
|
|
||||||
|
|
||||||
case '-': // Wait for X amount of frames
|
|
||||||
Credit.wait = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
|
||||||
Credit.offset += 4;
|
|
||||||
Credit.mode = 2;
|
|
||||||
return;
|
|
||||||
|
|
||||||
case '/': // Stop credits
|
|
||||||
Credit.mode = 0;
|
|
||||||
return;
|
|
||||||
|
|
||||||
case '!': // Change music
|
|
||||||
a = GetScriptNumber(&Credit.pData[++Credit.offset]);
|
|
||||||
Credit.offset += 4;
|
|
||||||
ChangeMusic(a);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Progress through file
|
// Progress through file
|
||||||
++Credit.offset;
|
++Credit.offset;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update credits
|
// Update credits
|
||||||
void ActionCredit()
|
void ActionCredit()
|
||||||
{
|
{
|
||||||
if (Credit.offset < Credit.size)
|
if (Credit.offset >= Credit.size)
|
||||||
{
|
return;
|
||||||
|
|
||||||
// Update script, or if waiting, decrement the wait value
|
// Update script, or if waiting, decrement the wait value
|
||||||
if (Credit.mode == 1)
|
switch (Credit.mode)
|
||||||
{
|
{
|
||||||
|
case 1:
|
||||||
ActionCredit_Read();
|
ActionCredit_Read();
|
||||||
}
|
break;
|
||||||
else if (Credit.mode == 2 && --Credit.wait <= 0)
|
|
||||||
{
|
case 2:
|
||||||
|
if (--Credit.wait <= 0)
|
||||||
Credit.mode = 1;
|
Credit.mode = 1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change illustration
|
// Change illustration
|
||||||
|
@ -388,7 +434,7 @@ void CutCreditIllust()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scene of the island falling
|
// Scene of the island falling
|
||||||
int Scene_DownIsland(int mode)
|
int Scene_DownIsland(int hWnd, int mode)
|
||||||
{
|
{
|
||||||
// Setup background
|
// Setup background
|
||||||
RECT rc_frame = {(WINDOW_WIDTH - 160) / 2, (WINDOW_HEIGHT - 80) / 2, (WINDOW_WIDTH + 160) / 2, (WINDOW_HEIGHT + 80) / 2};
|
RECT rc_frame = {(WINDOW_WIDTH - 160) / 2, (WINDOW_HEIGHT - 80) / 2, (WINDOW_WIDTH + 160) / 2, (WINDOW_HEIGHT + 80) / 2};
|
||||||
|
@ -410,12 +456,14 @@ int Scene_DownIsland(int mode)
|
||||||
// Escape menu
|
// Escape menu
|
||||||
if (gKey & 0x8000)
|
if (gKey & 0x8000)
|
||||||
{
|
{
|
||||||
int escRet = Call_Escape();
|
switch (Call_Escape(hWnd))
|
||||||
if (escRet == 0)
|
{
|
||||||
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
if (escRet == 2)
|
case 2:
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
|
@ -425,33 +473,27 @@ int Scene_DownIsland(int mode)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if (wait >= 350)
|
if (wait < 350)
|
||||||
{
|
|
||||||
if (wait >= 500)
|
|
||||||
{
|
|
||||||
if (wait >= 600)
|
|
||||||
{
|
|
||||||
// End scene
|
|
||||||
if (wait == 750)
|
|
||||||
wait = 900;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Move down slow
|
|
||||||
sprite.y += 0xC;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Move down slower
|
|
||||||
sprite.y += 0x19;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
// Move down at normal speed
|
// Move down at normal speed
|
||||||
sprite.y += 0x33;
|
sprite.y += 0x33;
|
||||||
}
|
}
|
||||||
|
else if (wait < 500)
|
||||||
|
{
|
||||||
|
// Move down slower
|
||||||
|
sprite.y += 0x19;
|
||||||
|
}
|
||||||
|
else if (wait < 600)
|
||||||
|
{
|
||||||
|
// Move down slow
|
||||||
|
sprite.y += 0xC;
|
||||||
|
}
|
||||||
|
else if (wait == 750)
|
||||||
|
{
|
||||||
|
// End scene
|
||||||
|
wait = 900;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -464,7 +506,7 @@ int Scene_DownIsland(int mode)
|
||||||
|
|
||||||
// Draw window
|
// Draw window
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(hWnd))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "WindowsWrapper.h"
|
||||||
|
|
||||||
struct CREDIT
|
struct CREDIT
|
||||||
{
|
{
|
||||||
int size;
|
int size;
|
||||||
|
@ -42,8 +44,8 @@ void PutIllust();
|
||||||
void ReloadIllust(int a);
|
void ReloadIllust(int a);
|
||||||
void InitCreditScript();
|
void InitCreditScript();
|
||||||
void ReleaseCreditScript();
|
void ReleaseCreditScript();
|
||||||
bool StartCreditScript();
|
BOOL StartCreditScript();
|
||||||
void ActionCredit();
|
void ActionCredit();
|
||||||
void SetCreditIllust(int a);
|
void SetCreditIllust(int a);
|
||||||
void CutCreditIllust();
|
void CutCreditIllust();
|
||||||
int Scene_DownIsland(int mode);
|
int Scene_DownIsland(int hWnd, int mode);
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include "KeyControl.h"
|
#include "KeyControl.h"
|
||||||
#include "Main.h"
|
#include "Main.h"
|
||||||
|
|
||||||
int Call_Escape()
|
int Call_Escape(int hWnd)
|
||||||
{
|
{
|
||||||
RECT rc = {0, 128, 208, 144};
|
RECT rc = {0, 128, 208, 144};
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ int Call_Escape()
|
||||||
PutBitmap3(&grcFull, (WINDOW_WIDTH - 208) / 2, (WINDOW_HEIGHT - 16) / 2, &rc, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcFull, (WINDOW_WIDTH - 208) / 2, (WINDOW_HEIGHT - 16) / 2, &rc, SURFACE_ID_TEXT_BOX);
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
|
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(hWnd))
|
||||||
{
|
{
|
||||||
// Quit if window is closed
|
// Quit if window is closed
|
||||||
gKeyTrg = 0;
|
gKeyTrg = 0;
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
int Call_Escape();
|
int Call_Escape(int hWnd);
|
||||||
|
|
58
src/Game.cpp
58
src/Game.cpp
|
@ -56,7 +56,7 @@ int Random(int min, int max)
|
||||||
return min + rep_rand() % (max - min + 1);
|
return min + rep_rand() % (max - min + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PutNumber4(int x, int y, int value, bool bZero)
|
void PutNumber4(int x, int y, int value, BOOL bZero)
|
||||||
{
|
{
|
||||||
// Define rects
|
// Define rects
|
||||||
RECT rcClient = grcFull;
|
RECT rcClient = grcFull;
|
||||||
|
@ -141,7 +141,7 @@ int ModeOpening()
|
||||||
// Escape menu
|
// Escape menu
|
||||||
if (gKey & KEY_ESCAPE)
|
if (gKey & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
int escRet = Call_Escape();
|
int escRet = Call_Escape(ghWnd);
|
||||||
if (escRet == 0)
|
if (escRet == 0)
|
||||||
return 0;
|
return 0;
|
||||||
if (escRet == 2)
|
if (escRet == 2)
|
||||||
|
@ -189,11 +189,11 @@ int ModeOpening()
|
||||||
if (tscRet == 2)
|
if (tscRet == 2)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
PutMapName(false);
|
PutMapName(FALSE);
|
||||||
PutTextScript();
|
PutTextScript();
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
|
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
++gCounter;
|
++gCounter;
|
||||||
|
@ -204,7 +204,7 @@ int ModeOpening()
|
||||||
{
|
{
|
||||||
CortBox(&grcGame, 0x000000);
|
CortBox(&grcGame, 0x000000);
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 2;
|
return 2;
|
||||||
|
@ -317,7 +317,7 @@ int ModeTitle()
|
||||||
// Start loop
|
// Start loop
|
||||||
unsigned int wait = 0;
|
unsigned int wait = 0;
|
||||||
|
|
||||||
while (true)
|
while (1)
|
||||||
{
|
{
|
||||||
// Don't accept selection for 10 frames
|
// Don't accept selection for 10 frames
|
||||||
if (wait < 10)
|
if (wait < 10)
|
||||||
|
@ -335,7 +335,7 @@ int ModeTitle()
|
||||||
|
|
||||||
if (gKey & KEY_ESCAPE)
|
if (gKey & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
int escRet = Call_Escape();
|
int escRet = Call_Escape(ghWnd);
|
||||||
if (escRet == 0)
|
if (escRet == 0)
|
||||||
return 0;
|
return 0;
|
||||||
if (escRet == 2)
|
if (escRet == 2)
|
||||||
|
@ -365,10 +365,10 @@ int ModeTitle()
|
||||||
|
|
||||||
int v1, v2, v3, v4;
|
int v1, v2, v3, v4;
|
||||||
GetCompileVersion(&v1, &v2, &v3, &v4);
|
GetCompileVersion(&v1, &v2, &v3, &v4);
|
||||||
PutNumber4((WINDOW_WIDTH - 40) / 2, WINDOW_HEIGHT - 24, v1, 0);
|
PutNumber4((WINDOW_WIDTH - 40) / 2, WINDOW_HEIGHT - 24, v1, FALSE);
|
||||||
PutNumber4((WINDOW_WIDTH - 8) / 2, WINDOW_HEIGHT - 24, v2, 0);
|
PutNumber4((WINDOW_WIDTH - 8) / 2, WINDOW_HEIGHT - 24, v2, FALSE);
|
||||||
PutNumber4((WINDOW_WIDTH + 24) / 2, WINDOW_HEIGHT - 24, v3, 0);
|
PutNumber4((WINDOW_WIDTH + 24) / 2, WINDOW_HEIGHT - 24, v3, FALSE);
|
||||||
PutNumber4((WINDOW_WIDTH + 56) / 2, WINDOW_HEIGHT - 24, v4, 0);
|
PutNumber4((WINDOW_WIDTH + 56) / 2, WINDOW_HEIGHT - 24, v4, FALSE);
|
||||||
|
|
||||||
// Draw main title
|
// Draw main title
|
||||||
PutBitmap3(&grcGame, (WINDOW_WIDTH - 144) / 2, 40, &rcTitle, SURFACE_ID_TITLE);
|
PutBitmap3(&grcGame, (WINDOW_WIDTH - 144) / 2, 40, &rcTitle, SURFACE_ID_TITLE);
|
||||||
|
@ -420,7 +420,7 @@ int ModeTitle()
|
||||||
|
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
|
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -433,7 +433,7 @@ int ModeTitle()
|
||||||
{
|
{
|
||||||
CortBox(&grcGame, 0);
|
CortBox(&grcGame, 0);
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ int ModeAction()
|
||||||
|
|
||||||
unsigned long color = GetCortBoxColor(RGB(0, 0, 0x20));
|
unsigned long color = GetCortBoxColor(RGB(0, 0, 0x20));
|
||||||
|
|
||||||
bool swPlay = true;
|
unsigned int swPlay = 1;
|
||||||
|
|
||||||
// Reset stuff
|
// Reset stuff
|
||||||
gCounter = 0;
|
gCounter = 0;
|
||||||
|
@ -471,7 +471,7 @@ int ModeAction()
|
||||||
|
|
||||||
if ((bContinue && LoadProfile(NULL)) || InitializeGame())
|
if ((bContinue && LoadProfile(NULL)) || InitializeGame())
|
||||||
{
|
{
|
||||||
while (true)
|
while (1)
|
||||||
{
|
{
|
||||||
// Get pressed keys
|
// Get pressed keys
|
||||||
GetTrg();
|
GetTrg();
|
||||||
|
@ -479,19 +479,19 @@ int ModeAction()
|
||||||
// Escape menu
|
// Escape menu
|
||||||
if (gKey & KEY_ESCAPE)
|
if (gKey & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
int escRet = Call_Escape();
|
int escRet = Call_Escape(ghWnd);
|
||||||
if (escRet == 0)
|
if (escRet == 0)
|
||||||
return 0;
|
return 0;
|
||||||
if (escRet == 2)
|
if (escRet == 2)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (swPlay & 1 && g_GameFlags & 1)
|
if (swPlay % 2 && g_GameFlags & 1)
|
||||||
{
|
{
|
||||||
if (g_GameFlags & 2)
|
if (g_GameFlags & 2)
|
||||||
ActMyChar(true);
|
ActMyChar(TRUE);
|
||||||
else
|
else
|
||||||
ActMyChar(false);
|
ActMyChar(FALSE);
|
||||||
|
|
||||||
ActStar();
|
ActStar();
|
||||||
ActNpChar();
|
ActNpChar();
|
||||||
|
@ -515,9 +515,9 @@ int ModeAction()
|
||||||
ActFlash(frame_x, frame_y);
|
ActFlash(frame_x, frame_y);
|
||||||
|
|
||||||
if (g_GameFlags & 2)
|
if (g_GameFlags & 2)
|
||||||
AnimationMyChar(true);
|
AnimationMyChar(TRUE);
|
||||||
else
|
else
|
||||||
AnimationMyChar(false);
|
AnimationMyChar(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_GameFlags & 8)
|
if (g_GameFlags & 8)
|
||||||
|
@ -585,7 +585,7 @@ int ModeAction()
|
||||||
RotationArmsRev();
|
RotationArmsRev();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (swPlay & 1)
|
if (swPlay % 2)
|
||||||
{
|
{
|
||||||
int tscRet = TextScriptProc();
|
int tscRet = TextScriptProc();
|
||||||
if (tscRet == 0)
|
if (tscRet == 0)
|
||||||
|
@ -594,13 +594,13 @@ int ModeAction()
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
PutMapName(false);
|
PutMapName(FALSE);
|
||||||
PutTimeCounter(16, 8);
|
PutTimeCounter(16, 8);
|
||||||
|
|
||||||
if (g_GameFlags & 2)
|
if (g_GameFlags & 2)
|
||||||
{
|
{
|
||||||
PutMyLife(true);
|
PutMyLife(TRUE);
|
||||||
PutArmsEnergy(true);
|
PutArmsEnergy(TRUE);
|
||||||
PutMyAir((WINDOW_WIDTH - 80) / 2, (WINDOW_HEIGHT - 32) / 2);
|
PutMyAir((WINDOW_WIDTH - 80) / 2, (WINDOW_HEIGHT - 32) / 2);
|
||||||
PutActiveArmsList();
|
PutActiveArmsList();
|
||||||
}
|
}
|
||||||
|
@ -614,7 +614,7 @@ int ModeAction()
|
||||||
PutTextScript();
|
PutTextScript();
|
||||||
|
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
break;
|
break;
|
||||||
++gCounter;
|
++gCounter;
|
||||||
}
|
}
|
||||||
|
@ -623,7 +623,7 @@ int ModeAction()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Game()
|
BOOL Game()
|
||||||
{
|
{
|
||||||
if (LoadGenericData())
|
if (LoadGenericData())
|
||||||
{
|
{
|
||||||
|
@ -655,9 +655,9 @@ bool Game()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return false;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "WindowsWrapper.h"
|
||||||
|
|
||||||
extern int g_GameFlags;
|
extern int g_GameFlags;
|
||||||
extern int gCounter;
|
extern int gCounter;
|
||||||
|
|
||||||
int Random(int min, int max);
|
int Random(int min, int max);
|
||||||
void PutNumber4(int x, int y, int value, bool bZero);
|
void PutNumber4(int x, int y, int value, BOOL bZero);
|
||||||
|
|
||||||
bool Game();
|
BOOL Game();
|
||||||
|
|
|
@ -2,16 +2,18 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "WindowsWrapper.h"
|
||||||
|
|
||||||
#include "CommonDefines.h"
|
#include "CommonDefines.h"
|
||||||
#include "Tags.h"
|
#include "Tags.h"
|
||||||
|
|
||||||
bool GetCompileVersion(int *v1, int *v2, int *v3, int *v4)
|
BOOL GetCompileVersion(int *v1, int *v2, int *v3, int *v4)
|
||||||
{
|
{
|
||||||
*v1 = 1;
|
*v1 = 1;
|
||||||
*v2 = 0;
|
*v2 = 0;
|
||||||
*v3 = 0;
|
*v3 = 0;
|
||||||
*v4 = 6;
|
*v4 = 6;
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
long GetFileSizeLong(const char *path)
|
long GetFileSizeLong(const char *path)
|
||||||
|
@ -29,7 +31,7 @@ long GetFileSizeLong(const char *path)
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CheckFileExists(const char *name)
|
BOOL CheckFileExists(const char *name)
|
||||||
{
|
{
|
||||||
char path[PATH_LENGTH];
|
char path[PATH_LENGTH];
|
||||||
sprintf(path, "%s/%s", gModulePath, name);
|
sprintf(path, "%s/%s", gModulePath, name);
|
||||||
|
@ -38,17 +40,17 @@ bool CheckFileExists(const char *name)
|
||||||
if (file)
|
if (file)
|
||||||
{
|
{
|
||||||
fclose(file);
|
fclose(file);
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsShiftJIS(unsigned char c)
|
BOOL IsShiftJIS(unsigned char c)
|
||||||
{
|
{
|
||||||
if (c > 0x80 && c < 0xA0)
|
if (c > 0x80 && c < 0xA0)
|
||||||
return true;
|
return TRUE;
|
||||||
if (c < 0xE0 || c >= 0xF0)
|
if (c < 0xE0 || c >= 0xF0)
|
||||||
return false;
|
return FALSE;
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
bool GetCompileVersion(int *v1, int *v2, int *v3, int *v4);
|
#include "WindowsWrapper.h"
|
||||||
|
|
||||||
|
BOOL GetCompileVersion(int *v1, int *v2, int *v3, int *v4);
|
||||||
long GetFileSizeLong(const char *path);
|
long GetFileSizeLong(const char *path);
|
||||||
bool CheckFileExists(const char *name);
|
BOOL CheckFileExists(const char *name);
|
||||||
bool IsShiftJIS(unsigned char c);
|
BOOL IsShiftJIS(unsigned char c);
|
||||||
|
|
|
@ -197,16 +197,16 @@ BOOL LoadGenericData()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_SCREEN_GRAB);
|
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_SCREEN_GRAB, TRUE);
|
||||||
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_LEVEL_BACKGROUND);
|
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_LEVEL_BACKGROUND, FALSE);
|
||||||
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_MAP);
|
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_MAP, TRUE);
|
||||||
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_CASTS);
|
MakeSurface_Generic(WINDOW_WIDTH, WINDOW_HEIGHT, SURFACE_ID_CASTS, FALSE);
|
||||||
MakeSurface_Generic(256, 256, SURFACE_ID_LEVEL_TILESET);
|
MakeSurface_Generic(256, 256, SURFACE_ID_LEVEL_TILESET, FALSE);
|
||||||
MakeSurface_Generic(160, 16, SURFACE_ID_ROOM_NAME);
|
MakeSurface_Generic(160, 16, SURFACE_ID_ROOM_NAME, FALSE);
|
||||||
MakeSurface_Generic(40, 240, SURFACE_ID_VALUE_VIEW);
|
MakeSurface_Generic(40, 240, SURFACE_ID_VALUE_VIEW, FALSE);
|
||||||
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_1);
|
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_1, FALSE);
|
||||||
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_2);
|
MakeSurface_Generic(320, 240, SURFACE_ID_LEVEL_SPRITESET_2, FALSE);
|
||||||
MakeSurface_Generic(WINDOW_WIDTH, 16 * MAX_STRIP, SURFACE_ID_CREDIT_CAST);
|
MakeSurface_Generic(WINDOW_WIDTH, 16 * MAX_STRIP, SURFACE_ID_CREDIT_CAST, FALSE);
|
||||||
|
|
||||||
pt_size = 0;
|
pt_size = 0;
|
||||||
pt_size += MakePixToneObject(&gPtpTable[0], 2, 32);
|
pt_size += MakePixToneObject(&gPtpTable[0], 2, 32);
|
||||||
|
|
|
@ -32,6 +32,7 @@ char gDataPath[PATH_LENGTH];
|
||||||
|
|
||||||
int gJoystickButtonTable[8];
|
int gJoystickButtonTable[8];
|
||||||
|
|
||||||
|
int ghWnd; // Placeholder until we restore the WinAPI code
|
||||||
bool gbUseJoystick = false;
|
bool gbUseJoystick = false;
|
||||||
bool bFps = false;
|
bool bFps = false;
|
||||||
|
|
||||||
|
@ -61,7 +62,7 @@ void rep_srand(unsigned int seed)
|
||||||
void PutFramePerSecound()
|
void PutFramePerSecound()
|
||||||
{
|
{
|
||||||
if (bFps)
|
if (bFps)
|
||||||
PutNumber4(WINDOW_WIDTH - 40, 8, GetFramePerSecound(), false);
|
PutNumber4(WINDOW_WIDTH - 40, 8, GetFramePerSecound(), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetFramePerSecound()
|
int GetFramePerSecound()
|
||||||
|
@ -349,7 +350,7 @@ int main(int argc, char *argv[])
|
||||||
PutBitmap3(&clip_rect, (WINDOW_WIDTH - 64) / 2, (WINDOW_HEIGHT - 8) / 2, &loading_rect, SURFACE_ID_LOADING);
|
PutBitmap3(&clip_rect, (WINDOW_WIDTH - 64) / 2, (WINDOW_HEIGHT - 8) / 2, &loading_rect, SURFACE_ID_LOADING);
|
||||||
|
|
||||||
// Draw to screen
|
// Draw to screen
|
||||||
if (Flip_SystemTask())
|
if (Flip_SystemTask(ghWnd))
|
||||||
{
|
{
|
||||||
// Initialize sound
|
// Initialize sound
|
||||||
InitDirectSound();
|
InitDirectSound();
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
extern int ghWnd;
|
||||||
|
|
||||||
void PutFramePerSecound();
|
void PutFramePerSecound();
|
||||||
int GetFramePerSecound();
|
int GetFramePerSecound();
|
||||||
|
|
|
@ -79,19 +79,23 @@ void WriteMiniMapLine(int line)
|
||||||
int MiniMapLoop()
|
int MiniMapLoop()
|
||||||
{
|
{
|
||||||
int f;
|
int f;
|
||||||
|
int line;
|
||||||
|
unsigned char my_wait;
|
||||||
|
|
||||||
|
RECT rcMiniMap;
|
||||||
|
RECT rcView;
|
||||||
|
|
||||||
RECT my_rect = {0, 57, 1, 58};
|
RECT my_rect = {0, 57, 1, 58};
|
||||||
int my_x = (gMC.x / 0x200 + 8) / 16;
|
int my_x = (gMC.x / 0x200 + 8) / 16;
|
||||||
int my_y = (gMC.y / 0x200 + 8) / 16;
|
int my_y = (gMC.y / 0x200 + 8) / 16;
|
||||||
|
|
||||||
RECT rcView;
|
|
||||||
for (f = 0; f <= 8; f++)
|
for (f = 0; f <= 8; f++)
|
||||||
{
|
{
|
||||||
GetTrg();
|
GetTrg();
|
||||||
|
|
||||||
if (gKey & KEY_ESCAPE)
|
if (gKey & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
switch (Call_Escape())
|
switch (Call_Escape(ghWnd))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -107,15 +111,14 @@ int MiniMapLoop()
|
||||||
rcView.top = (WINDOW_HEIGHT / 2) - gMap.length * f / 8 / 2;
|
rcView.top = (WINDOW_HEIGHT / 2) - gMap.length * f / 8 / 2;
|
||||||
rcView.bottom = (WINDOW_HEIGHT / 2) + gMap.length * f / 8 / 2;
|
rcView.bottom = (WINDOW_HEIGHT / 2) + gMap.length * f / 8 / 2;
|
||||||
|
|
||||||
PutMapName(true);
|
PutMapName(TRUE);
|
||||||
CortBox(&rcView, 0);
|
CortBox(&rcView, 0);
|
||||||
|
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RECT rcMiniMap;
|
|
||||||
rcMiniMap.left = 0;
|
rcMiniMap.left = 0;
|
||||||
rcMiniMap.right = gMap.width;
|
rcMiniMap.right = gMap.width;
|
||||||
rcMiniMap.top = 0;
|
rcMiniMap.top = 0;
|
||||||
|
@ -125,9 +128,9 @@ int MiniMapLoop()
|
||||||
rcView.bottom = --rcView.top + gMap.length + 2;
|
rcView.bottom = --rcView.top + gMap.length + 2;
|
||||||
CortBox2(&rcMiniMap, 0, SURFACE_ID_MAP);
|
CortBox2(&rcMiniMap, 0, SURFACE_ID_MAP);
|
||||||
|
|
||||||
int line = 0;
|
line = 0;
|
||||||
unsigned char my_wait = 0;
|
my_wait = 0;
|
||||||
while (true)
|
while (1)
|
||||||
{
|
{
|
||||||
GetTrg();
|
GetTrg();
|
||||||
|
|
||||||
|
@ -136,7 +139,7 @@ int MiniMapLoop()
|
||||||
|
|
||||||
if (gKey & KEY_ESCAPE)
|
if (gKey & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
switch (Call_Escape())
|
switch (Call_Escape(ghWnd))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -161,13 +164,13 @@ int MiniMapLoop()
|
||||||
|
|
||||||
PutBitmap3(&grcGame, rcView.left + 1, rcView.top + 1, &rcMiniMap, SURFACE_ID_MAP);
|
PutBitmap3(&grcGame, rcView.left + 1, rcView.top + 1, &rcMiniMap, SURFACE_ID_MAP);
|
||||||
|
|
||||||
PutMapName(true);
|
PutMapName(TRUE);
|
||||||
|
|
||||||
if (++my_wait / 8 % 2)
|
if (++my_wait / 8 % 2)
|
||||||
PutBitmap3(&grcGame, my_x + rcView.left + 1, my_y + rcView.top + 1, &my_rect, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcGame, my_x + rcView.left + 1, my_y + rcView.top + 1, &my_rect, SURFACE_ID_TEXT_BOX);
|
||||||
|
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,7 +180,7 @@ int MiniMapLoop()
|
||||||
|
|
||||||
if (gKey & KEY_ESCAPE)
|
if (gKey & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
switch (Call_Escape())
|
switch (Call_Escape(ghWnd))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -193,11 +196,11 @@ int MiniMapLoop()
|
||||||
rcView.top = (WINDOW_HEIGHT / 2) - gMap.length * f / 8 / 2;
|
rcView.top = (WINDOW_HEIGHT / 2) - gMap.length * f / 8 / 2;
|
||||||
rcView.bottom = (WINDOW_HEIGHT / 2) + gMap.length * f / 8 / 2;
|
rcView.bottom = (WINDOW_HEIGHT / 2) + gMap.length * f / 8 / 2;
|
||||||
|
|
||||||
PutMapName(true);
|
PutMapName(TRUE);
|
||||||
CortBox(&rcView, 0);
|
CortBox(&rcView, 0);
|
||||||
|
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
if (!Flip_SystemTask())
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -252,8 +252,8 @@ void PutArmsEnergy(BOOL flash)
|
||||||
// Draw max ammo
|
// Draw max ammo
|
||||||
if (gArmsData[gSelectedArms].max_num)
|
if (gArmsData[gSelectedArms].max_num)
|
||||||
{
|
{
|
||||||
PutNumber4(gArmsEnergyX + 32, 16, gArmsData[gSelectedArms].num, 0);
|
PutNumber4(gArmsEnergyX + 32, 16, gArmsData[gSelectedArms].num, FALSE);
|
||||||
PutNumber4(gArmsEnergyX + 32, 24, gArmsData[gSelectedArms].max_num, 0);
|
PutNumber4(gArmsEnergyX + 32, 24, gArmsData[gSelectedArms].max_num, FALSE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -267,7 +267,7 @@ void PutArmsEnergy(BOOL flash)
|
||||||
|
|
||||||
PutBitmap3(&rcView, gArmsEnergyX + 32, 24, &rcPer, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&rcView, gArmsEnergyX + 32, 24, &rcPer, SURFACE_ID_TEXT_BOX);
|
||||||
PutBitmap3(&rcView, gArmsEnergyX, 32, &rcLv, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&rcView, gArmsEnergyX, 32, &rcLv, SURFACE_ID_TEXT_BOX);
|
||||||
PutNumber4(gArmsEnergyX - 8, 32, gArmsData[gSelectedArms].level, 0);
|
PutNumber4(gArmsEnergyX - 8, 32, gArmsData[gSelectedArms].level, FALSE);
|
||||||
|
|
||||||
SET_RECT(rcExpBox, 0, 72, 40, 80)
|
SET_RECT(rcExpBox, 0, 72, 40, 80)
|
||||||
SET_RECT(rcExpVal, 0, 80, 0, 88)
|
SET_RECT(rcExpVal, 0, 80, 0, 88)
|
||||||
|
@ -366,7 +366,7 @@ void PutMyLife(BOOL flash)
|
||||||
PutBitmap3(&grcGame, 16, 40, &rcCase, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcGame, 16, 40, &rcCase, SURFACE_ID_TEXT_BOX);
|
||||||
PutBitmap3(&grcGame, 40, 40, &rcBr, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcGame, 40, 40, &rcBr, SURFACE_ID_TEXT_BOX);
|
||||||
PutBitmap3(&grcGame, 40, 40, &rcLife, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcGame, 40, 40, &rcLife, SURFACE_ID_TEXT_BOX);
|
||||||
PutNumber4(8, 40, gMC.lifeBr, 0);
|
PutNumber4(8, 40, gMC.lifeBr, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PutMyAir(int x, int y)
|
void PutMyAir(int x, int y)
|
||||||
|
@ -383,7 +383,7 @@ void PutMyAir(int x, int y)
|
||||||
{
|
{
|
||||||
// Draw how much air is left
|
// Draw how much air is left
|
||||||
if (gMC.air_get % 6 < 4)
|
if (gMC.air_get % 6 < 4)
|
||||||
PutNumber4(x + 32, y, gMC.air / 10, 0);
|
PutNumber4(x + 32, y, gMC.air / 10, FALSE);
|
||||||
|
|
||||||
// Draw "AIR" text
|
// Draw "AIR" text
|
||||||
if (gMC.air % 30 > 10)
|
if (gMC.air % 30 > 10)
|
||||||
|
@ -420,9 +420,9 @@ void PutTimeCounter(int x, int y)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw time
|
// Draw time
|
||||||
PutNumber4(x, y, time_count / (60 * 50), false);
|
PutNumber4(x, y, time_count / (60 * 50), FALSE);
|
||||||
PutNumber4(x + 20, y, time_count / 50 % 60, true);
|
PutNumber4(x + 20, y, time_count / 50 % 60, TRUE);
|
||||||
PutNumber4(x + 32, y, time_count / 5 % 10, false);
|
PutNumber4(x + 32, y, time_count / 5 % 10, FALSE);
|
||||||
PutBitmap3(&grcGame, x + 30, y, &rcTime[2], SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcGame, x + 30, y, &rcTime[2], SURFACE_ID_TEXT_BOX);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -45,7 +45,7 @@ BOOL SaveProfile(const char *name)
|
||||||
{
|
{
|
||||||
PROFILE profile;
|
PROFILE profile;
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char *FLAG = "FLAG";
|
const char *FLAG = "FLAG";
|
||||||
char path[PATH_LENGTH];
|
char path[PATH_LENGTH];
|
||||||
|
|
||||||
//Get path
|
//Get path
|
||||||
|
@ -254,12 +254,12 @@ BOOL InitializeGame()
|
||||||
InitFlags();
|
InitFlags();
|
||||||
if (!TransferStage(13, 200, 10, 8))
|
if (!TransferStage(13, 200, 10, 8))
|
||||||
{
|
{
|
||||||
// TODO - restore this when hWnd is available
|
// TODO - restore this when ghWnd is available
|
||||||
/*#if defined(NONPORTABLE) && defined(WINDOWS)
|
/*#if defined(NONPORTABLE) && defined(WINDOWS)
|
||||||
#ifdef JAPANESE
|
#ifdef JAPANESE
|
||||||
MessageBoxA(hWnd, "ステージの読み込みに失敗", "エラー", MB_OK);
|
MessageBoxA(ghWnd, "ステージの読み込みに失敗", "エラー", MB_OK);
|
||||||
#else
|
#else
|
||||||
MessageBoxA(hWnd, "Failed to load stage", "Error", MB_OK);
|
MessageBoxA(ghWnd, "Failed to load stage", "Error", MB_OK);
|
||||||
#endif
|
#endif
|
||||||
#else*/
|
#else*/
|
||||||
#ifdef JAPANESE
|
#ifdef JAPANESE
|
||||||
|
|
122
src/SelStage.cpp
122
src/SelStage.cpp
|
@ -21,55 +21,65 @@ void ClearPermitStage(void)
|
||||||
memset(gPermitStage, 0, 0x40);
|
memset(gPermitStage, 0, 0x40);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AddPermitStage(int index, int event)
|
BOOL AddPermitStage(int index, int event)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 8; ++i)
|
int i = 0;
|
||||||
{
|
while (i < 8)
|
||||||
if (gPermitStage[i].index == 0 || gPermitStage[i].index == index)
|
|
||||||
{
|
{
|
||||||
|
if (gPermitStage[i].index == index)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (gPermitStage[i].index == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == 8)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
gPermitStage[i].index = index;
|
gPermitStage[i].index = index;
|
||||||
gPermitStage[i].event = event;
|
gPermitStage[i].event = event;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SubPermitStage(int index)
|
BOOL SubPermitStage(int index)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < 8 && gPermitStage[i].index != index; ++i);
|
for (i = 0; i < 8; ++i)
|
||||||
|
if (gPermitStage[i].index == index)
|
||||||
|
break;
|
||||||
|
|
||||||
#ifdef FIX_BUGS
|
#ifdef FIX_BUGS
|
||||||
if (i != 8)
|
if (i == 8)
|
||||||
#else
|
#else
|
||||||
if (i != 32)
|
if (i == 32)
|
||||||
#endif
|
#endif
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (i += 1; i < 8; ++i)
|
||||||
{
|
{
|
||||||
int ia;
|
gPermitStage[i - 1] = gPermitStage[i];
|
||||||
for (ia = i + 1; ia < 8; ++ia)
|
|
||||||
{
|
|
||||||
gPermitStage[ia - 1].index = gPermitStage[ia].index;
|
|
||||||
gPermitStage[ia - 1].event = gPermitStage[ia].event;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gPermitStage[ia - 1].index = 0;
|
gPermitStage[i - 1].index = 0;
|
||||||
gPermitStage[ia - 1].event = 0;
|
gPermitStage[i - 1].event = 0;
|
||||||
|
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveStageSelectCursor(void)
|
void MoveStageSelectCursor(void)
|
||||||
{
|
{
|
||||||
int stage_num;
|
int stage_num = 0;
|
||||||
for (stage_num = 0; gPermitStage[stage_num].index != 0; ++stage_num);
|
while (gPermitStage[stage_num].index != 0)
|
||||||
|
++stage_num;
|
||||||
|
|
||||||
|
int stage_x = (WINDOW_WIDTH - 40 * stage_num) / 2; // Unused
|
||||||
|
|
||||||
|
if (stage_num == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
if (stage_num)
|
|
||||||
{
|
|
||||||
if (gKeyTrg & gKeyLeft)
|
if (gKeyTrg & gKeyLeft)
|
||||||
--gSelectedStage;
|
--gSelectedStage;
|
||||||
|
|
||||||
|
@ -79,15 +89,14 @@ void MoveStageSelectCursor(void)
|
||||||
if (gSelectedStage < 0)
|
if (gSelectedStage < 0)
|
||||||
gSelectedStage = stage_num - 1;
|
gSelectedStage = stage_num - 1;
|
||||||
|
|
||||||
if (stage_num - 1 < gSelectedStage)
|
if (gSelectedStage > stage_num - 1)
|
||||||
gSelectedStage = 0;
|
gSelectedStage = 0;
|
||||||
|
|
||||||
if ((gKeyRight | gKeyLeft) & gKeyTrg)
|
if ((gKeyLeft | gKeyRight) & gKeyTrg)
|
||||||
StartTextScript(gPermitStage[gSelectedStage].index + 1000);
|
StartTextScript(gPermitStage[gSelectedStage].index + 1000);
|
||||||
|
|
||||||
if ((gKeyRight | gKeyLeft) & gKeyTrg)
|
if ((gKeyLeft | gKeyRight) & gKeyTrg)
|
||||||
PlaySoundObject(1, 1);
|
PlaySoundObject(1, 1);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PutStageSelectObject(void)
|
void PutStageSelectObject(void)
|
||||||
|
@ -103,25 +112,33 @@ void PutStageSelectObject(void)
|
||||||
|
|
||||||
RECT rcTitle1 = {80, 64, 144, 72};
|
RECT rcTitle1 = {80, 64, 144, 72};
|
||||||
|
|
||||||
|
int i;
|
||||||
|
int stage_num;
|
||||||
|
int stage_x;
|
||||||
|
RECT rcStage;
|
||||||
|
|
||||||
if (gStageSelectTitleY > (WINDOW_HEIGHT / 2) - 74)
|
if (gStageSelectTitleY > (WINDOW_HEIGHT / 2) - 74)
|
||||||
--gStageSelectTitleY;
|
--gStageSelectTitleY;
|
||||||
|
|
||||||
PutBitmap3(&rcView, (WINDOW_WIDTH / 2) - 32, gStageSelectTitleY, &rcTitle1, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&rcView, (WINDOW_WIDTH / 2) - 32, gStageSelectTitleY, &rcTitle1, SURFACE_ID_TEXT_BOX);
|
||||||
|
|
||||||
int stage_num;
|
stage_num = 0;
|
||||||
for (stage_num = 0; gPermitStage[stage_num].index; ++stage_num);
|
while (gPermitStage[stage_num].index)
|
||||||
|
++stage_num;
|
||||||
|
|
||||||
++flash;
|
++flash;
|
||||||
|
|
||||||
if (stage_num)
|
if (stage_num)
|
||||||
{
|
{
|
||||||
int stage_x = (WINDOW_WIDTH - 40 * stage_num) / 2;
|
stage_x = (WINDOW_WIDTH - 40 * stage_num) / 2;
|
||||||
|
|
||||||
PutBitmap3(&rcView, stage_x + 40 * gSelectedStage, (WINDOW_HEIGHT / 2) - 56, &rcCur[(flash >> 1) % 2], SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&rcView, stage_x + 40 * gSelectedStage, (WINDOW_HEIGHT / 2) - 56, &rcCur[(flash >> 1) % 2], SURFACE_ID_TEXT_BOX);
|
||||||
|
|
||||||
for (int i = 0; i < 8 && gPermitStage[i].index; ++i)
|
for (i = 0; i < 8; ++i)
|
||||||
{
|
{
|
||||||
RECT rcStage;
|
if (gPermitStage[i].index == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
rcStage.left = 32 * (gPermitStage[i].index % 8);
|
rcStage.left = 32 * (gPermitStage[i].index % 8);
|
||||||
rcStage.right = rcStage.left + 32;
|
rcStage.right = rcStage.left + 32;
|
||||||
rcStage.top = 16 * (gPermitStage[i].index / 8);
|
rcStage.top = 16 * (gPermitStage[i].index / 8);
|
||||||
|
@ -145,26 +162,30 @@ int StageSelectLoop(int *p_event)
|
||||||
gStageSelectTitleY = (WINDOW_HEIGHT / 2) - 66;
|
gStageSelectTitleY = (WINDOW_HEIGHT / 2) - 66;
|
||||||
StartTextScript(gPermitStage[gSelectedStage].index + 1000);
|
StartTextScript(gPermitStage[gSelectedStage].index + 1000);
|
||||||
|
|
||||||
do
|
for (;;)
|
||||||
{
|
{
|
||||||
GetTrg();
|
GetTrg();
|
||||||
|
|
||||||
if (gKey & KEY_ESCAPE)
|
if (gKey & KEY_ESCAPE)
|
||||||
{
|
{
|
||||||
int escRet = Call_Escape();
|
switch (Call_Escape(ghWnd))
|
||||||
if (escRet == 0)
|
{
|
||||||
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
if (escRet == 2)
|
case 2:
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MoveStageSelectCursor();
|
MoveStageSelectCursor();
|
||||||
|
|
||||||
int tscRet = TextScriptProc();
|
switch (TextScriptProc())
|
||||||
if (tscRet == 0)
|
{
|
||||||
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
if (tscRet == 2)
|
case 2:
|
||||||
return 2;
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef FIX_BUGS
|
#ifdef FIX_BUGS
|
||||||
PutBitmap4(&rcView, 0, 0, &rcView, SURFACE_ID_SCREEN_GRAB);
|
PutBitmap4(&rcView, 0, 0, &rcView, SURFACE_ID_SCREEN_GRAB);
|
||||||
|
@ -178,12 +199,9 @@ int StageSelectLoop(int *p_event)
|
||||||
if (gKeyTrg & gKeyOk)
|
if (gKeyTrg & gKeyOk)
|
||||||
{
|
{
|
||||||
StopTextScript();
|
StopTextScript();
|
||||||
LoadTextScript_Stage(old_script_path);
|
break;
|
||||||
*p_event = gPermitStage[gSelectedStage].event;
|
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
else if (gKeyTrg & gKeyCancel)
|
||||||
if (gKeyTrg & gKeyCancel)
|
|
||||||
{
|
{
|
||||||
StopTextScript();
|
StopTextScript();
|
||||||
LoadTextScript_Stage(old_script_path);
|
LoadTextScript_Stage(old_script_path);
|
||||||
|
@ -192,8 +210,12 @@ int StageSelectLoop(int *p_event)
|
||||||
}
|
}
|
||||||
|
|
||||||
PutFramePerSecound();
|
PutFramePerSecound();
|
||||||
}
|
|
||||||
while (Flip_SystemTask());
|
|
||||||
|
|
||||||
|
if (!Flip_SystemTask(ghWnd))
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadTextScript_Stage(old_script_path);
|
||||||
|
*p_event = gPermitStage[gSelectedStage].event;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "WindowsWrapper.h"
|
||||||
|
|
||||||
struct PERMIT_STAGE
|
struct PERMIT_STAGE
|
||||||
{
|
{
|
||||||
int index;
|
int index;
|
||||||
|
@ -9,8 +11,8 @@ struct PERMIT_STAGE
|
||||||
extern PERMIT_STAGE gPermitStage[8];
|
extern PERMIT_STAGE gPermitStage[8];
|
||||||
|
|
||||||
void ClearPermitStage(void);
|
void ClearPermitStage(void);
|
||||||
bool AddPermitStage(int index, int event);
|
BOOL AddPermitStage(int index, int event);
|
||||||
bool SubPermitStage(int index);
|
BOOL SubPermitStage(int index);
|
||||||
void MoveStageSelectCursor(void);
|
void MoveStageSelectCursor(void);
|
||||||
void PutStageSelectObject(void);
|
void PutStageSelectObject(void);
|
||||||
int StageSelectLoop(int *p_event);
|
int StageSelectLoop(int *p_event);
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "Generic.h"
|
#include "Generic.h"
|
||||||
#include "KeyControl.h"
|
#include "KeyControl.h"
|
||||||
|
#include "Main.h"
|
||||||
#include "Map.h"
|
#include "Map.h"
|
||||||
#include "MapName.h"
|
#include "MapName.h"
|
||||||
#include "MiniMap.h"
|
#include "MiniMap.h"
|
||||||
|
@ -64,7 +65,7 @@ BOOL InitTextScript2()
|
||||||
|
|
||||||
//Create line surfaces
|
//Create line surfaces
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
MakeSurface_Generic(gRect_line.right, gRect_line.bottom, (Surface_Ids)(i + SURFACE_ID_TEXT_LINE1));
|
MakeSurface_Generic(gRect_line.right, gRect_line.bottom, (Surface_Ids)(i + SURFACE_ID_TEXT_LINE1), FALSE);
|
||||||
|
|
||||||
//Clear text
|
//Clear text
|
||||||
memset(text, 0, sizeof(text));
|
memset(text, 0, sizeof(text));
|
||||||
|
@ -93,6 +94,8 @@ void EndTextScript()
|
||||||
void EncryptionBinaryData2(unsigned char *pData, int size)
|
void EncryptionBinaryData2(unsigned char *pData, int size)
|
||||||
{
|
{
|
||||||
int val1;
|
int val1;
|
||||||
|
int work;
|
||||||
|
int i;
|
||||||
|
|
||||||
int half = size / 2;
|
int half = size / 2;
|
||||||
if (pData[half] == 0)
|
if (pData[half] == 0)
|
||||||
|
@ -100,9 +103,9 @@ void EncryptionBinaryData2(unsigned char *pData, int size)
|
||||||
else
|
else
|
||||||
val1 = (pData[half] % 256) * -1;
|
val1 = (pData[half] % 256) * -1;
|
||||||
|
|
||||||
for (int i = 0; i < size; i++)
|
for (i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
int work = pData[i];
|
work = pData[i];
|
||||||
work += val1;
|
work += val1;
|
||||||
|
|
||||||
if (i != half)
|
if (i != half)
|
||||||
|
@ -219,7 +222,7 @@ BOOL StartTextScript(int no)
|
||||||
|
|
||||||
gTS.rcText.left = TEXT_LEFT;
|
gTS.rcText.left = TEXT_LEFT;
|
||||||
gTS.rcText.top = WINDOW_HEIGHT - 56;
|
gTS.rcText.top = WINDOW_HEIGHT - 56;
|
||||||
gTS.rcText.right = WINDOW_WIDTH + 108;
|
gTS.rcText.right = WINDOW_WIDTH - TEXT_LEFT;
|
||||||
gTS.rcText.bottom = gTS.rcText.top + 48;
|
gTS.rcText.bottom = gTS.rcText.top + 48;
|
||||||
|
|
||||||
/* This is present in the Linux port, but not the Windows version (1.0.0.6, at least)
|
/* This is present in the Linux port, but not the Windows version (1.0.0.6, at least)
|
||||||
|
@ -336,6 +339,13 @@ void CheckNewLine()
|
||||||
//Type a number into the text buffer
|
//Type a number into the text buffer
|
||||||
void SetNumberTextScript(int index)
|
void SetNumberTextScript(int index)
|
||||||
{
|
{
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
int i;
|
||||||
|
BOOL bZero;
|
||||||
|
int offset;
|
||||||
|
char str[5];
|
||||||
|
|
||||||
//Get digit table
|
//Get digit table
|
||||||
int table[3];
|
int table[3];
|
||||||
table[0] = 1000;
|
table[0] = 1000;
|
||||||
|
@ -343,15 +353,13 @@ void SetNumberTextScript(int index)
|
||||||
table[2] = 10;
|
table[2] = 10;
|
||||||
|
|
||||||
//Get number to print
|
//Get number to print
|
||||||
int a = gNumberTextScript[index];
|
a = gNumberTextScript[index];
|
||||||
int b;
|
|
||||||
|
|
||||||
char str[5];
|
bZero = FALSE;
|
||||||
BOOL bZero = false;
|
offset = 0;
|
||||||
int offset = 0;
|
|
||||||
|
|
||||||
//Trim leading zeroes
|
//Trim leading zeroes
|
||||||
for (int i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
if (a / table[i] || bZero != FALSE)
|
if (a / table[i] || bZero != FALSE)
|
||||||
{
|
{
|
||||||
|
@ -364,7 +372,7 @@ void SetNumberTextScript(int index)
|
||||||
}
|
}
|
||||||
|
|
||||||
//Set last digit of string, and add null terminator
|
//Set last digit of string, and add null terminator
|
||||||
str[offset] = a + '0';
|
str[offset] = (char)a + '0';
|
||||||
str[offset + 1] = 0;
|
str[offset + 1] = 0;
|
||||||
|
|
||||||
//Append number to line
|
//Append number to line
|
||||||
|
@ -404,6 +412,18 @@ void ClearTextLine()
|
||||||
//Draw textbox and whatever else
|
//Draw textbox and whatever else
|
||||||
void PutTextScript()
|
void PutTextScript()
|
||||||
{
|
{
|
||||||
|
RECT rcFace;
|
||||||
|
RECT rcItemBox1;
|
||||||
|
RECT rcItemBox2;
|
||||||
|
RECT rcItemBox3;
|
||||||
|
RECT rcItemBox4;
|
||||||
|
RECT rcItemBox5;
|
||||||
|
int i;
|
||||||
|
RECT rect_yesno;
|
||||||
|
RECT rect_cur;
|
||||||
|
RECT rect;
|
||||||
|
int text_offset;
|
||||||
|
|
||||||
if (gTS.mode == 0)
|
if (gTS.mode == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -430,14 +450,12 @@ void PutTextScript()
|
||||||
RECT rcFrame3 = {0, 16, 244, 24};
|
RECT rcFrame3 = {0, 16, 244, 24};
|
||||||
|
|
||||||
PutBitmap3(&grcFull, WINDOW_WIDTH / 2 - 122, gTS.rcText.top - 10, &rcFrame1, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcFull, WINDOW_WIDTH / 2 - 122, gTS.rcText.top - 10, &rcFrame1, SURFACE_ID_TEXT_BOX);
|
||||||
int i;
|
|
||||||
for (i = 1; i < 7; i++)
|
for (i = 1; i < 7; i++)
|
||||||
PutBitmap3(&grcFull, WINDOW_WIDTH / 2 - 122, 8 * i + gTS.rcText.top - 10, &rcFrame2, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcFull, WINDOW_WIDTH / 2 - 122, 8 * i + gTS.rcText.top - 10, &rcFrame2, SURFACE_ID_TEXT_BOX);
|
||||||
PutBitmap3(&grcFull, WINDOW_WIDTH / 2 - 122, 8 * i + gTS.rcText.top - 10, &rcFrame3, SURFACE_ID_TEXT_BOX);
|
PutBitmap3(&grcFull, WINDOW_WIDTH / 2 - 122, 8 * i + gTS.rcText.top - 10, &rcFrame3, SURFACE_ID_TEXT_BOX);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Draw face picture
|
//Draw face picture
|
||||||
RECT rcFace;
|
|
||||||
rcFace.left = 48 * (gTS.face % 6);
|
rcFace.left = 48 * (gTS.face % 6);
|
||||||
rcFace.top = 48 * (gTS.face / 6);
|
rcFace.top = 48 * (gTS.face / 6);
|
||||||
rcFace.right = rcFace.left + 48;
|
rcFace.right = rcFace.left + 48;
|
||||||
|
@ -445,23 +463,22 @@ void PutTextScript()
|
||||||
|
|
||||||
if (gTS.face_x < (TEXT_LEFT * 0x200))
|
if (gTS.face_x < (TEXT_LEFT * 0x200))
|
||||||
gTS.face_x += 0x1000;
|
gTS.face_x += 0x1000;
|
||||||
|
|
||||||
PutBitmap3(&gTS.rcText, gTS.face_x / 0x200, gTS.rcText.top - 3, &rcFace, SURFACE_ID_FACE);
|
PutBitmap3(&gTS.rcText, gTS.face_x / 0x200, gTS.rcText.top - 3, &rcFace, SURFACE_ID_FACE);
|
||||||
|
|
||||||
//Draw text
|
//Draw text
|
||||||
int text_offset;
|
|
||||||
if (gTS.face)
|
if (gTS.face)
|
||||||
text_offset = 56;
|
text_offset = 56;
|
||||||
else
|
else
|
||||||
text_offset = 0;
|
text_offset = 0;
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
PutBitmap3(&gTS.rcText, text_offset + TEXT_LEFT, gTS.offsetY + gTS.ypos_line[i] + gTS.rcText.top, &gRect_line, (Surface_Ids)(i + SURFACE_ID_TEXT_LINE1));
|
PutBitmap3(&gTS.rcText, text_offset + TEXT_LEFT, gTS.offsetY + gTS.ypos_line[i] + gTS.rcText.top, &gRect_line, (Surface_Ids)(i + SURFACE_ID_TEXT_LINE1));
|
||||||
|
|
||||||
//Draw NOD cursor
|
//Draw NOD cursor
|
||||||
if ((gTS.wait_beam++ % 20 > 12) && gTS.mode == 2)
|
if ((gTS.wait_beam++ % 20 > 12) && gTS.mode == 2)
|
||||||
{
|
{
|
||||||
RECT rect;
|
rect.left = TEXT_LEFT + 6 * gTS.p_write + text_offset;
|
||||||
rect.left = TEXT_LEFT + text_offset + 6 * gTS.p_write;
|
|
||||||
rect.top = gTS.ypos_line[gTS.line % 4] + gTS.rcText.top + gTS.offsetY;
|
rect.top = gTS.ypos_line[gTS.line % 4] + gTS.rcText.top + gTS.offsetY;
|
||||||
rect.right = rect.left + 5;
|
rect.right = rect.left + 5;
|
||||||
rect.bottom = rect.top + 11;
|
rect.bottom = rect.top + 11;
|
||||||
|
@ -481,11 +498,11 @@ void PutTextScript()
|
||||||
}
|
}
|
||||||
|
|
||||||
//Draw GIT
|
//Draw GIT
|
||||||
RECT rcItemBox1 = {0, 0, 72, 16};
|
SET_RECT(rcItemBox1, 0, 0, 72, 16)
|
||||||
RECT rcItemBox2 = {0, 8, 72, 24};
|
SET_RECT(rcItemBox2, 0, 8, 72, 24)
|
||||||
RECT rcItemBox3 = {240, 0, 244, 8};
|
SET_RECT(rcItemBox3, 240, 0, 244, 8)
|
||||||
RECT rcItemBox4 = {240, 8, 244, 16};
|
SET_RECT(rcItemBox4, 240, 8, 244, 16)
|
||||||
RECT rcItemBox5 = {240, 16, 244, 24};
|
SET_RECT(rcItemBox5, 240, 16, 244, 24)
|
||||||
|
|
||||||
if (gTS.item)
|
if (gTS.item)
|
||||||
{
|
{
|
||||||
|
@ -499,7 +516,6 @@ void PutTextScript()
|
||||||
if (gTS.item_y < WINDOW_HEIGHT - 104)
|
if (gTS.item_y < WINDOW_HEIGHT - 104)
|
||||||
++gTS.item_y;
|
++gTS.item_y;
|
||||||
|
|
||||||
RECT rect;
|
|
||||||
if (gTS.item < 1000)
|
if (gTS.item < 1000)
|
||||||
{
|
{
|
||||||
rect.left = 16 * (gTS.item % 16);
|
rect.left = 16 * (gTS.item % 16);
|
||||||
|
@ -519,12 +535,11 @@ void PutTextScript()
|
||||||
}
|
}
|
||||||
|
|
||||||
//Draw Yes / No selection
|
//Draw Yes / No selection
|
||||||
RECT rect_yesno = {152, 48, 244, 80};
|
SET_RECT(rect_yesno, 152, 48, 244, 80)
|
||||||
RECT rect_cur = {112, 88, 128, 104};
|
SET_RECT(rect_cur, 112, 88, 128, 104)
|
||||||
|
|
||||||
if (gTS.mode == 6)
|
if (gTS.mode == 6)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
if (gTS.wait < 2)
|
if (gTS.wait < 2)
|
||||||
i = (WINDOW_HEIGHT - 96) + (2 - gTS.wait) * 4;
|
i = (WINDOW_HEIGHT - 96) + (2 - gTS.wait) * 4;
|
||||||
else
|
else
|
||||||
|
@ -539,9 +554,13 @@ void PutTextScript()
|
||||||
//Parse TSC
|
//Parse TSC
|
||||||
int TextScriptProc()
|
int TextScriptProc()
|
||||||
{
|
{
|
||||||
RECT rcSymbol = {64, 48, 72, 56};
|
|
||||||
|
|
||||||
BOOL bExit;
|
BOOL bExit;
|
||||||
|
char c[3];
|
||||||
|
int w, x, y, z;
|
||||||
|
int i;
|
||||||
|
int length;
|
||||||
|
|
||||||
|
RECT rcSymbol = {64, 48, 72, 56};
|
||||||
|
|
||||||
switch (gTS.mode)
|
switch (gTS.mode)
|
||||||
{
|
{
|
||||||
|
@ -558,7 +577,6 @@ int TextScriptProc()
|
||||||
gTS.wait = 0;
|
gTS.wait = 0;
|
||||||
|
|
||||||
//Parsing time
|
//Parsing time
|
||||||
int w, x, y, z;
|
|
||||||
bExit = FALSE;
|
bExit = FALSE;
|
||||||
|
|
||||||
while (bExit == FALSE)
|
while (bExit == FALSE)
|
||||||
|
@ -606,13 +624,13 @@ int TextScriptProc()
|
||||||
else if (IS_COMMAND('E','Q','+'))
|
else if (IS_COMMAND('E','Q','+'))
|
||||||
{
|
{
|
||||||
z = GetTextScriptNo(gTS.p_read + 4);
|
z = GetTextScriptNo(gTS.p_read + 4);
|
||||||
EquipItem(z, true);
|
EquipItem(z, TRUE);
|
||||||
gTS.p_read += 8;
|
gTS.p_read += 8;
|
||||||
}
|
}
|
||||||
else if (IS_COMMAND('E','Q','-'))
|
else if (IS_COMMAND('E','Q','-'))
|
||||||
{
|
{
|
||||||
z = GetTextScriptNo(gTS.p_read + 4);
|
z = GetTextScriptNo(gTS.p_read + 4);
|
||||||
EquipItem(z, false);
|
EquipItem(z, FALSE);
|
||||||
gTS.p_read += 8;
|
gTS.p_read += 8;
|
||||||
}
|
}
|
||||||
else if (IS_COMMAND('A','M','+'))
|
else if (IS_COMMAND('A','M','+'))
|
||||||
|
@ -682,7 +700,7 @@ int TextScriptProc()
|
||||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error", "Failed to load stage", NULL);
|
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error", "Failed to load stage", NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//MessageBoxA(hWnd, "ステージの読み込みに失敗", "エラー", 0);
|
//MessageBoxA(ghWnd, "ステージの読み込みに失敗", "エラー", 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -695,12 +713,12 @@ int TextScriptProc()
|
||||||
}
|
}
|
||||||
else if (IS_COMMAND('H','M','C'))
|
else if (IS_COMMAND('H','M','C'))
|
||||||
{
|
{
|
||||||
ShowMyChar(false);
|
ShowMyChar(FALSE);
|
||||||
gTS.p_read += 4;
|
gTS.p_read += 4;
|
||||||
}
|
}
|
||||||
else if (IS_COMMAND('S','M','C'))
|
else if (IS_COMMAND('S','M','C'))
|
||||||
{
|
{
|
||||||
ShowMyChar(true);
|
ShowMyChar(TRUE);
|
||||||
gTS.p_read += 4;
|
gTS.p_read += 4;
|
||||||
}
|
}
|
||||||
else if (IS_COMMAND('F','L','+'))
|
else if (IS_COMMAND('F','L','+'))
|
||||||
|
@ -731,7 +749,7 @@ int TextScriptProc()
|
||||||
{
|
{
|
||||||
g_GameFlags &= ~2;
|
g_GameFlags &= ~2;
|
||||||
g_GameFlags |= 1;
|
g_GameFlags |= 1;
|
||||||
gMC.up = false;
|
gMC.up = FALSE;
|
||||||
gMC.shock = 0;
|
gMC.shock = 0;
|
||||||
gTS.p_read += 4;
|
gTS.p_read += 4;
|
||||||
}
|
}
|
||||||
|
@ -1207,7 +1225,7 @@ int TextScriptProc()
|
||||||
bExit = TRUE;
|
bExit = TRUE;
|
||||||
z = GetTextScriptNo(gTS.p_read + 4);
|
z = GetTextScriptNo(gTS.p_read + 4);
|
||||||
|
|
||||||
switch (Scene_DownIsland(z))
|
switch (Scene_DownIsland(ghWnd, z))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1224,7 +1242,6 @@ int TextScriptProc()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char str_0[0x40];
|
char str_0[0x40];
|
||||||
|
|
||||||
#ifdef JAPANESE
|
#ifdef JAPANESE
|
||||||
sprintf(str_0, "•s–¾‚̃R<EFBFBD>[ƒh:<%c%c%c", gTS.data[gTS.p_read + 1], gTS.data[gTS.p_read + 2], gTS.data[gTS.p_read + 3]);
|
sprintf(str_0, "•s–¾‚̃R<EFBFBD>[ƒh:<%c%c%c", gTS.data[gTS.p_read + 1], gTS.data[gTS.p_read + 2], gTS.data[gTS.p_read + 3]);
|
||||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "ƒGƒ‰<EFBFBD>[", str_0, NULL);
|
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "ƒGƒ‰<EFBFBD>[", str_0, NULL);
|
||||||
|
@ -1255,6 +1272,7 @@ int TextScriptProc()
|
||||||
else if (gTS.flags & 0x10)
|
else if (gTS.flags & 0x10)
|
||||||
{
|
{
|
||||||
//SAT/CAT/TUR printing
|
//SAT/CAT/TUR printing
|
||||||
|
char str[72];
|
||||||
x = gTS.p_read;
|
x = gTS.p_read;
|
||||||
//Break if reaches command, or new-line
|
//Break if reaches command, or new-line
|
||||||
while (gTS.data[x] != '<' && gTS.data[x] != '\r')
|
while (gTS.data[x] != '<' && gTS.data[x] != '\r')
|
||||||
|
@ -1267,8 +1285,7 @@ int TextScriptProc()
|
||||||
}
|
}
|
||||||
|
|
||||||
//Get text to copy
|
//Get text to copy
|
||||||
char str[72];
|
length = x - gTS.p_read;
|
||||||
int length = x - gTS.p_read;
|
|
||||||
memcpy(str, &gTS.data[gTS.p_read], length);
|
memcpy(str, &gTS.data[gTS.p_read], length);
|
||||||
str[length] = 0;
|
str[length] = 0;
|
||||||
|
|
||||||
|
@ -1289,7 +1306,6 @@ int TextScriptProc()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Get text to print
|
//Get text to print
|
||||||
char c[3];
|
|
||||||
c[0] = gTS.data[gTS.p_read];
|
c[0] = gTS.data[gTS.p_read];
|
||||||
|
|
||||||
if (c[0] & 0x80)
|
if (c[0] & 0x80)
|
||||||
|
@ -1348,7 +1364,7 @@ int TextScriptProc()
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: //NEW LINE
|
case 3: //NEW LINE
|
||||||
for (int i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
gTS.ypos_line[i] -= 4;
|
gTS.ypos_line[i] -= 4;
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ struct TEXT_SCRIPT
|
||||||
|
|
||||||
//Current positions (read position in buffer, x position in line)
|
//Current positions (read position in buffer, x position in line)
|
||||||
unsigned int p_read;
|
unsigned int p_read;
|
||||||
unsigned int p_write;
|
int p_write;
|
||||||
|
|
||||||
//Current line to write to
|
//Current line to write to
|
||||||
int line;
|
int line;
|
||||||
|
|
Loading…
Add table
Reference in a new issue