Commit Graph

607 Commits

Author SHA1 Message Date
David Korth
2613201bb3 NEWS.md: Mention the 'abgr' swizzle issue on little-endian systems. 2025-06-16 19:46:40 -04:00
David Korth
f0ee7bee10 [librptexture] Qoi: qoi.h has the R and B channels swapped compared to what rp_image expects.
This was broken since support for Qoi was added in v2.5. Not sure why
I didn't notice it until now...

Affects: v2.4 - v2.5
2025-06-16 00:51:54 -04:00
David Korth
933b3d2f4e NEWS.md: Mention KF5/KF6 RFT_LISTDATA image quality improvements. 2025-06-15 11:25:53 -04:00
David Korth
a4efadbc56 NEWS.md: Mention issues #170 and #232. 2025-06-09 19:28:52 -04:00
David Korth
41765be492 NEWS.md: Mention the ISO and Windows icon changes. 2025-06-08 15:53:24 -04:00
David Korth
065c86149a NEWS.md: Update the Xbox360_STFS mojibake description.
Some checks are pending
Codecov / run (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
2025-05-24 15:08:28 -04:00
David Korth
5de651dbbe [libromdata] Xbox360_STFS: Fix titles for some packages that were authored incorrectly and have mojibake titles.
Two types of mojibake are detected and fixed:
- UTF-8 parsed as cp1252
- Shift-JIS parsed as cp1252

For the latter case, utf16_to_cp1252() on Linux (and other systems that
use iconv) has been modified to handle five code points that iconv()
doesn't support: 0x81, 0x8D, 0x8F, 0x90, 0x9D.

TODO: Also do this for utf8_to_cp1252() and other cp1252 functions?

On Windows, WideCharToMultiByte() and MultiByteToWideChar() handle these
code points without any issues.

These three title updates now show a correct title:

TU_11LK1UV_0000004000000.0000000000081 (UTF-8 as cp1252)
Name:  'Dodonpachi Daifukkatsu Black Label Title Update #1'
Title: '怒首領蜂 大復活 Black Label'

TU_12501VG_0000004000000.0000000000101 (UTF-8 as cp1252)
Name:  'DREAM C CLUB Title Update #4'
Title: 'ドリームクラブ'

TU_15LG1UH_000000C000000.0000000000083 (Shift-JIS as cp1252)
Name:  'Circle of Students Title Update #1'
Title: '円卓の生徒'

Fixes #450: X360 - Non-Latin Titles appearing as mojibake
Reported by @Masamune3210.
2025-05-24 15:02:21 -04:00
David Korth
34f76050cb [librpbase] RpPng: Work around a potential libpng crash when attempting to read empty data as a PNG image.
Check the magic number before initializing libpng.

It seems there's something wrong with MSVC 2022 (17.6.5) that causes a
release build of libpng to crash when calling longjmp() on Windows 10.

If this is in fact a compiler bug, and upgrading the compiler fixes it,
then I'll need to switch away from my Windows 7 VM because MSVC 17.6 is
the last version to support Windows 7 as a build environment.

See #451: libpng errors crash due to libpng setjmp/longjmp (Windows 10, release builds only)
Reported by @Masamune3210.
2025-05-24 13:53:47 -04:00
David Korth
d241d33537 NEWS.md: Mention more rpcli colorization and libgsvt refactoring. 2025-05-11 00:44:33 -04:00
David Korth
1f246e4ff6 rom-properties 2.5.1 2025-05-10 16:41:45 -04:00
David Korth
e804c1236f NEWS.md: Mention vWii packages. 2025-05-03 19:03:00 -04:00
David Korth
e07a45be0e NEWS.md: Mention URL colorization and "OSC 8" markup. 2025-05-03 09:45:59 -04:00
David Korth
6056d61f2c NEWS.md: Mention xattr compression algorithms.
Some checks failed
Codecov / run (push) Has been cancelled
2025-05-03 09:44:05 -04:00
David Korth
1e094fdb8e [gtk] _RpDragImageCxx ctor: Initialize pngBytes to nullptr.
When testing non-RomData files with `rp-stub -R`, I got random crashes.
gdb traced it back to an invalid g_bytes_unref() due to pngBytes not
being initialized properly.

This only affects the GTK4 version.

This fixes a regression from commit bc32b0c3a2.
([gtk] DragImage: Implement GTK4 drag & drop.)

Affects: v2.4 - v2.5
2025-05-02 21:02:59 -04:00
David Korth
fb032f03ea NEWS.md: Mention the TERM check. 2025-04-28 18:49:26 -04:00
David Korth
7d379f826d [cmake] gcc.cmake: Fix DT_RELR enablement.
Some checks are pending
Codecov / run (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
It seems this was broken since it was initially implemented in v2.0
in commit d732fbc010
([cmake] platform/gcc.cmake: Initial support for detecting DT_RELR.)
because TMP_HAVE_DT_RELR was unset too early.
2025-04-28 01:03:31 -04:00
David Korth
21e692e9cf NEWS.md: Mention rpcli colorizing more stuff. 2025-04-27 19:21:53 -04:00
David Korth
dc2649beff [libromdata] MegaDrive: Add external image URL support for the Teradrive TMSS ROM.
Some checks are pending
Codecov / run (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
2025-04-27 15:31:30 -04:00
David Korth
8d7f709f8b [libromdata] ISOPrivate::host32(): Fix a typo that broke "Volume Size" on CD-i volumes.
Some checks are pending
Codecov / run (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
Need to use be32_to_cpu() for 32-bit values, not be16_to_cpu().

This fixes a regression from commit 5cfce44312.
([libromdata] ISO: Always use host-endian except for CD-i, in which case, always use big-endian.)

Affects: v1.8 - v2.5

NOTE: v1.8 was the first version with CD-i support, so this was
effectively "always" broken.
2025-04-26 15:12:55 -04:00
David Korth
81555db6b5 NEWS.md: Mention that we fixed #154: SNES: Nintendo Power directory 2025-04-26 13:13:33 -04:00
David Korth
edd89a0b1c [libromdata] SNES: List the Nintendo Power directory for full NP cartridge dumps.
Currently shows the directory index, title (in Japanese), game code,
timestamp (directly as it's listed, no timezone adjustments), and
kiosk ID.
2025-04-26 12:35:40 -04:00
David Korth
02d7fbfdfa [kde] RomDataView: QTreeView is defaulting to sorting by column 0, descending.
Make it sort in ascending order by default instead.

NOTE: Using column -1 to suppress the sort indicator visibility.

Might want to guard this with QT_VERSION_CHECK(6, 0, 0), but it seems
to have no effect on KF5 on my system, but it might on some other
systems with weird shenanigans happening...
2025-04-26 12:33:44 -04:00
David Korth
48a98edc13 NEWS.md: The next release will be v2.5.1.
No major new features, just some bug fixes.
2025-04-26 11:29:50 -04:00
David Korth
755a28f910 NEWS.md: Mention the ISO sector mode changes.
Fixes #322: Underlying CD image type for ISO
Reported by @DankRank.
2025-04-26 11:26:54 -04:00
David Korth
5a738f8277 [libromdata] ISO: Get the sector size from the underlying disc reader classes if not reading directly from a file.
The SparseDiscReader changes in v2.3 broke this, so anything that uses
an ISO-9660 format showed 2048-byte sectors, even if this wasn't the case.

SparseDiscReader subclasses now have a set of CD-ROM specific fields to
set, e.g. CD-ROM sector size, mode, and subchannels. For multi-track
images, this should be set for the "main" data track.

Updated the following classes to set these fields:
- CdiReader (uses Track 02 for Dreamcast games)
- GdiReader (uses Track 03 for Dreamcast games)
- Cdrom2352Reader (always uses 2352-byte sectors, but gets mode from
  the first sector)
- CisoPspReader (always uses MODE1/2048)

GameCube and Wii disc reading classes don't set these, since they aren't
CD-ROM formats with multiple sector sizes.
2025-04-26 10:48:52 -04:00
David Korth
8e78811e8a NEWS.md: The EXE manifest bug only affects v2.5. 2025-04-26 09:55:14 -04:00
David Korth
2cd5fc45f4 NEWS.md: Mention UTF-8 improvements in rpcli. 2025-04-22 21:00:41 -04:00
David Korth
8e48fd28f1 [rpcli] DoScsiInquiry(): Fix an inverted condition that broke SCSI inquiry.
It was showing an error if the file specified was in fact a device file,
which prevents it from working.

This fixes a regression from commit 837315505e.
([rpcli] rpcli.cpp: Un-indent a few functions.)

Affects: v2.3 - v2.5
2025-04-22 19:51:44 -04:00
David Korth
8f23cc85d9 NEWS.md: Mention the Windows UTF-8 console output issues, and add a v2.5 entry for this. 2025-04-21 23:38:59 -04:00
David Korth
a3f4a3861d [libromdata] EXEPrivate::addFields_PE(): Don't show the "XML parsing failed" warning if the EXE doesn't actually have a manifest. 2025-04-21 20:25:40 -04:00
David Korth
36da8b7168 NEWS.md: Mention localsearch support. 2025-04-20 16:32:50 -04:00
David Korth
f5d34d97cb [libromdata] NintendoDS_BNR::imgpf(): Check for animated icons.
This was previously handled by NintendoDS before banner parsing was
split out into a separate RomData subclass.

Without IMGPF_ICON_ANIMATED, rpcli won't indicate if an animated icon
is present, but it can still be extracted with `-a`.

This fixes a regression from commit f2565965b2.
([libromdata] NintendoDS_BNR: Split icon/title data parsing out of NintendoDS.)

Affects: v2.4 - v2.5
2025-04-20 03:01:14 -04:00
David Korth
9ba1f356de NEWS.md: Add the release date.
...well, it might be a bit longer due to all the package builds...

(cherry picked from commit aa4ba0f2b7)
2025-04-20 01:09:59 -04:00
David Korth
ef415b7998 NEWS.md: Mention that the KDE monospace font changes requires Qt 5.2 or later. 2025-04-19 17:00:45 -04:00
David Korth
a0bed9d59d NEWS.md: Mention the KDE UI frontend monospace font changes. 2025-04-19 16:13:18 -04:00
David Korth
b4fe8c22e1 [libromdata] Wim_xml: Add special handling for unstaged images.
Unstaged images contain sets of components instead of a fully-installed
Windows system. These aren't as common as staged images.

The list of editions appears to be in the display description, though
I don't have an unstaged image to verify this. If the display description
contains "EDITIONS:", and the regular edition field and languages are
both empty, then it will be assumed to be unstaged. The list of editions
will be split and one image will be shown for each edition, using the
image number and a letter.

Should fix #445: [libromdata - WIM] Unstaged Windows OS installation images not properly supported
Requested by @pivotman319-owo.

NOTE: Needs to be verified!
2025-04-17 20:03:13 -04:00
David Korth
06a86667b3 [librptexture] rp_image_ops_neon.cpp: Added a NEON-optimized version of rp_image::swizzle().
Note that NEON's vtbl instructions doesn't support the bit 7 "zero it"
feature that x86's pshufb supports, so we have to use an AND mask in
addition to an OR mask.

Tested using luminance_alpha_reference_u.ktx2, which has a swizzle
value 'rrrg'. (Also used this for testing the previous commit, which
switched some mask stuff from 8-bit operations to 32-bit.)
2025-04-17 01:27:12 -04:00
David Korth
439ce8008b NEWS.md: Mention more NEON-optimized functions. 2025-04-11 19:51:02 -04:00
David Korth
3b55571bc7 NEWS.md: Mention PR #444. 2025-04-03 20:44:57 -04:00
David Korth
3ab17acba1 NEWS.md: Mention the XML parser switch. 2025-04-01 19:19:24 -04:00
David Korth
f6398a63ee [libromdata] WimPrivate::addFields_XML(): Fix copy/paste error for FILETIMEs.
Both lastmodtime_high and lastmodtime_low were being initialized to
strtoul(s_highPart, ...).

Testing Windows 10 (10.0.19041.5363) recovery image: (winre.wim)
- HIGHPART: 0x01D5ACCD
- LOWPART:  0x97A856C3
- Decimal: 132201763089962691

Timestamp conversions before and after: (using TZ=UTC)
- Before: 12/07/2019 07:07:37 AM
- After:  12/07/2019 07:11:48 AM

Manually converting it using a website:
- Saturday, December 7, 2019 7:11:48 AM

TODO: Split the XML code into a separate .cpp file and add DelayLoad checks.
2025-03-31 22:19:49 -04:00
David Korth
bafc14e792 NEWS.md: Move the rpcli text colorization note to "Other changes". 2025-03-29 22:29:04 -04:00
David Korth
5e859695d6 NEWS.md: Mention the RPF fix. 2025-03-29 21:09:35 -04:00
David Korth
7f1286a9a8 NEWS.md: Mention NEON-optimized byteswap functions. 2025-03-29 17:48:15 -04:00
David Korth
2ccba6205b Remove IFUNC support.
It's only supported by glibc on Linux (and possibly some of the BSDs),
and it adds a lot of complexity. The regular C dispatch functions only
have a few instructions of overhead in most cases.

Adding ARM NEON would have complicated things:
- 32-bit ARMv7: Needs a check on Linux and Android; on Windows, it's
  guaranteed to be present.
- 64-bit ARMv8: Always exists.
2025-03-29 16:46:51 -04:00
David Korth
9a86cb531f NEWS.md: Mention colorization. 2025-03-22 17:30:43 -04:00
David Korth
15d7ae00eb [gtk] RomDataView: Set RFT_STRING_warning_quark *before* calling set_label_format_type().
Otherwise, the description label won't get the "warning" formatting.
2025-03-22 12:38:07 -04:00
David Korth
1c2d28d876 [libromdata] Dreamcast: Fix typo that broke GDI parsing.
Both the GDI and CDI branches were attempting to create CdiReader objects.
That obviously won't work for GDI.

This fixes a regression from commit 209ea0d951.
([libromdata] MultiTrackSparseDiscReader.hpp: New interface for multi-track sparse disc reader classes.)

Affects: v2.4 - v2.4.1
2025-03-22 11:05:58 -04:00
David Korth
1cd09c3039 [librptexture] Qoi: New parser for the Quite OK Image Format.
qoi.h is used for upstream, instead of writing a custom decoder.
I may write a custom decoder later to decode the Qoi data directly
into an rp_image without having an intermediate step.
2025-03-17 18:10:03 -04:00
David Korth
be23ac0dc4 [win32] Fix handling of CD-ROM drives.
RomDataFactory::T_create(): Check if the filename is a drive letter.

IRpFile: Move IsDriveLetter*() and related from RpFile_win32.cpp to
IRpFile.hpp, #ifdef'd for Windows only.

CD-ROM drive volume roots can now be handled by rom-properties again.

This broke when support for Wii U Packages was added, since devices are
also considered root directories, so the directory check was done instead
of the device check.

Affects: v2.4 - v2.4.1
2025-03-13 19:31:24 -04:00