Commit Graph

2014 Commits

Author SHA1 Message Date
Mihai Parparita
564c43c907 Remove ppc_cur_instruction global variable
Replace it wth an explicit opcode parameter that is passed around. That
is both slightly easier to reason about (to trace where it comes from)
and slightly faster, since it can be read from a register.

On my machine takes booting to "Welcome to Macintosh" being output in
a verbose boot of Mac OS X 10.2.8 from 31.8s to 30.6s (average of 5
runs, measured using deterministic mode and looking at when execution
reaches PC 0x90004a88).
2024-11-28 23:41:38 +01:00
Mihai Parparita
31bc6f79e5 Fix instructions for building with tests 2024-11-28 23:25:57 +01:00
Mihai Parparita
e4c84c5f80 Reduce frequency of deterministic mode instruction logging
Do as the comment says and log every (logical) second only.
2024-11-28 22:12:43 +01:00
Mihai Parparita
2d90aff408 ppc: Remove unncesessary function declarations
ppc_opcode16 and other functions are only needed in the implementation in
ppcexec.cpp, they don't need to be in the header.

fp_return_double and fp_return_uint64 have no uses (as of 2141a72b87)
can can thus be removed altogether.

Similarly ppc_fpu_off has no uses (as of bb3f4e596e)
and can be removed.
2024-11-28 22:12:16 +01:00
joevt
820da037da ppcmacros: Add missing space. 2024-11-28 07:25:23 -07:00
joevt
00f38133e9 ppcfpopcodes: fnabs fix.
fnabs sets the sign bit regardless of nan status.
2024-11-28 07:25:14 -07:00
joevt
e231dc4dec ppcfpopcodes: fabs fix.
fabs clears the sign bit regardless of nan status.
2024-11-28 07:25:06 -07:00
joevt
549cb2284c Revert "Tweaking conditional branch instructions"
This reverts commit 0835e6f9f4.
2024-11-27 08:20:05 -07:00
joevt
d41287c320 ppcfpopcodes: fneg fix.
fneg inverts the sign bit regardless of nan status.
2024-11-27 08:06:31 -07:00
joevt
b38b1731a0 ppcopcodes: Don't change MQ if not MPC601.
MQ should not be writable if not doing MPC601.
Fix is_601 and include_601.
This fixes risu tests.
2024-11-27 07:59:19 -07:00
dingusdev
1d807d10e9
Merge pull request #124 from mihaip/upstream-empty-cdrom
Make ImgFile ignore operations before the file is opened
2024-11-25 18:35:31 -07:00
Mihai Parparita
08fa2f887d Make ImgFile ignore operations before the file is opened
Before f65f9b9845 this would happen
automatically (since the stream member was always valid). It's now a
unique_ptr that's only initialized when the file is opened, so we need
to add guards for all the operations.
2024-11-25 22:37:37 +01:00
Maxim Poliakovski
04280ecda4 Revert "Fix LR update in bc instructions"
This reverts commit 5a0a7b12e4.
2024-11-25 21:56:32 +01:00
dingusdev
f4b5ac2d16 Minor fix to page 0x31 2024-11-25 08:11:11 -07:00
dingusdev
c8e2a4d921 Avoid flush on web ports 2024-11-24 15:32:47 -07:00
dingusdev
f6dc704aff Add MODE_SENSE_6 to ATAPI CD-ROM emulation 2024-11-24 15:23:38 -07:00
Maxim Poliakovski
b3f2a6cf20 machineyosemite: remove non-existent Rage128 connection. 2024-11-22 21:29:23 +01:00
dingusdev
ad44ce8ce4
Merge pull request #121 from mihaip/upstream-settings
Add support for specifying properties of dynamically-registered devices via the command line
2024-11-22 07:59:37 -07:00
joevt
4b13af6691 atirage: Change BAR 0 size calculation.
We only need up to BE_FB_OFFSET + this->vram_size.
If vram_size is 8MB, then make sure the last 4K is not mapped to BAR 0 because the macOS driver likes to map BAR 2 at that location.
2024-11-22 07:58:21 -07:00
Mihai Parparita
a941836a4d Add support for specifying properties of dynamically-registered devices via the command line
The previous approach of traversing the machine and its device tree
at startup to register CLI11 options was not working for dynamically
registered devices like PCI cards. This meant that options like
gfxmem_size or mon_id from the video cards could not be set.

Switch to instead registering in MachineFactory a hook function that
provides CLI flag values. We can call it when registering any property,
whether at startup or dynamically.
2024-11-21 22:58:36 -08:00
dingusdev
5a0a7b12e4 Fix LR update in bc instructions
Only executes when the branch path is taken.
2024-11-20 20:53:59 -07:00
dingusdev
0835e6f9f4 Tweaking conditional branch instructions 2024-11-20 18:23:03 -07:00
dingusdev
d279ada718 Revert "dbdma: Schedule interpret_cmd."
This reverts commit e1849a2bfd.
2024-11-17 06:49:43 -07:00
joevt
e1849a2bfd dbdma: Schedule interpret_cmd.
Have the entire dbdma program executed by scheduling each iteration in the CPU loop.
This is done only for devices that use the dbdma program to drive data input/output (has_data_callbacks) rather than have the device drive the dbdma program.
2024-11-16 10:30:20 -07:00
joevt
362cfcbc83 atahd: Rename descriptors. 2024-11-15 12:05:50 -07:00
joevt
6c093e141b Add missing override statements. 2024-11-15 10:03:57 -07:00
Rairii
aeac232e12 imgfile_sdl: Flush on write. 2024-11-15 07:54:49 -07:00
joevt
0ce96ffc12 CLI11: Update to v2.4.2. 2024-11-15 06:08:44 -07:00
joevt
ef6f2a40c8 atimach64defs: Add some bits. 2024-11-13 07:52:34 -07:00
joevt
3fbf0ddaa4 atimach64defs: Don't need L for unsigned constants. 2024-11-13 07:52:25 -07:00
joevt
6572bf8ce3 atirage: Fix Apple monitor extended sense codes.
Now multi-sync displays should be usable with Beige G3.
2024-11-13 07:51:49 -07:00
joevt
f27b8ba1be pdmonboard: Fix display resolution change.
You can connect a multisync display which should support 640x480 and 832x624.
2024-11-12 19:04:59 -07:00
joevt
f53a7cce32 appleramdac: Fix clock divisor 1x.
If bits 6 and 7 are 3, then the divisor should be 1 instead of 16.
0 -> 2x
1 -> 4x
2 -> 8x
3 -> 1x (not 16x).
This change affects RGB 12 inch dislay 512 x 384 60Hz mode in Platinum.
2024-11-12 19:04:29 -07:00
joevt
e7eb1c8a66 Fix PCI interrupts and add devices.
- Use interrupt source instead of IRQ ID in the IrqMap.
- Add a get_interrupt_controller method to mirror the set_interrupt_controller method.
- Have PCI hosts use pcihost_device_postinit to add PCI devices. This was moved from bandit's device_postinit and allows for duplicate devices by appending the slot to the registered device name.
- Fix interrupts of Pippin.

Fix interrupts of cmd646
- Make it work like other PCI devices.
- IntDetails is built into the pcibase base class.
- IntDetails is initialized by calling pci_interrupt.
- pci_interrupt checks the "enable interrupts" flag before doing an interrupt.
2024-11-12 07:04:55 -07:00
joevt
e707d1f27a Remove slashes from PCI device names.
So they are not mistaken for path separators.
2024-11-11 21:28:51 -07:00
joevt
9a2303c495 pci: Replace pci_name with get_name.
It's redundant to have two names.
2024-11-11 21:28:23 -07:00
joevt
6154b7cbe2 amic: Add modem port transmit DMA read. 2024-11-11 21:10:17 -07:00
joevt
ffc7de4715 platinum: Handle read 4 bytes with offset. 2024-11-10 21:05:05 -07:00
joevt
97339e4ce4 platinum: Add disable_display.
To mirror enable_display.
2024-11-10 21:03:53 -07:00
joevt
fc89fec3e6 dbdma: Do interrupt after setting resCount and xferStatus. 2024-11-10 06:24:24 -07:00
joevt
15986a4e4f dbdma: Allow clearing only control bits.
Only control bits can be set and cleared by software.
Command bits and status bits cannot be cleared.
2024-11-10 06:23:35 -07:00
joevt
d56520d22a dbdma: Set active only when wake is set. 2024-11-10 06:22:38 -07:00
dingusdev
42f1871c84
Merge pull request #120 from mihaip/upstream-deterministic
Add a deterministic execution mode
2024-11-10 06:13:35 -07:00
Mihai Parparita
f65f9b9845 Add a deterministic execution mode
Adds support for a --deterministic command-line option that makes
repeated runs the same:
- Keyboard and mouse input is ignored
- The sound server does a periodic pull from the DMA channel (so that
  it gets drained), but only does so via a periodic timer (instead of
  being driven by a cubeb callback, which could arrive at different
  times)
- Disk image writes are disabled (reads of a modified area still
  work via an in-memory copy)
- NVRAM writes are disabled
- The current time that ViaCuda initializes the guest OS is always the
  same.

This makes execution exactly the same each time, which should
make debugging of more subtle issues easier.

To validate that the deterministic mode is working, I've added a
periodic log of the current "time" (measured in cycle count), PC
and opcode. When comparing two runs with --log-no-uptime, the generated
log files are identical.
2024-11-09 22:48:06 -08:00
joevt
f415a63b76 dbdma: Allow Stop command to set xferStatus.
Some software may check the status flags of a Stop DBDMA descriptor.
2024-11-09 21:05:32 -07:00
joevt
50e661f804 dbdma: Resume should continue DBDMA program.
Just like Start does.
2024-11-09 21:05:27 -07:00
joevt
7ffafdc007 dbdma: Implement branch taken flag. 2024-11-09 20:31:54 -07:00
joevt
96875a1278 dbdma: Clear active flag if paused flag is set.
The active flag is cleared when the pause flag is set, so why shouldn't the active flag be cleared when the start flag is set with the pause flag is already set?
2024-11-09 19:59:52 -07:00
dingusdev
6766ca8647
Merge pull request #118 from mihaip/upstream-hidpi
Enable HiDPI mode for SDL and ensure that we use nearest-neighbor scaling
2024-11-09 16:59:15 -07:00
Mihai Parparita
fc13f6870b Enable HiDPI mode for SDL and ensure that we use nearest-neighbor scaling
Avoids blurriness on macOS hosts with Retina displays.

Smooth scaling can be toggled back on via control-S
2024-11-09 15:48:00 -08:00