From c8e7bfac9e05aff3a6f57722390cfde11f1e23e7 Mon Sep 17 00:00:00 2001 From: starfrost013 Date: Sun, 30 Mar 2025 02:38:59 +0100 Subject: [PATCH] make 2k and 9x live happily together, seems vtrace register bit 1 controls rowoffset shifting --- doc/nvidia_notes/status.xlsx | Bin 15813 -> 15983 bytes .../classes/nv3_class_00c_win95_gdi_text.c | 10 ++++++++++ src/video/nv/nv3/nv3_core.c | 17 +++++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/doc/nvidia_notes/status.xlsx b/doc/nvidia_notes/status.xlsx index d43765e803cd7105a9c392f5c3b8fe7889659bd2..6fc2aaa7411f99190fe376bd6114dfa499f86c48 100644 GIT binary patch delta 8245 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 Oj?WaNg!AP4Yy2Poifpt1 delta 8072 zcmZvBbxfSi8!awd92R#i?gffFi(7FoQd|oZTZ(%ri^CR*mc?C*ODPohrFe07=koO? zx5+Q}{bMqdIe8~fo;l}{IST0WuUbU|hgh4HXd@#aY@s6{;36O(_&Ra>xOzBRxw<-X z`8qq5y;*k6;=v2bse9^LgIW>NBBrP((ijz%!xkz6qjj5CP)dU{oHKQ&AFrSwkbP}r zg>mvq`dQ%P;i2f=^-u%bI5H$A_I1M#{06*I{?BKARK}7O#FxD?%9F2)3%?nHoy7TU z0!41_cYGN(9-w$v7zhqP}wITlO)rlg4lPH+2cQT zVRf3IlrLK*wPFqZJV1)e-EgO@x<5?M^l3N1)YPvTFl1(h z*riE9B^hNUwmMplW2>GfPq1bje^<}wwA zXaL>jAu-Jc>LI#LY0W=UFOWw?zL$sFI*25)itk5v;IaKuJ;w>_$ZxuPdIjv%RrpRi zS}%9}HEMi*bE-_B`Ar!=S zUL7|~eJa4hT(r7dXNo(UfadtS(UCiyz{YW80r54NZye5et`K74@MYAcT=X zzT=aDdH-WxHUysV%)E#r_6sVGWx}^I-pBw$CY$_=wy0c3^*ux}7-S z9`TvPsjiYooiCH`r_oodcPS9P3359JNf|!Tz5r-YKOgf(xEJ(Ejr0rO3x7ePV=!t; z8z-Ygb5#<_+;x0a>kFrA(^tzSu-uNxKJigyiG+TTp2Ch-ru<}`iQGKjpR4(T0FHrA z;OziC*0SS7V6`TRSJ#;hxz4McaJ1X6D=TKdqDl5D$3o77nX?I8Z#6XUaK{>6s z_h(!39Ce!D4?1OO<#P!%!Ap&O@OkN*DUVKC5Z^Zz%PLH){N14%GPysta2~I6`mXv8I~wFvsu+`GG2Y2J#j* z=ZMB%Z{bnT!1w%OuGD7=!+uLwl4`ANZV@CSZ&#x}>-NJ4^xqkHs#5YM**C&^f#e(M z!d7w~znj6aG;K(tzHby5^_fOadr_Ye^v!JUsVrO;YybT)T7|{w9!$;S-doma6-6&T2~^Tvfn-5CAugTCO%NxwW62k-B^#+{u%uzr!Hrl^lh&qn;+XqaVt zK8t+Icby(Bl{9*>lw5!Na0q&l(((m<88`?2cN1$MrSz5np1mIt>CbtA;EQKTq6Nbf z7I^T`R_>Go(TA=!D3$2DVI1fM=p=@WF|*}50MMR8QT*$V*Wa&EMPTV!{m z_p6M?9th51yUOH#h)iSdZ=zj{Cyth9AaMk54fU(_-fK?qlipTcUt0$0`q_~qsAz7h zf+!sCy05TZrTErMs9(2fvvX$j<$(S6vdoZ6BO-?lCF>BGxuIzV2bI1 zh&!D2W|Hj7lZ)Qd%?P##L0V+`lL0zCeQJ$Y=Zoll$a zv(gS~zWX;2fJ1}pLG9}xL~yk;M>|h6N#R_!ilP=&-$J;b!0w8E%VU~8WLXYy5$D1=-19O?8bYpbrLAE|W(qF(=xZT(C@Ru9v zI=J}>uZce`smMJwPW3Px#Pc2+FWCHseBtKBe{t&nDpQJ<3pkVqPp&c~Ab3HA_Tvv} zhm=^_nB>a37_Et=_EvS&ODmRn8taVJdGb-xJ@s{As=Jb-{XctpCO81y)%LsEp7D0w zKKpLz@)(+Lx0X*g{*=FYzPL}crPS~4OD(reDx!yb1gyGUE_^I0YxmZ}eaigQik4Gb zH2;erzI4=ht`}^q#3^2>YSgh4zEDt-60E$C4j^MQB3!s|t1PgYibFO=OsV6o=a|IV zN70?&V=E|$4^}qvHi8S(12sVuI>tTSK4}&PA;GpLNDKxGvGW<3*cuY}S}4kI>ADNn zr}j=xtTxTEym6~yxCbU;Gr$?OXduDw>F#MNbeGcF>JkQxwdMR0O1q$0%2BPN99q_I zB>XgdjhJD;J}0p@^|o|(&kqhzr&K;Y6ANL*zwj~g$5mU7To_O#rlrwgdSG4{r#fnV>eY*HyWk^X z%qrk?Oa+RnO!pSqXxL59=f;^ADKXI%Qtj(>vEFjJWpLtc_-s9tPQ`xlO%srcb1a(e z{4cTaJc`Mc>rrKj0aNdOZ&j2k$%^PDY}LB?ft;OQzesG$1cs&Hy+petdQKkchBn_Ge0A8U-@1#g)( zwHNPc9xw>^UakT=Ma8)J1HiQec5(nFhlAk#1d-)bNl!a2W|EzT$5v8F52irNqK{yG zHeYk)pn&QScH(wI6|VGou8bqYH@W6}9LlwC2A}< z6*3xTN27Z6#xQ9H)#&zyMN;n2N&;)lM*(+ty4q&bouPNc#5d%<7%h=AD=);-5`)`I z9zLUlIeb0}iud%yDf4$Xr^%T$!1V;*%Nqg9PuizP*N!u4oby+|MrYGTApHv4m@X-Z z>3k=Hrfy+EZzQ!cxi&0j#bbCa+>2c5rIRb{RU@2`#DOZm10fS?a+FOm<6mcp-A^ID zAMovvEXhX?Bo~WG|ULf5zbA<~&j1Qwd zp`(i;#P3?303Ts_eOTOK9Ilujb`cs70B=vw{8QxQRMUhIDXid1nN5TjJ)iQVlYn9v zmY@I+A(_RC%LXidp28Y_Zkg@KfO6;R?MhRjsb6EseGhj+O*vsi(od6%e!`-*^i4Q! zNCT1?uMST341EH@@ZT#|=lFJc97b(hgs!in4N&m5S9kN{Vve=qpHedmIxh;GUrgIei z%vB-K^|~ZCbaJT&(-02QW{t1XX4|Gs@mHc#DcDRUCDACv*HcFQYF3m_tY*g<8X5_# z>D`rT_^4pO4m24t6XRAHQdXcgVrUZ&LX)lx+h6vJF|u-H)=Wz4-8`jSJs=an;4VsS zfuxV>rR~+TsQWL`w$1s~4irdpPYMaEMw}ZyG2D-Kl1HSOcOVm=!f<9{PXOt$iTFM*yvs8x*`B5JU+AEdtk%C?-__utBQZrvsPBlyngGSt%_rhs7$`# z`Be>A(COB-x?eDoq@nC_#^j)}B1}j>Pp^iOftj$g8MSSw7$<+nR4N|*K9^fkhoH8D{EPI2rn;PRZE@#SQ$Goo=dQX<1Q^Jto&m>0r>oz9^Py)G znMwT+Rwj!u=Ysj<^Q+3&nL2C8LfHB(?C`UJ3R9209P4y<=wUOoWfNwvl$ZIhIu}PJTlN&WA&hXl$ z2FnmW(aM{K2UKGou8IlgCm-IEIFY#_OXTH}4NtI2Ol@gO+uI$M>iZb%oFSm-vjwhD z-80zjBd5`ZA=R%5j!&B(^yCeV)N)P-*ucufPumXjN{g#s+1GM8ciyVbJBUPVeF_VG z;$fC0o}F=tB;huA8#5{X5>J*5V_=B-i*!lS%ueD~qZVbqQcdZNd%(#aZ-*q6eeNGo zpc%!%D*6vKl4HBUs!}>)c~4m9i(!V;FN|ccC&bzqdPEGcU(}L7^fNoNrKp zM%6^FV8i(3(MMmQ@&mo9R`h-jB#bx3*If$^Yj^J-I~mI>z50j(SnEGebx)N&wD83d z*TWgZX$bgEnf?HLFbFefkm*ZqYD(HnhGLA`*FxaVvEiSGS!iaJDOw1m>M`jv^O;FA z@C0p(3sNK|89umpm8*#*trfhV(w z`ZqQm`>kcdT}EQD`hVYG`R#gopsjx) z#vY|_;sj`-q1A7K3g>6BHpnxGo^~?*5Fc!EF5lI!c6(gNq#zFGiA9hk#!5)7ENt;Cz1uu25)n4A`$FH(J z`iXXcQX37o;|Bxw9?&m#{8 zm#M5-sa0R!Izy1_A{QZUauU6WCpC@)zT;5|-%qw*U)Bg?q~*U0qOdy&_Lsl!A3!+? z&GkFwJnI~U&H7gEl}Cd7{|?5v$2c)zoD zf3>V$|4Pa=T!LLK9;Cqrq*CX#yp<|?xoykw2HcGms0)cv2i7QQ;Hwen!@lTOGRDOc zgz*tZY*61Y{XlsV>RCDHz0-XyIemXWm3^f(B+OqxhowcKjeYrb`C$U3V2>an`;sJ4bK-?nta=&PgP2J-fr+ozT*u=*Dxol$uLon&RfH*zBpuAB<{K z1g0D8W*u`?HwTfw4e7Sn_@*m)P8^BNJ-X8_6ei?yQyQ_wx%=fTFJ*^@l8`?}HB}+b zTBaW0qx$*vn@Ycpx%8d;aoMq7G=i1X-p_L1FA3u!zmVN(TR0}3aleU`u9S3gi3@yD zfCC%>opGRs)62-OdYjCW7P86_)L&1Ifn70xDn81l*Y8!-MX+=vGV(&)iAQGWe|j>p zLZ|#A>;?QS3M_dGCpNv)s3qjzuIfmLR#2TU(3&}z6LMWE=9SPy)QgR$4N0G&EPP*r zs-=8R;wOUJA6kbU->akA+&SPH@x>0xC$-MoWXRG&lF202c!h?Z(ioPRI%B~r;8qc9 zY^bMJ>4?N_eN~W2xQAOH*`m}~+jlCgtgd)M@lyY#ka)6LSH=s|*)n*Vx@?wO&~35Uim@dD5@s@Nf{i?3ZhhU;@in0wZ${*j{9Gk|J{GYwH^{5RyX@n)Sb%!Fg+iNS7Y5;T34c z{i4ah2oL%u=I`T}GnXtG*MIU?wcR(v+@oU9_+nRI^z#*Dq|dfNf8ibOC?W|Ca5#>l z74~`@zVypD#iMQ_#rOWf&#ddCcFhC6@0DlVBL6}aSO43gJN!wGDXF4*U#J2Ei<=3|p?p*ue7BqaTq`t7FgQY?}IL-yM%}M5uDBil{ zs3=zpF&o3+@(&Q_o#05JM3tT%{L3jPA%8mUjn?F@RaeSI9{BUlDA(f5CoB!6UVotp z`=X`-)Nqf~nIE7wy_LC8jFKFK1;Hy4;cb&R9B*ht_jKuIwK=CAn>#>(tBK77uvfe%EnikjiB1-1*Hiyi zmW}t*z}Df(&OF^GWwy6`T7sl(VG>v6vULvd5W03R`Tq?o!Tsxx%C$6t%!pu9l^!0_ z@FUbG*};0}+iGqZ_(#ZUIC59anyJ!~bKfgWP~BdK&_RO{l*EjAt4(9%1E@u8D&-1u zAz9n{B|v85qeW7hRod4rs{`&tI}TvBp0-qk5zo5}bMrz~d}cv0hY~3`LEM&7H(n86 zU85d;95!55O>Kp;JKDI!(E!>PkA9{!|U@6=qXz;V7unGCrfi{mYsTQ$B!fP5? zxJOeOyPKR6760+lXsrImGgn_>q@}Lh1FG&m;53r3wjz=4!ShOuPyj^J^XJp?-sWma zQb|t6nv)JB`kF)66 z^`pAq@B>KCr;q%PJE_J4&&hgI)TT8b%j8D6|KmUa$+@pqj?8_eFnbF;8f8RGONEbd3(kcq1{MSzY zUr;{&Gl(35CWc4xuS52~pyv`$jGgjd8UDZfIb?rNiWdV?{#VtSKUV_&nEwm9rThz; zdpgraph.win95_gdi_text.color_a = param; nv_log("Method Execution: GDI-A Color 0x%08x\n", nv3->pgraph.win95_gdi_text.color_a); break; + case NV3_W95TXT_B_CLIP_TOPLEFT: + nv3->pgraph.win95_gdi_text.clip_b.left = (param & 0xFFFF); + nv3->pgraph.win95_gdi_text.clip_b.top = ((param >> 16) & 0xFFFF); + nv_log("Method Execution: GDI-B Clip Left,Top %04x,%04x", nv3->pgraph.win95_gdi_text.clip_b.left, nv3->pgraph.win95_gdi_text.clip_b.top); + break; + case NV3_W95TXT_B_CLIP_BOTTOMRIGHT: + nv3->pgraph.win95_gdi_text.clip_b.bottom = (param & 0xFFFF); + nv3->pgraph.win95_gdi_text.clip_b.right = ((param >> 16) & 0xFFFF); + nv_log("Method Execution: GDI-B Clip Bottom,Right %04x,%04x", nv3->pgraph.win95_gdi_text.clip_b.left, nv3->pgraph.win95_gdi_text.clip_b.top); + break; /* Type B and C not implemented YET, as they are not used by NT GDI driver */ case NV3_W95TXT_D_CLIP_TOPLEFT: nv3->pgraph.win95_gdi_text.clip_d.left = (param & 0xFFFF); diff --git a/src/video/nv/nv3/nv3_core.c b/src/video/nv/nv3/nv3_core.c index 204efaaa2..a365cab62 100644 --- a/src/video/nv/nv3/nv3_core.c +++ b/src/video/nv/nv3/nv3_core.c @@ -502,7 +502,7 @@ void nv3_recalc_timings(svga_t* svga) uint32_t pixel_mode = svga->crtc[NV3_CRTC_REGISTER_PIXELMODE] & 0x03; svga->ma_latch += (svga->crtc[NV3_CRTC_REGISTER_RPC0] & 0x1F) << 16; - + // should these actually use separate values? // i don't we should force the top 2 bits to 1... @@ -532,8 +532,18 @@ void nv3_recalc_timings(svga_t* svga) svga->render = svga_render_8bpp_highres; break; case NV3_CRTC_REGISTER_PIXELMODE_16BPP: + /* This is some sketchy shit that is an attempt at an educated guess + at pixel clock differences between 9x and NT only in 16bpp. If there is ever an error on 9x with "interlaced" looking graphics, this is what's causing it */ + if ((svga->crtc[NV3_CRTC_REGISTER_VRETRACESTART] >> 1) & 0x01) + { + svga->rowoffset += (svga->crtc[NV3_CRTC_REGISTER_RPC0] & 0xE0) << 2; + } + else + { + svga->rowoffset += (svga->crtc[NV3_CRTC_REGISTER_RPC0] & 0xE0) << 3; + } + /* sometimes it really renders in 15bpp, so you need to do this */ - svga->rowoffset += (svga->crtc[NV3_CRTC_REGISTER_RPC0] & 0xE0) << 2; if ((nv3->pramdac.general_control >> NV3_PRAMDAC_GENERAL_CONTROL_565_MODE) & 0x01) { svga->bpp = 16; @@ -545,11 +555,14 @@ void nv3_recalc_timings(svga_t* svga) svga->bpp = 15; svga->lowres = 0; svga->render = svga_render_15bpp_highres; + + // fixes win2000, but breaks 9x?! } break; case NV3_CRTC_REGISTER_PIXELMODE_32BPP: svga->rowoffset += (svga->crtc[NV3_CRTC_REGISTER_RPC0] & 0xE0) << 3; + svga->bpp = 32; svga->lowres = 0; svga->render = svga_render_32bpp_highres;