From 2c568d9bef4f64c9821c30dcb6727cceb73a8413 Mon Sep 17 00:00:00 2001 From: goyuken Date: Tue, 7 Jan 2014 01:52:00 +0000 Subject: [PATCH] quicknes: add PRGROM and CHRROM domains (from the cart), and set corecomm and board information correctly --- .../Consoles/Nintendo/NES/Core.cs | 2 + .../Consoles/Nintendo/QuickNES/LibQuickNES.cs | 8 ++++ .../Consoles/Nintendo/QuickNES/QuickNES.cs | 9 +++- output/dll/libquicknes.dll | Bin 454842 -> 455387 bytes quicknes/bizinterface.cpp | 39 ++++++++++++++++++ 5 files changed, 57 insertions(+), 1 deletion(-) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Core.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Core.cs index c566479896..fbddc1e881 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Core.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Core.cs @@ -188,6 +188,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES case "Famicom": apu = new APU(this, apu, false); ppu.region = PPU.Region.NTSC; + CoreComm.VsyncNum = 39375000; + CoreComm.VsyncDen = 655171; cpuclockrate = 1789773; cpu_sequence = cpu_sequence_NTSC; break; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/LibQuickNES.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/LibQuickNES.cs index 79d83b72b1..6449bdb124 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/LibQuickNES.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/LibQuickNES.cs @@ -208,6 +208,14 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES /// [DllImport(dllname, CallingConvention = CallingConvention.Cdecl)] public static extern void qn_poke_prgbus(IntPtr e, int addr, byte val); + /// + /// get the mapper that's loaded + /// + /// Context + /// recieves mapper number + /// mapper name + [DllImport(dllname, CallingConvention = CallingConvention.Cdecl)] + public static extern IntPtr qn_get_mapper(IntPtr e, ref int number); /// /// handle "string error" as returned by some quicknes functions diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.cs index 623e9ce698..cdfd1d5fe9 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.cs @@ -64,6 +64,13 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES InitVideo(); InitAudio(); InitMemoryDomains(); + + int mapper = 0; + string mappername = Marshal.PtrToStringAnsi(LibQuickNES.qn_get_mapper(Context, ref mapper)); + Console.WriteLine("QuickNES: Booted with Mapper #{0} \"{1}\"", mapper, mappername); + BoardName = mappername; + CoreComm.VsyncNum = 39375000; + CoreComm.VsyncDen = 655171; } catch { @@ -153,7 +160,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES public string SystemId { get { return "NES"; } } public bool DeterministicEmulation { get { return true; } } - public string BoardName { get { return null; } } // TODO + public string BoardName { get; private set; } #region saveram diff --git a/output/dll/libquicknes.dll b/output/dll/libquicknes.dll index fa768bfa871719c0ccaeade12660656598c5a2ec..5b8ef0eb802350fd88c9209f20527592acb1749b 100644 GIT binary patch delta 54790 zcmce<3tUvi`#-*C&RJLm0R;gO5fK#?aoJt&unS6xiMLWCZ(*95(t1OqGC@J*rea4O zR4ObqGBXTw@ltA%VBRoIO-(7y7DYuvMFsZ%p1t6Te!jo&>;L46fbig z4n^fmSCB{!16>ns$N+~c1Y|W>_)oG`97}p}+r>rrcc-`o|Lzh`5D$mwZV-A)B@!Rt zveE}c&AI#kNhB3gNmZ^EJV}M%%aGpdPcdGICRMrONKt6TWIu^9PQEr$u3z7 zePtD~z5=T6;wE(qHF0 zTQ#X4YLZMn{;a~l13$?mz>H?qiixr=r28LYs;m=n`a|3xQ@WkL)Y4c> zb*wJ&nye3*eY@1DO;3UJIWLB``-GI9D?QiFgCqOTivK#iMMBSt;~cknW&Z{TvA(jA zth)%b>!utn1|twiul-H*b@CTp63;k$lVhjE2hQVPeeV>J{1NM$aK4=${{Hav{bPc!TtAs{C-^2p zGW}A#Zvy!GVP?%sxxQ&=iAmL4A8clu%F+6sr^F(c&&iUi(zuRkgy@fpzqoB7-p9qc z?kC9XW2FN+5kiuG5eIc%NKPCnE$?h2?HP9;!@GDNW-vxr#zwfH853c7nH49yS*-K+ zbn~lcqwO?)(i?{=Y*~S6_xe=q-fc5E)+GMYttIubo?VT8 zB7ODO8Zp~jJEsMur9So?iMwBVuzNk%)>3KC`qKS9ob1TKou#Mb!-(VD?}%htUV5!3 z8zY%(X+Px!&TFTuajcL6B>Em_B=GKe$fD!vF7^ltAV6b+l8J4Jcr-}e{@WU?=tEft z_0vwU$(?yu^a%EE8_u{YU;X1uab$3p_Cqa7#GS=>tqF|7Y9dnX&Gx5qeZKU zRI#KqJ#sv0``s2cmKB^|y{K2mb+Oc0eB5AYRZCN5^L7 zFWN^SF`G(9#lA$y<4;TT2k|!Ke!logyhr%&`KD#vgov>zQ&?min#r57tbZ`eI4l4w z*(@g8lrP?m_aIC2OWO_GOuR0yHM!~dtm`qSFdsuAsNLNk$eR}6{NYjg&~ilHw0 z5MWD;UB*v3ly#VKyMdck_cVZk?}(ko#(7(e_wO

wwKl2t0R0Ts+pbrO#hYFWoeD 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 JVrqWm{{Ryw!ZQE> delta 54744 zcmce<3tUvy*Ec?ApEEEjA_^iRBIu~7L^A^n0}KNwDk`StH6_I~!?aNg%}NFH#!bVH zwY?S=nw6S{IcSy`D&!^cl6gz5Ob129J1Q{$?>=V+NA&l;&;Nbj=i%dGuf1-2?X}mw zoIPjo?7wYx{?#Tg)AzT*2VYj45)>I83dKc*ONS;L@mA=0h2q50FZ9HB?9wysxzeSz zory=_(!e%iJQv$IH5_b+EA(PE*R4wwYED0Kij?Azx5tl78>>)cj07Ve{A831#q*r6 z`^CLXR!}JRqxf5NA>G|e3DAom;h$oIIE-}WHi~ob`+IRc=`5}zUM=5#ee#rXXfzNK z0ZN6UJ<9Ec_lb$~Id_35N|lQ8Tr+5jQbElM>u(ptBq5GuI;Jmm=8Q4mP#$SfX*O@ub{2X(Zptg3rApWZi4!L<==5=Mf2s`g@5a(5@pwbAg z?p>8*ww3={Qe^yFjCE<#YCX7v!0X6V`q@=hoEN9L_>e;tVvb9HlJci`#${}%@=v13 zE9J_s=a_TiJ)q)R$`#$nF_+A%49<7r9aOSMHh!p2$-ANdaWhX3}y{#i+@omP%@k~E2gO0lH+H^bX99od{$hk z3T-tH2JFr{nqzH=msDLz`Sn7NMx6w5=A>w7x`vE9S@=g&Uye-qUA*J|IgB& zA9Vr-64a`Jth)%b_u3pY21AR&>VHC1d#H)e39+w7U$XId;in#69QpK^xUqRG8G1~- z-uzSY?@@6<3k}IRT4-s}h9jSqizhq-$gFblzUQdHoy&>h&jj^|Q%$X~_otuw&t$d6 z+MH37)hXblo=Z}X0Nq-9M3y|4tImKYvS@(yvYjl~5Z#f&#FiO^EI%Y3 zXtkb{9~9sA`Hch|EbQKz5TgE7?A2x#nNwD{w~dRk(}uek-nqMw!5Co`8{wo{B*LO1 zCrVVUSQX&cD)SB-ZI4l-$CQ-1vI>*_W3|{Ja2=UdBOVBBM@H3%*8<;oj?ul38yfxo zu{g86UpvW;QEgoYfoF{OUR7Aw-i;$0?iTLpaF=WBXf%3x;qHzeO~|yu!lRo0q*?o| zL@^<6UZo!!qav@u7edc){^MIpV}&I^VeNQA0qcGx4w*yVV#n|hf?{ZR8nJ8^4~CnX zkFjD#mt^g+PWX)_x3x<2)dx4edIi)lwe_1t;y``d=8svG2@!|T90)D63-wx5xJ^HW zObBWvwcUiZ-Kbp7ox8F>Y(28xJ0jCI%Czo`_LrSD-&@k{&1i@1w5hVa;f%J!PBVHJ zW<_RkuP0&z7f)2S9a+!BTt0}RqqsqXj}7Eh;*{7pw6G=i zo%#ehJiG9Pxb_0M^?Bi-gr057qPwQGljHOI|ffVww>oBd~ zvhz4h04LrQ#v4S%TS>kooEA3izmE7XStgrl`LyUVIOgAJ+M1Tkq^lF4QmyAQ&?ADw%G=ix>&D^{YO~Z7;})rrAU)D+t6%vsf%M? zogFW>d*wUwc6MR;E8ZL#nI&3Biez7=ID6D;(m7LXlf0bFentEtIgUiXB0fmgkVdbF zU0!{O>{%$j_i7K4HbVUQ)nT4B3lJA+tIz4d_80551>&U99mS;4Zk|OAd0#Q!EHY?; zSTQ=4T$wKp9y5u&JxnYf)0TWWU%W8JNY)M)+onX5i}S>hDT!psP_ZB-fJ`1L?oXMl zy@6EDN>F=Y_3D;0MD39^L@jM;x2%_jaBTm~+6PuEu)MOo)Yk7l6vvJ2NHz=+v&Z_A zQy+@ojD3N;H(WeDwkJ6=N(^}IMRIhmIOw%t|H8pf)LZ8ysMV|^bCB3s)@%6_#NFfk z$ggw79k2B!hPfgcH;rt{5T}oOq1BR?pXm8G^j^sjcZ_RK)@6u)j_XOhGYZw?^Epyb zB<_EGWMhva7{z#&4;Q;mSl=$ig6ge#dyyR#0e|7xQId7b+KM5NX)?U<<^)%s^nJgu zdSV|JVtYsIF?9vW-6Wo$`c>m^H_DbKB^7=&ZL%xrIjOLA<_OOJ+C(`~bvVYboF-pM z`5uD8dSqhZJMTvcM0{QRZq6rBHREN`B>U9(L>4{GL@(NT{hsEPFy7wrg>%w-g!-pz zW&K~DmT9vAGUK%3h3|byZ>{+F`{Cq{QidrT##rk@)nD?w;)(0PHgX3KL;MTh`ePM*%K_zwVZGES2rv} zYz^{a2NR|gBum2V$FGa|MIHSencq!G6xVKM?Z0+D&%SC&8vhg()Z3mYh)Z|mk`7(P zb~}BEYgaLP=X^5lvAAdFA`&o8?E7O9S^1i{{Kr>c;0cCdKXYFD8Zc}gw>Wqr8P;SS z$w^bkVPal<851+{HL?A!0c7`B@ts{A+bka|i;sY~H0<9d$wBDNiG{m9^S{|i4sNAA zxEY(IarD`YcpdLlIOV56j%?{z`0>yF9LZA`e!m+>^m!e`-NkcB(5qtiJrf%*NQPxN z*0ZMYhdpm_L>*Y@Uviuf*J|<3zKMfVaoAhj$HRK4J6mY-9mhKvWfS0o2b}ZHks-+o z)?!J%{x~R~44Hht2jX}86G;EI;yn}(ZivyPzT}#pIJ`7Ay;GHxjjChz-Y9;Mdeaq! zb%`I_1srEeM>Dzc%q`Xo>%+)l^&5{wLUYaTKjogII~qxkb%*H@*v3}UitTU`4T^u< zlN3w2jQgTTqX03fY#B*uQ}}loP9HD(idDZ(AXi(9BM!Vl=C&6192noaO>1e3D~(sd zdqruyn^bVA_eImeL1gV!ap}Rf#Jy77a&Qa@yec+7ltzARB`!J?OWv#y%MPt-f7ps6 z2|M05n{R@P z3|~+@{j01CIsHA@lxA+Q&JD4O=MUc^(^`s0f723EOHnvtAQ@KCbi|vSyDSbn@>%C3 zFJuw7979(z=)TjmV-#yFD9p|SPq9t;DDvTTac22%#CwdGcytqaV|3wzqqjKM5gvE| znvyKuJZ>iKk_*S2c#m^UbqDS9k>Z8lACnJX5zn0rB%VzRZ70JCIoDX!pMIMxZ!CUu zI+lpT#A~O!kl@Cm_nA;q+DPno=7pA*hO&%boTQGkzEUH5@YX+ti_g5okxeS`&$AlB zs|uT)JHlySbFoW~u->VbC0#FaY*|yaLXcQ2F3E{Bdpr6Q>LNBfKZ$I)FU~qYj1?!& zk8V7pi#!W{J}(+CbRo;{i*H;gAlLsCn_gT*HuB=97t8rGgoqzpY)yV9;{3mMkUPi4 z*uR&M9-MgO?=Z4}6P5q0Z241?-IpM%?vCtBuQP?){^^gy_kEGSJc|``FH>^yr09F) zoAg~Z9FE!32RII7f?9)zQEQhN!cN}{u_#zyP%5mi=!xP>12`Z^0yPk*7;i%hB@WUL zM!5@r{mv^7^Q==yC9*!)2n$*B|Czvjt4J ze~8KKWjrp3&f__w*IZPjXCp3%Es}W99^*@o^IRtR_X2%Y;CxlTUVsGTE$ITckdWv< zB{FIEC+*t6o zq^>@c4z*Qi_mp(%!I_w?K-o+HduQK54qJh=jl*{zn6!T7(A_NQ2GOI9Isb0)b_EU! zPs@*S$WM^uH{7D<-T1a$AGVNN*ztWsg;ov)e@Q__$2Q^o8*jDCPy61I)r3?`BrAEklt+=YQywwrENbG~HeZp#5Rw~He?f1;V4xJ{(VPnL+z+)ZBa-N7lSxfAC@ z>WVB0-MITaarwbwe32W;k#7nu%Qf5}LWXa(T+?xGO44VelcbJf*HS~Tj?r*YTH9gatYcC|MMhgQIxt881;pjZnq@SD~32X~= zJxRMIa*<^3?{q>U_aX7K(yNK^*tm+i^x=LXGgs0BeNazcX}R2odzmAu6*Q_J2$jn% z!}@WFgnaR-CBHxSsX%TYq=uKd!DPoly7*=82yr_|M-S$7WJ{jq z)90?^&!3#Co>p4| z=F@7+3eePPD;Fd0Y>QEqp1{$pD(j#%Fjh+1JC+~c<8BFL+3R%k9PUeUb37fK&g~(= z<1OA9+yz2%##$bH$hG8Ns?KM-U$glEbx^dQf7L5F#g|j%tuB>qSfy(@MMYh$&4xPw zK|O+zitT!5K?SXN9aezK6?Ei$PW{^ZOuPULX=juyghHIHA7dg>mSjD&em}p?hDRuV z9tzNVJLoGxzjisR{e|2lzK7xgyAKUQ zq@`=qVi94(wJFYT6(^!?HpiGe5wos=2;#UMT-Lt%6-z-j_gEmmE}?5b;^vU%OK4yo z7smOBADr(*XXSBP&WCQ!<9amy=Y81=TQGf`$92VA>9mx~CPle)|EJtws{EL1Mb34z z_5{5DJ!|2Ezk9N#^BLD^w*W#;Ff96vL^Pi zXjgH!2=VVl)t_;tWN1&z_0PEDt|TMI^2>Ux9b{J&UHCO(F+7T1`00*U8H$0;ED35iq%u0FvUZwCHHBPYlOwN4S1$ARs!A*w+qljg*N1NSfr~>? z@dFo1%I;JD?VPW7{qwBzB6y#^1Rlx1LEqfYg>oVEv+dk$6n+*i6U90Ucd*ecbQ~$L zvV^`@#4U2FHrj#KLa25J*TX>-OX%z!TsWwOJGl5pU&^XQCA4-25+w63)$HU3aT@yJ zPEL*E*H=3^TyD^VJ2?%pKCsm8=sjT5{7FPsJMNlBLMGN-Q zRr|SNak>dT9M`fHDxAUjzn+G`B zLvb2Ul&@hRfAnM62!8F!-Q~!MGCJ`Hx1Ri2W@%o|1@q)?nI-l(_qo7CF8;yo5;!-@nseM{ zLW&Mr`d{F_5y)EyEf4?UZm76Wi?x!Qt|b2+pkr=xZOEeobk=PgU5?u8mk!X%+uT8t ze!#Nh4yRU<`~&ntHKy6(1JvgscacmuKp#Ei{Ky>CA94M-k(Tj~xIYD~(xY#4ew@xS z#>V}_xvV^xW4;#f=_AgYY(Gd-I5LQvB}tGK2WdI0a1v~#M9DTNql(n_<*IGii}Zmy=YET(#@|AjPGD~s#z!RtZz1dRcD35Uftb` z9&1W6J(C;~jQ@v5q1ZXt@|HXKmE&S)ga zLP__a6NhrlJ4Zt_%W7@6!e*=Z@LQX0=O~%r&Ir>OVT9#yC^0tT2GYhcqysnH5)wn= z2sgkoC6?e`Y34!8sW@_zC$Al}{F*>q8j-3)mZSJgvL%;f(TyYV9M{8=HlAd1U3)pX z<-^?i487c)d)VGzI16f;_wJ7lTRKf37kRSbutoJIS;dpJhv~Yv$UgG%VLI7Ng2|=B zmX&5Qm?Im1v)r6QHW6~_h~=}l$x4n~JYk7SBZPA?{DJNnX!q&lW!Dsjr~E-zO(!8P zNvx7Yk4z^z7d6Ax)O7~Yxmr&Gx1OYNGl%kgs@G z#aSE=zE)V4zE2Lhkk#dM%v|yfmrNUfNXBq}^vw@RCsKLL^6`fxUWK%_{GLrF2}JnQ z()}Yc43D4ZEi0FjXs*L9d;o3z7$>C(d22Iq3c^b6TC#XMLZc|kc$8y)A>$FP{+M)& zXBD=BE&wN|?R-`{JN<*4rkTKg%w^SIo6X+==8sG=r-y1@HP>uGZ!F{UO5El?hMDmq ziS<=qz!H}rJzgoSyKtbA#3lYuA_?|o%5NXTo)W;a2P=7y^f4@?D8GzsAXVq-re&m0 zwAzGq<*_YIjqRqH&1;QRzs6yKnSKjP=+w`%(XDB<@@F~Pv)2f2eR^;?UJKMFi}n*T zv=JG2fmT(JQ#9ps(w)q|U@7>V%;32=OPeprIG!x~$C9z0{6xsce=MSxc}IGF!((6?Drr(%6epE4~J`zRk>s^tWroCq0vKW;2fb zS$Lk@l60quE{(#oYkf`uL_unMeeM*plL^8!_PjJCevDIfMdLs+!!Bf>Zp{XOa2TSVh)B&a3LzC-$xU%lw*J7h{&88e&iA)D>i z&B-j|RJ;z3eZU1hAziUBk-jE$BW*FKIz<-XjLG z$&+@uPom!p!qtj(oV(movo208F-}DvaPSgEUfwTmiYF;{(ubWJgR-IZQ$Z1W%vX>3+smbiB>NV^NR2uu z`nt|WJ#3^kDZz=_M%t099<=NM%3nQb1uIjV)5g^(dpD=uSlOvLO=6|8Iem+jmptea zR+f0s?^yYT2Q6piTn~Dy8pHCP2krcjv?nryggn> zO?KF}j&6ZCN)s8xiVZE9r1YAOyr6`3V9h^Sxdt}n`_lC_==;eg^jr<`4L$FMzE*l% z`=)+)H{cV0>uy)s|4BFo)Xx#dsaWSqyVSzF&Th0{ErNO8jZUs5onAcO1jAl$M0FcR zI@^sL4|FoZI2BD@>7H6Lo9LR*xH{q=`f_9Dh1<3D^#)Rzf#EK)7re6p#;J&Lp-byX zlIA#qhV*niS(h=bvr1WOQGipkj8m~kNt@a*|6(W02{oY+O|l^Y&NQY|Z6qkk2i6>> zf^czS?O-=`q@9x~#;Iroj=ZF1vbSBZWPU5j*khe}hhDOg1=4#ljM?mI<|i3^$5xKD zxbV_bYw;($_{k*Gm3HNLf0F7-`*QpM(#n;t;&?T=minh`836Y93u||Ib9MBB130b9`bOstqL95!m&(*hd3}S?i1u#`d(>9H@WZ? zyf0TrSGe-Aq=utsT=~vq3P*Vr{{kuCs7}SFl8-&;Y8AgDy$s$%-&%r<#dJ%3Tq|v= zUf!&S@_QE`4`O6IzVG`1duaU!#SYy?lCC^)J2Oc(asBNoA2XGw!%xrFhd;fPlQ&#P zrfp%LtzG#^_TrVufm?NcwPpgy0|bCe0CAZ zK61pmi>s~ujpV(oM+!)I<1LjAZp^oBs%a{b7xzoFp1wzCH|9e~;3K*TEZ4e6%qqJ$ z=i^Z$kWZPYwIm1RQ{ifAi|QCEeVIdfK}cCFx{7kZ$5>p&Q>pbsGvWTFpqhIG+cI z*pEBqh>dIE6fwrBSPRb6;cs`UKKv~D6zkx;x7HwfdGjtd!_AiT9w)n2X9<{r5br^k z*n+gqF-V!L$yfGK zgecyVt;S*k)UUOSQ}G@+Pu4be0$ju{a&ZFmbe1h+XT7(;sh7R@kS=M)`-EI%oOowW zHM8=f-O7(B>szdTNKZ857ja26*@F)!v-eZcgE!(VT<*d5BN_W?+vdEMY~D`?Hs|BJ zGt2BIY>2N^3a74M6~snA3bP0cGTVg&HI@d2btoDsRj_uMe1={A(iO|`=KSAH+NbPe zhs(U8`S$Whd+E1drf=Lw|7gqaOpn7u23tw5z-IlH#)wbO$U&%Cad4F)v|Ez1pY9l^ zqBSV;7&&aMde)Y-eWu#m`rrv)DCJTgQLlFV-z}Ii)|FXZNRJ2b z*5}YIhXeUEPFsbTElyDTSiA4D+2$9gb#;VnJG;$Rc-Y$+VsEGF3Vpi+-v_rDyE^b) zx#!rW)oT97=h63dxU@vU31ykmg~@|6Q|=nDN&#|OCv7%>iekJGCjdpWSJAncXIKqK`7Y1U{f^bRIOu%amkGpigbknvHdxc zzb~k)IcB;iieEwFVtB!#H1Y#D!GPyUni9i%StjFGUsW#r@arlI23R&M;`8|QjS4*F z+Oq$TVLtSe0b&0II|5{!0qwSZs$pj)!|9|i`PP=}Is8ZMEPfmLEu604ZnoLyUbZQn!hJjY}^&o@Kt&02s{~Hloge$vN=_G8!u##u(kSqZFy>5iIN(fk;0}jb-5Gb(opoC{E6EIM-pY4MzxXGV8^B%E8U3Uk z8uI@u_2=1rj$ZmxjsF*w>YaOz!KdssQkiZ3ye`Y!59JOn+Z+k}a&4Bm1?oddwt20PZJq$yKFH6p zWtnqPayPTgLz-oqqnc)$XF%2k@a>~4^NWBZ51+s!;0>W)^Xzmpe$_KdJhIKXsDIKV z+x+VFEOS+5mU%IZv$CfhhBeAImp{ldk8#a5e~Qw4FUuSVhyc9>%88A$%_HrQiITx; z&@Zd9&D#N|V0-DlISce2bEDzePUx3bI!K)eb=v#w>CZJ<@!VT}on z0X_h{33vrCe?+#q=dk}v80utTH4N^3CEHv%5*|C@<)gCAs^o0*2tWqlBEb6UvkfPW zk!gw)+I2hcpI$RP+q@(Vj@wIyJ0QtUbI3U8tlR~Nd@tLaWCw;jLm+e+IMbekr~mH+ z{@eJ>xv|sJ)23igRvi2w+x%aF>i4tF{|QdP2IKXdm2Fnfmhm@$6Fc5eZy@Lg)1mYj zh{Y~+8fDu#+2-khjev$q%*lo{NBunH|0}@c9dhXo#9_plIUkKV_|D~}x&PS-XFCn? zwa@CM|Hs}ql;3btdJ*`8jBN960OK!0IlzuP~d583-S&1qw_HS4T)7BJxgmS^St^@=;{Ce>ZaR!?`-g^ zC9(r^>}86*be8#lg?m5GP{Lx%%e(jxE`8ha95Y^GP&i7qR2GBAo_hD8bVbSFu$^|y zUV^0f12}sN&{48iw9kXa>^VwCy9yfnmYSnvv?|c>bYyZM3PyYkVpFFQsG`w{95ee^ z*io_vtfru`%OPJH^E2PBX9rZ7zmAfL2Z6>+IZDRYgT|V1lt2}+py47!5lh$p%=Zo) zger5@Q8JO?pt(CreDODZ0tn2Wqih6x5@^nG0!i@>XpHCZiy58`8t!`POBTPG_<)%C z>?naM^6a{flF?Smv^N|GqbUkNL?G)+M*9vl=Affwo!$nTbIIg>veO(TqwNQc1!VsT zOXFgGC6~SyA5=5%93>NCKVt!Df5@S6l=Dz$J$?e z(!rYu+-8?^JC$SBDiqNQ6A(6(Y#UDk&Wt3>OvMsAZ#-zL?f6ENI@B+mvW)(P@6M&~ zJ&i|u00EJ~0pN!LER|UO2=HT0{1}YK?{+?u`2)D4&g9Ra{wIKilkqP%sIw3JD?qci zm#(NpH?R7@G5Bwp(uAry^ZUeATGJc~o=rw@h4BUY?2e5==_13`s01kcj zZb3WL8IQ0Vh(J`-^#p~Y6Ywqohe9y$7oGT8;9*Yu2;fmpb@rx3jJ?hpi38pPAUCK` zu$MW8AF$g;`-+}mCIVO@u||`C4*)nEcp3Omr}_xsqW}(ruL4hT;*SG9!KpqG_+)@X z-VEFkv2@nRG!W7N3}-^`0)HRC<|K0}1Nb~UpUEr)?l8#Yvrx|kFr2{>;7b8am%%5% zmjfIfS_S+wxt=cdcr7Xg0H(}@)&u`q7Le*2fq&=3-wJ#iz!9+`;6DN!9rzizL!R0E z2xGp-&Sx_0ZJE8O;~Nn0kZ#(`w@Go>Iu80ti6{GV3iw%o!}%W2J&(F0zb*rJu2-O5 z31GovKevJ31JEtsD7|TU6yJhOT}8W>@|)9*UuT=Q04@R;J{1tu0A`|o0^s0}_$J%j z+YY*i%0NxN7-I?c% zJ7hDSqvznop^dQT0uCR~XZ*jXC&0mHApLp7|0dcgguEf7HzfRb))T&!hk3QV#4x5y ziL}g4a3t0LT#51jpKI(nZKWf#|EC?OMw?_yw)wz!+2-_9`1LQ~F2LbPQ{cY#dMA{j zfH**ZJ8dM&$$)gg$AEQ!BEZXAF>3%dfFi&$fZzAo=Hc72&7%Qd14;q^0>}^9=0QJT z{AUCC8t^;7e>;ePnSg_UT0mz@ws{obOTc5mTSa&<0VsFC3Bbg{{~N&g|0e^5FkZVe z+w1~wHylAv%5l{KVE8$}vIcMo^*AR!TX+*6=9qo(slusC*j|AL0r$F$4=$>6%m(0z zok2{r3ozmc;H*q#Oz>u+EQj*aKriWSt4!3HVYU|+hKGcCp^drH#p&m zc3cV)aOkC*Q-RFKhdPWn6F4g~?d5WNxxro*p=6Dfp>#NO$_cjuXOWg1b)vgned1^U zaEDCTRTr7TJ~8r>1}72hhJ!N#?yywV=8jliqzcrkE? z?g=M(t1O=``Ca3r;Big%mBmC2oH<}XnPxXQ5I7r1Mo$IKj5FB`yKJtV&uIB}S}{rw z3?ic`DrMa`l=)Xi$dwGKBICutRS;$kD6T)j-^auT&&;gTKoKz2R*X<;21zup+ zQv8c)UW1!p0P}1nWF4L<9^uLwE&DvinFo*nPy`_-A7-09s_`KldgB3k4RAjIylx)= zdv3M3ZMNHU?&(y}96dDx4+B6aDGoXwHuzX4`{1l&Xp<%RkObbL*7)=Zp%NFHX^un5I*K44^^~gFsi194UyY@tI~L zaQx*X=0o3NX0LaqSxC$@ukM*?E&$9zJp=ZwfO3G)3v`qouq7wPli!D+uX4>XSGmxT zGrV{EQ>d4tz6H=QAaS6vKApvDEI{pDYJUkTsVYndKtmM)G)EZDIq6hE$Iu81B%q;A zfs;-ea7Q~e(Aft0WzW%>44R{z1mF%G)nz7&^+*F0$51d z4EbNdlVHl2AAS8CADcc9W`dhwNd_=8RWNr7a0uWAS|v&kl;tRWf}S0jWaz6fl1BT; zhCwzTBUuF6WRw96huuu@{hrkiRiwf|DwGBSg7;+A&whu$Y`rWF&NL^6$f+~62_5z) zAJRSp^n5q0LV#yt2AU&g8<|4@q+$15=S`o zLEkY|ilJlh$}!h?KCQF7IW`Y~0#MlkeuD1@P$LL?J+St(b}-M`Tt5fA3;-VkF2de? z*qaR4P%QiCSl`Ovv$P8OvMp-JF$~x7Omj8LWR$EI)t9ON1>Sq2a0RWO#e_TeG~WaC zjj)^x*akgE&;3B(i`MP}Cfi#LL+MymgTUY7nQ6WVNCPi{Z+nFS#yin3ft~?c3ShDmoxR<}UR^Q*(wyk*RUh{1R5Dyt2zJRyU3p0f- z#BhiHwovFqi{BF(5fG0o6gtv@{REYz>Iz@QlS)F}EAcv&g08LPyD7I3n~kGKIiWMj zC3He1A4R6h63V1@HXBa|-R6S?&Sq0ettqzw^<-!}nxYaK2~dBL2HxO3EveV}P>y(o z(ls}DKVme|&u{WAY55KQFiDguW-`QNX;#Jmz>(BidVZ$Rm8ffFXEl|)N|}76&e4hi zs7h`yv$f6UA~(3@F0UfN*XjD(yq<1T3c*URiaJ{hnVE41CeA@GmAT_h2i)N!l~t&J z!s@MP!5!W}!mRZC9lop5<651qo2*y-2u7DxQ2kwAN6uZPZ{Fo!;s;)=Q& zNa{9jg229@Za`YA0mZz{_BBdjzKQbp_&(&)Wy?$V_+L0ub(yw!z`v$E1p5K9|3j|V z*}Nr`S6{EA%_{jW$}rHH$j$pz^BeFdIOxcJf}Yk?!QdC=KV;9`QMib3> z#K(}DhxEWBUZ*^Czs}|*xkZ-UmxHqWaUI5TtbkNl{g{6En16``J)*}R^KUDMJgl>& z$PUMi6jaK*YJ69L?$HQdG^>X1RNtJcuFl5(c&V_=pVKG0N{`(2_rcu#M0hGh#^J)(1k=;LI(azy?NnnW!3L>m@iWPO9PQtLAUdQo@83- z4OU)!z{(JsH(6-JJ*1-rG?GwBvjyQLW!cp_TO%pv$}MnP%7D&F)f05`gL-NjB5W6^ zK~U^yF)TEpW9xX|dXF#OvFArnEN$n4t~rK2(ZMh@V5Hr(Ya}*cOm;9vJYh(q=CG9d zgg%Ik)@{3?nXxQ2V@UB8dc#$CiD>?%CKWo4(SK7VbSIbY(#D3+!-6QYE@vDi9~T6rJ(do!VsRQ)M0Wl~o7oS{2C z1bvh0(^$t~RFUXTk6hsc$@tUMzd8Q2ZsKXn=;p%f0voMqeGy7cjjbnZ{ah^lr=`%5 z7#h>Y-oju~8B51_3-6PfSj$;&A(e0c)QZIZKrma8R_kkQAy}aVuQ)ixH4|D{X88)e z8+0|%E?pK`W6NcYY2xTVZG<;Te4J%~pO8(2K}>zFpWtJ;=P&%yhrF-Y3h0u?LIn4vROMCc<=vBwC$=y@;?tdelqiIdpzd@xD-GT0O;#p$r|tR( zG0Ib)vhDup1DrHyy@%37GEg~^vxuOgm3@SHlFh!bIRZBOV$CV|g#Ol7=tY7)q2B%A zYZ_&HsYyB0VX3on$R~BSa5}fM(AiSePrx^_;nz}E>|Jm5M<-M5POKK|Y?>!q2ARB! z{@q{bOZG0KAunOk@dN)5y`F@*mGP3WOGOU-YB3EL4l9|trmqTq!p!b+&a|>5yeeez zB)hxiNQy9#DD#)IUi~!_4vZfsSR@D9zK%|u>Q19y7bcLp?)1yokyRc&=;srJp{z}| zy<39c5RwI@V76~&ok`7G^1-R-EqS$(hRH9VwwR2r7v#}llZCO&AGZ0^L)e2zTo3vO zV-DXybYV5ta{8u3WlOs zOAov)_>*!iy^2z4g~`|D#i+wOLZH$M@mWJ}-Qa!cxOaq(%BiT^`8jDq3;M%5LNn!R z5SKBbHuTavf{~oi(e`OL&v=E_+R|iW5Dp|sp>%T^Qf+l8y`3h6r0)Ws9i~`5%p>oX zu#sW?J%L;~2VNlK;fK*!{#1h2QKBdm>>E-wpee#?ZTOzC-NwXv8|-U%Uf{9#v!7Hz zFlf1;;g8lZc{=a;grk}Ox|w#THBjU96xNqtAxgQJsmbf=&IZW-Vho% zSZG7@X9xymk%85xy)5|B2Q!4o*4vD=wyu(<+}b$|`619o(?R!mKl-Yt;7vbxR|xkl zjrA1WQZtj)$0~&&A-z5&J@6Nr~Dg`M{6~i2-io*bV^fIMJ*V=sTePg4c0ZawW z(O*VO0AzwDWiRkxzzD#`X!_~Re86_?~Dlf%%^8&2_fD^^Xud#0tT4RDS*6r)PJ@R(t26)lSaZoF96ga@~_dh zdORx3nvFGj*N1fFY~f{cVwC*Ib>gEsTXU(Ot+!#1QA36G$q}|)*e29;+I*p1(;?un z!Qb#o9Ui2YRv}9wR|qfCi*vBB_>HKuJ(PWSO&21SX~XJl1Lag2n=W*1|I|4z307D` z1~k|RulfjX3HIX&ElC$%Xlh)Fy$O6Fh|%}>!gsF>AwaonF@lyHy#nw% zFuermp%VkJ%FvW1f*)mR(YgqZJH}uj#Mn5hve{lOrTp(1La1``hjlgu-Fg)($Pu&P zN<-#iGu}Ib4TLw%or|7cL_mAf_>VD>3g-%w+4h7}o@bMqoI2YC)_8IPjr~vvS8mIy zlOOdvEAyV9NguGylU;QvpP=5>HFfg30IwY>rk+Hj<_UpMpRkzEtgFcg(OuSBS_1uG zp3tR}g6sCmB7HN7$u zQxkIR$1&je@8u2}aK>Z4v;KHUgOff2Xv45nV}d%!^V+3eei9DPjZ~w`QgdkF!O&2bLj?Y569i{KG+&UXtmf9YG zv17Kw0I9jOj>(-EKtnQx_Wr?3>TJnOPTC6LC{P~&qwQKu&6$F(M*=3d^wcr{6VaXr zU@N%y2PVC&;AW{@6;F+{0X#O+ThPA;D23t#`cI~yZ88f}^Z+BAOQ7wtkm>^wwwsI~ z^rVBcgpN%T(XGRb5YUs(g9OQ=baNK#*9Kh)W{ z?)^}jCap%i^E8jitKX5I2%cWm*bdA(kO~d_?Lvi+*wcQ1rfxYx06DafhU5r3WlcA> z%Pzf!NA1};IDC2p)6F@;FtQ7O0xnl*@2v=_we^P`_QQfw4KRjKQ?3w&Z};wbOYo;O zS7@tT2Dw~$$vw{MmryT|>&+GmZAsFLG-NRz&M&@5&5MO$%2S$J+iJPpzZMJ8#7|58 z+5d|(Sw}}N!H#f9N55Z!n*wzxy|F}CsT_eVZUZ|(_|dOF!t-%4HvErp>PYy~erB}$ zhyOQ7F$B*_dAOYL!yjx6mUZ6C6WS?N>uYV>X};GX{O$i9uTp4*Pwn~KFWD6!_rr9mUdr;u6doKbC$tg+26IcIc(K$L+>sV45aEG z8uAH3QGJD)KS8@Etn|z$f{vWBQuj}B-c(i4kWYmuKDh!XRCeVVS5Yh9=(eNm#?@bq z`pbxiV?s!i%^siB3VQxi7&ly{{uJe@YjiXfyh+tHI)e)Bm421AHb1uLw4?0Smv~gt z{S?lIRZ_AX*GRdQG-^5Y&Q;R)mkZs!4cBXJ(^y;hVVTO>T7I1#TaJsuqC2%tdvkFUS)S1@+2tJ_VZp5iO#vH6hJ_IZ4Cn6e+?3ThzB*V!Ai8(gMPL~i1O7mfAUl_3gIw9e;~F{Lvwn2 z4KmXYE0wfDx1!@e6MV?V=5)?yg0AB>=&@~t?Fwdh5B#1a^(F(P0!GJQF=`pn-4ZD~nO`Roa+B^}Mms+M$4 zKKhmHU1!@b&#+_pNSJe|@1cXP;hfZNEuOqmeClkUQ*AO9i?M4l@rzs6*-pv)&l!J2 zn>yPtIl(Th6$X*GK&tx!N$%60n!gZ6ldul-H&zZ&(~vJw&gw{)e2GPIYA05{)R-kj z8R9&?Gc^@p@?>9k9uWSI&!_xslCvx&ejU{*jNm3 z_ltKAz*9J?EEf`y7&Tq#7wd&6Z#T$EJ2mKR7hMjXM>l$VJ=zH9M!SB6JHdo*^yRP6 z-x1yD_g`UQMEU3|;U#b53s3sRa+8gl;RQN+19BuS3I`JE!^H?1;djm!RrU2#v zasZzI)&q(F<$wx64WQZIf}#zeJwOYH1H1$n4tO0f6Oap71NauOgWmfFAMyl$D;%*j z+9*80A7YK-eYS5F1Q*rRRd{h3z&;4P$t~3=w{I7$uAGrp{3N`Pt}~4^tu`HFN7`ae zk%VHnX1V5&#;U2&_-OlU4{C?#0zx~7ZV9!7UJO--bqjkftRU>$u=8Qs@L}QahkqNs zOaF_0S9D4AJ>z3zbCZv0sfn5t<(xE3Ce25h$C?OjAMILgbKP{^b=}C&4WT~aTf=`0 z-xq!){B(Nw?eJgpfreI5yQ8khp!JKKv~DcXB}F`r{0iUR;iS_Mjc6LvHD-3q%9uCc zDv=(;7l-Z--4M1v%rpE}q$}qt&*U&i9 zFY&mzjnloUo2HwoOV=&bE!Hj5t(-7;oy%z+ri79yQ;*J?tvYqUwaDY`Fo*V!K|DaL;og5odj zP3=Q%6J1wbm@Zc*>Q?I3>Ne=U({0!Nq}!`Is5_=Rt-GkZqPwBHr>oJqhqeiAAKE2U z6B-d}3hf!16goI`Wa!w?)X*uRGeXm6ht3aO9+nw?DZHD0x}lA6o$+_$C1WK9B|hfc znEf#)Vs6IVkFmuxMYumV{cI{Voj2VwHIDs)DpV`M_N~1C*6y>*}81q z3iM>F&Z7H8_m_?fZ57%vbZF?P(D9+uLf;Qv6uLh2yHMA#mSF*5p<%|b?qU7IriLvF zqhY0Chr>>W{S#Ih<`UjIJT&~h@P*-@gm1t!vxNT={#STSxKiI-@2l^u@1-B0e_fxh z-={yO|4V;YpI)oyBitiih)9eW6!B`r1dPwe7@@5Z2P1+FdP7gc2t$S;%V04aH{3Va z3~eH#B43Y8kK7o!E3#=+tEf&_={% z)STB`#)P@AsnfV1fZkevBx;COuQh3VX8xhu8KU6YM6mcwKpy5qJ03xzF za(miejlqV`0!jt+?)8vSN;rtu5oR^xu-@|f>q6dt@{Dr{cY z+||4lnwB1_42ut&7Pc^KS=i>V6JZ(QW#JzB5&C?+Ri6-%8&Mo_CZZyuE@F$}fZ?>^ zhT&3VU8F};*C=Duu&C6i52HSb`XcIjRFmlV=&{l1(VLF|`1)v}6 zqc%rvk7^X%Dmp5wW;1 zB4w;wY+$S|wrA|%*h#TdV?T)fH1;zrL?>g<$5yk5;=no!g+k-0X{U+M#H4EyHRCjs zH1A;ScVZ#^OVdi*LEBXuhN&`CJ4*Y7_8aZ@+7sF{nD4E119X32W>@Q)BFzGgI^zK2 zFyj>C4C6<}PmP<64~%ujRx$oD5iuqV;@FspF|%S8#fUN9rXW+Ww7m1u-ZCU?a@hEA zIDyl#C1{_pjQCgL_!%6o2@eZ5gd4FgCxj=4Ct(#E5(95Ml5xu=n*i46%3VmIY5RV~7y82gPB~3VhPsf6>V1$_rCZj3Nlt338zztr} z0U?P`h)uNc2ZdOYelg4%b~mghOcm}C?ia2`^9D4WgeFtMCx@qnXM|^lFAHBCzAJn$ zmeNyLqAJ6y!xj2OWOTBAynenuSHB#YvQfWHU#u_FpU|H})>P?h^g@J3ginMzA~?bj z5eKJ-M5IKdMhKB^kpYoGk(x+jWI|+8eB_A8l*rV`w8&YJ^CR;jmq+GfUT?$9RzwTY z9?@RW0nzGcO>|gvTy#S8z~~{-DbeGjr$(nmXJC8Ei(VE@yZ$B=k$e+%IVil+=pwIJ z&W>jqT6|pSWXU@y5JGz$#Y;uzqk=k25iX#gKH&lOp0Xehl=?b8d}{bi^mab_n~!Z{ zOL$RuG5TBJ2m=`o>$Yq5T>zFdEb_CF?sK4)l>T@S^S zWAQ#k#~u(`zoeE@z-d5CiKZmeK+_P@2vf2t#WdcOYMN}CZ^|^~n(}ZS$~P65HkdY= zwwa1dyG+HVOD62vHiRmI*#j@QI0s(9(K zN1+ikDvcXGavb-nh=vCpeFVW+!hUr>A$T{Ms-2HbH&>fSuOERC|8g*1V!!6FUz^#l zfZql07F$C1hL(jM!X|qn^i=3M9K)#pQ9SsV@T<}Mu*|Sr?7Pe8TSxI3#1h0i>`C^H z4^KrZO+_-z#EvY7I5#{GX|)`Q#e%&deB+Z)rz`Y=UZr=_tMx(pV7*2krZ?z~`Zy$8 zs(!M5sy+=1X$BH6Q@;$Uw;IV;fb`pf1T4aMl<5y)Oit)eArUVj6)UA=R7407stC6T zFQlYjL;#Xf6A^~QG)6obOOe*dyOGtAHIa%aw$5~iuC{lNq?MJ1);7Ps9BlUtsjR4|*7Ai66}zOQWdGmHJkRco-u+~I<~wI*&di*7eU{x3i6b1C zW>ZI`jYuDnjmb85MBa$}5d|X(N7Nno+8k?4VtdPdBae?9hWY2Ml)0n+If~x)-fh2N zwR`XHSF$T&kp-&SSXfR8vl*Cm2J))+rKsA8<)K&=+2cSnrug2Ui!dk zbBv`4V$D>VQ9+_< z&thXucyIXLoMdX8A~Lr9fJ32oCJ)rD_`#fOq~0)MCu=Z*6X>)s5@UH2VoMs`^d}ww zHbAz~(|P22nsEw;idKXx(`cU897{{_kegF-4Gw)xbh#Im7y!{Vjb~48gS?2YyOqS% z;RLnaY-+kln}0V)2e#q{py{HCZg!F=%Vh*YF7XJOdctfD55e!*`l~t?&oA09(&9i8 zZOi7e9P0wT$E#WBPL8_+xH}who$tL(Vz!e$>!+fY%Mn|2TyDf-5O_zJkwo|3%4L?l?xSCVH2=!< zS%Jy;2nFd)?Pt)zg6evGdcpJBsk;X{cnFu}GA4i+?x2of5*?ZaIkHX9u@~L_8$RDt z!*Uc<&+&EWg`K30XW$fJ_<3Q!O+9h>UT~6LW-$dy%u2+Bwb99!Frr@JvYhS^i0xOp z_$<=dc%AgJuEE7g<1f_BVj6#u(-a^k?N|C0i%C<`ypI@bJGFD29 zkgnb=x9B8Xb~xH-0b)#eujnw34>6o#X;}+L7@v2La7!Qd6z3GRo`aHM9Ccm5C|(Fw z%m$)1ik%4W&_+0goWL9@hHQnH>>uo8Kf(pfbKU; zR{sMeo7Ooj+uN1MkPIU!CXozSo2Y1 zB)M+gU~AomF3i2Acrkne2S?-174s3F5oaRc3ZNMmVW}%Xw&f+nB%A3|h`BCV@r@S5 zc<9Z+n7@CA*kGVuC`C0GzKa?w=bys2!@`JmoXbs#(bWMd(=_YSVE$Mmyf zGR9XUZ#;>Q0J$%rjS-SMbUxxE186-`hDR!vZ$V6#k)AoG>rW;`4;9 zSAQMqMLR&yd~>>ywL!^XEn=E1w3Nj(S>&v{5Yzf6{RA<+Ta}7T!iR0T@zu%G0~}fU z>KpMW^&EAWNNiN@IXR{sF^=E#-VG7G+Y1-90_qJplwIBaMk|m(gn_H;F>4T$&kFMo zXWC&R<|qygy4pdgdALoi!=~~MvvhDs69Z6zu=6xSd(UU@DZkNj?R`f886T3}sT>wn)S35pef7n#Xv$n4{hTsuy$8w`P(X?Dh49wxlg4B+_ImIL>wq zu>l48a&{n)Bm}4Zp%*-WTirJqpA`~NuiQM4{4NunZzWN-RU#lc_!}S?&skOy+uLlF z``J7g8-pNiM-eLmQo@lSP2IE!38R|2nHhSCYY^k+`vKOR_y&BwP6iQkxS+b;chIZ- zLrjSmxGd+=^Ja9)oqS5PBtT9UnzV*xl+5d`XEYblSwc1NLCB3(%sV|$-Et9-Y}*dv znk6RM)E>kf(2W{0-H5Y@K|saU?sj^cd$+(ml;0<&+bKR#B46hv8zE6===~86S0ShfpTOQNFI;0 zCENm0iJT5nWDzUE(_EI5?f^*Jlvv!Pu= zPuS0(BnQ!~r|>N&hki3#Z7m$grFMao2GJ4MAaSYE@)MKr{KHD~5EGT8IOTf8RCei3 zzmkqVWA1IM_d(qwz68PF*0i#$#^vF77>u5&x6?Lx^#42uUjE1%{36Dj7Rn#$3!J^ z9*C8j$p+LzywVmIhxCz9OeMMeoI_fHy7{SvdP9lX*uiBIHXKWj*hSw2u|z13h3Mjx z=7kY+aK zy*4t!)O?;s_Qj~gdn(?8+xVi!Ot6Y2=k#s(e5SI}1*gL7^K=7ChWDL)NfO&8;dDZK z^&<(U)M=thbNZ1!!Ii%J{-*8a`oXfw^L6X{k!Yi_O{@>i*ApuiYkua89gC?~J0kr9 z@;ur- zv2;Wn$u+g!OsnG1DyfNe9dYEmF(BL#K-Zoy_pZBq1F1Ke9FDsB1X5~7ohIHyHsh@G z>rEsMTNxauuNND@TLvSaY)74YFbOdRbi(b~$ultgPRwWs984rPQ2z zo5e~%n}=gv;30OJZ$kPiQ8cwBqlHVkQAsyuC5p+64H|=C{#800>M9YSWF*yRHnnh}jQ8<#6nz9mU&lI@jWS`abIIPf&6jEk# zCsOxZG%o&z;AJBVRgEIC#C!`ZW5@Z3^$o;YcV-l6HsQA$c8w+$xna zs|In2O(OXiaxPsLL}F}5nW$V$bb;8Xiw!`p`_YLP#L_yL%W{_EK-|-4^LUI#{A2__ zcs~lZh%XfSwDBB>LEBJNLpFEOsS~ikm=&#G5!1@6!^T+x8?b#M7VAvUD;dOkk$!;m z;a0`!hY{oXgLbf-J<2TJfS6QY&dbHpb;1YrtOJ%nO`Ohb(Oj0Rngo*GC6=$6bgb0r ziuLy)y5<6pj(C#Ga^ejjlW7cYTP)j|c#+0VB(se!u}oy)(;}Gg*j>yc5L*N-gLq7c zZ$oVKZ)V9pgwv%3;V8mZDSQcG8wA$r4v6mNSss#npo)D38mVkRmvb=fw(pgts*HPDN`8 zsyFo$&`)WnUC=k-J@O7r5q5gp9T<@1QavLdV2=X$g~F{6i$#?V-9d86Y(CQT6Y!i2 za;q`8=?t@#mE2!!eQTznWI^?kZ(o7Ib5?k24wvQnJqqH{u87JY+j#9+j>E(Pl6of= z5Zh@w{!Un)ahfj1dw7P@MyV^&!DpzO#Z2ZF>18_+({V-||2GKvBFo2hnnq6-?_;LJ zEvlp@sLzK}(p}ThGRdMPeg!EPEiq^YDJ6@PmiTrCX|R~AH`QTwvYN1to{htuY12LA zCzHuDy$%b)=SJfq$yc(Uz$(vHxj1^@UQBugx75vBKpe(^mOyPUzX=)$plS7ryblsK zOWXqgl#Q9WOIt2%ISAATQb!J|Qy*A2BL_K=w%gHy;*#^RM~Ri}SjF})?1Gql3o(_8 zL0u5L{hEi&B!q_F2k&k1d2fzbd@Jw6hv4wp==XBT*QS!=bj?yUb%}DH_upXBn1Z zlS{j7Z(mMc8_@Z-QEIHiB^XWb$mB( zD1Gb!lE}xbF_i9pfW%pnp2Ze*_4@ysqb+wr^sJ`#pKz_4M{imI4|$GGTS119O5Ci+ z(*E(JH-6!E;|feVwM<=*s1kVYlVWsqit#H__GM3`25IQ#uF>~XF3VLp4pM}@154c3T*?Dd;%Ja=3=E$4C=rmN z?*>_qYRKEPc4<=Dj5X) z2d=SIc8yq&GKHjpByE#*GC?X7@&pKe;##jX&LoCcfjoW$vXf<0>r(>x8l+Jne}cGh z6M>!eKwH_Bv7=Wzg2^pikR z@8aeRns!y}BOq=?{|ylDES|sf)2m`Hf;21o{nq0EwOy{ztsuwZv@S&x;mQo8T_Mvz z%JI=h|8lb!q!>SW?k7b~piTvC1}S)7R;mYS!e=S{$qs|qJu>;_DiT1kd@DM!Al19& zRFi0LEQt!bA4&!Ob=&d;!d`8Te-W}roIL6wMvA5HONjFX{f#M$LsMuuCR*(PItcP2 zu`e74F^pXqYgYmb5S}dZc^sl$7XA#M&wJOddS0d@oI1MHYq*1B3Mjv1|W@CC@FA?$)TI`AjRC{DCPCw=`X z5*LuvkGDZzT8cXey{RpsuVQ`bN9V1^08gdP)o8Ftpww8=U^WK=^P=_Ukqpl(gCBRq z>r=@{oFFX|cuKma80KX0giL1Fp<9cQaUoFtF+BaBOQHt8#&mxc8;$@B4TIr0NXJo` z-0&Kz$L^wHNCw1eE)H};43E=IVkw^oSrjFcYLE`$cl#l_C*iNj;CG#n4fHeScX6*{ z(VarQKjP_iDrEeP4a2h`R;uo3$pgzjMh`uWswC2LPm`F?mw<%ztY`iZ9{Mw2$5A@s z8B{-^iWy1&?-?9@Lz0+jOfi|Y(pW?-ilVO}%2-YJKZCwW{GWZ33B|;I^sy2sX3)(g zP)rw!Q6v{}-J*g;5X-JGxdJS`AKmmUMpar8Z7+oxg&6c^ZbmBI{5UR@t5`z5FOi5?K+SeWj443lCPw?aSL>=l~cU|;+jmWF^0&ukUh+JajoWa z#^5(u>3oQXr9c+tvWBx7sk7V% z?*DAlMkwa?qm5_~(>&2Ic<>jx4qbl)QQ0>9v5xkHB(TR@42XeX8Hqry6x(+t2XYl( z1DVkS`t0#liwL0O^%Ej_n_c4EQGt;#9HL9tTp|LJ<_3@st{HI%V!E;;Hob!tk@x&R z91zR3+b%JNCV>=VeK)aw#y|YH2Z&oCYe2G4IDcxgM+Bt8&w(Uq(YCl69+09lK(a#C zKaWPLxM;RU6!Wm$3?G6V;|2~q3(?wNjx=w@_)^Td1q6R*gk%5EY>16^S^Z&jd59czD@{ydx}KZ)idouvY-(N0Stht@(CR{CHXH}PFiF~l80Y=GFdiFW)8>nOzVm-v<{I28+? z7`rX>vr^=KOD%RK?)6h($zq5ZLUcnccC$PKTOoS-YR-EOfvh=fTi4IYY8Lb!kCeJK z8swPrv4SxmZ3?*$q*WnrfmHRCJ8Ta~iK6ohNV|^=4$`(l`r2pO&P<_aHey6aLWU9S z$pyZsubfx|$AQ2Ii7W?!5$ustZ+yxn@B@Tl0y~HHUjGuYT8;pe*yyqs&@_fRRyLDk zjkR>$3mAIQK=s-)`>ZhtMD~;IpAOROTc}xE6@WA-T z4t}!=3RHgj><|_^>St2cAP1Hv7CaFn9+y*#~&Hni5{d-+p313_@&t z6d%M_?Aua#4DI2@lw^B_+B@;(7CX0~gt>?)w~KL~l8?ZSNZG$vgSdSAIo9~)AXeWP zxWab>-_^1kvYqtBJZAZf=SWjFqY-}LdC@G$p?~>uVN+l@->UMu1W(3(RZLyAbnEJX z-hnY6VaKmoIA}NmHOhLB3*z=I0$12$aq`5}^)kw@;F??}wJaYRvmOt8*}yOvDrq}( z0?&Y_XnW2&kx1|-`@t|%;Y8e)+c!-rLBnAqiQ}UUrXFw6nkgjK$+idL#n%7K%*^}+3o{*d<%#58BrjJg&vp&|R7_&K1M$-L5p2m; z30tLA(ngTA!@o>Bqj#~eT=hFZ@=!DXRv{b2rI1HKnquTs>p+h9yoD9|9!S2D>Qk1_ zXgTMfM*?*#ZWrLe)T(T35JbLYB{iZGL_;c5dujBMSlkUbFS%J8Gy7_f1^v}|uDsm(CqeH5&z1)I`u2=cm ze2j@=y1rsq8}_gmKJnve)xbAMT+lEecNz?&Z@mrwihqr|R>QF;0vBqV(};UnK$-X+ z2Eo?>U=bL!_NvHAka<4!D_c5p0QH_T_rc<7d7mZKrnawnHZ-gnI}@Isc5K0^f*s7n z@Xq3=iooE#m;%|}7FQ1>2>}mZ2nO9NI0lpM$j^XSd;E_MXRBslt(MRHwRl|r6IbOW z8f)mRYO$wddO=|g@HRGxXl5<3(ZeT5pnjkTNUM|&}IrN1uC=1)Vde6NuonVl4YF74_kfP3ldAcnuAcxD18+d;ZN z78gc>d<>HPiA>r+Y87Jo1c~>_I@f~~DI{?qP*|g^Gyvq+W0ApwZj#*};2rw42 z|BL6FW9Z5EP{!xTDh%Huj;TnSXTwU^ryCZVYPPXiv>zQDj}LiGr@OX8`v+*-nKrJc zQqCaY(yS2Ui0nt#JgeJfZmC1HTj{|%RC@tESBF9z zNRzi#Gs#g;`b-=P;$Exgi;cq4`S&j~bodA>X(n_^t||%n7{ugLfw&&@fkNzl-mWL3 zj0N;`J<41{uYDgkAz`H^I(il9PZK{R@wD)L5^ww$-TXeRS%7?5EUU7!2!V26ArK7z z0byGUQ9(vt2FWYcjb+3GQigZG&Jhs9I$7s;kWwGf8wv$$=G)*$adg24M;xB=ezANk4KE-jj zRwlzin%@&djIHq?VcTUg6U3&FoKG>=WGg5iO1TPI4dPPBdXN%@)Pa;K$(D@TOm(?RD2-oYy=sQ_Mwcn z17-V&?r)Cg==P7uVqB&6--*G|LdWgIwroFi-8b=1?K!_@>2}CQo@B8K=>)-llBb!l zacogYPmqw0WQ*cKvJ`i4fE-a${UZX%zDrN0o1MLbM(@IW0wbT^h500#zO@TOcNUcA z?b6(zxpsk;Qh3`kL>GGGsyqggutz3ufV3(m)PXEgbPj-2DdZ$b#$Gv}Kb%0e1{sAP zLe?M4BpRe}pGHzYf9uJ=jJWSxJ3 z98t(RkZvE*9Rj_s&6^=n_&5P_rR}@P98+!@P2U3tsisTzz(HO?;zg}|rHOKGN1(Y? zF6}Ug;d`01fy67s)QlcdNF<0$A)`P%3Yi1aqL7tNp!gr;!q$SMC}ayrkwU%#X;#P| zAZb6!`NVvNNz6y|CPKZnCVCjdA<{sr_mX+WQX15NgM;@+I=F!>4hZpT%SlE9NjHUf zY2E>nL`Qs#Kkc3QZ*%>~$EhObe8oqI&ensK~%tu8R^R8R|HM(w>=sGE))@Y{Z_LE`s zR0~Nrh6s7lH;}`He1gf5LeBmca=eg#Vltiwvb0&>K~56#4@^!G^1N2aX+r*%$&-aV z`+LYUg!~m`YW|qqN@x54>5+YqK4(%FlQMpU^iU(DLrm&q(qu2B75gC_U{VK@(vLz~ zb^y{ROloIR+E0)ce+p?2liHY+`ZG#CC^b~|&uFMxxuHfLLqmNh8cK>tr{Tv*F8(~? z@#C0Y(lGEmNX3r%wk!miwMVxm-%i+bl(rtnf}2ezoWO$HO_!V?F#{ijZY56CeAA9O z2%{dPVUoO8S_fjKFU>_~vZvJncq}Y-u%5lJzLJhTNyb`UV@iW*3A>T0g`6mEXPmns znRxZ`;$eXbQwwk@v>6H7uYT+1`P%27^mxGE?kk5gF-ODVH&k-g-w8tOEEDE zq{LTz=F0pP3zp_N4M&t@4@1d*x1Ke#-wl#HM<&}CNta0j2>*bvudb~i?B(x{Yp{Q^ z`if_9{Xv|yij9dt=?WPGQmxc}3CJ;D?O8@nkRm13dXOwd=M9iTMQ0~Su2aeS8=#hn za?Q?wbSoK|zJx(aPxl33uOR#rotOYprR0+W(xJ5LVi4~X^uOPS3xT?nhFuF%pjcfA z(oE#hQ4eBOI_NOS3}33u%$yY~mMu3V`Z_u@^WlZd^KzEedQDErWqw1lG-bd9e+4H} zvW@|%Nt2Bp0>WPYp3VlT_7%_K9$@**l2es{*pahS)E)=vg51mn1~$!D@lQ14rmM2v z&XOsOe~{^f$;F@GsqB(LY}>_h_L~^VHez^L(f(RtgMk{S$Tp^ecohFw0+KaT)_H=F zJ7uySWRc?MZ-TIwzhWQx2+9|AJqVPnG+G--y3dJ33q8WWgV3K*H*{(hqkH0T!!Mvw zAf9Bb%*lV~-Uk;pc;&ev5;`rS6P;S|Hv`3ER`)yO1dt@f8)kuIDX(R4O~cofgy3Sv-9`~;-Y=fa3JdW&MV7N+AV_n#tTPrQLn_Q*mJw*Fo}?tm{D%l-Q|8SlX>cfba)H;G#yOK#utQg6ZGIQlXOm zYAgZiP`cp}khzLM>%NDRwJ1uPpfp=);%y)yC|8)6xin|#g1mnkx|O=_hE9}{_17Tm zI@DjWpF!Y*66yLLHx3h(WFbGmos|Ae08vNoc#wJ})!iUAWF3TmqJ?rm+|%U7|0f84 zgyz%P4B|{udis4J&ulr_4yJZsfBRWj+ZwE+~(yq6GG-_u9Vd7*EmvJ23 z{$Ju4l!-u>GOauW60huki$HRZ(y&fEF)oFis_0kJ(Ve8XGg9f7ccEs59sV_E7f9GF z+4`?Ro>!Xl3<&#XG=JX(c~L`!3;@Yc3>XQ5{*p-2LylsKS0=(ZkVQ&8{tjYR{B#1-QF?O@$SS3UR)Ul% zn~PN-krPn9f16MNl&tvjb`X1p-1z%J{JqT1EAz9lMN~Sm1v;rpVV0jzn9{EOK)Nt& zwM`>y3I|Y?Qjf79cEy)xfh74Rl1#q!#gd~GzYIEAcj-oFE|{O2yL~1=U<_Qf_Rkr-wu+l6h9B7QtACA zAYDdmc>KNg2vCw@V=+joQrC?jUS-~UA0!e61&PkX|M!BpCeclQ;A2k}O8b6>m}5$H z{sO5`%ItYU_!sj(;e$~ilNFueAj!(0m;|DKLyAbX5G2W|6u%N^o-ZRjSmi@7UeQ^{ zlKIw)%!Lbbm#@q*%usY*f=-sQyuAaGs#I(rNc>S8KKvIZKLV8~ozMxwUjEJ;coJUW zGm*s&2hl&^jN{hAl{q;}(3y%s3!oF`E1vHymgX6X)Wi29P^wmnFJ)O{yW=nZ4VDp@ z75_vte#mv?eN-bz0OI|rz5@9!UiRBlAdT?A9HuBT`V**0sacOU4DNAqvS^SUicTVk zOPRFCg48HF(`f&0(z}0?(j@bsmY|HTJUXkJ#NDt85#{6MQY%0jlpNonFCj-~p^{@g z)V#_vco@Wv3i@5Y6{KT=ocVu2wkU05{RJm#pH61p@`sUyAzvx$7U(266)VRBwWZ5h z-wonb+|UJ5fXoQ~iB>NMsr0p9=ED4(++4J=QrH&gOjaCYAIK3S7J)#XQKs0J8$y(1 zUqH#LoGVU%B=~BEq=r91JibMbk?>Rei|QrsNd!q%bjE_<<&>0W03|5%PA8s;^j|_^fo&T(v50Jn}DN0ElT5ef}|?W8~7`?T5B^VM}pXu z78(rVQ4AUfqF#W_0vXIa2JLSUy_gHcUj89hd=+ssqMVj%L2{M4?gi;mT=+YXFccy> znw9Y@$PDfcPP`No=sCrmp_z~>y;LQ8HQylBKlSQy_L_xR!x{fl<2L<`X2=WH7SnvBgg~3;xjYn zuUwh4B0o)O#@|`i%H}TU46d@2_P8D-OmXU)Kq`FI;N>R+sprNyAR)KQ-H`{9gud`Q z(NiF9#po9p8KtMnoSvJLlb4z_&sP|$>Ne=K=(RUwIv3_HU%mooD5YjUK#9GA@K216 zUqIRvN4pH-QFiFP&cgK+qX&YhOWof=I;FBu|FJ+W)fU$L_8#sJHKlI^9I@9zD7>{-qC diff --git a/quicknes/bizinterface.cpp b/quicknes/bizinterface.cpp index a8a29374d8..7a18b16f24 100644 --- a/quicknes/bizinterface.cpp +++ b/quicknes/bizinterface.cpp @@ -226,6 +226,18 @@ EXPORT int qn_get_memory_area(Nes_Emu *e, int which, const void **data, int *siz *writable = 0; *name = "CIRAM (nametables)"; return 1; + case 4: + *data = e->cart()->prg(); + *size = e->cart()->prg_size(); + *writable = 0; + *name = "PRG ROM"; + return 1; + case 5: + *data = e->cart()->chr(); + *size = e->cart()->chr_size(); + *writable = 0; + *name = "CHR VROM"; + return 1; } } @@ -238,3 +250,30 @@ EXPORT void qn_poke_prgbus(Nes_Emu *e, int addr, unsigned char val) { e->poke_prg(addr & 0xffff, val); } + +EXPORT const char *qn_get_mapper(Nes_Emu *e, int *number) +{ + int m = e->cart()->mapper_code(); + if (number) + *number = m; + switch (m) + { + default: return "unknown"; + case 0: return "nrom"; + case 1: return "mmc1"; + case 2: return "unrom"; + case 3: return "cnrom"; + case 4: return "mmc3"; + case 7: return "aorom"; + case 69: return "fme7"; + case 5: return "mmc5"; + case 19: return "namco106"; + case 24: return "vrc6a"; + case 26: return "vrc6b"; + case 11: return "color_dreams"; + case 34: return "nina1"; + case 66: return "gnrom"; + case 87: return "mapper_87"; + case 232: return "quattro"; + } +}