dingusdev
96b9b6a375
Fixed building
2024-03-12 21:30:38 -07:00
dingusdev
410502fa7e
Merge branch 'master' of https://github.com/dingusdev/dingusppc
2024-03-12 21:15:49 -07:00
Maxim Poliakovski
a8cd73cc69
hammerhead: remove MACH_TYPE_CATALYST definition.
...
Catalyst uses another memory controller (Platinum)
that significantly differs from Hammerhead.
Low-level board constants don't match too.
2024-03-12 17:41:12 +01:00
Maxim Poliakovski
54ce23d0a8
platinum: cleanup non-DWORD register reads.
2024-03-12 17:29:19 +01:00
Maxim Poliakovski
2d68b72dbd
platinum: use meaningful name for 'register _4B'.
2024-03-12 17:05:47 +01:00
joevt
091cf4337c
scsidevice: Remember SELECT_WITH_ATN message.
...
It might be an IDENTIFY message which contains a LUN number.
2024-03-12 08:01:52 -07:00
joevt
ff9b8a59e2
scsibus: Change control lines for MESSAGE_IN.
2024-03-12 07:49:43 -07:00
joevt
6e4544450e
platinum: Add register _4B.
2024-03-12 07:07:43 -07:00
joevt
d4922beefe
platinum: Don't ignore read/write of size != 4.
...
For reading, we'll return values such that dumping bytes or words or longs in Open Firmware will produce the same info in all cases.
2024-03-12 07:07:36 -07:00
joevt
6f37ff9ea3
platinum: Convert register offset to index.
...
Same as control.
2024-03-12 07:06:05 -07:00
joevt
1dfa671405
hammerhead: Add Motherboard ID Burst ROM flag.
2024-03-12 07:05:09 -07:00
joevt
eb1d5d0a6d
atimach64gx: Make sure refresh rate is reasonable.
2024-03-11 20:27:00 -07:00
joevt
a190d5cbd9
atimach64gx: Handle all pixel formats.
2024-03-11 20:26:07 -07:00
joevt
ab647ec0eb
atimach64gx: Move pixel clock calculation.
2024-03-11 20:25:32 -07:00
joevt
1fb9e37ec5
scsidevice: Add check_lun.
...
This will create a CHECK_CONDITON if the LUN doesn't match.
2024-03-11 20:24:24 -07:00
joevt
bcd057d45b
atimach64gx: Don't recalculate if nothing changed.
2024-03-11 19:25:42 -07:00
joevt
0a63e2946d
atimach64gx: Init some fields.
2024-03-11 19:25:18 -07:00
dingusdev
b63e42ecf2
Temporarily removing SOFT RESET ATA command
...
Not implemented properly. Will re-implement soon.
2024-03-11 19:05:13 -07:00
joevt
ee2ec7fe54
atimach64gx: Update VGA unsupported mode message.
2024-03-11 08:00:48 -07:00
joevt
1f63342c96
atimach64gx: Handle disabled display.
2024-03-11 08:00:38 -07:00
joevt
6e094a8edb
atirage: Remove crtc_enable.
2024-03-11 07:55:15 -07:00
joevt
2ece059c5e
atapi: Add ATAPI_SOFT_RESET command.
...
I don't know if this is correct.
2024-03-11 07:19:11 -07:00
joevt
a0ce1efabe
display_sdl: Add Mouse Grabbed to window title.
...
Necessary when the window is created after a restart while mouse is grabbed.
2024-03-11 07:10:26 -07:00
leap123
c1b557fbb9
Fix build on Fedora
2024-03-11 13:01:43 +07:00
joevt
babefd09f3
atimach64gx: Rename enable_crtc_internal.
2024-03-10 17:02:38 -07:00
joevt
578e5dc063
atimach64gx: Remove disable_crtc_internal.
2024-03-10 17:02:29 -07:00
joevt
2a290ff9c1
atimach64gx: Remove crtc_enable.
2024-03-10 17:02:18 -07:00
joevt
bfd60155b6
atimach64gx: Fix DAC_CNTL for non-byte access.
...
If offset is 2, a size of 2 will also overwrite byte 3.
2024-03-10 17:00:47 -07:00
joevt
df09a1e3bf
atimach64gx: Register cleanup.
...
- Use register number instead of offset.
- Have one exit path from the read_reg and write_reg methods.
2024-03-10 16:59:11 -07:00
joevt
3cced5e29b
atimach64gx: Use register field names.
2024-03-10 16:58:36 -07:00
joevt
bd5ecf8cbb
atimach64gx: Init CRTC_DISPLAY_DIS.
2024-03-10 16:54:48 -07:00
joevt
3e6f7ef541
atimach64gx: Init FIFO_CNT.
2024-03-10 16:54:31 -07:00
joevt
ac5b434641
atimach64gx: Add verbose_pixel_format.
...
It is used to log the pixel format/depth.
2024-03-09 17:57:27 -07:00
joevt
00f917f52e
atimach64gx: Add io_access_allowed.
...
This method is used by both pci_io_read and pci_io_write to determine if ISA type I/O access is allowed.
The SPARSE_IO_BASE I/O address is defined. This I/O range is not defined by an I/O BAR.
2024-03-09 17:54:05 -07:00
joevt
a11770961e
Add pci_find_device for pci type 0 requests.
2024-03-09 17:49:51 -07:00
joevt
2d8f2422b3
dbmda: Fix dma output res_count update.
...
Use this->res_count to track amount of data transferred.
2024-03-09 06:47:48 -07:00
joevt
0166059d1b
dbdma: Add set_stat method.
...
A hardware device may have status flags connected to 8 status bits of the DBDMA engine.
2024-03-09 06:45:06 -07:00
joevt
50fcb45b88
awacs: Add dma input stub.
2024-03-09 06:20:24 -07:00
joevt
29d13aef09
dma: Add is_active method for input channels.
...
Since DBDMA contains an input and output channel, rename the existing is_active method to is_out_active.
2024-03-09 06:20:13 -07:00
joevt
31036b8dee
grandcentral: Add sound in DMA.
2024-03-09 06:03:33 -07:00
joevt
6f231f3367
grandcentral: IOBus changes.
...
- Add IOBusDevice (nvram_addr_hi_dev) for NVRAM addr hi.
- Add IOBusDevice (nvram_dev) for NVRAM data.
- Make all IOBusDevices use the same code.
- Log error if 4 least significant bits of offset are not zero.
- Correctly byte swap the value before passing it to the IOBusDevice.
- When reading, duplicate the bytes in a word or dword like a real Power Mac does.
2024-03-09 06:02:23 -07:00
joevt
97f08f21b7
appleramdac: Add get_clut_entry_cb.
2024-03-08 21:02:41 -07:00
joevt
9a26016ed4
memctrlbase: Clear RAM to zero.
2024-03-08 20:58:41 -07:00
joevt
f541613c6b
mpc106: Fix RAM allocation.
...
Fix bank_end calculation (left shift 28 instead of 30).
Handle unorderred and discontinous ranges.
2024-03-08 20:58:04 -07:00
joevt
6931b2944b
mpc106: Allow multiple of the same PCI device.
...
Grackle allows attaching different PCI devices. This change allows attach multiple of the same PCI device. To make the name unique in the machine map, the name of the PCI slot is appended to the device name.
2024-03-08 20:57:47 -07:00
joevt
0af9d0c972
chario: Cleanup.
2024-03-08 19:27:42 -07:00
joevt
5d9194d03d
atimach64gx: Add config read/write stub.
2024-03-08 08:00:21 -07:00
Mihai Parparita
57e6e90002
Add support for the CUDA_RESTART_SYSTEM command
...
There are cases where when it's necessary (e.g. given uninitialized NVRAM,
the Beige G3 with the 10.2 install CD inserted will update the boot
device and restart to boot from it).
Restart support was done by wrapping the ppc_exec function in a loop and
checking for a restart power off reason. We also need to disconnect all
event listeners, since they will be recreated when the machine is
re-initialized.
2024-03-07 23:32:23 -08:00
Mihai Parparita
7226fe5303
Ensure that video controller refresh task timer is stopped when the object is destroyed.
2024-03-07 23:31:56 -08:00
Mihai Parparita
10af336cd1
Ensure that VIA timers are stopped when the object is destroyed.
2024-03-07 23:31:56 -08:00
Mihai Parparita
f218a38294
Ensure that AMIC pseudo-VBL timer is stopped when the object is destroyed.
2024-03-07 23:31:44 -08:00
dingusdev
2f326a8199
Compile fix for CharIO in VS2022
...
For some reason, it wouldn't define the symbol when trying to compile with Clang.
2024-03-07 20:57:40 -07:00
joevt
04526012f9
grandcentral: Add Ethernet ROM.
2024-03-07 07:59:13 -07:00
joevt
b5bb214920
ohare: Interrupt fixes.
...
Based on work done for grandcentral.
2024-03-07 07:58:54 -07:00
joevt
1e587b0848
chario: Move static variable to class.
2024-03-07 07:48:11 -07:00
joevt
97727e0d1e
escc: Return NULL if nothing to read.
2024-03-07 07:47:41 -07:00
joevt
723eab59d6
escc: Include port name in log messages.
2024-03-07 07:40:30 -07:00
joevt
1421ccc81e
escc: Add dma stub.
2024-03-07 07:30:06 -07:00
joevt
7b4d513e22
videoctrl: Add change resolution support.
...
PDM defaults to 640x480.
If you set --mon_id to MacRGB12in then it would draw 512x384 inside a 640x480 window.
If you set --mon_id to Multiscan20in then it would try to draw 832x624 inside a 640x480 window and crash.
If you set the Monitors control panel to switch multiscan display from 640x480 to 832x624 and restart then it would crash.
Now it will correctly change the window size every time the mode changes.
2024-03-06 21:44:10 -07:00
joevt
5b51cd06c0
atimach64gx: Add register names.
...
For logging.
2024-03-06 21:20:23 -07:00
joevt
052a47734f
macio: Add DMA interrupts.
2024-03-06 21:19:04 -07:00
joevt
54767bf97d
More interrupts.
...
- Add all the interrupts including DMA.
- Modify the Interrupt to IRQ_ID translation so the interrupts belonging to the first set of 32 interrupts don't need to be shifted.
2024-03-06 19:17:16 -07:00
joevt
e5bace03f7
Abort if register_dma_int.
...
Make register_dma_int cause Abort for heathrow and ohare like it does for amic.
2024-03-06 19:17:03 -07:00
joevt
691fcfb657
atimach64gx: PCI BAR changes.
...
Support changing BAR address.
2024-03-06 18:58:15 -07:00
joevt
49f7da4402
atimach64gx: Remove second column.
...
It incorrectly implies a relationship between items on the same row.
2024-03-06 18:57:52 -07:00
joevt
6c0ca42fff
atimach64defs: Add more registers and bit fields.
2024-03-06 18:57:30 -07:00
joevt
5a049642ea
atirage: Add VBL callback.
2024-03-06 07:50:03 -07:00
joevt
b168459007
atirage: Calculate vert_blank.
2024-03-06 07:42:51 -07:00
joevt
d5c7b5f537
atirage: Add write CRTC_INT_CNTL.
2024-03-06 07:41:12 -07:00
joevt
506ed000a0
atirage: Add write CONFIG_STAT0.
2024-03-06 07:04:59 -07:00
joevt
b92e9216f4
atirage: Add write CRTC_VLINE_CRNT_VLINE.
...
For VLINE interrupt (but Mac OS X doesn't use enable VLINE interrupt).
2024-03-06 07:04:40 -07:00
joevt
6ff5079df8
atirage: Init CRTC_DISPLAY_DIS.
2024-03-06 07:04:25 -07:00
joevt
d686fc04f4
atirage: Fix crtc_update.
...
Add pixel format and pixel clock to the list of fields that will initiate a recalculation.
If frame rate is less than 24 or greater than 120 then assume 60Hz.
2024-03-05 08:02:50 -07:00
joevt
9aef78be4f
atirage: Modify write CLOCK_CNTL.
...
Consider write-only bits: ATI_CLOCK_STROBE can't be read so clear it.
8 bits at Offset 2 is PLL_DATA. If we don't modify PLL_DATA, then insert the current value of PLL_DATA into the value that will be read from ATI_CLOCK_CNTL.
2024-03-05 08:02:20 -07:00
joevt
f6b1c080ad
atirage: Init FIFO_CNT of GUI_STAT.
2024-03-05 07:54:19 -07:00
joevt
d4fa85688d
atirage: Check both offset and size.
...
When checking if a particular byte of a register is accessed, check both the starting position (offset) and ending position (offset + size) of the bytes being access.
2024-03-05 07:52:12 -07:00
joevt
777a02cbe9
pci: Use SIZE_ARG for logging arg size.
...
The SIZE_ARG macro defined in pcibase can be used outside pcibase with a small modification.
2024-03-04 21:16:46 -07:00
joevt
61b1940397
pci: Add command register mask.
...
The mask represents the list of bits that are allowed to change in the command register of PCI config space.
2024-03-04 21:16:38 -07:00
joevt
eef6d267c3
atirage: PCI BAR changes.
...
- Add BAR 2 decode. This BAR isn't actually used by Mac OS X, but decode it anyway just in case.
- Support updating of BARs (using change_one_bar method).
2024-03-04 21:13:07 -07:00
joevt
9c48c296c8
atirage: Register cleanup.
...
- Use register number instead of offset.
- Have one exit path from the read_reg and write_reg methods.
2024-03-04 21:11:56 -07:00
joevt
214c61669a
videoctrl: Add pixel_format.
...
pixel_format is different than pixel_depth.
pixel_format depends on the GPU. A GPU might have multiple formats for the same depth.
We store this in videoctrl so that we can detect changes in pixel_format like we do for pixel_depth and active_width and active_height.
2024-03-04 21:11:42 -07:00
joevt
fb0396923f
Fix dma STORE_QUAD and LOAD_QUAD.
...
When fetching DMA command, make sure to convert little endian fields to host endianness (i.e. don't use memcpy).
When fetching DMA command, return the host address of the DMA command for LOAD_QUAD. Maybe this address should be cached whenever this->cmdptr changes?
When fetching DMA command, return whether the DMA command is writable.
For LOAD_QUAD, pass the address of the DMA command to xfer_quad.
Always log unexpected DMA command values.
Write full 32-bit value for LOAD_QUAD.
Write reqCount to resCount.
2024-03-04 20:38:07 -07:00
joevt
6503a300cc
Add PCI interrupt method.
...
A PCI device passes an interrupt to its host. The host will determine from the PCI device which interrupt to trigger.
2024-03-04 07:47:20 -07:00
joevt
be80595834
Remove obsolete pci config type 1 methods.
...
pci_find_device is the method used to pass pci config type 1 methods to child PCI devices.
2024-03-04 07:47:08 -07:00
joevt
54bda0ea95
pci: Change pci_conv_rd_data unaligned.
...
pci_conv_rd_data can be used to handle unaligned or 64-bit accesses in mmio regions if it's modified to include the next 32-bit value.
For pci config accesses, grackle repeats the 32-bit value. bandit uses a seemingly random number for the next 32-bit value, but we'll make it work like grackle.
2024-03-03 20:06:13 -07:00
joevt
6d23e18c11
pci: Add PCI CardBus bridge.
...
PCCard is used by PowerBook G3 Wallstreet in Open Firmware 2.0.1.
CardBus is probed in New World Macs starting from at least Open Firmware 4.1.9f1 sometime after Open Firmware 3.1.1.
- Create PCIBase from common stuff in PCIDevice.
- Add PCIBridgeBase. These have a primary bus number, secondary bus number, and subordinate bus number which are used to determine if PCI type 1 config cycle should be passed.
- Change PCIBridge to use PCIBridgeBase instead of PCIDevice.
- Add PCICardBusBridge which uses PCIBridgeBase.
2024-03-03 16:00:55 -07:00
joevt
5f8e7fcb73
pci: Log invalid BAR values.
...
For example, Old World Macs have versions of Open Firmware that don't support 512 MB BARs correctly. They may attempt to set such a BAR to 0x90000000 (a 256 MB boundary) instead of 0xA0000000 (the next available 512 MB boundary).
2024-03-03 15:49:59 -07:00
joevt
d426d0faeb
Add settings when adding pci device.
2024-03-03 15:01:39 -07:00
joevt
c64fab6ecb
heathrow: Align read/write messages.
2024-03-03 12:03:06 -07:00
joevt
696bd6f316
mpc106: Remove pci_read and pci_write.
...
Because they are only called once and are small enough to include in read and write methods like they are in BanditHost.
2024-03-03 11:56:37 -07:00
joevt
7a3a661e2a
platinum: Allow reading swatch registers.
2024-03-03 11:47:03 -07:00
joevt
f0949d296d
platinum: Don't abort.
2024-03-03 11:46:40 -07:00
joevt
d2ebcb24b9
platinum: Use calculated fb_ptr for HW cursor.
2024-03-03 10:43:57 -07:00
joevt
644087b592
platinum: Fix fb_ptr calculation.
2024-03-03 10:43:40 -07:00
joevt
be2f5273d1
platinum: Init bank_base.
...
Because the constructor doesn't do it.
2024-03-03 10:43:25 -07:00
joevt
10053a8a1b
atirage: Rename variable.
...
To match other occurrences in the same file.
2024-03-02 20:49:25 -07:00
joevt
9cefaec49c
atirage: Spelling.
2024-03-02 20:44:39 -07:00
joevt
55b79c1518
atirage: Use register bit field names.
2024-03-02 20:44:08 -07:00
joevt
c2ab86d4ba
atirage: Do something for hw cursor invert pixels.
...
Try a 50% alpha blend with black.
2024-03-02 20:43:54 -07:00
joevt
0e5fcde1e9
atirage: Add CUR_HORZ_VERT_OFF name.
2024-03-02 17:27:45 -07:00
joevt
002cce886c
atirage: Indent.
2024-03-02 17:15:39 -07:00
joevt
151ea2ece4
atimach64defs: Add register bit fields.
2024-03-02 17:15:25 -07:00
joevt
568882a2ea
atimach64defs: Sort addresses in descending order.
2024-03-02 17:14:59 -07:00
joevt
f38d6d73f4
atimach64defs: Add more device IDs.
2024-03-02 17:08:31 -07:00
joevt
569893861d
heathrow: Don't set lat_timer.
...
It will be set by firmware.
2024-03-02 16:42:49 -07:00
joevt
e81ac6f61e
Add PERCH slot.
...
So you can connect a USB controller or whatever to it.
2024-03-02 16:02:19 -07:00
joevt
1e78512c95
Rename Curio and Mesh.
2024-03-02 11:12:45 -07:00
joevt
1b147151f0
videoctrl: Rename get_palette_color.
...
So it matches set_palette_color.
2024-03-02 08:59:02 -07:00
joevt
ad8a26616f
scsidevice: Add LUN field.
...
This may make it possible for multiple LUNs to be added to the same target ID.
For now just use LUN #0 .
2024-03-02 08:52:09 -07:00
joevt
8f28823217
scsi: Initialize cur_phase.
2024-03-02 08:51:45 -07:00
joevt
b509df78df
Don't allow vert_blank to be 0.
2024-03-02 08:37:44 -07:00
joevt
5876cc7e17
bandit: Fix indent.
2024-03-02 08:09:42 -07:00
joevt
15e132c824
cmake: Add header files in CMakeLists.txt.
...
So they will appear in Xcode project.
mkdir -p dingusppc/build-xcode
cd dingusppc/build-xcode
cmake -G Xcode ..
xcodebuild -configuration Release
2024-03-01 19:41:43 -07:00
joevt
2998796c2c
pci: Fix log message for PCI rom exceptions.
...
It should log device name, not just "PCIDevice".
2024-03-01 08:02:01 -07:00
joevt
3978d0754d
CD-ROM: Add max blocks check.
...
The code does not support more than 2^32 - 2 blocks because of this expression: static_cast<uint32_t>(this->size_blocks + 1)
2024-03-01 08:01:31 -07:00
joevt
655b9a17e1
psx: Set name of Psx memory controller.
...
For the logs.
2024-03-01 07:59:33 -07:00
joevt
84a694d4c2
nvram: Output nvram file name in error message.
...
So that you don't see identical messages "Could not restore NVRAM content from the given file."
Instead, one will mention nvram.bin and the other will mention pram.bin.
2024-03-01 07:59:19 -07:00
joevt
fe05b1de12
Fix compiler warnings.
...
Xcode build has compiler warnings involving loss of precision. Remove them by adding type casts. Check results in some cases for overflow.
2024-02-29 18:49:14 -07:00
joevt
18afe91a82
atirage: Use convert frame big-endian methods.
2024-02-26 14:46:31 +01:00
Maxim Poliakovski
b8d0ed39d9
atirage: fix FB pitch calculation.
2024-02-26 14:21:53 +01:00
dingusdev
2e3e65f3e7
Moving vid_enable_seq
...
Visual C complains about this being in the wrong place
2024-02-21 07:07:18 -07:00
dingusdev
fb9b6886fa
Add stdio for Windows serial
2024-02-20 18:05:11 -07:00
joevt
8baf722343
Spelling.
2024-02-20 01:53:32 +01:00
joevt
57d919e424
appleramdac: HW cursor fixes.
...
- Add mask so that hardware cursor cannot be drawn beyond the right edge of the frame buffer.
- Add invert pixels. Invert pixels are used in the I-beam cursor and the Watch cursor.
2024-02-20 01:00:50 +01:00
joevt
b0dc893a05
dma: Add name to dma classes.
...
For logging purposes, each DMA channel should have a name.
2024-02-19 15:30:20 +01:00
Maxim Poliakovski
f5bb484226
sc53c94: fix interrupt reporting.
2024-02-19 15:30:20 +01:00
Maxim Poliakovski
bc2714ab2a
platinum: handle non-DWORD register accesses.
2024-02-15 15:35:17 +01:00
joevt
8a800062dd
grandcentral: Add DMA channel enum.
2024-02-12 14:06:19 +01:00
Maxim Poliakovski
28e7a806b4
grandcentral: use MeshStub on machines without MESH.
2024-02-12 02:38:38 +01:00
Maxim Poliakovski
a0e56aa4cf
grandcentral: connect external SCSI HW.
2024-02-12 02:17:09 +01:00
Maxim Poliakovski
b3e3b73159
grandcentral: connect MESH HW.
2024-02-12 02:17:09 +01:00
Maxim Poliakovski
046452fc56
mesh: various improvements.
2024-02-12 02:17:09 +01:00
Maxim Poliakovski
e77b8785ff
grandcentral: wire SWIM3 DMA interrupt.
2024-02-12 02:01:01 +01:00
Maxim Poliakovski
061fc5a24d
hwinterrupt: remove deprecated SCSI0 & SCSI1.
2024-02-12 01:46:21 +01:00
Maxim Poliakovski
cb8c2cb450
Wire CONTROL interrupt.
2024-02-12 01:46:21 +01:00
Maxim Poliakovski
98d661eda1
Wire PLATINUM interrupt.
2024-02-12 01:46:21 +01:00
Maxim Poliakovski
8ddbc9c427
Wire SCSI_MESH interrupt.
2024-02-12 01:46:21 +01:00
Maxim Poliakovski
5902cd5c28
Wire SCSI_CURIO interrupt.
2024-02-12 01:46:21 +01:00
Maxim Poliakovski
ce2f6ddadd
grandcentral: cleanup interrupt acknowledgement.
2024-02-12 01:46:21 +01:00
Maxim Poliakovski
cdc5589bcf
hwinterrupt: new interrupt definitions (joevt's work).
2024-02-12 01:42:59 +01:00
Maxim Poliakovski
8d30fea63b
platinum: implement video emulation.
2024-02-11 22:59:43 +01:00
Maxim Poliakovski
7d06c5b37a
control: use RaDACal emulation from appleramdac.
2024-02-11 22:59:43 +01:00
Maxim Poliakovski
dd95468d74
New source for TNT RAMDAC emulation (DACula & RaDACal).
2024-02-11 22:59:43 +01:00
Maxim Poliakovski
478bd31dc7
dbdma.h: add missing include.
2024-02-11 22:59:43 +01:00
Maxim Poliakovski
44b1d34cc7
control: support interlaced modes.
2024-02-11 22:22:27 +01:00
Maxim Poliakovski
5f06be6226
control: implement HW cursor rendering.
2024-01-19 23:48:22 +01:00
Maxim Poliakovski
a68afbf79a
videoctrl: add one more cursor rendering callback.
2024-01-19 23:48:22 +01:00
Maxim Poliakovski
7432369162
display_sdl.cpp: improve formatting and add license header.
2024-01-19 09:48:54 +01:00
Maxim Poliakovski
43dc9ed88a
control: remove unused defines and variables.
2024-01-19 09:48:54 +01:00
Maxim Poliakovski
d413e4a278
control: incorporate recent HW knowledge.
2024-01-19 09:48:54 +01:00