Skip to content

Commit 341c823

Browse files
feat(ds): enable skin support for melonDS, desmume2015, and ThinLibretroCore DS
- Set supportsSkins = true on PVMelonDSCore and PVDesmume2015Core - Remove com.provenance.ds from PVThinLibretroCore skinUnsupportedSystems - Add supportsDualScreens = true for DS system in PVThinLibretroCore - DefaultDeltaSkin NDS dual-screen portrait/landscape layouts already present Part of #2540 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1c8f2c9 commit 341c823

4 files changed

Lines changed: 12 additions & 5 deletions

File tree

.changelog/3377.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
### Added
2+
- **DS Dual-Screen Skin Support (Phase 1)** — Enable Delta skin support for melonDS, desmume2015, and PVThinLibretroCore DS system; NDS dual-screen portrait/landscape layouts were already present in DefaultDeltaSkin and are now active.

Cores/Desmume2015/PVDesmume2015Core/Core/PVDesmume2015Core.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ import PVCoreBridgeRetro
1515
@objc
1616
@objcMembers
1717
open class PVDesmume2015Core: PVEmulatorCore {
18-
/// Dual-screen skin layouts are not yet supported; disable until implemented.
19-
public override var supportsSkins: Bool { false }
18+
public override var supportsSkins: Bool { true }
2019

2120
public override var supportsDualScreens: Bool { true }
2221

Cores/melonDS/PVMelonDSCore/Core/PVMelonDSCore.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ import PVCoreBridgeRetro
1515
@objc
1616
@objcMembers
1717
public final class PVMelonDSCore: PVEmulatorCore {
18-
/// Dual-screen skin layouts are not yet supported; disable until implemented.
19-
public override var supportsSkins: Bool { false }
18+
public override var supportsSkins: Bool { true }
2019

2120
public override var supportsDualScreens: Bool { true }
2221

PVCoreBridgeRetro/Sources/PVLibRetro/PVThinLibretroCore.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,10 @@ class PVThinLibretroCore: PVEmulatorCore {
6666

6767
/// Systems that don't have adequate skin support — disable skins to show
6868
/// the native on-screen controls or core-specific overlays instead.
69+
/// NOTE: "com.provenance.ds" is intentionally NOT listed here — DS skins
70+
/// use the DefaultDeltaSkin NDS dual-screen layout (portrait + landscape).
6971
private static let skinUnsupportedSystems: Set<String> = [
7072
"com.provenance.3ds",
71-
"com.provenance.ds",
7273
"com.provenance.dos",
7374
"com.provenance.mame",
7475
"com.provenance.arcade",
@@ -85,6 +86,12 @@ class PVThinLibretroCore: PVEmulatorCore {
8586
return !Self.skinUnsupportedSystems.contains(sysId)
8687
}
8788

89+
/// DS (NDS) cores output a combined 256×384 framebuffer (top screen + bottom screen).
90+
/// The DefaultDeltaSkin NDS layout splits this into two independently positioned viewports.
91+
public override var supportsDualScreens: Bool {
92+
systemIdentifier == "com.provenance.ds"
93+
}
94+
8895
required init() {
8996
super.init()
9097
self.bridge = (_bridge as! any ObjCBridgedCoreBridge)

0 commit comments

Comments
 (0)