From 5cbbe624d3741c088b83774223dc368d568ff724 Mon Sep 17 00:00:00 2001 From: a Date: Mon, 14 Jul 2025 10:50:47 -0400 Subject: [PATCH] Add 120 star tas benchmark --- Makefile | 48 ++++++++++++++++++++++++++---------- data/benchmark_replay.m64 | Bin 0 -> 562892 bytes include/cfg/benchmark.h | 8 ++++++ lib/hackerlibultra/Makefile | 2 +- src/game/benchmark.c | 48 ++++++++++++++++++++++++++++++++++++ src/game/benchmark.h | 6 +++++ src/game/game_init.c | 25 ++++++++++++++++--- src/game/geo_misc.c | 9 +++++++ 8 files changed, 128 insertions(+), 18 deletions(-) create mode 100644 data/benchmark_replay.m64 create mode 100644 include/cfg/benchmark.h create mode 100644 src/game/benchmark.c create mode 100644 src/game/benchmark.h diff --git a/Makefile b/Makefile index 9956d621..fc6458c4 100644 --- a/Makefile +++ b/Makefile @@ -5,14 +5,43 @@ include util.mk # Default target default: all +# Preprocessor definitions +DEFINES := + # Use Libdragon IPL3 # WARNING: This CAN and WILL break certain (most) emulators. # Use if you care about console or ares boot times. -LIBDRAGON_IPL3 := 0 +LIBDRAGON_IPL3 ?= 0 -# Preprocessor definitions -DEFINES := +# Build types +# debug - Debug build +# general - General release build +# final - Final release build with no crash screen, game will reset upon exception. + +RELEASE ?= debug + +# Benchmark build +# Builds a benchmark build that runs a 120 star TAS for automated verification. +# This setting is also in include/cfg/benchmark.h, but provided here as well for automation purposes. + +BENCHMARK ?= 0 + +ifeq ($(BENCHMARK), 1) + DEFINES += CFG_BENCHMARK=1 + RELEASE = general +endif + +ifeq ($(RELEASE), debug) + OPT_FLAGS := -Og -ggdb3 + DEFINES += _DEBUG=1 +else ifeq ($(RELEASE), general) + OPT_FLAGS := -Os -ggdb3 +else ifeq ($(RELEASE), final) + OPT_FLAGS := -Os +else + $(error Invalid build release setting.) +endif ifeq ($(LIBDRAGON_IPL3), 1) DEFINES += LIBDRAGON_IPL3=1 @@ -87,17 +116,9 @@ else ifeq ($(GRUCODE),f3dzex) # Fast3DZEX (2.0J / Animal Forest - Dōbutsu no Mo DEFINES += F3DZEX_GBI_2=1 F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1 endif -NON_MATCHING := 1 MIPSISET := -mips3 -OPT_FLAGS := -Os - - -# NON_MATCHING - whether to build a matching, identical copy of the ROM -# 1 - enable some alternate, more portable code that does not produce a matching ROM -# 0 - build a matching ROM -NON_MATCHING ?= 0 -$(eval $(call validate-option,NON_MATCHING,0 1)) +NON_MATCHING := 1 ifeq ($(TARGET_N64),0) NON_MATCHING := 1 endif @@ -140,6 +161,7 @@ ifeq ($(filter clean distclean,$(MAKECMDGOALS)),) else $(info IPL: Nintendo IPL3) endif + $(info Build type: $(RELEASE)) $(info =======================) endif @@ -306,7 +328,7 @@ endif # C compiler options CFLAGS = -G 0 $(TARGET_CFLAGS) $(DEF_INC_CFLAGS) $(foreach i,$(INCLUDE_DIRS),--embed-dir=$(i)) -CFLAGS += -std=gnu23 -fno-inline-functions -Wno-unused-variable -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -ffreestanding -fwrapv -Wall -Wextra +CFLAGS += -std=gnu23 -fno-inline -Wno-unused-variable -mno-shared -march=vr4300 -mfix4300 -mabi=32 -mhard-float -mdivide-breaks -fno-unsafe-math-optimizations -fno-stack-protector -fno-common -fno-zero-initialized-in-bss -fno-PIC -mno-abicalls -fno-strict-aliasing -ffreestanding -fwrapv -Wall -Wextra CFLAGS += -Wno-missing-braces -Wno-maybe-uninitialized ASFLAGS := -march=vr4300 -mabi=32 $(foreach i,$(INCLUDE_DIRS),-I$(i)) $(foreach d,$(DEFINES),--defsym $(d)) diff --git a/data/benchmark_replay.m64 b/data/benchmark_replay.m64 new file mode 100644 index 0000000000000000000000000000000000000000..1962ca3ade3fee110b07c354fdf78e8c991baf51 GIT binary patch literal 562892 zcmeY@Gm&CuU|{&~cE@{n9t%U>Yy}1zMh1q>DohMa3=9m641*s8hX%L?Dfl`DdHO4u znP9p%IZFG#E2c1!B3_9}`Rc_AE}2EC$tA`v77B)XW<+WQD?`yAoL`!kLYfI7j=>6^ zc?G2<3IRE#>6v*72Bg^^6da(Cnp>KaSdy8a2Q>riFd_+GZ1;50M{A3-4 z;{3eK=2!VrfySj)E(QaL+Hw&r8kKQSeGFE-ltk@UF~F%+pcu&CkxxFUkZl za!T^cbQJvZOENO^(#^)P&Z;iD-7!;N|vR$w?^@4)b|o`KlqkcBjH!|3=9a|!0@TQf#Gv~1H%_2{I$M;0ffKTH!z^$0}Kpi3=BW&iNOsF!u8a_ zAL|;`Iy+qV)_6!u1Rcf=KRxxdCA>!ak0A z1_2IGT1Cd7ph8L=4X>eP$_@pFh&E4GfE*^n!W?h6VK-7+^F^96~Q(sBctYsBeVOATQU)GceTGGcaUAalHit z12QIDSs;}KAOlD7APNEGa)DxJaZzl-pfLaxF364n@f#RK>e2B529bIO1|7V(fkCGp z9UoxOsmF)W)x-D<42|^-3|0&b0{rV31h@_`2ypLZ5a8OwAi%YoL4a#7g8=s)RLs-B zAOOO=4GaS84GauP!w(D8Ph()HpT+>AL2Lw`>cCJxl>veo7(~G3RU-of1Cdy*k%2)2 zit8&F7)J3B4TGf&4E4x(6$3*(8b;3XqwLWTASwhvRRc&Nj0Umc7+DZsI~=5LFv!Cl zP7?;WZw~9D*D5eH)HWbtXx|+!kDX5whm9Iag%ALxVJa9iXpLxKI9Gpw;T&j;%8G%Z zfe?0VV7OGzKn8ALI9rbkA7D6JkBk`@&el^CA7D6B55f#W3=9mQ-Yzw1Sj>XVg|TT( zgY3eB9YA6X*7XcftiWJh-vA$91h)~9`~Fm7gT@qa;d&kh26Ay-Jp%)=*uS2E0U1lz zGcdp~Y`le7+O3{}VW{BxQU-?l5-0{mH7WQ$14I48!HOMd>b5d&28P@^28M>u&@q2Y z$oNmKCj&#RKLbN;C<8-n3IjuZ0RuyI2?IlAJp)5wJp)5dJp+SFJp;q0dIp9zD&-$) z=gV4q1_o@H9?m6ZyimKIfq@WyThG8iDn_2KfQ`Xoqmc_|eg*~xbS(UqfdPb()qz?8 zFpMldh}gquoN5q-DwUjark;U;mY7P;B*7R^zm9?7Sv@9h$Y)@HUKPc;!Lb6vy7~n~UM@yd<2~54>0iY!q!BAX%2>Z24svhj?%zTAIm@jb|67*14DgW z14DfjI(A^Fk7A$!ZeXYnV!*^63=H+?*olFm-U(^l1E>tGcL0wy1=ce#;KvON^@R*% zV}?2g1_(aDpsd0mAYaG8Ks($(irE77#S9D}jJn1Tw&u@4V0AqM!>W1)@EGgWdIpA@ z^$ZO6>KVXm?w-_x*4s5OysB?tcvIiN@UFgr;RAHt8fbkT2!qztfiMFotzuxv+B(=e zB;51?@OmQ9nj&gpp?U@eVlZqi5;xfG=;?DYzBtPX00ssy z_G4hE_hVpah#-v7(=jgo&Uyw0bc{_cIc01^JOcwQ@P>K@22yZC0s{j+3~G0S`qxgN zK7cs`L%jq8Lp?tOLp?VXvoSE#vx1s_3=H+c3=H*(3=H+^3=H+&koW+_$xmn=Fs^4{ zaEIn|(0&|H9~v~b3@T$B(c%?UR)N;TfcEQv$|4X3+bsmOix%ZF%uHSehI)Gj@HQFU zdIkm%2DuX*gUU)!{|Grvfcy&T^L(jiU;trcIT#zH23MU2G7lSu=^e~8s4f7N=b-(X zFhAgPFKF*)Eht?@K+}r}14F$b5!e7)Cul;~ov1M|)T=Tu)XOq3)XU(&AU$pj4E13Q z4E6btvbnwrQpXfP*Q6xZGcY7V_nw04B2fJV>idG?i`p1HTtIbry%qyQ3UohgeGGIw z(Vu~#o(eb(>bEdxeQOWh`v$7>abb`fJ3w_+Ap=808Wg86Ff`!8i3|)4&JjAdjV&NBXpb#uuOA45_SwQPXkTrEB?ALd*o1+h0gOTYKUk(mrW-(Bhm>QWz06t+ z4E4qg4D~h)4E1IV4E31|4D~sXeaofw3=AdE{e_@1O}(ChfmDpIO$*CM*l36&5$*`HSsjS)z`)fo zim4F>kSq%-j~p248Aj=P23m##WPREGdIkm%-dE4S0K$9f85lsgL56{$L6?D{K?i|% z)iW>*90r{kLOJGOXkcImV+IEBT4>OE=u!oS`qBjq^a_@A1_n@D3KcsrfV!HXvpl|V9bmwZ85q8Bq2f#R3LKZ} z6KH@z=7RQufcAtqFkGr1sx+wF2V((H)xprf0HVpn4vY*9Ljp4}G&qdn(J;W827Ylk zFpz>7I6(8MNSFaMCq^rbn0XszjfMc-LjbfC5!AQ^(ICqk7#KifERebb)SqBrI8_h9 z7wZ`q4q#vfh6D8r1{rQ(xLA)5GcbVsLN5#oR_quQ=%8|imNa&oQAN@1N0lXk#|T<` z+Tg(eqLDFpO)69lgZ-hNfq~W-G!_iO4GiDvv0>8J$b74JfSN^)UW6X5h6V<%1_p*# zB;tt^85kxZVGth`J1|U|=)f>>B7{a~gZL9BGB9+_Y+z_S>_F^sD%Tc0-ARiL|6do78nhltAdJQvK<*1YQiA6Ad7(^v=nj%B4{24biN>HP6o8T z1vF+%DTa+zg2uZ+7&Ko=3k;gy9jUk;G_OGx295WSim?y%HJo8!z=`u17#iTXfuSKB z8)jf=2&WHTSKU+NLv=Y>MYKam4~pAELQbcF#~AM6g=hx8h1j*{tXO|>xsvpvqoW9vA%(UIvBKW6f|xO!yx_v z+Se1t4S5WV2&};9TEBqN6*N!k$iPsK6+_y~hZ`6e$i?XMcFXD+7(n=BJp%&> z!`expc{d1FV0c%*fPsrb%w4~LfqJ+Bd?s*1WCH^xKEQBOgMpzThYWn0fuR8zPiA0f zfZ`<$3=ANA3Y0V_Ffi0(#SUQc+y({)1a@G^ZD?S~Z6KCL){CDFYBzI$h@pkSd%qY! z=kOsgmC6s4vVaIP6&M)m6NVv%ghPET0|PD$T8oDdgVt-{#tqQ*nGFmLxe(l0-@pLE z%PJZeHq=8fXl@0c9c0RZ%6Je4pXvLont=g^>p2t{>RoZ+1q}D=NAYMFAg2KZhPHZA za07>1Ju*JPz;DXHkW`N!@2zKGK*Ah*>l+x}*E1kt1%~(a=y+%q>Z7h54S~@RpkWAr zhEPGq!)Op21w$mz&jN&vr!&?oFfb0fadcA0^-(-L0Gz=vmJaeZB(6a$Dqv6-f&$#Y z@VuTD7}VEiV7OCH3~pe!Q{TXFx88x_Zao887__InqrQOwff*P;YhtlsP&=0a6a}EZ zAf%}c9+CpBAIFFF>lqk87<88cXi5w#=3ro`N5KvZ^&EsS14F$46l*gu)T3g7_w@|u z7^&@n+zuI%Y_Q+z%NYbvv4TK-B{`UZ;Zr>bgZhTl#SLBx46o~vF#`i=tcqL=8J~gN ziGt1stx*PH&^~X_dSOi5zyLa908<=s4@*60y**jj0d$2Ci5R4(fx(PnsM8=nP!k_u z5I!@C2X7cKFlaWAiyNSN6&N%dFfpu-p&Ctv#=@u(qaiRF0s{~Npal`21|z8539=qU zgZOYZXl@9EK?0z4#@H~V56D;#I>#OvL(W?QookPdA*PLz0~-RM$i~(899Wmp(ssmp zE(L}Lj|CX(x)Ab^GYM(OU%=2dPGNE}@Z#0ROR3kJ=L5re6pR4DTvOFaVv94pr| zun>vCcYPw?_X#>jK(3yF0fb>}bQ&Z_2vd}WKxZR>)`59K_H<(lY|!1L*f4nP2DA?u zc?<`}w_#u?Ph?=Ifa0=L1_lr=PGevwNo!!J2kozqU|^_@#Ez?=;uQ%D3{?pXObm@! zG492dpf(5u3xF1Bl8zM^R@Enf&vyi!@i>YhXI)Z192)S3F=#C)Xlw|C^}y#|9AJ>C zN5$Z?0zu~mf-$IEqb!4C%L9<}2|?u}$b4KhrS^i%#b*XCyYcD4Ehkg2z#vn<0DSjw zqaOnU82d6XG-AUrc_bQpIN`RBp`HO$-ow|rfX9|WYskRo6F|n$$uJXc9&vh+!w|1q z@tEtt5LeGY1a4r6tB0s1&TSC)pq@9|z@Sl2DF&@eWMIgu$BmK3Z9w}YAx9`foI{G! zN2uBchK3&?%)rp_gWlKyY$q-IHUn!mdVg|YT{CL?a1Q}c{eX@^b89#X!{Htrqy8HW zfzc4a5dxqwY#bQWpaNB07&;pm>Yu|fXq=RR;aLMRZeV!U-~bV8W?*>Q$iVQliGks1 zD+9xm76yjL%?u2Wni&`#wlXk0XlG!!*UrFjr=5Y}Ml&h~TgwL~!35}hamd}53Jh-b z3m6)vD?spE1%?J>+^)dT)1bgGABtx*C@_HVqy_~B5C+MCaA$)80|+-XDKLO>y8=T4 z2zM(mG)z`tXqc+N&@fwpp<%uPL&IVPhLhJ67_NL!V7U5W0pso#1(w|{3m9fJDKN}v zTENiIsldR%puoV;0HPN#G_)!(G|W<9Xjr4b(6Cp5q2aUwL$llhhK7CxhK30W42@40 zFf`m%U}$)wz|g>;z|bI|z|bI}z|f$mz|f!x!V4H?)GNU8>N*96+w~CqtzLnFbi9B; zyj}q>7O7ESXeb~G3p6AtfG|Ttk^)0R(gKG1G6e|EP!Irz11Kzz@mB=~229Ms@bv*h zeeD9Qn1Nvd0|YlPFi0GLp3?-`w+C+AgVHAh1H;J%28I<-3`(xx@MKuP(7>>Op?($Z zF*tD!Y66r;(c1$sK8`j4&H*`C{~kt@svlWBDQ1AwV#CPh;bVjH3}TNqWbgR!;lnzu zIHL_;(BO~*=Oy^vCa^nBFlm_G=rrmW0PM~gC=EW+2$74yb`c>4TVD&JVRxB<_HTpm zbMSpNpgU`*j~gl(81Q0S28IR_G3*=;(0SIxVsJR|FfcSoF)%cM_T8B`Ff^z$5XPzu z3=JQl{d&;tQlK-}G#MBg%orFNTp1V|LKzqu(is>UY8V)L>lqkk)iW?Gh2Af>4SG)7 z+7c9MjbaA0;3^7{}2FGk|0}QG>DCYaY~@5BAo;6 zdx6g!q?H{AS2fo&FhFnvLu-8lLpyYzIOtBo-uecH3H1yNlj<25rqnYqOs{8Pm|4%j zFsGh@VO~80!@_z7h9%JRDOP~ndJf<_|2Eb$Fl?!Bz__ymc8AB2dIkm<2DL#z7^9v7 zIT3Ut8i)q9^LH~aG)!cGjIS&M^+g#NKzCu#1B31#0AbI11qQGB1&|9Vz+)9qHcYI3 z0mCBbcn&A0Tiy3;_8M52JHq0hGLpw z2Zo{s20R$lIVKl_Dj!t*qk)0pN5cUI29hy0H=vpg9-;;nO*nA_!}bOSqVb`I28Kfo z3=D@F9H2Ca4Zh{ zw*eP!U=V2_1~V{-G~mJ@{kY_a5eKzpU>GzO;K0yup8*SQ0E_)(V_^8f#=rogL70_+ zfnjw63@b3KZdia7gW3$C^$HC1z#57Q3~CY!7;3pdZ4%;Xv3dmtvHArJ@9IHknqk8W z7+mW?X2LKclR)m|0QdC;Kz(}k1_lNNPKJl{wpF(z@z2$4GeAd z2Nigz{TMPfcr}f47IJ87}?zo3=Iqob_@&+ zwYYEtL!~t)u8(hEs10jisJDY*28Mb&>=<^BCycK5geHi3$exl$D2?haQ0R~1VH+l2 z9T*zGn1P|;Do3}Vv)H!w7CQ42FL zG_W6FXyAb29|ss3ej;HIAA~__uwn*=1`Y;>hVP*HuLBGX-;pp#9~d(*G=S#S!0ZDI z4cO@K4G=TFF)%dX#SIJ%-$=m>3=OwH*ny#;AA}hgZZr^w5#{A5i@G5ID!Hh2Cl*p$ z0<=eoOdQ+Lz<`PwnCe9s80tkBm_TccOa_MfjSLL+rx_SPZDbf0`*hsKyC#!*;_yarhI(`q@50OBWT_NbTubLKPY`s1LO21XfGKR zv4Q|Y{Q?3Q90njekt!vy7|r;gutdjN4GawESf~Mc+!!<#4H|c*2L{;%8eBlfpvE*B z21O;P#}2ym5QI5EV;2hq)EcOP85qoJ#S9D#EDS#wSQvgna76Gy@w01A`y~14%Tfy#mrV7->+u3FIGav;_1lc3RM&)CsZ^8!ZC0 z7Z2SaV$?t?J|JS$Kn!Mpnhm0HVFwYT1`r0h0T<1{VAMb?ZeTEMfZ+oSvNstRLK+wt zKx3@P7$gS5NM}YPpC8SzxBdXb37TTqd=4(U0XpAFw<1gIU)z+m41!wL*G4Gjzq4GauU4Gav< z4Gavf4GawKB;fD{28JxqR9_KVXydzjQSFc{T0Fc{PyU=THCU;y30rCra! z06I?=bZ&@xJp+SUJp+RZ6oby-QL1NPP^@QQ5UFQi5C%1{K_L!mn}TRilm0UULp>NP zu+;xpz))MSfEC}bS75-08^RPA$j0Fc3=QGnHZnuQXDIzlfuZ5!0)~c3JeV(S_h;a4S!T%V1Q!=frkw!m_ez50X)$L z3LY2+i8U->V1Qr+hK2M6Q8Bx1Jmf zJth?Rp0W?fSt+Qx=Zk_y@%^GKQQFO+;E^AYKi! z`6RMoYoTFugB1fq0~aR7>1^m)YM6eKX*}M<8h*t152s^sScYsSNH54wFr^^&5Wv{N z3KSP`ad25PG6;~r2QwZ_u>eZ$1o03^|ARTcN8N_H?*?ahz{*?-GYGg9hPDh0ECyOv zh=l9S7#PUH;tUM+II#jly*LcxQ%6NPeg=km5H@FEsHY|-H+-n2&y<0oevo1cljx}S zAr%6k(t}I~P%i^I^2C9mUWI|7UWb99-l&10 z-UvjKh@nH(U>AM>lVBpcfq?;n6&S=C8W@o8(}1uQ7(Uh01216EgzrTLjU$2j(F+*% zfyEXuECG7(QoRF%Qay}jV9=_^ zjzRlzP;f8p|iusym}ztbqX)J22FXF;ER-Ys1Ob zH!#%yU?7YI7#Qkd7(9-*fWfk!fk6}nH!uj-qhgWz1_n$FSuPX{s!w6+#h9zL#bU?3ec zfb)Vnh<)O#>M&N}mDV5s+FV5kpZV5nDu z;Rc3!B^ZW@VWAluVCR%kJ)e&nI2r<@Auvos0M=B2(HP!@NbIX;V8Dh!g$`pqsQtQt zfw3MmHVeWE4Cm_cVFpI%dAOr=Jp<^xU~J*Qa;_dZoEjL;)q~C!2E_+G#`!Q30;vK_ z3=9m|Fp@b93_|sT4Ie;r6Rvg_y0`*^Q2hc1p?VNa9=5AjV8FzXdjUXq1E69DhAH(9 z3>WGf7%m{uck3G%?$$dnfM`fV1KVCf$i3Z|?Q76DDQxcyhz9A!MT6vUVTkz_^$ZLM z+`tf255ZsR8yFCnf#FL%`52a%zCjs>8yXlO7<4`=GIn4%+<*%+FdS$=;Qb8@4Eq`w z81^7slfq^*EcvYtcBt=4Gs*e8ypx`H8?P= zY;a&$2F48x9nI9k{ml&w{ml#vy$ytM!%7B*hT{wj4T1~|Ezmn6K;zn8^$ZMQ^$ZLV z^$ZOD^$ZNsH3|%0>lZLQs9(VFuzmrzFuX*= zuj&^tyslrs@TPtN!&~qF8egW7_kh!?wt3=GH^6!suoAI`u~Z^^(=uL;8n4E668Fj&>& z!wL*m^&tF!!My$fg9913VbTMJhDi(z6B&(J?5MBBw3v z>;?w;dKdqf`8OEFgRo20}Rgf$QY5{Vd)-0H!zgfW5=TP=;<6ZKGncb&x(dY;~h}kP}IQC zP{hChrf)VdG=T7}28M>)4GhX4HJ=(7>XGrs28Mb(xT?N^0TUm9jDdJV$3l>4F9wGC zD+~W`g8_{`Ve~I28McJC>CsBsKKho` zv0#t-0}Lf7xPhUh9v5a{D5)n0H!v{#WMHU&OD=W*orMM&M1#-WL&|&5eNPR+3m8J{ zX^j~e-qn+f8^o*|D8p6_4Pp??z;LU97~CMTseT~v0+Gx0ApAgt!AwEqP(862oL2=v z`4xsiXYCl&GcZiViWLMJ>>F4f*V7X-FubZ~V0cIpZXi)T0|V%8SXA7=@T9(h;VA)p zr@ny!8-5Eak0lxy>fxAyq5d8+ZeXb2g$*+>m^UymfX+1lVNm@HDpn!5fwAER95XZ= zYQV%B4lp#>fN%ptgFOf{Ff@cSFf=S9jA4DR(+vy^&p^W)(7R-$8WG2i+fVfZ>`Pe$2pdfWho51Z%!MzyRXUZ8*Syi5VCcG%zq+ z0AmG)4-E?#E+OImh6M~wp#D+o0)~bO3m6(^EMRC@x`3f!{Q`!DtqT|$_Ag*)II@7D z;p75_h6@WA8tyD$Xn3-Kq2V30AH}eMp}~zD%)k&>j~hekVF!+SIeK9Rj=S|B?7(ri z9)cz69XO;ASVXGc0g4YmX$O%v^`v1?+Z{Cj2FEWU^LO>z85khAfuVjowebO{nG6iD zy`;El&>0QHsKcfPq!)o9Cpts?BGS;nAdCe|H8e0tH5_2ztjEMW4WRXMAk4s!)BwRC zGp{!^FkEkFU^?2+z%Ytw7Y5=D4GffF@Hh;Uc*6p*QH(7N7#PGG7#P?;A~5S`1_suz z2+Z)EfdP(xGB7awhGIxXO^^i5RTET1kpfWPnE~8BaBFB_aBE;-C_%&N4GawEIJbd; zA-91+Bmi{PTL*(kLlc9@ng#|D1|o4|1A|C=1A|Bp6!$hTh=B0s1_qJM4GkhT4GbX6 zVAH@r6b@)$V4xMo5xfHS4Gg1r=!F4}=o}Ru4FM{I0H{9%GX``C2KXo)kRa%o7^nos z+9?Hw6ZH!Q0fxG7l%g;MK>axijTi#jQTGFZ_6I@t1YsNV#U%zB4}f7LH9zYa7%;H{ zgJJywhI&T^;xK5<9u#xcgZ2c0Fldb-3^y>y)k831ZUr{Sf=n|oz}8@*(hnHq>OmNn zJYjLrTn}hnC+G}n*xF9e`P8b=v#QnV8^C8)gVuY3_5^{>4+5QQ4eI~F_5tq*}*e`b5K}q?3Jp%&>gYG;cgiRY77#e;w zFf`YbgBci_>!D{3g53lgi^flb)~=qcZ(wM!rUpL1&|p2-FvwpHQ2z}C&A`wQK~>D! z5WxV$EKoLx2ICX;3@oTvf#pPf0vVWr<$MDw2HyUkTE&og-s6w3u^=USh1dgMX|nt<>*%!W?)&?KpvjZ z0P#O3*uM}qzsLcWGYt@YwBZ2D`Yi`oHt#yXvh~0LmhGnwuQa$MpaU0|N|0 z>|(Qp{v;Q(qu zj^fb}7!85Z5P*gNsH+KOg60&#YYm|MUG)qM2&}-ctA4=j;(>l)j*i=7#ixB976p_8(TY5&%i(kGl0g{1Q-}*)Dy;+>KPa?F=#;- z_3+zj&{}rL+F#IGF#NcIp`nsg46Yp*K>NE-)-W(&!}A*$7|?NR0|NsHGrVPBfZxf(#7x$QU$VEyBQ1kBr3}5Nr4)8yM=Pp;)$op7*OseLYuP&X+dDn{yheUsr9HB`J92t z^$iUA4Fs`(eggx8E@*!>*gd1fXb6mkz-R~{g#f6~0dZk8h>e1gB|vp*1A|Qi1lu+= zFo3XK0|SFY0|SF&0|SF|0|SF=0|SFc0|SG10|SG90|P^F0|P@u0|P@mbbWads90=t zV5pziz)-)CfuVj214I2u28Q|v(DMW37#Qj;p!<6Z7#ND{85k1k85n}<85lh3A^TZC zYotKu;(^vrDc2uhfbY|(XTZS*S&Dyc5JtNdt&9c-3n!Qa69{PqhI&7I<|{BXFi?o! zC@?f27wt-85p@C}w1B|X0P++JRSik_M-4z(>-4`%41Sv2y1TA1_fY!$ihZPta z4sT$9&{MWAh*Dr!T(7{eq+WqxX}to&GAIU}>A#|0fnjC60>dgOUR|%i zu%=#tVQswv!#XHlU$4NhpZ`*3qX zc?iX0qntq-0-!WNvEx8zZBcB}~{C1Ssko7@pS?hY8ndphHv|80rfc7(DBV#SIMS z>xsn-4Cm`1IIe+#0U6h~FfdRRw=po(w=pmFffc~! znuFU(3m6QM>E8<&ND6IjdVd}HM=Y4_B{KCWy9Sayb8bIwf5N2Sg|AoMl8X#T; zd6!%aK8pu*9uGA6F|aW(Ft9NQG%z6J28LB}$e4jc{3#4KaH#(#1~YJQ&cuotIA=28 z!3rD=DIolSqdo+N6*%fcV7P%HcMCFRV94Eq4>vF@%3{EWxgOOq&lrZahy&HP#9|?71_n|vmn;JVHVnEKlR=7s0fy_f7#QH#f`OqDS|>Ib zFfgEEP<;<-TYw5Q5F3O+Y#0XdLGxC~7*r3U;)VtW#s+gd*n)wvfp{#~V9CIU2QxHS zFd$+4?E$FQ8B7}(2;%x<3=GJaqBad`5W#x0qx4`2mlg(w1~_hDXlPLY^AW9~QPyY( zjE2By2oMnhpo#)ivV&=edf1*~(0Fh|eFMXsdIqvE#5A%C4tKS145YSLsm3P}@3eP{y%cFe#~A4)2AfSN^`K8E@O7;S9G zUCay&jSQ4xQ2Q2t`w??Y3D!0S(V#n06QJW#AU>%WWIs#~h)oU#wcp9r$H2f{Pb_X= zXvl+M28M<_To^Qugc&4=@{oZ6Kf8eeR9+H`v5(t0|QoE&%nR|>#)=_Ff<}CQ)4{?u^3q&oDC}FK=W%20Sycd0Ss6%8B<*HVQouv8XA9~xFQ>)n@KJo9s{6tR@A_71F6BN*9PtPz=jzZ>a|J54&c2b zp#3AbF~Ur~dIkmrKES|N55mY|xY^*lqd@mZQH&eFcQPD?o`nk9w+y-i;z~UO1L!`8 zTlEYKck3A#KxYMl*3&$xXJB|%&%p4ao`KT5s3qWZG5RD|xpb1^~3lc}g zpfNj8x`T|bfczm0S|bJF;vcdjLk(!%J;)C5m;&gc76=D4$Rz-?j8HLs5EPIDhAA1} z2Kj6t^n(HmWH*Q&%or3l3=FOHgfVD5ZyD@9Hk2wJV#Z+hCBkj=b1P(b05PNkwA2BW z9;9PLb_Qi>giq1MQTYuF^=S+Y^>;CG!$}4PWL&?GfdL&OJGd4tnb&JDFu<`o14BJB zR%2jbIK{xg-++uAKzvZ!4B_}e%c5WU5w8cW0Vf87?nWhcoitj&g5nMxgOs3)q3|0R z)LR)C+Uf~o^Xq zF{r&kM#BLV5%@5@gAZ;W$WfrMq$drxe3UU70yGQ(P?`qyd1z?GsL`V#Fd70wHv~XM z1jzL;8pKAys1m2^A!Ffd>lwg%vDelwU>H0Y1A}*c z0}c$5BNaO^sMj|zfX;`&hlT4I7=-H`7$7u=O$=^e5U$6DiP4Ly2Da`B)SMr<$OEM> zdbhPnu@76wfZU8td{m73Api>N0}Q61^U<($F|pbQI=&f%LFbi$X{@S<7Oa2Nz)=5) z0fCzs80s;w18k@pCylTWkOdvpa&RA8bG*#p`?K{jD3A4D4-DI|2Q24%J}sT z46t%Q1k48Uv0(-zbr@`sAN33jKk5%KKxhz~UbunbM?Eqo-QG9#3Jh=R8yMcyGtdw> zFq~*$z`#cu7z7#)GB8ktQO3$aagQB?_Bn#EM!f?O_j^OmInu3nfZs`nKOJGS6O;x) z9}tj5GJ2i9|e>QNYvKD5ve3he={(S{m<#AIOLh6*B4C_*TT85mHwND7gd zXo@hn3=BLF%j!XMrr-hT0}KoeAk4r}e;9!wsvsn|$VSO(4Gi^17zkr228MdP7*r48 zz{eRF>W@1x)Prddn;cB4eh2JT8>C2q$`PZ60jicX8WP%=BrlTC%LWDp2v%Tt+0eic zP|rXH292K+ixKPoLF@QI>-^Da&>TES9G%u`P+&+P3NK(-TF-z3D{wSaGB7k$9$wfbH`lh6dH$Sk!R{2r*C_Gt}EN&=r^0GcXW~CDj-hKv-FWfq|MBvs{ME zA;QI#7#Qj)#W>dMVNF$Vi%}{IxTC=5J%i4CCKkIgFx2D29t;fiXc)s?INSt2YZG+d zCaIW`Jb@N0p!@;G7>H~G=y?jA4=PWQ*JUBG6(krKh{e*f3=G6#30VdPWXzz#z<`X|RTvoXVGb1r23)w_ zmw|y4EGW;w0Kx(?3=Gu743Z2CG{tfZA`My$EM#Ja#(L1&W?bu@F~y}D7#Ps;7h?v7 zFUAZ)&}KeU0|Ns~0|Nty2KS1=1XL24UEcuSD~pkAF$BPA)qz2_o`FP+tOqjI(eR0Z z0fH468a{zWUBF!uWM{$I5C*7k#~=W90)v8N{ci=y`j0fl3=S_~cXAM*85S_O*eXEr z0_YjxsPr7r-3_oaBSAC_gU*&X*T4|c$N%oOF><5Jh41?+tQ1_OBfdTy<513Wx_6xmX zU;tr;?+gqW7!lME7IbimyS{;;-W(lcKYti>zVWMi2L=dcV0d0n2!qaz#Z&`2kCs^6 zP{6>@V9NlxQ%)S3E*>#3G+tt0ILpAmaN{lm!;`BF4E);|7_>JrFz7%r?@I;-{+A34 zf-e~utQZ&=Y@j!rm?;eOW+ieDhu-6O>@eB+MsWJ=CC|J%^rbYSu-%)Gi6}7X2`&BTAP7kqX+}T5(Wl_!%rC)PCjN}IDMai;odn0 zhF3=z7``21U|`tCz@WSdg4H)MFz9W8V55%=3??5L7%YA>Fo<(NupJ)*gCGMYh9n9E z2}-jd9;o~}Ez`h&9WyXANaDe!3=9o;u>(VcDF`26XfQ>_3=9oAq+`(B$qi`ckb&Oo zPzWjq<}onTZ-?C9VDp@T!Q(9hL#6-&L$x*oL$x;pLwXhigPtJ+gKQuJ1AiO?!-oO} zhRZb!3|s3N7$(*;FmyuK7&jy_Ff>F#+k;jN3=N+lL$M3`85oZ4U|=}AhJoS9QU-=! ziy0V%S28dtuVG-Y+QPu#bAW*%@(cq*@=XSY?B@&&`5ze=O4%3~%9R)xaxEDcB10J% zZ0s2rOad7gL{k_TzU476+$v&V*jT~9u%v>4VNMAH!?Yp>hPE{5yoDz;KgdDz!+QpX zwR<4=&SD0J2a6dP7(i~g&cMI`#llw^7(}l!Fc^GfU@-X3z+mu`fx&=_fx$q8fx$qH zfkDq4g2n0?7(f{B`I`(344jB_u^0~4HwZAWH3&SZ$A%dMp421or+Nkf!q`FJQ#}a7 z)HV>*!%)uv+DC*F->X*;xL3bG07Sp4R}etP-|7_vaN`C629W=V!1aX<0`-Ll1Q^U1 zSQ?5M7?3a%jJ>g*fnj4k0|x^bH$Z6^ABARNXkfsC8(6m1gD?Zj)_SU8XhH&2IH2*= zQ4BigXOLk5hK2=LFlbEyXijF7hU{+~h;V=pnPN2QKy7+ZJxUyg^dG)9Ffe=t?T2kx z!0;7{IqMfNPzNi3_rZepz~aKD^$H9Synq3+=XC=ESG@uQSN#Ggjn0RNGcasm;Hg(& z;Hh7LLWAa-K>8v3W@Kg0YE1D|NI6?<M=0Lr=T=E*l7j^eds-1UiAzNzV!?Y ze$aW@zFOxqj&(q0G=F4V-Pxzmo(ExRgZ?iXb24b5CAo&LB4>|AT|tx&P7BLhn*z=q8aNM z7+`%R5E~>m5E$mv;ZKjAxl4^W9_=TM_LByxpTyO`zyQGt3|tKh7(nOT(gI7{EMWKs zn%iR_OtaQ2Ft9Q}`$h~47&xH%V0|WpISm2~44Al{p#gLTE*d@{(BK5VzYUaSq3828 zFgEZtFf{O?(+e0I_!clU@ZqF6kg6b%d82qV1V%$(Gz1{a0Z_sLGOiC10*w)a)>SDm zFf=$Y7&I{8#6FD-49K{ofq?;p>*q2s)bC_qsJ{+fXQI!*P|pX$4GdwRc?AXr2IOt; z4WPBMV64EkAkf6crd6 z6p?6I1%?LM1q}7qA@cPX6&UI-ZeY0Epuljq0Y)!ikgiu?*jlf^@V1hHA)|iaFeGkK zNl-M9fCWsT$plodTn4ZCL0Wr`wU$Gz`4|`&5GU6NFn}Ofq@IC6;1dG_!zbctklIlU z2{W3718Qm+<&A~_ECir+1Ze*-q6h%5CDdVHU_f96hK4H*3=Lrn)Wtyz3=R0O8v{eb zQ3i&F;|dH7R~IleTm{nt4L1}78g49LXt<@o&~R%3L&HM_hK7eo^cw|+hBpfs8c^sB z3_t1>7=F~lXh`4STRj8A;syqW=0@mQIVub|@2mx#Q2-0MQJT^a0M$OA^fwr2biaVy zL<~mPM?Am&HvZQ^UZ(Aw~!{FmQ-bijnQ0 z)GU~O1_llu5N=@L;-dy;VBq2d;RXgCL26(I1|C5WZeUnd-@vdQD`sG*x1MK z7&kD~I}ySR4E0XvxPhVGgBloib_l{Oq51{}?3jV!g9>r@n{ETcJ0&bwp@HF@LIcAG zIT(iAD-F6^8b3xpXOL7jwsQ$V8`vnp@XQY_45(=q$ZSf?L)Hs23xpdOe$$U}UpE>;?hxdU7zX{df%m zU*z%Q28{**{Fp(YK?8;fsU;*2GY3XD2%P001v3bo<-ms<7~U{62)tovV7Nyj#xk%3 z8c1UJ_O$^!zS+R=jUZ-V_;wQ+H!ys-O)h3&_;4E?H!w8pA_p@tH0;8L8yFe{sDWW) zCk+e?ppkqI(76o6U`QnoZqQ(0z>0Yp7#iTXfuVtySd6BRtAU{b7Zzz? zXaHew*uusV@zD(o^{>dq*v1$e80xQ)it)AU8yL91lY*fGrl3JnB>Y5#fdM~mU}#Xp zhZz_enux^>3=Ic}!3+!y=doZz28ITj;Rc2VLt-(qJMe`Kv2qLy4RB1X9&~lcW+1a0 z7;Z7(#|;-67%(x?{v+5vBrpwMbP8L1N(7C|ERZ-k<{|3=nSqRv zV-~s^eC9TAvhy`avhz_wGf1-YF>tc;f#?QN28jk%1_?@O22lnH28cOa4Xg}Y4WbNW z(F~#tTnwxXTrj#plwFK8T+hcKiW@fw*7K2y8HDS_ap49jb`f$hgA}_611BnO;A9t} z76zH!z{w#%EzAHmi(R0BlQPV}$u0oHAO$msH!$GC z4NMITD44T>p@9s{z<9L*gd0R#8py>AqAd;RxIyH@A#yQ;$cIDdxIu*B0I8Tkgy8@# zjMpp{j$;i(Up8MH-%XoH1=Xafe#Ali_P1wUXAZFt}y+E9dy8$f)9_Id{quKETME}V3O z$lUq{vAOjW(_#$u4I&Kn4PctLzCnz)zCi>x%^>Dl-ypJqAZ7rmVbE@90AnlYxW0Eo z14ASdPHbpk$Zcp~sBdXtsAxdo`l$^JV7$D6p&l8pYhb9~+rUtN5*I$eVDgrMq5dfp zgQiqKYXv1480s<3b8q0NS8L#`S0hMs*4sC5)Y~_3)>k!f)K{U}LEP-blBb6^*P5F))nc;S>hYxvY;3j13dPA#zI~@XhPe$qe@8?wNw&U$0fepU8yKRYxW1%;q2928 zp`N3Gq5dTre&4`QPbS8GE-C}V_XY?C7X%HU#qFRy52G{#_&off91a6Aox&8n{KNQcYKfnOOE9wt0AmdH-2N*#3VATNzY?y)V0K+IA4Fme60dmWg zQGM7$08-v!y_*@dSPY~I)CL0GFAqMq8l)a10iwYjA*48wj-uF?=P(KvI02H5~ zPPPN|0^xzAL2ki|SwKm1m|)ocR~QZMdSHy<;R_DXo;%R^0T?r|)z@QSruupY9Jqn0 zzMdG&z-Fezz{WrjH!v|MQGywm7?hAPC1xS(g_(&gMhP3YdG)ppOt>)vQ@t%dj88AJ z90OCmGZJP1-x0@Dk3lyu)iaQa8Mx{%K`{dZS3L@D;HqaJ2Qx6#|G{!VC=c zpm_i^%%kY`|kg(-F#BR&`#85)Sd42+EoC>R=B#HN=97DU>^ zrUz;qxZR3Po{$(We`EL;PhP=g2C_IQ=HXMzz|hzT!npHq!@~v!+?au(;UNUqKV)D) z;0A{Jhs0uJeYn`fnuV+mmsue31_p+A{+1SQ=npVt6}>hjADn zjbY&HWR1#^-Z7ceH<5HQb>ft7)3xPdxm)iba%G=OjeD}w=urWS6XATMCcLrCUv zFt9Q}FarYz1DP0f76G|>vFRIR=3$hK&_)4>q8K-DG8_V722O@U)WW0YQ5KdBoD6#z zP%-$bc+hq6|;KQs9cNkb1o)e23NKi|RnIq7=*9@!-_%UPsT?Qg?1Ci?JVjffdT?Pn-&*OsT zZqep;zcC2G=6U%V8kqPR7;xYQCI$u&#@5F=z|fe&z|@$+fJrAaFf}GKFf_twn7UL3 zrpB}erqi_yU^-skz;L|2f$4gE1H*Mxn(2By`0iXL=-s(Y zH|rS~Zq_q^Xr`O>4GazY8WrC z0U6(FXkfU|(7@1e1cssKFoVxx2A#)@gikUsG$3Kfd=_XW7Irc;rYdyfq^h? zVEACkKon-MW?&$U8z4(TLBrfs!3_)yjtn4-ZH$i$F(crZ`pn?h{0ix08;|6j*Y#{B%Hm^lXG4yb!6@Q@T=5W~$zQYJK zpGFA=r)cUBpmr5Gm^!v2Ole?ftY@GiroMUD+Fw767#JAH!k`Q1$<>QZ-w-g*kb!}L zYPf+qW`X+Gpeg}WPZ)rY8^^y?6s(pQbs&X^)J-`H$vm>>-;n3f2HD&hhMy>OA4Y&f z!w*DJj6w5eAWW@!IFLD`=8ew9!RFbBp-1Q9;B#{{o{OtzU|>bY91IMsAk6Tcffa!p z7#Y4X;KG~?-xzS<22O@=q+(oVfy7BM3#6V9CdE8_YGL-^Q$vg#%p4d^K+pFEP6nKq zfs5fgI&R=%_>K>wt0$KavV%yy-x#?1KQVAI)Z@bqTnzQd7@t~VicX1z`NBegOkL@V$BkhDRuvKK3H~hHn30;UlLK-6+_xix}HBfOs4QOu; z;XO6P@23Inks17ZV17JiV5J^zprTnIcQxSKPs3RMh=D}hz*zqXgh|zhOML@l{T&9< zF#`i*Jpx0{M*Pqq#L$3iT`XvQF$kl}AK+-JVPI;iVIV*^aPZeNF!9$jkV`Z0gZ4Hk zH!w9QH!w6{&?D5IW%5C*A3#tb3a3MTP7MqUAPg!OKQ|m;h-zrSgBcj28i>K5yIC6;>Ra&R2H6G%RLsDzl>vf(FfcH@ z;$mQE2xnku$YEgUtViJXdIknmtiaHivVftrez0N&h6X!wa05ewG#;$oz|f!#zFS?O z9&sH#AvW~*F7T0D0+Z?)7@-9uh-PHqU|?imXJBw|U|_HS-xaUGAlHz*S}(eQp%YDmT4Fh>r5Y-~_GfI|_9;AjY7fMRG}3u?ZMVrVjhrai3Tp}jf?>I*@b zfuW%q34`wXo5sLU52CT+29}07*f0Z2!yHm@153li29}cznD|6P1Ir1}nQq|mF~}Iz zhx!HvZ1_`s0|PpSsAB-DZJu3l z>Ju9nS{fLj7%G;;z)%mui47tR%?%~0WgIN2c5aJ@mK;cc?r30OfMS6L z1_ptKW(I+VRs(?>}!0{ypfqEp|-oPLL!mRZS0z_bj6ZH&mybOBgqIN?A z0}N|5G%&!hMneMw2=~@EFhDQ^LvKBH+>p<}fP!Ng7#d<27#iHM7m*tp7#L7-14F}{ z14Lp5hK4zq7}Y!lh7Ao1pcuqPw~uao#tjV&FbtVTsAXVi0O4W=hK6DXh6a5G9Jqm@ zK_43isRy-B92gqFkXZHth6VwJ3AW#W9>jrEvgTR6Y1_or@u#tfQ zC*H)s(6HHoVM-kX!_>M4hQoE3_JfVZ+HS$FwqZX5!%)JFZVU{hV+DqVptV{A#z1;N z=jMK4U}zY{!#51RGB7lJWnfrP-++QaXD>rAY%e2(z6@&TAY~nJDfb;rf(XWj+YAit zUmyxPKZ4dLI51AAV_;~qbYM7A1+Eu3PGGb}Ky3^Jep1iCfWQjib`ye+EJqr<0aRyW z!B<5X7*KHo!&Q+56k>##pnw_v7&P|Vz);WXz);UhZ<^Yn3-SvC14n}b14qMxL4rYU zLB@l{U6i;3**`Eg1H-q51|$sPJFt9fAR4p2XmDV8(cpkivn*|JU|rhaKtr0^>2TD% z(GVD_ApmN0gUV5IX`1?*rM|HN4If~sZ^VZg80s7G;Rc5KMi|DYju^QE4E2r37@r=H zogjITdJv73FOb~8Ai&VTAn>DsLEvozgTR>v27&1f(6N~n3<6s9gAF?{*wi;L*whau znt_F(9*h|n>Y?)l^`P~|AbfyLI8%?u1MeBOkCf!Y|`83#}? z0nj8(eG3CaLlY>R7#J#{Zq7P*LPmnpy3=9n|5I5AfGB7msK-oPE4836W z4gw7I_%KT3(3Mj^hk*ftL206ap`jWbBhAAg&&l9rJ1{g9DR8q$zK0tQHWgVGjHVFix*Uk(fntklK~4E4VWVFd z16+_{MtuXrjCzIvq(OG0;wAMB4A?OP!;*SZu>-@B`U7BnFX|Z>$ia{{7HG}{G^erv zJjVhGLH-5?2KwU-3@!}{3@#0%(e@1+80;Gq7;w`H3~CJ<7}Oe2X{iPS2C0S(3?Lfh zXMIq&d?N!xQauDK*E296V~`pce%!#ozyrmI`$8EQUe`A;1mnT**>2DphTWhwT-fms zh6V-@{>IS2fQ-36H!vV${^tw~Hn8Lm%>f`TZVX!W0P}?dLjxBGH!w7S*8L*kdeGVg zG~A#9KBoh8{saoH=VD+0V@TJSp#h{1%`K321p`BU0xFJbaA4S8PbzMJ>H+z3p!)_x z)qYqS7^O!;0AC1z@)&5Hj{&d|k46gMJ46gMD1R8!&3xmoe2Z4HqQM#UCFogqjy*H>Y#MZ!2Pc~*? zsAn6+gu(!K%LtzgsBJsg`)?rkgWL(C;rm9x9GVftwT;lqP|)BBI;N!j2Flf&QY2-(mB}U2&u2*AVAR3#2`X*Q~ zXdMWN7_t@!6xQJQW%*dofD2=!1z0*^Xk=huXl!7RASypLFkGl71~V{RsK<|=*E2BS z!yq@+YhlS3Xi-(K&A@;iH!##|C?V?92s#K2gO zh8r0e7|}5U1Gqc~&8g$W&+8c&F|h+9XuoJ|eFH-*C~dGqR}g?`b_Ry}9tH-b1`t+Y zPy(%+u4iEQMiySca0Ijmi~$$Df#F8I0>h1Z11L>x{sIQbUNi*;j(SWiROY?ZRpj$`4`@FG~^K5wZjY^G%z-S1Jh5+3{0JIbt zY#F@U0p=kQ5Q*w~1_lUjV5qJK;R6iS^&kvlQxk*CbYQ5iCk4aYMqL^y5QZod6nC`l z^U@?}Ky4(74d$w6U?2wb)-y0ba03HxJt`(fKXM(9Q11Y>y8%pd)H5)UhaDI=>OmOw zOb_%kK2Z4$pff;NgzFiog&Ab)85np_@BsmadU|38&^`eWhK@xvNHEl6#S9FfMg1gW zijx~%41lb0LS1KsEOrKCZ#C%b7sTG`gY~4bVg1vO^$uu#*9HdA`8MR?0}S6x85r#A zG4UCAUWDaI7~R0|u^xoMeQdB>X4W$>%&c!0d8QZ_aPQDFx2~iu|!#YgG5<9 zgG5=q0~%&vC%=!^Ct+Bcqm#hQMeD46hIvZKvaI+YkMi9<=RrP&=Gj7~Bp< zw2z5vn`2iGYEvU)O3VVa(+@Ck)gxol%>$1Qg7*X?&p}}sHwTU3!ZBpd0J;A_4K`|+ zf&4|fe^AY!L_a8=DA5mHTnrDhp`Y79KJcq=V8D$T82suT7<}s)$i}3`AM(0(-0TL1 zZ}qgopm~c1hK~9MhH3Q;42$X;7*^LeFl?@GVAxsTz_72rf#FDf1H;Ms28MI>4Gfo% z(*s#-1%^l9{Mx{vThBl=2IWssX$`>&3=Ojy7*^IZFs!d0Fj z4GaxY4Gay54GayL4Gay14Gaxc4GgXI3=BQ>3=EU&85m~OGcYWyXJA-f&%m%239qha zU;yD&^$ZLvL2iH3z)+7DGYHhbVPL?D^%xlHv18EsN>Fg(#o!$bpm{0eI0j{)Q9K#~ zqaiRF0z`(uX#Z)n{{-1HLGFAAkqHe`nHU2D11+%#0|Nspu4fQoz>6D180tZokUBK^ z1_luZLRbl=$3cXlo>UCei;Y$gVW?jqGq4zYe{OTV0>kF|1q{!i_(S~y27LHO{Q?GJ zG2|>~(ApSMFv6Xj^$rZgVc7gq0}E$82s1GB*Wq4XYbi8g?~^G#qUZ zX*k`$(r}}JrGcSAlrv;n5~|H1B#*ZZ`l1)Z_B`di5(aU>T%28MchWPE@j zrXC+=V2G(l#tsZC>KU+Nc$P;B{)l=8js_P7h6Wb~0sL5jp`mI4LxbxAhKAS$3=Opl z7$(;*V3>^qudQFea0m%stzW=^4MXZO1(sL!^uh~Rp4L-}6jMlyTn89}c<|$T(E|+ik_Q;-)ebP!s~=#f*Eqn?@cRHm1H%D^27v<%4MGeI6KZIS zLE~$`KxcD(WnidB!#f%n7+|=ifq`QgDu%9SZ(uNNK*t9d3>)xa1_r|h{J1`vfdMB5 zr7zG}T_poUJrbVRz`%fp1w88+P_R)wg8(+HP|qNsfW0jbs;i)N7-;_tx%hwpcRi`N zL4dm+h7SmU+BcB>*9;7#(4O@U44Opa0}O)ol;L{40}K!hEfa<~)m+cOKpIv6mmkaP z7ck($N9sZA|4GII*XkF5@#Fdh0xc6>u&W-1LB%@=H?SnslZ6H9y&D*?;{yyjQU@3c z>Pf{60!!+_n4!UgfuX^}f#GyLK74@TbUiX=U^rcmzzszX3=n*PVQW3nSfIB40EL)= z0d$@S2wOBXuz+y=t_Bul{Gy?Og>=loV$*;RJFwU^!0-VUn}!A!?}h^`(&rgi5*rj4 zLK_qqA{rDJQW_K(@){Hv${Rp!LIsBUMG6e{8x$Do*D5g7UshnKe}UtC9xn!l`p?K% zfg!zq0Yf}itiWJZPY5?K)E{qPs6X4lP=C9Dq5eSwL;ceRhWeKc4E66C80tTP&h&v| zt_FsB!3Ku<2q=zgV5l!?V5l!cVB7iz1`sx^Z(z`_Z(vZWcVPHQ6h6T4vmPI2U^oPw z(*(_HBIA~N27v|>5Oxq~Fd-U?G(2(;X?S!1N`u%i4Dm0hzTkwN=MK8_?O+3gRYL>A zfrbW#rJ(yoS2Qp*Txeiu_z0T8Y+z`R1l=Xvz|i2)z|auWz|d6Dz%UiMhZA%cB&c66 z0u2{q(EihG28McctjfSpud2XMuetz?Op5sgK-1Lrg~(|z_FH!%3r0VtIO3ebt@R8HAnaGKz~EQEfFX^pSb-s} zo)BIj!e37bhW3}SO+bLx+$~_JpF|`+y?~(}Hx_8BUqA!Qz|d6BAV4gBSww5UjvZ|6~CgW?-m)LvY!0@~tgvs5n z&A{-b9)cS{cQ}Kw0>i8N1*BksSM>|1h;fX){%!zW+zV|z9AKyyI>4~49vwF@%&NzR z85pwaDZveJ{q;5s4E0jP;s%C#DRMBf`3(%W8mNI87;ZIyFuGX`3{nlG;sp#+4GWm0 z8px&5?NeZoY8Z+b-5+%2GeYBSsM2JlJGzGNsQV!00_qxM^fk#thYxL4(UNLlsQ=)= zQ2${t&KPcZU@Dxq0Xn+@9aD0a1M*oL{)`Ku?9~Hf6@R@(0bN_}Et`A{gpeZ(QV5qlkV5oP7p79pk zz)&CEzyQ9R5VV#%3v#AHemw&N413ixFn};@UK%pb3!3kBU@)m~V2~$>8Cc}%;TU`l z^!s`ShIjRlaY}}U1_p(C28PQ-;Rc2V`38mtr3Quu)dq$J^#+Cptp_k@pT^jsxNzHw3w<{v-oKeJvUeV_>K!3O6v+hvC4WyS_d)Fw|!rV5ko#52rR9 zV5o1UA1-S+z<`DY6zUI*7_47^K!A1_yl;i9igHxbXb6mkzz7ckQ1cxW1TY%fCxh0m zNbAlT7~<+d_y9v({b0r*&x~{oicDJf&Cty!D$GawW<;K&&Q(9!H$&|c!uo)teKV|m zywScHbgwe*ei^6_N1whK14Dff14Dfrd6;1v0|OS0enxJXgvdiNIe6C zU_Ao^KNRyp??~XThva>>dIknojKyI1)?HF6hkX7lsq6y`pmS^q@3$nhACrOMQ9UXK zjeoqaZ(#UDG-hDP%)kITLzOh_z;LPl09fCNdIknU z7_`^(Ts;HBMYM6Q1}_E%7@l75z;J?Se1PG5Jt&QmieY(*RDGlB88E^dwC)a6t_(&R z63@b*bA1^Y7$oZ(z*wTbfk7OM85qRsAsAG4gD|N424UfP1_ls@?Y{>dP7A{P^$raD z^#@SOcgS5qi2HCrWjzQZpSg_O4#W&YTBIw8-y!3_kb6=fY-Dj%Hte2Am|H=90M%bG z{G*nK$ zG@NE&Xt>V6(D0Ojq2UK)1f_w8fuTW)fuTW>fuTX2fuTX0fuSLVfuSLdfuSJ>6)&!5 zU_i!(^$ZM#^$HAz^$WmQsD1&%z+mXwaM1d27~aRg(13i3<3=usMx&0 zLBPC$K|mG_%Qr9xAY=Xp1_5f|h8YY31As-2)-zCwS&q~*jN*C*mP_>vEcJ2>EcH^O zc;tpb153RWGA3%waa7T02#kinXb7N&0H_fT5@~=lKs@MPC&c=d{Q3q42tL4&Uq75N z)caJU(C3GS6Q62Fo@PGFo5XB zKm~@zzy%DA!3qqG!3!7~A`}=JA{H>zA5&ncKL$E8LjiJb#uWvI`YQ_Jz8e$eO zNTQtcj5zc82g3pebo{Lm)E+>_3=9t%85q9&#=s(9enajGdCd`SMHb(Ji2#kinXb6xH0-$0Hq#Q>dr@j|@mP{uD1Bh*W zS%E?S!UBedHU@@<2Snog3=9p}a0UZI13sL|z|a833JeWdAiRKKe!T+2{Q3n9i|fJl z4a4es1%}o23mDeaD=@67U%;@UUV&i+l02;ZZ*WoopW}ZIbj}jUzi1e`XBKI%ECWNs zd;A!5CVo9AT+lFReFCu<*%|d$85po(NzmLH6eFu2Ic!iH4wO)b8%QH1SPBuqO9ysHP{0|M{r@nL)gGia?6 zI) z4A<)+xL%flfiOP6;9gHDc3{x02i+Zyoi+gN^$lWRXuygU7#hMCa5N+=;AqHSz|l~= zfTN*$0mtKAa_tzW=#zkUJ7yZQwjJQQOE4xV~A z=HaPVfMEs(P+tTEL+T&IS?n-AsBQw??E=HF{De${$|?w7uAYHGoMa3-gFXSQPrsgl zftonCo`Io&BHX|rRFA-*dmBi{2N)R48W`N_VHm_`V5k=$6)#|@7r=)Z7=AEN2ZKs@ z5MJ5Pz;M65fni<)IoN?=QUf|>U}$Q*U}!_SW1&8PfdP&oMKn0Cfbt6zi_|kHh}JVSh}MfVh}4S= zCYnK{UW9?6-Ut)x)H?{&8$#E_g4V^tFlZd>H3LIE3T|Kkml2?Hf=p~*&%l6$1t9HS z1_m576EqvbXdyH{OdOpCjje!`qSGKT7zULQFg6`%NIM^NXA$`rmhg~iP&*x&k7z@n zwtbP+ptC`Gz*qp;Z6E5P_b{Fs!OSz;H#GfuSJ*2`4cyG{Er!kd>hATP*bq z4AiEX>X$Jv)GuSeK`RKy%4BxU;xp?j$I?G1MOkp0=H$+ z(-eAoA(_v@P!GPx2NWP=U{KnGwDmvoN10l@IzyQ8` zfR}-z0n7&R8CV)@7#L7+J_ADoPTauITMxqw488RZ488Rr8W}_6p`{c<2dunefQWQ7 zG%z6W0gf{ucb{kAXgGg>1-v%{v_FF!yqtld0fvnj7#hqN7#b`gert4O5NdQ}V1VI< z0tSYLTn2^)Q2T+Qf#Gfg14F|R67f+6h6XThU}!jpgwHlGG@NN*xYK~Z^&AZh^^zdW zz)&xVhCzE_K-pp)14BI;&Te2}z=mBK7#Ki!VnYMlRxoB@TGqh8U_umbU}&&uU}!LH zU}!La-sPv(z|f%Fz|imnil;X))vrRrcN>`M?>aEl-(wJ{=V4%ouE&j=>cMxJfbKJ4 zXsTBbXb5d!u&M`*B_ptPJp+SHeFJ0tPZ)M!sOMlH9{*%usE6V23=H*P+`v$Oj)5{P z$G}i8$H344x_<$*FKG^9pAG+O1_l^r_{hM3j6Z#2U;yJE3=E&37}Qs7Z9ITTld!aj z*55<){~9%;Q-5n z22yASh6fGE_yAK+!vTh#26AZzhK7Zt;s%JG1q=)gFbvwSiHt$w^BEW#<})x{YCy$Y z4GawHK=tyu28JsQFzmpvp@D%c+%SWI0R!J+U}(UCarUQ=GceTeYGA0}1*MNRFw~Qb z4=_|WGT_AZ&ERZ>AV7^kD9;_#euc8(6bGEeaI3yS;BI{b0|?)%Z(smnu6k0=h(%WG z06r50w5J?|LHo@?`_Flx=Yrs)Vf)G(0vQ;-f#()L^9u|Ndi4z$bI7+F7#P$g;FzP~ z00RS7EW*IhfQmU9L>d?x7BgVQ-y0Yhuww_X_~!-&23+`20|Ub-9_(Szz|gQ787nX~ ztY%<9!=eqV8AKXZGk|DBMj2(%Gz99woo!lL0Uozwg4`|Gz{JqN0A-`xH7Ed*Cw$M+ z0*2oW3JhP##tT>(8WdO<8Wb2o_AxXlh^jXzh^P~$8PppT7~C2b2!=K+5C|nmGceSL z6MKg7;8%w{#wA$Cz`$R?z`z~Fz`$V3z`&r-z`&rvz`&ryz`y`nUMdA`(Sk;fc^DWN zxEL51K=mFvW@BJr0AX4ty-~AALtwCn0Ibc3W9|8odIkn$yt7_`VQ2kMNRCwO05yv^eGRn?3=Opn;BoDadIkmvb^y~2 zptVvI;Rc3X^`v43hF$eAtiZ6W-hp9FJp(aVWKDeo{619Jy{N>|pt&Cy1`S@L;)W~+ z22>2%W72>ohOP#a51LcjQh$J9OFaX{7_@GyUW0+5-V-~9q^?nNGz3ONU_^!hs7eNT z97mf8bT>LGR$$m%zhH>q!P@2+F75&)oWYAn+f3+fDp-37MB{HWHAFEmpyCFGh6-{p z1H<`x2yU=uU}$iI;t&Uho%O`x0}MOs4=~Jt;s)0P3@F&|07F9nek@ymfI+_g0D}S) zo75j*sG&Q?$SZ;j3=A*~8s(u8b^x2JSKlC@Q{NzS>GU_Uf;l=TF(H+D$w;@ zO7#rjyUjrB#6ahygZ8a~)^vg9L15?Yg3jj^u0H@iZx^(_3v^ZwXuTF_{sS~W0y>8l z`D_}FdIkmvhP9nRG^uN-KGmua!Ub>WdwaFsM^WI{pEkKLzPKz%ZlX z0KJLyIH@G!0G{hcYXo$r} zH!w7W;lc+P8p5z)28Q~ZsF>kB0|Q~Kz`*bu7hb?n&q{5~z`)&r3ol^cZlE=8U|85d z2p?cr*Z{)}3=12G!;taP0}S_+4ls00Jisuo_W;9!-UAGaNX88er`M5&UuZNikdGM{ z>d#UeH^9v-cV=LycOebKdOe`E!7z4e-T?*%20|F78eJV?zY1*M3SnA-!L&Ys07jVG zz|Fug(0C&Q1H)Pl28Jm-3=B=6b-9TB3k={p9zgdzP>LlP7#j2#7#fTYFfH5?d>G#nVr(6E871B0qH_Pd-&ze@^a4x#%%K=L3A zx-$esqhpvj$Sm9#y!HaL{sILzFfgz=FfgzURvNly1jWt6OYGA}1_scc@=pv54DVzZ z7~beIFuby6V0hul!0;@Xf#FFQ1H+Rf28Ksz3=EGl7#JR9F)%zTU|@Ju!NBmWj)CEI zJp%*i-m}m33=A+#+&m!zne&T7MIUJX6oeNre5psrurhm;9u0xf5E$_x0P4hPtuRE&M%|uu0z<_)vA?a)dhKuzM3=Me<3=I*~z@T)F zJjaQTjaMx*Lp_5GL%jksLwy4?1A~JM1A_uH1A~AJ1A_zekV>ngjvWnw(GZ}12!NVw zAX8y9h>e0F5}0?YD==KDUjW4*HZd4-KRb%?KbOS^ENnH2 zX-2h=hQOc-0ZvNSU%vo~A$t`Na=7^rqakL3?&UaM&%l7d z3Jk~V7m$b{CJqn@S`$rgOr%#qZCX$`(~3qn8|*Ar1_lOP7<67U2!j>UlQ64iU;v#X z3Bd{s*7XgbGbM?@ptC2bg�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 SM)7C}jE2CV3jqg)`cMGQhW1qe literal 0 HcmV?d00001 diff --git a/include/cfg/benchmark.h b/include/cfg/benchmark.h new file mode 100644 index 00000000..70260e86 --- /dev/null +++ b/include/cfg/benchmark.h @@ -0,0 +1,8 @@ +#pragma once + +/* + * Enables a basic performance benchmark over the vanilla game by replaying the 2012 + * 120 star TAS. + */ + +// #define CFG_BENCHMARK diff --git a/lib/hackerlibultra/Makefile b/lib/hackerlibultra/Makefile index 991093a3..d6d6857f 100644 --- a/lib/hackerlibultra/Makefile +++ b/lib/hackerlibultra/Makefile @@ -41,7 +41,7 @@ CC := $(CROSS)gcc WARNINGS := -Wall -Wextra -Wno-format-security -Wno-unused-function -Wno-unused-parameter -Wno-unused-variable -Wno-builtin-declaration-mismatch WARNINGS += -Wno-int-conversion -Wno-incompatible-pointer-types -Wno-implicit-function-declaration # TODO: Try adjusting code to remove these -CFLAGS := -std=gnu23 -G 0 -c -nostdinc -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-PIC -fno-common -ffreestanding -fbuiltin -fno-builtin-sinf -fno-builtin-cosf -funsigned-char $(WARNINGS) +CFLAGS := -std=gnu23 -G 0 -c -fno-inline -nostdinc -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-PIC -fno-common -ffreestanding -fbuiltin -fno-builtin-sinf -fno-builtin-cosf -funsigned-char $(WARNINGS) CFLAGS += -fno-strict-aliasing # TODO: Try adjusting code to remove this ASFLAGS := -w -nostdinc -c -G 0 -march=vr4300 -mabi=32 -mgp32 -mfp32 -DMIPSEB -D_LANGUAGE_ASSEMBLY -D_MIPS_SIM=1 -D_ULTRA64 CPPFLAGS = -DMODERN_CC -D_MIPS_SZLONG=32 -D__USE_ISOC99 $(GBIDEFINE) $(VERSION_DEFINE) $(DEBUGFLAG) diff --git a/src/game/benchmark.c b/src/game/benchmark.c new file mode 100644 index 00000000..092108df --- /dev/null +++ b/src/game/benchmark.c @@ -0,0 +1,48 @@ +#include + +#include "cfg/benchmark.h" + +#include "game_init.h" +#include "n64-stdio.h" + +#ifdef CFG_BENCHMARK + +#define REPLAY_FILE "data/benchmark_replay.m64" +#define REPLAY_HEADER_SIZE 0x400 +#define REPLAY_FRAME_SIZE sizeof(ReplayContPad) + +typedef struct { + u16 button; + s8 stickX; + s8 stickY; +} ReplayContPad; + +static alignas(32) u8 replayData[] = { + #embed REPLAY_FILE +}; + +static u8 *replayDataPtr = &replayData[0] + REPLAY_HEADER_SIZE; +static u8 *replayDataEnd = &replayData[0] + (sizeof(replayData)); +static u32 benchmarkFrame = 0; + +void replay_contpad(OSContPad *pad) { + ReplayContPad *input = (ReplayContPad *) replayDataPtr; + + if (replayDataPtr >= replayDataEnd) { + return; + } + + pad->button = input->button; + pad->stick_x = input->stickX; + pad->stick_y = input->stickY; + + replayDataPtr += REPLAY_FRAME_SIZE; +} + +void replay_print_stats() { + OSTime finalTime = osGetTime(); + n64_printf("BENCHMARK END\n"); + n64_printf("Time to complete: %llu us\n", OS_CYCLES_TO_USEC(finalTime)); + n64_printf("Average FPS: %.2f", (f32)gGlobalTimer * 1000000.0f / OS_CYCLES_TO_USEC(finalTime)); +} +#endif diff --git a/src/game/benchmark.h b/src/game/benchmark.h new file mode 100644 index 00000000..e1991445 --- /dev/null +++ b/src/game/benchmark.h @@ -0,0 +1,6 @@ +#pragma once + +#define REPLAY_CONTPAD_BITS 0xF0 + +void replay_contpad(OSContPad *pad); +void replay_print_stats(); diff --git a/src/game/game_init.c b/src/game/game_init.c index 5e02d8b7..aee1a59a 100644 --- a/src/game/game_init.c +++ b/src/game/game_init.c @@ -1,5 +1,7 @@ #include +#include "cfg/benchmark.h" + #include "sm64.h" #include "gfx_dimensions.h" #include "audio/external.h" @@ -20,6 +22,8 @@ #include "segment_symbols.h" #include "rumble_init.h" +#include "benchmark.h" + // First 3 controller slots struct Controller gControllers[3]; @@ -525,15 +529,23 @@ void run_demo_inputs(void) { */ void read_controller_inputs(void) { s32 i; - +#ifndef CFG_BENCHMARK // If any controllers are plugged in, update the controller information. if (gControllerBits) { osRecvMesg(&gSIEventMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); osContGetReadData(&gControllerPads[0]); -#if ENABLE_RUMBLE + #if ENABLE_RUMBLE release_rumble_pak_control(); -#endif + #endif } +#else + osRecvMesg(&gSIEventMesgQueue, &gMainReceivedMesg, OS_MESG_BLOCK); + replay_contpad(&gControllerPads[0]); + #if ENABLE_RUMBLE + release_rumble_pak_control(); + #endif +#endif + run_demo_inputs(); for (i = 0; i < 2; i++) { @@ -579,10 +591,15 @@ void init_controllers(void) { // Set controller 1 to point to the set of status/pads for input 1 and // init the controllers. +#ifndef CFG_BENCHMARK gControllers[0].statusData = &gControllerStatuses[0]; gControllers[0].controllerData = &gControllerPads[0]; osContInit(&gSIEventMesgQueue, &gControllerBits, &gControllerStatuses[0]); - +#else + gControllers[0].statusData = &gControllerStatuses[0]; + gControllers[0].controllerData = &gControllerPads[0]; + gControllerBits = REPLAY_CONTPAD_BITS; +#endif // Strangely enough, the EEPROM probe for save data is done in this function. // Save Pak detection? gEepromProbe = osEepromProbe(&gSIEventMesgQueue); diff --git a/src/game/geo_misc.c b/src/game/geo_misc.c index e0f58d22..3ed7ede9 100644 --- a/src/game/geo_misc.c +++ b/src/game/geo_misc.c @@ -1,5 +1,7 @@ #include +#include "cfg/benchmark.h" + #include "sm64.h" #include "geo_misc.h" @@ -14,6 +16,7 @@ #include "init/memory.h" #include "object_list_processor.h" #include "rendering_graph_node.h" +#include "benchmark.h" #include "save_file.h" #include "segment2.h" @@ -199,6 +202,12 @@ Gfx *geo_exec_cake_end_screen(s32 callContext, struct GraphNode *node, UNUSED f3 Gfx *displayList = NULL; Gfx *displayListHead = NULL; +#ifdef CFG_BENCHMARK + if (callContext == GEO_CONTEXT_AREA_LOAD) { + replay_print_stats(); + } +#endif + if (callContext == GEO_CONTEXT_RENDER) { displayList = alloc_display_list(3 * sizeof(*displayList)); displayListHead = displayList;