From 2829669740d7e61689317de86fb9735d8f123be1 Mon Sep 17 00:00:00 2001 From: starfrost013 Date: Sat, 29 Mar 2025 16:23:18 +0000 Subject: [PATCH] Redirect all PRMCIO/PRMVIO writes to SVGA subsystem, not just a few random ones. --- doc/nvidia_notes/status.xlsx | Bin 15648 -> 15813 bytes src/include/86box/nv/vid_nv3.h | 7 ++++--- src/video/nv/nv3/nv3_core.c | 10 +++------- src/video/nv/nv3/subsystems/nv3_pmc.c | 4 ++-- src/video/nv/nv3/subsystems/nv3_ptimer.c | 2 +- src/video/nv/nv3/subsystems/nv3_user.c | 2 +- 6 files changed, 11 insertions(+), 14 deletions(-) diff --git a/doc/nvidia_notes/status.xlsx b/doc/nvidia_notes/status.xlsx index c050432b51bc3ae5023ac7204abcea8ad1e97540..d43765e803cd7105a9c392f5c3b8fe7889659bd2 100644 GIT binary patch delta 6801 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 diff --git a/src/include/86box/nv/vid_nv3.h b/src/include/86box/nv/vid_nv3.h index 40aa94ce2..2efca64b3 100644 --- a/src/include/86box/nv/vid_nv3.h +++ b/src/include/86box/nv/vid_nv3.h @@ -14,7 +14,7 @@ * Also check the doc folder for some more notres * * vid_nv3.h: NV3 Architecture Hardware Reference (open-source) - * Last updated: 22 March 2025 (STILL WORKING ON IT!!!) + * Last updated: 26 March 2025 (STILL WORKING ON IT!!!) * * Authors: Connor Hyde * @@ -671,9 +671,10 @@ extern const device_config_t nv3_config[]; #define NV3_PGRAPH_REGISTER_END 0x401FFF // end of pgraph registers #define NV3_PGRAPH_REAL_END 0x5C1FFF +// PRMCIO is redirected to SVGA subsystem #define NV3_PRMCIO_START 0x601000 -// Following four are CRTC+I2C access registers -// and get redirected to VGA + + #define NV3_PRMCIO_CRTC_REGISTER_CUR_INDEX_MONO 0x6013B4 // Current CRTC Register Index - Monochrome #define NV3_PRMCIO_CRTC_REGISTER_CUR_MONO 0x6013B5 // Currently Selected CRTC Register - Monochrome #define NV3_PRMCIO_CRTC_REGISTER_CUR_INDEX_COLOR 0x6013D4 // Current CRTC Register Index - Colour diff --git a/src/video/nv/nv3/nv3_core.c b/src/video/nv/nv3/nv3_core.c index d9ca57ff0..f8e98689d 100644 --- a/src/video/nv/nv3/nv3_core.c +++ b/src/video/nv/nv3/nv3_core.c @@ -41,13 +41,9 @@ void nv3_svga_out(uint16_t addr, uint8_t val, void* priv); bool nv3_is_svga_redirect_address(uint32_t addr) { - return (addr >= NV3_PRMVIO_START - && addr <= NV3_PRMVIO_END - || addr == NV3_PRMCIO_CRTC_REGISTER_CUR_COLOR - || addr == NV3_PRMCIO_CRTC_REGISTER_CUR_INDEX_COLOR - || addr == NV3_PRMCIO_CRTC_REGISTER_CUR_MONO - || addr == NV3_PRMCIO_CRTC_REGISTER_CUR_INDEX_MONO - || (addr >= NV3_VGA_DAC_START && addr <= NV3_VGA_DAC_END)); + return (addr >= NV3_PRMVIO_START && addr <= NV3_PRMVIO_END) // VGA + || (addr >= NV3_PRMCIO_START && addr <= NV3_PRMCIO_END) // CRTC + || (addr >= NV3_VGA_DAC_START && addr <= NV3_VGA_DAC_END); // Legacy RAMDAC support(?) } // All MMIO regs are 32-bit i believe internally diff --git a/src/video/nv/nv3/subsystems/nv3_pmc.c b/src/video/nv/nv3/subsystems/nv3_pmc.c index 24f0ad44a..de1c21f24 100644 --- a/src/video/nv/nv3/subsystems/nv3_pmc.c +++ b/src/video/nv/nv3/subsystems/nv3_pmc.c @@ -88,11 +88,11 @@ uint32_t nv3_pmc_handle_interrupts(bool send_now) if (nv3->pfifo.interrupt_status & nv3->pfifo.interrupt_enable) new_intr_value |= (NV3_PMC_INTERRUPT_PFIFO_PENDING << NV3_PMC_INTERRUPT_PFIFO); - // PFB interrupt is VBLANK PGRAPH interrupt...what nvidia...clean this up once we verify it + // PFB interrupt is VBLANK PGRAPH interrupt...what nvidia... if (nv3->pgraph.interrupt_status_0 & (1 << 8) && nv3->pgraph.interrupt_enable_0 & (1 << 8)) new_intr_value |= (NV3_PMC_INTERRUPT_PFB_PENDING << NV3_PMC_INTERRUPT_PFB); - + if (nv3->pgraph.interrupt_status_0 & ~(1 << 8) && nv3->pgraph.interrupt_enable_0 & ~(1 << 8)) // otherwise PGRAPH-0 interurpt new_intr_value |= (NV3_PMC_INTERRUPT_PGRAPH0_PENDING << NV3_PMC_INTERRUPT_PGRAPH0); diff --git a/src/video/nv/nv3/subsystems/nv3_ptimer.c b/src/video/nv/nv3/subsystems/nv3_ptimer.c index b5c278387..1e3347beb 100644 --- a/src/video/nv/nv3/subsystems/nv3_ptimer.c +++ b/src/video/nv/nv3/subsystems/nv3_ptimer.c @@ -84,7 +84,7 @@ void nv3_ptimer_tick(double real_time) // Check if the alarm has actually triggered... if (nv3->ptimer.time >= nv3->ptimer.alarm) { - nv_log("PTIMER alarm interrupt fired because we reached TIME value 0x%08x\n", nv3->ptimer.alarm); + nv_log("PTIMER alarm interrupt fired (if interrupts enabled) because we reached TIME value 0x%08x\n", nv3->ptimer.alarm); nv3_ptimer_interrupt(NV3_PTIMER_INTR_ALARM); } } diff --git a/src/video/nv/nv3/subsystems/nv3_user.c b/src/video/nv/nv3/subsystems/nv3_user.c index a6c9a588c..cb2c96fb4 100644 --- a/src/video/nv/nv3/subsystems/nv3_user.c +++ b/src/video/nv/nv3/subsystems/nv3_user.c @@ -37,7 +37,7 @@ uint32_t nv3_user_read(uint32_t address) //todo: print out the subchannel uint8_t method_offset = (address & 0x1FFC); -#ifndef RELEASE_BUILD +#ifdef ENABLE_NV_LOG_ULTRA uint8_t channel = (address - NV3_USER_START) / 0x10000; uint8_t subchannel = ((address - NV3_USER_START)) / 0x2000 % NV3_DMA_SUBCHANNELS_PER_CHANNEL;