From 654544b3290b3fcfe156327a359d16b449117cb9 Mon Sep 17 00:00:00 2001 From: Sergio Martin Date: Fri, 9 May 2025 09:04:14 +0200 Subject: [PATCH] Adding Opera (3DO) as emulation core in Bizhawk (#4264) * Adding base * Progress with opera and adding 3do firmwares * Adding missing callbacks * Adding missing callbacks * 3DO core starting * Now passing inputs * Passing gamepad inputs * Fixing input names * Now supporting mouse * Adding mouse support * Added flightstick * Added flight stick * Adding last inputs and fixing audio * Adding controllers and fixing audio * Adding orbatak * Fixing mnemonics, added orbatak * Adding font roms * Adding font roms * Adding region * Adding region * Fixing mouse issue * Fixed initialization bug in fresh installs * Setting mouse to relative inputs * Using mouse as relative * Bypassing bios checks to enable bizhawk to pass whatever bios it wants * Adding default inputs for 3DO * Adding detection of nvram changes * Adding lag frame and nvram saving * Adding cd use detection * Adding cdrom light * Using cd callbacks * Using cd callbacks * Bypassing image name check * Adding multidisc support * Removing 3do-iso special extension * Fixing build * Attempting to add disc swapping * Trying to add multidisc support * Uncommenting cd functions * revert unrelated changes * misc unmanaged integration * Update waterbox-cores.yml * Added reset button, removed eject/insert * Added reset button, removed eject/insert * Fix line endings in `Bk2MnemonicLookup.cs` changes * Fix indentation * Fix spaces in `Opera.cs` * Alphabetise * Make `Opera`'s `ISaveRam` implementations `override` * Misc. code style changes * Fix casting array index to `uint` for comparisons * Adding default framerate and removing message duration parameter * Refactoring input parsing and fixing some errors * Fixing indentation * Exposing non volatile ram * Adding automatic sram management * Now letting bk manage saveram automatically * Fixing indentation and removing unncessary flag * Removing dead code * Removing dead code * Removing unnecessary mnemonic fallbacks * Keep fixing indentation errors * Removing struct for memory areas * Adding proper detection of input reading * Changing namespace to not have an underscore * fix whitespace in PlatformFrameRates * make waterbox function non-virtual * Update src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.cs Co-authored-by: feos * Fixing controller mapping * Fixing controller mapping, 3DO->Panasonic3DO, added submenu * Fixing controller * Fixing controllers * Removing unnecessary function * Fixing namespace and default ctrls * Fixing 3DO detection * Adding submodule branch * Adding PAL framerate for opera * controller pic * Fixed firmware naming * Fix line endings * Recompress image * Realphabetise after namespace/sysID change * Move this `case` block up * Minor code style fixes * Renaming user-facing Panasonic3DO strings to 3DO --------- Co-authored-by: Morilli <35152647+Morilli@users.noreply.github.com> Co-authored-by: YoshiRulz Co-authored-by: feos Co-authored-by: feos --- .github/workflows/waterbox-cores.yml | 2 + .gitmodules | 4 + Assets/defctrl.json | 42 ++ Assets/dll/opera.wbx.zst | Bin 0 -> 174657 bytes src/BizHawk.Client.Common/RomLoader.cs | 6 +- .../movie/PlatformFrameRates.cs | 2 + .../MainForm.VSystem.cs | 4 + .../Properties/Resources.cs | 1 + .../config/ControllerConfig.cs | 1 + .../config/FirmwareConfig.cs | 1 + .../images/ControllerImages/3DOController.png | Bin 0 -> 87373 bytes .../MultiDiskBundler/MultiDiskBundler.cs | 1 + .../Base Implementations/Bk2MnemonicLookup.cs | 29 ++ .../Database/FirmwareDatabase.cs | 54 +++ src/BizHawk.Emulation.Common/Extensions.cs | 1 + src/BizHawk.Emulation.Common/VSystemID.cs | 2 +- .../Consoles/3DO/LibOpera.cs | 153 +++++++ .../Consoles/3DO/Opera.Controllers.cs | 202 +++++++++ .../Consoles/3DO/Opera.IDriveLight.cs | 11 + .../Consoles/3DO/Opera.IRegionable.cs | 11 + .../Consoles/3DO/Opera.ISettable.cs | 135 ++++++ .../Consoles/3DO/Opera.cs | 320 ++++++++++++++ src/BizHawk.Emulation.Cores/CoreNames.cs | 1 + .../DiscIdentifier.cs | 17 +- waterbox/make-all-cores.sh | 1 + waterbox/opera/Makefile | 103 +++++ waterbox/opera/bizhawk.cpp | 391 ++++++++++++++++++ waterbox/opera/bizhawk.hpp | 107 +++++ waterbox/opera/opera-libretro | 1 + waterbox/readme.txt | 2 + 30 files changed, 1596 insertions(+), 9 deletions(-) create mode 100644 Assets/dll/opera.wbx.zst create mode 100644 src/BizHawk.Client.EmuHawk/images/ControllerImages/3DOController.png create mode 100644 src/BizHawk.Emulation.Cores/Consoles/3DO/LibOpera.cs create mode 100644 src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.Controllers.cs create mode 100644 src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.IDriveLight.cs create mode 100644 src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.IRegionable.cs create mode 100644 src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.ISettable.cs create mode 100644 src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.cs create mode 100644 waterbox/opera/Makefile create mode 100644 waterbox/opera/bizhawk.cpp create mode 100644 waterbox/opera/bizhawk.hpp create mode 160000 waterbox/opera/opera-libretro diff --git a/.github/workflows/waterbox-cores.yml b/.github/workflows/waterbox-cores.yml index db32dc64f6..beb1ae59da 100644 --- a/.github/workflows/waterbox-cores.yml +++ b/.github/workflows/waterbox-cores.yml @@ -37,6 +37,7 @@ jobs: git submodule update --init uae/libretro-uae; git submodule update --init stella/core; git submodule update --init dsda/core; + git submodule update --init opera/opera-libretro; git submodule update --init --recursive dosbox/dosbox-x; - name: Install clang 18 run: wget https://apt.llvm.org/llvm.sh; @@ -70,6 +71,7 @@ jobs: Assets/dll/libsnes.wbx.zst Assets/dll/melonDS.wbx.zst Assets/dll/ngp.wbx.zst + Assets/dll/opera.wbx.zst Assets/dll/pcfx.wbx.zst Assets/dll/picodrive.wbx.zst Assets/dll/shock.wbx.zst diff --git a/.gitmodules b/.gitmodules index aa899a85f0..b37b17d919 100644 --- a/.gitmodules +++ b/.gitmodules @@ -93,3 +93,7 @@ path = waterbox/dsda/core url = https://github.com/TASEmulators/dsda-doom.git branch = wbx +[submodule "waterbox/opera/opera-libretro"] + path = waterbox/opera/opera-libretro + url = https://github.com/TASEmulators/opera-libretro.git + branch = wbx diff --git a/Assets/defctrl.json b/Assets/defctrl.json index f615633a9b..9048080e02 100644 --- a/Assets/defctrl.json +++ b/Assets/defctrl.json @@ -1109,6 +1109,48 @@ "Deadzone": 0.0 } }, + "3DO Controller": { + "P1 Mouse X": { + "Value": "RMouse X", + "Mult": 1.0, + "Deadzone": 0.0 + }, + "P1 Mouse Y": { + "Value": "RMouse Y", + "Mult": 1.0, + "Deadzone": 0.0 + }, + "P1 Flight Stick Horizontal Axis": { + "Value": "RMouse X", + "Mult": 1.0, + "Deadzone": 0.0 + }, + "P1 Flight Stick Vertical Axis": { + "Value": "RMouse Y", + "Mult": 1.0, + "Deadzone": 0.0 + }, + "P1 Light Gun Screen X": { + "Value": "RMouse X", + "Mult": 1.0, + "Deadzone": 0.0 + }, + "P1 Light Gun Screen Y": { + "Value": "RMouse Y", + "Mult": 1.0, + "Deadzone": 0.0 + }, + "P1 Trackball X": { + "Value": "RMouse X", + "Mult": 1.0, + "Deadzone": 0.0 + }, + "P1 Trackball Y": { + "Value": "RMouse Y", + "Mult": 1.0, + "Deadzone": 0.0 + } + }, "DOSBox Controller": { "Mouse Position X": { "Value": "WMouse X", diff --git a/Assets/dll/opera.wbx.zst b/Assets/dll/opera.wbx.zst new file mode 100644 index 0000000000000000000000000000000000000000..aabd3bba20f40000d7b10428bd99eca5feb187c2 GIT binary patch literal 174657 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ì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

H7tUcB7R<44bLQ;Q>voeynxuc2*#y+g-lK6bQP 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 literal 0 HcmV?d00001 diff --git a/src/BizHawk.Client.Common/RomLoader.cs b/src/BizHawk.Client.Common/RomLoader.cs index 9fdf44ddf5..f0cb0f4201 100644 --- a/src/BizHawk.Client.Common/RomLoader.cs +++ b/src/BizHawk.Client.Common/RomLoader.cs @@ -261,6 +261,9 @@ namespace BizHawk.Client.Common case DiscType.MegaCD: game.System = VSystemID.Raw.GEN; break; + case DiscType.Panasonic3DO: + game.System = VSystemID.Raw.Panasonic3DO; + break; case DiscType.PCFX: game.System = VSystemID.Raw.PCFX; break; @@ -289,9 +292,6 @@ namespace BizHawk.Client.Common case DiscType.NeoGeoCD: NoCoreForSystem(VSystemID.Raw.NeoGeoCD); break; - case DiscType.Panasonic3DO: - NoCoreForSystem(VSystemID.Raw.Panasonic3DO); - break; case DiscType.Playdia: NoCoreForSystem(VSystemID.Raw.Playdia); break; diff --git a/src/BizHawk.Client.Common/movie/PlatformFrameRates.cs b/src/BizHawk.Client.Common/movie/PlatformFrameRates.cs index ef887a5961..2e4a499c51 100644 --- a/src/BizHawk.Client.Common/movie/PlatformFrameRates.cs +++ b/src/BizHawk.Client.Common/movie/PlatformFrameRates.cs @@ -17,6 +17,8 @@ namespace BizHawk.Client.Common private static readonly Dictionary Rates = new Dictionary { + ["Panasonic3DO"] = 60.0, // The emulator (Opera-Libretro) reports exact 60.0 for NTSC https://github.com/libretro/opera-libretro/blob/67a29e60a4d194b675c9272b21b61eaa022f3ba3/libopera/opera_region.c#L10 + ["Panasonic3DO_PAL"] = 50.0, // The emulator (Opera-Libretro) reports exact 50.0 for PAL https://github.com/libretro/opera-libretro/blob/67a29e60a4d194b675c9272b21b61eaa022f3ba3/libopera/opera_region.c#L17 ["NES"] = 60.098813897440515, // per https://forums.nesdev.org/viewtopic.php?p=3783#p3783 the nominal value is (19687500/11) / ((341*262 - 0.5) / 3) = 39375000/655171 ≈ 60.09881389744051553 (so our chosen number, which is approximately 60.09881389744051461, is very close) ["FDS"] = 60.098813897440515, // ditto ["NES_PAL"] = 50.00697796826829, // per https://forums.nesdev.org/viewtopic.php?p=3783#p3783 the nominal value is 1662607 / (341*312/3.2) = 3325214/66495 ≈ 50.0069779682682908 (so our chosen number, which is approximately 50.0069779682682877, is very close) diff --git a/src/BizHawk.Client.EmuHawk/MainForm.VSystem.cs b/src/BizHawk.Client.EmuHawk/MainForm.VSystem.cs index ad29c600e6..2f3e4dbecf 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.VSystem.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.VSystem.cs @@ -36,6 +36,7 @@ using BizHawk.Emulation.Cores.Consoles.Nintendo.NDS; using BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES; using BizHawk.Emulation.Cores.Consoles.Nintendo.VB; using BizHawk.Emulation.Cores.Consoles.O2Hawk; +using BizHawk.Emulation.Cores.Consoles.Panasonic3DO; using BizHawk.Emulation.Cores.Consoles.SNK; using BizHawk.Emulation.Cores.Consoles.Sega.PicoDrive; using BizHawk.Emulation.Cores.Consoles.Sega.Saturn; @@ -1370,6 +1371,9 @@ namespace BizHawk.Client.EmuHawk }; items.Add(octoshockSubmenu); + // Opera + items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.Opera, CreateGenericCoreConfigItem(CoreNames.Opera))); + // PCEHawk items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.PceHawk, CreateGenericCoreConfigItem(CoreNames.PceHawk))); diff --git a/src/BizHawk.Client.EmuHawk/Properties/Resources.cs b/src/BizHawk.Client.EmuHawk/Properties/Resources.cs index 8e7ec2a5b8..2fcaa18bee 100644 --- a/src/BizHawk.Client.EmuHawk/Properties/Resources.cs +++ b/src/BizHawk.Client.EmuHawk/Properties/Resources.cs @@ -36,6 +36,7 @@ namespace BizHawk.Client.EmuHawk.Properties internal static readonly Lazy SaturnController = new Lazy(() => ReadEmbeddedBitmap("ControllerImages.SaturnController")); internal static readonly Lazy SmsController = new Lazy(() => ReadEmbeddedBitmap("ControllerImages.SMSController")); internal static readonly Lazy SnesController = new Lazy(() => ReadEmbeddedBitmap("ControllerImages.SNES_Controller")); + internal static readonly Lazy ThreeDOController = new Lazy(() => ReadEmbeddedBitmap("ControllerImages.3DOController")); internal static readonly Lazy TI83Controller = new Lazy(() => ReadEmbeddedBitmap("ControllerImages.TI83_Controller")); internal static readonly Lazy VBoyController = new Lazy(() => ReadEmbeddedBitmap("ControllerImages.VBoyController")); internal static readonly Lazy WonderSwanColor = new Lazy(() => ReadEmbeddedBitmap("ControllerImages.WonderSwanColor")); diff --git a/src/BizHawk.Client.EmuHawk/config/ControllerConfig.cs b/src/BizHawk.Client.EmuHawk/config/ControllerConfig.cs index 959028b2d3..5ce917070f 100644 --- a/src/BizHawk.Client.EmuHawk/config/ControllerConfig.cs +++ b/src/BizHawk.Client.EmuHawk/config/ControllerConfig.cs @@ -44,6 +44,7 @@ namespace BizHawk.Client.EmuHawk ControllerImages.Add("PC Engine Controller", Properties.Resources.PceController); ControllerImages.Add("Commodore 64 Controller", Properties.Resources.C64Joystick); ControllerImages.Add("TI83 Controller", Properties.Resources.TI83Controller); + ControllerImages.Add("3DO Controller", Properties.Resources.ThreeDOController); ControllerImages.Add("WonderSwan Controller", Properties.Resources.WonderSwanColor); ControllerImages.Add("Lynx Controller", Properties.Resources.Lynx); diff --git a/src/BizHawk.Client.EmuHawk/config/FirmwareConfig.cs b/src/BizHawk.Client.EmuHawk/config/FirmwareConfig.cs index faa27505c8..1e6954682b 100644 --- a/src/BizHawk.Client.EmuHawk/config/FirmwareConfig.cs +++ b/src/BizHawk.Client.EmuHawk/config/FirmwareConfig.cs @@ -61,6 +61,7 @@ namespace BizHawk.Client.EmuHawk // Redundant with SystemLookup? Not so fast. That data drives things. This is one step abstracted. Don't be such a smart guy. Keep this redundant list up to date. private static readonly Dictionary SystemGroupNames = new Dictionary { + ["3DO"] = "3DO / 3DO Arcade / 3DO M2", ["Amiga"] = "Amiga", ["NES"] = "NES", ["SNES"] = "SNES", diff --git a/src/BizHawk.Client.EmuHawk/images/ControllerImages/3DOController.png b/src/BizHawk.Client.EmuHawk/images/ControllerImages/3DOController.png new file mode 100644 index 0000000000000000000000000000000000000000..60d6609ff5235aeca1983b2ed85ccb81ba4a260c GIT binary patch literal 87373 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 w> SystemOverrides = new Dictionary> { + [VSystemID.Raw.Panasonic3DO] = new() + { + ["LT"] = 'l', + ["RT"] = 'r', + ["P"] = 'P', + ["Trigger"] = 'T', + ["Reload"] = 'R', + ["Is Off-Screen"] = 'O', + ["Aux A"] = 'A', + ["Start P1"] = '1', + ["Start P2"] = '2', + ["Coin P1"] = 'C', + ["Coin P2"] = 'c', + ["Service"] = 'S', + ["Fourth Button"] = '4', + ["Next Disc"] = '>', + ["Prev Disc"] = '<', + }, + [VSystemID.Raw.NES] = new() { ["FDS Eject"] = 'E', @@ -964,6 +983,16 @@ namespace BizHawk.Emulation.Common private static readonly Dictionary> AxisSystemOverrides = new Dictionary> { + [VSystemID.Raw.Panasonic3DO] = new() + { + ["Flight Stick Horizontal Axis"] = "fsX", + ["Flight Stick Vertical Axis"] = "fsY", + ["Flight Stick Altitude Axis"] = "fsZ", + ["Light Gun Screen X"] = "lgX", + ["Light Gun Screen Y"] = "lgY", + ["Trackball X"] = "tX", + ["Trackball Y"] = "tY", + }, [VSystemID.Raw.A78] = new() { ["VPos"] = "X", diff --git a/src/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs b/src/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs index 37f333bc28..4f65630804 100644 --- a/src/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs +++ b/src/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs @@ -82,6 +82,60 @@ namespace BizHawk.Emulation.Common FirmwareAndOption("1E5B0B2441A4979B6966D942B20CC76C413B8C5E", 2048, "32X", "M", "32X_M_BIOS.BIN", "32x SH2 MASTER BIOS"); FirmwareAndOption("4103668C1BBD66C5E24558E73D4F3F92061A109A", 1024, "32X", "S", "32X_S_BIOS.BIN", "32x SH2 SLAVE BIOS"); + // 3DO + // Information obtained from https://3dodev.com/software/roms + + Firmware("3DO", "Panasonic_FZ1_U", "Panasonic FZ-1 (U)"); + Option("3DO", "Panasonic_FZ1_U", File("34BF189111295F74D7B7DFC1F304D98B8D36325A", 1048576, "panafz1.bin", "Panasonic FZ-1 (U)"), FirmwareOptionStatus.Ideal); + Option("3DO", "Panasonic_FZ1_U", File("DE3C55490733E6C69724D87E149B52ED955638ED", 1048576, "panafz1_dev_0.9.bin", "Panasonic FZ-1 (U) v0.9 dev build")); + Option("3DO", "Panasonic_FZ1_U", File("4CB4EE36E0F5BC0995D34992B4F241C420D49B2E", 1048576, "panafz1_dev.bin", "Panasonic FZ-1 (U) dev build")); + + Firmware("3DO", "Panasonic_FZ1_E", "Panasonic FZ-1 (E)"); + Option("3DO", "Panasonic_FZ1_E", File("1D0DB81E171EBC1D07CEFC8CE8AB082306186E56", 1048576, "panafz1e.bin", "Panasonic FZ-1 (E)"), FirmwareOptionStatus.Ideal); + Option("3DO", "Panasonic_FZ1_E", File("4696951E492E5526772A860EA2C0F35411A80927", 1048576, "panafz1e-unencrypted.bin", "Panasonic FZ-1 (E) (unencrypted)")); + + Firmware("3DO", "Panasonic_FZ1_J", "Panasonic FZ-1 (J)"); + Option("3DO", "Panasonic_FZ1_J", File("EC7EC62D60EC0459A14ED56EBC66761EF3C80EFC", 1048576, "panafz1j.bin", "Panasonic FZ-1 (J)"), FirmwareOptionStatus.Ideal); + Option("3DO", "Panasonic_FZ1_J", File("A417587AE3B0B8EF00C830920C21AF8BEE88E419", 1048576, "panafz1j - norsa.bin", "Panasonic FZ-1(J)(RSA check disabled)")); + + Firmware("3DO", "Panasonic_FZ10_U", "Panasonic FZ-10 (U)"); + Option("3DO", "Panasonic_FZ10_U", File("3C912300775D1AD730DC35757E279C274C0ACAAD", 1048576, "panafz10.bin", "Panasonic FZ-10 (U)"), FirmwareOptionStatus.Ideal); + Option("3DO", "Panasonic_FZ10_U", File("F05E642322C03694F06A809C0B90FC27AC73C002", 1048576, "panafz10-norsa.bin", "Panasonic FZ-10 (U) (RSA check disabled)")); + + Firmware("3DO", "Panasonic_FZ10_E", "Panasonic FZ-10 (E)"); + Option("3DO", "Panasonic_FZ10_E", File("A900371F0CDCDC03F79557F11D406FD71251A5FD", 1048576, "panafz10e-anvil.bin", "Panasonic FZ-10 (E) [ANVIL]"), FirmwareOptionStatus.Ideal); + Option("3DO", "Panasonic_FZ10_E", File("2765C7B4557CC838B32567D2428D088980295159", 1048576, "panafz10e-anvil-norsa.bin", "Panasonic FZ-10 (E) [ANVIL] (RSA check disabled)")); + + Firmware("3DO", "Panasonic_FZ10_J", "Panasonic FZ-10 (J)"); + Option("3DO", "Panasonic_FZ10_J", File("FE7F9C9C6A98910013BF13F2CF798DE9FEA52ACD", 1048576, "panafz10j.bin", "Panasonic FZ-10 (J)"), FirmwareOptionStatus.Ideal); + + Firmware("3DO", "Goldstar_GDO101P", "Goldstar GDO-101P"); + Option("3DO", "Goldstar_GDO101P", File("C4A2E5336F77FB5F743DE1EEA2CDA43675EE2DE7", 1048576, "goldstar.bin", "Goldstar GDO-101P"), FirmwareOptionStatus.Ideal); + + Firmware("3DO", "Goldstar_FC1", "Goldstar FC-1"); + Option("3DO", "Goldstar_FC1", File("8EF7503C948314D242DA47B7FDC272F68DAC2AEE", 1048576, "goldstar_fc1_enc.bin", "Goldstar FC-1 (encrypted)"), FirmwareOptionStatus.Ideal); + + Firmware("3DO", "Sanyo_IMP21J_Try", "Sanyo IMP-21J Try"); + Option("3DO", "Sanyo_IMP21J_Try", File("B01C53DA256DDE43FFEC4AD3FC3ADFA8D635E943", 1048576, "sanyotry.bin", "Sanyo IMP-21J Try"), FirmwareOptionStatus.Ideal); + + Firmware("3DO", "Sanyo_HC21", "Sanyo HC-21"); + Option("3DO", "Sanyo_HC21", File("C389AF32BCADF0D86826927DC3D20B7072F90069", 1048576, "sanyo_hc21_b3_unenc.bin", "Sanyo HC-21 B3 (unencrypted)"), FirmwareOptionStatus.Ideal); + Option("3DO", "Sanyo_HC21", File("29C40515DC1174FF13975BAA59EB532083E4A3D3", 1048576, "sanyo_hc21_alpha.bin", "Sanyo HC-21 (alpha 3/21/94)")); + + Firmware("3DO", "Shootout_At_Old_Tucson", "(3DO Arcade) Shootout At Old Tucson"); + Option("3DO", "Shootout_At_Old_Tucson", File("520D3D1B5897800AF47F92EFD2444A26B7A7DEAD", 524288, "3do_arcade_saot.bin", "Shootout At Old Tucson"), FirmwareOptionStatus.Ideal); + + Firmware("3DO", "3DO_NTSC_1fc2", "3DO-NTSC-1.0fc2"); + Option("3DO", "3DO_NTSC_1fc2", File("BD325C869E1DDE8A3872FC21565E0646A3D5B525", 1048576, "3do_devkit_1.0fc2.bin", "3DO-NTSC-1.0fc2 encrypted development kit"), FirmwareOptionStatus.Ideal); + + Firmware("3DO", "Kanji_ROM_Panasonic_FZ1", "Kanji ROM for Panasonic FZ-1"); + Option("3DO", "Kanji_ROM_Panasonic_FZ1", File("ACD39A8FEE1B9D2950D5AB447846C11FB31AF63E", 933636, "panafz1-kanji.bin", "Kanji ROM for Panasonic FZ-1 (J)"), FirmwareOptionStatus.Ideal); + Option("3DO", "Kanji_ROM_Panasonic_FZ1", File("884515605EE243577AB20767EF8C1A7368E4E407", 1048576, "panafz1j-kanji.bin", "Kanji ROM for Panasonic FZ-1 (J) / Panasonic FZ-10 (J)")); + + Firmware("3DO", "Kanji_ROM_Panasonic_FZ10", "Kanji ROM for Panasonic FZ-10"); + Option("3DO", "Kanji_ROM_Panasonic_FZ10", File("2E857B957803D0331FD229328DF01F3FFAB69EEE", 1048576, "panafz10ja-anvil-kanji.bin", "Kanji ROM for: Panasonic FZ-10 (J) [ANVIL]"), FirmwareOptionStatus.Ideal); + Option("3DO", "Kanji_ROM_Panasonic_FZ10", File("884515605EE243577AB20767EF8C1A7368E4E407", 1048576, "panafz1j-kanji.bin", "Kanji ROM for Panasonic FZ-1 (J) / Panasonic FZ-10 (J)")); + // 3DS // bleh, undefined hash AND size... FirmwareAndOption(SHA1Checksum.Dummy, 0, "3DS", "aes_keys", "aes_keys.txt", "AES Keys"); diff --git a/src/BizHawk.Emulation.Common/Extensions.cs b/src/BizHawk.Emulation.Common/Extensions.cs index c89f78afa7..06554349f2 100644 --- a/src/BizHawk.Emulation.Common/Extensions.cs +++ b/src/BizHawk.Emulation.Common/Extensions.cs @@ -48,6 +48,7 @@ namespace BizHawk.Emulation.Common [VSystemID.Raw.NGP] = "Neo-Geo Pocket", // NULL [VSystemID.Raw.O2] = "Odyssey2", + [VSystemID.Raw.Panasonic3DO] = "3DO", [VSystemID.Raw.PCE] = "TurboGrafx-16", [VSystemID.Raw.PCECD] = "TurboGrafx - 16(CD)", [VSystemID.Raw.PCFX] = "PCFX", diff --git a/src/BizHawk.Emulation.Common/VSystemID.cs b/src/BizHawk.Emulation.Common/VSystemID.cs index 218c626d88..88fda12860 100644 --- a/src/BizHawk.Emulation.Common/VSystemID.cs +++ b/src/BizHawk.Emulation.Common/VSystemID.cs @@ -48,7 +48,7 @@ namespace BizHawk.Emulation.Common public const string NGP = "NGP"; public const string NULL = "NULL"; public const string O2 = "O2"; - public const string Panasonic3DO = "Panasonic3DO"; + public const string Panasonic3DO = "3DO"; public const string PCE = "PCE"; public const string PCECD = "PCECD"; public const string PCFX = "PCFX"; diff --git a/src/BizHawk.Emulation.Cores/Consoles/3DO/LibOpera.cs b/src/BizHawk.Emulation.Cores/Consoles/3DO/LibOpera.cs new file mode 100644 index 0000000000..ac99a60b33 --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Consoles/3DO/LibOpera.cs @@ -0,0 +1,153 @@ +using System.Runtime.InteropServices; +using BizHawk.BizInvoke; +using BizHawk.Emulation.Cores.Waterbox; + +namespace BizHawk.Emulation.Cores.Consoles.Panasonic3DO +{ + public abstract class LibOpera : LibWaterboxCore + { + // NTSC Specifications + public const int NTSC_WIDTH = 320; + public const int NTSC_HEIGHT = 240; + public const int NTSC_VIDEO_NUMERATOR = 60; + public const int NTSC_VIDEO_DENOMINATOR = 1; + + // PAL1 Specifications + public const int PAL1_WIDTH = 320; + public const int PAL1_HEIGHT = 288; + public const int PAL1_VIDEO_NUMERATOR = 50; + public const int PAL1_VIDEO_DENOMINATOR = 1; + + // PAL2 Specifications + public const int PAL2_WIDTH = 384; + public const int PAL2_HEIGHT = 288; + public const int PAL2_VIDEO_NUMERATOR = 50; + public const int PAL2_VIDEO_DENOMINATOR = 1; + + [UnmanagedFunctionPointer(CC)] + public delegate void CDReadCallback(int lba, IntPtr dst); + + [UnmanagedFunctionPointer(CC)] + public delegate int CDSectorCountCallback(); + + [BizImport(CC)] + public abstract void SetCdCallbacks(CDReadCallback cdrc, CDSectorCountCallback cdscc); + + [BizImport(CC, Compatibility = true)] + public abstract bool Init(string gameFile, string biosFile, string fontFile, int port1Type, int port2Type, int videoStandard); + + [BizImport(CC, Compatibility = true)] + public abstract bool sram_changed(); + + [BizImport(CC, Compatibility = true)] + public abstract int get_sram_size(); + + [BizImport(CC, Compatibility = true)] + public abstract void get_sram(IntPtr sramBuffer); + + [BizImport(CC, Compatibility = true)] + public abstract void set_sram(IntPtr sramBuffer); + + [StructLayout(LayoutKind.Sequential)] + public struct GamepadInputs + { + public int up; + public int down; + public int left; + public int right; + public int buttonX; + public int buttonP; + public int buttonA; + public int buttonB; + public int buttonC; + public int buttonL; + public int buttonR; + } + + [StructLayout(LayoutKind.Sequential)] + public struct MouseInputs + { + public int dX; + public int dY; + public int leftButton; + public int middleButton; + public int rightButton; + public int fourthButton; + } + + [StructLayout(LayoutKind.Sequential)] + public struct FlightStickInputs + { + public int up; + public int down; + public int left; + public int right; + public int fire; + public int buttonA; + public int buttonB; + public int buttonC; + public int buttonX; + public int buttonP; + public int leftTrigger; + public int rightTrigger; + public int horizontalAxis; + public int verticalAxis; + public int altitudeAxis; + } + + [StructLayout(LayoutKind.Sequential)] + public struct LightGunInputs + { + public int trigger; + public int select; + public int reload; + public int isOffScreen; + public int screenX; + public int screenY; + } + + [StructLayout(LayoutKind.Sequential)] + public struct ArcadeLightGunInputs + { + public int trigger; + public int select; + public int start; + public int reload; + public int auxA; + public int isOffScreen; + public int screenX; + public int screenY; + } + + [StructLayout(LayoutKind.Sequential)] + public struct OrbatakTrackballInputs + { + public int dX; + public int dY; + public int startP1; + public int startP2; + public int coinP1; + public int coinP2; + public int service; + } + + [StructLayout(LayoutKind.Sequential)] + public struct GameInput + { + public GamepadInputs gamepad; + public MouseInputs mouse; + public FlightStickInputs flightStick; + public LightGunInputs lightGun; + public ArcadeLightGunInputs arcadeLightGun; + public OrbatakTrackballInputs orbatakTrackball; + } + + [StructLayout(LayoutKind.Sequential)] + public new class FrameInfo : LibWaterboxCore.FrameInfo + { + public GameInput port1; + public GameInput port2; + public int isReset = 0; + } + } +} diff --git a/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.Controllers.cs b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.Controllers.cs new file mode 100644 index 0000000000..8408538345 --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.Controllers.cs @@ -0,0 +1,202 @@ +using BizHawk.Common.CollectionExtensions; +using BizHawk.Common; +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Consoles.Panasonic3DO +{ + public partial class Opera + { + private static ControllerDefinition CreateControllerDefinition(SyncSettings settings, bool isMultiDisc) + { + var controller = new ControllerDefinition("3DO Controller"); + setPortControllers(1, settings.Controller1Type, controller); + setPortControllers(2, settings.Controller2Type, controller); + + // If this is multi-disc, add a cd swap option + if (isMultiDisc) + { + controller.BoolButtons.Add("Next Disc"); + controller.BoolButtons.Add("Prev Disc"); + } + + // Adding Reset button + controller.BoolButtons.Add("Reset"); + + return controller.MakeImmutable(); + } + + public const int MOUSE_MIN_POS_X = -64; + public const int MOUSE_MAX_POS_X = 64; + public const int MOUSE_MIN_POS_Y = -64; + public const int MOUSE_MAX_POS_Y = 64; + + public const int POINTER_MIN_POS = -32768; + public const int POINTER_MAX_POS = 32767; + private static void setPortControllers(int port, ControllerType type, ControllerDefinition controller) + { + switch (type) + { + case ControllerType.Gamepad: + foreach (var button in JoystickButtonCollection) controller.BoolButtons.Add($"P{port} {button}"); + break; + case ControllerType.Mouse: + controller.BoolButtons.AddRange([ + $"P{port} {Inputs.MouseLeftButton}", + $"P{port} {Inputs.MouseMiddleButton}", + $"P{port} {Inputs.MouseRightButton}", + $"P{port} {Inputs.MouseFourthButton}", + ]); + controller.AddAxis($"P{port} {Inputs.MouseX}", MOUSE_MIN_POS_X.RangeTo(MOUSE_MAX_POS_X), (MOUSE_MIN_POS_X + MOUSE_MAX_POS_X) / 2) + .AddAxis($"P{port} {Inputs.MouseY}", MOUSE_MIN_POS_Y.RangeTo(MOUSE_MAX_POS_Y), (MOUSE_MIN_POS_Y + MOUSE_MAX_POS_Y) / 2); + break; + case ControllerType.FlightStick: + foreach (var button in FlightStickButtonCollection) controller.BoolButtons.Add($"P{port} {button}"); + controller.AddAxis($"P{port} {Inputs.FlighStickHorizontalAxis}", MOUSE_MIN_POS_X.RangeTo(MOUSE_MAX_POS_X), (MOUSE_MIN_POS_X + MOUSE_MAX_POS_X) / 2) + .AddAxis($"P{port} {Inputs.FlighStickVerticalAxis}", MOUSE_MIN_POS_Y.RangeTo(MOUSE_MAX_POS_Y), (MOUSE_MIN_POS_Y + MOUSE_MAX_POS_Y) / 2) + .AddAxis($"P{port} {Inputs.FlighStickAltitudeAxis}", MOUSE_MIN_POS_Y.RangeTo(MOUSE_MAX_POS_Y), (MOUSE_MIN_POS_Y + MOUSE_MAX_POS_Y) / 2); + break; + case ControllerType.LightGun: + foreach (var button in LightGunButtonCollection) controller.BoolButtons.Add($"P{port} {button}"); + controller.AddAxis($"P{port} {Inputs.LightGunScreenX}", (POINTER_MIN_POS).RangeTo(POINTER_MAX_POS), 0) + .AddAxis($"P{port} {Inputs.LightGunScreenY}", (POINTER_MIN_POS).RangeTo(POINTER_MAX_POS), 0); + break; + case ControllerType.ArcadeLightGun: + foreach (var button in ArcadeLightGunButtonCollection) controller.BoolButtons.Add($"P{port} {button}"); + controller.AddAxis($"P{port} {Inputs.LightGunScreenX}", (POINTER_MIN_POS).RangeTo(POINTER_MAX_POS), 0) + .AddAxis($"P{port} {Inputs.LightGunScreenY}", (POINTER_MIN_POS).RangeTo(POINTER_MAX_POS), 0); + break; + case ControllerType.OrbatakTrackball: + foreach (var button in OrbatakTrackballCollection) controller.BoolButtons.Add($"P{port} {button}"); + controller.AddAxis($"P{port} {Inputs.TrackballPosX}", MOUSE_MIN_POS_X.RangeTo(MOUSE_MAX_POS_X), (MOUSE_MIN_POS_X + MOUSE_MAX_POS_X) / 2) + .AddAxis($"P{port} {Inputs.TrackballPosY}", MOUSE_MIN_POS_Y.RangeTo(MOUSE_MAX_POS_Y), (MOUSE_MIN_POS_Y + MOUSE_MAX_POS_Y) / 2); + break; + } + } + + private static string[] JoystickButtonCollection = [ + JoystickButtons.Up, + JoystickButtons.Down, + JoystickButtons.Left, + JoystickButtons.Right, + JoystickButtons.ButtonX, + JoystickButtons.ButtonP, + JoystickButtons.ButtonA, + JoystickButtons.ButtonB, + JoystickButtons.ButtonC, + JoystickButtons.ButtonL, + JoystickButtons.ButtonR, + ]; + + private static string[] FlightStickButtonCollection = [ + FlightStickButtons.Up, + FlightStickButtons.Down, + FlightStickButtons.Left, + FlightStickButtons.Right, + FlightStickButtons.Fire, + FlightStickButtons.ButtonA, + FlightStickButtons.ButtonB, + FlightStickButtons.ButtonX, + FlightStickButtons.ButtonP, + FlightStickButtons.LeftTrigger, + FlightStickButtons.RightTrigger, + ]; + + private static string[] LightGunButtonCollection = [ + LightGunButtons.Trigger, + LightGunButtons.Select, + LightGunButtons.Reload, + LightGunButtons.IsOffScreen, + ]; + + private static string[] ArcadeLightGunButtonCollection = [ + ArcadeLightGunButtons.Trigger, + ArcadeLightGunButtons.Select, + ArcadeLightGunButtons.Start, + ArcadeLightGunButtons.Reload, + ArcadeLightGunButtons.AuxA, + ArcadeLightGunButtons.IsOffScreen, + ]; + + private static string[] OrbatakTrackballCollection = [ + OrbatakTrackballButtons.StartP1, + OrbatakTrackballButtons.StartP2, + OrbatakTrackballButtons.CoinP1, + OrbatakTrackballButtons.CoinP2, + OrbatakTrackballButtons.Service, + ]; + + private static class JoystickButtons + { + public const string Up = "Up"; + public const string Down = "Down"; + public const string Left = "Left"; + public const string Right = "Right"; + public const string ButtonX = "X"; + public const string ButtonP = "P"; + public const string ButtonA = "A"; + public const string ButtonB = "B"; + public const string ButtonC = "C"; + public const string ButtonL = "L"; + public const string ButtonR = "R"; + } + private static class FlightStickButtons + { + public const string Up = "Up"; + public const string Down = "Down"; + public const string Left = "Left"; + public const string Right = "Right"; + public const string Fire = "Fire"; + public const string ButtonA = "A"; + public const string ButtonB = "B"; + public const string ButtonC = "C"; + public const string LeftTrigger = "LT"; + public const string RightTrigger = "RT"; + public const string ButtonP = "P"; + public const string ButtonX = "X"; + } + + private static class LightGunButtons + { + public const string Trigger = "Trigger"; + public const string Select = "Select"; + public const string Reload = "Reload"; + public const string IsOffScreen = "Is Off-Screen"; + } + private static class ArcadeLightGunButtons + { + public const string Trigger = "Trigger"; + public const string Select = "Select"; + public const string Start = "Start"; + public const string Reload = "Reload"; + public const string AuxA = "Aux A"; + public const string IsOffScreen = "Is Off-Screen"; + } + + private static class OrbatakTrackballButtons + { + public const string StartP1 = "Start P1"; + public const string StartP2 = "Start P2"; + public const string CoinP1 = "Coin P1"; + public const string CoinP2 = "Coin P2"; + public const string Service = "Service"; + } + + private static class Inputs + { + public const string Joystick = "Joystick"; + public const string MouseLeftButton = "Left Button"; + public const string MouseRightButton = "Right Button"; + public const string MouseMiddleButton = "Middle Button"; + public const string MouseFourthButton = "Fourth Button"; + public const string MouseX = "Mouse X"; + public const string MouseY = "Mouse Y"; + public const string FlighStickHorizontalAxis = "Flight Stick Horizontal Axis"; + public const string FlighStickVerticalAxis = "Flight Stick Vertical Axis"; + public const string FlighStickAltitudeAxis = "Flight Stick Altitude Axis"; + public const string LightGunScreenX = "Light Gun Screen X"; + public const string LightGunScreenY = "Light Gun Screen Y"; + public const string TrackballPosX = "Trackball X"; + public const string TrackballPosY = "Trackball Y"; + } + } +} diff --git a/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.IDriveLight.cs b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.IDriveLight.cs new file mode 100644 index 0000000000..b7949e7b54 --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.IDriveLight.cs @@ -0,0 +1,11 @@ +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Consoles.Panasonic3DO +{ + public partial class Opera : IDriveLight + { + public bool DriveLightEnabled { get; private set; } + public bool DriveLightOn { get; private set; } + public string DriveLightIconDescription => "Drive Activity"; + } +} diff --git a/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.IRegionable.cs b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.IRegionable.cs new file mode 100644 index 0000000000..ad02303923 --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.IRegionable.cs @@ -0,0 +1,11 @@ +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Consoles.Panasonic3DO +{ + public partial class Opera : IRegionable + { + public DisplayType Region => _syncSettings.VideoStandard is VideoStandard.NTSC + ? DisplayType.NTSC + : DisplayType.PAL; + } +} diff --git a/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.ISettable.cs b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.ISettable.cs new file mode 100644 index 0000000000..d08e9bd6eb --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.ISettable.cs @@ -0,0 +1,135 @@ +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using BizHawk.Common; +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Consoles.Panasonic3DO +{ + public partial class Opera : ISettable + { + // System type determines the version of the console to run + // The selection of the proper BIOS derives from this decision + public enum SystemType + { + [Display(Name = "Panasonic FZ-1 (U)")] + Panasonic_FZ1_U, + [Display(Name = "Panasonic FZ-1 (E)")] + Panasonic_FZ1_E, + [Display(Name = "Panasonic FZ-1 (J)")] + Panasonic_FZ1_J, + [Display(Name = "Panasonic FZ-10 (U)")] + Panasonic_FZ10_U, + [Display(Name = "Panasonic FZ-10 (E)")] + Panasonic_FZ10_E, + [Display(Name = "Panasonic FZ-10 (J)")] + Panasonic_FZ10_J, + [Display(Name = "Goldstar GDO-101P")] + Goldstar_GDO101P, + [Display(Name = "Goldstar FC-1")] + Goldstar_FC1, + [Display(Name = "Sanyo IMP-21J Try")] + Sanyo_IMP21J_Try, + [Display(Name = "Sanyo HC-21")] + Sanyo_HC21, + [Display(Name = "(3DO Arcade) Shootout At Old Tucson")] + Shootout_At_Old_Tucson, + [Display(Name = "3DO-NTSC-1.0fc2")] + _3DO_NTSC_1fc2, + } + + public enum FontROM + { + [Display(Name = "None")] + None, + [Display(Name = "Kanji ROM for Panasonic FZ-1")] + Kanji_ROM_Panasonic_FZ1, + [Display(Name = "Kanji ROM for Panasonic FZ-10")] + Kanji_ROM_Panasonic_FZ10, + } + + public enum VideoStandard + { + [Display(Name = "NTSC")] + NTSC = 0, + [Display(Name = "PAL1")] + PAL1 = 1, + [Display(Name = "PAL2")] + PAL2 = 2, + } + + public enum ControllerType + { + [Display(Name = "None")] + None = 0, + [Display(Name = "Joypad")] + Gamepad = 1, + [Display(Name = "Mouse")] + Mouse = 2, + [Display(Name = "Flight Stick")] + FlightStick = 257, + [Display(Name = "Light Gun")] + LightGun = 4, + [Display(Name = "Arcade Light Gun")] + ArcadeLightGun = 260, + [Display(Name = "Orbatak Trackball")] + OrbatakTrackball = 513, + } + + public object GetSettings() => null; + public PutSettingsDirtyBits PutSettings(object o) => PutSettingsDirtyBits.None; + + private SyncSettings _syncSettings; + public SyncSettings GetSyncSettings() + => _syncSettings.Clone(); + + public PutSettingsDirtyBits PutSyncSettings(SyncSettings o) + { + var ret = SyncSettings.NeedsReboot(_syncSettings, o); + _syncSettings = o; + return ret ? PutSettingsDirtyBits.RebootCore : PutSettingsDirtyBits.None; + } + + [CoreSettings] + public class SyncSettings + { + [DisplayName("System Type")] + [Description("Sets the version of the console to emulate. This choice determines the corresponding BIOS ROM to use.")] + [DefaultValue(SystemType.Panasonic_FZ1_U)] + [TypeConverter(typeof(SystemType))] + public SystemType SystemType { get; set; } + + [DisplayName("Font ROM")] + [Description("Determines whether (if any) addition ROM to load for regional font support.")] + [DefaultValue(FontROM.None)] + [TypeConverter(typeof(FontROM))] + public FontROM FontROM { get; set; } + + [DisplayName("Video Standard")] + [Description("Determines the resolution and video timing. It should be selected according to the game and console's region.")] + [DefaultValue(VideoStandard.NTSC)] + [TypeConverter(typeof(VideoStandard))] + public VideoStandard VideoStandard { get; set; } + + [DisplayName("Controller 1 Type")] + [Description("Sets the type of controller connected to the console's port 1.")] + [DefaultValue(ControllerType.Gamepad)] + [TypeConverter(typeof(ControllerType))] + public ControllerType Controller1Type { get; set; } + + [DisplayName("Controller 2 Type")] + [Description("Sets the type of controller connected to the console's port 2.")] + [DefaultValue(ControllerType.None)] + [TypeConverter(typeof(ControllerType))] + public ControllerType Controller2Type { get; set; } + + public SyncSettings() + => SettingsUtil.SetDefaultValues(this); + + public SyncSettings Clone() + => (SyncSettings) MemberwiseClone(); + + public static bool NeedsReboot(SyncSettings x, SyncSettings y) + => !DeepEquality.DeepEquals(x, y); + } + } +} diff --git a/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.cs b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.cs new file mode 100644 index 0000000000..08af67d228 --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.cs @@ -0,0 +1,320 @@ +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; +using BizHawk.Emulation.Common; +using BizHawk.Emulation.Cores.Waterbox; +using BizHawk.Emulation.DiscSystem; + +namespace BizHawk.Emulation.Cores.Consoles.Panasonic3DO +{ + [PortedCore( + name: CoreNames.Opera, + author: "Libretro Team", + portedVersion: "2025.03.08 (67a29e6)", + portedUrl: "https://github.com/libretro/opera-libretro", + isReleased: false)] + public partial class Opera : WaterboxCore + { + private static readonly Configuration ConfigNTSC = new Configuration + { + SystemId = VSystemID.Raw.Panasonic3DO, + MaxSamples = 8 * 1024, + DefaultWidth = LibOpera.NTSC_WIDTH, + DefaultHeight = LibOpera.NTSC_HEIGHT, + MaxWidth = LibOpera.PAL2_WIDTH, + MaxHeight = LibOpera.PAL2_HEIGHT, + DefaultFpsNumerator = LibOpera.NTSC_VIDEO_NUMERATOR, + DefaultFpsDenominator = LibOpera.NTSC_VIDEO_DENOMINATOR, + }; + + private static readonly Configuration ConfigPAL1 = new Configuration + { + SystemId = VSystemID.Raw.Panasonic3DO, + MaxSamples = 8 * 1024, + DefaultWidth = LibOpera.PAL1_WIDTH, + DefaultHeight = LibOpera.PAL1_HEIGHT, + MaxWidth = LibOpera.PAL1_WIDTH, + MaxHeight = LibOpera.PAL1_HEIGHT, + DefaultFpsNumerator = LibOpera.PAL1_VIDEO_NUMERATOR, + DefaultFpsDenominator = LibOpera.PAL1_VIDEO_DENOMINATOR, + }; + + private static readonly Configuration ConfigPAL2 = new Configuration + { + SystemId = VSystemID.Raw.Panasonic3DO, + MaxSamples = 8 * 1024, + DefaultWidth = LibOpera.PAL2_WIDTH, + DefaultHeight = LibOpera.PAL2_HEIGHT, + MaxWidth = LibOpera.PAL2_WIDTH, + MaxHeight = LibOpera.PAL2_HEIGHT, + DefaultFpsNumerator = LibOpera.PAL2_VIDEO_NUMERATOR, + DefaultFpsDenominator = LibOpera.PAL2_VIDEO_DENOMINATOR, + }; + + private readonly List _discAssets; + + public override int VirtualWidth => BufferHeight * 4 / 3; + private LibOpera _libOpera; + + // Image selection / swapping variables + + [CoreConstructor(VSystemID.Raw.Panasonic3DO)] + public Opera(CoreLoadParameters lp) + : base( + lp.Comm, + lp.SyncSettings?.VideoStandard switch + { + null or VideoStandard.NTSC => ConfigNTSC, + VideoStandard.PAL1 => ConfigPAL1, + VideoStandard.PAL2 => ConfigPAL2, + _ => throw new InvalidOperationException($"unexpected value for sync setting {nameof(SyncSettings.VideoStandard)}"), + }) + { + DriveLightEnabled = true; + _discAssets = lp.Discs; + + // If no discs loaded, then there's nothing to emulate + if (_discAssets.Count == 0) throw new InvalidOperationException("No CDs provided for emulation"); + _isMultidisc = _discAssets.Count > 1; + + _CDReadCallback = CDRead; + _CDSectorCountCallback = CDSectorCount; + _discIndex = 0; + foreach (var disc in _discAssets) _cdReaders.Add(new(disc.DiscData)); + + Console.WriteLine($"[CD] Sector count: {_discAssets[0].DiscData.Session1.LeadoutLBA}"); + _syncSettings = lp.SyncSettings ?? new(); + ControllerDefinition = CreateControllerDefinition(_syncSettings, _isMultidisc); + + _libOpera = PreInit( + new WaterboxOptions + { + Filename = "opera.wbx", + SbrkHeapSizeKB = 256 * 1024, + SealedHeapSizeKB = 1024, + InvisibleHeapSizeKB = 1024, + PlainHeapSizeKB = 1024, + MmapHeapSizeKB = 256 * 1024, + SkipCoreConsistencyCheck = lp.Comm.CorePreferences.HasFlag(CoreComm.CorePreferencesFlags.WaterboxCoreConsistencyCheck), + SkipMemoryConsistencyCheck = lp.Comm.CorePreferences.HasFlag(CoreComm.CorePreferencesFlags.WaterboxMemoryConsistencyCheck), + }, + [ _CDReadCallback, _CDSectorCountCallback ]); + + // Setting CD callbacks + _libOpera.SetCdCallbacks(_CDReadCallback, _CDSectorCountCallback); + + // Adding BIOS file + string biosType = _syncSettings.SystemType switch + { + SystemType.Panasonic_FZ1_U => "Panasonic_FZ1_U", + SystemType.Panasonic_FZ1_E => "Panasonic_FZ1_E", + SystemType.Panasonic_FZ1_J => "Panasonic_FZ1_J", + SystemType.Panasonic_FZ10_U => "Panasonic_FZ10_U", + SystemType.Panasonic_FZ10_E => "Panasonic_FZ10_E", + SystemType.Panasonic_FZ10_J => "Panasonic_FZ10_J", + SystemType.Goldstar_GDO101P => "Goldstar_GDO101P", + SystemType.Goldstar_FC1 => "Goldstar_FC1", + SystemType.Sanyo_IMP21J_Try => "Sanyo_IMP21J_Try", + SystemType.Sanyo_HC21 => "Sanyo_HC21", + SystemType.Shootout_At_Old_Tucson => "Shootout_At_Old_Tucson", + SystemType._3DO_NTSC_1fc2 => "3DO_NTSC_1fc2", + _ => "None", + }; + + var (biosData, biosInfo) = CoreComm.CoreFileProvider.GetFirmwareWithGameInfoOrThrow(new(VSystemID.Raw.Panasonic3DO, biosType), "BIOS ROM files are required!"); + string biosFileName = biosInfo.Name + ".bin"; + _exe.AddReadonlyFile(biosData, biosFileName); + + // Adding Font ROM file, if required + string fontROMType = _syncSettings.FontROM switch + { + FontROM.Kanji_ROM_Panasonic_FZ1 => "Kanji_ROM_Panasonic_FZ1", + FontROM.Kanji_ROM_Panasonic_FZ10 => "Kanji_ROM_Panasonic_FZ10", + _ => "None", + }; + + string fontROMFileName = "None"; + if (fontROMType != "None") + { + var (fontROMData, fontROMInfo) = CoreComm.CoreFileProvider.GetFirmwareWithGameInfoOrThrow(new(VSystemID.Raw.Panasonic3DO, fontROMType), "Font ROM files are required!"); + _exe.AddReadonlyFile(fontROMData, fontROMInfo.Name); + fontROMFileName = fontROMInfo.Name; + } + + ////////////// Initializing Core + string cdName = _discAssets[0].DiscName; + Console.WriteLine($"Launching Core with Game: '{cdName}', BIOS ROM: '{biosFileName}', Font ROM: '{fontROMFileName}'"); + if (!_libOpera.Init( + gameFile: cdName, + biosFile: biosFileName, + fontFile: fontROMFileName, + port1Type: (int) _syncSettings.Controller1Type, + port2Type: (int) _syncSettings.Controller2Type, + videoStandard: (int) _syncSettings.VideoStandard)) + { + throw new InvalidOperationException("Core rejected the rom!"); + } + + PostInit(); + } + + // CD Handling logic + private bool _isMultidisc; + private bool _discInserted = true; + private readonly LibOpera.CDReadCallback _CDReadCallback; + private readonly LibOpera.CDSectorCountCallback _CDSectorCountCallback; + private int _discIndex; + private readonly List _cdReaders = new List(); + private static int CD_SECTOR_SIZE = 2048; + private readonly byte[] _sectorBuffer = new byte[CD_SECTOR_SIZE]; + + private void SelectNextDisc() + { + _discIndex++; + if (_discIndex == _discAssets.Count) _discIndex = 0; + CoreComm.Notify($"Selected CDROM {_discIndex}: {_discAssets[_discIndex].DiscName}", null); + } + + private void SelectPrevDisc() + { + _discIndex--; + if (_discIndex < 0) _discIndex = _discAssets.Count - 1; + CoreComm.Notify($"Selected CDROM {_discIndex}: {_discAssets[_discIndex].DiscName}", null); + } + + private void CDRead(int lba, IntPtr dest) + { + if (_discIndex < _discAssets.Count) + { + _cdReaders[_discIndex].ReadLBA_2048(lba, _sectorBuffer, 0); + Marshal.Copy(_sectorBuffer, 0, dest, CD_SECTOR_SIZE); + } + DriveLightOn = true; + } + + private int CDSectorCount() + { + if (_discIndex < _discAssets.Count) return _discAssets[_discIndex].DiscData.Session1.LeadoutLBA; + return -1; + } + + protected override LibWaterboxCore.FrameInfo FrameAdvancePrep(IController controller, bool render, bool rendersound) + { + var fi = new LibOpera.FrameInfo(); + + // Disc management + if (_isMultidisc) + { + if (controller.IsPressed("Next Disc")) SelectNextDisc(); + if (controller.IsPressed("Prev Disc")) SelectPrevDisc(); + } + + DriveLightOn = false; + fi.port1 = ProcessController(1, _syncSettings.Controller1Type, controller); + fi.port2 = ProcessController(2, _syncSettings.Controller2Type, controller); + + // Game reset + if (controller.IsPressed("Reset")) fi.isReset = 1; + + return fi; + } + + private static LibOpera.GameInput ProcessController(int port, ControllerType type, IController controller) + { + LibOpera.GameInput gameInput = new LibOpera.GameInput(); + + switch (type) + { + case ControllerType.Gamepad: + gameInput.gamepad.up = controller.IsPressed($"P{port} {JoystickButtons.Up}") ? 1 : 0; + gameInput.gamepad.down = controller.IsPressed($"P{port} {JoystickButtons.Down}") ? 1 : 0; + gameInput.gamepad.left = controller.IsPressed($"P{port} {JoystickButtons.Left}") ? 1 : 0; + gameInput.gamepad.right = controller.IsPressed($"P{port} {JoystickButtons.Right}") ? 1 : 0; + gameInput.gamepad.buttonX = controller.IsPressed($"P{port} {JoystickButtons.ButtonX}") ? 1 : 0; + gameInput.gamepad.buttonP = controller.IsPressed($"P{port} {JoystickButtons.ButtonP}") ? 1 : 0; + gameInput.gamepad.buttonA = controller.IsPressed($"P{port} {JoystickButtons.ButtonA}") ? 1 : 0; + gameInput.gamepad.buttonB = controller.IsPressed($"P{port} {JoystickButtons.ButtonB}") ? 1 : 0; + gameInput.gamepad.buttonC = controller.IsPressed($"P{port} {JoystickButtons.ButtonC}") ? 1 : 0; + gameInput.gamepad.buttonL = controller.IsPressed($"P{port} {JoystickButtons.ButtonL}") ? 1 : 0; + gameInput.gamepad.buttonR = controller.IsPressed($"P{port} {JoystickButtons.ButtonR}") ? 1 : 0; + break; + + case ControllerType.Mouse: + gameInput.mouse.dX = controller.AxisValue($"P{port} {Inputs.MouseX}"); + gameInput.mouse.dY = controller.AxisValue($"P{port} {Inputs.MouseY}"); + gameInput.mouse.leftButton = controller.IsPressed($"P{port} {Inputs.MouseLeftButton}") ? 1 : 0; + gameInput.mouse.middleButton = controller.IsPressed($"P{port} {Inputs.MouseMiddleButton}") ? 1 : 0; + gameInput.mouse.rightButton = controller.IsPressed($"P{port} {Inputs.MouseRightButton}") ? 1 : 0; + gameInput.mouse.fourthButton = controller.IsPressed($"P{port} {Inputs.MouseFourthButton}") ? 1 : 0; + break; + + case ControllerType.FlightStick: + gameInput.flightStick.up = controller.IsPressed($"P{port} {FlightStickButtons.Up}") ? 1 : 0; + gameInput.flightStick.down = controller.IsPressed($"P{port} {FlightStickButtons.Down}") ? 1 : 0; + gameInput.flightStick.left = controller.IsPressed($"P{port} {FlightStickButtons.Left}") ? 1 : 0; + gameInput.flightStick.right = controller.IsPressed($"P{port} {FlightStickButtons.Right}") ? 1 : 0; + gameInput.flightStick.fire = controller.IsPressed($"P{port} {FlightStickButtons.Fire}") ? 1 : 0; + gameInput.flightStick.buttonA = controller.IsPressed($"P{port} {FlightStickButtons.ButtonA}") ? 1 : 0; + gameInput.flightStick.buttonB = controller.IsPressed($"P{port} {FlightStickButtons.ButtonB}") ? 1 : 0; + gameInput.flightStick.buttonC = controller.IsPressed($"P{port} {FlightStickButtons.ButtonC}") ? 1 : 0; + gameInput.flightStick.buttonX = controller.IsPressed($"P{port} {FlightStickButtons.ButtonX}") ? 1 : 0; + gameInput.flightStick.buttonP = controller.IsPressed($"P{port} {FlightStickButtons.ButtonP}") ? 1 : 0; + gameInput.flightStick.leftTrigger = controller.IsPressed($"P{port} {FlightStickButtons.LeftTrigger}") ? 1 : 0; + gameInput.flightStick.rightTrigger = controller.IsPressed($"P{port} {FlightStickButtons.RightTrigger}") ? 1 : 0; + gameInput.flightStick.horizontalAxis = controller.AxisValue($"P{port} {Inputs.FlighStickHorizontalAxis}"); + gameInput.flightStick.verticalAxis = controller.AxisValue($"P{port} {Inputs.FlighStickVerticalAxis}"); + gameInput.flightStick.altitudeAxis = controller.AxisValue($"P{port} {Inputs.FlighStickAltitudeAxis}"); + break; + + case ControllerType.LightGun: + gameInput.lightGun.trigger = controller.IsPressed($"P{port} {LightGunButtons.Trigger}") ? 1 : 0; + gameInput.lightGun.select = controller.IsPressed($"P{port} {LightGunButtons.Select}") ? 1 : 0; + gameInput.lightGun.reload = controller.IsPressed($"P{port} {LightGunButtons.Reload}") ? 1 : 0; + gameInput.lightGun.isOffScreen = controller.IsPressed($"P{port} {LightGunButtons.IsOffScreen}") ? 1 : 0; + gameInput.lightGun.screenX = controller.AxisValue($"P{port} {Inputs.LightGunScreenX}"); + gameInput.lightGun.screenY = controller.AxisValue($"P{port} {Inputs.LightGunScreenY}"); + break; + + case ControllerType.ArcadeLightGun: + gameInput.arcadeLightGun.trigger = controller.IsPressed($"P{port} {ArcadeLightGunButtons.Trigger}") ? 1 : 0; + gameInput.arcadeLightGun.select = controller.IsPressed($"P{port} {ArcadeLightGunButtons.Select}") ? 1 : 0; + gameInput.arcadeLightGun.start = controller.IsPressed($"P{port} {ArcadeLightGunButtons.Start}") ? 1 : 0; + gameInput.arcadeLightGun.reload = controller.IsPressed($"P{port} {ArcadeLightGunButtons.Reload}") ? 1 : 0; + gameInput.arcadeLightGun.auxA = controller.IsPressed($"P{port} {ArcadeLightGunButtons.AuxA}") ? 1 : 0; + gameInput.arcadeLightGun.isOffScreen = controller.IsPressed($"P{port} {ArcadeLightGunButtons.IsOffScreen}") ? 1 : 0; + gameInput.arcadeLightGun.screenX = controller.AxisValue($"P{port} {Inputs.LightGunScreenX}"); + gameInput.arcadeLightGun.screenY = controller.AxisValue($"P{port} {Inputs.LightGunScreenY}"); + break; + + case ControllerType.OrbatakTrackball: + gameInput.orbatakTrackball.startP1 = controller.IsPressed($"P{port} {OrbatakTrackballButtons.StartP1}") ? 1 : 0; + gameInput.orbatakTrackball.startP2 = controller.IsPressed($"P{port} {OrbatakTrackballButtons.StartP2}") ? 1 : 0; + gameInput.orbatakTrackball.coinP1 = controller.IsPressed($"P{port} {OrbatakTrackballButtons.CoinP1}") ? 1 : 0; + gameInput.orbatakTrackball.coinP2 = controller.IsPressed($"P{port} {OrbatakTrackballButtons.CoinP2}") ? 1 : 0; + gameInput.orbatakTrackball.service = controller.IsPressed($"P{port} {OrbatakTrackballButtons.Service}") ? 1 : 0; + gameInput.orbatakTrackball.dX = controller.AxisValue($"P{port} {Inputs.TrackballPosX}"); + gameInput.orbatakTrackball.dY = controller.AxisValue($"P{port} {Inputs.TrackballPosY}"); + break; + } + + return gameInput; + } + + protected override void FrameAdvancePost() + { + } + + protected override void SaveStateBinaryInternal(BinaryWriter writer) + { + writer.Write(_discIndex); + writer.Write(_discInserted); + } + + protected override void LoadStateBinaryInternal(BinaryReader reader) + { + _discIndex = reader.ReadInt32(); + _discInserted = reader.ReadBoolean(); + } + + } +} diff --git a/src/BizHawk.Emulation.Cores/CoreNames.cs b/src/BizHawk.Emulation.Cores/CoreNames.cs index 5c7bd39bc6..097f1fdb76 100644 --- a/src/BizHawk.Emulation.Cores/CoreNames.cs +++ b/src/BizHawk.Emulation.Cores/CoreNames.cs @@ -47,6 +47,7 @@ namespace BizHawk.Emulation.Cores public const string Nymashock = "Nymashock"; public const string O2Hawk = "O2Hawk"; public const string Octoshock = "Octoshock"; + public const string Opera = "Opera"; public const string PceHawk = "PCEHawk"; public const string PicoDrive = "PicoDrive"; public const string QuickNes = "quickerNES"; diff --git a/src/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs b/src/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs index e10b1dace8..1ab67d5440 100644 --- a/src/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs +++ b/src/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs @@ -352,14 +352,21 @@ namespace BizHawk.Emulation.DiscSystem private bool Detect3DO() { var toc = _disc.TOC; - for (var t = toc.FirstRecordedTrackNumber; - t <= toc.LastRecordedTrackNumber; - t++) + for (var t = toc.FirstRecordedTrackNumber; t <= toc.LastRecordedTrackNumber; t++) { var track = _disc.TOC.TOCItems[t]; - if (track.IsData && SectorContains("iamaduckiamaduck", track.LBA)) - return true; + // https://groups.google.com/g/rec.games.video.3do/c/1U3qrmLSYMQ?pli=1 + // The iamaduck is not mandatory and not present in all games + if (track.IsData && SectorContains("iamaduckiamaduck", track.LBA)) return true; } + + for (var i = 0; i < 256; i++) + { + // The following sync pattern is present in 3DO games + // https://github.com/trapexit/3dt/blob/84f1aa5a5e778f14c2216fc0c891e78625266cad/src/tdo_disc_label.hpp#L65 + if (SectorContains(Convert.ToChar(01) + "ZZZZZ" + Convert.ToChar(01), i)) return true; + } + return false; } diff --git a/waterbox/make-all-cores.sh b/waterbox/make-all-cores.sh index 81f1593e74..312896974d 100755 --- a/waterbox/make-all-cores.sh +++ b/waterbox/make-all-cores.sh @@ -11,6 +11,7 @@ make -C dsda $1 -j make -C gpgx $1 -j make -C libsnes $1 -j make -C melon $1 -j +make -C opera $1 -j make -C picodrive $1 -j make -C stella $1 -j make -C snes9x $1 -j diff --git a/waterbox/opera/Makefile b/waterbox/opera/Makefile new file mode 100644 index 0000000000..ddf59477d2 --- /dev/null +++ b/waterbox/opera/Makefile @@ -0,0 +1,103 @@ +TARGET := opera.wbx +CCFLAGS := -I. \ + -Iopera-libretro \ + -Iopera-libretro/libopera \ + -Iopera-libretro/libretro-common/include \ + -Iopera-libretro/deps \ + -Iopera-libretro/deps/lzma-19.00/include \ + -Iopera-libretro/deps/libchdr/include \ + -Iopera-libretro/deps/zlib-1.2.11 \ + -DHAVE_CHD \ + -D_7ZIP_ST \ + -DDR_FLAC_NO_STDIO \ + -D__LIBRETRO__ \ + -DNDEBUG \ + -DHAVE_CDROM \ + -DHAVE_STDINT_H \ + -DHAVE_STDLIB_H \ + -DHAVE_SYS_PARAM_H \ + -DINLINE=inline \ + -DTHREADED_DSP +CXXFLAGS := $(CCFLAGS) +SRCS = bizhawk.cpp \ + opera-libretro/lr_input.c \ + opera-libretro/libretro_core_options.c \ + opera-libretro/lr_input_crosshair.c \ + opera-libretro/opera_lr_nvram.c \ + opera-libretro/libopera/opera_mem.c \ + opera-libretro/libopera/opera_diag_port.c \ + opera-libretro/libopera/prng32.c \ + opera-libretro/libopera/opera_sport.c \ + opera-libretro/libopera/opera_arm.c \ + opera-libretro/libopera/opera_region.c \ + opera-libretro/libopera/opera_bios.c \ + opera-libretro/libopera/prng16.c \ + opera-libretro/libopera/opera_cdrom.c \ + opera-libretro/libopera/opera_clock.c \ + opera-libretro/libopera/opera_log.c \ + opera-libretro/libopera/opera_fixedpoint_math.c \ + opera-libretro/libopera/opera_nvram.c \ + opera-libretro/libopera/opera_3do.c \ + opera-libretro/libopera/opera_xbus_cdrom_plugin.c \ + opera-libretro/libopera/opera_madam.c \ + opera-libretro/libopera/opera_dsp.c \ + opera-libretro/libopera/opera_state.c \ + opera-libretro/libopera/opera_xbus.c \ + opera-libretro/libopera/opera_bitop.c \ + opera-libretro/libopera/opera_vdlp.c \ + opera-libretro/libopera/opera_clio.c \ + opera-libretro/libopera/opera_pbus.c \ + opera-libretro/libretro.c \ + opera-libretro/retro_cdimage.c \ + opera-libretro/opera_lr_callbacks.c \ + opera-libretro/opera_lr_opts.c \ + opera-libretro/deps/zlib-1.2.11/zutil.c \ + opera-libretro/deps/zlib-1.2.11/adler32.c \ + opera-libretro/deps/zlib-1.2.11/inflate.c \ + opera-libretro/deps/zlib-1.2.11/inftrees.c \ + opera-libretro/deps/zlib-1.2.11/crc32.c \ + opera-libretro/deps/zlib-1.2.11/infback.c \ + opera-libretro/deps/zlib-1.2.11/inffast.c \ + opera-libretro/deps/lzma-19.00/src/BraIA64.c \ + opera-libretro/deps/lzma-19.00/src/CpuArch.c \ + opera-libretro/deps/lzma-19.00/src/Sort.c \ + opera-libretro/deps/lzma-19.00/src/Bra86.c \ + opera-libretro/deps/lzma-19.00/src/Alloc.c \ + opera-libretro/deps/lzma-19.00/src/LzmaEnc.c \ + opera-libretro/deps/lzma-19.00/src/Lzma86Dec.c \ + opera-libretro/deps/lzma-19.00/src/Delta.c \ + opera-libretro/deps/lzma-19.00/src/LzmaDec.c \ + opera-libretro/deps/lzma-19.00/src/Lzma86Enc.c \ + opera-libretro/deps/lzma-19.00/src/LzFind.c \ + opera-libretro/deps/libchdr/src/libchdr_cdrom.c \ + opera-libretro/deps/libchdr/src/libchdr_flac.c \ + opera-libretro/deps/libchdr/src/libchdr_bitstream.c \ + opera-libretro/deps/libchdr/src/libchdr_chd.c \ + opera-libretro/deps/libchdr/src/libchdr_huffman.c \ + opera-libretro/cuefile.c \ + opera-libretro/opera_lr_dsp.c \ + opera-libretro/libretro-common/string/stdstring.c \ + opera-libretro/libretro-common/vfs/vfs_implementation_cdrom.c \ + opera-libretro/libretro-common/vfs/vfs_implementation.c \ + opera-libretro/libretro-common/encodings/encoding_utf.c \ + opera-libretro/libretro-common/file/retro_dirent.c \ + opera-libretro/libretro-common/file/file_path.c \ + opera-libretro/libretro-common/compat/compat_strl.c \ + opera-libretro/libretro-common/compat/fopen_utf8.c \ + opera-libretro/libretro-common/compat/compat_snprintf.c \ + opera-libretro/libretro-common/compat/compat_posix_string.c \ + opera-libretro/libretro-common/compat/compat_strcasestr.c \ + opera-libretro/libretro-common/streams/file_stream.c \ + opera-libretro/libretro-common/streams/chd_stream.c \ + opera-libretro/libretro-common/streams/interface_stream.c \ + opera-libretro/libretro-common/streams/file_stream_transforms.c \ + opera-libretro/libretro-common/streams/memory_stream.c \ + opera-libretro/libretro-common/rthreads/rthreads.c \ + opera-libretro/libretro-common/lists/dir_list.c \ + opera-libretro/libretro-common/lists/string_list.c \ + opera-libretro/libretro-common/cdrom/cdrom.c \ + opera-libretro/libretro-common/memmap/memalign.c \ + opera-libretro/libretro-common/memmap/memmap.c \ + opera-libretro/lr_input_descs.c + +include ../common.mak diff --git a/waterbox/opera/bizhawk.cpp b/waterbox/opera/bizhawk.cpp new file mode 100644 index 0000000000..0883f6e551 --- /dev/null +++ b/waterbox/opera/bizhawk.cpp @@ -0,0 +1,391 @@ +#include "bizhawk.hpp" +#include +#include +#include +#include +#include +#include +#include +#include + +std::string _biosFilePath; +std::string _gameFilePath; +std::string _fontFilePath; +int _port1Type; +int _port2Type; +controllerData_t _port1Value; +controllerData_t _port2Value; +uint32_t* _videoBuffer; +size_t _videoHeight; +size_t _videoWidth; +size_t _videoPitch; +int _region; +int _nvramChanged; +int _inputPortsRead; + +#define _MAX_SAMPLES 4096 +#define _CHANNEL_COUNT 2 +int16_t _audioBuffer[_MAX_SAMPLES * _CHANNEL_COUNT]; +size_t _audioSamples; + +extern "C" +{ + void* xbus_cdrom_plugin(int proc_, void* data_); + void opera_cdrom_set_callbacks(opera_cdrom_get_size_cb_t get_size_, opera_cdrom_set_sector_cb_t set_sector_, opera_cdrom_read_sector_cb_t read_sector_); + void opera_nvram_init(void *buf, const int bufsize); + void opera_lr_callbacks_set_audio_sample(retro_audio_sample_t cb); + void opera_lr_callbacks_set_audio_sample_batch(retro_audio_sample_batch_t cb); + void opera_lr_callbacks_set_environment(retro_environment_t cb); + void opera_lr_callbacks_set_input_poll(retro_input_poll_t cb); + void opera_lr_callbacks_set_input_state(retro_input_state_t cb); + void opera_lr_callbacks_set_log_printf(retro_log_printf_t cb); + void opera_lr_callbacks_set_video_refresh(retro_video_refresh_t cb); + RETRO_API void *retro_get_memory_data(unsigned id); + RETRO_API size_t retro_get_memory_size(unsigned id); + void retro_set_controller_port_device(unsigned port_, unsigned device_); + void retro_get_system_av_info(struct retro_system_av_info *info_); +} + +void RETRO_CALLCONV retro_video_refresh_callback(const void *data, unsigned width, unsigned height, size_t pitch) +{ + // printf("Video %p, w: %u, h: %u, p: %lu\n", data, width, height, pitch); + _videoBuffer = (uint32_t*)data; + _videoWidth = width; + _videoHeight = height; + _videoPitch = pitch; +} + +void RETRO_CALLCONV retro_log_printf_callback(enum retro_log_level level, const char *format, ...) +{ + va_list ap; + va_start(ap, format); + printf(format, ap); + va_end(ap); +} + +size_t RETRO_CALLCONV retro_audio_sample_batch_callback(const int16_t *data, size_t frames) +{ + memcpy(_audioBuffer, data, sizeof(int16_t) * frames * _CHANNEL_COUNT); + _audioSamples = frames; + return frames; +} + +void RETRO_CALLCONV retro_input_poll_callback() +{ + // printf("Libretro Input Poll Callback Called:\n"); +} + +int16_t processController(const int portType, controllerData_t& portValue, const unsigned device, const unsigned index, const unsigned id) +{ + switch (portType) + { + case RETRO_DEVICE_JOYPAD: + switch (id) + { + case RETRO_DEVICE_ID_JOYPAD_UP: return portValue.gamePad.up; + case RETRO_DEVICE_ID_JOYPAD_DOWN: return portValue.gamePad.down; + case RETRO_DEVICE_ID_JOYPAD_LEFT: return portValue.gamePad.left; + case RETRO_DEVICE_ID_JOYPAD_RIGHT: return portValue.gamePad.right; + case RETRO_DEVICE_ID_JOYPAD_L: return portValue.gamePad.buttonL; + case RETRO_DEVICE_ID_JOYPAD_R: return portValue.gamePad.buttonR; + case RETRO_DEVICE_ID_JOYPAD_SELECT: return portValue.gamePad.buttonX; + case RETRO_DEVICE_ID_JOYPAD_START: return portValue.gamePad.buttonP; + case RETRO_DEVICE_ID_JOYPAD_Y: return portValue.gamePad.buttonA; + case RETRO_DEVICE_ID_JOYPAD_B: return portValue.gamePad.buttonB; + case RETRO_DEVICE_ID_JOYPAD_A: return portValue.gamePad.buttonC; + default: return 0; + } + + case RETRO_DEVICE_MOUSE: + switch (id) + { + case RETRO_DEVICE_ID_MOUSE_X: return portValue.mouse.dX; + case RETRO_DEVICE_ID_MOUSE_Y: return portValue.mouse.dY; + case RETRO_DEVICE_ID_MOUSE_LEFT: return portValue.mouse.leftButton; + case RETRO_DEVICE_ID_MOUSE_MIDDLE: return portValue.mouse.middleButton; + case RETRO_DEVICE_ID_MOUSE_RIGHT: return portValue.mouse.rightButton; + case RETRO_DEVICE_ID_MOUSE_BUTTON_4: return portValue.mouse.fourthButton; + default: return 0; + } + + case RETRO_DEVICE_FLIGHTSTICK: + if (index == RETRO_DEVICE_INDEX_ANALOG_BUTTON) + { + switch (id) + { + case RETRO_DEVICE_ID_JOYPAD_R2: return portValue.flightStick.fire; + case RETRO_DEVICE_ID_JOYPAD_Y: return portValue.flightStick.buttonA; + case RETRO_DEVICE_ID_JOYPAD_B: return portValue.flightStick.buttonB; + case RETRO_DEVICE_ID_JOYPAD_A: return portValue.flightStick.buttonC; + case RETRO_DEVICE_ID_JOYPAD_UP: return portValue.flightStick.up; + case RETRO_DEVICE_ID_JOYPAD_DOWN: return portValue.flightStick.down; + case RETRO_DEVICE_ID_JOYPAD_LEFT: return portValue.flightStick.left; + case RETRO_DEVICE_ID_JOYPAD_RIGHT: return portValue.flightStick.right; + case RETRO_DEVICE_ID_JOYPAD_START: return portValue.flightStick.buttonP; + case RETRO_DEVICE_ID_JOYPAD_SELECT: return portValue.flightStick.buttonX; + case RETRO_DEVICE_ID_JOYPAD_L: return portValue.flightStick.leftTrigger; + case RETRO_DEVICE_ID_JOYPAD_R: return portValue.flightStick.rightTrigger; + default: return 0; + } + } + else + { + switch (id) + { + case RETRO_DEVICE_ID_ANALOG_X: + if (index == RETRO_DEVICE_INDEX_ANALOG_LEFT) return portValue.flightStick.horizontalAxis; + if (index == RETRO_DEVICE_INDEX_ANALOG_RIGHT) return portValue.flightStick.altitudeAxis; + return 0; + + case RETRO_DEVICE_ID_ANALOG_Y: + if (index == RETRO_DEVICE_INDEX_ANALOG_LEFT) return portValue.flightStick.verticalAxis; + if (index == RETRO_DEVICE_INDEX_ANALOG_RIGHT) return portValue.flightStick.altitudeAxis; + return 0; + default: return 0; + } + } + + case RETRO_DEVICE_LIGHTGUN: + switch (id) + { + case RETRO_DEVICE_ID_LIGHTGUN_SCREEN_X: return portValue.lightGun.screenX; + case RETRO_DEVICE_ID_LIGHTGUN_SCREEN_Y: return portValue.lightGun.screenY; + case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER: return portValue.lightGun.trigger; + case RETRO_DEVICE_ID_LIGHTGUN_SELECT: return portValue.lightGun.select; + case RETRO_DEVICE_ID_LIGHTGUN_RELOAD: return portValue.lightGun.reload; + case RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN: return portValue.lightGun.isOffScreen; + default: return 0; + } + + case RETRO_DEVICE_ARCADE_LIGHTGUN: + switch (id) + { + case RETRO_DEVICE_ID_LIGHTGUN_SCREEN_X: return portValue.arcadeLightGun.screenX; + case RETRO_DEVICE_ID_LIGHTGUN_SCREEN_Y: return portValue.arcadeLightGun.screenY; + case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER: return portValue.arcadeLightGun.trigger; + case RETRO_DEVICE_ID_LIGHTGUN_SELECT: return portValue.arcadeLightGun.select; + case RETRO_DEVICE_ID_LIGHTGUN_START: return portValue.arcadeLightGun.start; + case RETRO_DEVICE_ID_LIGHTGUN_RELOAD: return portValue.arcadeLightGun.reload; + case RETRO_DEVICE_ID_LIGHTGUN_AUX_A: return portValue.arcadeLightGun.auxA; + case RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN: return portValue.arcadeLightGun.isOffScreen; + default: return 0; + } + + case RETRO_DEVICE_ORBATAK_TRACKBALL: + switch (id) + { + case RETRO_DEVICE_ID_ANALOG_X: + if (index == RETRO_DEVICE_INDEX_ANALOG_LEFT) return portValue.orbatakTrackball.dX; + if (index == RETRO_DEVICE_INDEX_ANALOG_RIGHT) return portValue.orbatakTrackball.dX; + return 0; + + case RETRO_DEVICE_ID_ANALOG_Y: + if (index == RETRO_DEVICE_INDEX_ANALOG_LEFT) return portValue.orbatakTrackball.dY; + if (index == RETRO_DEVICE_INDEX_ANALOG_RIGHT) return portValue.orbatakTrackball.dY; + return 0; + + case RETRO_DEVICE_ID_JOYPAD_SELECT: return portValue.orbatakTrackball.startP1; + case RETRO_DEVICE_ID_JOYPAD_START: return portValue.orbatakTrackball.startP2; + case RETRO_DEVICE_ID_JOYPAD_L: return portValue.orbatakTrackball.coinP1; + case RETRO_DEVICE_ID_JOYPAD_R: return portValue.orbatakTrackball.coinP2; + case RETRO_DEVICE_ID_JOYPAD_R2: return portValue.orbatakTrackball.service; + default: return 0; + } + + default: return 0; + } + + return 0; +} + +int16_t RETRO_CALLCONV retro_input_state_callback(unsigned port, unsigned device, unsigned index, unsigned id) +{ + // printf("Libretro Input State Callback Called. Port: %u, Device: %u, Index: %u, Id: %u\n", port, device, index, id); + if (port == 0) return processController(_port1Type, _port1Value, device, index, id); + if (port == 1) return processController(_port2Type, _port2Value, device, index, id); + + return 0; +} + +char _deviceCountOption[256]; +void configHandler(struct retro_variable *var) +{ + printf("Variable Name: %s / Value: %s\n", var->key, var->value); + + std::string key(var->key); + + if (key == "opera_bios" && _biosFilePath != "None") var->value = _biosFilePath.c_str(); + if (key == "opera_font" && _fontFilePath != "None") var->value = _fontFilePath.c_str(); + if (key == "opera_region") + { + if (_region == 0) var->value = "ntsc"; + if (_region == 1) var->value = "pal1"; + if (_region == 2) var->value = "pal2"; + } + if (key == "opera_active_devices") + { + int deviceCount = 0; + if (_port1Type != RETRO_DEVICE_NONE) deviceCount++; + if (_port2Type != RETRO_DEVICE_NONE) deviceCount++; + sprintf(_deviceCountOption, "%d", deviceCount); + var->value = _deviceCountOption; + } +} + +const char* systemPath = "."; +bool RETRO_CALLCONV retro_environment_callback(unsigned cmd, void *data) +{ + // printf("Libretro Environment Callback Called: %u\n", cmd); + + if (cmd == RETRO_ENVIRONMENT_GET_LOG_INTERFACE) { *((retro_log_printf_t*)data) = retro_log_printf_callback; return true; } + if (cmd == RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL) { return true; } + if (cmd == RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS) { return true; } + if (cmd == RETRO_ENVIRONMENT_GET_VARIABLE) { configHandler((struct retro_variable *)data); return true; } + if (cmd == RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE) { return true; } + if (cmd == RETRO_ENVIRONMENT_SET_PIXEL_FORMAT) { *((vdlp_pixel_format_e*) data) = VDLP_PIXEL_FORMAT_XRGB8888; return true; } + if (cmd == RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY) { *((const char**)data) = systemPath; return true; } + if (cmd == RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY) { *((const char**)data) = systemPath; return true; } + + fprintf(stderr, "Unrecognized environment callback command: %u\n", cmd); + + return false; +} + +/// CD Management Logic Start +#define CDIMAGE_SECTOR_SIZE 2048 +uint32_t _currentSector = 0; +void (*cd_read_callback)(int32_t lba, void * dest); +int (*cd_sector_count_callback)(); +ECL_EXPORT void SetCdCallbacks(void (*cdrc)(int32_t lba, void * dest), int (*cdscc)()) +{ + cd_read_callback = cdrc; + cd_sector_count_callback = cdscc; +} + +uint32_t cd_get_size(void) { return cd_sector_count_callback(); } +void cd_set_sector(const uint32_t sector_) { _currentSector = sector_; } +void cd_read_sector(void *buf_) { cd_read_callback(_currentSector, buf_); } +/// CD Management Logic End + +// SRAM management start +bool _sram_changed = false; +ECL_EXPORT bool sram_changed() { return _nvramChanged; } +ECL_EXPORT int get_sram_size() { return NVRAM_SIZE; } +ECL_EXPORT uint8_t* get_sram_buffer() { return (uint8_t*) NVRAM; } +ECL_EXPORT void get_sram(uint8_t* sramBuffer) +{ + if (NVRAM == NULL) return; + memcpy(sramBuffer, get_sram_buffer(), get_sram_size()); +} + +ECL_EXPORT void set_sram(uint8_t* sramBuffer) +{ + if (NVRAM == NULL) opera_nvram_init(NVRAM,NVRAM_SIZE); + memcpy(get_sram_buffer(), sramBuffer, get_sram_size()); +} +// SRAM Management end + +ECL_EXPORT bool Init(const char* gameFilePath, const char* biosFilePath, const char* fontFilePath, int port1Type, int port2Type, int region) +{ + _gameFilePath = gameFilePath; + _biosFilePath = biosFilePath; + _fontFilePath = fontFilePath; + _port1Type = port1Type; + _port2Type = port2Type; + _region = region; + + opera_lr_callbacks_set_environment(retro_environment_callback); + opera_lr_callbacks_set_input_state(retro_input_state_callback); + opera_lr_callbacks_set_input_poll(retro_input_poll_callback); + opera_lr_callbacks_set_audio_sample_batch(retro_audio_sample_batch_callback); + opera_lr_callbacks_set_video_refresh(retro_video_refresh_callback); + + retro_set_controller_port_device(0, port1Type); + retro_set_controller_port_device(1, port2Type); + retro_init(); + + // Setting cd callbacks + opera_cdrom_set_callbacks(cd_get_size, cd_set_sector, cd_read_sector); + + // Loading game file + struct retro_game_info game; + game.path = _gameFilePath.c_str(); + auto loadResult = retro_load_game(&game); + if (loadResult == false) { fprintf(stderr, "Could not load game: '%s'\n", _gameFilePath.c_str()); return false; } + + // Getting av info + struct retro_system_av_info info; + retro_get_system_av_info(&info); + printf("3DO Framerate: %f\n", info.timing.fps); + + return true; +} + +ECL_EXPORT void opera_get_video(int& w, int& h, int& pitch, uint8_t*& buffer) +{ + buffer = (uint8_t*)_videoBuffer; + w = _videoWidth; + h = _videoHeight; + pitch = _videoPitch; +} + +ECL_EXPORT void FrameAdvance(MyFrameInfo* f) +{ + // Setting inputs + _port1Value = f->port1; + _port2Value = f->port2; + + //printf("Mouse X%d(%d), Y%d(%d), L%d, M%d, B%d\n", _port1Value.mouse.posX, _port1Value.mouse.dX, _port1Value.mouse.posY, _port1Value.mouse.dY, _port1Value.mouse.leftButton, _port1Value.mouse.middleButton, _port1Value.mouse.rightButton); + //fflush(stdout); + + // Checking for changes in NVRAM + _nvramChanged = false; + + // Checking if ports have been read + _inputPortsRead = 0; + + // If resetting, do it now. Otherwise, running a single frame + if (f->isReset == 1) retro_reset(); + else retro_run(); + + // The frame is lagged if no inputs were read + f->base.Lagged = !_inputPortsRead; + + // Setting video buffer + f->base.Width = _videoWidth; + f->base.Height = _videoHeight; + memcpy(f->base.VideoBuffer, _videoBuffer, sizeof(uint32_t) * _videoWidth * _videoHeight); + + // Setting audio buffer + f->base.Samples = _audioSamples; + memcpy(f->base.SoundBuffer, _audioBuffer, _audioSamples * sizeof(int16_t) * _CHANNEL_COUNT); +} + +ECL_EXPORT void GetMemoryAreas(MemoryArea *m) +{ + int memAreaIdx = 0; + + m[memAreaIdx].Data = retro_get_memory_data(RETRO_MEMORY_SYSTEM_RAM); + m[memAreaIdx].Name = "System RAM"; + m[memAreaIdx].Size = retro_get_memory_size(RETRO_MEMORY_SYSTEM_RAM); + m[memAreaIdx].Flags = MEMORYAREA_FLAGS_WORDSIZE1 | MEMORYAREA_FLAGS_WRITABLE | MEMORYAREA_FLAGS_PRIMARY; + memAreaIdx++; + + m[memAreaIdx].Data = retro_get_memory_data(RETRO_MEMORY_VIDEO_RAM); + m[memAreaIdx].Name = "Video RAM"; + m[memAreaIdx].Size = retro_get_memory_size(RETRO_MEMORY_VIDEO_RAM); + m[memAreaIdx].Flags = MEMORYAREA_FLAGS_WORDSIZE1 | MEMORYAREA_FLAGS_WRITABLE; + memAreaIdx++; + + m[memAreaIdx].Data = get_sram_buffer(); + m[memAreaIdx].Name = "Non-volatile RAM"; + m[memAreaIdx].Size = get_sram_size(); + m[memAreaIdx].Flags = MEMORYAREA_FLAGS_WORDSIZE1 | MEMORYAREA_FLAGS_WRITABLE | MEMORYAREA_FLAGS_SAVERAMMABLE; + memAreaIdx++; +} + +void (*InputCallback)(); +ECL_EXPORT void SetInputCallback(void (*callback)()) +{ + InputCallback = callback; +} diff --git a/waterbox/opera/bizhawk.hpp b/waterbox/opera/bizhawk.hpp new file mode 100644 index 0000000000..4ca0ec3e38 --- /dev/null +++ b/waterbox/opera/bizhawk.hpp @@ -0,0 +1,107 @@ +#pragma once + +// system +#include +#include +#include +#include + +// waterbox +#include "emulibc.h" +#include "waterboxcore.h" + +struct gamePad_t +{ + int up; + int down; + int left; + int right; + int buttonX; + int buttonP; + int buttonA; + int buttonB; + int buttonC; + int buttonL; + int buttonR; +}; + +struct mouse_t +{ + int dX; + int dY; + int leftButton; + int middleButton; + int rightButton; + int fourthButton; +}; + +struct flightStick_t +{ + int up; + int down; + int left; + int right; + int fire; + int buttonA; + int buttonB; + int buttonC; + int buttonX; + int buttonP; + int leftTrigger; + int rightTrigger; + int horizontalAxis; + int verticalAxis; + int altitudeAxis; +}; + +struct lightGun_t +{ + int trigger; + int select; + int reload; + int isOffScreen; + int screenX; + int screenY; +}; + +struct arcadeLightGun_t +{ + int trigger; + int select; + int start; + int reload; + int auxA; + int isOffScreen; + int screenX; + int screenY; +}; + +struct OrbatakTrackball_t +{ + int dX; + int dY; + int startP1; + int startP2; + int coinP1; + int coinP2; + int service; +}; + +struct controllerData_t +{ + gamePad_t gamePad; + mouse_t mouse; + flightStick_t flightStick; + lightGun_t lightGun; + arcadeLightGun_t arcadeLightGun; + OrbatakTrackball_t orbatakTrackball; +}; + +typedef struct +{ + FrameInfo base; + controllerData_t port1; + controllerData_t port2; + int isReset; +} MyFrameInfo; + diff --git a/waterbox/opera/opera-libretro b/waterbox/opera/opera-libretro new file mode 160000 index 0000000000..536b8e2d4f --- /dev/null +++ b/waterbox/opera/opera-libretro @@ -0,0 +1 @@ +Subproject commit 536b8e2d4fae8b2aea97cbfa4c4e2d62843076ea diff --git a/waterbox/readme.txt b/waterbox/readme.txt index 1592f6859f..ba96fd0213 100644 --- a/waterbox/readme.txt +++ b/waterbox/readme.txt @@ -39,6 +39,7 @@ It consists of a modified musl libc, and build scripts to tie it all together. * waterbox/uae/libretro-uae (required for uae) * waterbox/stella/core (required for stella) * waterbox/dsda/core (required for dsda) + * waterbox/opera/opera-libretro (required for opera) * waterbox/dosbox/dosbox-x (required for DOSBox-x) * none of these submodules need to be cloned recursively @@ -80,6 +81,7 @@ It consists of a modified musl libc, and build scripts to tie it all together. cd nyma && make -f ss.mak install cd nyma && make -f shock.mak install cd nyma && make -f vb.mak install + cd opera && make install cd picodrive && make install cd stella && make install cd snes9x && make install