From 437ddc96fc0a14308586fbb390c934c1c405e284 Mon Sep 17 00:00:00 2001 From: Shwartsman Date: Wed, 24 Jan 2024 17:04:21 +0200 Subject: [PATCH] Addressing Black screen in Descent II: Destination Quartzon 3dfx OEM with Voodoo #238 --- bochs/iodev/display/voodoo.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bochs/iodev/display/voodoo.cc b/bochs/iodev/display/voodoo.cc index f16b3e333..2b6ab77fa 100644 --- a/bochs/iodev/display/voodoo.cc +++ b/bochs/iodev/display/voodoo.cc @@ -1004,9 +1004,12 @@ void bx_voodoo_1_2_c::after_restore_state(void) bool bx_voodoo_1_2_c::mem_read_handler(bx_phy_address addr, unsigned len, void *data, void *param) { - Bit32u *data_ptr = (Bit32u*)data; + Bit32u val = voodoo_r((addr>>2) & 0x3FFFFF); + if (len == 4) + *(Bit32u*)data = val; + else if (len == 1) + *(Bit8u*)data = val >> ((addr & 3) * 8); - *data_ptr = voodoo_r((addr>>2) & 0x3FFFFF); return 1; }