mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-26 07:39:56 -06:00
Slot-2 Motion Pak, Guitar Grip emulation (#2183)
* Add DS Motion Pak emulation * Add retail Motion Pak emulation, Guitar Grip emulation * Simplify Motion Pak acceleration conversion formula * Fix Motion Pak emulation axes * Motion Pak: Emulate console laying on a flat table when motion input is not detected * Motion Pak: Add comment * GBACartMotionPak: Update comment
This commit is contained in:

committed by
GitHub

parent
2d04222442
commit
fd74181f7d
@ -775,6 +775,27 @@ void CartRumblePak::ROMWrite(u32 addr, u16 val)
|
||||
}
|
||||
}
|
||||
|
||||
CartGuitarGrip::CartGuitarGrip(void* userdata) :
|
||||
CartCommon(GuitarGrip),
|
||||
UserData(userdata)
|
||||
{
|
||||
}
|
||||
|
||||
CartGuitarGrip::~CartGuitarGrip() = default;
|
||||
|
||||
u16 CartGuitarGrip::ROMRead(u32 addr) const
|
||||
{
|
||||
return 0xF9FF;
|
||||
}
|
||||
|
||||
u8 CartGuitarGrip::SRAMRead(u32 addr)
|
||||
{
|
||||
return ~((Platform::Addon_KeyDown(Platform::KeyGuitarGripGreen, UserData) ? 0x40 : 0)
|
||||
| (Platform::Addon_KeyDown(Platform::KeyGuitarGripRed, UserData) ? 0x20 : 0)
|
||||
| (Platform::Addon_KeyDown(Platform::KeyGuitarGripYellow, UserData) ? 0x10 : 0)
|
||||
| (Platform::Addon_KeyDown(Platform::KeyGuitarGripBlue, UserData) ? 0x08 : 0));
|
||||
}
|
||||
|
||||
GBACartSlot::GBACartSlot(melonDS::NDS& nds, std::unique_ptr<CartCommon>&& cart) noexcept : NDS(nds), Cart(std::move(cart))
|
||||
{
|
||||
}
|
||||
@ -906,6 +927,15 @@ std::unique_ptr<CartCommon> LoadAddon(int type, void* userdata)
|
||||
// JP Boktai 3
|
||||
cart = CreateFakeSolarSensorROM("U33J", nullptr, userdata);
|
||||
break;
|
||||
case GBAAddon_MotionPakHomebrew:
|
||||
cart = std::make_unique<CartMotionPakHomebrew>(userdata);
|
||||
break;
|
||||
case GBAAddon_MotionPakRetail:
|
||||
cart = std::make_unique<CartMotionPakRetail>(userdata);
|
||||
break;
|
||||
case GBAAddon_GuitarGrip:
|
||||
cart = std::make_unique<CartGuitarGrip>(userdata);
|
||||
break;
|
||||
default:
|
||||
Log(LogLevel::Warn, "GBACart: !! invalid addon type %d\n", type);
|
||||
return nullptr;
|
||||
|
Reference in New Issue
Block a user