From c04d627de8471939afd395c737181f52241df08d Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 22 Jul 2018 18:00:16 -0700 Subject: [PATCH 01/10] GB MBC: Partial HuC-1 support --- CHANGES | 1 + README.md | 4 ++-- src/gb/mbc.c | 32 ++++++++++++++++++++++++++++++-- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index e7344986f..c344df2b7 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,7 @@ Features: - Ability to select GB/GBC/SGB BIOS on console ports - Optional automatic state saving/loading - Access to ur0 and uma0 partitions on the Vita + - Partial support for MBC6, TAMA and HuC-1 GB mappers Bugfixes: - GB Audio: Make audio unsigned with bias (fixes mgba.io/i/749) - GB Serialize: Fix audio state loading diff --git a/README.md b/README.md index 7cbacd747..20937c08e 100644 --- a/README.md +++ b/README.md @@ -52,14 +52,14 @@ The following mappers are fully supported: The following mappers are partially supported: +- MBC6 - Pocket Cam - TAMA5 +- HuC-1 - HuC-3 The following mappers are not currently supported: -- MBC6 -- HuC-1 - MMM01 ### Planned features diff --git a/src/gb/mbc.c b/src/gb/mbc.c index fee944c03..605d3d05f 100644 --- a/src/gb/mbc.c +++ b/src/gb/mbc.c @@ -27,6 +27,7 @@ static void _GBMBC3(struct GB*, uint16_t address, uint8_t value); static void _GBMBC5(struct GB*, uint16_t address, uint8_t value); static void _GBMBC6(struct GB*, uint16_t address, uint8_t value); static void _GBMBC7(struct GB*, uint16_t address, uint8_t value); +static void _GBHuC1(struct GB*, uint16_t address, uint8_t value); static void _GBHuC3(struct GB*, uint16_t address, uint8_t value); static void _GBPocketCam(struct GB* gb, uint16_t address, uint8_t value); static void _GBTAMA5(struct GB* gb, uint16_t address, uint8_t value); @@ -259,8 +260,7 @@ void GBMBCInit(struct GB* gb) { gb->memory.mbcWrite = _GBMBC1; break; case GB_HuC1: - mLOG(GB_MBC, WARN, "unimplemented MBC: HuC-1"); - gb->memory.mbcWrite = _GBMBC1; + gb->memory.mbcWrite = _GBHuC1; break; case GB_HuC3: gb->memory.mbcWrite = _GBHuC3; @@ -821,6 +821,34 @@ static void _GBMBC7Write(struct GBMemory* memory, uint16_t address, uint8_t valu mbc7->eeprom = value; } +void _GBHuC1(struct GB* gb, uint16_t address, uint8_t value) { + struct GBMemory* memory = &gb->memory; + int bank = value & 0x3F; + switch (address >> 13) { + case 0x0: + switch (value) { + case 0xE: + memory->sramAccess = false; + break; + default: + memory->sramAccess = true; + GBMBCSwitchSramBank(gb, memory->sramCurrentBank); + break; + } + break; + case 0x1: + GBMBCSwitchBank(gb, bank); + break; + case 0x2: + GBMBCSwitchSramBank(gb, value); + break; + default: + // TODO + mLOG(GB_MBC, STUB, "HuC-1 unknown address: %04X:%02X", address, value); + break; + } +} + void _GBHuC3(struct GB* gb, uint16_t address, uint8_t value) { struct GBMemory* memory = &gb->memory; int bank = value & 0x3F; From 5a954d63db8d1c4936232081282488172d21b288 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 23 Jul 2018 18:51:33 -0700 Subject: [PATCH 02/10] Qt: Fix sprite/map export file handle leaks (fixs #1141) --- src/platform/qt/MapView.cpp | 2 ++ src/platform/qt/ObjView.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/platform/qt/MapView.cpp b/src/platform/qt/MapView.cpp index 2481bd9a3..e4d970e5f 100644 --- a/src/platform/qt/MapView.cpp +++ b/src/platform/qt/MapView.cpp @@ -10,6 +10,7 @@ #include "LogController.h" #include +#include #ifdef M_CORE_GBA #include #endif @@ -184,5 +185,6 @@ void MapView::exportMap() { QImage map = m_rawMap.rgbSwapped(); PNGWritePixelsA(png, map.width(), map.height(), map.bytesPerLine() / 4, static_cast(map.constBits())); PNGWriteClose(png, info); + vf->close(vf); } #endif diff --git a/src/platform/qt/ObjView.cpp b/src/platform/qt/ObjView.cpp index 99220b543..b4c0ae5ac 100644 --- a/src/platform/qt/ObjView.cpp +++ b/src/platform/qt/ObjView.cpp @@ -22,6 +22,7 @@ #include #endif #include +#include using namespace QGBA; @@ -283,6 +284,7 @@ void ObjView::exportObj() { PNGWritePixels8(png, m_objInfo.width * 8, m_objInfo.height * 8, m_objInfo.width * 8, static_cast(buffer)); PNGWriteClose(png, info); delete[] buffer; + vf->close(vf); } #endif From 5ae8f689199c5171f850ec23cbe56425c44badd7 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 23 Jul 2018 22:07:12 -0700 Subject: [PATCH 03/10] Qt: Replace palette slider with spinbox --- src/platform/qt/TileView.cpp | 2 +- src/platform/qt/TileView.ui | 113 ++++++++++++++++------------------- 2 files changed, 52 insertions(+), 63 deletions(-) diff --git a/src/platform/qt/TileView.cpp b/src/platform/qt/TileView.cpp index 2f7a3e4b4..38c2610f7 100644 --- a/src/platform/qt/TileView.cpp +++ b/src/platform/qt/TileView.cpp @@ -25,7 +25,7 @@ TileView::TileView(std::shared_ptr controller, QWidget* parent) m_ui.tile->setController(controller); connect(m_ui.tiles, &TilePainter::indexPressed, m_ui.tile, &AssetTile::selectIndex); - connect(m_ui.paletteId, &QAbstractSlider::valueChanged, this, &TileView::updatePalette); + connect(m_ui.paletteId, static_cast(&QSpinBox::valueChanged), this, &TileView::updatePalette); switch (m_controller->platform()) { #ifdef M_CORE_GBA diff --git a/src/platform/qt/TileView.ui b/src/platform/qt/TileView.ui index 1c61bd869..608e1d2d0 100644 --- a/src/platform/qt/TileView.ui +++ b/src/platform/qt/TileView.ui @@ -6,7 +6,7 @@ 0 0 - 498 + 501 335 @@ -14,49 +14,10 @@ Tiles - - - - 256 colors - - - - - - - - 170 - 16777215 - - - - 15 - - - 1 - - - Qt::Horizontal - - - QSlider::TicksBelow - - - - - - - Qt::Vertical - - - - 0 - 0 - - - - + + + @@ -105,7 +66,7 @@ 0 0 - 286 + 256 768 @@ -151,8 +112,36 @@ - - + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + 15 + + + + + + + 256 colors + + + + @@ -175,22 +164,6 @@ - - palette256 - toggled(bool) - paletteId - setDisabled(bool) - - - 100 - 54 - - - 96 - 22 - - - magnification valueChanged(int) @@ -207,5 +180,21 @@ + + palette256 + toggled(bool) + paletteId + setDisabled(bool) + + + 158 + 29 + + + 44 + 29 + + + From f888d9b408b6e9ca5005e78db94907544af95686 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 24 Jul 2018 08:03:30 -0700 Subject: [PATCH 04/10] cinema: Rebaseline tests --- .../misc/boot_regs-A/baseline_0000.png | Bin 1317 -> 1354 bytes cinema/gb/window/wmm-hud/baseline_0000.png | Bin 5195 -> 5126 bytes cinema/gb/window/wmm-hud/baseline_0001.png | Bin 5195 -> 5126 bytes cinema/gb/window/wmm-hud/baseline_0002.png | Bin 5195 -> 5126 bytes cinema/gb/window/wmm-hud/baseline_0003.png | Bin 5192 -> 5125 bytes cinema/gb/window/wmm-hud/baseline_0004.png | Bin 5192 -> 5125 bytes cinema/gb/window/wmm-hud/baseline_0005.png | Bin 5192 -> 5125 bytes cinema/gb/window/wmm-hud/baseline_0006.png | Bin 5192 -> 5125 bytes cinema/gb/window/wmm-hud/baseline_0007.png | Bin 5192 -> 5125 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/cinema/gb/mooneye-gb/misc/boot_regs-A/baseline_0000.png b/cinema/gb/mooneye-gb/misc/boot_regs-A/baseline_0000.png index e29254b103d9ae4cf2647a1288d3df172344d37b..b27f84b7af9384276ca036be2f7b522879b1dff7 100644 GIT binary patch literal 1354 zcmeAS@N?(olHy`uVBq!ia0vp^3xIe62NRHFxc>b*0|Tp|r;B4q#hkZuqsx{U@VLyK z6UXp7Ue$XBzuJ-G+gjv<1YGaVw><2;A~tvXX{8Ta-&ZT`sJTCv;bSXPvvcFYg$Eu4 zBot^EScpi>@%PHSz3ub=ox10?d++9wwk`20{ID~eOX=y#xD2aV4qPleY=g=<_E7|!?<3CG0JrcF{Urp7c{WI^&-N{i{deW`^$miKt ziuYVnnXV~Az*H!Y5|66v(|K(0EeIzw)t$o7K+m7rCmgGU?ZY&!5+<~ZV|0F{jjH{m6q}^6L*$6T`5CX& zekD`@ect)H`FgwE=gdmkBil4>I9@fc{j)T5vH9nTMSMr+9&NM#FnxLa_Y=kcSDI*e zGi`rdbC2bP=a(IQYQ7_W>gJhCo<+y!XdM!(u72d*{?@<3LcG?%;>$sJ z>Ozh-V50k@7y7F7W>xs!*eLNS@3J%3-JchFC{5$#F0Wdve_4yP#j`KkK0Uw4??TUF z`8zSE^7G_%kJ~Lud41}?VwLc`YSp#Ny>Bm7`ndD%%Fd;mJ}SRrTsOtJCn z$$IQ+2~B*pux9z1-`D2;$eDHSE!SUnzu@>JC4U3Gx@PsZ7k_4?ZJ9T(B?l)G|-D z_&CKTJi%5%1{fuaZ1k;u{_sBhyY$}EW?t40pQmq&pK|?YLgulFNk2|M`m&+2O8CoO z&w69cTCaK9EOS#dPpAA9{B(Kll!)_}XKS4A_AB?<^ytY;c3_}8wr3=5)lcs*WVB9%*xxAx#1Pu9s?-^u(j zZ|m|WJDo0kSNnUm<2%q_99Ad0-s|%}dM^2Nujk48?ANDv0IdV22Nu~youVQV$f1iP d(8(13&+zO)T56LwXBnuB^mO%eS?83{1OPxEmyrMf literal 1317 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 literal 5195 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 literal 5195 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 literal 5195 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 literal 5192 zcmV-O6u0Y%P)0058(0ssI20N3}|000yZNkl|CDW6|VzF2(%)8qyEEbDodO{_O#bUcP z$_a-T4h0`Us9b<=w_4W7d({kBI{;6bjzhfI|gnZL=zJ9`z*?G3QPxJMYxGQV|H6ay< z${L}c_-46oi?9IDH~wAVhG6xGY>qA;1b)|aVEzgA&Fnm*3+{fP@Yq;lx^xalW+9oL za8DD0FFcR{IRL&(C?US6+#mgjh6KA{H*Z5u2vG{+Jux-9;Zn_v1(+cedze{!e_HV1&s!)kIi+dQm*IrGWc3~!-J$4e@qhP-|gd@QGi;E3e7Vh}XtGviT(d&$hDYG%`6EiW2QTC&K9Q(?r~C)%2b)vFaCtrajIoc+15D0lSVVmbA{Ma& ztciN$THCq$qCzY9MCtMh07xX#k%`Z7^7T>-EmuU>{0HI-VPoYr`59CDqI5U?$*Ra^ z(-UGhNlrHp`~FBg-pA&l1$?}`xJUs27a~fF$};hRsWnMXT`>r%wQK%^@n`vZzk;LW zb@4McZxpj>##`$7MKyVsdH%>(UMu)JVWuZ&PEm67%_zUwP?VsKcz5KC`3mcT|3Li+ z8xt;orRL(NC1TE*j(72Nux*01pZ@7Q38rE@_J4j3aZ= z9Dj$ieoCe%yq6TNO#Ts^+hk!Uxyq;sN4}Ws`%Sa^EImJfe)QHZP+ku|W4xxVg7!(m zG3X$WI{?jPEBJVc+eh3BmLo|6pEm?+DYIDjl0FFje_fpdz`M&ws^77GN>Ox_yn>%k zlk{ej0YJ46_M3j8xEg*d3Lh(rePKw$z)m^;IJ!t_b{`96vfkGmY#=K7ZV`WHsmea765k|Orx%kIj_$|lpEJ1L{`+f| ze#6l{n0| zBftCo`ucl-eGcS5L_fmRN68BSpC&1K-#^ni9Z<^w_M8EsVG)dSgA)=$H^MJ0mG((p z@K2r?0PZ$Ms-PjhCeb!rUfL9Ce#TIq<8;GC{&309cSC$3ZR_|%xQKBD^DYjfAEGFE zachLjmxJsMI*LmpC8>!{%fw-ui<;x}TVVO5cKO#^qcpp}+swMwkB;pF<-OTtwDSA+kLpFaZt z2G7ZVAN{+d?(`EbFPdnKvjjhHw4L!djM&YkxwmVAFRT`SV6hc^0Jz)CaA>#x{xZ?J z(~sUth0DvMXwJ__KWnKUVG-Pm-JXBh@jYT~e0|WwBRhHV+;+OW!q5H=TEs`$b}wTEXYTsLe=L40^2#7fpOu?IT6jp(F1~p-J0SjJ zskyvku?>jL?^Y&HTEwSgJbs?14|hV2w*>Lm{REl2SaG1(5w#+(Zw1%O@9H6UozBE?PA@jworG6_+l3m^A|{F^ASg#UMy^Z$5yuzOuN;F}Lj zez186xSugCPP_8%w@J`aem5lJ?YGZ0^1A{v1m8T~YlRSlJtb*q}0sgUE$hWkyrZQqoi?n@sdC<6@|b1Tzpvv6k0Qn3F$MR>Edib*N^1~@A4ICo-|R3_Dxy@ zE?`^oR=gj~CG_Mk{gaxsKx1DoKbp-iFV-nC>^BLtP^iAkX4dA1gX3rX@8QZMKKufq z6?v-@{tC#*M+$!?mdoU9#_Lp_wj227s6epgFXNZUzu}4H$Gq#RUn9J&A+Pa%aHWl< zheG_DpCq}|U;P4MTW1rWn;@>W*uw;uxr^n;L)>V)7(hZn%;2jPc}KX%Zp=~fS)Z!|;pyS%>ZE`6y{ zEI;+Sb1}eM5w#+3bh5$BN2bdwKB#=I2sAz32hP6=s>HA4C#t&|ts2U^3$hyKN6qK% zsXxB`sE1GG^f@+U)%zLGX+vy2SbNZLH_rtzeXy<;Lc~%~6djcx)x=YnX4n;*fAs{h zF4FrMkIG`@)!_QD%ugPn8p=E3k9Fw~0|Fij^w-xxiWuM!{I0V%-1+r^pB8EVesExj zA;@*^L7|qo)i9lYbm|*FmE=qp=KJq)IR*E+G@mpuO`O2zL_SZO5G)b-+E@!gU3+#x zQTbr8;$!hc_}2>OU4Uh1O?)}Pe1*C4xKQgQNsTWUI{y2|eZtoou6$6$#2-U>4iclp zv^j-6mbUiT*KTg||IF}fYjq5@@}2(vbm}JRvD3r9f7~~G+Q|90mqebuOvyy!*}7P= zHRcXCS>#l>1xwvuBsn?W`^WvkH*w6i{^RjHe;kYP)A?PKJX2EK5|`MWI2iHF@p}2` zq2q%)e@xAV<9FfP2OYvIm~L1{6A-ow5@<;e-aqa$J|VDujd4=s!Z*J0oyYoQ9K`F3 zpr)ALC5t)hqF8s}%GVAZ-&9mRUunM|yeWSRJ(79KSVl=fJ91~kl13pR#}Z%!$2C*?H0;e!+PGXsRkr<>rCcTj1N z%@rUR=;8ajhsVeCjLWZw;5*+BHu+A9X90j6IMbeoKYp7O58;aWp68D`uJ#Ko=)n2o zqvMBwcy5isk?+)bTzzszg|1nd6hG*NWLj*K8s?{;6Mk%ZM&R4;2jgq0B9H4q6a#7Y z2ab7HLjZHP@C@D$Ht|ggIT}moyDFO_`pJJHBcgwrePlm`v#F7A93p;sl}jAYmPz0{ z(}kK3+RplU0wt1(?_vl7(k32yPWT?2@LA}5KN!jb=1MNHqvrj-O(!okexT&$RISV( zdq_;a+V}_HU+W)=Z53UbhZ7v%xq`vF5KV@NdXj$)p+5893cgG>gis&yqv7~97--nM zSNhp+lc+%t^P{o&=2JTy>gD98$Aid^HpG9)`Dy8c`T|T`ou6*!{a{zy zW947{lUi3UAO9Yo{}%B>4?3vvAo8z5L4saXetJaTG2Q3T!2EPj6y2-* zXbApmewt`Jl>BIId`&MZKfMdG29Y0)#edCDgZbEOz4vSNftf2b#d5O(_bXyly2jTC zW=Dh5kMzN{^Ou1M5UvjW6rX1zca0ALw%x@>pY<~qpv0()T&HW?i`1Zyv~H*P9vZZM zc0RbcY?ObUgnc0;okE1a|BBQdzTfi=T0bQdT|0k?#|8c~-bx%TC&@M`f1PO;_$Ek= z{A=IzW4|99o4?e@1=ukf4GIlh=c}A!C_)MD*mP*qE`IKQzZS|id2srvKIljS@|PwF zCin;a?o;A@|FvuUq~rW<*Zh0%+xh)q6C_+zKllOgU6i!+`^QJrPdmRK49vWk+d)Bm zri+7CbDziEUKjWtY9+r5$J0;gpd-&8({zbL&Y9L*dmUw9Lk?x`(?u&&Wneu8*EN1f z{&k4@kx_IqJ>gi1_1alt<}b?)1>v-^zJ}EK{_COfS+wPHazoUQd_S1~>W7DPHBo|l zgEFs1Uj;pDxy^_(2z3;Jg3pCz$U`cHB%)cnLCx-@!^y`Fj78 zw*r<#%JWBrDwU{CyT<3Y03cmnAuM(@X#I@IqfE|V^RUX-PbKd2N8K?LUV%z>VieEs zP0sf72!9SCUq9t%HY|Tk(Cl=trq1yBC2AaDxw{>xen!{ zUf1D0Mm2e*=R(Q!MErr85#dvV8uGRR+|y8WZSuzP{R^TC{$ufD`S&vh4gsC~S2E2Z zv^=5%mn43r=q~(&?dr>;i0=3g!EeI9*+n@2tx+eS2kiZo|5q9wjl`JqlQUij%oNb2 z{<&(bL**tEZ%CgtxY^KTjOr7(7OGwTO*TCECRZN*1y?4x=E~&1`sFjxOk8UJ1jdh5pJe zd?(#(cYkKNCO!OELiMSFtK31TRfJeW7hpM<33|-%~ z3IkVv1(DwIuX33}F-TQIwa4c}8-fo20He_-{0pfGRYTG)?FX1vlH{ovczzc@w=--} z#FwuaHXL%Q3#ATcI;1(B66o<2Aw&BN`ZI0c^K7ftJ}%0*7WmY`IAzILca# zp}nVXX>B#7Vg?*|E!LpX=o7r3SJxwos$7ry#?R1c1OV^n@L^hA^>z(Emyq3c!UuxC zpYQ%3ou6kzV*vOt-6_jMsC2B8UhGT6WqJYG-Tpt4_)KGo^*K2GkK*T*JhTh4Dm8_A zC&DqK5^>23afR{Exa_FD**2CRnh^fgujdW2B+A9y9SWJo%o#<-CR zrxympG+=m(6hTt(azvn6vfcJ0va6!e$lhESN0lfiO6Xb*VzOj+om_bs+71oNCWlbaL5B!u_~L-_ z+WIh+u3CTQbqMNqEjz`5LEHP~e2XRshmc2YX1`PjWg~>m{borZpZ(SNT;-^=A7HLE zKKI|xrS>aB+GyN^a=wM~T+y>3kWfZqKE#R)Jy72d@a=lHlD?d80Y;=m+_Z2C z->NpJpG){U9TA7%);Qmx@j@bDcsQAs##MP(v>#wp+=nTAz2A@S?b_aMiY+X(w;R?J z=oek1%LA)tFkrD%3bKAKcdLZFmtMY{MDT3J(tO?U|L9z)zHa+-8D}2Fe0n7$8AXdR z_PbjVwH|jj?6JTvnRWxr2j=H;zf<(bBOxoe9#u}1*EB;QjiGR~l|hrX)vguXa5r3= zA30058(0ssI20N3}|000xrNkl{ps^nujlmnbtYA`H~q?C|^z=O+^*sEu`T(MS!Ep9{wOXm7LA!B0OQy`(1paCSKy z4xc|i{On!_03Ph@(k0A>DWXVkvty>Wf}ew5)n$J>y?pd&2mpCX4OO~H#Z#~%A zr7t}Ez&v7OiW$;59eI-8W`{?b5PlJX1j!QkT}lb{Mds$%M-(L5;cz(XRyd-6JG}&e zM~{X-AH96Av-|w{A;ud7IeqSPNEGf*NEu!vieE$~;jfbOYmLa1JOm;kx#&jO=lSzP z0Ql_Qg3o`jvwPLRTr1b4z;6ySsPH1;{N_-okKfb41Y+Z1(#3DG)omZmV{1Z*;@uTR z{AEk?^Q+6`=NYJoS!pxv!-X#tCIaa3>zne_&0jZGCV!7D^Id(@C8+4*M5Vi)pI`*vQ{vRFbYPv% z$8;(vKD+n@56rtcR)?4J{A3C82l79D`ijqtV)ZrU>G0fG$M@fU2>|qgFqxc_MR+<& zpJf~Pbu`My;{j%-`YQ70`3V4w#{=XilTq^s{>kJVH6)P!BqxIM*D8OYeXuwc4A<8q zPZ#UJYA}iF7C;g6`~)k&oM=aGHB^r>B;n`n0RW^D*~sMQJo(v)Xj*QFy5$e#7s|%! zYs%B5@|22VkyjDuZFWf9EZe}!cz#|GGgRltucJ{805}j)TQru*56rB{V^)V|ty}(Z z{`~A}1V`!XlBa84px(qwnl{3myvoVsoR7RD{P?-I*+F-TnqzE6{mp_R1#QHuqhQQO zSRL{Q+9%64xQhD(Te>@MfvGJO?(9+O;N*CkS{Jaxz)%O9w(N1pEEr?12`uMm6&2ucBQ zH6cIwSl-iJ{K6rJgUIvzJ-{cU(VM~G^Ca?{S3UNL($|G9j(uP=I#_h&nu~wsQVL&6 z*{bs+a81c;p+%11M{@3yMfc|>qavJnGK%Xzr`KMg+xfUggKr)+iGhtHy;^cC{#kMjNT z004?(u;29y!hkyMuJbUs2Tldb+!(WeHc=Fe0pD2A1|NZ5c zXV3mlQgulJ3J+pSGj<~CTH96U$ATgz74n;KRXQ5I!PfoHzkhu8Gi1hyVQ7H#ByaU?11+TZp~{9KM8z7)*0+0MHTJV4!aP(C5i|Tc0*sspsmg*DCyUrxL%LsW*R+E3N$IrWM8Dy6rP!n^58U z{xP@D{&*ndDV{}}b52hlU_svBf5Z6^c#jhHWx8J}x%_$l{?5)r0Kmy}Z}Wft)lq%+ z3D*~0G|sbxJh!x;@dS+6#ihBntHLk57QbOJ2|oag$M>;mr_*zjtv>tcrBt}Sd=|~+ z>F9ec^(`zyda>H`4?Dg_EX|LrLw-jR%{a8vYoPq${Q3tyD(c%A47T`XbIK>=GiMn* zMbuZFpO*jB9bvvM6zVlo{y=`}%7p6r8ZlUlt1}!g-beSiwXTOofee-eFV1M9tVbCMQ5B}vO~?#;GH{#aDkS1yzE`6v`E8}vhM zp8VzbLw2mHfIsfn1bGs|H-bIObAmaG3t1PI=C2P;lP3w}GARU;$vM6-{)?-+6>&oj z?=lH7qKhBbh5VN&FonOn()l~?9^iY(FCUolVDS)gzhGLOwEA8xlOWOgZpewZKQj6G zH841F&O-h?KjFIyY2~3R#PJ_h6n+n^i70(<@v-&&w_k=V;0QQ0L*@~IcJcFLLl@PWd26aM`|lkLU64wwwGS zk`YRrzlvexU+~1rV_tRTFEPC>p|A0LaG{T-n?n4HpN#zmjF8el3v=;v7sRa=yP4o} zcd_z#z@4^B00b&xPQH@p+ZoUA;t`@posYU2%slJX_b3(ei(!`>_)}BOktZQ$kFEd! zMIeepm{Lfgw>2o-f}^{YId(%>uV*~F4YB9J zI)a9Wd9H{VgLSqLkVrwZXg>26iGey$5p&uV#qXcQx`6X%G!uV!We%6eB-fi|et49s zsBeeg)@7bwniD0@RsU&H;pvmfzl77IM#+;9vuBe+7O5u8H4nKs?b9kAr>`7Mlcx~Q z4WT)#NUI^L$zq*8+eIXm$qt|=YtFD z(?>T^x1BEk`QxVX(?ZU_yd-#LPWJP`qRQC5!+ih+74E?vyMIV>dv(trH;3QkG0Xb5 z$0w8Xu4unZo$s3PbV+eZe8uX-#)zknXQj@k+s+S`qZYF{5%^vF_C|+@3T7DAvk3@W z1qrsS0nZ;dnV*V?bxk0@@r&<#u20TEJie%_@rPv5XI+R52WIAk6TnsRn}#YEEA8il zkJZC*U@b925VF-p3g8E^nk?K}((<>RUliBm;2lvM_VdAJ1N#MaNw2AN#L_*W;`y`? zqrLoQmjd^poaVQm57sV%ACK@LZ>m)2kj)Vw1Zd#%yUXYI%z0fQQt&&U4>sk_=Jx`? z{N5`(3C4ovO>3gRPbTMjUhP*{Aojer?ffAmo=eW>gOAlYuGwYy(oI7w;7pHgqT>1V zb>fdbo)P@^^TGO2RR7KR=1N@D2abMMLIHEN;Oc5^=Qk0uHHPn@x6PJNL(~V3ejsN5 z)cefCnG%w;lwWW6avsl;N$@+53$+{*^^~=hNL*oR3!I=Pv7}olmEE zKDdGBuLO}(@1tec`h2?J|ARSWVgJ%)S9SjC@6tx6Nv`xgQ5Fw75FM zlKI!?(}Xn72YWKCihp~3J`Dh=o)0d>YWWG-%{!k?|9o)W=c6I~+4_8Xj&57dM@#c- zh@GQ`%U_W{{qw=~osY)yug|B!yluAJ^R;@z%r!M7-(q%T*HWi$e$8N3)H?el`~Tp; z0}yTw9aKCWxo&<4@a--!nrxqB{~yewNC^~f+SSePL96YP=Kq7~H*rH^3GG6JKmUrT zkKZ5pT5X>+{~wIo1v;vEI-TaxdXjG2i$7;t2fs;@>U?*F_DS>q!C?JKFbR6h&NV5; zHC2K6RKh>CNz3ow+HAFb()@q0iS5OQl=%nkb29JquXXchHJ|U+Ex(69&Ho3RB(akk zk16ZscOgsk|Hmt|Pn!P^hDG;MxTC~-y4Ywn*LmE9*1_)qUx2pJJ_{QilgW9WpJ0=7 zp>;gavkWZga#pSxjcGEl?t-hEpO~F}v$fhj-K&Ul z7qC8F45>xMFpmn9f**RDomo`4d)1Hd?+`q+yx*CXQc8XN{3}`;r48u|~^5K|bWaR&^JYXAhh2|7mA5noz6TeY(75>I{)#Winee#F!SCK!&J|6j#p%&65*1nd1jrKvd zIo~{Dq~ZnXvnDqSnu1Y&BG*c#l|R-#rc@sJg;a(15sGu#;)l;f zG4WN$Cs08`gNg`Sn5Oq2q~1E@kL8b*Kh{1T`8(5Yw|{W~0Ml+40Q6@9CKiG-6sGek zJpBEO3)q{&L0?|jn*x9{-2+~PXLhBl;?wCK0QCC@JlT`z2QR|&$EIr(kKk#yYqq!e z>PhrxcJVv0H=VuAbPe77m_qp}gDc$uwDNSiM=ySrQbc=;uY!kXh)p+fHE2TZ%QE*b zF2t}Se<0vWj{^>3vU}k$g?S?#^n)@}9%|_@kckTiE9UI?4?>1@5?qa78c9;7iwo^t z@pGWlP6Q_Xl>&cFe)wfg-78fqfv(pncnZku(r;tE>VKd@rcWBDWD zYQ<%?E`&_7q8idQX^KrZXbUGJa|Xulo&(B+^CSZ3|3i=A2%Uw=``nG|xvX4u|Bc^O4ai)L^I!8G>^1 z^nA3S@^m__N#?ZZ_xonLu~mtBqD5SzL3EbExOmJ}L}9GuE&*S#s0+YCCm@e#)QYG5&);e!Jf$CeoJ{1ScUd5G$* z+Azn4LEroGyD7RLY(gEjO;4kp5El2lCBeLTzi;Pm39cHLTaEYq+gsB5g;U&eFvs-m zEqM9e6c+o6?hS!J9fg{H)E#>2##IBqJ(!K8m)}iyp-)D{MGHsxQnflhp1|%8eUcE| z7UwH8o=6amhr{$VuFUPiRRe!Kfwu?n#UAYbaMik)qHQXcu#j#wtPvO*U9HO}R@b1x zVzDrb#x@2Pz4Y+q5R+$fF3racf5+fT`E}WkCvomk^rtlta+xIB*dK1itaY`kVUGvC z$(Xrlz7WFohJe{}A^Tb7P`EH#A2S4^3-dr*2<@v~Be>#fxU@V1V$OUs2Y07%tZ>lU nw7yw%)EaDQllhk7?E(BBYkhW#ImIfH00000NkvXXu0mjf*T-E- literal 5192 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 literal 5192 zcmV-O6u0Y%P)0058(0ssI20N3}|000yZNkl|CDW6|VzF2(%)8qyEEbDodO{_O#bUcP z$_a-T4h0`Us9b<=w_4W7d({kBI{;6bjzhfI|gnZL=zJ9`z*?G3QPxJMYxGQV|H6ay< z${L}c_-46oi?9IDH~wAVhG6xGY>qA;1b)|aVEzgA&Fnm*3+{fP@Yq;lx^xalW+9oL za8DD0FFcR{IRL&(C?US6+#mgjh6KA{H*Z5u2vG{+Jux-9;Zn_v1(+cedze{!e_HV1&s!)kIi+dQm*IrGWc3~!-J$4e@qhP-|gd@QGi;E3e7Vh}XtGviT(d&$hDYG%`6EiW2QTC&K9Q(?r~C)%2b)vFaCtrajIoc+15D0lSVVmbA{Ma& ztciN$THCq$qCzY9MCtMh07xX#k%`Z7^7T>-EmuU>{0HI-VPoYr`59CDqI5U?$*Ra^ z(-UGhNlrHp`~FBg-pA&l1$?}`xJUs27a~fF$};hRsWnMXT`>r%wQK%^@n`vZzk;LW zb@4McZxpj>##`$7MKyVsdH%>(UMu)JVWuZ&PEm67%_zUwP?VsKcz5KC`3mcT|3Li+ z8xt;orRL(NC1TE*j(72Nux*01pZ@7Q38rE@_J4j3aZ= z9Dj$ieoCe%yq6TNO#Ts^+hk!Uxyq;sN4}Ws`%Sa^EImJfe)QHZP+ku|W4xxVg7!(m zG3X$WI{?jPEBJVc+eh3BmLo|6pEm?+DYIDjl0FFje_fpdz`M&ws^77GN>Ox_yn>%k zlk{ej0YJ46_M3j8xEg*d3Lh(rePKw$z)m^;IJ!t_b{`96vfkGmY#=K7ZV`WHsmea765k|Orx%kIj_$|lpEJ1L{`+f| ze#6l{n0| zBftCo`ucl-eGcS5L_fmRN68BSpC&1K-#^ni9Z<^w_M8EsVG)dSgA)=$H^MJ0mG((p z@K2r?0PZ$Ms-PjhCeb!rUfL9Ce#TIq<8;GC{&309cSC$3ZR_|%xQKBD^DYjfAEGFE zachLjmxJsMI*LmpC8>!{%fw-ui<;x}TVVO5cKO#^qcpp}+swMwkB;pF<-OTtwDSA+kLpFaZt z2G7ZVAN{+d?(`EbFPdnKvjjhHw4L!djM&YkxwmVAFRT`SV6hc^0Jz)CaA>#x{xZ?J z(~sUth0DvMXwJ__KWnKUVG-Pm-JXBh@jYT~e0|WwBRhHV+;+OW!q5H=TEs`$b}wTEXYTsLe=L40^2#7fpOu?IT6jp(F1~p-J0SjJ zskyvku?>jL?^Y&HTEwSgJbs?14|hV2w*>Lm{REl2SaG1(5w#+(Zw1%O@9H6UozBE?PA@jworG6_+l3m^A|{F^ASg#UMy^Z$5yuzOuN;F}Lj zez186xSugCPP_8%w@J`aem5lJ?YGZ0^1A{v1m8T~YlRSlJtb*q}0sgUE$hWkyrZQqoi?n@sdC<6@|b1Tzpvv6k0Qn3F$MR>Edib*N^1~@A4ICo-|R3_Dxy@ zE?`^oR=gj~CG_Mk{gaxsKx1DoKbp-iFV-nC>^BLtP^iAkX4dA1gX3rX@8QZMKKufq z6?v-@{tC#*M+$!?mdoU9#_Lp_wj227s6epgFXNZUzu}4H$Gq#RUn9J&A+Pa%aHWl< zheG_DpCq}|U;P4MTW1rWn;@>W*uw;uxr^n;L)>V)7(hZn%;2jPc}KX%Zp=~fS)Z!|;pyS%>ZE`6y{ zEI;+Sb1}eM5w#+3bh5$BN2bdwKB#=I2sAz32hP6=s>HA4C#t&|ts2U^3$hyKN6qK% zsXxB`sE1GG^f@+U)%zLGX+vy2SbNZLH_rtzeXy<;Lc~%~6djcx)x=YnX4n;*fAs{h zF4FrMkIG`@)!_QD%ugPn8p=E3k9Fw~0|Fij^w-xxiWuM!{I0V%-1+r^pB8EVesExj zA;@*^L7|qo)i9lYbm|*FmE=qp=KJq)IR*E+G@mpuO`O2zL_SZO5G)b-+E@!gU3+#x zQTbr8;$!hc_}2>OU4Uh1O?)}Pe1*C4xKQgQNsTWUI{y2|eZtoou6$6$#2-U>4iclp zv^j-6mbUiT*KTg||IF}fYjq5@@}2(vbm}JRvD3r9f7~~G+Q|90mqebuOvyy!*}7P= zHRcXCS>#l>1xwvuBsn?W`^WvkH*w6i{^RjHe;kYP)A?PKJX2EK5|`MWI2iHF@p}2` zq2q%)e@xAV<9FfP2OYvIm~L1{6A-ow5@<;e-aqa$J|VDujd4=s!Z*J0oyYoQ9K`F3 zpr)ALC5t)hqF8s}%GVAZ-&9mRUunM|yeWSRJ(79KSVl=fJ91~kl13pR#}Z%!$2C*?H0;e!+PGXsRkr<>rCcTj1N z%@rUR=;8ajhsVeCjLWZw;5*+BHu+A9X90j6IMbeoKYp7O58;aWp68D`uJ#Ko=)n2o zqvMBwcy5isk?+)bTzzszg|1nd6hG*NWLj*K8s?{;6Mk%ZM&R4;2jgq0B9H4q6a#7Y z2ab7HLjZHP@C@D$Ht|ggIT}moyDFO_`pJJHBcgwrePlm`v#F7A93p;sl}jAYmPz0{ z(}kK3+RplU0wt1(?_vl7(k32yPWT?2@LA}5KN!jb=1MNHqvrj-O(!okexT&$RISV( zdq_;a+V}_HU+W)=Z53UbhZ7v%xq`vF5KV@NdXj$)p+5893cgG>gis&yqv7~97--nM zSNhp+lc+%t^P{o&=2JTy>gD98$Aid^HpG9)`Dy8c`T|T`ou6*!{a{zy zW947{lUi3UAO9Yo{}%B>4?3vvAo8z5L4saXetJaTG2Q3T!2EPj6y2-* zXbApmewt`Jl>BIId`&MZKfMdG29Y0)#edCDgZbEOz4vSNftf2b#d5O(_bXyly2jTC zW=Dh5kMzN{^Ou1M5UvjW6rX1zca0ALw%x@>pY<~qpv0()T&HW?i`1Zyv~H*P9vZZM zc0RbcY?ObUgnc0;okE1a|BBQdzTfi=T0bQdT|0k?#|8c~-bx%TC&@M`f1PO;_$Ek= z{A=IzW4|99o4?e@1=ukf4GIlh=c}A!C_)MD*mP*qE`IKQzZS|id2srvKIljS@|PwF zCin;a?o;A@|FvuUq~rW<*Zh0%+xh)q6C_+zKllOgU6i!+`^QJrPdmRK49vWk+d)Bm zri+7CbDziEUKjWtY9+r5$J0;gpd-&8({zbL&Y9L*dmUw9Lk?x`(?u&&Wneu8*EN1f z{&k4@kx_IqJ>gi1_1alt<}b?)1>v-^zJ}EK{_COfS+wPHazoUQd_S1~>W7DPHBo|l zgEFs1Uj;pDxy^_(2z3;Jg3pCz$U`cHB%)cnLCx-@!^y`Fj78 zw*r<#%JWBrDwU{CyT<3Y03cmnAuM(@X#I@IqfE|V^RUX-PbKd2N8K?LUV%z>VieEs zP0sf72!9SCUq9t%HY|Tk(Cl=trq1yBC2AaDxw{>xen!{ zUf1D0Mm2e*=R(Q!MErr85#dvV8uGRR+|y8WZSuzP{R^TC{$ufD`S&vh4gsC~S2E2Z zv^=5%mn43r=q~(&?dr>;i0=3g!EeI9*+n@2tx+eS2kiZo|5q9wjl`JqlQUij%oNb2 z{<&(bL**tEZ%CgtxY^KTjOr7(7OGwTO*TCECRZN*1y?4x=E~&1`sFjxOk8UJ1jdh5pJe zd?(#(cYkKNCO!OELiMSFtK31TRfJeW7hpM<33|-%~ z3IkVv1(DwIuX33}F-TQIwa4c}8-fo20He_-{0pfGRYTG)?FX1vlH{ovczzc@w=--} z#FwuaHXL%Q3#ATcI;1(B66o<2Aw&BN`ZI0c^K7ftJ}%0*7WmY`IAzILca# zp}nVXX>B#7Vg?*|E!LpX=o7r3SJxwos$7ry#?R1c1OV^n@L^hA^>z(Emyq3c!UuxC zpYQ%3ou6kzV*vOt-6_jMsC2B8UhGT6WqJYG-Tpt4_)KGo^*K2GkK*T*JhTh4Dm8_A zC&DqK5^>23afR{Exa_FD**2CRnh^fgujdW2B+A9y9SWJo%o#<-CR zrxympG+=m(6hTt(azvn6vfcJ0va6!e$lhESN0lfiO6Xb*VzOj+om_bs+71oNCWlbaL5B!u_~L-_ z+WIh+u3CTQbqMNqEjz`5LEHP~e2XRshmc2YX1`PjWg~>m{borZpZ(SNT;-^=A7HLE zKKI|xrS>aB+GyN^a=wM~T+y>3kWfZqKE#R)Jy72d@a=lHlD?d80Y;=m+_Z2C z->NpJpG){U9TA7%);Qmx@j@bDcsQAs##MP(v>#wp+=nTAz2A@S?b_aMiY+X(w;R?J z=oek1%LA)tFkrD%3bKAKcdLZFmtMY{MDT3J(tO?U|L9z)zHa+-8D}2Fe0n7$8AXdR z_PbjVwH|jj?6JTvnRWxr2j=H;zf<(bBOxoe9#u}1*EB;QjiGR~l|hrX)vguXa5r3= zA30058(0ssI20N3}|000xrNkl{ps^nujlmnbtYA`H~q?C|^z=O+^*sEu`T(MS!Ep9{wOXm7LA!B0OQy`(1paCSKy z4xc|i{On!_03Ph@(k0A>DWXVkvty>Wf}ew5)n$J>y?pd&2mpCX4OO~H#Z#~%A zr7t}Ez&v7OiW$;59eI-8W`{?b5PlJX1j!QkT}lb{Mds$%M-(L5;cz(XRyd-6JG}&e zM~{X-AH96Av-|w{A;ud7IeqSPNEGf*NEu!vieE$~;jfbOYmLa1JOm;kx#&jO=lSzP z0Ql_Qg3o`jvwPLRTr1b4z;6ySsPH1;{N_-okKfb41Y+Z1(#3DG)omZmV{1Z*;@uTR z{AEk?^Q+6`=NYJoS!pxv!-X#tCIaa3>zne_&0jZGCV!7D^Id(@C8+4*M5Vi)pI`*vQ{vRFbYPv% z$8;(vKD+n@56rtcR)?4J{A3C82l79D`ijqtV)ZrU>G0fG$M@fU2>|qgFqxc_MR+<& zpJf~Pbu`My;{j%-`YQ70`3V4w#{=XilTq^s{>kJVH6)P!BqxIM*D8OYeXuwc4A<8q zPZ#UJYA}iF7C;g6`~)k&oM=aGHB^r>B;n`n0RW^D*~sMQJo(v)Xj*QFy5$e#7s|%! zYs%B5@|22VkyjDuZFWf9EZe}!cz#|GGgRltucJ{805}j)TQru*56rB{V^)V|ty}(Z z{`~A}1V`!XlBa84px(qwnl{3myvoVsoR7RD{P?-I*+F-TnqzE6{mp_R1#QHuqhQQO zSRL{Q+9%64xQhD(Te>@MfvGJO?(9+O;N*CkS{Jaxz)%O9w(N1pEEr?12`uMm6&2ucBQ zH6cIwSl-iJ{K6rJgUIvzJ-{cU(VM~G^Ca?{S3UNL($|G9j(uP=I#_h&nu~wsQVL&6 z*{bs+a81c;p+%11M{@3yMfc|>qavJnGK%Xzr`KMg+xfUggKr)+iGhtHy;^cC{#kMjNT z004?(u;29y!hkyMuJbUs2Tldb+!(WeHc=Fe0pD2A1|NZ5c zXV3mlQgulJ3J+pSGj<~CTH96U$ATgz74n;KRXQ5I!PfoHzkhu8Gi1hyVQ7H#ByaU?11+TZp~{9KM8z7)*0+0MHTJV4!aP(C5i|Tc0*sspsmg*DCyUrxL%LsW*R+E3N$IrWM8Dy6rP!n^58U z{xP@D{&*ndDV{}}b52hlU_svBf5Z6^c#jhHWx8J}x%_$l{?5)r0Kmy}Z}Wft)lq%+ z3D*~0G|sbxJh!x;@dS+6#ihBntHLk57QbOJ2|oag$M>;mr_*zjtv>tcrBt}Sd=|~+ z>F9ec^(`zyda>H`4?Dg_EX|LrLw-jR%{a8vYoPq${Q3tyD(c%A47T`XbIK>=GiMn* zMbuZFpO*jB9bvvM6zVlo{y=`}%7p6r8ZlUlt1}!g-beSiwXTOofee-eFV1M9tVbCMQ5B}vO~?#;GH{#aDkS1yzE`6v`E8}vhM zp8VzbLw2mHfIsfn1bGs|H-bIObAmaG3t1PI=C2P;lP3w}GARU;$vM6-{)?-+6>&oj z?=lH7qKhBbh5VN&FonOn()l~?9^iY(FCUolVDS)gzhGLOwEA8xlOWOgZpewZKQj6G zH841F&O-h?KjFIyY2~3R#PJ_h6n+n^i70(<@v-&&w_k=V;0QQ0L*@~IcJcFLLl@PWd26aM`|lkLU64wwwGS zk`YRrzlvexU+~1rV_tRTFEPC>p|A0LaG{T-n?n4HpN#zmjF8el3v=;v7sRa=yP4o} zcd_z#z@4^B00b&xPQH@p+ZoUA;t`@posYU2%slJX_b3(ei(!`>_)}BOktZQ$kFEd! zMIeepm{Lfgw>2o-f}^{YId(%>uV*~F4YB9J zI)a9Wd9H{VgLSqLkVrwZXg>26iGey$5p&uV#qXcQx`6X%G!uV!We%6eB-fi|et49s zsBeeg)@7bwniD0@RsU&H;pvmfzl77IM#+;9vuBe+7O5u8H4nKs?b9kAr>`7Mlcx~Q z4WT)#NUI^L$zq*8+eIXm$qt|=YtFD z(?>T^x1BEk`QxVX(?ZU_yd-#LPWJP`qRQC5!+ih+74E?vyMIV>dv(trH;3QkG0Xb5 z$0w8Xu4unZo$s3PbV+eZe8uX-#)zknXQj@k+s+S`qZYF{5%^vF_C|+@3T7DAvk3@W z1qrsS0nZ;dnV*V?bxk0@@r&<#u20TEJie%_@rPv5XI+R52WIAk6TnsRn}#YEEA8il zkJZC*U@b925VF-p3g8E^nk?K}((<>RUliBm;2lvM_VdAJ1N#MaNw2AN#L_*W;`y`? zqrLoQmjd^poaVQm57sV%ACK@LZ>m)2kj)Vw1Zd#%yUXYI%z0fQQt&&U4>sk_=Jx`? z{N5`(3C4ovO>3gRPbTMjUhP*{Aojer?ffAmo=eW>gOAlYuGwYy(oI7w;7pHgqT>1V zb>fdbo)P@^^TGO2RR7KR=1N@D2abMMLIHEN;Oc5^=Qk0uHHPn@x6PJNL(~V3ejsN5 z)cefCnG%w;lwWW6avsl;N$@+53$+{*^^~=hNL*oR3!I=Pv7}olmEE zKDdGBuLO}(@1tec`h2?J|ARSWVgJ%)S9SjC@6tx6Nv`xgQ5Fw75FM zlKI!?(}Xn72YWKCihp~3J`Dh=o)0d>YWWG-%{!k?|9o)W=c6I~+4_8Xj&57dM@#c- zh@GQ`%U_W{{qw=~osY)yug|B!yluAJ^R;@z%r!M7-(q%T*HWi$e$8N3)H?el`~Tp; z0}yTw9aKCWxo&<4@a--!nrxqB{~yewNC^~f+SSePL96YP=Kq7~H*rH^3GG6JKmUrT zkKZ5pT5X>+{~wIo1v;vEI-TaxdXjG2i$7;t2fs;@>U?*F_DS>q!C?JKFbR6h&NV5; zHC2K6RKh>CNz3ow+HAFb()@q0iS5OQl=%nkb29JquXXchHJ|U+Ex(69&Ho3RB(akk zk16ZscOgsk|Hmt|Pn!P^hDG;MxTC~-y4Ywn*LmE9*1_)qUx2pJJ_{QilgW9WpJ0=7 zp>;gavkWZga#pSxjcGEl?t-hEpO~F}v$fhj-K&Ul z7qC8F45>xMFpmn9f**RDomo`4d)1Hd?+`q+yx*CXQc8XN{3}`;r48u|~^5K|bWaR&^JYXAhh2|7mA5noz6TeY(75>I{)#Winee#F!SCK!&J|6j#p%&65*1nd1jrKvd zIo~{Dq~ZnXvnDqSnu1Y&BG*c#l|R-#rc@sJg;a(15sGu#;)l;f zG4WN$Cs08`gNg`Sn5Oq2q~1E@kL8b*Kh{1T`8(5Yw|{W~0Ml+40Q6@9CKiG-6sGek zJpBEO3)q{&L0?|jn*x9{-2+~PXLhBl;?wCK0QCC@JlT`z2QR|&$EIr(kKk#yYqq!e z>PhrxcJVv0H=VuAbPe77m_qp}gDc$uwDNSiM=ySrQbc=;uY!kXh)p+fHE2TZ%QE*b zF2t}Se<0vWj{^>3vU}k$g?S?#^n)@}9%|_@kckTiE9UI?4?>1@5?qa78c9;7iwo^t z@pGWlP6Q_Xl>&cFe)wfg-78fqfv(pncnZku(r;tE>VKd@rcWBDWD zYQ<%?E`&_7q8idQX^KrZXbUGJa|Xulo&(B+^CSZ3|3i=A2%Uw=``nG|xvX4u|Bc^O4ai)L^I!8G>^1 z^nA3S@^m__N#?ZZ_xonLu~mtBqD5SzL3EbExOmJ}L}9GuE&*S#s0+YCCm@e#)QYG5&);e!Jf$CeoJ{1ScUd5G$* z+Azn4LEroGyD7RLY(gEjO;4kp5El2lCBeLTzi;Pm39cHLTaEYq+gsB5g;U&eFvs-m zEqM9e6c+o6?hS!J9fg{H)E#>2##IBqJ(!K8m)}iyp-)D{MGHsxQnflhp1|%8eUcE| z7UwH8o=6amhr{$VuFUPiRRe!Kfwu?n#UAYbaMik)qHQXcu#j#wtPvO*U9HO}R@b1x zVzDrb#x@2Pz4Y+q5R+$fF3racf5+fT`E}WkCvomk^rtlta+xIB*dK1itaY`kVUGvC z$(Xrlz7WFohJe{}A^Tb7P`EH#A2S4^3-dr*2<@v~Be>#fxU@V1V$OUs2Y07%tZ>lU nw7yw%)EaDQllhk7?E(BBYkhW#ImIfH00000NkvXXu0mjf*T-E- literal 5192 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 literal 5192 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 Date: Wed, 25 Jul 2018 21:27:51 -0700 Subject: [PATCH 05/10] GB, GBA Savedata: Fix savestate loading overwriting saves on reset --- CHANGES | 1 + src/gb/gb.c | 2 +- src/gba/gba.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index c344df2b7..92d0912d8 100644 --- a/CHANGES +++ b/CHANGES @@ -43,6 +43,7 @@ Bugfixes: - GB I/O: DMA register is R/W - GB Video: Fix SCX timing - GBA Video: Improve sprite cycle counting (fixes mgba.io/i/1126) + - GB, GBA Savedata: Fix savestate loading overwriting saves on reset Misc: - GBA Timer: Use global cycles for timers - GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722) diff --git a/src/gb/gb.c b/src/gb/gb.c index cce40b5ce..d5f809fb2 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -295,7 +295,6 @@ void GBUnloadROM(struct GB* gb) { gb->isPristine = false; gb->sramMaskWriteback = false; - GBSavedataUnmask(gb); GBSramDeinit(gb); if (gb->sramRealVf) { gb->sramRealVf->close(gb->sramRealVf); @@ -468,6 +467,7 @@ void GBReset(struct LR35902Core* cpu) { cpu->memory.setActiveRegion(cpu, cpu->pc); + gb->sramMaskWriteback = false; GBSavedataUnmask(gb); } diff --git a/src/gba/gba.c b/src/gba/gba.c index 73a8378a3..45025f228 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -185,6 +185,7 @@ void GBAReset(struct ARMCore* cpu) { struct GBA* gba = (struct GBA*) cpu->master; if (!gba->rr || (!gba->rr->isPlaying(gba->rr) && !gba->rr->isRecording(gba->rr))) { + gba->memory.savedata.maskWriteback = false; GBASavedataUnmask(&gba->memory.savedata); } From 162fd0b353011f6801b097e734f472a18b123d1f Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 28 Jul 2018 00:02:33 -0700 Subject: [PATCH 06/10] GB Audio: More sampling cleanup (fixes #1142) --- src/gb/audio.c | 53 ++++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/src/gb/audio.c b/src/gb/audio.c index a84aad3a8..d0b971cb6 100644 --- a/src/gb/audio.c +++ b/src/gb/audio.c @@ -562,7 +562,7 @@ void GBAudioUpdateFrame(struct GBAudio* audio, struct mTiming* timing) { if (audio->playingCh4 && !audio->ch4.envelope.dead) { --audio->ch4.envelope.nextStep; if (audio->ch4.envelope.nextStep == 0) { - int8_t sample = (audio->ch4.sample > 0) * 0x8; + int8_t sample = audio->ch4.sample > 0; _updateEnvelope(&audio->ch4.envelope); if (audio->ch4.envelope.dead == 2) { mTimingDeschedule(timing, &audio->ch4Event); @@ -575,52 +575,55 @@ void GBAudioUpdateFrame(struct GBAudio* audio, struct mTiming* timing) { } void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { - int sampleLeft = 0; - int sampleRight = 0; + int dcOffset = audio->style == GB_AUDIO_GBA ? 0 : 0x8; + int sampleLeft = dcOffset; + int sampleRight = dcOffset; if (audio->playingCh1 && !audio->forceDisableCh[0]) { if (audio->ch1Left) { - sampleLeft += audio->ch1.sample; + sampleLeft -= audio->ch1.sample; } if (audio->ch1Right) { - sampleRight += audio->ch1.sample; + sampleRight -= audio->ch1.sample; } } if (audio->playingCh2 && !audio->forceDisableCh[1]) { if (audio->ch2Left) { - sampleLeft += audio->ch2.sample; + sampleLeft -= audio->ch2.sample; } if (audio->ch2Right) { - sampleRight += audio->ch2.sample; + sampleRight -= audio->ch2.sample; } } if (audio->playingCh3 && !audio->forceDisableCh[2]) { if (audio->ch3Left) { - sampleLeft += audio->ch3.sample; + sampleLeft -= audio->ch3.sample; } if (audio->ch3Right) { - sampleRight += audio->ch3.sample; + sampleRight -= audio->ch3.sample; } } if (audio->playingCh4 && !audio->forceDisableCh[3]) { if (audio->ch4Left) { - sampleLeft += audio->ch4.sample; + sampleLeft -= audio->ch4.sample; } if (audio->ch4Right) { - sampleRight += audio->ch4.sample; + sampleRight -= audio->ch4.sample; } } - int dcOffset = audio->style == GB_AUDIO_GBA ? 0 : 0x20A; - *left = (sampleLeft - dcOffset) * (1 + audio->volumeLeft); - *right = (sampleRight - dcOffset) * (1 + audio->volumeRight); + sampleLeft <<= 3; + sampleRight <<= 3; + + *left = sampleLeft * (1 + audio->volumeLeft); + *right = sampleRight * (1 + audio->volumeRight); } static void _sample(struct mTiming* timing, void* user, uint32_t cyclesLate) { @@ -719,7 +722,7 @@ bool _writeEnvelope(struct GBAudioEnvelope* envelope, uint8_t value, enum GBAudi } static void _updateSquareSample(struct GBAudioSquareChannel* ch) { - ch->sample = ch->control.hi * ch->envelope.currentVolume * 0x8; + ch->sample = ch->control.hi * ch->envelope.currentVolume; } static int32_t _updateSquareChannel(struct GBAudioSquareChannel* ch) { @@ -820,19 +823,17 @@ static void _updateChannel3(struct mTiming* timing, void* user, uint32_t cyclesL int volume; switch (ch->volume) { case 0: - volume = 0; - break; - case 1: volume = 4; break; - case 2: - volume = 2; + case 1: + volume = 0; break; - case 3: + case 2: volume = 1; break; default: - volume = 3; + case 3: + volume = 2; break; } int start; @@ -870,7 +871,10 @@ static void _updateChannel3(struct mTiming* timing, void* user, uint32_t cyclesL ch->sample = bitsCarry >> 4; break; } - ch->sample *= volume * 2; + if (ch->volume > 3) { + ch->sample += ch->sample << 1; + } + ch->sample >>= volume; audio->ch3.readable = true; if (audio->style == GB_AUDIO_DMG) { mTimingDeschedule(audio->timing, &audio->ch3Fade); @@ -897,8 +901,7 @@ static void _updateChannel4(struct mTiming* timing, void* user, uint32_t cyclesL do { int lsb = ch->lfsr & 1; - ch->sample = lsb * 0x8; - ch->sample *= ch->envelope.currentVolume; + ch->sample = lsb * ch->envelope.currentVolume; ch->lfsr >>= 1; ch->lfsr ^= (lsb * 0x60) << (ch->power ? 0 : 8); cycles += baseCycles; From 575adcaf4cb76a7e9537e6b4d41f017a924dbdf6 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 28 Jul 2018 01:04:36 -0700 Subject: [PATCH 07/10] GB MBC: Add MMM01 --- CHANGES | 2 +- README.md | 5 +-- include/mgba/internal/gb/memory.h | 6 +++ include/mgba/internal/gb/serialize.h | 4 ++ src/gb/mbc.c | 61 +++++++++++++++++++++++++++- src/gb/memory.c | 20 ++++++++- 6 files changed, 89 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index 92d0912d8..7ba90f525 100644 --- a/CHANGES +++ b/CHANGES @@ -15,7 +15,7 @@ Features: - Ability to select GB/GBC/SGB BIOS on console ports - Optional automatic state saving/loading - Access to ur0 and uma0 partitions on the Vita - - Partial support for MBC6, TAMA and HuC-1 GB mappers + - Partial support for MBC6, MMM01, TAMA and HuC-1 GB mappers Bugfixes: - GB Audio: Make audio unsigned with bias (fixes mgba.io/i/749) - GB Serialize: Fix audio state loading diff --git a/README.md b/README.md index 20937c08e..2fa2b691d 100644 --- a/README.md +++ b/README.md @@ -53,15 +53,12 @@ The following mappers are fully supported: The following mappers are partially supported: - MBC6 +- MMM01 - Pocket Cam - TAMA5 - HuC-1 - HuC-3 -The following mappers are not currently supported: - -- MMM01 - ### Planned features - Networked multiplayer link cable support. diff --git a/include/mgba/internal/gb/memory.h b/include/mgba/internal/gb/memory.h index 4c4020df8..7d834080c 100644 --- a/include/mgba/internal/gb/memory.h +++ b/include/mgba/internal/gb/memory.h @@ -129,6 +129,11 @@ struct GBMBC7State { GBMBC7Field eeprom; }; +struct GBMMM01State { + bool locked; + int currentBank0; +}; + struct GBPocketCamState { bool registersActive; uint8_t registers[0x36]; @@ -143,6 +148,7 @@ union GBMBCState { struct GBMBC1State mbc1; struct GBMBC6State mbc6; struct GBMBC7State mbc7; + struct GBMMM01State mmm01; struct GBPocketCamState pocketCam; struct GBTAMA5State tama5; }; diff --git a/include/mgba/internal/gb/serialize.h b/include/mgba/internal/gb/serialize.h index 7628faa0b..f4f36c640 100644 --- a/include/mgba/internal/gb/serialize.h +++ b/include/mgba/internal/gb/serialize.h @@ -373,6 +373,10 @@ struct GBSerializedState { uint16_t sr; uint32_t writable; } mbc7; + struct { + uint8_t locked; + uint8_t bank0; + } mmm01; struct { uint8_t reserved[16]; } padding; diff --git a/src/gb/mbc.c b/src/gb/mbc.c index 605d3d05f..a9afd6d00 100644 --- a/src/gb/mbc.c +++ b/src/gb/mbc.c @@ -9,8 +9,11 @@ #include #include #include +#include #include +const uint32_t GB_LOGO_HASH = 0x46195417; + mLOG_DEFINE_CATEGORY(GB_MBC, "GB MBC", "gb.mbc"); static void _GBMBCNone(struct GB* gb, uint16_t address, uint8_t value) { @@ -27,6 +30,7 @@ static void _GBMBC3(struct GB*, uint16_t address, uint8_t value); static void _GBMBC5(struct GB*, uint16_t address, uint8_t value); static void _GBMBC6(struct GB*, uint16_t address, uint8_t value); static void _GBMBC7(struct GB*, uint16_t address, uint8_t value); +static void _GBMMM01(struct GB*, uint16_t address, uint8_t value); static void _GBHuC1(struct GB*, uint16_t address, uint8_t value); static void _GBHuC3(struct GB*, uint16_t address, uint8_t value); static void _GBPocketCam(struct GB* gb, uint16_t address, uint8_t value); @@ -135,6 +139,12 @@ void GBMBCSwitchSramHalfBank(struct GB* gb, int half, int bank) { void GBMBCInit(struct GB* gb) { const struct GBCartridge* cart = (const struct GBCartridge*) &gb->memory.rom[0x100]; if (gb->memory.rom) { + if (gb->memory.romSize >= 0x8000) { + const struct GBCartridge* cartFooter = (const struct GBCartridge*) &gb->memory.rom[gb->memory.romSize - 0x7F00]; + if (doCrc32(cartFooter->logo, sizeof(cartFooter->logo)) == GB_LOGO_HASH) { + cart = cartFooter; + } + } switch (cart->ramSize) { case 0: gb->sramSize = 0; @@ -178,6 +188,11 @@ void GBMBCInit(struct GB* gb) { case 6: gb->memory.mbcType = GB_MBC2; break; + case 0x0B: + case 0x0C: + case 0x0D: + gb->memory.mbcType = GB_MMM01; + break; case 0x0F: case 0x10: gb->memory.mbcType = GB_MBC3_RTC; @@ -256,8 +271,7 @@ void GBMBCInit(struct GB* gb) { gb->sramSize = 0x100; break; case GB_MMM01: - mLOG(GB_MBC, WARN, "unimplemented MBC: MMM01"); - gb->memory.mbcWrite = _GBMBC1; + gb->memory.mbcWrite = _GBMMM01; break; case GB_HuC1: gb->memory.mbcWrite = _GBHuC1; @@ -821,6 +835,49 @@ static void _GBMBC7Write(struct GBMemory* memory, uint16_t address, uint8_t valu mbc7->eeprom = value; } +void _GBMMM01(struct GB* gb, uint16_t address, uint8_t value) { + struct GBMemory* memory = &gb->memory; + if (!memory->mbcState.mmm01.locked) { + switch (address >> 13) { + case 0x0: + memory->mbcState.mmm01.locked = true; + GBMBCSwitchBank0(gb, memory->mbcState.mmm01.currentBank0); + break; + case 0x1: + memory->mbcState.mmm01.currentBank0 = value & 0x3F; + break; + default: + // TODO + mLOG(GB_MBC, STUB, "MMM01 unknown address: %04X:%02X", address, value); + break; + } + return; + } + switch (address >> 13) { + case 0x0: + switch (value) { + case 0xA: + memory->sramAccess = true; + GBMBCSwitchSramBank(gb, memory->sramCurrentBank); + break; + default: + memory->sramAccess = false; + break; + } + break; + case 0x1: + GBMBCSwitchBank(gb, value + memory->mbcState.mmm01.currentBank0); + break; + case 0x2: + GBMBCSwitchSramBank(gb, value); + break; + default: + // TODO + mLOG(GB_MBC, STUB, "MMM01 unknown address: %04X:%02X", address, value); + break; + } +} + void _GBHuC1(struct GB* gb, uint16_t address, uint8_t value) { struct GBMemory* memory = &gb->memory; int bank = value & 0x3F; diff --git a/src/gb/memory.c b/src/gb/memory.c index 229366078..688d43676 100644 --- a/src/gb/memory.c +++ b/src/gb/memory.c @@ -176,6 +176,8 @@ void GBMemoryReset(struct GB* gb) { gb->memory.hdmaEvent.priority = 0x41; memset(&gb->memory.hram, 0, sizeof(gb->memory.hram)); + + GBMBCInit(gb); switch (gb->memory.mbcType) { case GB_MBC1: gb->memory.mbcState.mbc1.mode = 0; @@ -187,11 +189,12 @@ void GBMemoryReset(struct GB* gb) { GBMBCSwitchSramHalfBank(gb, 0, 0); GBMBCSwitchSramHalfBank(gb, 0, 1); break; + case GB_MMM01: + GBMBCSwitchBank0(gb, gb->memory.romSize / GB_SIZE_CART_BANK0 - 2); + GBMBCSwitchBank(gb, gb->memory.romSize / GB_SIZE_CART_BANK0 - 1); default: memset(&gb->memory.mbcState, 0, sizeof(gb->memory.mbcState)); } - - GBMBCInit(gb); gb->memory.sramBank = gb->memory.sram; if (!gb->memory.wram) { @@ -688,6 +691,10 @@ void GBMemorySerialize(const struct GB* gb, struct GBSerializedState* state) { STORE_16LE(memory->mbcState.mbc7.sr, 0, &state->memory.mbc7.sr); STORE_32LE(memory->mbcState.mbc7.writable, 0, &state->memory.mbc7.writable); break; + case GB_MMM01: + state->memory.mmm01.locked = memory->mbcState.mmm01.locked; + state->memory.mmm01.bank0 = memory->mbcState.mmm01.currentBank0; + break; default: break; } @@ -755,6 +762,15 @@ void GBMemoryDeserialize(struct GB* gb, const struct GBSerializedState* state) { LOAD_16LE(memory->mbcState.mbc7.sr, 0, &state->memory.mbc7.sr); LOAD_32LE(memory->mbcState.mbc7.writable, 0, &state->memory.mbc7.writable); break; + case GB_MMM01: + memory->mbcState.mmm01.locked = state->memory.mmm01.locked; + memory->mbcState.mmm01.currentBank0 = state->memory.mmm01.bank0; + if (memory->mbcState.mmm01.locked) { + GBMBCSwitchBank0(gb, memory->mbcState.mmm01.currentBank0); + } else { + GBMBCSwitchBank0(gb, gb->memory.romSize / GB_SIZE_CART_BANK0 - 2); + } + break; default: break; } From ec2e323d22001075f7b110502459a2d6dbbf7de2 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 1 Aug 2018 08:41:18 -0700 Subject: [PATCH 08/10] GB MBC: Fix switching bank 0 --- src/gb/mbc.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/gb/mbc.c b/src/gb/mbc.c index a9afd6d00..05160d876 100644 --- a/src/gb/mbc.c +++ b/src/gb/mbc.c @@ -61,7 +61,7 @@ void GBMBCSwitchBank(struct GB* gb, int bank) { } void GBMBCSwitchBank0(struct GB* gb, int bank) { - size_t bankStart = bank * GB_SIZE_CART_BANK0 << gb->memory.mbcState.mbc1.multicartStride; + size_t bankStart = bank * GB_SIZE_CART_BANK0; if (bankStart + GB_SIZE_CART_BANK0 > gb->memory.romSize) { mLOG(GB_MBC, GAME_ERROR, "Attempting to switch to an invalid ROM bank: %0X", bank); bankStart &= (gb->memory.romSize - 1); @@ -407,7 +407,7 @@ void _GBMBC1(struct GB* gb, uint16_t address, uint8_t value) { case 0x2: bank &= 3; if (memory->mbcState.mbc1.mode) { - GBMBCSwitchBank0(gb, bank); + GBMBCSwitchBank0(gb, bank << gb->memory.mbcState.mbc1.multicartStride); GBMBCSwitchSramBank(gb, bank); } GBMBCSwitchBank(gb, (bank << memory->mbcState.mbc1.multicartStride) | (memory->currentBank & (stride - 1))); @@ -415,7 +415,7 @@ void _GBMBC1(struct GB* gb, uint16_t address, uint8_t value) { case 0x3: memory->mbcState.mbc1.mode = value & 1; if (memory->mbcState.mbc1.mode) { - GBMBCSwitchBank0(gb, memory->currentBank >> memory->mbcState.mbc1.multicartStride); + GBMBCSwitchBank0(gb, memory->currentBank & ~((1 << memory->mbcState.mbc1.multicartStride) - 1)); } else { GBMBCSwitchBank0(gb, 0); GBMBCSwitchSramBank(gb, 0); @@ -844,7 +844,12 @@ void _GBMMM01(struct GB* gb, uint16_t address, uint8_t value) { GBMBCSwitchBank0(gb, memory->mbcState.mmm01.currentBank0); break; case 0x1: - memory->mbcState.mmm01.currentBank0 = value & 0x3F; + memory->mbcState.mmm01.currentBank0 &= ~0x7F; + memory->mbcState.mmm01.currentBank0 |= value & 0x7F; + break; + case 0x2: + memory->mbcState.mmm01.currentBank0 &= ~0x180; + memory->mbcState.mmm01.currentBank0 |= (value & 0x30) << 3; break; default: // TODO From 179c49e5f4c13fe79e136f85989406307d1a2ddd Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 2 Aug 2018 23:11:14 -0700 Subject: [PATCH 09/10] GB Audio: Fix giving blip the wrong diff when blocking --- src/gb/audio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gb/audio.c b/src/gb/audio.c index d0b971cb6..daf479a26 100644 --- a/src/gb/audio.c +++ b/src/gb/audio.c @@ -647,6 +647,8 @@ static void _sample(struct mTiming* timing, void* user, uint32_t cyclesLate) { if ((size_t) blip_samples_avail(audio->left) < audio->samples) { blip_add_delta(audio->left, audio->clock, sampleLeft - audio->lastLeft); blip_add_delta(audio->right, audio->clock, sampleRight - audio->lastRight); + audio->lastLeft = sampleLeft; + audio->lastRight = sampleRight; audio->clock += audio->sampleInterval; if (audio->clock >= CLOCKS_PER_BLIP_FRAME) { blip_end_frame(audio->left, CLOCKS_PER_BLIP_FRAME); @@ -654,8 +656,6 @@ static void _sample(struct mTiming* timing, void* user, uint32_t cyclesLate) { audio->clock -= CLOCKS_PER_BLIP_FRAME; } } - audio->lastLeft = sampleLeft; - audio->lastRight = sampleRight; produced = blip_samples_avail(audio->left); if (audio->p->stream && audio->p->stream->postAudioFrame) { audio->p->stream->postAudioFrame(audio->p->stream, sampleLeft, sampleRight); From 20c99d2f929cb655866ea1a1ec23d6ca163d6d01 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 2 Aug 2018 23:11:44 -0700 Subject: [PATCH 10/10] Wii: Use fixed buffer --- src/platform/wii/CMakeLists.txt | 2 +- src/platform/wii/main.c | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/platform/wii/CMakeLists.txt b/src/platform/wii/CMakeLists.txt index b72ac2d5c..165dba60b 100644 --- a/src/platform/wii/CMakeLists.txt +++ b/src/platform/wii/CMakeLists.txt @@ -3,7 +3,7 @@ find_program(GXTEXCONV gxtexconv) find_program(RAW2C raw2c) find_program(WIILOAD wiiload) -set(OS_DEFINES COLOR_16_BIT COLOR_5_6_5 USE_VFS_FILE IOAPI_NO_64) +set(OS_DEFINES COLOR_16_BIT COLOR_5_6_5 USE_VFS_FILE IOAPI_NO_64 FIXED_ROM_BUFFER) list(APPEND CORE_VFS_SRC ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-file.c ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-dirent.c ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-devlist.c) include_directories(${CMAKE_CURRENT_BINARY_DIR}) diff --git a/src/platform/wii/main.c b/src/platform/wii/main.c index 6a359a637..ef0c3f84c 100644 --- a/src/platform/wii/main.c +++ b/src/platform/wii/main.c @@ -253,7 +253,8 @@ int main(int argc, char* argv[]) { memset(audioBuffer, 0, sizeof(audioBuffer)); #ifdef FIXED_ROM_BUFFER romBufferSize = SIZE_CART0; - romBuffer = anonymousMemoryMap(romBufferSize); + romBuffer = SYS_GetArena2Lo(); + SYS_SetArena2Lo((void*)((intptr_t) romBuffer + SIZE_CART0)); #endif #if !defined(COLOR_16_BIT) && !defined(COLOR_5_6_5) @@ -530,10 +531,6 @@ int main(int argc, char* argv[]) { VIDEO_WaitVSync(); mGUIDeinit(&runner); -#ifdef FIXED_ROM_BUFFER - mappedMemoryFree(romBuffer, romBufferSize); -#endif - free(fifo); free(texmem); free(rescaleTexmem);