diff --git a/src/format.h b/src/format.h index 84fc166..7a6ba38 100644 --- a/src/format.h +++ b/src/format.h @@ -3168,7 +3168,7 @@ namespace TR { id = TR::getLevelID(stream.size, stream.name, version, isDemoLevel); - if (version == VER_UNKNOWN || version == VER_TR1_PSX || version == VER_TR3_PSX) { + if (version == VER_UNKNOWN || version == VER_TR1_PSX || version == VER_TR1_SAT || version == VER_TR3_PSX) { stream.read(magic); if (magic != MAGIC_TR1_PC && @@ -4068,12 +4068,16 @@ namespace TR { LOG("! unknown face type: %d\n", type); ASSERT(false); } - ASSERT(f.flags.value % 16 == 0); - ASSERT(f.flags.value / 16 < roomTexturesCount); - f.flags.value /= 16; - if (type == TYPE_R_TRANSP) + if (type != TYPE_SPRITE) { + ASSERT(f.flags.value % 16 == 0); + ASSERT(f.flags.value / 16 < roomTexturesCount); + f.flags.value /= 16; + } + + if (type == TYPE_R_TRANSP) { roomTextures[f.flags.texture].attribute = 1; + } } } data.fCount = fIndex; diff --git a/src/gameflow.h b/src/gameflow.h index 2bcfd40..3e54f0d 100644 --- a/src/gameflow.h +++ b/src/gameflow.h @@ -1371,10 +1371,12 @@ namespace TR { CHECK_FILE("DELDATA/AMERTIT.RAW"); // PSX CHECK_FILE("DELDATA/JAPTIT.RAW"); // PSX JAP CHECK_FILE("BINDATA/USATIT.BIN"); // SEGA + CHECK_FILE("BINDATA/TITLE1.BIN"); // SEGA return "level/1/AMERTIT.PNG"; // WEB case LVL_TR1_GYM : CHECK_FILE("DELDATA/GYMLOAD.RAW"); CHECK_FILE("BINDATA/GYM224.BIN"); + CHECK_FILE("BINDATA/GYM.BIN"); return "level/1/GYMLOAD.PNG"; case LVL_TR1_1 : case LVL_TR1_2 : @@ -1382,6 +1384,7 @@ namespace TR { case LVL_TR1_3B : CHECK_FILE("DELDATA/AZTECLOA.RAW"); CHECK_FILE("BINDATA/AZTEC224.BIN"); + CHECK_FILE("BINDATA/AZTEC.BIN"); return "level/1/AZTECLOA.PNG"; case LVL_TR1_4 : case LVL_TR1_5 : @@ -1390,18 +1393,21 @@ namespace TR { case LVL_TR1_7B : CHECK_FILE("DELDATA/GREEKLOA.RAW"); CHECK_FILE("BINDATA/GREEK224.BIN"); + CHECK_FILE("BINDATA/GREEK.BIN"); return "level/1/GREEKLOA.PNG"; case LVL_TR1_8A : case LVL_TR1_8B : case LVL_TR1_8C : CHECK_FILE("DELDATA/EGYPTLOA.RAW"); CHECK_FILE("BINDATA/EGYPT224.BIN"); + CHECK_FILE("BINDATA/EGYPT.BIN"); return "level/1/EGYPTLOA.PNG"; case LVL_TR1_10A : case LVL_TR1_10B : case LVL_TR1_10C : CHECK_FILE("DELDATA/ATLANLOA.RAW"); CHECK_FILE("BINDATA/ATLAN224.BIN"); + CHECK_FILE("BINDATA/ATLAN.BIN"); return "level/1/ATLANLOA.PNG"; // TR2 case LVL_TR2_TITLE : diff --git a/src/texture.h b/src/texture.h index 6741a8f..71805c1 100644 --- a/src/texture.h +++ b/src/texture.h @@ -638,8 +638,12 @@ struct Texture : GAPI::Texture { } static uint8* LoadBIN(Stream &stream, uint32 &width, uint32 &height) { - height = 224; - width = stream.size / height / 2; + if (strstr(stream.name, "224.")) { + height = 224; + } else { + height = 256; + } + width = stream.size / height / 2; uint8 *data = new uint8[stream.size]; stream.raw(data, stream.size);