1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-08-16 10:04:28 +02:00

add japanese versions support

This commit is contained in:
XProger
2018-09-25 05:08:18 +03:00
parent fdeeb731ef
commit b00797c1bc
2 changed files with 167 additions and 4 deletions

View File

@@ -2680,6 +2680,10 @@ namespace TR {
if (version == VER_TR2_PSX || version == VER_TR3_PSX) { if (version == VER_TR2_PSX || version == VER_TR3_PSX) {
stream.read(tiles4, stream.read(tilesCount)); stream.read(tiles4, stream.read(tilesCount));
stream.read(clutsCount); stream.read(clutsCount);
if (clutsCount > 1024) { // check for japanese version (skip 2 bytes after tiles data)
stream.seek(-2);
stream.read(clutsCount);
}
if (version == VER_TR3_PSX) if (version == VER_TR3_PSX)
clutsCount *= 2; // read underwater cluts too clutsCount *= 2; // read underwater cluts too
stream.read(cluts, clutsCount); stream.read(cluts, clutsCount);

View File

@@ -287,188 +287,344 @@ namespace TR {
isDemoLevel = false; isDemoLevel = false;
switch (size) { switch (size) {
// TR1 // TR1
// TITLE
case 585648 : // PSX JAP
case 508614 : version = VER_TR1_PSX; case 508614 : version = VER_TR1_PSX;
case 334874 : case 334874 :
case 316138 : case 316138 :
case 316460 : return LVL_TR1_TITLE; case 316460 : return LVL_TR1_TITLE;
// GYM
case 1234800 : // PSX JAP
case 1074234 : version = VER_TR1_PSX; case 1074234 : version = VER_TR1_PSX;
case 3236806 : case 3236806 :
case 3237128 : return LVL_TR1_GYM; case 3237128 : return LVL_TR1_GYM;
// LEVEL1
case 1667568 : // PSX JAP
case 1448896 : version = VER_TR1_PSX; case 1448896 : version = VER_TR1_PSX;
case 2533312 : case 2533312 :
case 2533634 : return LVL_TR1_1; case 2533634 : return LVL_TR1_1;
// LEVEL2
case 2873406 : isDemoLevel = true; return LVL_TR1_2; case 2873406 : isDemoLevel = true; return LVL_TR1_2;
case 1766352 : // PSX JAP
case 1535734 : version = VER_TR1_PSX; case 1535734 : version = VER_TR1_PSX;
case 2873128 : case 2873128 :
case 2873450 : return LVL_TR1_2; case 2873450 : return LVL_TR1_2;
// LEVEL3A
case 1876896 : // PSX JAP
case 1630560 : version = VER_TR1_PSX; case 1630560 : version = VER_TR1_PSX;
case 2934408 : case 2934408 :
case 2934730 : return LVL_TR1_3A; case 2934730 : return LVL_TR1_3A;
// LEVEL3B
case 1510414 : // PSX JAP
case 1506614 : version = VER_TR1_PSX; case 1506614 : version = VER_TR1_PSX;
case 2737936 : case 2737936 :
case 2738258 : return LVL_TR1_3B; case 2738258 : return LVL_TR1_3B;
// CUT1
case 722402 : version = VER_TR1_PSX; case 722402 : version = VER_TR1_PSX;
case 599840 : return LVL_TR1_CUT_1; case 599840 : return LVL_TR1_CUT_1;
// LEVEL4
case 1624130 : // PSX JAP
case 1621970 : version = VER_TR1_PSX; case 1621970 : version = VER_TR1_PSX;
case 3030550 : case 3030550 :
case 3030872 : return LVL_TR1_4; case 3030872 : return LVL_TR1_4;
// LEVEL5
case 1588102 : // PSX JAP
case 1585942 : version = VER_TR1_PSX; case 1585942 : version = VER_TR1_PSX;
case 2718218 : case 2718218 :
case 2718540 : return LVL_TR1_5; case 2718540 : return LVL_TR1_5;
// LEVEL6
case 1710624 : // PSX JAP
case 1708464 : version = VER_TR1_PSX; case 1708464 : version = VER_TR1_PSX;
case 3139590 : case 3139590 :
case 3074376 : return LVL_TR1_6; case 3074376 : return LVL_TR1_6;
// LEVEL7A
case 1698824 : // PSX JAP
case 1696664 : version = VER_TR1_PSX; case 1696664 : version = VER_TR1_PSX;
case 2817290 : case 2817290 :
case 2817612 : return LVL_TR1_7A; case 2817612 : return LVL_TR1_7A;
// LEVEL7B
case 1735434 : // PSX JAP
case 1733274 : version = VER_TR1_PSX; case 1733274 : version = VER_TR1_PSX;
case 3388774 : case 3388774 :
case 3389096 : return LVL_TR1_7B; case 3389096 : return LVL_TR1_7B;
// CUT2
case 542960 : version = VER_TR1_PSX; case 542960 : version = VER_TR1_PSX;
case 354320 : return LVL_TR1_CUT_2; case 354320 : return LVL_TR1_CUT_2;
// LEVEL8A
case 1565494 : // PSX JAP
case 1563356 : version = VER_TR1_PSX; case 1563356 : version = VER_TR1_PSX;
case 2880242 : case 2880242 :
case 2880564 : return LVL_TR1_8A; case 2880564 : return LVL_TR1_8A;
// LEVEL8B
case 1567790 : // PSX JAP
case 1565630 : version = VER_TR1_PSX; case 1565630 : version = VER_TR1_PSX;
case 2886434 : case 2886434 :
case 2886756 : return LVL_TR1_8B; case 2886756 : return LVL_TR1_8B;
// LEVEL8C
case 1621520 : // PSX JAP
case 1619360 : version = VER_TR1_PSX; case 1619360 : version = VER_TR1_PSX;
case 3105128 : case 3105128 :
case 3105450 : return LVL_TR1_8C; case 3105450 : return LVL_TR1_8C;
// LEVEL10A
case 1680146 : // PSX JAP
case 1678018 : version = VER_TR1_PSX; case 1678018 : version = VER_TR1_PSX;
case 3223816 : case 3223816 :
case 3224138 : return LVL_TR1_10A; case 3224138 : return LVL_TR1_10A;
// CUT3
case 636660 : version = VER_TR1_PSX; case 636660 : version = VER_TR1_PSX;
case 512104 : return LVL_TR1_CUT_3; case 512104 : return LVL_TR1_CUT_3;
// LEVEL10B
case 1688908 : // PSX JAP
case 1686748 : version = VER_TR1_PSX; case 1686748 : version = VER_TR1_PSX;
case 3094342 : case 3094342 :
case 3094020 : return LVL_TR1_10B; case 3094020 : return LVL_TR1_10B;
// CUT4
case 940398 : version = VER_TR1_PSX; case 940398 : version = VER_TR1_PSX;
case 879582 : return LVL_TR1_CUT_4; case 879582 : return LVL_TR1_CUT_4;
// LEVEL10C
case 1816438 : // PSX JAP
case 1814278 : version = VER_TR1_PSX; case 1814278 : version = VER_TR1_PSX;
case 3531702 : case 3531702 :
case 3532024 : return LVL_TR1_10C; case 3532024 : return LVL_TR1_10C;
// EGYPT
case 3278614 : version = VER_TR1_PSX; case 3278614 : version = VER_TR1_PSX;
case 3279242 : return LVL_TR1_EGYPT; case 3279242 : return LVL_TR1_EGYPT;
// CAT
case 3270370 : version = VER_TR1_PSX; case 3270370 : version = VER_TR1_PSX;
case 3270998 : return LVL_TR1_CAT; case 3270998 : return LVL_TR1_CAT;
// END
case 3208018 : return LVL_TR1_END; case 3208018 : return LVL_TR1_END;
// END2
case 3153300 : return LVL_TR1_END2; case 3153300 : return LVL_TR1_END2;
// TR2 // TR2
// TITLE
case 148698 : // PSX JAP
case 148744 : version = VER_TR2_PSX; case 148744 : version = VER_TR2_PSX;
case 611892 : return LVL_TR2_TITLE; case 611892 : return LVL_TR2_TITLE;
// ASSAULT
case 1568632 : // PSX JAP
case 1565974 : version = VER_TR2_PSX; case 1565974 : version = VER_TR2_PSX;
case 3471450 : return LVL_TR2_ASSAULT; case 3471450 : return LVL_TR2_ASSAULT;
// WALL
case 1664198 : // PSX JAP
case 1661622 : version = VER_TR2_PSX; case 1661622 : version = VER_TR2_PSX;
case 2986356 : return LVL_TR2_WALL; case 2986356 : return LVL_TR2_WALL;
case 2014880 : version = VER_TR2_PSX; // BOAT
case 2017538 : // PSX JAP
case 2014880 :
case 2010678 : version = VER_TR2_PSX; // PLAYABLE.PSX case 2010678 : version = VER_TR2_PSX; // PLAYABLE.PSX
case 3945738 : return LVL_TR2_BOAT; case 3945738 : return LVL_TR2_BOAT;
// VENICE
case 2084060 : // PSX JAP
case 2081402 : version = VER_TR2_PSX; case 2081402 : version = VER_TR2_PSX;
case 4213070 : return LVL_TR2_VENICE; case 4213070 : return LVL_TR2_VENICE;
// OPERA
case 2063540 : // PSX JAP
case 2060882 : version = VER_TR2_PSX; case 2060882 : version = VER_TR2_PSX;
case 3996500 : return LVL_TR2_OPERA; case 3996500 : return LVL_TR2_OPERA;
// RIG
case 1952874 : // PSX JAP
case 1950216 : version = VER_TR2_PSX; case 1950216 : version = VER_TR2_PSX;
case 3944472 : return LVL_TR2_RIG; case 3944472 : return LVL_TR2_RIG;
// PLATFORM
case 1995728 : // PSX JAP
case 1993070 : version = VER_TR2_PSX; case 1993070 : version = VER_TR2_PSX;
case 4101590 : return LVL_TR2_PLATFORM; case 4101590 : return LVL_TR2_PLATFORM;
// UNWATER
case 1786858 : // PSX JAP
case 1784200 : version = VER_TR2_PSX; case 1784200 : version = VER_TR2_PSX;
case 3131814 : return LVL_TR2_UNWATER; case 3131814 : return LVL_TR2_UNWATER;
// KEEL
case 2016768 : // PSX JAP
case 2014110 : version = VER_TR2_PSX; case 2014110 : version = VER_TR2_PSX;
case 3995356 : return LVL_TR2_KEEL; case 3995356 : return LVL_TR2_KEEL;
// LIVING
case 1811102 : // PSX JAP
case 1808444 : version = VER_TR2_PSX; case 1808444 : version = VER_TR2_PSX;
case 3501472 : return LVL_TR2_LIVING; case 3501472 : return LVL_TR2_LIVING;
// DECK
case 1970742 : // PSX JAP
case 1968084 : version = VER_TR2_PSX; case 1968084 : version = VER_TR2_PSX;
case 3890042 : return LVL_TR2_DECK; case 3890042 : return LVL_TR2_DECK;
// SKIDOO
case 1984560 : // PSX JAP
case 1981902 : version = VER_TR2_PSX; case 1981902 : version = VER_TR2_PSX;
case 3521106 : return LVL_TR2_SKIDOO; case 3521106 : return LVL_TR2_SKIDOO;
// MONASTRY
case 2123446 : // PSX JAP
case 2120772 : version = VER_TR2_PSX; case 2120772 : version = VER_TR2_PSX;
case 4325562 : return LVL_TR2_MONASTRY; case 4325562 : return LVL_TR2_MONASTRY;
// CATACOMB
case 1880628 : // PSX JAP
case 1877970 : version = VER_TR2_PSX; case 1877970 : version = VER_TR2_PSX;
case 3605052 : return LVL_TR2_CATACOMB; case 3605052 : return LVL_TR2_CATACOMB;
// ICECAVE
case 1990512 : // PSX JAP
case 1987854 : version = VER_TR2_PSX; case 1987854 : version = VER_TR2_PSX;
case 3803398 : return LVL_TR2_ICECAVE; case 3803398 : return LVL_TR2_ICECAVE;
// EMPRTOMB
case 2104252 : // PSX JAP
case 2101594 : version = VER_TR2_PSX; case 2101594 : version = VER_TR2_PSX;
case 4291468 : return LVL_TR2_EMPRTOMB; case 4291468 : return LVL_TR2_EMPRTOMB;
// FLOATING
case 2081348 : // PSX JAP
case 2078690 : version = VER_TR2_PSX; case 2078690 : version = VER_TR2_PSX;
case 4007486 : return LVL_TR2_FLOATING; case 4007486 : return LVL_TR2_FLOATING;
// XIAN
case 1751496 : // PSX JAP
case 1748838 : version = VER_TR2_PSX; case 1748838 : version = VER_TR2_PSX;
case 3173840 : return LVL_TR2_XIAN; case 3173840 : return LVL_TR2_XIAN;
// HOUSE
case 1889386 : // PSX JAP
case 1886728 : version = VER_TR2_PSX; case 1886728 : version = VER_TR2_PSX;
case 3693108 : return LVL_TR2_HOUSE; case 3693108 : return LVL_TR2_HOUSE;
// CUT1
case 952800 : // PSX JAP
case 952798 : version = VER_TR2_PSX; case 952798 : version = VER_TR2_PSX;
case 1767052 : return LVL_TR2_CUT_1; case 1767052 : return LVL_TR2_CUT_1;
// CUT2
case 1098878 : // PSX JAP
case 1098876 : version = VER_TR2_PSX; case 1098876 : version = VER_TR2_PSX;
case 2037544 : return LVL_TR2_CUT_2; case 2037544 : return LVL_TR2_CUT_2;
// CUT3
case 1288924 : // PSX JAP
case 1288922 : version = VER_TR2_PSX; case 1288922 : version = VER_TR2_PSX;
case 2558286 : return LVL_TR2_CUT_3; case 2558286 : return LVL_TR2_CUT_3;
// CUT4
case 1116968 : // PSX JAP
case 1116966 : version = VER_TR2_PSX; case 1116966 : version = VER_TR2_PSX;
case 1900230 : return LVL_TR2_CUT_4; case 1900230 : return LVL_TR2_CUT_4;
// TR3 // TR3
// TITLE
case 653485 : // PSX JAP
case 653403 : case 653403 :
case 1275266 : return LVL_TR3_TITLE; case 1275266 : return LVL_TR3_TITLE;
// HOUSE
case 1891244 : // PSX JAP
case 1889506 : case 1889506 :
case 3437855 : return LVL_TR3_HOUSE; case 3437855 : return LVL_TR3_HOUSE;
// JUNGLE
case 1933419 : // PSX JAP
case 1930923 : case 1930923 :
case 3360001 : return LVL_TR3_JUNGLE; case 3360001 : return LVL_TR3_JUNGLE;
// TEMPLE
case 1945795 : // PSX JAP
case 1943847 : case 1943847 :
case 3180412 : return LVL_TR3_TEMPLE; case 3180412 : return LVL_TR3_TEMPLE;
// QUADCHAS
case 1881562 : // PSX JAP
case 1880004 : case 1880004 :
case 3131453 : return LVL_TR3_QUADCHAS; case 3131453 : return LVL_TR3_QUADCHAS;
// TONYBOSS
case 1495530 : // PSX JAP
case 1493796 : case 1493796 :
case 2618437 : return LVL_TR3_TONYBOSS; case 2618437 : return LVL_TR3_TONYBOSS;
// SHORE
case 1981723 : // PSX JAP
case 1979611 : case 1979611 :
case 3365562 : return LVL_TR3_SHORE; case 3365562 : return LVL_TR3_SHORE;
// CRASH
case 2018552 : // PSX JAP
case 2016876 : case 2016876 :
case 3331132 : return LVL_TR3_CRASH; case 3331132 : return LVL_TR3_CRASH;
// RAPIDS
case 1942136 : // PSX JAP
case 1940346 : case 1940346 :
case 3148248 : return LVL_TR3_RAPIDS; case 3148248 : return LVL_TR3_RAPIDS;
// TRIBOSS
case 1523788 : // PSX JAP
case 1521998 : case 1521998 :
case 2276838 : return LVL_TR3_TRIBOSS; case 2276838 : return LVL_TR3_TRIBOSS;
// ROOFS
case 2098953 : // PSX JAP
case 2097077 : case 2097077 :
case 3579476 : return LVL_TR3_ROOFS; case 3579476 : return LVL_TR3_ROOFS;
// SEWER
case 2035235 : // PSX JAP
case 2033505 : case 2033505 :
case 3670149 : return LVL_TR3_SEWER; case 3670149 : return LVL_TR3_SEWER;
// TOWER
case 2080921 : // PSX JAP
case 2079183 : case 2079183 :
case 3523586 : return LVL_TR3_TOWER; case 3523586 : return LVL_TR3_TOWER;
// OFFICE
case 1550728 : // PSX JAP
case 1549006 : case 1549006 :
case 2504910 : return LVL_TR3_OFFICE; case 2504910 : return LVL_TR3_OFFICE;
// NEVADA
case 1940862 : // PSX JAP
case 1938738 : case 1938738 :
case 3140417 : return LVL_TR3_NEVADA; case 3140417 : return LVL_TR3_NEVADA;
// COMPOUND
case 2050018 : // PSX JAP
case 2048288 : case 2048288 :
case 3554880 : return LVL_TR3_COMPOUND; case 3554880 : return LVL_TR3_COMPOUND;
// AREA51
case 2056073 : // PSX JAP
case 2054325 : case 2054325 :
case 3530130 : return LVL_TR3_AREA51; case 3530130 : return LVL_TR3_AREA51;
// ANTARC
case 2000298 : // PSX JAP
case 1998398 : case 1998398 :
case 3515272 : return LVL_TR3_ANTARC; case 3515272 : return LVL_TR3_ANTARC;
// MINES
case 2025641 : // PSX JAP
case 2023895 : case 2023895 :
case 3331087 : return LVL_TR3_MINES; case 3331087 : return LVL_TR3_MINES;
// CITY
case 2058380 : // PSX JAP
case 2056388 : case 2056388 :
case 3575873 : return LVL_TR3_CITY; case 3575873 : return LVL_TR3_CITY;
// CHAMBER
case 1782615 : // PSX JAP
case 1780885 : case 1780885 :
case 3190736 : return LVL_TR3_CHAMBER; case 3190736 : return LVL_TR3_CHAMBER;
// STPAUL
case 1711157 : // PSX JAP
case 1709427 : case 1709427 :
case 3140028 : return LVL_TR3_STPAUL; case 3140028 : return LVL_TR3_STPAUL;
// CUT1
case 757909 : // PSX JAP
case 757827 : case 757827 :
case 1547866 : return LVL_TR3_CUT_1; case 1547866 : return LVL_TR3_CUT_1;
// CUT2
case 982847 : // PSX JAP
case 982765 : case 982765 :
case 1957327 : return LVL_TR3_CUT_2; case 1957327 : return LVL_TR3_CUT_2;
// CUT3
case 1243054 : // PSX JAP
case 1242972 : case 1242972 :
case 2020225 : return LVL_TR3_CUT_3; case 2020225 : return LVL_TR3_CUT_3;
// CUT4
case 430212 : // PSX JAP
case 430130 : case 430130 :
case 1048466 : return LVL_TR3_CUT_4; case 1048466 : return LVL_TR3_CUT_4;
// CUT5
case 971367 : // PSX JAP
case 971285 : case 971285 :
case 1580868 : return LVL_TR3_CUT_5; case 1580868 : return LVL_TR3_CUT_5;
// CUT6
case 1325570 : // PSX JAP
case 1325488 : case 1325488 :
case 2430940 : return LVL_TR3_CUT_6; case 2430940 : return LVL_TR3_CUT_6;
// CUT7
case 467203 : // PSX JAP
case 467121 : case 467121 :
case 1253227 : return LVL_TR3_CUT_7; case 1253227 : return LVL_TR3_CUT_7;
// CUT8
case 494396 : // PSX JAP
case 494314 : case 494314 :
case 944962 : return LVL_TR3_CUT_8; case 944962 : return LVL_TR3_CUT_8;
// CUT9
case 1002318 : // PSX JAP
case 1002236 : case 1002236 :
case 1788075 : return LVL_TR3_CUT_9; case 1788075 : return LVL_TR3_CUT_9;
// CUT11
case 590267 : // PSX JAP
case 590185 : case 590185 :
case 1402003 : return LVL_TR3_CUT_11; case 1402003 : return LVL_TR3_CUT_11;
// CUT12
case 1080128 : // PSX JAP
case 1080046 : case 1080046 :
case 2321393 : return LVL_TR3_CUT_12; case 2321393 : return LVL_TR3_CUT_12;
} }
@@ -748,6 +904,7 @@ namespace TR {
CHECK_FILE("TITLEH.png"); // Android CHECK_FILE("TITLEH.png"); // Android
CHECK_FILE("DATA/TITLEH.PCX"); // PC CHECK_FILE("DATA/TITLEH.PCX"); // PC
CHECK_FILE("DELDATA/AMERTIT.RAW"); // PSX CHECK_FILE("DELDATA/AMERTIT.RAW"); // PSX
CHECK_FILE("DELDATA/JAPTIT.RAW"); // PSX JAP
CHECK_FILE("BINDATA/USATIT.BIN"); // SEGA CHECK_FILE("BINDATA/USATIT.BIN"); // SEGA
return "level/1/AMERTIT.PNG"; // WEB return "level/1/AMERTIT.PNG"; // WEB
case LVL_TR1_GYM : case LVL_TR1_GYM :
@@ -786,7 +943,8 @@ namespace TR {
CHECK_FILE("TITLE.png"); // Android CHECK_FILE("TITLE.png"); // Android
CHECK_FILE("data/TITLE.PCX"); // PC CHECK_FILE("data/TITLE.PCX"); // PC
CHECK_FILE("pix/title.pcx"); // PC CHECK_FILE("pix/title.pcx"); // PC
CHECK_FILE("PIXUS/TITLEUS.RAW"); // PSX (TODO: add other languages) CHECK_FILE("PIXUS/TITLEUS.RAW"); // PSX US
CHECK_FILE("PIXJAP/TITLEJAP.RAW"); // PSX US
return "level/2/TITLEUS.PNG"; // WEB return "level/2/TITLEUS.PNG"; // WEB
case LVL_TR2_ASSAULT : case LVL_TR2_ASSAULT :
case LVL_TR2_HOUSE : case LVL_TR2_HOUSE :
@@ -821,8 +979,9 @@ namespace TR {
return "level/2/TIBET.PNG"; return "level/2/TIBET.PNG";
// TR3 // TR3
case LVL_TR3_TITLE : case LVL_TR3_TITLE :
CHECK_FILE("pix/TITLEUK.BMP"); // PC (TODO: add other languages) CHECK_FILE("pix/TITLEUK.BMP"); // PC
CHECK_FILE("PIXUS/TITLEUS.RAW"); // PSX (TODO: add other languages) CHECK_FILE("PIXUS/TITLEUS.RAW"); // PSX
CHECK_FILE("PIXJAP/TITLEJAP.RAW"); // PSX
return "level/3/TITLEUK.PNG"; // WEB return "level/3/TITLEUK.PNG"; // WEB
case LVL_TR3_HOUSE : case LVL_TR3_HOUSE :
CHECK_FILE("pix/HOUSE.BMP"); CHECK_FILE("pix/HOUSE.BMP");