- cutscene names in english

- refactor CheatScreen
- bonus gallery support
This commit is contained in:
Ilya Shurumov 2020-10-04 21:18:08 +06:00
parent a9f17ce443
commit e1f87cca96
2 changed files with 233 additions and 133 deletions

View File

@ -49,6 +49,7 @@ screenFunc fpUserFunctions[] = {
GamePlayScreen,
GameNameScreen,
CheatNumlayerSelect,
BonusGalleryScreen
};
char* gfxNames[4] = {
@ -75,34 +76,37 @@ int CutAmountsTotal[5] = {
char* CutSceneNames[28] =
{
"Il fiume rosso",
"L'obitorio",
"Il testimone",
"L'appartamento di Lenny",
"La setta cubana",
"L'intruso",
"L'incontro con Caine",
"Partenza dalla citt",
"In cerca di indizi",
"Partenza",
"Osservando l'autocarro",
"L'indizio nella Rosanna Soto",
"Il cantiere navale",
"Il colpo",
"L'arresto di Jericho",
"Vasquez in Las Vegas",
"Lo scambio di Jericho",
"Rapina nella banca",
"La sala da biliardo",
"Il sentiero di guerra di Caine",
"Caine a Rio",
"Avviso a Jones",
"La sparatoria",
"La fuga di Lenny",
"Lenny takedown",
"Back to chicago",
"Vasquez and Caine",
"Credits"
"Red River",
"The morgue",
"The Witness",
"Lenny's apartment",
"The Cuba Connection",
"The Intruder",
"Meeting Caine",
"Leaving Town",
"Looking for a lead",
"Moving out",
"Watching the truck",
"Rosanna Soto Clue",
"The Dockyard",
"The Hit",
"Seizing Jericho",
"Vasquez in Vegas",
"Trading Jericho",
"Bank job",
"The Pool Hall",
"Caine's Warpath",
"Caine in Rio",
"Warning Jones",
"The Shootout",
"Lenny's getaway",
"Lenny gets it",
"Back in Chicago",
"Vasquez meets Caine",
"Credits",
};
@ -501,6 +505,7 @@ void LoadFrontendScreens(void)
rect.x = 960;
rect.y = 256;
// load font
LoadImage(&rect, (u_long *)_frontend_buffer);
DrawSync(0);
@ -4208,161 +4213,255 @@ int MainScreen(int bSetup)
/* end block 4 */
// End Line: 10088
static char* cheatText[5] =
static char* cheatText[] =
{
"Sorry, no secrets",
"Mountain track",
"Circuit",
"Invincibility",
"Immunity"
"Immunity",
"Bonus Gallery"
};
// [D] [T] [A] adding bonus gallery
int CheatScreen(int bSetup)
{
PSXSCREEN *pPVar1;
PSXSCREEN *pPVar2;
int iVar3;
int iVar4;
int *piVar5;
int iVar6;
unsigned char bVar7;
int iVar8;
int iVar9;
int i;
int numOpen;
int k;
unsigned char cheatOn[12];
int evilRuss[4];
int evilRuss[5];
int hackLookup1[4] = {
0x121, 0x121, 0x11E, 0x11F
int hackLookup1[5] = {
0x121,
0x121,
0x11E,
0x11F,
(40 & 0xFF) | (1 << 8)
};
int hackLookup2[4] = {
0xC01, 0xC00, -1, -1
int hackLookup2[5] = {
0xC01, 0xC00, -1, -1, -1
};
if (bSetup == 0) {
if (bSetup == 0)
return 0;
}
if (gFurthestMission == 0x28)
{
bVar7 = 4;
}
else
{
bVar7 = AvailableCheats.cheat1 + AvailableCheats.cheat2 + AvailableCheats.cheat3 + AvailableCheats.cheat4;
}
if (bVar7 == 0)
if (gFurthestMission == 40)
numOpen = 5;
else
numOpen = AvailableCheats.cheat1 + AvailableCheats.cheat2 + AvailableCheats.cheat3 + AvailableCheats.cheat4;
// "Sorry no secrets"
if (numOpen == 0)
{
pCurrScreen->numButtons = 1;
pCurrScreen->buttons[0].u = 1;
pCurrScreen->buttons[0].d = 1;
pCurrScreen->numButtons = 1;
pPVar1 = pCurrScreen;
pCurrScreen->buttons[0].action = 0x400;
sprintf(pPVar1->buttons[0].Name, cheatText[0]);
sprintf(pCurrScreen->buttons[0].Name, cheatText[0]);
return 0;
}
piVar5 = evilRuss;
iVar4 = 0;
pCurrScreen->numButtons = bVar7;
pCurrScreen->numButtons = numOpen;
evilRuss[0] = AvailableCheats.cheat1;
evilRuss[1] = AvailableCheats.cheat2;
evilRuss[2] = AvailableCheats.cheat3;
evilRuss[3] = AvailableCheats.cheat4;
iVar3 = 4;
iVar8 = 0;
if (numOpen >= 5)
pCurrScreen->buttons[4] = pCurrScreen->buttons[3];
k = 0;
i = 0;
do {
if ((*piVar5 == 1) || (iVar6 = iVar3, iVar9 = iVar8, gFurthestMission == 0x28)) {
iVar6 = iVar3 + 0x3c;
sprintf((char *)((int)&pCurrScreen->buttons[0].var + iVar3), cheatText[iVar4 + 1]);
iVar9 = iVar8 + 1;
cheatOn[iVar8] = (unsigned char)iVar4;
if (evilRuss[i] || gFurthestMission == 40)
{
sprintf(pCurrScreen->buttons[i].Name, cheatText[i + 1]);
cheatOn[k++] = i;
}
pPVar1 = pCurrScreen;
iVar4 = iVar4 + 1;
piVar5 = piVar5 + 1;
iVar3 = iVar6;
iVar8 = iVar9;
} while (iVar4 < 4);
i++;
} while (i < 5);
if (bVar7 == 2) {
if (numOpen == 2)
{
pCurrScreen->buttons[0].action = hackLookup1[cheatOn[0]];
pPVar1->buttons[1].action = hackLookup1[cheatOn[1]];
pPVar1->buttons[0].var = hackLookup2[cheatOn[0]];
iVar3 = hackLookup2[cheatOn[1]];
pPVar1->buttons[0].d = '\x02';
pPVar2 = pCurrScreen;
pPVar1->buttons[1].var = iVar3;
pPVar2->buttons[0].u = '\x02';
pCurrScreen->buttons[1].d = '\x01';
pCurrScreen->buttons[1].u = '\x01';
pCurrScreen->buttons[1].action = hackLookup1[cheatOn[1]];
pCurrScreen->buttons[0].var = hackLookup2[cheatOn[0]];
pCurrScreen->buttons[1].var = hackLookup2[cheatOn[1]];
pCurrScreen->buttons[0].d = 2;
pCurrScreen->buttons[0].u = 2;
pCurrScreen->buttons[1].d = 1;
pCurrScreen->buttons[1].u = 1;
currSelIndex = 0;
return 0;
}
if (numOpen == 1)
{
pCurrScreen->buttons[0].action = hackLookup1[cheatOn[0]];
pCurrScreen->buttons[0].var = hackLookup2[cheatOn[0]];
pCurrScreen->buttons[0].d = 1;
pCurrScreen->buttons[0].u = 1;
currSelIndex = 0;
return 0;
}
if (numOpen == 3)
{
pCurrScreen->buttons[0].action = hackLookup1[cheatOn[0]];
pCurrScreen->buttons[1].action = hackLookup1[cheatOn[1]];
pCurrScreen->buttons[2].action = hackLookup1[cheatOn[2]];
pCurrScreen->buttons[0].var = hackLookup2[cheatOn[0]];
pCurrScreen->buttons[1].var = hackLookup2[cheatOn[1]];
pCurrScreen->buttons[2].var = hackLookup2[cheatOn[2]];
pCurrScreen->buttons[0].d = 2;
pCurrScreen->buttons[0].u = 3;
pCurrScreen->buttons[1].d = 3;
pCurrScreen->buttons[1].u = 1;
pCurrScreen->buttons[2].d = 1;
pCurrScreen->buttons[2].u = 2;
currSelIndex = 0;
return 0;
}
if (bVar7 == 1) {
if (numOpen >= 4)
{
pCurrScreen->buttons[0].action = hackLookup1[cheatOn[0]];
iVar3 = hackLookup2[cheatOn[0]];
pPVar1->buttons[0].d = '\x01';
pPVar2 = pCurrScreen;
pPVar1->buttons[0].var = iVar3;
pPVar2->buttons[0].u = '\x01';
pCurrScreen->buttons[1].action = hackLookup1[cheatOn[1]];
pCurrScreen->buttons[2].action = hackLookup1[cheatOn[2]];
pCurrScreen->buttons[3].action = hackLookup1[cheatOn[3]];
pCurrScreen->buttons[0].var = hackLookup2[cheatOn[0]];
pCurrScreen->buttons[1].var = hackLookup2[cheatOn[1]];
pCurrScreen->buttons[2].var = hackLookup2[cheatOn[2]];
pCurrScreen->buttons[3].var = hackLookup2[cheatOn[3]];
pCurrScreen->buttons[0].d = 2;
pCurrScreen->buttons[0].u = 4;
pCurrScreen->buttons[1].d = 3;
pCurrScreen->buttons[1].u = 1;
pCurrScreen->buttons[2].d = 4;
pCurrScreen->buttons[2].u = 2;
pCurrScreen->buttons[3].d = 1;
pCurrScreen->buttons[3].u = 3;
if(numOpen >= 5)
{
pCurrScreen->buttons[4].action = hackLookup1[cheatOn[4]];
pCurrScreen->buttons[4].var = hackLookup2[cheatOn[4]];
pCurrScreen->buttons[4].y += 40;
pCurrScreen->buttons[4].s_y += 40;
PsxScreens[40].userFunctionNum = 21;
pCurrScreen->buttons[0].u = 5;
pCurrScreen->buttons[3].d = 5;
pCurrScreen->buttons[4].d = 1;
pCurrScreen->buttons[4].u = 4;
}
currSelIndex = 0;
return 0;
}
if (bVar7 == 3) {
pCurrScreen->buttons[0].action = hackLookup1[cheatOn[0]];
pPVar1->buttons[1].action = hackLookup1[cheatOn[1]];
pPVar1->buttons[2].action = hackLookup1[cheatOn[2]];
pPVar1->buttons[0].var = hackLookup2[cheatOn[0]];
pPVar1->buttons[1].var = hackLookup2[cheatOn[1]];
iVar3 = hackLookup2[cheatOn[2]];
pPVar1->buttons[0].d = '\x02';
pPVar2 = pCurrScreen;
pPVar1->buttons[2].var = iVar3;
pPVar2->buttons[0].u = '\x03';
pCurrScreen->buttons[1].d = '\x03';
pCurrScreen->buttons[1].u = '\x01';
pCurrScreen->buttons[2].d = '\x01';
pCurrScreen->buttons[2].u = '\x02';
currSelIndex = 0;
return 0;
}
if (bVar7 == 4) {
pCurrScreen->buttons[0].action = hackLookup1[cheatOn[0]];
pPVar1->buttons[1].action = hackLookup1[cheatOn[1]];
pPVar1->buttons[2].action = hackLookup1[cheatOn[2]];
pPVar1->buttons[3].action = hackLookup1[cheatOn[3]];
pPVar1->buttons[0].var = hackLookup2[cheatOn[0]];
pPVar1->buttons[1].var = hackLookup2[cheatOn[1]];
pPVar1->buttons[2].var = hackLookup2[cheatOn[2]];
iVar3 = hackLookup2[cheatOn[3]];
pPVar1->buttons[0].d = '\x02';
pPVar2 = pCurrScreen;
pPVar1->buttons[3].var = iVar3;
pPVar2->buttons[0].u = '\x04';
pCurrScreen->buttons[1].d = '\x03';
pCurrScreen->buttons[1].u = '\x01';
pCurrScreen->buttons[2].d = '\x04';
pCurrScreen->buttons[2].u = '\x02';
pCurrScreen->buttons[3].d = '\x01';
pCurrScreen->buttons[3].u = '\x03';
currSelIndex = 0;
return 0;
}
pCurrScreen->numButtons = '\0';
pCurrScreen->numButtons = 0;
currSelIndex = 0;
return 0;
}
int g_GalleryImage = 0;
char* GalleryImageNames[] = {
"GFX\\GAL\\IMG1.TIM",
"GFX\\GAL\\IMG2.TIM",
"GFX\\GAL\\IMG3.TIM"
};
// [A]
int BonusGalleryScreen(int bSetup)
{
char tmpStr[64];
int imageChanged;
RECT16 rect;
imageChanged = 0;
if(bSetup)
{
bDoingScores = 1;
g_GalleryImage = 0;
imageChanged = 1;
}
if (fePad & 0x10)
{
// goint back
bDoingScores = 0;
LoadFrontendScreens();
//LoadBackgroundFile("DATA\\GFX.RAW");
}
else if(fePad & 0x8000)
{
imageChanged = 1;
g_GalleryImage--;
if (g_GalleryImage < 0)
g_GalleryImage = 2;
FESound(3);
}
else if(fePad & 0x2000)
{
imageChanged = 1;
g_GalleryImage++;
if (g_GalleryImage > 2)
g_GalleryImage = 0;
FESound(3);
}
if(imageChanged)
{
FEDrawCDicon();
LoadfileSeg(GalleryImageNames[g_GalleryImage], _overlay_buffer, 20, 0x4ff80);
LoadClut((u_long*)_overlay_buffer, 640, 511);
DrawSync(0);
setRECT16(&rect, 640, 0, 320, 511);
LoadImage(&rect, (u_long*)&_overlay_buffer[512]);
DrawSync(0);
}
//sprintf(tmpStr, "Gallery %d of %d", g_GalleryImage + 1, 3);
//FEPrintStringSized(tmpStr, 10, 10, 4, 0, 128, 64, 0 );
return 0;
}
// decompiled code

View File

@ -86,5 +86,6 @@ extern void FEDrawCDicon(); // 0x001C62F8
extern int CheatNumlayerSelect(int bSetup); // 0x001C6724
extern int BonusGalleryScreen(int bSetup);
#endif