Commit Graph

57 Commits

Author SHA1 Message Date
dingusdev
9db53a4e3f Updating CMakeLists file 2024-02-21 06:32:24 -07:00
Mihai Parparita
ec155bf7ba Remap Cocoa/macOS menu item key modifiers
As part of adding ADB keyboard support (#56), we're now running into
conflicts between the guest and host OS keyboard shortcuts when running
on macOS hosts.

SDL2 unconditionally adds some menu items to the "Window" menu, and
there are built-in ones too. As a workaround, we now iterate over all
menu items are swap out command for control, since the the latter is
generally unused in classic Mac OS.
2023-10-29 12:16:01 -07:00
Mihai Parparita
1f7edfdb3b Make Emscripten build not depend on SDL2 or cubeb
While Emscripten has an SDL compabtility layer, it assumes that the
code is executing in the main browser process (and thus has access to
them DOM). The Infinite Mac project runs emulators in a worker thread
(for better performance) and has a custom API for the display, sound,
input, etc. Similarly, it does not need the cross-platform sound support
from cubeb, there there is a sound API as well.

This commit makes SDL (*_sdl.cpp) and cubeb-based (*_cubeb.cpp) code be
skipped when targeting Emscripten, and instead *_js.cpp files are used
instead (this is the cross-platform convention used by Chromium[^1], and
could be extended for other targets).

For hostevents.cpp and soundserver.cpp the entire file was replaced,
whereas for videoctrl.cpp there was enough shared logic that it was
kept, and the platform-specific bits were moved behind a Display class
that can have per-platform implementations. For cases where we need
additional private fields in the platform-specific classes, we use
a PIMPL pattern.

The *_js.cpp files with implementations are not included in this
commit, since they are closely tied to the Infinite Mac project, and
will live in its fork of DingusPPC.

[^1]: https://www.chromium.org/developers/design-documents/conventions-and-patterns-for-multi-platform-development/
2023-10-25 22:25:53 -07:00
Mihai Parparita
732977db27 Minimal changes to get an Emscripten build
Disable stack traces in loguru (excinfo.h is not available in Emscripten)
and set Emscripten linker flags.
2023-08-30 23:12:43 -07:00
dingusdev
d11d693b52 Compilation fix for VS 2023-06-19 22:36:09 -07:00
dingusdev
f181e721b0 Fixed compilation for Visual Studio 2023-03-19 07:55:26 -07:00
Maxim Poliakovski
0118b347f3 Clean up build scripts. 2023-01-08 23:29:25 +01:00
Maxim Poliakovski
101a8d33b0 Manage Windows build dependencies with vcpkg. 2023-01-08 22:27:13 +01:00
Maxim Poliakovski
eb3f978c7b Update Capstone and fix its compilation. 2022-12-30 22:31:51 +01:00
dingusdev
fd3ff7b703 Initial attempt at terminal support for Windows 2022-05-22 17:46:40 -07:00
dingusdev
86bc91028d Removed non-functioning interpreter code 2022-03-02 19:22:13 -07:00
Maxim Poliakovski
604b4bc2e5 Fix main CMakeLists.txt to include core for all targets. 2022-01-19 22:18:00 +01:00
Maxim Poliakovski
339db4a078 Add timers management. 2022-01-10 17:56:24 +01:00
Maxim Poliakovski
d70adac564 Better name for 68k debugger build control option. 2021-10-23 21:51:16 +02:00
Maxim Poliakovski
9329d56d83 Move devices into dedicated subdirectories. 2021-10-23 20:17:47 +02:00
Maxim Poliakovski
331b93d4d6 Fix compilation with Clang 11. 2021-10-17 23:41:53 +02:00
Maxim Poliakovski
de8d6487f9 Add forgotten include path for CLI11. 2021-09-17 13:27:49 +02:00
dingusdev
1c77057860 Fixed building through CMake 2021-09-12 08:08:22 -07:00
Maxim Poliakovski
ea5b0d9f52 atirage: framebuffer rendering and various improvements. 2021-09-11 21:02:46 +02:00
Maxim Poliakovski
31b5290ac9 New profiler API. 2021-04-14 01:27:07 +02:00
Maxim Poliakovski
2f8694e57c Revert enabling PPC tests by default. 2021-01-24 11:45:12 +01:00
dingusdev
680b437b74 Fixed disassembly for fctiwz, frsp, and fctiw 2021-01-23 21:30:29 -07:00
Maxim Poliakovski
b230299076 Make building of tests and benchmarks optional. 2021-01-08 20:38:40 +01:00
dingusdev
5cba9c1dae Merge branch 'cpu-refactor' 2020-12-04 11:01:34 -07:00
Maxim Poliakovski
180cb0d25f Make 68k debugger optional and disabled by default. 2020-12-03 02:18:13 +01:00
Maxim Poliakovski
df39a59190 Build Capstone as static library. 2020-12-03 01:39:39 +01:00
Maxim Poliakovski
f0315e98ee Add Capstone submodule. 2020-12-03 00:53:28 +01:00
Maxim Poliakovski
2be8e7b542 Set minimum Capstone version to 4.0.2
This version has fixed a bug with Capstone's main header.
2020-11-28 02:23:47 +01:00
Maxim Poliakovski
0e83ffe435 Fix broken CMakeLists.txt to work on MacOS. 2020-11-28 01:08:34 +01:00
dingusdev
f417df0630 Fixes Issue #18
Courtesy of webspacecreations
2020-10-25 16:23:53 -07:00
Maxim Poliakovski
599659495b Initial CLI11 integration. 2020-09-26 02:38:22 +02:00
Maxim Poliakovski
6b74e358dc WIP: basic 68k debugging environment. 2020-07-15 02:19:05 +02:00
Waqar Ahmed
59da71884e Fix linux build 2020-06-04 13:29:36 +05:00
Maxim Poliakovski
ae78a1f04f Fix AWACs sound playback with WASAPI. 2020-05-18 03:02:30 +02:00
Maxim Poliakovski
e59939541e WIP: initial Cubeb integration. 2020-05-15 02:44:00 +02:00
Waqar Ahmed
286897398c Fix build on linux 2020-05-12 21:20:57 +05:00
Maxim Poliakovski
d4c39f13af Changes related to Windows build. 2020-05-09 14:29:37 +02:00
Maxim Poliakovski
ba81094fa2 CMakeLists.txt: enable static linkage to libsoundio. 2020-05-08 23:48:02 +02:00
Maxim Poliakovski
f7d67a91e0 New AWAC and sound server implementation. 2020-05-08 23:12:04 +02:00
Maxim Poliakovski
7154e51d86 Make debugger standalone component. 2020-04-20 20:32:09 +02:00
dingusdev
60ffa5bfac Initial attempt at fixing SDL2 building for Windows 2020-03-22 20:15:12 -07:00
Maxim Poliakovski
945e63bdb2 Implement DMA push method for sound. 2020-03-19 15:09:24 +01:00
Maxim Poliakovski
14156dd32b Introduce subdevices interface. 2020-03-14 15:39:34 +01:00
Maxim Poliakovski
822f6cafd2 Create machine factory.
It manages various hardware configurations referred to as machines.
2020-03-13 23:09:36 +01:00
dingusdev
c8611dc293 Code cleanup + procedures for cleanup 2020-02-27 21:03:01 -07:00
Maxim Poliakovski
24652de392 Integrate disassembler tests. 2020-02-12 22:58:24 +01:00
Maxim Poliakovski
a06fb88324 Make dingusppc and testppc independent targets. 2020-02-10 16:41:40 +01:00
Maxim Poliakovski
4e4d0370be Modularize build system.
This way object files can be shared accross multiple executables.
2020-02-03 14:36:37 +01:00
Maxim Poliakovski
7d7b0b7de3 Initial PPC emulation tests. 2020-01-31 04:10:53 +01:00
Maxim Poliakovski
b311cea4e5 Remove optimization options from CMakeLists.txt.
Update the COMPILE section in the README.
2019-12-26 23:57:04 +01:00