Commit Graph

208 Commits

Author SHA1 Message Date
joevt
6c093e141b Add missing override statements. 2024-11-15 10:03:57 -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
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
Rairii
625e474c03 atirage: Force redraw if pixel format changes. 2024-11-08 08:00:43 -07:00
joevt
116a65ce77 ati: Frame refresh if CRTC_ENABLE changes. 2024-11-08 07:38:07 -07:00
roytam1
83afae5625 sdl: handle SDL_WINDOWEVENT_EXPOSED event to fix redrawing issue 2024-07-29 23:27:05 +08: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
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
joevt
fdf8543c7e displayid: Update some display mode info. 2024-05-05 08:44:40 -07:00
joevt
3483bebdb4 ati: Fix ver_blank calculation. 2024-04-25 06:52:00 -07:00
joevt
721c70166c control: Fix 1280x960 and 1280x1024 15bpp.
Change the fb_ptr. This also affects the hardware cursor.
Tested with 4MB of VRAM.
2024-04-24 06:48:41 -07:00
joevt
6adba32238 atirage: Update VBLANK bit.
It should not remain set.
2024-04-23 21:35:47 -07:00
joevt
d96da6434f atirage: Redraw framebuffer if DAC or fb changes. 2024-04-23 21:35:34 -07:00
joevt
5f37421ceb atirage: Add ability to read from PCI option rom.
Usually there is not PCI option rom if the chip is built-in to the motherboard such as in the Beige G3.
2024-04-23 08:01:54 -07:00
dingusdev
6f64e729c8 Tweak logging value for compiling 2024-04-23 07:59:23 -07:00
joevt
288e088f8a atirage: Fix hardware cursor update.
Switching from Watch to Arrow cursor at vertical position zero (top of the screen) would sometimes cut off the top half of the Arrow cursor. The following changes fix this:

Use the new cursor_dirty flag to signal when the cursor should be updated. This reduces the number of cursor updates and doesn't depend on registers being accessed in a specific order.

Set the cursor_dirty flag for any change that should cause the hardware cursor to be updated:
- CUR_CLR0, CUR_CLR1: Cursor color changes. We don't check if the colors actually changed (all cursors are usually black and white). Rather, writes to these registers usually means the cursor bytes have changed or will change.
- CUR_OFFSET: Offset to cursor bytes.
- CUR_VERT_OFF: First vertical line of cursor to draw.
Other changes that don't require the cursor to be updated:
- CUR_HORZ_OFF: Horizontal offset of cursor position. The cursor is unchanged - just need to adjust the drawing position.
- CUR_HORZ_VERT_POSN: The cursor is unchanged - only the drawing position is changed.
The only thing that could change the cursor that we don't check is a change to the cursor bytes.
2024-04-23 07:58:20 -07:00
joevt
3797fdbf1b atirage: Move fb_pitch calculation. 2024-04-23 07:55:51 -07:00
joevt
3036f4676d Use default window size in constructor.
The window size should be changed later by the mon_id property.
2024-04-23 07:27:52 -07:00
joevt
e14b6677b2 displayid: Fix non-extended sense codes.
Sense codes for displays like the 12 inch RGB display (512x384) weren't working since they had the extended part set to 0xff.
Related to issues #25.
Also added some descriptive information and sizes which may be used for UI purposes such as creating a menu of displays to choose from. The sizes may be used to set the default window size for the display.
2024-04-23 06:52:38 -07:00
joevt
288d97f24c atimach64gx: Add missing WRITE_VALUE_AND_LOG.
This commit fixes conflict resolution mistakes in the following commits:
"atimach64gx: Let crtc_update calculate fb_ptr."
"atimach64gx: Redraw only when necessary."

"atimach64gx: Log unhandled overlay registers." was mistakenly included in "atimach64gx: Let crtc_update calculate fb_ptr.". The OVR_ registers were included because they may be needed for 2D acceleration in System 7.5.3 and later.
2024-04-23 06:43:08 -07:00
joevt
755dd7f60a atimach64gx: Redraw only when necessary. 2024-04-22 20:13:37 -07:00
joevt
e6d669d187 atimach64gx: Check end of regs region.
There's only up to 256 regs.
2024-04-22 20:02:38 -07:00
joevt
0d1a2d3010 atimach64gx: Cleanup. 2024-04-22 20:00:54 -07:00
joevt
51af94f12d atimach64gx: Add properties. 2024-04-22 20:00:38 -07:00
joevt
2c79171be6 atimach64gx: Fix CONFIG_CNTL and MM_REGS_OFFSET.
Init them to defaults.
Make CONFIG_CNTL 8 bytes so unaligned read/write is easier.
Write changes to CONFIG_CNTL even if offset + size is > 4.
Log aperture change only if first byte (LSB) of CONFIG_CNTL is written. The driver might only write to the 2 most significant bytes which won't affect aperture size.
Offset and size are applied to the destination, not to source value, so we shouldn't use extract_bits when logging value.
Use ATI bitfield enums in switch statement.
2024-04-22 07:48:00 -07:00
joevt
e91432f939 atimach64gx: Fix interrupts.
Required for moving the mouse.
2024-04-22 07:33:08 -07:00
joevt
ea7b9db078 atimach64gx: Reset comp_index to 0. 2024-04-22 07:32:51 -07:00
joevt
5f6b924004 appleramdac: Cursor lo-byte position delay option. 2024-04-22 14:51:16 +02:00
Maxim Poliakovski
e5282f9852 Initial Taos emulation. 2024-04-22 00:15:29 +02:00
Maxim Poliakovski
b2c342e453 atimach64gx: break long lines. 2024-04-21 23:16:35 +02:00
joevt
ae5a1331b6 atimach64gx: Remove abort for not loaded ROM.
Allows emulating non-ROM variant of a PCI card by just removing the ROM file.
2024-04-21 13:56:42 -07:00
joevt
a0052b7b9a appleramdac: Use local variable during loop. 2024-04-21 13:55:44 -07:00
joevt
503ee92528 appleramdac: Always change cursor position.
Tests in Open Firmware confirm that writing to CURSOR_POS_LO will change the cursor position even if a write to CURSOR_POS_HI doesn't happen.
2024-04-21 13:41:06 -07:00
joevt
382246905b videoctrl: Init palette to black. 2024-04-21 06:06:13 -07:00
Maxim Poliakovski
9a70c3bdb0
Remove bogus atirage128.cpp 2024-04-15 17:17:04 +02:00
dingusdev
103ef6169c Continued expanding zdocs 2024-04-15 07:52:09 -07:00
Maxim Poliakovski
96efc99a00 control: clean up register bit definitions. 2024-04-11 17:50:50 +02:00
Maxim Poliakovski
c22843f238 appleramdac: vendor ID for AT&T fabbed RAMDACs. 2024-04-11 17:10:44 +02:00
joevt
8cc5838efe control: More register bits. 2024-04-10 20:48:12 -07:00
joevt
c6ea3a374e control: Fix PAL/NTSC interlaced display. 2024-04-10 07:32:35 -07:00
Maxim Poliakovski
073b8fd981 atimach64defs: add ATI_DP_CHAIN_MSK register definition. 2024-04-07 18:48:52 +02:00
joevt
9af1b1a720 control: Narrow the scope of local variable. 2024-04-01 22:12:20 -07:00
joevt
ca9657baf1 control: Update little-endian error message. 2024-04-01 22:12:05 -07:00
joevt
3e347746f9 control: Don't abort when setting little endian.
If this gets set accidentally, (such as while playing in Open Firmware), allow the user to change it back.
2024-04-01 22:11:35 -07:00