Commit Graph

1229 Commits

Author SHA1 Message Date
Maxim Poliakovski 920c2024be Revert "Add a basic mouse grab mode when running on macOS"
This reverts commit 587eb48f61.
2023-12-19 13:15:10 +01:00
dingusdev 2a0f391113 Compilation fix for machineproperties.cpp 2023-12-17 20:04:10 -07:00
dingusdev c3b770ef17
Merge pull request #74 from mihaip/upstream-mouse-grab
Add a basic mouse grab mode when running on macOS
2023-12-15 18:03:45 -07:00
dingusdev a14fbe865f
Merge pull request #75 from mihaip/upstream-extended-adb
Add basic support for the extended ADB mouse protocol.
2023-12-15 18:02:56 -07:00
Mihai Parparita ae0bb838bf Add basic support for the extended ADB mouse protocol.
We now respond to the switch to device handler ID 4 and the register 1
read (as described by https://developer.apple.com/library/archive/technotes/hw/hw_01.html#Extended).

We don't yet use the extra precision bits in the register 0.
2023-12-15 16:04:27 -08:00
Mihai Parparita 587eb48f61 Add a basic mouse grab mode when running on macOS
Adds a "Grab Mouse" command to the "Window" menu which toggles
SDL_SetRelativeMouseMode. That "traps" the mouse to the current window
(and hides it) which makes it less annoying to deal with the separate
acceleration curves of the host and guest OS.

This needs to be done via AppKit code since SDL does not have a
cross-platform way to add menu commands.

I also looked into the extended ADB mouse protocol but it does not
appear to do that we want. If we use it to report a device class of
classAbsolute (0) the acceleration curve changes to a flat response
(we end up using 'accl' 0 from 9dd3c4bef8/base/SuperMarioProj.1994-02-09/Resources/MiscROMRsrcs.r (L64-L76))
but the coordinates are still interpreted as being deltas. If I use a
device type 4 (Absolute pointing devices) then the mouse position is
never queried. Per https://68kmla.org/bb/index.php?threads/anyone-have-an-adb-graphics-tablet-or-joystick.39128/
all tablet devices end up using custom drivers.
2023-12-15 15:38:32 -08:00
dingusdev 0e0de638d4 Update loguru from the master branch 2023-12-11 07:45:51 -07:00
Maxim Poliakovski fd92d86954 mesh: add MESH TNT variant. 2023-12-11 08:05:39 +01:00
dingusdev c41f5355fd
Merge pull request #73 from mihaip/upstream-scsi-name
Fix uninitialized value read in the ScsiHardDisk constructor
2023-12-10 10:58:25 -07:00
Mihai Parparita ea9de4feaf Fix uninitialized value read in the ScsiHardDisk constructor
The call to the ScsiDevice superclass was using the name field (which
was not initialized yet) instead of the name constructor argument
2023-12-10 08:58:12 -08:00
Maxim Poliakovski 114737db41 scsicdrom: use CdromDrive as base class. 2023-12-10 00:19:44 +01:00
Maxim Poliakovski bf278af950 scsidevice: add get_more_data() method.
It is required for supporting large data transfers split
into multiple chunks.
2023-12-10 00:19:44 +01:00
Maxim Poliakovski e1b231882e cdromdrive: declare some methods virtual. 2023-12-10 00:19:44 +01:00
Maxim Poliakovski fa04cde25d machinetnt: more control of machine configuration. 2023-12-10 00:19:44 +01:00
Maxim Poliakovski 705dd390e9 grandcentral: respect size when reading from IOBus devices. 2023-12-10 00:19:44 +01:00
Maxim Poliakovski 078aa79270 grandcentral: remove board register 1 stub. 2023-12-10 00:19:44 +01:00
Maxim Poliakovski a1ad0a3e07 machineid: implement BoardRegister class. 2023-12-10 00:19:44 +01:00
Maxim Poliakovski 858f699750 hammerhead: add configuration accessors. 2023-12-10 00:19:44 +01:00
dingusdev 7cf3d9cd94
Merge pull request #72 from mihaip/upstream-ub
Avoid some undefined behavior
2023-12-08 06:45:44 -07:00
joevt c28e1fa0be ppcmmu: Fix write accesses to read-only memory. 2023-12-08 11:15:04 +01:00
Mihai Parparita e9bc8926ab Avoid some undefined behavior
The `SubOpcode31Grabber[1024] = { ppc_illegalop }` initializer only
populates the first entry with ppc_illegalop (at least on some compilers),
switch to explicitly initializing the entire array with std::fill_n.

Also fix a couple of sign and overflow issues flagged by the Xcode
undefined behavior sanitizer.
2023-12-07 23:59:49 -08:00
dingusdev 4d7204debc
Merge pull request #71 from mihaip/upstream-ati-rage
Add support for more ATI Rage video modes
2023-12-07 18:03:51 -07:00
Mihai Parparita 30ded5e803 Add support for more ATI Rage video modes
Cherrypicks a small piece of joevt/dingusppc@117ca1e449
so that booting from the 10.2 CD gets past it trying to change the video
mode to 15bpp.

Co-authored-by: joevt <joevt@shaw.ca>
2023-12-07 00:16:48 -08:00
Maxim Poliakovski 65a343ce5c Clean up names for SCSI devices. 2023-12-04 22:41:01 +01:00
Maxim Poliakovski 8841c3e7f9 scsihd: more commands. 2023-12-04 21:41:55 +01:00
Maxim Poliakovski 1e4579a076 Improve SCSI state machine. 2023-12-04 21:41:55 +01:00
Maxim Poliakovski be2721cd67 scsihd: cleanup, fixes and more commands. 2023-12-04 21:41:55 +01:00
Maxim Poliakovski 58281520d3 Implement writes to SCSI Pseudo-DMA register. 2023-12-04 21:41:55 +01:00
Maxim Poliakovski 58dacfa263 amic: improve VIA2_IFR and VIA2_IER emulation. 2023-12-04 21:41:55 +01:00
Maxim Poliakovski ae903082d8 amic: implement SCSI DRQ callback. 2023-12-04 21:41:55 +01:00
joevt 9e54fb88f8 memaccess: Fix unaligned 8 byte read. 2023-12-04 15:31:19 +01:00
dingusdev 5859b4cd66 Delete _config.yml
RIP Page that no one really cared about
2023-12-04 06:57:48 -07:00
Maxim Poliakovski 8a987afefd
Merge pull request #70 from mihaip/upstream-adb-cleanup
Remove obsolete ADB_Bus class
2023-12-04 11:10:11 +01:00
Mihai Parparita 1a859669eb Remove obsolete ADB_Bus class
Superseded by e9d91175c4 and subsequent
changes.
2023-12-03 23:15:25 -08:00
dingusdev 56f2480caa Update cubeb 2023-12-03 14:34:49 -07:00
joevt 0096d063dd pdmonboard: Add 2, 4, 15, 24 bpp support. 2023-12-03 20:38:01 +01:00
joevt 7c3bb41728 videoctrl: Add more convert frame methods.
Also rename 1bpp and 8bpp methods to 1bpp_indexed and 8bpp_indexed.
2023-12-03 20:38:01 +01:00
Maxim Poliakovski 99ae0c3d31 ppcemu.h: add PVR definition for MPC604e. 2023-12-03 20:05:19 +01:00
Mihai Parparita 6582536591 Inline ppc_set_cur_instruction
It's used in the main emulator loop (ppc_exec_inner), and the function
call overhead adds up.

By inlining it, time to boot to the Finder using a 7.1.2 install CD
and a 6100 ROM goes from ~6700ms to ~6400ms (with clang 14 on a
M2 Max)
2023-12-02 15:12:02 -08:00
dingusdev 628d7249b1 Update gitignore for CodeLite project files 2023-12-01 16:11:32 -07:00
dingusdev 7eb2fd23c3 Fixing typos 2023-12-01 14:04:26 -07:00
Maxim Poliakovski 46961711e4 amic: stub for Ch-B serial xmit DMA. 2023-12-01 22:01:48 +01:00
Maxim Poliakovski 819d475181 poweropcodes: fix div emulation.
Clean up power_doz and power_maskir as well.
2023-12-01 20:41:22 +01:00
dingusdev 07030378c8 Non-US keyboard support started
This is quite unfinished, but should get some of the major targets started.
2023-12-01 10:23:41 -07:00
dingusdev 277be165b6
Merge pull request #67 from mihaip/upstream-power
Fix emulation of doz, dozi, and nabs POWER instructions
2023-12-01 07:48:38 -07:00
Mihai Parparita 1b4de3b64e Fix emulation of doz, dozi, and nabs POWER instructions
doz and dozi were storing the result into the wrong register.

nabs was not taking into account two's complement storage of numbers
and was just setting the signed bit.

These two instructions are used in the implementation of text
measurement in native QuickDraw on 7.1.2/the PDM ROM, and the incorrect
values were resulting in nothing being rendered. With the fix text
appears when booting from the 7.1.2 CD.
2023-12-01 01:34:12 -08:00
Maxim Poliakovski a1d8f8aa4e ppctests: fix test cases with SNaN/QNaN operands. 2023-11-30 17:44:46 +01:00
Maxim Poliakovski 8c3dfe94c7 ppcfpopcodes: infinities should set FPCC_FUNAN. 2023-11-30 12:53:10 +01:00
Maxim Poliakovski 0a9107b602 ppcfloattests.csv: remove unrelated CR7 changes. 2023-11-30 12:28:32 +01:00
Maxim Poliakovski 680cab52f3 ppcfpopcodes: fix ppc_fadds. 2023-11-30 12:06:44 +01:00