Commit Graph

987 Commits

Author SHA1 Message Date
Mihai Parparita
372b9cae7a atapibasedevice: fix unaligned memory access
Both cmd_pkt and data_buf class members are cast to a uint16_t pointer,
so we need to make sure they are properly aligned, otherwise it is
undefined behavior.
2024-08-15 22:32:46 -07:00
Maxim Poliakovski
20b2fb1bef viacuda: refactor emulation of the VIA registers.
Take the DDRA and DDRB registers into account as well because
there is software that tries to change state of the pins configured
as inputs.
This commit fixes Cuda for Rhapsody.
2024-08-04 21:43:06 +02:00
Maxim Poliakovski
f096eef66d viacuda.h: cosmetic improvements. 2024-08-04 21:43:06 +02:00
roytam1
83afae5625 sdl: handle SDL_WINDOWEVENT_EXPOSED event to fix redrawing issue 2024-07-29 23:27:05 +08:00
Rairii
4d7c520f18 adbmouse: only send first two bytes in standard/classic protocol as per spec
Fixes any mouse driver that only supports the classic protocol and expects register 0 reads to return two bytes.
2024-07-29 11:37:54 +01:00
Mihai Parparita
9b49603c72 memctrl: keep address_map sorted by address
We do a linear scan in find_range (which is called on all TLB misses) to
find the entries. The largest and most frequently hit entry is the
system memory (which starts at 0). By ensuring that it's the first entry
in the list, we end up only doing one iteration through the loop.
2024-07-28 13:27:48 -07:00
dingusdev
f192d11758
Merge pull request #102 from mihaip/upstream-dev_id
atabasedevice: Set dev_id.
2024-07-27 14:40:16 -07:00
Mihai Parparita
dab9334c3a Pass through draw_fb optimization metadata to Display class
The JS implementation does content hashing to not blit unchanged
framebuffer contents (see mihaip/dingusppc@171ff2d407).
However, that is not necessary for the ATI adapters that already track
this and only set draw_fb if the framebuffer has actually changed.

Pass through a fb_known_to_be_changed for these cases, and also add an
optional update_skipped method (since the JS still wants to know when
the last logical screen update was).
2024-07-27 11:38:59 -07:00
joevt
7fdfd6109f atabasedevice: Set dev_id.
Extracted from @Wack0's Wack0/dingusppc-nt@529991bd78

Co-authored-by: Rairii <2650838+Wack0@users.noreply.github.com>
2024-07-27 09:10:28 -07:00
dingusdev
7d6e87a0d3 Add stub for setting power messages 2024-07-26 07:31:31 -07:00
Maxim Poliakovski
8d6f77ea71 mesh: implement EnaParityCheck and DisParityCheck commands. 2024-07-25 22:18:43 +02:00
Maxim Poliakovski
19ecc4f945 mesh: fix writes to BusStatus0 & BusStatus1 registers. 2024-07-24 17:50:02 +02:00
Maxim Poliakovski
211f8adc0e Improve MACE stub. 2024-07-23 01:39:15 +02:00
Maxim Poliakovski
babd8d974f dbdma: fix cmd.resCount update. 2024-07-22 17:45:48 +02:00
Maxim Poliakovski
9fc5bbb951 sc53c94: fix interrupt status for CMD_MSG_ACCEPTED. 2024-07-19 03:38:55 +02:00
Maxim Poliakovski
3fe6e3c09e grandcentral: more elegant MeshStub with less checks. 2024-07-19 01:31:36 +02:00
Maxim Poliakovski
289a14dc7a scsidevice: release REQ before MESSAGE_IN phase. 2024-07-15 07:15:49 +02:00
Maxim Poliakovski
ba9fcd100d mesh: extend stub to a full implementation. 2024-07-15 03:34:43 +02:00
Maxim Poliakovski
889dc32a0a New base class for SCSI host controllers. 2024-07-15 03:28:45 +02:00
Maxim Poliakovski
f13f4e0023 grandcentral: break long lines. 2024-07-15 02:56:24 +02:00
Maxim Poliakovski
4a425c4ecf dbdma: introduce new DMA API. 2024-07-15 02:09:15 +02:00
Maxim Poliakovski
293e869acb dbdma: break long lines. 2024-07-15 02:09:15 +02:00
Maxim Poliakovski
f3d7cd9dd7 cdromdrive: add support for raw CD images. 2024-07-15 01:48:46 +02:00
Maxim Poliakovski
fd5498e16b blockstoragedevice: add support for raw images.
Raw images contain supplementary information like synchronization fields,
correction codes etc. that needs to be ignored/discarded when
reading/writing user data.
This commit establish a basic architecture for exchanging user data
between a virtual device and a raw image.
2024-07-15 01:48:46 +02:00
Maxim Poliakovski
55f91c5d3f scsicdrom: use READ_TOC implementation from cdromdrive.cpp 2024-07-15 01:28:42 +02:00
Maxim Poliakovski
0831182e39 scsihd: remove duplicated code. 2024-07-14 23:33:43 +02:00
Maxim Poliakovski
26153ca8ea scsihd: use ScsiError contants wherever applicable. 2024-07-14 23:12:53 +02:00
Maxim Poliakovski
7855770ca7 Use ScsiError constants instead of magic numbers. 2024-07-14 17:22:31 +02:00
Maxim Poliakovski
a81156c3e3 cdromdrive: convert MSF values to BCD. 2024-07-11 21:27:38 +02:00
Maxim Poliakovski
11bb10b44b Taos: cleanup GPIO pins. 2024-07-11 02:44:40 +02:00
Maxim Poliakovski
378965cc3d Taos: properly handle color mode changes. 2024-07-11 02:44:40 +02:00
Maxim Poliakovski
5eaff7a8ce MPC106: break long lines. 2024-06-28 19:52:22 +02:00
Maxim Poliakovski
9d44ac0901 mpc106: fix includes. 2024-06-25 16:53:52 +02:00
dingusdev
606c9dd9a8 More compiler warning fixes 2024-06-24 19:40:20 -07:00
kth5
742662e4fc Fix missing std::find_if and others with GCC 14.1.1 2024-06-24 23:41:55 +02:00
dingusdev
d3096ebaac Fixing compiler warnings, pt. 1 2024-06-21 08:01:21 -07:00
dingusdev
a95b06f703 Minor code clean-up 2024-05-08 07:07:32 -07:00
joevt
226c097b81 escc: Update RR0 if no character is available.
The RR0_RX_CHARACTER_AVAILABLE bit is cleared after the character is read in receive_byte, but clear it anyway in read_reg when there's no character available just in case a character that was available somehow becomes unavailable.
2024-05-07 06:45:01 -07:00
Maxim Poliakovski
971f6d79be scsicdrom: reduce code duplication. 2024-05-07 08:37:52 +02:00
Maxim Poliakovski
ed67ab81a3 scsicdrom: switch off info log in INQUIRY. 2024-05-07 08:37:52 +02:00
Maxim Poliakovski
07304781ea scsicdrom: improve MODE_SELECT_6 stub. 2024-05-07 08:37:52 +02:00
joevt
941a405cf8 escc: Implement RR8 and WR8.
Normally, the Port_B_Data or Port_A_Data address is used to directly access RR8 or WR8, but setting the register pointer in Port_B_Cmd or Port_A_Cmd to RR8/WR8 is another option.
Update write_regs[WR8] and read_regs[RR8] for possible debugging purposes.
2024-05-06 21:11:36 -07:00
joevt
b60d3061b7 escc: WR9 fixes.
Update write_regs[WR9] even though most or all of the bits are in master_int_cntrl.
Fix hardware reset for WR9. It's supposed to leave WR9_NO_VECTOR | WR9_VECTOR_INCLUDES_STATUS unchanged.
Fix channel reset for WR9. It's supposed to clear WR9_INTERRUPT_MASKING_WITHOUT_INTACK.
2024-05-06 21:11:21 -07:00
joevt
82e22174d6 escc: Set RR1 All Sent flag.
Helps booting Mac OS 8.1, etc.
2024-05-06 20:49:59 -07:00
joevt
cf9811d03a escc: Read ch_a is missing register pointer reset. 2024-05-06 20:37:22 -07:00
joevt
19f06fb3a2 escc: Init or reset values in constructor.
Constructor should set all values to something so they are not random.
2024-05-06 07:28:04 -07:00
joevt
5710758dd7 escc: Add z85c30 register names. 2024-05-06 07:27:47 -07:00
joevt
181e1d2e46 escc: Add Channel Enhancement registers. 2024-05-06 07:23:05 -07:00
joevt
59fba285b5 adbmouse: Add tablet and more bits and buttons.
Add absolute coordinates for tablets. Absolute coordinates is relative to window so it can't work for multiple displays? Doesn't work for single display without mouse driver modification.
Add arbitrary number of buttons. Previously, only one mouse button was supported.
Add arbitrary number of bits. Previously, only 7 bits per axis was supported which is good enough for relative movement but not absolute movement.
2024-05-06 06:49:15 -07:00
joevt
fdf8543c7e displayid: Update some display mode info. 2024-05-05 08:44:40 -07:00