diff --git a/src/meta/bnk_sony.c b/src/meta/bnk_sony.c index 4f83ddb9..052a54f5 100644 --- a/src/meta/bnk_sony.c +++ b/src/meta/bnk_sony.c @@ -146,6 +146,7 @@ VGMSTREAM* init_vgmstream_bnk_sony(STREAMFILE* sf) { break; case 0x1a: /* Demon's Souls (PS5) */ + case 0x23: /* The Last of Us (PC) */ default: vgm_logi("BNK: unknown version %x (report)\n", sblk_version); diff --git a/src/meta/ogg_vorbis.c b/src/meta/ogg_vorbis.c index 4141b533..d9e24289 100644 --- a/src/meta/ogg_vorbis.c +++ b/src/meta/ogg_vorbis.c @@ -479,7 +479,7 @@ static int _init_vgmstream_ogg_vorbis_tests(STREAMFILE* sf, ogg_vorbis_io_config } } - /* "Ultramarine3" (???) */ + /* .um3: Ultramarine / Bruns Engine files */ if (check_extensions(sf,"um3")) { if (!is_id32be(0x00,sf, "OggS")) { ovmi->decryption_callback = um3_ogg_decryption_callback; diff --git a/src/meta/ogv_3rdeye.c b/src/meta/ogv_3rdeye.c index 20f3be37..57912468 100644 --- a/src/meta/ogv_3rdeye.c +++ b/src/meta/ogv_3rdeye.c @@ -1,7 +1,7 @@ #include "meta.h" #include "../coding/coding.h" -/* OGV - .ogg container (not related to ogv video) [Bloody Rondo (PC)] */ +/* OGV - .ogg container (not related to ogv video) [Bloody Rondo (PC), Shinigami no Testament (PC)] */ VGMSTREAM* init_vgmstream_ogv_3rdeye(STREAMFILE* sf) { uint32_t subfile_offset, subfile_size; diff --git a/src/meta/riff.c b/src/meta/riff.c index 8f7ffe81..2e5a73fd 100644 --- a/src/meta/riff.c +++ b/src/meta/riff.c @@ -191,11 +191,11 @@ static int read_fmt(int big_endian, STREAMFILE* sf, off_t offset, riff_fmt_chunk break; #ifdef VGM_USE_MPEG - case 0x0055: /* MP3 [Bear in the Big Blue House: Bear's Imagine That! (PC)] (official) */ + case 0x0055: /* MP3 [Bear in the Big Blue House: Bear's Imagine That! (PC), Eclipse (PC)] (official) */ fmt->coding_type = coding_MPEG_custom; - /* some oddities, unsure if part of standard: + /* some oddities, unsure if part of standard: * - block size is 1 (in mono) - * - bps is 16 + * - bps is 16 for some games * - extra size 0x0c, has channels? and (possibly) approx frame size */ break; #endif diff --git a/src/meta/xnb_lz4mg.h b/src/meta/xnb_lz4mg.h index 9a2e98aa..e6833472 100644 --- a/src/meta/xnb_lz4mg.h +++ b/src/meta/xnb_lz4mg.h @@ -79,6 +79,8 @@ static int lz4mg_decompress(lz4mg_stream_t* strm) { int src_pos = 0; uint8_t next_len, next_val; + /* MSVC 64 19.30+ has a /O2 bug where some states aren't handled properly unless a fallthrough is used. + * Seems related to src_pos and doesn't seem fixed by using sub-functions or avoiding gotos. */ while (1) { /* mostly linear state machine, but it may break anytime when reaching dst or src @@ -154,7 +156,7 @@ static int lz4mg_decompress(lz4mg_stream_t* strm) { } while (next_len == LZ4MG_VARLEN_CONTINUE); ctx->state = SET_MATCH; - // Falthrough for MSVC + //break; // Falthrough for MSVC case SET_MATCH: ctx->match_len += LZ4MG_MIN_MATCH_LEN; @@ -164,7 +166,7 @@ static int lz4mg_decompress(lz4mg_stream_t* strm) { ctx->match_pos = LZ4MG_WINDOW_SIZE + ctx->match_pos; ctx->state = COPY_MATCH; - // Fallthrough for MSVC + //break; // Fallthrough for MSVC case COPY_MATCH: while (ctx->match_len > 0) {