Skip to content

Commit

Permalink
[libromdata] Nintendo3DS: Add unofficial MIME types used by Citra.
Browse files Browse the repository at this point in the history
This should fix issues on Linux systems where Nintendo 3DS files weren't
detected by rom-properties due to Citra registering its own MIME types.

See issue #382: Errors in KDE
This particular issue was diagnosed by @dnmodder.
  • Loading branch information
GerbilSoft committed Aug 20, 2023
1 parent 271099e commit afa7344
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 4 deletions.
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
"Open" dialog properly.
* Windows rp-config: Fix the Key Manager tab not showing up at all.
* This regressed in v2.2.1.
* Nintendo3DS: Added non-standard MIME types used by Citra.

* Other changes:
* Nintendo3DS: The "Options" menu no longer shows a grayed-out "Extract SRL"
Expand Down
12 changes: 12 additions & 0 deletions src/libromdata/Handheld/Nintendo3DS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,18 @@ const char *const Nintendo3DSPrivate::mimeTypes[] = {
"application/x-nintendo-3ds-cia", // NOT on fd.o
"application/x-nintendo-3ds-ncch", // NOT on fd.o

// Unofficial MIME types.
// NOT used by N3DS_RomType.
// TODO: Add a specific type for CXI?
"application/x-nintendo-3ds-cxi", // NOT on fd.o

// Unofficial MIME types from Citra.
// NOT used by N3DS_RomType.
"application/x-ctr-3dsx",
"application/x-ctr-cci",
"application/x-ctr-cia",
"application/x-ctr-cxi",

nullptr
};
const RomDataInfo Nintendo3DSPrivate::romDataInfo = {
Expand Down
3 changes: 3 additions & 0 deletions src/libromdata/Handheld/Nintendo3DS_SMDH.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,9 @@ const char *const Nintendo3DS_SMDH_Private::mimeTypes[] = {
// TODO: Get these upstreamed on FreeDesktop.org.
"application/x-nintendo-3ds-smdh",

// Unofficial MIME types from Citra.
"application/x-ctr-smdh",

nullptr
};
const RomDataInfo Nintendo3DS_SMDH_Private::romDataInfo = {
Expand Down
14 changes: 10 additions & 4 deletions xdg/mime.thumbnail.types
Original file line number Diff line number Diff line change
Expand Up @@ -78,22 +78,28 @@ application/x-gba-rom # GameBoyAdvance
application/x-game-com-rom # GameCom
application/x-neo-geo-pocket-rom # NGPC
application/x-neo-geo-pocket-color-rom # NGPC
application/x-nintendo-3ds-executable # Nintendo3DS
application/x-nintendo-3ds-rom # Nintendo3DS
application/x-wonderswan-rom # WonderSwan
application/x-wonderswan-color-rom # WonderSwan
model/x.stl-binary # Nintendo3DS (?)
image/x-3ds # Nintendo3DS (?)
application/x-nintendo-3ds-executable # Nintendo3DS
application/x-nintendo-3ds-cia # Nintendo3DS
application/x-nintendo-3ds-cxi # Nintendo3DS
application/x-nintendo-3ds-ncch # Nintendo3DS
application/x-nintendo-3ds-rom # Nintendo3DS
application/x-ctr-3dsx # Nintendo3DS
application/x-ctr-cci # Nintendo3DS
application/x-ctr-cia # Nintendo3DS
application/x-ctr-cxi # Nintendo3DS
application/x-nintendo-3ds-smdh # Nintendo3DS_SMDH
application/x-ctr-smdh # Nintendo3DS_SMDH
application/x-nintendo-ds-rom # NintendoDS
application/vnd.nintendo.nitro.rom # NintendoDS
application/x-nintendo-dsi-rom # NintendoDS
application/x-psp-ciso-image # PSP
application/x-psp-dax-image # PSP
application/x-psp-jiso-image # PSP
application/x-psp-ziso-image # PSP
application/x-wonderswan-rom # WonderSwan
application/x-wonderswan-color-rom # WonderSwan

# Other
application/x-nintendo-amiibo # Amiibo
Expand Down
12 changes: 12 additions & 0 deletions xdg/rom-properties.xml
Original file line number Diff line number Diff line change
Expand Up @@ -596,6 +596,7 @@
<comment>Nintendo 3DS homebrew application</comment>
<sub-class-of type="application/x-executable"/>
<generic-icon name="application-x-executable"/>
<alias type="application/x-ctr-3dsx"/>
<glob pattern="*.3dsx"/>
<magic priority="50">
<match value="3DSX" type="string" offset="0"/>
Expand All @@ -605,6 +606,7 @@
<comment>Nintendo 3DS ROM image</comment>
<sub-class-of type="application/x-raw-disk-image"/>
<generic-icon name="application-x-executable"/>
<alias type="application/x-ctr-cci"/>
<glob pattern="*.3ds"/>
<glob pattern="*.3dz"/>
<glob pattern="*.cci"/>
Expand All @@ -630,6 +632,7 @@
<comment>Nintendo 3DS installable archive</comment>
<sub-class-of type="application/x-archive"/>
<generic-icon name="package-x-generic"/>
<alias type="application/x-ctr-cia"/>
<glob pattern="*.cia"/>
</mime-type>
<mime-type type="application/x-nintendo-3ds-ncch">
Expand All @@ -641,12 +644,21 @@
<match value="NCCH" type="string" offset="256"/>
</magic>
</mime-type>
<mime-type type="application/x-nintendo-3ds-cxi">
<comment>Nintendo 3DS executable</comment>
<sub-class-of type="application/x-nintendo-3ds-ncch"/>
<generic-icon name="application-x-executable"/>
<!-- NOTE: CXI is a specific type of NCCH. -->
<alias type="application/x-ctr-cxi"/>
<glob pattern="*.cxi"/>
</mime-type>

<!-- Nintendo3DS_SMDH -->
<mime-type type="application/x-nintendo-3ds-smdh">
<comment>Nintendo 3DS icon file</comment>
<sub-class-of type="image/x-generic"/>
<generic-icon name="image-x-generic"/>
<alias type="application/x-ctr-smdh"/>
<glob pattern="*.smdh"/>
<magic priority="50">
<match value="SMDH" type="string" offset="0"/>
Expand Down

0 comments on commit afa7344

Please sign in to comment.