From f9f9924566e82aae02817a2fbc7962764f5418c3 Mon Sep 17 00:00:00 2001 From: XaviDCR92 Date: Tue, 27 Jun 2017 00:58:12 +0200 Subject: [PATCH] * Reduced tileset sprite size from 64x64 to 64x48. * Modified rendering functions to keep up with this size reduction. * Sprites in TIM have been reordered inside VRAM. * Other minor changes. --- Documentation/VRAM distribution Gameplay.bmp | Bin 1572918 -> 1572918 bytes Levels/LEVEL1.LVL | Bin 128 -> 192 bytes Source/Aircraft.c | 33 +- Source/Camera.c | 4 - Source/Exe/AIRPORT.s | 52108 ----------------- Source/Game.c | 240 +- Source/Game.h | 1 + Source/GameGui.c | 161 +- Source/Gfx.c | 85 +- Source/Gfx.h | 4 + Source/LoadMenu.c | 5 +- Source/Makefile | 19 +- Source/Menu.c | 12 +- Source/Sfx.c | 11 +- Source/System.c | 14 +- Sprites/Arrows.bmp | Bin 438 -> 0 bytes Sprites/Buttons.bmp | Bin 3126 -> 5814 bytes Sprites/GamePln.bmp | Bin 2230 -> 1846 bytes Sprites/GamePln_24bit.bmp | Bin 3510 -> 2358 bytes Sprites/Tileset1.bmp | Bin 196662 -> 184374 bytes Sprites/Tileset2.bmp | Bin 196662 -> 24630 bytes cdimg/DATA/FONTS/FONT_2.FNT | Bin 3136 -> 3136 bytes cdimg/DATA/LEVELS/LEVEL1.LVL | Bin 128 -> 192 bytes cdimg/DATA/SPRITES/ARROWS.TIM | Bin 276 -> 0 bytes cdimg/DATA/SPRITES/BUBBLE.TIM | Bin 928 -> 928 bytes cdimg/DATA/SPRITES/BUTTONS.TIM | Bin 2068 -> 3860 bytes cdimg/DATA/SPRITES/GAMEPLN.TIM | Bin 1696 -> 1312 bytes cdimg/DATA/SPRITES/MOUSE.TIM | Bin 148 -> 148 bytes cdimg/DATA/SPRITES/PLANE.TIM | Bin 532 -> 532 bytes cdimg/DATA/SPRITES/TILESET1.TIM | Bin 131092 -> 122900 bytes cdimg/DATA/SPRITES/TILESET2.TIM | Bin 131092 -> 16404 bytes 31 files changed, 370 insertions(+), 52327 deletions(-) delete mode 100644 Source/Exe/AIRPORT.s delete mode 100644 Sprites/Arrows.bmp delete mode 100644 cdimg/DATA/SPRITES/ARROWS.TIM diff --git a/Documentation/VRAM distribution Gameplay.bmp b/Documentation/VRAM distribution Gameplay.bmp index 05294b5e8eceb4e38f4efecaf439c942f37746a6..c97de05a4f2edcbd4e95e1b9a7c3372c48b66e30 100644 GIT binary patch delta 39876 zcmd6Q3w%`7wYQUm$(+dG1Ok1tXBgVGX>ovsz%AS5ss?keq6A)5=IaVL&SQ6 z#q#*+hB^OGS-gnNC)SF|q+%y%Z2nc+$!zA+@vOOdZTydsAY*XM!tY6^V*S|6NUW61 zCuTO-v|(6=R?Ft!9M`^H2HQ$!0X!%BQv9D0vQX4JRlcY#LwQP)!mB6)$d<>?EHi(& zI`*<=&Oa+wTEyy>>c^RjHpGsO7tm8Gp0|u1h~6K290vVa=}e2z9r5#vNPZiW)x`Rk z4S#dc+b>lUz6w_suMj}5vt;7ssS(&Bo<@qEsj+p2R>J1rsA*2YR*n@5S+R zL|K$gNR;8{gQe9L%lG2P6tQKK%PQIYo$(qnq#UVV=H=-vXT@60QDkqT6|_#|8XDKDt3#{)pCesIq+RXgir%1hb#{e-ML$;> z|CPoXCTg?T^sQx1_b}gFn2A4uoEenku1BlqD6nlyKvG`6oemY^{($2$Wy;WKnf%RWO_v1~oPK8u>GQf5LNoeH`e3~RS)-)1v?2~Qxx z>n4}QS!zkF2kFd(SHxe{XhKsWI%2yU?2GZ5y1^%|h~EI1O|i4B?kc2>+z^K$HSO2> zu#I=agf{}GX&T!1L27L&hL&4oe(P&mGJ3=jN4)vwo96buvF9S@54Xezpc$?$?Za-p zqcmAeIS*B7Z=yF=Cxx!I<8)Nc6Lndx+Q(?OjrelX9Z#2Py5I{2bLPx3wtfZLgFXWG9g3pba4{M8G$AfCeYCBlZO*QIpH~lqihM2Ov{%ME3<3T!3;e zDEE&hwFlBTc$+rdg7P=e7Tc5^5n= zi6lxC9nsCk_lf6hMOKy#h{ulTzU!{LK!{CzI({5Y?tTIKHF%q`yI};vkVR@erOw}5 zrluBj-pyrXC40+`Duzyo6Y9gBtzxQuHf7t!ou(Sr6r2Ur&Xuo|t+V^9G_4r=P>Prf zXLDGV$?Hj}M#zN}_u@nT%yK<%_VbxStJN6ThvRVa*)r+tVNpXT&b z8CDI{*;L{ckuTbktO2jhy-0?{%@}rR*bVAUG$`IfQorkJP=B%wPgt+g)c#`Uu-50a zqm}mNX$w0V^c5v+)@#~PZ0U2_9yaqit-7)y_`|NcCSFG)Qmy{yJCBfmY$7yOkWxd; zE9>N2y?kJ^j*8Z?mbImM^UUY9`UuS+UoSQrbb@;EYuW)qS;?-tJf5!nPVk4t_M6sE2M;yN*r>IoCl!f*`zk#qSd-!SF?=x@{~S!kc#>*MN!q<`1-^v*y0bhhu9_WqBCB6 zd0f|}z<6Mv42V~dq@XDLWT*TcBgn|VYfuZFEE_+ z%g1&0*8y>(H;RHb3Kb#}MY_y&q=s;Xg1hB*X;po{n}6`~Q3VB1hJ@^>(hPR*3@ua6 zjYgz`IsQmTl`%nEG^M_VP!kj+bcCOH;F>Z=M&rXhN-Bqvq-xkv`FPU#8Pu>?#q(O- zC64$(vbzQHe_x6(iP)9`;9^MSokgXkKzr6HRQ}E!{1Vgh(uo2H`Idj+A(qHigatbCEq8AzZ zRdw?JxPi=uP|$$X1|A@()Dj-VpU{JNSs0GgjA}BXxS!#0b(#Ntm39Ny)IzDLQP9-? zOn)o7T$0XrV3u769_-#j2^>~MPSZ!ZYesMM~iS3FCN3SCOo;sHfODfx_dtPv~< zC++(yv>O$T(xi4={9hUG1w(wx5lcR(iFkH2tEy6cR@BaoTPVU0Ip6p;wnLQV^*~ z`G73-89yPoOJ`6j{%HAPtJk9%{{rs!o#hK(+FgHhX%*XebE#%eFrYaGUun*3cXxa3 z?&8a#uz}BG0y-0mI=+I*sVf-unU<}!v?{HkRVj5_?mr~TRjDTnKdsyzR;9GMK)Z1! z&Baim`Tnh5+;g5oTz17Z@p}nRJ+JM&?_yOZ%H@AeT4-4PCfxae^y+`X6+q}|YM3|w z^tiT;+v=iXb66+M{hw@#eV4ueIBazi77=W7cdVU+iF(s`2LJMeL&>?2u&JH1w)8vJ zwEE}#gE8dw*Iy@H()^pque0(`eqr_1e|Y2s^J@I5`RxJ&-dr!eF0XUUn~N;W;4+SV z+MGV@m>z7N4$U72(!3co|Hf&anCvTQE@D3)r5kMj zi8`E)&!#m+OI#WFx;BvH+R{-3GtaU^lSfOEbJ>tH^c+i_rXMHM9DvJ0sC|>Doh1q( zW-*g}dWLTOw83yfSBKCT%AVYu9K^EYk|#+*lUUIfy^1B;^izEhT@gfWrKSyGPj61v zvg~)0gGEW0&UhBvqF1t0eym4X;ynFyACi{_kwnd&NB|pH_QK>aNwQG@1WBDG{#|eO zA$f5K$zzFRBg|#BH6;S*Cfx7B&#LK97`mSmc1o8K?2mt@+#TynZDA8 z+JpdVac96}U0ag(iK0(#(YN{#IV*rj2@zpko0F4SYFskMHf=+*xbETPNhPR{USkz85Ac0QWCkzKb7#`CLP`YxZ6BYaCH`>^YtN!GLO$Mov< zqC_1_Jgd*~mUh}#0fJ4j%OdEQlKV^8$9hU1Z5OiHqvwf@!J5xb)VFU>*Lu5IkekZ( zHmCAJRRPpHlfUNTG`0^-89rD_RQI-Y9#~Aoaiu(M0UMA z3TDaF^=^$lgn{=VLy8T)`Ybdw`@ZTpnOaJF-5;@5t%3DRp)`J3M<*W3G+ zN7*|Mq@td=6s+l6uAbCx5dTra-l|W{g`A0G`vt^ib{LzRVDccJQzQWCW?#~4O4t)~ zQx`EP22-b-5`&;Uo&927Vt23@n~DCTE)9YH=|1$YO#QipNau-k9Y{y5iopyOe{B8L ziP4nL>!i{0`KWqS4ZM3k_7`h>W^((ow8(kvLkVi55H-|Po0;A$igsjtY9G2NF3^k zL$$&IC3VVeqTDg8^S23S)nHA%A>c*Cu+d#@LCPbB{fJ~8ksJ9&GtQtF4XBbdjN7W+ww-jnwR0#Mt1N``=`@A z@+T0lVN?4cKEr?FWxqDhSHGymA@-_q)I8MTz{Qw={4rr!CW?+{k@;x+ekNm6*Dk`}BGw!(HGhwW;= zbU+AehGPXgr}Y8CB1)?ahrmh?rulqwv3LTTlY%5gjkVqUa|E7jb6sT(5ZDfc4{JO2 z$gI+)+-hZ!57L8JS5s`Bcv{~PJApa-Xvu-{CaoaI9Ro(^>4GS}F*3;RVVxD#o${ZX z#h;q#_z$@EriH!Kn#r-d4`h<8HkHxr$^?el0a=jV+2x|laxEXxd3Gyt_59JoRJZ7w zsM_`G*RzB58ABi%ac(AEj0|#jO(i&aPkL8ztbdS#dh4%(Js0?}3ey&22A>&EKw1e% z6-%Wuwe&L+VhOf~>o0HJ^2J9l9D4m){Hc}ElZVUB7rrmdFEIV{D<70UkG)r!nMNp^ z2y`VY>7Qw0RsG8{%06eWRgK$FeoQ6n$Qw@IAM7t%#TK++9n+rIopG`t4gJY%UX3^Y z5f~yTWX2GrdI9M-8|>PyZO$CcPASR6*u<@68L`3M4URl-i&~82hRq-6q`3z=-WCzI z9BUt>t6n-!8nAK8s$>A7vwt?BA&AyMXzKcBVs?`NCT8Smtf~vdxNfe0zGMf&F#>EJ&|-;EE!WV zgu6rsD3HEMkW}yB&(C!I1TQt$`H5!14QVOysw7@Z{W%O}Eq59<8wQ?Vv!QK{B^n@4 zVh^+#lSTK(f41DI4`S`(b=AY@Ndr%ADOK#?RLojGotl|J+zsNcr1{|BUdPdQ8iO_r zoKx%I0KxIxirB9649oS#)5dTx({$BAS(wIc0F39MB^`ZkriR8Lb%9Q6bOFtN!;Fln z7+O#XCz6WlH*8*5?}FCI&4umycjFwPCqQe&t9k=#zeradorP(B{MqmFP?v0Yah=Sm#dDR`&e$l4d^s&}+7Eh%}n@`VoRsgjzJr5oT} zjjsIYF4X72`!mCNzQ2|R5V|I|`Qk{6Xg*L!HKoda#HDh+>V`VO4Y1jq1!!#%ICr}jA7GnvAbxH)(JvA z+jWcK%zPQ<36E?m3JAI^A~KDrz4dW9}VzNbU+83c=PT|l!JP&HB-kv z?#N7X(pl#>Dy}D{Pg_idvv|~c)4&eCn3>85x7ex6 zc#Zwa_#GSenEo_td`y3gOZmZ6s9us)nk~0eyNO)FnVQ?*E8WB0ia+IkWYC{oWx<;RN&IESSH_nZK+suO{X?yY*##1{d_D`!kEU6ukF#Cz&fIm;F`omrB~n zEEcNoM;h7mgQU4VdK*#Av5vR(X;RF*Oq(jmnrPQFKqe!QiRPRm85!_3IeFX`#cjCW{sS`;j^}{cnQjnMAshZJ&}b z;8m(*4qwa=(v(TwCZ1l$)}3CFX9xd;rUAY+?8&1lCb86f7?Lo;wWU}!SSNi8C2j<< zEW97@M+UL!C0VZ4k&=5AxEOBkI%Nt^IZ)Nn7GsLg991z{X_)|0FM!BaOyIr|0;IwG zIGG*8ZT2+IKf1iT8-MK3S@0e_HWogEq3|U*npoF>xzfxbiP3g?U72FSglIbPY$6=f z*r6B8upX6%ajDzjizllR>PQV^*zyaCpoacJ4MPY<4SRef4ELF>3DSio`PUQciFQ&Q zE%4IBX^hl*tMk)bu|6g&T5YP-Ai;BAWgk@h34-Uz#1k~3I1(EieT)g3jW6v|0coT9Gj?wpC-zl zgKM4G^G1vq!n{Nk+e2x5Rg2*!N=)kn2EJBwexe5aoxTDCwN}C~wg|1dSzs7Q7{;(` z$aTbZaOONXi(VWF=N~}u_RT@mQJNKs;bR`SR!b1`2$S^_ApAoy0t7W=fEZX*)WW8p zEkN`WAP_IX0T-$b?&djsD%{BLzpN(-32*-#iD(W;w;cLF!;Qgeg7AwhCNxfqJSU_f zQ1d1)C~6!wGTuXQWMk}f2U*VXmB5XH z!HmW;KvaAvPC9Dy+#swIhh!JA=4T>#HsO2OKU05vB%3iLaS7`jnTXo0w`*&nhPM)q zZQ_u`Rczhu@Rd*mcL_32@7rn+#PS|F9tU2SKgqS2T%rzJ(#?=-t_2kt5iO&DqWD6q^11tDPPw2_q8>g!_mB3{`gRuDCDJBBXE}omk3UWQY=g{p_>Px{!}%?ISb!8l|VU zrc^LzNP}+_70-C^OaDxFJ3lg@J1^wY$RTpSzp9jg-=oVHXU zKx}*jXRA^1Vdwd+3CsqlmfZ5O-DhP6Q3YZ29h(_cC24_#kV4dql&DY;b(Y!Hk^PyN zA&=azMcK8Rvs>iK0ex$SFqP44c|Ce#g0H;%bO-E;_fQz4xR<{GEEb>!du1{f$Ut1h zR!_;)yAbzM^-L@{ZqH&(03(tJlWgVY>;@;;Cwf0CrlNvD20z~nRf|#m?`OgE(KrzS z^U?9V>wx%;S(s>(#j_O`WQMz7_fpYJtkiDLPIAMpWG%O6SF;z7E3#Y?fR`s_^U#b3 zcO_-;aE3K5Uw>a>y3|06(p%)&B|pWKnsBG3S;z;r__9osON!nqAB%G=e{avWx}~V0 zw8d^I1`*f-Q-F9iw%?T-H`l&f4yU`p2}#&8K0^7I+-}L_?Ad@!w6ZtY^*_wixkT!1 z#Rz{xR}ow%sy)?{Nb?+#+MCNxqi{jiYbB5fvrJhptM79~L6Fob*nvnEV$qDzY2R)z46brn@BQgE*#q?oEmfwb|Ya3t}IQXta)?okKn98+>jZID#?9DC6m#7Z78@q}s-GWRN zO~+~M06mQaQR8Mvn_5^I=$~?)%HV4|$OJbDmx=l)?y|9k(b*eY6=Cl42-DkIK?A|w zO*IlXn`CnWa~COrIiR1dv>Y4LVP>3`gw<^DH2cs)ZnJo?Y5$1I{qVq5q#nnehVpR&+VfcV%j9)E+BZ z_he>JUiP>fTIio!T(OGcITlcQjy{{_w*OuU)$q5BP|5G5W(|^CXwf+CR+<%0ZL^ z2M$2EFH@0UV*r-qq8S&K7p$u~;Wu}!Qtrw_;9OAi9;_rX|`)VSC4WDxqudgrP z)a;mUFHS8WS}P7Ns21AWn650Wo_c^D8r^#66ne<#g$7hH#WQ5bhje9-+?c$@D~9#s zQy^iWqDev#s9~fOu3KoUf$u2_3S*|({sCdJUzlz{^cb@6^*7aNYBGTR^98poD_5?R z;s_~r?AQToC0Q!j;%vpY`iPm_xKk?n5=b1pDD-;D9{#j5u$%n6laym1JaU|)IBZCO z7y|f5n1R2Jm9EFCF!4qPo58S_uqpvy0bGT=d-rY&cokc5OhvO;)1Lj!ihkj^>0HQ= zGq3@E$}rct5GX#+_74q<5CgY$exz-feSQRx2eHyk*tn4TL*{g1-H+|9tvH6Bj;G6S zgl8EZ+%)&9S+3r*zuhy=ZxT*5Y7B_#PbY|sS<6g1USQ<{Q#C8ynyF{~40SLS4vz2@4*I0}?pSGG&76ILpdA;9}iBE-U~IywCcFX<+*=>>=2#p7a@av3=490vTL_gR3z*ABQPdPAD7@1$1;b4s`4aSB3m`Qe@#< zl#=2J*(g19KKVeo*qL=K3D(G_T;V!L1i>2F{>yuao~!4L#$92bH-ca|euR$3nTklP zgfhn-y`)HS>`&Z1k5dL|1~{? z)zt${ZvaRC<)=~cjX|TCXn2% zgC;PVP5E)MjvpZy{N1FrosOF_(2imI*D8HWLCBrI$4{~0keGE=$_6@^FrLD?uBzxy z82?RTECxmb=o{7J0AC`2++7BMtsEe0TZZ#66K+-z>I?|Sv;8**N95r~rf5Dte|4-p ze`O;?c*E)&hp?^{6-^X6;p(~H2QgyzMv02;E= zY}O*23MDioF_wv;Sd4MBV{vX6h)(^9i22v|%Dalhzy}bB9WG1Ou}>bvpiD?qj4SRy zaDE>d-YHCvVo!%FchsFhp?lA%u(pToQ(+{6tN(I!0>d@P<4Cf=uIwuN!N1mV&EET; zmA_EL9(fcp3}ooYK3R+T5ZR`bE5{z$m7c-&otDGu0KMlA#ghAgrf z_X0sAO$c`5gsVV6`m_<`Nwe77d?EVN%{wvBJ)B5H%{QLb--@tv%A)Jo{IckRpsxn@ zUuDrrbcU%Gn+^2zvJ$=?DW~SgYt7~Yle`9YZgZ(7F1q=~OT^`!vglL_yxvn}Jql`_ z`p$^?N#FFIB0=+Eo94cQ$r+MTo+#zaciz%p51~YsbzHjBqO^-BQ7zz*7*0m)#BgZ? z%Mm#d)i-glY+DFT>J|s5|5MOhaWFZ7HGQrhiwIUd5jP~sG?Ceq_CTwZ zANmrsu0dGQhNlxP9#%A?MTwr!ou!}~O%#XQ6s?-rHxwbK&4Wd(+>9O>N|DCo$?4aG zyz76JY$A#jWv^#-7hn_rJr`mV1c>qIw;AmhLTsijYSqrPX5u5>SM)&En$| zzX;Ypg|FUy5C<($d>TUpmRBM-UmoJDHgWXp!5+)kit-fD1%_(Ez>U+Qfm2;QW2oVp zun+s>i3T@IP6H<-)FWDE{n*5hdO)=nr>7wmKdM6^QJkZ{5MgDm8ARD@ADNPPqz4k$ zVCyJIT*Ws9fJEAM3alTTScJGxBKgP#VMNlW7Mb6_FWo9?``v3`&meaZZFnF=(#NoV z1frR#H3*@mtW#8G{bgYSa>9?;gv(n~E2t#VbasD_O{}t&88z#F7)owg3AxM2F$D)t z`RvrX_B&E1IH#Z{UXWN!v>HsrCs##^;HnAgZh&mVCncJB$tGefla7;?wU>5@Hll1b4Y5pPIUBsulW^7%MMm?3XwjpCR-YQcI&tXwE)tIL~u==G| zfm1~u*#e82U>2y=LrrDh_BoJ+EmU+C(UB8gB%bDp-pnPL)HE=x4Q5Dn zI?s4Fw5 zZYfAQe>b_Pc^q0G`vlcLNcvuaJgf*cs>FV~F1K zMyvOn)XO`Cdh*_XrF_6_41y^}np-n^G5Hw$-RV9T75QCWRJ>F+9%!e}M{$9U3lb+?bGP&TjjKTA1m(I2xsVj8xx2Z+|b0++LyYVp@j}oYy=Hq7!8!-^A0}ueS{p210i_ z;XOE7tXN4HFXbkuo8hqFSDk?dZZp`N9M7^oY3=Q<_rPmBo5Dm|d6-k7|*>)$qaGleVr7BqIcf{>Y!tH29 z5Q7v8PlSofq7K{ct3pp!a#?AhQ1(SnX5W{Rn?guf*EX3)zm;SmuPHY$4d*UgbIyCo zvjYo!5(>?^{|JjN_^HiHBdN0jX>}$aEirLt)iWV)crF~OHRtqA1*037vJ}VQVSIe} zZEtl~_doRZEr$@Ske?syLgI(wudV-w-EVy^v)XR?he*Ng&y~yYOT6{?f)C&B?yesD z`E6rA?C$=D`Yej7B*i--T~YuYH66J@MUZ8c>ev56Fm`@(%z_H*+7$bTWgwRCQ(j_( zLmky{j#Qa*2HT1XQifpEz3VS3TJ@(?MsAr$m8uTZX9-u5fuI7ke84-sEP^*Jz60$# z45C6R`NE?T`?{rl$64;wIU_<Yy-3C3S$J+K(!e`usR(^#2Qt z5Jpv%mW9-0LzBsPN%>VM)tR9d?x`gqghY*>@)>+`y_G;vMUA3R-VncjfR@w!g_>j3 zNFk*1ILR>1r+k{42i0!5|E zb_;pbPe>8GW@(|^mRwRHv14wruXHu>Mxjzw&mg91Ui_5R1f8LR8Ugc zdSnAbsc@CKTEvmLzb&&L74~jf6j9ktv3uQpH}+RKKKYksrq;22hqH>CJ`%xs(sf7T z=xXO!oB(_CI((&eAn<{oxQ}lK?$P32@8-R!jEm4T`9@wT`r>tJ48V#C2wxY0du*9( zv(OLzr1(N)ktkIs%tBbqZEvB=ID{;<0)-}IDLjCnNEBm@`b^Z8xhD*gJ+f3#;Fm<*>Iev)f)n%l^J2~Ov(l<%pNKq zpHrc#&mpj_yYa$c*AQ&nd#aVES?6W2Em#z;X_bbAdZ;0t&-121=brFUxPJgzJe~;Q z9#NHeJymig`cd?f`}U@s8%=mvhj*k-&xwm1-DPbMV-z1dcLW42a`_Hf+M5L=xW_`J zhGW77n!w$=u2*coa@P(VnnYLb0ff`|q!k2e8{L30TzcF5AL{BlVgYXX07J! zgnm3FxL8iS0lMhX5ymgwYf=Q|@gA2ha_pl+cF)3dA!b1dq^Vc;fpxgk4+b%k{rs?U z5#MZS3(g%$v%Rl4SNDNKxF6HLiSIZ?I3DD&g>$Z&w*o(oHtk@L8XyA09=)>s-n~jU z!^I@mH$>N9M}P`m;g;j7xj?_O?E!AH&2jJ>DdmKVox1LQ+#OweUDi3~v)ayb7jR-j zkTB4_ZgV}4wp!x9FTlqyoFj4qGDAz+K_cgZKfnnLGH^K95$JOVpHEmF$(F#xZidrb{Xd zZ?!x#iPug`TCYK$Vro#RPe=o$Nn=n26@~$G6#5jJFYNC_ihzQ@K9Q={hitVWw50Z= zy~>n8)1)KZL(WKBF+0o+XOcmxKMStkv;%xlnV7ywm8lk{cGyBMYF{FylL#ed@eoo( zsLZ3~w_$=9DJ2h;ZV0WyENPS>DjP~CBWgrz#?^ILWXL;Fp}|SW#g&h*j5Dk$BTu7i zAbsu_U3pishR%5wP?|qp zQs)67v=e^ePrpzIqiFBb5X>g#f~+)pVg+kuKXP-VZ4v>|OQRRkta#DYdZFbP#)$4QlG~ zw>}qvpdh_sSU!;qwq6=6{;L>OuZ?7|_3V`k4eNikf?nwwSKk|7VX*ad2(HqlSFt|k zdOgb1pV@ll?wbv5+B8kJ%@D-L65`d(S}m77w&A9Fju|YkxaET%PdB5ya8#m9@$(!~CY$ z(LNW*0wq7zR_mY?{+dm(A4PhG!FPWE22Q_O4ZT76U+AD4I(cTavR7_a?iJ>D#&H=yjjD*_7CuE zqyqTwV0eK@Hmm^O|B(&e|51?*)5HUu9S;9|o~Hku3}=A^&*MUQ-eZ;8m%_ntlp17} z8XQ^*dkG*Kc-3U;%n2j17YC~0%uvkuuaG#MgOhMKBe-M35ZBY>Q0|Ba52(+~<=m-M z+Pq>`_KZLXodyq_X05=fj}cxO29i!n?OaD!5U<14h;;pnD}*Luak%?$)a|(Y4;MG) z_;of&h;$$U8&C{(-|B2U?CcD@!`9BMja20Gw76-{6Or+WD{-EJ@0e={QL~L z_j*1*0~BgY?%L=I0A0JuzCMo!a7N$m`q`%=yQP=MVYmZL?4;Y6U8mfqgC5jB%!1pp zHYj%l+3#(TzV5)2FPxXyA-EB@N;-GVZCqI0}Pd0;D|VXZ=RcB;CU6BA-1t@ zL`=oSu*o;N0fwF%+xUC4-3$XytB5M(|GDW#TsG)1#PY;ChT?e7c^VjcE>~+6z+7JL zz@sU)gxHF_5%&VR7+PmfTnzm#K`S`70yS4z5#z%BjaG078>|1}ib{Bb6s|kU)N?8z z9(WSPmSz+VS>XN;M;bfOfGMgBHSsjCsaIN?{hlWv5qJ_sFbulx3(^yc=g(5Qp&)mrx16yK0UQ>X!vN8Oh8 f%N{>*M=2oxXf~@Xx+3VO&bASe=6UBy)a6=iop-(S_~s_vfY3ApR~egC}k@PwY~ zbE|WzPMxYcRkM83$mNqpPMYeNnlQE1)WoT+r#fFx>iz)h-Y%H8U$#%c&@o1|K zrL1wVvCC3Bv$`2cv$dj!k{m7qTDm$dnLRxx#l>cqxt-1vPB`I{Pd;IlFQ%qzb$eY) z9qh(ssa+HnYprdXmo%mo>s|#0kH3=QcmH<6Z@{2W6rPt=?{&G^prFgk#s*z3^%T@! zY;%>dr8AOF)QaW{fo=p*2-G?Za^HXdJ%j;u66wEXFgCf$#R{r}$w5V%NX8PrvMSZ7 z-MuR54XL6-?o{^l$`mJCb55GuTt|X@&w!kfl*(R)GF_l*t4fPXa$GrV&@CwyTnC-C zqTXD@rIMLW0t(RT52d^>%m-cmDJ9Hta$^vA-Gr2G;!XO~>U*YcbJ(LT68vT)wdNwb zT_i8i%=}CS%yD((f(8`l46SH|AOVYU&Mp^(C4*^;r=@OmXm_+qZg8=)8;5yx)Y`*p(@Mttj_@k#+&6JvNeRk(*lkoyqS) zw0z#B$D>P+-3Qk(sAsB^4f3SASo4yk3bQT<=l)zKo{e{7>L=S=J+z|P zTzAleMR)%-Vt;OR3!fKS;u8ygtoAJ4_dYXp5_|e+YEtZwu@USNPWX*EO45RCcEF8} zJSXM41a3kn^G#1q(~3UUL7w!ahPC=vQa*;$^1zqQI>q$@?DL&#ti} z#f8Q;i#r{uV0gcLj480QTd{5(P`*nI7SaQq@A|9gfftjTfd_YS|HgfyF)VFErxH$8 zauLH4YLuJ;Ti#XaBCpO8pG@;Z`Bj zgKS%NCm);@ppHXf| z4$DSewz;S`>9ZjyTq)28U*MsBwB3xkbtIw#VFyfKd6=d#eI*x zOmfI8(3Q|5Wu$8e7!pq!?9{-6uh54Qf%vaAeMkgT!CHueLZE18R=Z~&hYX_gCv$6% zN<{Mya=pM49zt)ZK7^<0N*8=$4w}xdPo#;V&)q9l90(FC5ei8tRPi^AsNydkbS05H zo8`jL+Vk?1%Z-6s45DSI$$!QN9O%P42#i5|o)CQglroHut%xwXrnWuDjzerUlwwr{ zKwewCJ7uz@y-?7;#Y~$ws@5H;0;-`9ZS_?V*19Zl&z8hqbMc`=jsLuH<`QDOztl`v zeYQKOy?!X=PGNgv{13X=lSfnAaf#B{qSkIV`+B82x5cLd*6^%5iA`@z*j+Q&HOL%1 z_f8HV)Cst=S=~x^fUWnr-`7q{cNax5RX{V6Tx@?^_iQ%kBzGZ?F}&Jo?R4;{erpL8 zxG#%#N!u`5qfAB)BuX9^Wk!;d?XN@C)^~E(v)8lTVePcj|7b4l{BCgRggo zb$3_Vb+edih@LN9a#Rgkx!B|~cRmUKc5nCV%-`Let#$6>E|d)-DP^UL-80Z#z?NU= zZis!KF5VC0?=Q2yr_nmbAxr;gR&hYX*mo-U2s+pN_jH83V~>N5m^~OW>NXZ3Rx%rT zG}XsVF5Hw=S9jUzs!z%W5r}6qld-1TK@L}tmd3LP#9Mj_FyA_~{f2CJK+~Q{ zDTwNeXA7s^QFwMf>DZKNa`Ko>i?I;%i)G1ICa~(EsZkxTHKw(E@TWP;vgE!Addy)2 zjQU6m$fXA4#N@v_h@7PZL{Ud?5n+qo0$}Jj{{s@nP;Y($v4_mWe%0e0*%wQ64|2rhA%Y*Zw8t#1uDQyQD9p6=$%?61u&Ifh*H%!Y7?}g%ZvhPL@{NP zYak*jd^s7>EN?8Ph%?AL>NWAPx4B9>&J^R2XzscO2MK3MbcvmrdeM$V6h19SMnZDtS;Lg)9>RZ?5iDSEOR) z;^sLiDOz1@y#*w6u4_$J`5ikPX)(;Fl}Cq^y*MA2hWWCoW07C5G%3Bi7|bN%r|}Vm z-%x8vSSWF8XMFwpz<)Bp`z6;VEGu$PPSncwCAD!taS1MV?a>4+?vsYM*^c_MYKQj7 zUe_dtR^-;v(;YPpL8rU(#{2Pa;+M-iX%pGx#)QS96kqTUrFdtQDnJWtbmS>r4|C4X3IO?y(=IU6&edrr z>9i;N18nMPJ0 zIuye&+dkgkjx)ShG7PiYBCn|kRSvMhxBEL7P@<^mkXsb-2sYPTt*PL`VB>#Fx%#jb zRSCCC`lfF^?)96#fodPlgA>fQBX~%Vn7-Ga%eK$-pU$aXFN!Lj_2#nLfnHP5^eRsl z8!*e?&43a`n>?Owl1bQ($$rTsk8Pjp@5<4yl1%bg?J%#YNKjnT&*NkRp75V-fEwkS z+IY^E>;f_D5zQ-mM;Dp@TPCp3oMGp9M?)kSIhMy4iYl?WTJ1$CYPARPIIVrFs4yAd=L#b)J z-^J=~3FNRlz6#}N&b+|VSaK0m)^{4F@l7utn`Q+km(M2s7|LQGH=cFz`U>dlyG4Nm zF}0os`+|6|HYKgF_9jn$&3SzrS~5s4Uhxu6FsM1p?8Keu3A5(ufgC~cS#QTKqp_9EW4((@7k6mE98<@u=blU?m|45<{V}t-g7%Wj~>gy`9!JVpeL-g zx;F4yj7gsR^4LT=5|O(6v|P<~Yv7ewA_tF6B*!4a-nhW$*1Y!w7DiDL_H(fh%F{-% zJuiClj-{t8MKh1}oSTN}{R3!Q&{(!s_+a4PDC%L+I+$;FUGn`sT@=E4X0N42FLvQjle)z)vOluSSTEtf0XY|PNGOFcsDTB;lNJDp1@Fv?`8RY z)5OBv+i_ZLv7oYUaM~hx@-*?K{I7vU20?tqtFuqqH_ z?Pj9i;*XPEwJH$c@?d7J%X5JR!H|a{ILI?X$)iAnQSxB;b;Xfqgdl&`k3KIu{8-vh zZpKSw5&B|rS}#SOLR4_9R7C{({M@u_c>ChQG#gcl0Y_tBgRO7htJ7+E=Wt^ z9IuvjELW5%^aeAdh@cwt)AS;pV=xZK(FRee%bR3TvEoDX2=FnAqMt<>trSeaig>d6s)S*& zGR?er&SAvQq1|p{k?M~sVIS-cw&UJ=KrG+61HdJ~Li^mt0@m@Au)~uObG98#%WT5w z#G}sa>9Kz!3M4d0i|PjdKsOi+>58 z%(<7wa<4B1lCipF`NAf=oo>A1{ETl_KyaaDl2`_-&tdCFViFnhcuebF@rr6Ur<QK#oKv`DsY!D$zF^B3XM8TXR+a}VWNeQsaSg4=Jv?v#^s5T|T4Atx}W0#~_ ziehO&l3pzIz8}jaXey8-(?%zLsgnv83TBvA?;we7QEkWq)$Ffemt&2doERy!~fCD z68SsUIMRdJtOt&9_hB^m-aS2SXl}Z0q^C0ei`kpg^VrgpGmyEmD?LfaX!c_cz}M<7 z>5?(rhDtWOuS>@1`qXz+XdnTHzVr7IwrMSdHH$gU<895FeSt8SE3DmCoY6ah;qPqL zcOrVykvl?f)SpG0Gd%jfETbv0wgX1C{Tn?lt!;V6db!$|(HR#eDC{uD&K0YLtnV^V zta>`sk1MM+U#A&GY8yMxlVlcszUQ4pjwjYS3OS5h8#7*#g<1mYZI+^1Ar|rYx=JBe zO?FhB?#j^XB(+Lwf`q=s7l1yocBjz8K#x=nce(F#Hy>!e_{EDOrJuO6XJ!BJ&mZz@ z^CP9jQdjdmD-yN+4`sZk*O_aaH6QSlb5dSKzJ!x6Ch}Z?MBZ7up?3Wj>m#LmT@Sza z@W#JyY&E%6q_jxV{)j8J_kaMDI#;iK5vN_r>9`baluZwGWR6lyJw^4o!UTiMT%8{6 zboAGw7e0R>=MkC_`q$BajaWRw#ACi^kIui*!?TBLzv6^R zC(yrVnx3gCb%o1%*Y&1?v*(??{FCJe4j(|>cl=|=gf}N7PD#Y8%o&;gIP{Od|M+*` zbf3b0Q>s+Lx9GD9XcOrn=)2@kG&aL@idAoJCaU(MS*FKcF&!ox%0fdH^k z^}|OFZ{4@`Pp|&T{1(rHUlrzWjwnKy2UkW zUIoRtvi);tU2_s^|kjZOr?+60?*NqnD5QQ6GG`LbFW@-Le*6 zcZ^FDExV(xP}Budq(6|3MrWf?)cl>ly#t8L7F}kRlb%uKFMjv}EiL204D}Ym1AfR$ zL#Sl_U+3d%`LpHDd!6Vp@H08HbLiFmYwyP^wt?xmk&3i|S1!2{Wl)}?cka{YLM5;f zmCSs1CIAL597tbbxL0?+3cHYf6&5HrC}R2 zLaa6qwfSuSXJ~v^ExAfbNe^(ms1hn>E{B#-ICtY*DnwuY{NU&4rRb|Dzvk6z6fk-{ zw1Yy}5*9h(ib=Z1Ac#9x-}&*kA1kF(;mS`}La8u2^!Lr7Z$A9$Lq!e`=*l1mhhi=S z3XEsc=%;XZV%K2H0T1mO@b%APwpkw#oFXkA3M=5cqOCApS503xp%2E@71*Bi@JVPb zkOJbHr666QjhPEEegP6=jw(Fw+4E386smTkUM1a|v}pSxyh7)9B}{ciN^?rcJD&CU zS)_HeSp|*<$O3SqoeKRf`0D}`rcO(ZlorSVpi|oSiLBuRtgHf8Q*FrA17*zvQ z7#f2KR28X9g(1-W`vLA&QM^&MEfFr1RzXosDw%)rIBUPj{yM)wu+M}nT zi{j1d&sHmNJam7eI|`#LMc%-3pU0%Nah@rO+RDQjM|E8#r$JZ6w4X$~LP}SunZ@kQ zui(Zu|K@SA-9I8=dUQO>cz4$I1S!7%<$LJKrG^K%wut>+a zCf3IJ?S*ndHPRe}e&G6-bqV|*JvS)3E#4t+~ALS5{u z1`#|3(~WXRBZ_7}oRP&FpNoCsM1H&PtYFw^iyX@pg|(%9+Asxy#eIePp)=UYAikvz z8(UxNsl0vK&9pJbx86i#!!9if7KsMG=0_N5LneY9$c@kZ`SV$1d}bMM>5ng-rm20SL7CeFATf#q zEXqnrB-(H6Eno08ObTfq@x3`gFRMEZIcJY!Aw(6I2ZF|4MZlpaj|A*=kvnI|6l z*C9*+sBUPk==|_8B~O){5;+Bp8HDaxa}Qy{zaBh%5aSOzE=r&{yhSX@b&U4C>F=8` z00Ry0f)57q4uKGYemvl_`}^H07(fR=$t^2xxoy>L=udb?bARf?r_7!SM9{BbNBHw7 z9U~!y)C!duo1~1l^wqr0fB1cdn>TzHoB4c300VuwX!6jj+;YvlN40o>ZwL6;)pUAWit8u)@RxNpS6J*HYovKYb0CglBmCD9Ds)DHvhV>F^e90Fw^5 zSi&;@?fYC`NYHP7KT#Ozdxjh<^#r2~v33G`P8O!(E3>q3Eql&1qsRsdiqGXyhuAkA zZU%)*LZ6D-5~n3TjzreVQ-=cr^U! zf)O9H6WY(`T^44z7QqF^O}J)NGd#e}Bb0`6@G+YKo(`kLman(8p3<7&p>epM?|%M{ zN@(C#-Uy8v^E0@$NNH{!!drA3bC~?XM=yYZ>RL4M5TQ>n50hZLgCkRNk%<*PdNXDN zh$~D>5_*$wuQz$dVQ~S4i0;R~ zG5+>dw`1OcuP7uej1AB?S~|w%u`9-6Edg&a_(J`o^XBB?1*RfX8mFMm!y0%8N2eH* zXTse2(GMO~|5S{C-hd7QhxEjzC$3+1JJn(ux79>8MlA@gK1M<`uVJ_cM+ zkTuZ(*sZ4`!kY0K>xMhRNuL5NPMOJF)NrcSmnA zu|lwQ`kd2E>yCOS=`6>EN~Ky#S&8ix6bf(MvFhhKGl(RLzB;;w0TrhE1%DZe+^Y ziP%Fr93*P#{(~}QEV>M{?{6XJVoIa2!V9Toi&jwON@_~Ui5BdXG#64&)iDab5U(4V zyx5A>=KLF}HnH_7Q*z7z)^r{DjnZ{2th*uI(QeD}JgJTxQU^Ag?-NB*9pa1x6@g$h z6pCz8dyFDV?XgIb%O|jy0>!b9$*Tx`L!d`w6Y3O|t78Qa;t7K&97_=;|5#+fieM%N zUacy@&LV>a->#PjMb-}G@XQ{Q5kwAUrpTeBA}avV=Z+3i5P+qKvV$yAB3hOz33IWXpM>a7iKrU@C_C0OGFruK;zDZL>o2-lN&ez(kEikK9m?z3B- zz3#Q^FsviyK|BS&4#6;CK(vf;17j}&p=obV!z5BIL)qhIN@U>E8o|rkUcS2i>OW3q ztOmdYH!i^Bj6EGAf%3q>woq+5`)ur^D;)`fe9?6U~jp1~*e8 zV`M@->4TBRB>5sg9sN?;c2c*Blx8_;#EO)Ta@sVkg%0hrmHwU93jZGDby3JS7j z^xamm*@^)Kx;B@bGw&SKUd=ZQ`7k#Z`v4~2#^u`*&7u{&DLg@T5VnUlqQ>S(>9wt} zHX12aWInZM$D9e%;9ld0TRp{!j6d#sh$+HV~<_OJC1Ezj_|O;DhF>@T>~FO zj=2Nbe@XrR#)Jo@ltFQ5y!HZ*tM){X2(D>v0T##q3iHuYv$!Rqoh+!}f*wB=1orWG zgTcLX4pYvnn1$JXIVVzDUxXwIbg}90OjrI3Aqy7e;JM(P(T}k`Xx_)iQiWLaoNGi= zT-W`CuItNe8CgWQMW_>G8bkVpCyS z{KOuSG9#90F+5=(h)QBAJW@0|SHT}G-Q|*CzN}M@tggP0vlmIFdUcQI)oC`>#lA5X z{-gF_p5OXBnlepvVydezZ%}SCtoyq}XhHA+vbu$`P90@+_2t67{@?ZL6r1WIRKoO9 znU)@~6^QC0AqrpPRaf6!`JE!PAb6>)ZZTE&K2N@^uD*D^*MHovu%nP2DO(!tgRqPp zTU+FuptdyeKy3jKDK+^Z5gt*BHjI1R67Z$L7UVul*0vYb_FZqWSfx4c;+n6D!?0&@ zl$Tw$YZ;oaITsK%q~_ahRy(pMyf5ZCk(*GnE|!-4e9xUkdb3FmpmidB~KwZX==62Ck%d#j9UQF>NoB$8Ek+QaBeM z%U6(8eXz*`0kQXnR5F@@Vb+0-GOR|CJxF}i4|}H=G*OAl7b;`KUk>q!2b;XtKh#bH zJzGKwn8-yS;JV8LZnkqYPQ>tbhhPf(DJyaP&t3oYUuv|+W0faGik7-m$BLA`Ybdxn zku9GPdiQq{bg}0b_zU=@8hQL004LkI&O6d5b7FB5ALd`;E$6bq?>UXP3ggPisHHsn z8MPI2IFnf25^4@4y0med17!(p`P9%_8*~#xMbaqC*_7L#DP0TK+Cv0^=&o~4jp zi;xC37t)KZXeTHv!29cJ<;<@~xFx#`+J4{s* zS73gOjZa;JJcKqhXuw|<8TFbMNiW#5#1tB9ZDNCWwG{3^07n6|F9W|puqRD|83fD> zV};CFnKf|02 zCQ;+Ewvf`RAnuB3K7fNl5Y@yQYk3%=J*+0YZ+h6o}YftqR)}D%UI%t?y zd?Ao1Dl))X(;*<5<;dfztKjA6m-7r^^4RC?yw`I1@}zt=pfN(S&2RXf+Q$6!Zy@Ox zq0xf1bLGmF{Elqg#}kCW#aviHET1IX`XUlUAwho&r(%W6e|v!AD(RKVkZZ@K_idui zt3=J^Jtd3H=z%|rI(tjl!G4}xN!&>E;TfnF~?9u5y+zbagsxnGw;jBtb#zM7}O0rdrMzDj8Mr8yNH1H)H zhWA`wC-XU`^U`^nJrWwhtKemaKEd_ldKLJDL{vfG>vrh&s1NtQ>9Pelxjb$v0iuil zuo=XuK!hhF(VZCNcz+iLLk*M`!n_9eu!EZn;RTv#d@g?41~&v?pN};^mYK)fVm4$< zjEuUtnv$TgS)rm4^?>jSiAPv(q{A?XVUW*)tWOLQNK(O+kmf=JkGUcCzOagctO_hT zVsk^y{Q(dc_a?FNK+`G3SUn)M1MI;J5uhq;iJYJYfTAagkOGSk5n&->LIjP_98x7U{(L{F|Rue-@y&@O zC|V4N*x7r8uy+R1OoW?%XA@3W9{SOT^&m1jUk@_Oq#OOlCUovTi+tH|bv`xP3DxVS zu3qFTl8BF3S!h(qJ{a_sj&KBVzemM2o9@D=ke z`U>4*e;vEm$XP-O4%^|adFc`wMhP7jYYF!zakMO6FGo*B=!y1)WOJ~je=U&{)Ua!c z=@O135Ikl8_zG$4tUg*;y?thX8unlSj40@781@eR2IC*>>dTV{ETCrHA7A$=y16hr zEL&oFUq+2*;tCA6c-2uDQoTPyc8}A$4^qtJ=9a`q-ul-EO$YYBnTujr{79&*2tdl> zFs;Bkf$n>uXS3}wA;B+=@E;rLnxEM>u75wZ=2W<8bQy6fIpze|TZiw) zE+Kq9R7}A5OXk5wA)Z^py-B2@+FBk{Nq7(>(qpj#i!aC)CF(7ao6?#NKf$LfQSd-> zZmZ?Ti2=HEW;q$_qg0%IKiJb`=OeIl)z`4TFtMXCWSIB}VsPOfgu9>e4sI>P`+RO^ zx3Y6`W=sA1XsAC27r!|MJMr;ZShzo{y8)XHy(eM*-Ebt$N%4D61P6t8z{`kOgLmmX zWmaW$Re}eYn7-=0T{sgurEAyQkz9ZUAoLC#x>SmTRiJkqON>fYz*jot07wk$!(JJN z+!oASfsS<-T6Ad%_a<>d!q()Ow*&yQYL9_?lQ`i{9S9593X{$rB4Vc!%KPtF)A1PO zru&d@fJ&fNiWDA@U4TMsZ#xj+iym{+-K}V?5jHu4!ssnsxRKH3&3Z0iRc>zUujM4I zcV*@oW`K^|9aoa4<;KH1IvN8bm9^0McqpaArwMmj-2=Dr?tTtycIbRAQPg#(uMOzY z!4J?Y&W6#=<7aeVRJP_48fHdrI8u1%A5P5DVMWZ6E_(4IQWqUr!Bj|Tk3uLq8H#WP zYBYyXaLDLz@Q8qK30DQqz&D?m#0fEUbd@BDq;~+&iTakvi5MO^S4gT++alNsu?wN* zr%y_>-1u@u=E>AIMfAMo9BymsQ%b#gtSZcH{S$26bwp-&v+8rW_pPMBiJOh@3DJ2F z-Wgly)O=zj+l4Ud8iwxNbUw~5^?nnRqpE2>ac1LG*|Q6CRBw(lFIk@ZT-e#5YS=k; zLX4h^GXvM$W~AmN+^hB1UOIA9F*VfTV8|K?|JqDNyV9C@Fx2R6fTO5xbJ%FgBu zjguoMV@@4)1_izud8U;4*s>@%;(#WK3?>X5@B49(LC9>meKr-LjhdWF9ToRGYW9)=JLu@k&MoTqvl7gw3zydgyQ9hgHm z5TX&6+G$*Jll0jXz>tE7Hi*@IG*!BF!s^ZS4SU+|gc`k8%U=x3%MPYgoz1EWaOGV$ z?$`O4&W);G2D!f%7SB=^r(+nPUeH26=aIH@3}o^_h@oOlPG=`Tjb_1os)P?Lt3E1r zHjnQL25<3Ujv#VR6hkzETyx;1Y(@`sdLOePY~Q#D&Q_0NZ`^cM=dMiXX!lkAUQQB) zpQS06jtZe-F7((vjQj2Qu*vnPD(B_CROk^ul&JelI={gid;FdwW~LJ1R0@C)k&b7% zeQ`Z0IMA635D5g8N}xG<=8A!D6sD64O1iRyw&{B1mXt-q34Es5PHItEB5k4-6vK9% zg4OHh>v4A*^iwJI6J{sp;yyCe$Y@GJdXs|TgDP3?Mqh|mjm~hOY90Azoq7F*FTTj8 z+L;ad2qTEp2OW_D5`NRiSVhw-4XGZ>Gz`!gHP0dQKmFm;2(sxPyeq;!I;W54Na@;^ z+Q?~QYO$*el4JJWi$A^zeosxAOUV&toeH21OSQ#Ip(=E}A*RMON-8Tmh&tYN*IjV% zs5n($)LL&?XL9{w2Y9`Aw5s~m64}eAw`c@>1qnaOq&K%SjoN~$`XF@0;t<9mxF*a` zj#1mrY}Yy1N7+9MjodR;)RgkEpz$y}qXcW=mYR}GqGO1mWlD*^2&ac`kfH{8)88jP zR9k$7XrihJM|d;n!3KTnouFzdj%#_%u7DdCH7!y#?P1On)LkM3KOZSB5WEwt^JmFF zoR1L(pCwC{Jn+B+^sH#BhwHDuo}PJw9?!3WAV?OOiXK0$!ru)vZ;>>;mO5F@rw_a5 zvbVjyAG|EsYc6|ErS)&z8(~H z`pZcCe$2ie-n%)bUMY}^?N&sFD`Nz&&oF9is0AHgLoJN4ut%@jLIl1GzbH4V!oaeq(3fV_uP_s_R4fK8Ox`fHvxQEf=-I)O;W> z9a@9DhLam?Bkx&k%jdX6w0Q%5%8C0chM$2EsG{X{pWr{4m&_4Lte$|M7uq-9`+)fN z)<}OF-hVjn5-abQcs)(NoNLpD_c@Aph%;HpeHC=UdQb3&ow_0_FKR_8&Q)!F*`kH) zneTm)y>)|NeiLV2z?mo2G`g<9McJcydik|B%t{qAnn8l_%YqZTaJJv4s?8prjbEZd zB_CsNO%OcBaUQsl0X#I6cXikhKc5qCCn`ZSd%u8NgHfkfxbwz`+AuxiFXPo>Zw>K> zpuxL21JU^fgYI?=23Y8*zQE}$uyS1KRa|uM$$9Z%6JN;#>E*mZ>Pb1;r}MoR*zvts zPgKxlUcgR%9Y1-6imem20O@BfBQi1I&3C3GUAiynJUi0-cX-CL4h_`8HdyG9gd{Wm zYM`+rK8@2G{B0S2fN6`QvA_)^e25Ik-W4CaYlA<;v3E%97o6R?eF$uhw>vJL7u}Sc z40T`T_^|b7ibN}r;P}mP@m;_-FuxE8mDTPU2{z4(tLj##0sT$O&>GHJcoJF`;kaP_ zliT9|5Z-_6P3ZP#Hg=eAESKjyYEBBdYA(L5o;xu2u^}v!;pJ>^J&!uaA#N&%gBC}K zYf{g4)wDm^&Dx#hO{wX1wkV{_%v%N#XG6d->ih^#ah*FL{)r6-?m6AMkB&l%lhhEv zTT{0`Tyxcw8ZkN<_nAWgdyuH}AhD-MxD*S{Z}B*W0~@tl58>W&a1rAh1j%PhhdEp| zgRh(_CDHFTj}H@j;saq~X>1qb_n@23bKn;gP2a#e$eLGRxug9+M@R6VAo&{?qQ`+* zQL6udTr5l6jNZ~Ih$`$(Z1sfB;Bl=uxFI>XYuaB4A;#P)gur#mQMaGR2L=TfTQ$Hd zekt#)Sc&vY(jisc^Ac6K;CySFkodhq5zR}f0yXW&L}_i^!UJn!m2-cFXDQSe`Pv! z6!+9Y6;`meb`6OiQ4y*BQmX8lx_gTu)j%m#)V1jGfh7eeTXl=~GA>&DE7T!c-2D71 zEU9ko84?XZb0tQpLYu9a6QB0bhl^rL99l zqCtp-3rV@4rv3B%AsZ$8Tdz?UCNfu~02QfV!{>O#ZwOiFgxRV&-Z7A{<%`$N`RmiG zj0}4zP9d9pM`#G-$(FiON%#hc?-?(@b5E@L$KX4?bFzH2YcS=On{wf+a8>%! z&FN0I^~TVZA{)IX?F{^G-U@FatMmBqldw01hGWc1WeKB@vB|HMX6jaTJNVEmUb>%M z(#d11Uh&>WdGKbL#)WVJc+nl91#I|A@2B-e#!cyug_;t1hPn8SM5oqfT4-JZE4q(E zt^=g$PIUpvQ%^NtB!oNFiyq-XTcUwDqo??r-O+D8NaP8VMxwJe@x@S2+#G(57uRb4 zgw&qF-#Cic@O{yE;y!d!O0qU_nZm1cAO&TAE~XPeE?~nCMI*l@m>L5xusqAQaOhI^$sa{GjYGB&(lG_trv8C7e} z$gJRc5t(}0#GsCho0J7|8j$z&L|)$Tq0tl`PGq|egl?d04^Rkbf62-0qu>2n;G4jD zzXzobs`7npZlRqrSqzI#~v#SWw%_CyK;2)Nl_ZuGrl2BsTjdt}NRWh?L#gFr!o zGIC%h?-csv zjMWZ*w3Jahp$kEYc0F--m2n@ZK^BUt;1cFY3GIL&7k-6-7A=i= zt8S)R#H2kpo2w#CR1?rIAXdH*3!pRA4OWD00$uFDbOXZiF)Ze#t~F=P-r_79>C|@8 zWF;MK5P{`*brlyCDVDX167Z`7{Ss)97xj=gZbd;VxuVJ?g=`y<=+q(>y2dM!Xs-o~ zqOTG(M0%%nQO)4Kg;HJPmAVL50+uL=tmPH8L?CD*kQn?K1RAXbqOBPSG(zc!iX~+#wNL3;gE+qwklKgi5$t#_M80SZOOllu$-TvzCj#+ACI! z`ciiIP4mrg){EpM*#gddvS2PRixayAOaQdmM19*-1m{}7jZhxT67zJ_Twj{UM4MLY zQS<0a;w1B2&U~h8+1EQpuJ z)_(HkrZsY`K#5f+o15aeS>ND%O+T}uz}3Eox*v{%+pK_(zp7@Vt5PnJi=T{)`eTD6 VFDQx?{{P+>*EjvY*3Kly{{XB>Bl!RT diff --git a/Levels/LEVEL1.LVL b/Levels/LEVEL1.LVL index bb135ff12d676c07e86744403f9915628bf93317..cae06832a951384e567b8890ec5e9088daf57425 100644 GIT binary patch literal 192 zcmZ<^aprI-P0Gp4Q*g{ID#$M?VSob(iT?xvTrnO7GebKA2*Ut311AF)5DP*D`k-_d Wm}X@VU|<150R}b(9yG|rfC>SVJS$lM delta 61 zcmX@W*uXf!%S;3a*cccXB)cWMffNHjFCVWAkeState = ptrFlightData->State[FlightDataIndex]; + AircraftFlightDataIdx_HashTable[FlightDataIndex] = AircraftIndex; ptrAircraft->Direction = AIRCRAFT_DIR_NORTH; // Default to north direction @@ -499,7 +507,7 @@ void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA* ptrAircraft) switch(ptrAircraft->Direction) { case AIRCRAFT_DIR_NORTH: - AircraftSpr.v += AircraftSpr.w; + AircraftSpr.v += AircraftSpr.h; AircraftSpr.attribute |= H_FLIP; break; @@ -514,7 +522,7 @@ void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA* ptrAircraft) break; case AIRCRAFT_DIR_WEST: - AircraftSpr.v += AircraftSpr.w; + AircraftSpr.v += AircraftSpr.h; AircraftSpr.attribute &= ~(H_FLIP); break; @@ -572,7 +580,16 @@ uint16_t AircraftGetTileFromFlightDataIndex(uint8_t index) TYPE_AIRCRAFT_DATA* AircraftFromFlightDataIndex(uint8_t index) { - uint8_t i; + uint8_t idx = AircraftFlightDataIdx_HashTable[index]; + + if(idx == AIRCRAFT_INVALID_IDX) + { + return NULL; + } + + return &AircraftData[idx]; + + /*uint8_t i; TYPE_AIRCRAFT_DATA* ptrAircraft; for(i = 0; i < GAME_MAX_AIRCRAFT; i++) @@ -585,7 +602,7 @@ TYPE_AIRCRAFT_DATA* AircraftFromFlightDataIndex(uint8_t index) } } - return NULL; + return NULL;*/ } void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t* targets) diff --git a/Source/Camera.c b/Source/Camera.c index db01dec..52c7fd7 100644 --- a/Source/Camera.c +++ b/Source/Camera.c @@ -39,10 +39,6 @@ void CameraApplyCoordinatesToSprite(TYPE_PLAYER* ptrPlayer, GsSprite * spr) void CameraApplyCoordinatesToRectangle(TYPE_PLAYER* ptrPlayer, GsRectangle * rect) { - dprintf("Rectangle {%d, %d}\n", - rect->x, - rect->y ); - rect->x += (short)ptrPlayer->Camera.X_Offset; rect->y += (short)ptrPlayer->Camera.Y_Offset; } diff --git a/Source/Exe/AIRPORT.s b/Source/Exe/AIRPORT.s deleted file mode 100644 index bdff6c5..0000000 --- a/Source/Exe/AIRPORT.s +++ /dev/null @@ -1,52108 +0,0 @@ - -AIRPORT.elf: file format elf32-littlemips - - -Disassembly of section .text: - -80010000 <__text_start>: -.extern get_cop0_epc -#.global run_bios -#.global is_load_delay_ok - -_start: - li $29, 0x801fff00 # Load stack pointer -80010000: 3c1d801f lui sp,0x801f -80010004: 37bdff00 ori sp,sp,0xff00 - li $k1, 0x1f800000 # set to hardware base -80010008: 3c1b1f80 lui k1,0x1f80 - - addiu $sp, $sp, -24 -8001000c: 27bdffe8 addiu sp,sp,-24 - jal ResetEntryInt -80010010: 0c00edad jal 8003b6b4 -80010014: 00000000 nop - nop -80010018: 00000000 nop - - jal psxsdk_setup -8001001c: 0c00d562 jal 80035588 -80010020: 00000000 nop - nop -80010024: 00000000 nop - - jal main -80010028: 0c009473 jal 800251cc
-8001002c: 00000000 nop - nop -80010030: 00000000 nop - -80010034 <_real_exit>: - -_real_exit: - la $a0, progtermfmt -80010034: 3c048004 lui a0,0x8004 -80010038: 248413e1 addiu a0,a0,5089 - move $a1, $v0 -8001003c: 00402821 move a1,v0 - - jal printf -80010040: 0c00ed8f jal 8003b63c -80010044: 00000000 nop - nop -80010048: 00000000 nop - - jal call_atexit_callbacks -8001004c: 0c00d511 jal 80035444 -80010050: 00000000 nop - nop -80010054: 00000000 nop - -80010058 : - -inf_loop: - j inf_loop -80010058: 08004016 j 80010058 -8001005c: 00000000 nop - nop -80010060: 00000000 nop - -80010064 : - -# VBlank handler - -vblank_handler: - addi $sp, -120 -80010064: 23bdff88 addi sp,sp,-120 -.set noat - sw $at, 0($sp) -80010068: afa10000 sw at,0(sp) - mfhi $at -8001006c: 00000810 mfhi at - sw $at, 112($sp) -80010070: afa10070 sw at,112(sp) - mflo $at -80010074: 00000812 mflo at - sw $at, 116($sp) -80010078: afa10074 sw at,116(sp) -.set at - sw $v0, 4($sp) -8001007c: afa20004 sw v0,4(sp) - sw $v1, 8($sp) -80010080: afa30008 sw v1,8(sp) - sw $a0, 12($sp) -80010084: afa4000c sw a0,12(sp) - sw $a1, 16($sp) -80010088: afa50010 sw a1,16(sp) - sw $a2, 20($sp) -8001008c: afa60014 sw a2,20(sp) - sw $a3, 24($sp) -80010090: afa70018 sw a3,24(sp) - sw $t0, 28($sp) -80010094: afa8001c sw t0,28(sp) - sw $t1, 32($sp) -80010098: afa90020 sw t1,32(sp) - sw $t2, 36($sp) -8001009c: afaa0024 sw t2,36(sp) - sw $t3, 40($sp) -800100a0: afab0028 sw t3,40(sp) - sw $t4, 44($sp) -800100a4: afac002c sw t4,44(sp) - sw $t5, 48($sp) -800100a8: afad0030 sw t5,48(sp) - sw $t6, 52($sp) -800100ac: afae0034 sw t6,52(sp) - sw $t7, 56($sp) -800100b0: afaf0038 sw t7,56(sp) - sw $s0, 60($sp) -800100b4: afb0003c sw s0,60(sp) - sw $s1, 64($sp) -800100b8: afb10040 sw s1,64(sp) - sw $s2, 68($sp) -800100bc: afb20044 sw s2,68(sp) - sw $s3, 72($sp) -800100c0: afb30048 sw s3,72(sp) - sw $s4, 76($sp) -800100c4: afb4004c sw s4,76(sp) - sw $s5, 80($sp) -800100c8: afb50050 sw s5,80(sp) - sw $s6, 84($sp) -800100cc: afb60054 sw s6,84(sp) - sw $s7, 88($sp) -800100d0: afb70058 sw s7,88(sp) - sw $t8, 92($sp) -800100d4: afb8005c sw t8,92(sp) - sw $t9, 96($sp) -800100d8: afb90060 sw t9,96(sp) - sw $gp, 100($sp) -800100dc: afbc0064 sw gp,100(sp) - sw $s8, 104($sp) -800100e0: afbe0068 sw s8,104(sp) - sw $ra, 108($sp) -800100e4: afbf006c sw ra,108(sp) - -800100e8 : - -vblank_fire_user_handler: - - la $t0, vblank_handler_callback -800100e8: 3c088007 lui t0,0x8007 -800100ec: 25081d70 addiu t0,t0,7536 - lw $t1, 0($t0) -800100f0: 8d090000 lw t1,0(t0) - - addiu $sp, $sp, -24 -800100f4: 27bdffe8 addiu sp,sp,-24 - jalr $t1 -800100f8: 0120f809 jalr t1 -800100fc: 00000000 nop - nop -80010100: 00000000 nop - addiu $sp, $sp, 24 -80010104: 27bd0018 addiu sp,sp,24 - -80010108 : - -vblank_acknowledge_irq: - li $t0, 0x1f801070 # IPENDING -80010108: 3c081f80 lui t0,0x1f80 -8001010c: 35081070 ori t0,t0,0x1070 - - lw $t1, 0($t0) -80010110: 8d090000 lw t1,0(t0) - ... - nop - nop - xori $t1, $t1, 1 # Acknowledge VBlank IRQ -8001011c: 39290001 xori t1,t1,0x1 - sw $t1, 0($t0) -80010120: ad090000 sw t1,0(t0) - -80010124 : - -vblank_handler_end: -.set noat - lw $at, 112($sp) -80010124: 8fa10070 lw at,112(sp) - nop -80010128: 00000000 nop - mthi $at -8001012c: 00200011 mthi at - lw $at, 116($sp) -80010130: 8fa10074 lw at,116(sp) - nop -80010134: 00000000 nop - mtlo $at -80010138: 00200013 mtlo at - lw $at, 0($sp) -8001013c: 8fa10000 lw at,0(sp) -.set at - lw $v0, 4($sp) -80010140: 8fa20004 lw v0,4(sp) - lw $v1, 8($sp) -80010144: 8fa30008 lw v1,8(sp) - lw $a0, 12($sp) -80010148: 8fa4000c lw a0,12(sp) - lw $a1, 16($sp) -8001014c: 8fa50010 lw a1,16(sp) - lw $a2, 20($sp) -80010150: 8fa60014 lw a2,20(sp) - lw $a3, 24($sp) -80010154: 8fa70018 lw a3,24(sp) - lw $t0, 28($sp) -80010158: 8fa8001c lw t0,28(sp) - lw $t1, 32($sp) -8001015c: 8fa90020 lw t1,32(sp) - lw $t2, 36($sp) -80010160: 8faa0024 lw t2,36(sp) - lw $t3, 40($sp) -80010164: 8fab0028 lw t3,40(sp) - lw $t4, 44($sp) -80010168: 8fac002c lw t4,44(sp) - lw $t5, 48($sp) -8001016c: 8fad0030 lw t5,48(sp) - lw $t6, 52($sp) -80010170: 8fae0034 lw t6,52(sp) - lw $t7, 56($sp) -80010174: 8faf0038 lw t7,56(sp) - lw $s0, 60($sp) -80010178: 8fb0003c lw s0,60(sp) - lw $s1, 64($sp) -8001017c: 8fb10040 lw s1,64(sp) - lw $s2, 68($sp) -80010180: 8fb20044 lw s2,68(sp) - lw $s3, 72($sp) -80010184: 8fb30048 lw s3,72(sp) - lw $s4, 76($sp) -80010188: 8fb4004c lw s4,76(sp) - lw $s5, 80($sp) -8001018c: 8fb50050 lw s5,80(sp) - lw $s6, 84($sp) -80010190: 8fb60054 lw s6,84(sp) - lw $s7, 88($sp) -80010194: 8fb70058 lw s7,88(sp) - lw $t8, 92($sp) -80010198: 8fb8005c lw t8,92(sp) - lw $t9, 96($sp) -8001019c: 8fb90060 lw t9,96(sp) - lw $gp, 100($sp) -800101a0: 8fbc0064 lw gp,100(sp) - lw $s8, 104($sp) -800101a4: 8fbe0068 lw s8,104(sp) - lw $ra, 108($sp) -800101a8: 8fbf006c lw ra,108(sp) - addi $sp, 120 -800101ac: 23bd0078 addi sp,sp,120 - jr $ra -800101b0: 03e00008 jr ra -800101b4: 00000000 nop - nop -800101b8: 00000000 nop - -800101bc : - -# Root counter handler - -rcnt_handler: - addi $sp, -120 -800101bc: 23bdff88 addi sp,sp,-120 -.set noat - sw $at, 0($sp) -800101c0: afa10000 sw at,0(sp) - mfhi $at -800101c4: 00000810 mfhi at - sw $at, 112($sp) -800101c8: afa10070 sw at,112(sp) - mflo $at -800101cc: 00000812 mflo at - sw $at, 116($sp) -800101d0: afa10074 sw at,116(sp) -.set at - sw $v0, 4($sp) -800101d4: afa20004 sw v0,4(sp) - sw $v1, 8($sp) -800101d8: afa30008 sw v1,8(sp) - sw $a0, 12($sp) -800101dc: afa4000c sw a0,12(sp) - sw $a1, 16($sp) -800101e0: afa50010 sw a1,16(sp) - sw $a2, 20($sp) -800101e4: afa60014 sw a2,20(sp) - sw $a3, 24($sp) -800101e8: afa70018 sw a3,24(sp) - sw $t0, 28($sp) -800101ec: afa8001c sw t0,28(sp) - sw $t1, 32($sp) -800101f0: afa90020 sw t1,32(sp) - sw $t2, 36($sp) -800101f4: afaa0024 sw t2,36(sp) - sw $t3, 40($sp) -800101f8: afab0028 sw t3,40(sp) - sw $t4, 44($sp) -800101fc: afac002c sw t4,44(sp) - sw $t5, 48($sp) -80010200: afad0030 sw t5,48(sp) - sw $t6, 52($sp) -80010204: afae0034 sw t6,52(sp) - sw $t7, 56($sp) -80010208: afaf0038 sw t7,56(sp) - sw $s0, 60($sp) -8001020c: afb0003c sw s0,60(sp) - sw $s1, 64($sp) -80010210: afb10040 sw s1,64(sp) - sw $s2, 68($sp) -80010214: afb20044 sw s2,68(sp) - sw $s3, 72($sp) -80010218: afb30048 sw s3,72(sp) - sw $s4, 76($sp) -8001021c: afb4004c sw s4,76(sp) - sw $s5, 80($sp) -80010220: afb50050 sw s5,80(sp) - sw $s6, 84($sp) -80010224: afb60054 sw s6,84(sp) - sw $s7, 88($sp) -80010228: afb70058 sw s7,88(sp) - sw $t8, 92($sp) -8001022c: afb8005c sw t8,92(sp) - sw $t9, 96($sp) -80010230: afb90060 sw t9,96(sp) - sw $gp, 100($sp) -80010234: afbc0064 sw gp,100(sp) - sw $s8, 104($sp) -80010238: afbe0068 sw s8,104(sp) - sw $ra, 108($sp) -8001023c: afbf006c sw ra,108(sp) - -80010240 : - -rcnt_fire_user_handler: - la $t0, rcnt_handler_callback -80010240: 3c088007 lui t0,0x8007 -80010244: 25081d6c addiu t0,t0,7532 - lw $t1, 0($t0) -80010248: 8d090000 lw t1,0(t0) - - addiu $sp, $sp, -24 -8001024c: 27bdffe8 addiu sp,sp,-24 - jalr $t1 -80010250: 0120f809 jalr t1 -80010254: 00000000 nop - nop -80010258: 00000000 nop - addiu $sp, $sp, 24 -8001025c: 27bd0018 addiu sp,sp,24 - -80010260 : - -rcnt_acknowledge_irq: - li $t0, 0x1f801070 # IPENDING -80010260: 3c081f80 lui t0,0x1f80 -80010264: 35081070 ori t0,t0,0x1070 - la $t2, rcnt_handler_evfield -80010268: 3c0a8007 lui t2,0x8007 -8001026c: 254a1d68 addiu t2,t2,7528 - - lw $t1, 0($t0) -80010270: 8d090000 lw t1,0(t0) - ... - nop - nop - xor $t1, $t1, $t2 # Acknowledge Root Counter IRQ -8001027c: 012a4826 xor t1,t1,t2 - sw $t1, 0($t0) -80010280: ad090000 sw t1,0(t0) - -80010284 : - -rcnt_handler_end: -.set noat - lw $at, 112($sp) -80010284: 8fa10070 lw at,112(sp) - nop -80010288: 00000000 nop - mthi $at -8001028c: 00200011 mthi at - lw $at, 116($sp) -80010290: 8fa10074 lw at,116(sp) - nop -80010294: 00000000 nop - mtlo $at -80010298: 00200013 mtlo at - lw $at, 0($sp) -8001029c: 8fa10000 lw at,0(sp) -.set at - lw $v0, 4($sp) -800102a0: 8fa20004 lw v0,4(sp) - lw $v1, 8($sp) -800102a4: 8fa30008 lw v1,8(sp) - lw $a0, 12($sp) -800102a8: 8fa4000c lw a0,12(sp) - lw $a1, 16($sp) -800102ac: 8fa50010 lw a1,16(sp) - lw $a2, 20($sp) -800102b0: 8fa60014 lw a2,20(sp) - lw $a3, 24($sp) -800102b4: 8fa70018 lw a3,24(sp) - lw $t0, 28($sp) -800102b8: 8fa8001c lw t0,28(sp) - lw $t1, 32($sp) -800102bc: 8fa90020 lw t1,32(sp) - lw $t2, 36($sp) -800102c0: 8faa0024 lw t2,36(sp) - lw $t3, 40($sp) -800102c4: 8fab0028 lw t3,40(sp) - lw $t4, 44($sp) -800102c8: 8fac002c lw t4,44(sp) - lw $t5, 48($sp) -800102cc: 8fad0030 lw t5,48(sp) - lw $t6, 52($sp) -800102d0: 8fae0034 lw t6,52(sp) - lw $t7, 56($sp) -800102d4: 8faf0038 lw t7,56(sp) - lw $s0, 60($sp) -800102d8: 8fb0003c lw s0,60(sp) - lw $s1, 64($sp) -800102dc: 8fb10040 lw s1,64(sp) - lw $s2, 68($sp) -800102e0: 8fb20044 lw s2,68(sp) - lw $s3, 72($sp) -800102e4: 8fb30048 lw s3,72(sp) - lw $s4, 76($sp) -800102e8: 8fb4004c lw s4,76(sp) - lw $s5, 80($sp) -800102ec: 8fb50050 lw s5,80(sp) - lw $s6, 84($sp) -800102f0: 8fb60054 lw s6,84(sp) - lw $s7, 88($sp) -800102f4: 8fb70058 lw s7,88(sp) - lw $t8, 92($sp) -800102f8: 8fb8005c lw t8,92(sp) - lw $t9, 96($sp) -800102fc: 8fb90060 lw t9,96(sp) - lw $gp, 100($sp) -80010300: 8fbc0064 lw gp,100(sp) - lw $s8, 104($sp) -80010304: 8fbe0068 lw s8,104(sp) - lw $ra, 108($sp) -80010308: 8fbf006c lw ra,108(sp) - addi $sp, 120 -8001030c: 23bd0078 addi sp,sp,120 - jr $ra -80010310: 03e00008 jr ra -80010314: 00000000 nop - nop -80010318: 00000000 nop - -8001031c : - -get_cop0_status: - mfc0 $v0, $12 -8001031c: 40026000 mfc0 v0,c0_sr - jr $ra -80010320: 03e00008 jr ra -80010324: 00000000 nop - nop -80010328: 00000000 nop - -8001032c : - -set_cop0_status: - mtc0 $a0, $12 -8001032c: 40846000 mtc0 a0,c0_sr - jr $ra -80010330: 03e00008 jr ra -80010334: 00000000 nop - nop -80010338: 00000000 nop - -8001033c : - -get_cop0_epc: - mfc0 $2, $14 -8001033c: 40027000 mfc0 v0,c0_epc - jr $ra -80010340: 03e00008 jr ra -80010344: 00000000 nop - nop -80010348: 00000000 nop - -8001034c : - -run_bios: - j 0xbfc00000 -8001034c: 0bf00000 j 8fc00000 <_EXC_dma_handler+0xfb8e26c> -80010350: 00000000 nop - nop -80010354: 00000000 nop - -80010358 : - -is_load_delay_ok: - li $t2, 0 -80010358: 240a0000 li t2,0 - li $t0, 0x0adecade -8001035c: 3c080ade lui t0,0xade -80010360: 3508cade ori t0,t0,0xcade - la $t1, isldo_data -80010364: 3c098004 lui t1,0x8004 -80010368: 2529140c addiu t1,t1,5132 -8001036c: 8d2a0000 lw t2,0(t1) - .word 0x8d2a0000 #lw t2,0(t1) - beq $t0, $t2, load_delay_not_ok -80010370: 110a0006 beq t0,t2,8001038c -80010374: 00000000 nop - nop -80010378: 00000000 nop - -8001037c : -load_delay_ok: - li $v0, 1 -8001037c: 24020001 li v0,1 - jr $ra -80010380: 03e00008 jr ra -80010384: 00000000 nop - nop -80010388: 00000000 nop - -8001038c : -load_delay_not_ok: - li $v0, 0 -8001038c: 24020000 li v0,0 - jr $ra -80010390: 03e00008 jr ra -80010394: 00000000 nop - nop -80010398: 00000000 nop - -8001039c : - -exit: - move $s0, $a0 -8001039c: 00808021 move s0,a0 - - la $a0, called_exit -800103a0: 3c048004 lui a0,0x8004 -800103a4: 248413d0 addiu a0,a0,5072 - move $a1, $s0 -800103a8: 02002821 move a1,s0 - - addiu $sp, $sp, -24 -800103ac: 27bdffe8 addiu sp,sp,-24 - jal printf -800103b0: 0c00ed8f jal 8003b63c -800103b4: 00000000 nop - nop -800103b8: 00000000 nop - addiu $sp, $sp, 24 -800103bc: 27bd0018 addiu sp,sp,24 - - move $v0, $s0 -800103c0: 02001021 move v0,s0 - - j _real_exit -800103c4: 0800400d j 80010034 <_real_exit> -800103c8: 00000000 nop - ... - -80020000 : -80020000: 3c048004 lui a0,0x8004 -80020004: 3c028004 lui v0,0x8004 -80020008: 24842568 addiu a0,a0,9576 -8002000c: 2442256b addiu v0,v0,9579 -80020010: 00441023 subu v0,v0,a0 -80020014: 2c420007 sltiu v0,v0,7 -80020018: 14400006 bnez v0,80020034 -8002001c: 3c190000 lui t9,0x0 -80020020: 27390000 addiu t9,t9,0 -80020024: 13200003 beqz t9,80020034 -80020028: 00000000 nop -8002002c: 03200008 jr t9 -80020030: 00000000 nop -80020034: 03e00008 jr ra -80020038: 00000000 nop - -8002003c : -8002003c: 3c048004 lui a0,0x8004 -80020040: 3c028004 lui v0,0x8004 -80020044: 24842568 addiu a0,a0,9576 -80020048: 24422568 addiu v0,v0,9576 -8002004c: 00441023 subu v0,v0,a0 -80020050: 00021083 sra v0,v0,0x2 -80020054: 00022fc2 srl a1,v0,0x1f -80020058: 00a22821 addu a1,a1,v0 -8002005c: 00052843 sra a1,a1,0x1 -80020060: 10a00006 beqz a1,8002007c -80020064: 3c190000 lui t9,0x0 -80020068: 27390000 addiu t9,t9,0 -8002006c: 13200003 beqz t9,8002007c -80020070: 00000000 nop -80020074: 03200008 jr t9 -80020078: 00000000 nop -8002007c: 03e00008 jr ra -80020080: 00000000 nop - -80020084 <__do_global_dtors_aux>: -80020084: 27bdffd8 addiu sp,sp,-40 -80020088: afb30020 sw s3,32(sp) -8002008c: 3c138004 lui s3,0x8004 -80020090: 92622584 lbu v0,9604(s3) -80020094: afbf0024 sw ra,36(sp) -80020098: afb2001c sw s2,28(sp) -8002009c: afb10018 sw s1,24(sp) -800200a0: 14400025 bnez v0,80020138 <__do_global_dtors_aux+0xb4> -800200a4: afb00014 sw s0,20(sp) -800200a8: 3c118004 lui s1,0x8004 -800200ac: 3c028004 lui v0,0x8004 -800200b0: 24422580 addiu v0,v0,9600 -800200b4: 2631257c addiu s1,s1,9596 -800200b8: 00518823 subu s1,v0,s1 -800200bc: 3c108004 lui s0,0x8004 -800200c0: 8e022588 lw v0,9608(s0) -800200c4: 00118883 sra s1,s1,0x2 -800200c8: 2631ffff addiu s1,s1,-1 -800200cc: 3c048004 lui a0,0x8004 -800200d0: 0051182b sltu v1,v0,s1 -800200d4: 2492257c addiu s2,a0,9596 -800200d8: 1060000c beqz v1,8002010c <__do_global_dtors_aux+0x88> -800200dc: 24420001 addiu v0,v0,1 -800200e0: 00021880 sll v1,v0,0x2 -800200e4: 02431821 addu v1,s2,v1 -800200e8: 8c630000 lw v1,0(v1) -800200ec: 00000000 nop -800200f0: 0060f809 jalr v1 -800200f4: ae022588 sw v0,9608(s0) -800200f8: 8e022588 lw v0,9608(s0) -800200fc: 00000000 nop -80020100: 0051182b sltu v1,v0,s1 -80020104: 1460fff6 bnez v1,800200e0 <__do_global_dtors_aux+0x5c> -80020108: 24420001 addiu v0,v0,1 -8002010c: 0c008000 jal 80020000 -80020110: 00000000 nop -80020114: 3c020000 lui v0,0x0 -80020118: 24420000 addiu v0,v0,0 -8002011c: 10400005 beqz v0,80020134 <__do_global_dtors_aux+0xb0> -80020120: 24020001 li v0,1 -80020124: 3c048004 lui a0,0x8004 -80020128: 0c000000 jal 80000000 <__scratchpad+0x60800000> -8002012c: 24840118 addiu a0,a0,280 -80020130: 24020001 li v0,1 -80020134: a2622584 sb v0,9604(s3) -80020138: 8fbf0024 lw ra,36(sp) -8002013c: 8fb30020 lw s3,32(sp) -80020140: 8fb2001c lw s2,28(sp) -80020144: 8fb10018 lw s1,24(sp) -80020148: 8fb00014 lw s0,20(sp) -8002014c: 03e00008 jr ra -80020150: 27bd0028 addiu sp,sp,40 - -80020154 : -80020154: 3c020000 lui v0,0x0 -80020158: 27bdffe8 addiu sp,sp,-24 -8002015c: 24420000 addiu v0,v0,0 -80020160: 10400006 beqz v0,8002017c -80020164: afbf0014 sw ra,20(sp) -80020168: 3c058004 lui a1,0x8004 -8002016c: 3c048004 lui a0,0x8004 -80020170: 24a5258c addiu a1,a1,9612 -80020174: 0c000000 jal 80000000 <__scratchpad+0x60800000> -80020178: 24840118 addiu a0,a0,280 -8002017c: 3c028004 lui v0,0x8004 -80020180: 24442564 addiu a0,v0,9572 -80020184: 8c820000 lw v0,0(a0) -80020188: 00000000 nop -8002018c: 14400004 bnez v0,800201a0 -80020190: 3c020000 lui v0,0x0 -80020194: 8fbf0014 lw ra,20(sp) -80020198: 0800800f j 8002003c -8002019c: 27bd0018 addiu sp,sp,24 -800201a0: 24420000 addiu v0,v0,0 -800201a4: 1040fffb beqz v0,80020194 -800201a8: 00000000 nop -800201ac: 0040f809 jalr v0 -800201b0: 00000000 nop -800201b4: 1000fff7 b 80020194 -800201b8: 00000000 nop - -800201bc : -static inline int fix16_to_int(fix16_t a) -{ -#ifdef FIXMATH_NO_ROUNDING - return a >> 16; -#else - if (a >= 0) -800201bc: 04800003 bltz a0,800201cc -800201c0: 24828000 addiu v0,a0,-32768 - return (a + fix16_one / 2) / fix16_one; -800201c4: 34028000 li v0,0x8000 -800201c8: 00821021 addu v0,a0,v0 - else - return (a - fix16_one / 2) / fix16_one; -800201cc: 00021fc3 sra v1,v0,0x1f -800201d0: 3063ffff andi v1,v1,0xffff -800201d4: 00621021 addu v0,v1,v0 -#endif -} -800201d8: 03e00008 jr ra -800201dc: 00021403 sra v0,v0,0x10 - -800201e0 : -static void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft); -static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft); - -void AircraftInit(void) -{ - bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA)); -800201e0: 3c048004 lui a0,0x8004 -static AIRCRAFT_LIVERY AircraftLiveryFromFlightNumber(char * strFlightNumber); -static void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft); -static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft); - -void AircraftInit(void) -{ -800201e4: 27bdffe0 addiu sp,sp,-32 - bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA)); -800201e8: 24060d00 li a2,3328 -800201ec: 00002821 move a1,zero -static AIRCRAFT_LIVERY AircraftLiveryFromFlightNumber(char * strFlightNumber); -static void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft); -static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft); - -void AircraftInit(void) -{ -800201f0: afbf001c sw ra,28(sp) - bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA)); -800201f4: 0c00d7ab jal 80035eac -800201f8: 248425d0 addiu a0,a0,9680 - AircraftIndex = 0; -800201fc: 3c028007 lui v0,0x8007 - - AircraftSpr.x = 0; -80020200: 3c048004 lui a0,0x8004 -static void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft); - -void AircraftInit(void) -{ - bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA)); - AircraftIndex = 0; -80020204: a0401bfe sb zero,7166(v0) - - AircraftSpr.x = 0; -80020208: a48025a4 sh zero,9636(a0) - AircraftSpr.y = 0; - - AircraftSpr.attribute = COLORMODE(COLORMODE_8BPP); -8002020c: 24020001 li v0,1 -{ - bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA)); - AircraftIndex = 0; - - AircraftSpr.x = 0; - AircraftSpr.y = 0; -80020210: 248425a4 addiu a0,a0,9636 - - AircraftSpr.attribute = COLORMODE(COLORMODE_8BPP); -80020214: ac820014 sw v0,20(a0) - - AircraftSpr.cx = PHX_LIVERY_CLUT_X; -80020218: 24020180 li v0,384 -8002021c: a482000a sh v0,10(a0) - AircraftSpr.cy = PHX_LIVERY_CLUT_Y; -80020220: 240201f1 li v0,497 -80020224: a482000c sh v0,12(a0) - - /*AircraftSpr.tpage = 28; - AircraftSpr.u = 64; - AircraftSpr.v = 48;*/ - - GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y); -80020228: 24060130 li a2,304 - AircraftSpr.attribute = COLORMODE(COLORMODE_8BPP); - - AircraftSpr.cx = PHX_LIVERY_CLUT_X; - AircraftSpr.cy = PHX_LIVERY_CLUT_Y; - - AircraftSpr.w = AIRCRAFT_SPRITE_SIZE; -8002022c: 24020018 li v0,24 - - /*AircraftSpr.tpage = 28; - AircraftSpr.u = 64; - AircraftSpr.v = 48;*/ - - GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y); -80020230: 24050320 li a1,800 -{ - bzero(AircraftData, GAME_MAX_AIRCRAFT * sizeof(TYPE_AIRCRAFT_DATA)); - AircraftIndex = 0; - - AircraftSpr.x = 0; - AircraftSpr.y = 0; -80020234: a4800002 sh zero,2(a0) - AircraftSpr.attribute = COLORMODE(COLORMODE_8BPP); - - AircraftSpr.cx = PHX_LIVERY_CLUT_X; - AircraftSpr.cy = PHX_LIVERY_CLUT_Y; - - AircraftSpr.w = AIRCRAFT_SPRITE_SIZE; -80020238: a4820006 sh v0,6(a0) - - /*AircraftSpr.tpage = 28; - AircraftSpr.u = 64; - AircraftSpr.v = 48;*/ - - GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y); -8002023c: 0c009187 jal 8002461c -80020240: a4820008 sh v0,8(a0) - - AircraftCenterIsoPos.x = AIRCRAFT_SIZE >> 1; -80020244: 24020008 li v0,8 -80020248: 3c058007 lui a1,0x8007 -8002024c: a4a21bf8 sh v0,7160(a1) - AircraftCenterIsoPos.y = AIRCRAFT_SIZE >> 1; - AircraftCenterIsoPos.z = 0; - - AircraftCenterPos = GfxIsometricToCartesian(&AircraftCenterIsoPos); -80020250: 27a40010 addiu a0,sp,16 - AircraftSpr.v = 48;*/ - - GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y); - - AircraftCenterIsoPos.x = AIRCRAFT_SIZE >> 1; - AircraftCenterIsoPos.y = AIRCRAFT_SIZE >> 1; -80020254: 24a51bf8 addiu a1,a1,7160 -80020258: a4a20002 sh v0,2(a1) - AircraftCenterIsoPos.z = 0; - - AircraftCenterPos = GfxIsometricToCartesian(&AircraftCenterIsoPos); -8002025c: 0c0091ac jal 800246b0 -80020260: a4a00004 sh zero,4(a1) -} -80020264: 8fbf001c lw ra,28(sp) -80020268: 00000000 nop -8002026c: 03e00008 jr ra -80020270: 27bd0020 addiu sp,sp,32 - -80020274 : - -bool AircraftAddNew( TYPE_FLIGHT_DATA * ptrFlightData, - uint8_t FlightDataIndex, - uint16_t * targets ) -{ -80020274: 27bdffc0 addiu sp,sp,-64 -80020278: afb10020 sw s1,32(sp) - TYPE_AIRCRAFT_DATA * ptrAircraft = &AircraftData[AircraftIndex]; -8002027c: 3c118007 lui s1,0x8007 -} - -bool AircraftAddNew( TYPE_FLIGHT_DATA * ptrFlightData, - uint8_t FlightDataIndex, - uint16_t * targets ) -{ -80020280: afb70038 sw s7,56(sp) -80020284: afb50030 sw s5,48(sp) -80020288: afb4002c sw s4,44(sp) -8002028c: afb30028 sw s3,40(sp) -80020290: afb20024 sw s2,36(sp) -80020294: afbf003c sw ra,60(sp) -80020298: afb60034 sw s6,52(sp) -8002029c: afb0001c sw s0,28(sp) -800202a0: 0080a021 move s4,a0 -800202a4: 00c0b821 move s7,a2 - TYPE_AIRCRAFT_DATA * ptrAircraft = &AircraftData[AircraftIndex]; -800202a8: 92321bfe lbu s2,7166(s1) - uint8_t level_columns = GameGetLevelColumns(); -800202ac: 0c008c9a jal 80023268 -800202b0: 30b500ff andi s5,a1,0xff -800202b4: 00409821 move s3,v0 - uint8_t i; - - if(AircraftIndex >= GAME_MAX_AIRCRAFT) -800202b8: 92221bfe lbu v0,7166(s1) -800202bc: 00000000 nop -800202c0: 2c420020 sltiu v0,v0,32 -800202c4: 14400006 bnez v0,800202e0 -800202c8: 24160068 li s6,104 - { - dprintf("Exceeded maximum aircraft capacity!\n"); -800202cc: 3c048004 lui a0,0x8004 -800202d0: 0c00ed8f jal 8003b63c -800202d4: 24840158 addiu a0,a0,344 - return false; -800202d8: 1000007c b 800204cc -800202dc: 00001021 move v0,zero - } - - memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); -800202e0: 02560018 mult s2,s6 -800202e4: 3c108004 lui s0,0x8004 -800202e8: 261025d0 addiu s0,s0,9680 -800202ec: 24060040 li a2,64 -800202f0: 02e02821 move a1,s7 -800202f4: 0000b012 mflo s6 -800202f8: 26c40010 addiu a0,s6,16 -800202fc: 02042021 addu a0,s0,a0 -80020300: 0c00d75e jal 80035d78 -80020304: 02d0b021 addu s6,s6,s0 - - ptrAircraft->TargetIdx = 0; -80020308: a2c00050 sb zero,80(s6) - ptrAircraft->Livery = AircraftLiveryFromFlightNumber(ptrFlightData->strFlightNumber[FlightDataIndex]); -8002030c: 26b60010 addiu s6,s5,16 -80020310: 0016b0c0 sll s6,s6,0x3 -AIRCRAFT_LIVERY AircraftLiveryFromFlightNumber(char * strFlightNumber) -{ - int32_t liveryIndex; - char strLivery[4]; - - memset(strLivery, 0, 4 * sizeof(char) ); -80020314: 24060004 li a2,4 -80020318: 00002821 move a1,zero -8002031c: 27a40010 addiu a0,sp,16 -80020320: 0c00d7ab jal 80035eac -80020324: 0296b021 addu s6,s4,s6 - - strncpy(strLivery, strFlightNumber, 3); -80020328: 24060003 li a2,3 -8002032c: 02c02821 move a1,s6 -80020330: 0c00d860 jal 80036180 -80020334: 27a40010 addiu a0,sp,16 - - liveryIndex = SystemIndexOfStringArray(strLivery, AircraftLiveryNamesTable); -80020338: 3c058004 lui a1,0x8004 -8002033c: 27a40010 addiu a0,sp,16 -80020340: 0c00a167 jal 8002859c -80020344: 24a51410 addiu a1,a1,5136 - - if(liveryIndex == -1) -80020348: 2403ffff li v1,-1 -8002034c: 10430006 beq v0,v1,80020368 -80020350: 00002021 move a0,zero - { - return AIRCRAFT_LIVERY_UNKNOWN; - } - - return AircraftLiveryTable[liveryIndex]; -80020354: 3c038004 lui v1,0x8004 -80020358: 00021080 sll v0,v0,0x2 -8002035c: 2463f77c addiu v1,v1,-2180 -80020360: 00431021 addu v0,v0,v1 -80020364: 8c440000 lw a0,0(v0) - } - - memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); - - ptrAircraft->TargetIdx = 0; - ptrAircraft->Livery = AircraftLiveryFromFlightNumber(ptrFlightData->strFlightNumber[FlightDataIndex]); -80020368: 24030068 li v1,104 -8002036c: 02430018 mult s2,v1 - - ptrAircraft->FlightDataIdx = FlightDataIndex; - - if(ptrFlightData->FlightDirection[FlightDataIndex] == ARRIVAL) -80020370: 24020002 li v0,2 - } - - memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); - - ptrAircraft->TargetIdx = 0; - ptrAircraft->Livery = AircraftLiveryFromFlightNumber(ptrFlightData->strFlightNumber[FlightDataIndex]); -80020374: 00001812 mflo v1 -80020378: 02031821 addu v1,s0,v1 - - ptrAircraft->FlightDataIdx = FlightDataIndex; -8002037c: a0750051 sb s5,81(v1) -80020380: 0015a880 sll s5,s5,0x2 - } - - memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); - - ptrAircraft->TargetIdx = 0; - ptrAircraft->Livery = AircraftLiveryFromFlightNumber(ptrFlightData->strFlightNumber[FlightDataIndex]); -80020384: ac640000 sw a0,0(v1) -80020388: 0295a021 addu s4,s4,s5 - - ptrAircraft->FlightDataIdx = FlightDataIndex; - - if(ptrFlightData->FlightDirection[FlightDataIndex] == ARRIVAL) -8002038c: 8e840000 lw a0,0(s4) -80020390: 00000000 nop -80020394: 14820016 bne a0,v0,800203f0 -80020398: 00000000 nop - { - ptrAircraft->IsoPos.x = 0; -8002039c: ac600054 sw zero,84(v1) - - ptrAircraft->IsoPos.y = targets[0] / level_columns; - ptrAircraft->IsoPos.y <<= TILE_SIZE_BIT_SHIFT; - ptrAircraft->IsoPos.y += TILE_SIZE >> 1; // Adjust to tile center - ptrAircraft->IsoPos.y = fix16_from_int(ptrAircraft->IsoPos.y); -800203a0: 96e20000 lhu v0,0(s7) -800203a4: 00000000 nop -800203a8: 16600002 bnez s3,800203b4 -800203ac: 0053001a div zero,v0,s3 -800203b0: 0007000d break 0x7 -800203b4: 00001012 mflo v0 -800203b8: 00021180 sll v0,v0,0x6 -800203bc: 24420020 addiu v0,v0,32 -800203c0: 00021400 sll v0,v0,0x10 -800203c4: ac620058 sw v0,88(v1) - - ptrAircraft->IsoPos.z = targets[0] % level_columns; - ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 1; - ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z); -800203c8: 96e20000 lhu v0,0(s7) -800203cc: 00000000 nop -800203d0: 16600002 bnez s3,800203dc -800203d4: 0053001a div zero,v0,s3 -800203d8: 0007000d break 0x7 -800203dc: 00001010 mfhi v0 -800203e0: 00029d40 sll s3,v0,0x15 - - ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_APPROACH]; -800203e4: 3c020001 lui v0,0x1 - ptrAircraft->IsoPos.y += TILE_SIZE >> 1; // Adjust to tile center - ptrAircraft->IsoPos.y = fix16_from_int(ptrAircraft->IsoPos.y); - - ptrAircraft->IsoPos.z = targets[0] % level_columns; - ptrAircraft->IsoPos.z <<= TILE_SIZE_BIT_SHIFT - 1; - ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z); -800203e8: ac73005c sw s3,92(v1) - - ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_APPROACH]; -800203ec: ac620060 sw v0,96(v1) - } - - ptrAircraft->State = ptrFlightData->State[FlightDataIndex]; -800203f0: 8e830204 lw v1,516(s4) -800203f4: 24140068 li s4,104 -800203f8: 02540018 mult s2,s4 - - dprintf("\nAircraft Data:\n"); -800203fc: 3c048004 lui a0,0x8004 -80020400: 24840180 addiu a0,a0,384 - if(ptrAircraft->Target[i] == 0) - { - break; - } - - dprintf(" %d", ptrAircraft->Target[i]); -80020404: 3c158004 lui s5,0x8004 - } - - ptrAircraft->State = ptrFlightData->State[FlightDataIndex]; - - dprintf("\nAircraft Data:\n"); - dprintf("\tTargets:"); -80020408: 00009821 move s3,zero - if(ptrAircraft->Target[i] == 0) - { - break; - } - - dprintf(" %d", ptrAircraft->Target[i]); -8002040c: 26b501d4 addiu s5,s5,468 - ptrAircraft->State = ptrFlightData->State[FlightDataIndex]; - - dprintf("\nAircraft Data:\n"); - dprintf("\tTargets:"); - - for(i = 0; i < AIRCRAFT_MAX_TARGETS; i++) -80020410: 24160040 li s6,64 - ptrAircraft->IsoPos.z = fix16_from_int(ptrAircraft->IsoPos.z); - - ptrAircraft->Speed = AircraftSpeedsTable[AIRCRAFT_SPEED_APPROACH]; - } - - ptrAircraft->State = ptrFlightData->State[FlightDataIndex]; -80020414: 0000a012 mflo s4 -80020418: 02141021 addu v0,s0,s4 - - dprintf("\nAircraft Data:\n"); -8002041c: 0c00ed8f jal 8003b63c -80020420: ac43000c sw v1,12(v0) - dprintf("\tTargets:"); -80020424: 3c048004 lui a0,0x8004 -80020428: 0c00ed8f jal 8003b63c -8002042c: 24840194 addiu a0,a0,404 - - for(i = 0; i < AIRCRAFT_MAX_TARGETS; i++) - { - if(ptrAircraft->Target[i] == 0) -80020430: 02931021 addu v0,s4,s3 -80020434: 02021021 addu v0,s0,v0 -80020438: 94450010 lhu a1,16(v0) -8002043c: 00000000 nop -80020440: 14a0001b bnez a1,800204b0 -80020444: 24020068 li v0,104 - } - - dprintf(" %d", ptrAircraft->Target[i]); - } - - dprintf("\nLivery: %d\n", ptrAircraft->Livery ); -80020448: 02420018 mult s2,v0 -8002044c: 3c048004 lui a0,0x8004 -80020450: 00009012 mflo s2 -80020454: 02128021 addu s0,s0,s2 -80020458: 8e050000 lw a1,0(s0) -8002045c: 0c00ed8f jal 8003b63c -80020460: 248401a0 addiu a0,a0,416 - - dprintf("Aircraft position: {%d, %d, %d}\n", -80020464: 8e040054 lw a0,84(s0) -80020468: 0c00806f jal 800201bc -8002046c: 00000000 nop -80020470: 8e040058 lw a0,88(s0) -80020474: 0c00806f jal 800201bc -80020478: 00402821 move a1,v0 -8002047c: 8e04005c lw a0,92(s0) -80020480: 0c00806f jal 800201bc -80020484: 00403021 move a2,v0 -80020488: 3c048004 lui a0,0x8004 -8002048c: 00403821 move a3,v0 -80020490: 0c00ed8f jal 8003b63c -80020494: 248401b0 addiu a0,a0,432 - fix16_to_int(ptrAircraft->IsoPos.x), - fix16_to_int(ptrAircraft->IsoPos.y), - fix16_to_int(ptrAircraft->IsoPos.z) ); - - AircraftIndex++; -80020498: 92221bfe lbu v0,7166(s1) -8002049c: 00000000 nop -800204a0: 24420001 addiu v0,v0,1 -800204a4: a2221bfe sb v0,7166(s1) - - return true; -800204a8: 10000008 b 800204cc -800204ac: 24020001 li v0,1 - if(ptrAircraft->Target[i] == 0) - { - break; - } - - dprintf(" %d", ptrAircraft->Target[i]); -800204b0: 02a02021 move a0,s5 -800204b4: 0c00ed8f jal 8003b63c -800204b8: 26730002 addiu s3,s3,2 - ptrAircraft->State = ptrFlightData->State[FlightDataIndex]; - - dprintf("\nAircraft Data:\n"); - dprintf("\tTargets:"); - - for(i = 0; i < AIRCRAFT_MAX_TARGETS; i++) -800204bc: 1676ffdc bne s3,s6,80020430 -800204c0: 24020068 li v0,104 - } - - dprintf(" %d", ptrAircraft->Target[i]); - } - - dprintf("\nLivery: %d\n", ptrAircraft->Livery ); -800204c4: 1000ffe1 b 8002044c -800204c8: 02420018 mult s2,v0 - fix16_to_int(ptrAircraft->IsoPos.z) ); - - AircraftIndex++; - - return true; -} -800204cc: 8fbf003c lw ra,60(sp) -800204d0: 8fb70038 lw s7,56(sp) -800204d4: 8fb60034 lw s6,52(sp) -800204d8: 8fb50030 lw s5,48(sp) -800204dc: 8fb4002c lw s4,44(sp) -800204e0: 8fb30028 lw s3,40(sp) -800204e4: 8fb20024 lw s2,36(sp) -800204e8: 8fb10020 lw s1,32(sp) -800204ec: 8fb0001c lw s0,28(sp) -800204f0: 03e00008 jr ra -800204f4: 27bd0040 addiu sp,sp,64 - -800204f8 : - - return AircraftLiveryTable[liveryIndex]; -} - -void AircraftHandler(void) -{ -800204f8: 27bdffc8 addiu sp,sp,-56 -800204fc: afb00010 sw s0,16(sp) -80020500: 3c108004 lui s0,0x8004 -80020504: 261025d0 addiu s0,s0,9680 -80020508: afb20018 sw s2,24(sp) - { - ptrAircraft->TargetReached = true; - - if(ptrAircraft->Target[++ptrAircraft->TargetIdx] == 0) - { - dprintf("All targets reached!\n"); -8002050c: 3c128004 lui s2,0x8004 - - return AircraftLiveryTable[liveryIndex]; -} - -void AircraftHandler(void) -{ -80020510: afb60028 sw s6,40(sp) -80020514: afb50024 sw s5,36(sp) -80020518: afb40020 sw s4,32(sp) -8002051c: afb3001c sw s3,28(sp) -80020520: afb10014 sw s1,20(sp) -80020524: afbf0034 sw ra,52(sp) -80020528: afbe0030 sw s8,48(sp) -8002052c: afb7002c sw s7,44(sp) -80020530: 00008821 move s1,zero -80020534: 0200a021 move s4,s0 - -void AircraftDirection(TYPE_AIRCRAFT_DATA * ptrAircraft) -{ - TYPE_ISOMETRIC_FIX16_POS targetPos; - - if(ptrAircraft->Target[ptrAircraft->TargetIdx] == 0) -80020538: 24150034 li s5,52 -8002053c: 02009821 move s3,s0 - } -} - -void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft) -{ - if(ptrAircraft->State == STATE_FINAL) -80020540: 24160005 li s6,5 - { - ptrAircraft->TargetReached = true; - - if(ptrAircraft->Target[++ptrAircraft->TargetIdx] == 0) - { - dprintf("All targets reached!\n"); -80020544: 265201d8 addiu s2,s2,472 - - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) - { - ptrAircraft = &AircraftData[i]; - - if(ptrAircraft->State == STATE_IDLE) -80020548: 8e02000c lw v0,12(s0) -8002054c: 00000000 nop -80020550: 10400059 beqz v0,800206b8 -80020554: 02350018 mult s1,s5 - -void AircraftDirection(TYPE_AIRCRAFT_DATA * ptrAircraft) -{ - TYPE_ISOMETRIC_FIX16_POS targetPos; - - if(ptrAircraft->Target[ptrAircraft->TargetIdx] == 0) -80020558: 92020050 lbu v0,80(s0) -8002055c: 0000b812 mflo s7 -80020560: 02e21021 addu v0,s7,v0 -80020564: 24420008 addiu v0,v0,8 -80020568: 00021040 sll v0,v0,0x1 -8002056c: 02821021 addu v0,s4,v0 -80020570: 94440000 lhu a0,0(v0) -80020574: 00000000 nop -80020578: 10800046 beqz a0,80020694 -8002057c: 00000000 nop - { - return; - } - - targetPos.x = GameGetXFromTile(ptrAircraft->Target[ptrAircraft->TargetIdx]); -80020580: 0c008c75 jal 800231d4 -80020584: 00000000 nop -80020588: 0040f021 move s8,v0 - targetPos.y = GameGetYFromTile(ptrAircraft->Target[ptrAircraft->TargetIdx]); -8002058c: 92020050 lbu v0,80(s0) -80020590: 00000000 nop -80020594: 02e21021 addu v0,s7,v0 -80020598: 24420008 addiu v0,v0,8 -8002059c: 00021040 sll v0,v0,0x1 -800205a0: 00531021 addu v0,v0,s3 -800205a4: 94440000 lhu a0,0(v0) -800205a8: 0c008c81 jal 80023204 -800205ac: 00000000 nop - targetPos.z = 0; - - ptrAircraft->TargetReached = false; - - if(targetPos.y == ptrAircraft->IsoPos.y) -800205b0: 8e030058 lw v1,88(s0) - - targetPos.x = GameGetXFromTile(ptrAircraft->Target[ptrAircraft->TargetIdx]); - targetPos.y = GameGetYFromTile(ptrAircraft->Target[ptrAircraft->TargetIdx]); - targetPos.z = 0; - - ptrAircraft->TargetReached = false; -800205b4: a2000066 sb zero,102(s0) -800205b8: 8e040054 lw a0,84(s0) - - if(targetPos.y == ptrAircraft->IsoPos.y) -800205bc: 14430012 bne v0,v1,80020608 -800205c0: 00000000 nop - { - if(targetPos.x > ptrAircraft->IsoPos.x) -800205c4: 009e102a slt v0,a0,s8 -800205c8: 10400005 beqz v0,800205e0 -800205cc: 24020002 li v0,2 - { - ptrAircraft->Direction = AIRCRAFT_DIR_EAST; -800205d0: ae020004 sw v0,4(s0) - ptrAircraft->IsoPos.x += ptrAircraft->Speed; -800205d4: 8e020060 lw v0,96(s0) -800205d8: 10000009 b 80020600 -800205dc: 00442021 addu a0,v0,a0 - } - else if(targetPos.x < ptrAircraft->IsoPos.x) -800205e0: 03c4f02a slt s8,s8,a0 -800205e4: 13c00018 beqz s8,80020648 -800205e8: 24020001 li v0,1 - { - ptrAircraft->Direction = AIRCRAFT_DIR_WEST; -800205ec: 24020003 li v0,3 -800205f0: ae020004 sw v0,4(s0) - ptrAircraft->IsoPos.x -= ptrAircraft->Speed; -800205f4: 8e020060 lw v0,96(s0) -800205f8: 00000000 nop -800205fc: 00822023 subu a0,a0,v0 -80020600: 10000024 b 80020694 -80020604: ae040054 sw a0,84(s0) - dprintf("All targets reached!\n"); - GameTargetsReached(ptrAircraft->FlightDataIdx); - } - } - } - else if(targetPos.x == ptrAircraft->IsoPos.x) -80020608: 17c40022 bne s8,a0,80020694 -8002060c: 0062202a slt a0,v1,v0 - { - if(targetPos.y > ptrAircraft->IsoPos.y) -80020610: 10800006 beqz a0,8002062c -80020614: 0043102a slt v0,v0,v1 - { - ptrAircraft->Direction = AIRCRAFT_DIR_SOUTH; -80020618: 24020001 li v0,1 -8002061c: ae020004 sw v0,4(s0) - ptrAircraft->IsoPos.y += ptrAircraft->Speed; -80020620: 8e020060 lw v0,96(s0) -80020624: 10000006 b 80020640 -80020628: 00431821 addu v1,v0,v1 - } - else if(targetPos.y < ptrAircraft->IsoPos.y) -8002062c: 10400006 beqz v0,80020648 -80020630: 24020001 li v0,1 - { - ptrAircraft->Direction = AIRCRAFT_DIR_NORTH; - ptrAircraft->IsoPos.y -= ptrAircraft->Speed; -80020634: 8e020060 lw v0,96(s0) - ptrAircraft->Direction = AIRCRAFT_DIR_SOUTH; - ptrAircraft->IsoPos.y += ptrAircraft->Speed; - } - else if(targetPos.y < ptrAircraft->IsoPos.y) - { - ptrAircraft->Direction = AIRCRAFT_DIR_NORTH; -80020638: ae000004 sw zero,4(s0) - ptrAircraft->IsoPos.y -= ptrAircraft->Speed; -8002063c: 00621823 subu v1,v1,v0 -80020640: 10000014 b 80020694 -80020644: ae030058 sw v1,88(s0) - } - else - { - ptrAircraft->TargetReached = true; -80020648: a2020066 sb v0,102(s0) - - if(ptrAircraft->Target[++ptrAircraft->TargetIdx] == 0) -8002064c: 92020050 lbu v0,80(s0) -80020650: 00000000 nop -80020654: 24420001 addiu v0,v0,1 -80020658: 304200ff andi v0,v0,0xff -8002065c: a2020050 sb v0,80(s0) -80020660: 02e21021 addu v0,s7,v0 -80020664: 24420008 addiu v0,v0,8 -80020668: 00021040 sll v0,v0,0x1 -8002066c: 00531021 addu v0,v0,s3 -80020670: 94420000 lhu v0,0(v0) -80020674: 00000000 nop -80020678: 14400006 bnez v0,80020694 -8002067c: 00000000 nop - { - dprintf("All targets reached!\n"); -80020680: 0c00ed8f jal 8003b63c -80020684: 02402021 move a0,s2 - GameTargetsReached(ptrAircraft->FlightDataIdx); -80020688: 92040051 lbu a0,81(s0) -8002068c: 0c008c8c jal 80023230 -80020690: 00000000 nop - } -} - -void AircraftAttitude(TYPE_AIRCRAFT_DATA * ptrAircraft) -{ - if(ptrAircraft->State == STATE_FINAL) -80020694: 8e02000c lw v0,12(s0) -80020698: 00000000 nop -8002069c: 14560006 bne v0,s6,800206b8 -800206a0: 00000000 nop - { - if(ptrAircraft->IsoPos.z > 0) -800206a4: 8e02005c lw v0,92(s0) -800206a8: 00000000 nop -800206ac: 18400002 blez v0,800206b8 -800206b0: 24428000 addiu v0,v0,-32768 - { - ptrAircraft->IsoPos.z -= AircraftSpeedsTable[AIRCRAFT_SPEED_DESCENT]; -800206b4: ae02005c sw v0,92(s0) -800206b8: 26310001 addiu s1,s1,1 -void AircraftHandler(void) -{ - TYPE_AIRCRAFT_DATA * ptrAircraft; - uint8_t i; - - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) -800206bc: 24020020 li v0,32 -800206c0: 1622ffa1 bne s1,v0,80020548 -800206c4: 26100068 addiu s0,s0,104 - } - - AircraftDirection(ptrAircraft); - AircraftAttitude(ptrAircraft); - } -} -800206c8: 8fbf0034 lw ra,52(sp) -800206cc: 8fbe0030 lw s8,48(sp) -800206d0: 8fb7002c lw s7,44(sp) -800206d4: 8fb60028 lw s6,40(sp) -800206d8: 8fb50024 lw s5,36(sp) -800206dc: 8fb40020 lw s4,32(sp) -800206e0: 8fb3001c lw s3,28(sp) -800206e4: 8fb20018 lw s2,24(sp) -800206e8: 8fb10014 lw s1,20(sp) -800206ec: 8fb00010 lw s0,16(sp) -800206f0: 03e00008 jr ra -800206f4: 27bd0038 addiu sp,sp,56 - -800206f8 : - -void AircraftRender(TYPE_PLAYER * ptrPlayer) -{ -800206f8: 27bdffc0 addiu sp,sp,-64 -800206fc: afb50030 sw s5,48(sp) - } - - cartPos = GfxIsometricFix16ToCartesian(&ptrAircraft->IsoPos); - - // Aircraft position is referred to aircraft center - AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1); -80020700: 3c158004 lui s5,0x8004 - AircraftAttitude(ptrAircraft); - } -} - -void AircraftRender(TYPE_PLAYER * ptrPlayer) -{ -80020704: afb4002c sw s4,44(sp) -80020708: afb30028 sw s3,40(sp) -8002070c: afb20024 sw s2,36(sp) -80020710: afb10020 sw s1,32(sp) -80020714: 3c138004 lui s3,0x8004 -80020718: 3c118004 lui s1,0x8004 - } - - cartPos = GfxIsometricFix16ToCartesian(&ptrAircraft->IsoPos); - - // Aircraft position is referred to aircraft center - AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1); -8002071c: 26b225a4 addiu s2,s5,9636 - break; - - case AIRCRAFT_LIVERY_UNKNOWN: - // Fall through - default: - dprintf("Unknown livery %d!\n", ptrAircraft->Livery); -80020720: 3c148004 lui s4,0x8004 - AircraftAttitude(ptrAircraft); - } -} - -void AircraftRender(TYPE_PLAYER * ptrPlayer) -{ -80020724: afb60034 sw s6,52(sp) -80020728: afb0001c sw s0,28(sp) -8002072c: afbf003c sw ra,60(sp) -80020730: afb70038 sw s7,56(sp) -80020734: 0080b021 move s6,a0 -80020738: 263125d0 addiu s1,s1,9680 -8002073c: 267332d0 addiu s3,s3,13008 -80020740: 02408021 move s0,s2 - break; - - case AIRCRAFT_LIVERY_UNKNOWN: - // Fall through - default: - dprintf("Unknown livery %d!\n", ptrAircraft->Livery); -80020744: 269401f0 addiu s4,s4,496 - - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) - { - ptrAircraft = &AircraftData[i]; - - if(ptrAircraft->State == STATE_IDLE) -80020748: 8e22000c lw v0,12(s1) -8002074c: 00000000 nop -80020750: 10400044 beqz v0,80020864 -80020754: 26250054 addiu a1,s1,84 - { - continue; - } - - cartPos = GfxIsometricFix16ToCartesian(&ptrAircraft->IsoPos); -80020758: 0c0091bb jal 800246ec -8002075c: 27a40010 addiu a0,sp,16 - - // Aircraft position is referred to aircraft center - AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1); -80020760: 86420006 lh v0,6(s2) - } -} - -void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft) -{ - switch(ptrAircraft->Livery) -80020764: 8e250000 lw a1,0(s1) - } - - cartPos = GfxIsometricFix16ToCartesian(&ptrAircraft->IsoPos); - - // Aircraft position is referred to aircraft center - AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1); -80020768: 00021843 sra v1,v0,0x1 -8002076c: 97a20010 lhu v0,16(sp) -80020770: 00000000 nop -80020774: 00431023 subu v0,v0,v1 -80020778: a6a225a4 sh v0,9636(s5) - AircraftSpr.y = cartPos.y - (AircraftSpr.h >> 1); -8002077c: 86420008 lh v0,8(s2) -80020780: 00000000 nop -80020784: 00021843 sra v1,v0,0x1 -80020788: 97a20012 lhu v0,18(sp) -8002078c: 00000000 nop -80020790: 00431023 subu v0,v0,v1 -80020794: a6420002 sh v0,2(s2) - } -} - -void AircraftUpdateSpriteFromData(TYPE_AIRCRAFT_DATA * ptrAircraft) -{ - switch(ptrAircraft->Livery) -80020798: 24020001 li v0,1 -8002079c: 14a20006 bne a1,v0,800207b8 -800207a0: 3c178004 lui s7,0x8004 - { - case AIRCRAFT_LIVERY_0: - AircraftSpr.cx = PHX_LIVERY_CLUT_X; -800207a4: 24020180 li v0,384 -800207a8: a642000a sh v0,10(s2) - AircraftSpr.cy = PHX_LIVERY_CLUT_Y; -800207ac: 240201f1 li v0,497 -800207b0: 10000003 b 800207c0 -800207b4: a642000c sh v0,12(s2) - break; - - case AIRCRAFT_LIVERY_UNKNOWN: - // Fall through - default: - dprintf("Unknown livery %d!\n", ptrAircraft->Livery); -800207b8: 0c00ed8f jal 8003b63c -800207bc: 02802021 move a0,s4 - break; - } - - // Reset TPAGE and {U, V} offset first. - GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y); -800207c0: 24060130 li a2,304 -800207c4: 24050320 li a1,800 -800207c8: 0c009187 jal 8002461c -800207cc: 26e425a4 addiu a0,s7,9636 - - switch(ptrAircraft->Direction) -800207d0: 8e220004 lw v0,4(s1) -800207d4: 24030001 li v1,1 -800207d8: 10430012 beq v0,v1,80020824 -800207dc: 00000000 nop -800207e0: 1040000b beqz v0,80020810 -800207e4: 24030002 li v1,2 -800207e8: 10430011 beq v0,v1,80020830 -800207ec: 24030003 li v1,3 -800207f0: 14430014 bne v0,v1,80020844 -800207f4: 02c02021 move a0,s6 - case AIRCRAFT_DIR_EAST: - AircraftSpr.v += 0; - AircraftSpr.attribute &= ~(H_FLIP); - break; - case AIRCRAFT_DIR_WEST: - AircraftSpr.v += AircraftSpr.w; -800207f8: 92020005 lbu v0,5(s0) -800207fc: 92030006 lbu v1,6(s0) -80020800: 00000000 nop -80020804: 00431021 addu v0,v0,v1 -80020808: 10000009 b 80020830 -8002080c: a2020005 sb v0,5(s0) - GfxTPageOffsetFromVRAMPosition(&AircraftSpr, AIRCRAFT_SPRITE_VRAM_X, AIRCRAFT_SPRITE_VRAM_Y); - - switch(ptrAircraft->Direction) - { - case AIRCRAFT_DIR_NORTH: - AircraftSpr.v += AircraftSpr.w; -80020810: 92020005 lbu v0,5(s0) -80020814: 92030006 lbu v1,6(s0) -80020818: 00000000 nop -8002081c: 00431021 addu v0,v0,v1 -80020820: a2020005 sb v0,5(s0) - AircraftSpr.attribute |= H_FLIP; - break; - case AIRCRAFT_DIR_SOUTH: - AircraftSpr.v += 0; - AircraftSpr.attribute |= H_FLIP; -80020824: 8e020014 lw v0,20(s0) -80020828: 10000004 b 8002083c -8002082c: 34420020 ori v0,v0,0x20 - AircraftSpr.v += 0; - AircraftSpr.attribute &= ~(H_FLIP); - break; - case AIRCRAFT_DIR_WEST: - AircraftSpr.v += AircraftSpr.w; - AircraftSpr.attribute &= ~(H_FLIP); -80020830: 8e020014 lw v0,20(s0) -80020834: 2403ffdf li v1,-33 -80020838: 00431024 and v0,v0,v1 -8002083c: ae020014 sw v0,20(s0) - AircraftSpr.x = cartPos.x - (AircraftSpr.w >> 1); - AircraftSpr.y = cartPos.y - (AircraftSpr.h >> 1); - - AircraftUpdateSpriteFromData(ptrAircraft); - - CameraApplyCoordinatesToSprite(ptrPlayer, &AircraftSpr); -80020840: 02c02021 move a0,s6 -80020844: 0c00825d jal 80020974 -80020848: 26e525a4 addiu a1,s7,9636 - - AircraftSpr.r = NORMAL_LUMINANCE; -8002084c: 2402ff80 li v0,-128 - AircraftSpr.g = NORMAL_LUMINANCE; - AircraftSpr.b = NORMAL_LUMINANCE; - - GfxSortSprite(&AircraftSpr); -80020850: 02002021 move a0,s0 - - AircraftUpdateSpriteFromData(ptrAircraft); - - CameraApplyCoordinatesToSprite(ptrPlayer, &AircraftSpr); - - AircraftSpr.r = NORMAL_LUMINANCE; -80020854: a202000e sb v0,14(s0) - AircraftSpr.g = NORMAL_LUMINANCE; -80020858: a202000f sb v0,15(s0) - AircraftSpr.b = NORMAL_LUMINANCE; - - GfxSortSprite(&AircraftSpr); -8002085c: 0c0090d2 jal 80024348 -80020860: a2020010 sb v0,16(s0) -80020864: 26310068 addiu s1,s1,104 - TYPE_AIRCRAFT_DATA * ptrAircraft; - TYPE_CARTESIAN_POS cartPos; - - uint8_t i; - - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) -80020868: 1633ffb7 bne s1,s3,80020748 -8002086c: 00000000 nop - AircraftSpr.g = NORMAL_LUMINANCE; - AircraftSpr.b = NORMAL_LUMINANCE; - - GfxSortSprite(&AircraftSpr); - } -} -80020870: 8fbf003c lw ra,60(sp) -80020874: 8fb70038 lw s7,56(sp) -80020878: 8fb60034 lw s6,52(sp) -8002087c: 8fb50030 lw s5,48(sp) -80020880: 8fb4002c lw s4,44(sp) -80020884: 8fb30028 lw s3,40(sp) -80020888: 8fb20024 lw s2,36(sp) -8002088c: 8fb10020 lw s1,32(sp) -80020890: 8fb0001c lw s0,28(sp) -80020894: 03e00008 jr ra -80020898: 27bd0040 addiu sp,sp,64 - -8002089c : - } - } -} - -TYPE_ISOMETRIC_POS AircraftGetIsoPos(uint8_t FlightDataIdx) -{ -8002089c: 30a500ff andi a1,a1,0xff - // Aircraft position data is stored in fix16_t data type instead of "short" data type. - // So we must perform a conversion first for convenience. - TYPE_ISOMETRIC_POS retIsoPos; - TYPE_ISOMETRIC_FIX16_POS fix16IsoPos = AircraftData[FlightDataIdx].IsoPos; -800208a0: 24020068 li v0,104 -800208a4: 00a20018 mult a1,v0 -800208a8: 3c028004 lui v0,0x8004 -800208ac: 244225d0 addiu v0,v0,9680 - } - } -} - -TYPE_ISOMETRIC_POS AircraftGetIsoPos(uint8_t FlightDataIdx) -{ -800208b0: 00803021 move a2,a0 -800208b4: 27bdffe8 addiu sp,sp,-24 -800208b8: afbf0014 sw ra,20(sp) - // Aircraft position data is stored in fix16_t data type instead of "short" data type. - // So we must perform a conversion first for convenience. - TYPE_ISOMETRIC_POS retIsoPos; - TYPE_ISOMETRIC_FIX16_POS fix16IsoPos = AircraftData[FlightDataIdx].IsoPos; -800208bc: 00002812 mflo a1 -800208c0: 24a50050 addiu a1,a1,80 -800208c4: 00452821 addu a1,v0,a1 - - retIsoPos.x = (short)fix16_to_int(fix16IsoPos.x); -800208c8: 8ca40004 lw a0,4(a1) -800208cc: 0c00806f jal 800201bc -800208d0: 24a70004 addiu a3,a1,4 - retIsoPos.y = (short)fix16_to_int(fix16IsoPos.y); -800208d4: 8ca40008 lw a0,8(a1) -800208d8: 0c00806f jal 800201bc -800208dc: 00404021 move t0,v0 - retIsoPos.z = (short)fix16_to_int(fix16IsoPos.z); -800208e0: 8ce40008 lw a0,8(a3) -800208e4: 0c00806f jal 800201bc -800208e8: 00402821 move a1,v0 - - return retIsoPos; -} -800208ec: 8fbf0014 lw ra,20(sp) - - retIsoPos.x = (short)fix16_to_int(fix16IsoPos.x); - retIsoPos.y = (short)fix16_to_int(fix16IsoPos.y); - retIsoPos.z = (short)fix16_to_int(fix16IsoPos.z); - - return retIsoPos; -800208f0: a4c20004 sh v0,4(a2) -} -800208f4: 00c01021 move v0,a2 - - retIsoPos.x = (short)fix16_to_int(fix16IsoPos.x); - retIsoPos.y = (short)fix16_to_int(fix16IsoPos.y); - retIsoPos.z = (short)fix16_to_int(fix16IsoPos.z); - - return retIsoPos; -800208f8: a4c80000 sh t0,0(a2) -800208fc: a4c50002 sh a1,2(a2) -} -80020900: 03e00008 jr ra -80020904: 27bd0018 addiu sp,sp,24 - -80020908 : - -void AircraftAddTargets(TYPE_AIRCRAFT_DATA * ptrAircraft, uint16_t * targets) -{ - memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); -80020908: 24060040 li a2,64 -8002090c: 0800d75e j 80035d78 -80020910: 24840010 addiu a0,a0,16 - -80020914 : -} - -TYPE_AIRCRAFT_DATA * AircraftFromFlightDataIndex(uint8_t index) -{ -80020914: 308400ff andi a0,a0,0xff - return &AircraftData[index]; -80020918: 24020068 li v0,104 -8002091c: 00820018 mult a0,v0 -} -80020920: 3c028004 lui v0,0x8004 -80020924: 244225d0 addiu v0,v0,9680 - memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); -} - -TYPE_AIRCRAFT_DATA * AircraftFromFlightDataIndex(uint8_t index) -{ - return &AircraftData[index]; -80020928: 00002012 mflo a0 -} -8002092c: 03e00008 jr ra -80020930: 00441021 addu v0,v0,a0 - -80020934 : - -void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t * targets) -{ -80020934: 308400ff andi a0,a0,0xff - memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); -} - -TYPE_AIRCRAFT_DATA * AircraftFromFlightDataIndex(uint8_t index) -{ - return &AircraftData[index]; -80020938: 24020068 li v0,104 -8002093c: 00820018 mult a0,v0 -} - -void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t * targets) -{ - AircraftAddTargets(AircraftFromFlightDataIndex(index), targets); -80020940: 3c028004 lui v0,0x8004 -80020944: 244225d0 addiu v0,v0,9680 - memcpy(ptrAircraft->Target, targets, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); -} - -TYPE_AIRCRAFT_DATA * AircraftFromFlightDataIndex(uint8_t index) -{ - return &AircraftData[index]; -80020948: 00002012 mflo a0 -} - -void AircraftFromFlightDataIndexAddTargets(uint8_t index, uint16_t * targets) -{ - AircraftAddTargets(AircraftFromFlightDataIndex(index), targets); -8002094c: 08008242 j 80020908 -80020950: 00442021 addu a0,v0,a0 - -80020954 : -static bool CameraSpecialConditions(TYPE_PLAYER * ptrPlayer); - -void CameraInit(TYPE_PLAYER * ptrPlayer) -{ - // Center camera on screen - ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET; -80020954: 240200c0 li v0,192 -80020958: ac820084 sw v0,132(a0) - ptrPlayer->Camera.Y_Offset = 0; - ptrPlayer->Camera.X_Speed = 0; - ptrPlayer->Camera.Y_Speed = 0; - ptrPlayer->Camera.Speed_Timer = SPEED_CALCULATION_TIME; -8002095c: 24020003 li v0,3 - -void CameraInit(TYPE_PLAYER * ptrPlayer) -{ - // Center camera on screen - ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET; - ptrPlayer->Camera.Y_Offset = 0; -80020960: ac800088 sw zero,136(a0) - ptrPlayer->Camera.X_Speed = 0; -80020964: a080008c sb zero,140(a0) - ptrPlayer->Camera.Y_Speed = 0; -80020968: a080008d sb zero,141(a0) - ptrPlayer->Camera.Speed_Timer = SPEED_CALCULATION_TIME; -8002096c: 03e00008 jr ra -80020970: a082008e sb v0,142(a0) - -80020974 : -} - -void CameraApplyCoordinatesToSprite(TYPE_PLAYER * ptrPlayer, GsSprite * spr) -{ - spr->x += (short)ptrPlayer->Camera.X_Offset; -80020974: 8c820084 lw v0,132(a0) -80020978: 94a30000 lhu v1,0(a1) -8002097c: 00000000 nop -80020980: 00431021 addu v0,v0,v1 -80020984: a4a20000 sh v0,0(a1) - spr->y += (short)ptrPlayer->Camera.Y_Offset; -80020988: 94a30002 lhu v1,2(a1) -8002098c: 8c820088 lw v0,136(a0) -80020990: 00000000 nop -80020994: 00431021 addu v0,v0,v1 -80020998: 03e00008 jr ra -8002099c: a4a20002 sh v0,2(a1) - -800209a0 : -} - -void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * rect) -{ -800209a0: 27bdffe0 addiu sp,sp,-32 - dprintf("Rectangle {%d, %d}\n", -800209a4: 84a60002 lh a2,2(a1) - spr->x += (short)ptrPlayer->Camera.X_Offset; - spr->y += (short)ptrPlayer->Camera.Y_Offset; -} - -void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * rect) -{ -800209a8: afb10018 sw s1,24(sp) -800209ac: afb00014 sw s0,20(sp) -800209b0: 00808821 move s1,a0 -800209b4: 00a08021 move s0,a1 - dprintf("Rectangle {%d, %d}\n", -800209b8: 3c048004 lui a0,0x8004 -800209bc: 84a50000 lh a1,0(a1) - spr->x += (short)ptrPlayer->Camera.X_Offset; - spr->y += (short)ptrPlayer->Camera.Y_Offset; -} - -void CameraApplyCoordinatesToRectangle(TYPE_PLAYER * ptrPlayer, GsRectangle * rect) -{ -800209c0: afbf001c sw ra,28(sp) - dprintf("Rectangle {%d, %d}\n", -800209c4: 0c00ed8f jal 8003b63c -800209c8: 24840208 addiu a0,a0,520 - rect->x, - rect->y ); - - rect->x += (short)ptrPlayer->Camera.X_Offset; -800209cc: 8e220084 lw v0,132(s1) -800209d0: 96030000 lhu v1,0(s0) - rect->y += (short)ptrPlayer->Camera.Y_Offset; -} -800209d4: 8fbf001c lw ra,28(sp) -{ - dprintf("Rectangle {%d, %d}\n", - rect->x, - rect->y ); - - rect->x += (short)ptrPlayer->Camera.X_Offset; -800209d8: 00431021 addu v0,v0,v1 -800209dc: a6020000 sh v0,0(s0) - rect->y += (short)ptrPlayer->Camera.Y_Offset; -800209e0: 96030002 lhu v1,2(s0) -800209e4: 8e220088 lw v0,136(s1) -} -800209e8: 8fb10018 lw s1,24(sp) - dprintf("Rectangle {%d, %d}\n", - rect->x, - rect->y ); - - rect->x += (short)ptrPlayer->Camera.X_Offset; - rect->y += (short)ptrPlayer->Camera.Y_Offset; -800209ec: 00431021 addu v0,v0,v1 -800209f0: a6020002 sh v0,2(s0) -} -800209f4: 8fb00014 lw s0,20(sp) -800209f8: 03e00008 jr ra -800209fc: 27bd0020 addiu sp,sp,32 - -80020a00 : - ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed; -} - -bool CameraSpecialConditions(TYPE_PLAYER * ptrPlayer) -{ - if( (ptrPlayer->ShowAircraftData == true) -80020a00: 90820001 lbu v0,1(a0) -80020a04: 00000000 nop -80020a08: 14400089 bnez v0,80020c30 -80020a0c: 00000000 nop - || -80020a10: 90820002 lbu v0,2(a0) -80020a14: 00000000 nop -80020a18: 14400085 bnez v0,80020c30 -80020a1c: 00000000 nop - } - } -} - -void CameraHandler(TYPE_PLAYER * ptrPlayer) -{ -80020a20: 27bdffe8 addiu sp,sp,-24 -80020a24: afb00010 sw s0,16(sp) -80020a28: afbf0014 sw ra,20(sp) - ptrPlayer->Camera.X_Speed = 0; - ptrPlayer->Camera.Y_Speed = 0; - return; - } - - if(ptrPlayer->Camera.Speed_Timer < SPEED_CALCULATION_TIME) -80020a2c: 9082008e lbu v0,142(a0) -80020a30: 00000000 nop -80020a34: 2c430003 sltiu v1,v0,3 -80020a38: 10600004 beqz v1,80020a4c -80020a3c: 00808021 move s0,a0 - { - ptrPlayer->Camera.Speed_Timer++; -80020a40: 24420001 addiu v0,v0,1 -80020a44: 1000006d b 80020bfc -80020a48: a202008e sb v0,142(s0) - rect->y += (short)ptrPlayer->Camera.Y_Offset; -} - -void CameraUpdateSpeed(TYPE_PLAYER * ptrPlayer) -{ - if(ptrPlayer->PadDirectionKeyPressed_Callback() == true) -80020a4c: 8e020080 lw v0,128(s0) -80020a50: 00000000 nop -80020a54: 0040f809 jalr v0 -80020a58: a200008e sb zero,142(s0) -80020a5c: 1040003d beqz v0,80020b54 -80020a60: 00000000 nop - { - if(ptrPlayer->PadKeyPressed_Callback(PAD_LEFT) == true) -80020a64: 8e020078 lw v0,120(s0) -80020a68: 00000000 nop -80020a6c: 0040f809 jalr v0 -80020a70: 34048000 li a0,0x8000 -80020a74: 1040000a beqz v0,80020aa0 -80020a78: 00000000 nop - { - if(ptrPlayer->Camera.X_Speed < 0) -80020a7c: 8202008c lb v0,140(s0) -80020a80: 00000000 nop -80020a84: 04410003 bgez v0,80020a94 -80020a88: 28430005 slti v1,v0,5 - { - ptrPlayer->Camera.X_Speed += 2; -80020a8c: 10000003 b 80020a9c -80020a90: 24420002 addiu v0,v0,2 - } - else if(ptrPlayer->Camera.X_Speed < MAX_CAMERA_SPEED) -80020a94: 10600002 beqz v1,80020aa0 -80020a98: 24420001 addiu v0,v0,1 - { - ptrPlayer->Camera.X_Speed++; -80020a9c: a202008c sb v0,140(s0) - } - } - - if(ptrPlayer->PadKeyPressed_Callback(PAD_UP) == true) -80020aa0: 8e020078 lw v0,120(s0) -80020aa4: 00000000 nop -80020aa8: 0040f809 jalr v0 -80020aac: 24041000 li a0,4096 -80020ab0: 1040000a beqz v0,80020adc -80020ab4: 00000000 nop - { - if(ptrPlayer->Camera.Y_Speed < 0) -80020ab8: 8202008d lb v0,141(s0) -80020abc: 00000000 nop -80020ac0: 04410003 bgez v0,80020ad0 -80020ac4: 28430005 slti v1,v0,5 - { - ptrPlayer->Camera.Y_Speed += 2; -80020ac8: 10000003 b 80020ad8 -80020acc: 24420002 addiu v0,v0,2 - } - else if(ptrPlayer->Camera.Y_Speed < MAX_CAMERA_SPEED) -80020ad0: 10600002 beqz v1,80020adc -80020ad4: 24420001 addiu v0,v0,1 - { - ptrPlayer->Camera.Y_Speed++; -80020ad8: a202008d sb v0,141(s0) - } - } - - if(ptrPlayer->PadKeyPressed_Callback(PAD_DOWN) == true) -80020adc: 8e020078 lw v0,120(s0) -80020ae0: 00000000 nop -80020ae4: 0040f809 jalr v0 -80020ae8: 24044000 li a0,16384 -80020aec: 1040000a beqz v0,80020b18 -80020af0: 00000000 nop - { - if(ptrPlayer->Camera.Y_Speed > 0) -80020af4: 8202008d lb v0,141(s0) -80020af8: 00000000 nop -80020afc: 18400003 blez v0,80020b0c -80020b00: 2843fffc slti v1,v0,-4 - { - ptrPlayer->Camera.Y_Speed -= 2; -80020b04: 10000003 b 80020b14 -80020b08: 2442fffe addiu v0,v0,-2 - } - else if(ptrPlayer->Camera.Y_Speed > -MAX_CAMERA_SPEED) -80020b0c: 14600002 bnez v1,80020b18 -80020b10: 2442ffff addiu v0,v0,-1 - { - ptrPlayer->Camera.Y_Speed--; -80020b14: a202008d sb v0,141(s0) - } - } - - if(ptrPlayer->PadKeyPressed_Callback(PAD_RIGHT) == true) -80020b18: 8e020078 lw v0,120(s0) -80020b1c: 00000000 nop -80020b20: 0040f809 jalr v0 -80020b24: 24042000 li a0,8192 -80020b28: 1040000a beqz v0,80020b54 -80020b2c: 00000000 nop - { - if(ptrPlayer->Camera.X_Speed > 0) -80020b30: 8202008c lb v0,140(s0) -80020b34: 00000000 nop -80020b38: 18400003 blez v0,80020b48 -80020b3c: 2843fffc slti v1,v0,-4 - { - ptrPlayer->Camera.X_Speed -= 2; -80020b40: 10000003 b 80020b50 -80020b44: 2442fffe addiu v0,v0,-2 - } - else if(ptrPlayer->Camera.X_Speed > -MAX_CAMERA_SPEED) -80020b48: 14600002 bnez v1,80020b54 -80020b4c: 2442ffff addiu v0,v0,-1 - { - ptrPlayer->Camera.X_Speed--; -80020b50: a202008c sb v0,140(s0) - } - } - } - - if( (ptrPlayer->PadKeyPressed_Callback(PAD_LEFT) == false) -80020b54: 8e020078 lw v0,120(s0) -80020b58: 00000000 nop -80020b5c: 0040f809 jalr v0 -80020b60: 34048000 li a0,0x8000 -80020b64: 14400010 bnez v0,80020ba8 -80020b68: 00000000 nop - && - (ptrPlayer->PadKeyPressed_Callback(PAD_RIGHT) == false) ) -80020b6c: 8e020078 lw v0,120(s0) -80020b70: 00000000 nop -80020b74: 0040f809 jalr v0 -80020b78: 24042000 li a0,8192 - } - } - } - - if( (ptrPlayer->PadKeyPressed_Callback(PAD_LEFT) == false) - && -80020b7c: 1440000a bnez v0,80020ba8 -80020b80: 00000000 nop - (ptrPlayer->PadKeyPressed_Callback(PAD_RIGHT) == false) ) - { - if(ptrPlayer->Camera.X_Speed > 0) -80020b84: 8202008c lb v0,140(s0) -80020b88: 00000000 nop -80020b8c: 18400003 blez v0,80020b9c -80020b90: 00000000 nop - { - ptrPlayer->Camera.X_Speed--; -80020b94: 10000003 b 80020ba4 -80020b98: 2442ffff addiu v0,v0,-1 - } - else if(ptrPlayer->Camera.X_Speed < 0) -80020b9c: 10400002 beqz v0,80020ba8 -80020ba0: 24420001 addiu v0,v0,1 - { - ptrPlayer->Camera.X_Speed++; -80020ba4: a202008c sb v0,140(s0) - } - } - - if( (ptrPlayer->PadKeyPressed_Callback(PAD_UP) == false) -80020ba8: 8e020078 lw v0,120(s0) -80020bac: 00000000 nop -80020bb0: 0040f809 jalr v0 -80020bb4: 24041000 li a0,4096 -80020bb8: 14400010 bnez v0,80020bfc -80020bbc: 00000000 nop - && - (ptrPlayer->PadKeyPressed_Callback(PAD_DOWN) == false) ) -80020bc0: 8e020078 lw v0,120(s0) -80020bc4: 00000000 nop -80020bc8: 0040f809 jalr v0 -80020bcc: 24044000 li a0,16384 - ptrPlayer->Camera.X_Speed++; - } - } - - if( (ptrPlayer->PadKeyPressed_Callback(PAD_UP) == false) - && -80020bd0: 1440000a bnez v0,80020bfc -80020bd4: 00000000 nop - (ptrPlayer->PadKeyPressed_Callback(PAD_DOWN) == false) ) - { - if(ptrPlayer->Camera.Y_Speed > 0) -80020bd8: 8202008d lb v0,141(s0) -80020bdc: 00000000 nop -80020be0: 18400003 blez v0,80020bf0 -80020be4: 00000000 nop - { - ptrPlayer->Camera.Y_Speed--; -80020be8: 10000003 b 80020bf8 -80020bec: 2442ffff addiu v0,v0,-1 - } - else if(ptrPlayer->Camera.Y_Speed < 0) -80020bf0: 10400002 beqz v0,80020bfc -80020bf4: 24420001 addiu v0,v0,1 - { - ptrPlayer->Camera.Y_Speed++; -80020bf8: a202008d sb v0,141(s0) - { - ptrPlayer->Camera.Speed_Timer = 0; - CameraUpdateSpeed(ptrPlayer); - } - - ptrPlayer->Camera.X_Offset += ptrPlayer->Camera.X_Speed; -80020bfc: 8203008c lb v1,140(s0) -80020c00: 8e020084 lw v0,132(s0) - ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed; -} -80020c04: 8fbf0014 lw ra,20(sp) - { - ptrPlayer->Camera.Speed_Timer = 0; - CameraUpdateSpeed(ptrPlayer); - } - - ptrPlayer->Camera.X_Offset += ptrPlayer->Camera.X_Speed; -80020c08: 00431021 addu v0,v0,v1 -80020c0c: ae020084 sw v0,132(s0) - ptrPlayer->Camera.Y_Offset += ptrPlayer->Camera.Y_Speed; -80020c10: 8203008d lb v1,141(s0) -80020c14: 8e020088 lw v0,136(s0) -80020c18: 00000000 nop -80020c1c: 00431021 addu v0,v0,v1 -80020c20: ae020088 sw v0,136(s0) -} -80020c24: 8fb00010 lw s0,16(sp) -80020c28: 03e00008 jr ra -80020c2c: 27bd0018 addiu sp,sp,24 - -void CameraHandler(TYPE_PLAYER * ptrPlayer) -{ - if(CameraSpecialConditions(ptrPlayer) == true) - { - ptrPlayer->Camera.X_Speed = 0; -80020c30: a080008c sb zero,140(a0) - ptrPlayer->Camera.Y_Speed = 0; - return; -80020c34: 03e00008 jr ra -80020c38: a080008d sb zero,141(a0) - -80020c3c : -TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer) -{ - TYPE_ISOMETRIC_POS IsoPos; - TYPE_CARTESIAN_POS CartPos; - - CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset; -80020c3c: 8ca30084 lw v1,132(a1) -80020c40: 240200c0 li v0,192 - - return false; -} - -TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer) -{ -80020c44: 27bdffd8 addiu sp,sp,-40 - TYPE_ISOMETRIC_POS IsoPos; - TYPE_CARTESIAN_POS CartPos; - - CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset; -80020c48: 00431023 subu v0,v0,v1 - CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset; -80020c4c: 8ca30088 lw v1,136(a1) -TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer) -{ - TYPE_ISOMETRIC_POS IsoPos; - TYPE_CARTESIAN_POS CartPos; - - CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset; -80020c50: a7a20018 sh v0,24(sp) - CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset; -80020c54: 24020078 li v0,120 - - return false; -} - -TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer) -{ -80020c58: afb00020 sw s0,32(sp) - TYPE_ISOMETRIC_POS IsoPos; - TYPE_CARTESIAN_POS CartPos; - - CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset; - CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset; -80020c5c: 00431023 subu v0,v0,v1 - - return false; -} - -TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer) -{ -80020c60: 00808021 move s0,a0 - CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset; - CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset; - - /*dprintf("CartPos = {%d, %d}\n", CartPos.x, CartPos.y);*/ - - IsoPos = GfxCartesianToIsometric(&CartPos); -80020c64: 27a50018 addiu a1,sp,24 -80020c68: 27a40010 addiu a0,sp,16 - - return false; -} - -TYPE_ISOMETRIC_POS CameraGetIsoPos(TYPE_PLAYER * ptrPlayer) -{ -80020c6c: afbf0024 sw ra,36(sp) - CartPos.x = CAMERA_INITIAL_X_OFFSET - ptrPlayer->Camera.X_Offset; - CartPos.y = (Y_SCREEN_RESOLUTION >> 1) - ptrPlayer->Camera.Y_Offset; - - /*dprintf("CartPos = {%d, %d}\n", CartPos.x, CartPos.y);*/ - - IsoPos = GfxCartesianToIsometric(&CartPos); -80020c70: 0c0091e8 jal 800247a0 -80020c74: a7a2001a sh v0,26(sp) - - return IsoPos; -80020c78: 97a20010 lhu v0,16(sp) -} -80020c7c: 8fbf0024 lw ra,36(sp) - - /*dprintf("CartPos = {%d, %d}\n", CartPos.x, CartPos.y);*/ - - IsoPos = GfxCartesianToIsometric(&CartPos); - - return IsoPos; -80020c80: a6020000 sh v0,0(s0) -80020c84: 97a20012 lhu v0,18(sp) -80020c88: 00000000 nop -80020c8c: a6020002 sh v0,2(s0) -80020c90: 97a20014 lhu v0,20(sp) -80020c94: 00000000 nop -80020c98: a6020004 sh v0,4(s0) -} -80020c9c: 02001021 move v0,s0 -80020ca0: 8fb00020 lw s0,32(sp) -80020ca4: 03e00008 jr ra -80020ca8: 27bd0028 addiu sp,sp,40 - -80020cac : - -void CameraMoveToIsoPos(TYPE_PLAYER * ptrPlayer, TYPE_ISOMETRIC_POS IsoPos) -{ -80020cac: 27bdffe0 addiu sp,sp,-32 -80020cb0: afb00018 sw s0,24(sp) -80020cb4: afa50024 sw a1,36(sp) -80020cb8: 00808021 move s0,a0 - TYPE_CARTESIAN_POS CartPos = GfxIsometricToCartesian(&IsoPos); -80020cbc: 27a50024 addiu a1,sp,36 -80020cc0: 27a40010 addiu a0,sp,16 - - return IsoPos; -} - -void CameraMoveToIsoPos(TYPE_PLAYER * ptrPlayer, TYPE_ISOMETRIC_POS IsoPos) -{ -80020cc4: afbf001c sw ra,28(sp) - TYPE_CARTESIAN_POS CartPos = GfxIsometricToCartesian(&IsoPos); -80020cc8: 0c0091ac jal 800246b0 -80020ccc: afa60028 sw a2,40(sp) - IsoPos.y, - IsoPos.z, - CartPos.x, - CartPos.y );*/ - - ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET - CartPos.x; -80020cd0: 87a30010 lh v1,16(sp) -80020cd4: 240200c0 li v0,192 -80020cd8: 00431023 subu v0,v0,v1 - ptrPlayer->Camera.Y_Offset = (Y_SCREEN_RESOLUTION >> 1) - CartPos.y; -80020cdc: 87a30012 lh v1,18(sp) - IsoPos.y, - IsoPos.z, - CartPos.x, - CartPos.y );*/ - - ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET - CartPos.x; -80020ce0: ae020084 sw v0,132(s0) - ptrPlayer->Camera.Y_Offset = (Y_SCREEN_RESOLUTION >> 1) - CartPos.y; - - /*dprintf("Moving camera to {%d, %d}\n", - ptrPlayer->Camera.X_Offset, - ptrPlayer->Camera.Y_Offset );*/ -} -80020ce4: 8fbf001c lw ra,28(sp) - IsoPos.z, - CartPos.x, - CartPos.y );*/ - - ptrPlayer->Camera.X_Offset = CAMERA_INITIAL_X_OFFSET - CartPos.x; - ptrPlayer->Camera.Y_Offset = (Y_SCREEN_RESOLUTION >> 1) - CartPos.y; -80020ce8: 24020078 li v0,120 -80020cec: 00431023 subu v0,v0,v1 -80020cf0: ae020088 sw v0,136(s0) - - /*dprintf("Moving camera to {%d, %d}\n", - ptrPlayer->Camera.X_Offset, - ptrPlayer->Camera.Y_Offset );*/ -} -80020cf4: 8fb00018 lw s0,24(sp) -80020cf8: 03e00008 jr ra -80020cfc: 27bd0020 addiu sp,sp,32 - -80020d00 : - SfxStopMusic(); - } -} - -void EndAnimationFadeOut(void) -{ -80020d00: 27bdffe8 addiu sp,sp,-24 -80020d04: afb00010 sw s0,16(sp) - { - if( GfxGetGlobalLuminance() > 0) - { - GfxSetGlobalLuminance(GfxGetGlobalLuminance() - END_ANIMATION_FADEOUT_STEP); - - GfxSortSprite(&EndAnimationDisplay);; -80020d08: 3c108004 lui s0,0x8004 - SfxStopMusic(); - } -} - -void EndAnimationFadeOut(void) -{ -80020d0c: afbf0014 sw ra,20(sp) - { - if( GfxGetGlobalLuminance() > 0) - { - GfxSetGlobalLuminance(GfxGetGlobalLuminance() - END_ANIMATION_FADEOUT_STEP); - - GfxSortSprite(&EndAnimationDisplay);; -80020d10: 261032d0 addiu s0,s0,13008 -{ - uint8_t i; - - while(1) - { - if( GfxGetGlobalLuminance() > 0) -80020d14: 0c009007 jal 8002401c -80020d18: 00000000 nop -80020d1c: 1040000c beqz v0,80020d50 -80020d20: 00003021 move a2,zero - { - GfxSetGlobalLuminance(GfxGetGlobalLuminance() - END_ANIMATION_FADEOUT_STEP); -80020d24: 0c009007 jal 8002401c -80020d28: 00000000 nop -80020d2c: 2442fff8 addiu v0,v0,-8 -80020d30: 0c00900b jal 8002402c -80020d34: 304400ff andi a0,v0,0xff - - GfxSortSprite(&EndAnimationDisplay);; -80020d38: 0c0090d2 jal 80024348 -80020d3c: 02002021 move a0,s0 - GfxDrawScene_Slow(); -80020d40: 0c009030 jal 800240c0 -80020d44: 00000000 nop - GfxDrawScene_Slow(); - } - - break; - } - } -80020d48: 1000fff2 b 80020d14 -80020d4c: 00000000 nop - GfxSortSprite(&EndAnimationDisplay);; - GfxDrawScene_Slow(); - } - else - { - GsSortCls(0,0,0); -80020d50: 00002821 move a1,zero -80020d54: 0c00c4e8 jal 800313a0 -80020d58: 00002021 move a0,zero - - for(i = 0 ; i < 2 ; i++) - { - // Draw two frames to ensure black display - GfxDrawScene_Slow(); -80020d5c: 0c009030 jal 800240c0 -80020d60: 00000000 nop - } - - break; - } - } -} -80020d64: 8fbf0014 lw ra,20(sp) -80020d68: 8fb00010 lw s0,16(sp) - GsSortCls(0,0,0); - - for(i = 0 ; i < 2 ; i++) - { - // Draw two frames to ensure black display - GfxDrawScene_Slow(); -80020d6c: 08009030 j 800240c0 -80020d70: 27bd0018 addiu sp,sp,24 - -80020d74 : - -static GsRectangle EndAnimationRect; -static GsSprite EndAnimationDisplay; - -void EndAnimation(void) -{ -80020d74: 27bdff60 addiu sp,sp,-160 -80020d78: afb1007c sw s1,124(sp) - uint8_t randIndex = 0; - - GfxSaveDisplayData(&EndAnimationDisplay); -80020d7c: 3c118004 lui s1,0x8004 -80020d80: 262432d0 addiu a0,s1,13008 - -static GsRectangle EndAnimationRect; -static GsSprite EndAnimationDisplay; - -void EndAnimation(void) -{ -80020d84: afbf009c sw ra,156(sp) -80020d88: afbe0098 sw s8,152(sp) -80020d8c: afb70094 sw s7,148(sp) -80020d90: afb60090 sw s6,144(sp) -80020d94: afb5008c sw s5,140(sp) -80020d98: afb40088 sw s4,136(sp) -80020d9c: afb30084 sw s3,132(sp) -80020da0: afb20080 sw s2,128(sp) - uint8_t randIndex = 0; - - GfxSaveDisplayData(&EndAnimationDisplay); -80020da4: 0c009090 jal 80024240 -80020da8: afb00078 sw s0,120(sp) - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); -80020dac: 0c00900b jal 8002402c -80020db0: 24040080 li a0,128 - - if(SystemIsRandSeedSet() == false) -80020db4: 0c009f87 jal 80027e1c -80020db8: 00000000 nop -80020dbc: 14400005 bnez v0,80020dd4 -80020dc0: 00000000 nop - { - // Set default end animation - EndAnimationFadeOut(); -80020dc4: 0c008340 jal 80020d00 -80020dc8: 00000000 nop -80020dcc: 10000091 b 80021014 -80020dd0: 00000000 nop - } - else - { - randIndex = rand() % (END_ANIMATION_MAX_RAND_VALUE + 1); -80020dd4: 0c00d5a9 jal 800356a4 -80020dd8: 00000000 nop - - switch(randIndex) -80020ddc: 24030003 li v1,3 -80020de0: 14600002 bnez v1,80020dec -80020de4: 0043001a div zero,v0,v1 -80020de8: 0007000d break 0x7 -80020dec: 24030001 li v1,1 -80020df0: 00001010 mfhi v0 -80020df4: 304200ff andi v0,v0,0xff -80020df8: 10430063 beq v0,v1,80020f88 -80020dfc: 24030002 li v1,2 -80020e00: 10430065 beq v0,v1,80020f98 -80020e04: 3c148004 lui s4,0x8004 -80020e08: 14400080 bnez v0,8002100c -80020e0c: 3c158004 lui s5,0x8004 - uint16_t randInd = 0; - bool sqPos[END_ANIMATION_SQUARES_TOTAL]; - uint16_t sqCounter = END_ANIMATION_SQUARES_TOTAL; - uint16_t maxIndex = END_ANIMATION_SQUARES_TOTAL_MAX_INDEX; - - EndAnimationRect.w = END_ANIMATION_SQUARES_SIZE; -80020e10: 26b032fc addiu s0,s5,13052 -80020e14: 24020020 li v0,32 - - EndAnimationRect.r = 0; - EndAnimationRect.g = 0; - EndAnimationRect.b = 0; - - memset(sqPos, false , END_ANIMATION_SQUARES_TOTAL); -80020e18: 24060060 li a2,96 -80020e1c: 00002821 move a1,zero -80020e20: 27a40010 addiu a0,sp,16 - uint16_t randInd = 0; - bool sqPos[END_ANIMATION_SQUARES_TOTAL]; - uint16_t sqCounter = END_ANIMATION_SQUARES_TOTAL; - uint16_t maxIndex = END_ANIMATION_SQUARES_TOTAL_MAX_INDEX; - - EndAnimationRect.w = END_ANIMATION_SQUARES_SIZE; -80020e24: a6020004 sh v0,4(s0) - EndAnimationRect.h = END_ANIMATION_SQUARES_SIZE; -80020e28: a6020006 sh v0,6(s0) - - EndAnimationRect.r = 0; -80020e2c: a2000008 sb zero,8(s0) - EndAnimationRect.g = 0; -80020e30: a2000009 sb zero,9(s0) - EndAnimationRect.b = 0; -80020e34: a200000a sb zero,10(s0) - - memset(sqPos, false , END_ANIMATION_SQUARES_TOTAL); -80020e38: 0c00d7ab jal 80035eac -80020e3c: 24140060 li s4,96 -void EndAnimationSquares(void) -{ - uint16_t i, j, k; - uint16_t randInd = 0; - bool sqPos[END_ANIMATION_SQUARES_TOTAL]; - uint16_t sqCounter = END_ANIMATION_SQUARES_TOTAL; -80020e40: 24120060 li s2,96 - uint16_t maxIndex = END_ANIMATION_SQUARES_TOTAL_MAX_INDEX; -80020e44: 2413005f li s3,95 - /*dprintf("randInd = %d\t",randInd); - dprintf("sqPos[randInd] = %d\n", sqPos[randInd]);*/ - - if(sqPos[randInd] == false) - { - sqPos[randInd] = true; -80020e48: 24170001 li s7,1 - } - } - - }while(1); - - GfxSortSprite(&EndAnimationDisplay); -80020e4c: 263132d0 addiu s1,s1,13008 - { - for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++) - { - if(sqPos[j] == true) - { - EndAnimationRect.x = ((j) << END_ANIMATION_SQUARES_SIZE_BITSHIFT) - -80020e50: 2416000c li s6,12 - - GfxSortSprite(&EndAnimationDisplay); - - if(sqCounter != 0) - { - for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++) -80020e54: 241e0060 li s8,96 - for(i = 0; i < END_ANIMATION_SQUARES_TOTAL ; i++) - { - - do - { - randInd = SystemRand(0,maxIndex); -80020e58: 02602821 move a1,s3 -80020e5c: 0c00a03d jal 800280f4 -80020e60: 00002021 move a0,zero - - /*dprintf("randInd = %d\t",randInd); - dprintf("sqPos[randInd] = %d\n", sqPos[randInd]);*/ - - if(sqPos[randInd] == false) -80020e64: 3042ffff andi v0,v0,0xffff -80020e68: 27a30010 addiu v1,sp,16 -80020e6c: 00621021 addu v0,v1,v0 -80020e70: 90430000 lbu v1,0(v0) -80020e74: 00000000 nop -80020e78: 1460000d bnez v1,80020eb0 -80020e7c: 00000000 nop - { - sqPos[randInd] = true; - sqCounter--; -80020e80: 2652ffff addiu s2,s2,-1 - /*dprintf("randInd = %d\t",randInd); - dprintf("sqPos[randInd] = %d\n", sqPos[randInd]);*/ - - if(sqPos[randInd] == false) - { - sqPos[randInd] = true; -80020e84: a0570000 sb s7,0(v0) - sqCounter--; -80020e88: 3252ffff andi s2,s2,0xffff - - while(sqPos[maxIndex] == true) -80020e8c: 27a20010 addiu v0,sp,16 -80020e90: 00531021 addu v0,v0,s3 -80020e94: 90420000 lbu v0,0(v0) -80020e98: 00000000 nop -80020e9c: 10400006 beqz v0,80020eb8 -80020ea0: 00000000 nop - { - // Lower maximum value for rand() so that it's - // easier to spot new empty index on next iteration. - maxIndex--; -80020ea4: 2673ffff addiu s3,s3,-1 -80020ea8: 1000fff8 b 80020e8c -80020eac: 3273ffff andi s3,s3,0xffff - - break; - } - else - { - if(sqCounter == 0) -80020eb0: 1640ffea bnez s2,80020e5c -80020eb4: 02602821 move a1,s3 - } - } - - }while(1); - - GfxSortSprite(&EndAnimationDisplay); -80020eb8: 0c0090d2 jal 80024348 -80020ebc: 02202021 move a0,s1 - - if(sqCounter != 0) -80020ec0: 1640000f bnez s2,80020f00 -80020ec4: 00001821 move v1,zero - { - // Quick fix: draw a full black rectangle instead of multiple squares - for(k = 0 ; k < 2 ; k++) - { - // Draw two frames to ensure black display - GsSortCls(0,0,0); -80020ec8: 00003021 move a2,zero -80020ecc: 00002821 move a1,zero -80020ed0: 0c00c4e8 jal 800313a0 -80020ed4: 00002021 move a0,zero - GfxDrawScene_Slow(); -80020ed8: 0c009030 jal 800240c0 -80020edc: 2694ffff addiu s4,s4,-1 - { - // Quick fix: draw a full black rectangle instead of multiple squares - for(k = 0 ; k < 2 ; k++) - { - // Draw two frames to ensure black display - GsSortCls(0,0,0); -80020ee0: 00003021 move a2,zero -80020ee4: 00002821 move a1,zero -80020ee8: 0c00c4e8 jal 800313a0 -80020eec: 00002021 move a0,zero - GfxDrawScene_Slow(); -80020ef0: 0c009030 jal 800240c0 -80020ef4: 3294ffff andi s4,s4,0xffff -80020ef8: 1000001d b 80020f70 -80020efc: 00000000 nop - - if(sqCounter != 0) - { - for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++) - { - if(sqPos[j] == true) -80020f00: 27a40010 addiu a0,sp,16 -80020f04: 00832021 addu a0,a0,v1 -80020f08: 90840000 lbu a0,0(a0) -80020f0c: 00000000 nop -80020f10: 10800012 beqz a0,80020f5c -80020f14: 3062ffff andi v0,v1,0xffff - { - EndAnimationRect.x = ((j) << END_ANIMATION_SQUARES_SIZE_BITSHIFT) - -80020f18: 16c00002 bnez s6,80020f24 -80020f1c: 0056001b divu zero,v0,s6 -80020f20: 0007000d break 0x7 -80020f24: 00021140 sll v0,v0,0x5 -80020f28: afa30070 sw v1,112(sp) -80020f2c: 00002012 mflo a0 -80020f30: 000431c0 sll a2,a0,0x7 -80020f34: 00042a40 sll a1,a0,0x9 -80020f38: 00a62823 subu a1,a1,a2 - (short)( (j / END_ANIMATION_SQUARES_PER_ROW) * - X_SCREEN_RESOLUTION); - - EndAnimationRect.y = (short) (j/ END_ANIMATION_SQUARES_PER_ROW) << -80020f3c: 00042140 sll a0,a0,0x5 - { - for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++) - { - if(sqPos[j] == true) - { - EndAnimationRect.x = ((j) << END_ANIMATION_SQUARES_SIZE_BITSHIFT) - -80020f40: 00451023 subu v0,v0,a1 - (short)( (j / END_ANIMATION_SQUARES_PER_ROW) * - X_SCREEN_RESOLUTION); - - EndAnimationRect.y = (short) (j/ END_ANIMATION_SQUARES_PER_ROW) << -80020f44: a6040002 sh a0,2(s0) - END_ANIMATION_SQUARES_SIZE_BITSHIFT; - - GsSortRectangle(&EndAnimationRect); -80020f48: 02002021 move a0,s0 -80020f4c: 0c00b762 jal 8002dd88 -80020f50: a6a232fc sh v0,13052(s5) -80020f54: 8fa30070 lw v1,112(sp) -80020f58: 00000000 nop -80020f5c: 24630001 addiu v1,v1,1 - - GfxSortSprite(&EndAnimationDisplay); - - if(sqCounter != 0) - { - for(j = 0; j < END_ANIMATION_SQUARES_TOTAL ; j++) -80020f60: 147effe8 bne v1,s8,80020f04 -80020f64: 27a40010 addiu a0,sp,16 -80020f68: 2694ffff addiu s4,s4,-1 -80020f6c: 3294ffff andi s4,s4,0xffff - GsSortCls(0,0,0); - GfxDrawScene_Slow(); - } - } - - GfxDrawScene_Slow(); -80020f70: 0c009030 jal 800240c0 -80020f74: 00000000 nop - EndAnimationRect.g = 0; - EndAnimationRect.b = 0; - - memset(sqPos, false , END_ANIMATION_SQUARES_TOTAL); - - for(i = 0; i < END_ANIMATION_SQUARES_TOTAL ; i++) -80020f78: 1680ffb8 bnez s4,80020e5c -80020f7c: 02602821 move a1,s3 -80020f80: 10000022 b 8002100c -80020f84: 00000000 nop - case END_ANIMATION_SQUARES: - EndAnimationSquares(); - break; - - case END_ANIMATION_FADEOUT: - EndAnimationFadeOut(); -80020f88: 0c008340 jal 80020d00 -80020f8c: 00000000 nop - break; -80020f90: 1000001e b 8002100c -80020f94: 00000000 nop - } - else - { - randIndex = rand() % (END_ANIMATION_MAX_RAND_VALUE + 1); - - switch(randIndex) -80020f98: 00009821 move s3,zero -{ - short rectIndex = 0; - - do - { - GfxSortSprite(&EndAnimationDisplay); -80020f9c: 263232d0 addiu s2,s1,13008 - - // Draw upper half rectangle - - EndAnimationRect.x = 0; - EndAnimationRect.y = 0; -80020fa0: 269032fc addiu s0,s4,13052 - - EndAnimationRect.w = X_SCREEN_RESOLUTION; -80020fa4: 24150180 li s5,384 - EndAnimationRect.h = rectIndex; - - GsSortRectangle(&EndAnimationRect); - - EndAnimationRect.x = 0; - EndAnimationRect.y = Y_SCREEN_RESOLUTION - rectIndex; -80020fa8: 241600f0 li s6,240 -{ - short rectIndex = 0; - - do - { - GfxSortSprite(&EndAnimationDisplay); -80020fac: 0c0090d2 jal 80024348 -80020fb0: 02402021 move a0,s2 -80020fb4: 3271ffff andi s1,s3,0xffff - EndAnimationRect.y = 0; - - EndAnimationRect.w = X_SCREEN_RESOLUTION; - EndAnimationRect.h = rectIndex; - - GsSortRectangle(&EndAnimationRect); -80020fb8: 02002021 move a0,s0 - - EndAnimationRect.x = 0; - EndAnimationRect.y = 0; - - EndAnimationRect.w = X_SCREEN_RESOLUTION; - EndAnimationRect.h = rectIndex; -80020fbc: a6130006 sh s3,6(s0) - { - GfxSortSprite(&EndAnimationDisplay); - - // Draw upper half rectangle - - EndAnimationRect.x = 0; -80020fc0: a68032fc sh zero,13052(s4) - EndAnimationRect.y = 0; -80020fc4: a6000002 sh zero,2(s0) - - EndAnimationRect.w = X_SCREEN_RESOLUTION; - EndAnimationRect.h = rectIndex; - - GsSortRectangle(&EndAnimationRect); -80020fc8: 0c00b762 jal 8002dd88 -80020fcc: a6150004 sh s5,4(s0) - - EndAnimationRect.x = 0; - EndAnimationRect.y = Y_SCREEN_RESOLUTION - rectIndex; -80020fd0: 02d11023 subu v0,s6,s1 -80020fd4: 26310002 addiu s1,s1,2 - - EndAnimationRect.w = X_SCREEN_RESOLUTION; - EndAnimationRect.h = rectIndex; - - GsSortRectangle(&EndAnimationRect); -80020fd8: 02002021 move a0,s0 -80020fdc: 3231ffff andi s1,s1,0xffff - EndAnimationRect.h = rectIndex; - - GsSortRectangle(&EndAnimationRect); - - EndAnimationRect.x = 0; - EndAnimationRect.y = Y_SCREEN_RESOLUTION - rectIndex; -80020fe0: a6020002 sh v0,2(s0) - - EndAnimationRect.w = X_SCREEN_RESOLUTION; - EndAnimationRect.h = rectIndex; -80020fe4: a6130006 sh s3,6(s0) - EndAnimationRect.w = X_SCREEN_RESOLUTION; - EndAnimationRect.h = rectIndex; - - GsSortRectangle(&EndAnimationRect); - - EndAnimationRect.x = 0; -80020fe8: a68032fc sh zero,13052(s4) - EndAnimationRect.y = Y_SCREEN_RESOLUTION - rectIndex; - - EndAnimationRect.w = X_SCREEN_RESOLUTION; -80020fec: a6150004 sh s5,4(s0) - EndAnimationRect.h = rectIndex; - - GsSortRectangle(&EndAnimationRect); -80020ff0: 0c00b762 jal 8002dd88 -80020ff4: 00119c00 sll s3,s1,0x10 - - GfxDrawScene_Slow(); -80020ff8: 0c009030 jal 800240c0 -80020ffc: 00139c03 sra s3,s3,0x10 - - rectIndex += END_ANIMATION_LINE_STEP; - - }while(rectIndex <= (X_SCREEN_RESOLUTION >> 1) ); -80021000: 240200c2 li v0,194 -80021004: 1622ffe9 bne s1,v0,80020fac -80021008: 00000000 nop - - default: - break; - } - - SfxStopMusic(); -8002100c: 0c009f28 jal 80027ca0 -80021010: 00000000 nop - } -} -80021014: 8fbf009c lw ra,156(sp) -80021018: 8fbe0098 lw s8,152(sp) -8002101c: 8fb70094 lw s7,148(sp) -80021020: 8fb60090 lw s6,144(sp) -80021024: 8fb5008c lw s5,140(sp) -80021028: 8fb40088 lw s4,136(sp) -8002102c: 8fb30084 lw s3,132(sp) -80021030: 8fb20080 lw s2,128(sp) -80021034: 8fb1007c lw s1,124(sp) -80021038: 8fb00078 lw s0,120(sp) -8002103c: 03e00008 jr ra -80021040: 27bd00a0 addiu sp,sp,160 - -80021044 : - * *************************************/ - -char _internal_text[FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE]; - -bool FontLoadImage(char * strPath, TYPE_FONT * ptrFont) -{ -80021044: 27bdffe0 addiu sp,sp,-32 -80021048: afb10018 sw s1,24(sp) -8002104c: afb00014 sw s0,20(sp) -80021050: afbf001c sw ra,28(sp) - if(GfxSpriteFromFile(strPath, &ptrFont->spr) == false) -80021054: 0c00903c jal 800240f0 -80021058: 00a08021 move s0,a1 -8002105c: 10400021 beqz v0,800210e4 -80021060: 00408821 move s1,v0 - { - return false; - } - - ptrFont->spr_w = ptrFont->spr.w; - ptrFont->spr_h = ptrFont->spr.h; -80021064: 96020008 lhu v0,8(s0) - if(GfxSpriteFromFile(strPath, &ptrFont->spr) == false) - { - return false; - } - - ptrFont->spr_w = ptrFont->spr.w; -80021068: 86040006 lh a0,6(s0) - ptrFont->spr_h = ptrFont->spr.h; -8002106c: a602003a sh v0,58(s0) - ptrFont->spr_u = ptrFont->spr.u; -80021070: 92020004 lbu v0,4(s0) - ptrFont->spr_v = ptrFont->spr.v; - - //Now set default values to font - - ptrFont->char_w = FONT_DEFAULT_CHAR_SIZE; -80021074: 24030010 li v1,16 - return false; - } - - ptrFont->spr_w = ptrFont->spr.w; - ptrFont->spr_h = ptrFont->spr.h; - ptrFont->spr_u = ptrFont->spr.u; -80021078: a602003c sh v0,60(s0) - ptrFont->spr_v = ptrFont->spr.v; -8002107c: 92020005 lbu v0,5(s0) - if(GfxSpriteFromFile(strPath, &ptrFont->spr) == false) - { - return false; - } - - ptrFont->spr_w = ptrFont->spr.w; -80021080: a6040038 sh a0,56(s0) - ptrFont->spr_h = ptrFont->spr.h; - ptrFont->spr_u = ptrFont->spr.u; - ptrFont->spr_v = ptrFont->spr.v; -80021084: a602003e sh v0,62(s0) - ptrFont->char_w = FONT_DEFAULT_CHAR_SIZE; - ptrFont->char_h = FONT_DEFAULT_CHAR_SIZE; - - ptrFont->spr.attribute |= COLORMODE(COLORMODE_4BPP); - ptrFont->spr.attribute &= COLORMODE(~(COLORMODE_8BPP | COLORMODE_16BPP | COLORMODE_24BPP)); - ptrFont->spr.r = NORMAL_LUMINANCE; -80021088: 2402ff80 li v0,-128 -8002108c: a202000e sb v0,14(s0) - ptrFont->spr.g = NORMAL_LUMINANCE; -80021090: a202000f sb v0,15(s0) - ptrFont->spr.b = NORMAL_LUMINANCE; -80021094: a2020010 sb v0,16(s0) - - //At this point, spr.w and spr.h = real w/h - ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w); -80021098: 000417c3 sra v0,a0,0x1f -8002109c: 3042000f andi v0,v0,0xf -800210a0: 00441021 addu v0,v0,a0 -800210a4: 00021103 sra v0,v0,0x4 -800210a8: a2020031 sb v0,49(s0) - - ptrFont->flags = FONT_NOFLAGS; - - ptrFont->init_ch = FONT_DEFAULT_INIT_CHAR; - - dprintf("Sprite CX = %d, sprite CY = %d\n",ptrFont->spr.cx, ptrFont->spr.cy); -800210ac: 3c048004 lui a0,0x8004 - ptrFont->spr.w = ptrFont->char_w; - ptrFont->spr.h = ptrFont->char_h; - - ptrFont->flags = FONT_NOFLAGS; - - ptrFont->init_ch = FONT_DEFAULT_INIT_CHAR; -800210b0: 24020021 li v0,33 - - dprintf("Sprite CX = %d, sprite CY = %d\n",ptrFont->spr.cx, ptrFont->spr.cy); -800210b4: 8606000c lh a2,12(s0) -800210b8: 8605000a lh a1,10(s0) - ptrFont->spr_u = ptrFont->spr.u; - ptrFont->spr_v = ptrFont->spr.v; - - //Now set default values to font - - ptrFont->char_w = FONT_DEFAULT_CHAR_SIZE; -800210bc: a603002c sh v1,44(s0) - ptrFont->char_h = FONT_DEFAULT_CHAR_SIZE; -800210c0: a603002e sh v1,46(s0) - - ptrFont->spr.attribute |= COLORMODE(COLORMODE_4BPP); - ptrFont->spr.attribute &= COLORMODE(~(COLORMODE_8BPP | COLORMODE_16BPP | COLORMODE_24BPP)); -800210c4: ae000014 sw zero,20(s0) - ptrFont->spr.g = NORMAL_LUMINANCE; - ptrFont->spr.b = NORMAL_LUMINANCE; - - //At this point, spr.w and spr.h = real w/h - ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w); - ptrFont->max_ch_wrap = 0; -800210c8: a2000032 sb zero,50(s0) - - ptrFont->spr.w = ptrFont->char_w; -800210cc: a6030006 sh v1,6(s0) - ptrFont->spr.h = ptrFont->char_h; -800210d0: a6030008 sh v1,8(s0) - - ptrFont->flags = FONT_NOFLAGS; -800210d4: ae000034 sw zero,52(s0) - - ptrFont->init_ch = FONT_DEFAULT_INIT_CHAR; -800210d8: a2020030 sb v0,48(s0) - - dprintf("Sprite CX = %d, sprite CY = %d\n",ptrFont->spr.cx, ptrFont->spr.cy); -800210dc: 0c00ed8f jal 8003b63c -800210e0: 2484021c addiu a0,a0,540 - - return true; -} -800210e4: 8fbf001c lw ra,28(sp) -800210e8: 02201021 move v0,s1 -800210ec: 8fb00014 lw s0,20(sp) -800210f0: 8fb10018 lw s1,24(sp) -800210f4: 03e00008 jr ra -800210f8: 27bd0020 addiu sp,sp,32 - -800210fc : - -void FontSetInitChar(TYPE_FONT * ptrFont, char c) -{ - ptrFont->init_ch = c; -800210fc: 03e00008 jr ra -80021100: a0850030 sb a1,48(a0) - -80021104 : -} - -void FontSetFlags(TYPE_FONT * ptrFont, FONT_FLAGS flags) -{ - ptrFont->flags = flags; -80021104: 03e00008 jr ra -80021108: ac850034 sw a1,52(a0) - -8002110c : -{ - ptrFont->char_w = size; - ptrFont->char_h = size; - - //At this point, spr.w and spr.h = real w/h - ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w); -8002110c: 84820038 lh v0,56(a0) -{ - ptrFont->flags = flags; -} - -void FontSetSize(TYPE_FONT * ptrFont, short size) -{ -80021110: 00052c00 sll a1,a1,0x10 -80021114: 00052c03 sra a1,a1,0x10 - ptrFont->char_w = size; - ptrFont->char_h = size; - - //At this point, spr.w and spr.h = real w/h - ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w); -80021118: 14a00002 bnez a1,80021124 -8002111c: 0045001a div zero,v0,a1 -80021120: 0007000d break 0x7 - ptrFont->flags = flags; -} - -void FontSetSize(TYPE_FONT * ptrFont, short size) -{ - ptrFont->char_w = size; -80021124: a485002c sh a1,44(a0) - ptrFont->char_h = size; -80021128: a485002e sh a1,46(a0) - - //At this point, spr.w and spr.h = real w/h - ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w); - ptrFont->max_ch_wrap = 0; -8002112c: a0800032 sb zero,50(a0) - - ptrFont->spr.w = ptrFont->char_w; -80021130: a4850006 sh a1,6(a0) - ptrFont->spr.h = ptrFont->char_h; -80021134: a4850008 sh a1,8(a0) -{ - ptrFont->char_w = size; - ptrFont->char_h = size; - - //At this point, spr.w and spr.h = real w/h - ptrFont->char_per_row = (uint8_t)(ptrFont->spr_w / ptrFont->char_w); -80021138: 00001012 mflo v0 - ptrFont->max_ch_wrap = 0; - - ptrFont->spr.w = ptrFont->char_w; - ptrFont->spr.h = ptrFont->char_h; -8002113c: 03e00008 jr ra -80021140: a0820031 sb v0,49(a0) - -80021144 : - int result; - short orig_x = x; - - va_list ap; - - if(ptrFont->flags & FONT_1HZ_FLASH) -80021144: 8c820034 lw v0,52(a0) - ptrFont->spr.w = ptrFont->char_w; - ptrFont->spr.h = ptrFont->char_h; -} - -void FontPrintText(TYPE_FONT * ptrFont, short x, short y, char * str, ...) -{ -80021148: 27bdffb8 addiu sp,sp,-72 - int result; - short orig_x = x; - - va_list ap; - - if(ptrFont->flags & FONT_1HZ_FLASH) -8002114c: 30430008 andi v1,v0,0x8 - ptrFont->spr.w = ptrFont->char_w; - ptrFont->spr.h = ptrFont->char_h; -} - -void FontPrintText(TYPE_FONT * ptrFont, short x, short y, char * str, ...) -{ -80021150: afb20028 sw s2,40(sp) -80021154: afb10024 sw s1,36(sp) -80021158: 00059400 sll s2,a1,0x10 -8002115c: 00068c00 sll s1,a2,0x10 -80021160: afb3002c sw s3,44(sp) -80021164: afb00020 sw s0,32(sp) -80021168: afbf0044 sw ra,68(sp) -8002116c: afbe0040 sw s8,64(sp) -80021170: afb7003c sw s7,60(sp) -80021174: afb60038 sw s6,56(sp) -80021178: afb50034 sw s5,52(sp) -8002117c: afb40030 sw s4,48(sp) -80021180: 00808021 move s0,a0 -80021184: 00e09821 move s3,a3 -80021188: 00129403 sra s2,s2,0x10 - int result; - short orig_x = x; - - va_list ap; - - if(ptrFont->flags & FONT_1HZ_FLASH) -8002118c: 10600014 beqz v1,800211e0 -80021190: 00118c03 sra s1,s1,0x10 - { - if(Gfx1HzFlash() == false) -80021194: 0c0090b6 jal 800242d8 -80021198: 00000000 nop -8002119c: 1040007c beqz v0,80021390 -800211a0: 3c168007 lui s6,0x8007 - } - } - - va_start(ap, str); - - result = vsnprintf( _internal_text, -800211a4: 02603021 move a2,s3 - { - return; - } - } - - va_start(ap, str); -800211a8: 27a70058 addiu a3,sp,88 - - result = vsnprintf( _internal_text, -800211ac: 26c48db8 addiu a0,s6,-29256 -800211b0: 240500c8 li a1,200 -800211b4: 0c00ec5d jal 8003b174 -800211b8: afa70010 sw a3,16(sp) -800211bc: 0040f021 move s8,v0 - FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE, - str, - ap ); - - for(i = 0; i < result ; i++) -800211c0: 02409821 move s3,s2 -} - -void FontPrintText(TYPE_FONT * ptrFont, short x, short y, char * str, ...) -{ - uint16_t i; - uint16_t line_count = 0; -800211c4: 0000a821 move s5,zero - result = vsnprintf( _internal_text, - FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE, - str, - ap ); - - for(i = 0; i < result ; i++) -800211c8: 0000a021 move s4,zero - { - char _ch = _internal_text[i]; -800211cc: 26d68db8 addiu s6,s6,-29256 - { - // End of string - break; - } - - switch(_ch) -800211d0: 2402000a li v0,10 -800211d4: 24060020 li a2,32 - result = vsnprintf( _internal_text, - FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE, - str, - ap ); - - for(i = 0; i < result ; i++) -800211d8: 10000017 b 80021238 -800211dc: 2417ff80 li s7,-128 - if(Gfx1HzFlash() == false) - { - return; - } - } - else if(ptrFont->flags & FONT_2HZ_FLASH) -800211e0: 30420010 andi v0,v0,0x10 -800211e4: 1040ffef beqz v0,800211a4 -800211e8: 3c168007 lui s6,0x8007 - { - if(Gfx2HzFlash() == false) -800211ec: 0c0090c4 jal 80024310 -800211f0: 00000000 nop -800211f4: 1000ffe9 b 8002119c -800211f8: 00000000 nop - str, - ap ); - - for(i = 0; i < result ; i++) - { - char _ch = _internal_text[i]; -800211fc: 80630000 lb v1,0(v1) -80021200: 00000000 nop - - if(_ch == '\0') -80021204: 10600062 beqz v1,80021390 -80021208: 00000000 nop - { - // End of string - break; - } - - switch(_ch) -8002120c: 1062000f beq v1,v0,8002124c -80021210: 00000000 nop -80021214: 14660013 bne v1,a2,80021264 -80021218: 00000000 nop - { - case ' ': - x += ptrFont->char_w; -8002121c: 9603002c lhu v1,44(s0) -80021220: 00000000 nop -80021224: 02639821 addu s3,s3,v1 -80021228: 00139c00 sll s3,s3,0x10 -8002122c: 00139c03 sra s3,s3,0x10 - result = vsnprintf( _internal_text, - FONT_INTERNAL_TEXT_BUFFER_MAX_SIZE, - str, - ap ); - - for(i = 0; i < result ; i++) -80021230: 26940001 addiu s4,s4,1 -80021234: 3294ffff andi s4,s4,0xffff -80021238: 029e182a slt v1,s4,s8 -8002123c: 1460ffef bnez v1,800211fc -80021240: 02961821 addu v1,s4,s6 -80021244: 10000052 b 80021390 -80021248: 00000000 nop - case ' ': - x += ptrFont->char_w; - continue; - case '\n': - x = orig_x; - y += ptrFont->char_h; -8002124c: 9603002e lhu v1,46(s0) - { - case ' ': - x += ptrFont->char_w; - continue; - case '\n': - x = orig_x; -80021250: 02409821 move s3,s2 - y += ptrFont->char_h; -80021254: 02238821 addu s1,s1,v1 -80021258: 00118c00 sll s1,s1,0x10 - break; -8002125c: 1000fff4 b 80021230 -80021260: 00118c03 sra s1,s1,0x10 - default: - if( (ptrFont->flags & FONT_WRAP_LINE) && (ptrFont->max_ch_wrap != 0) ) -80021264: 8e050034 lw a1,52(s0) -80021268: 00000000 nop -8002126c: 30a40002 andi a0,a1,0x2 -80021270: 10800010 beqz a0,800212b4 -80021274: 00000000 nop -80021278: 92040032 lbu a0,50(s0) -8002127c: 00000000 nop -80021280: 1080000c beqz a0,800212b4 -80021284: 00000000 nop - { - if(++line_count >= ptrFont->max_ch_wrap) -80021288: 26b50001 addiu s5,s5,1 -8002128c: 32b5ffff andi s5,s5,0xffff -80021290: 02a4202b sltu a0,s5,a0 -80021294: 14800007 bnez a0,800212b4 -80021298: 00000000 nop - { - line_count = 0; - x = orig_x; - y += ptrFont->char_h; -8002129c: 9604002e lhu a0,46(s0) - if( (ptrFont->flags & FONT_WRAP_LINE) && (ptrFont->max_ch_wrap != 0) ) - { - if(++line_count >= ptrFont->max_ch_wrap) - { - line_count = 0; - x = orig_x; -800212a0: 02409821 move s3,s2 - y += ptrFont->char_h; -800212a4: 02248821 addu s1,s1,a0 -800212a8: 00118c00 sll s1,s1,0x10 -800212ac: 00118c03 sra s1,s1,0x10 - default: - if( (ptrFont->flags & FONT_WRAP_LINE) && (ptrFont->max_ch_wrap != 0) ) - { - if(++line_count >= ptrFont->max_ch_wrap) - { - line_count = 0; -800212b0: 0000a821 move s5,zero - - ptrFont->spr.x = x; - ptrFont->spr.y = y; - ptrFont->spr.w = ptrFont->char_w; - ptrFont->spr.h = ptrFont->char_h; - ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w; -800212b4: 82040030 lb a0,48(s0) - } - } - - ptrFont->spr.x = x; - ptrFont->spr.y = y; - ptrFont->spr.w = ptrFont->char_w; -800212b8: 8608002c lh t0,44(s0) - ptrFont->spr.h = ptrFont->char_h; - ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w; -800212bc: 00641823 subu v1,v1,a0 -800212c0: 92040031 lbu a0,49(s0) - } - - ptrFont->spr.x = x; - ptrFont->spr.y = y; - ptrFont->spr.w = ptrFont->char_w; - ptrFont->spr.h = ptrFont->char_h; -800212c4: 8607002e lh a3,46(s0) - ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w; - ptrFont->spr.u += ptrFont->spr_u; // Add original offset for image -800212c8: 14800002 bnez a0,800212d4 -800212cc: 0064001a div zero,v1,a0 -800212d0: 0007000d break 0x7 - } - } - - ptrFont->spr.x = x; - ptrFont->spr.y = y; - ptrFont->spr.w = ptrFont->char_w; -800212d4: a6080006 sh t0,6(s0) - ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w; - ptrFont->spr.u += ptrFont->spr_u; // Add original offset for image - ptrFont->spr.v = (short)( (_ch - ptrFont->init_ch) / ptrFont->char_per_row) * ptrFont->char_h; - ptrFont->spr.v += ptrFont->spr_v; // Add original offset for image - - if(ptrFont->flags & FONT_BLEND_EFFECT) -800212d8: 30a50004 andi a1,a1,0x4 - x = orig_x; - y += ptrFont->char_h; - } - } - - ptrFont->spr.x = x; -800212dc: a6130000 sh s3,0(s0) - ptrFont->spr.y = y; -800212e0: a6110002 sh s1,2(s0) - ptrFont->spr.w = ptrFont->char_w; - ptrFont->spr.h = ptrFont->char_h; -800212e4: a6070008 sh a3,8(s0) - ptrFont->spr.u = (short)( (_ch - ptrFont->init_ch) % ptrFont->char_per_row) * ptrFont->char_w; - ptrFont->spr.u += ptrFont->spr_u; // Add original offset for image -800212e8: 00002010 mfhi a0 -800212ec: 00001812 mflo v1 - ... -800212f8: 00880018 mult a0,t0 -800212fc: 9208003c lbu t0,60(s0) -80021300: 00002012 mflo a0 -80021304: 00882021 addu a0,a0,t0 -80021308: a2040004 sb a0,4(s0) - ptrFont->spr.v = (short)( (_ch - ptrFont->init_ch) / ptrFont->char_per_row) * ptrFont->char_h; - ptrFont->spr.v += ptrFont->spr_v; // Add original offset for image -8002130c: 00670018 mult v1,a3 -80021310: 9204003e lbu a0,62(s0) -80021314: 00001812 mflo v1 -80021318: 00641821 addu v1,v1,a0 - - if(ptrFont->flags & FONT_BLEND_EFFECT) -8002131c: 10a0000e beqz a1,80021358 -80021320: a2030005 sb v1,5(s0) - { - ptrFont->spr.r += 8; -80021324: 9203000e lbu v1,14(s0) -80021328: 00000000 nop -8002132c: 24630008 addiu v1,v1,8 -80021330: a203000e sb v1,14(s0) - ptrFont->spr.g += 8; -80021334: 9203000f lbu v1,15(s0) -80021338: 00000000 nop -8002133c: 24630008 addiu v1,v1,8 -80021340: a203000f sb v1,15(s0) - ptrFont->spr.b += 8; -80021344: 92030010 lbu v1,16(s0) -80021348: 00000000 nop -8002134c: 24630008 addiu v1,v1,8 -80021350: 10000004 b 80021364 -80021354: a2030010 sb v1,16(s0) - } - else - { - ptrFont->spr.r = NORMAL_LUMINANCE; -80021358: a217000e sb s7,14(s0) - ptrFont->spr.g = NORMAL_LUMINANCE; -8002135c: a217000f sb s7,15(s0) - ptrFont->spr.b = NORMAL_LUMINANCE; -80021360: a2170010 sb s7,16(s0) - ptrFont->init_ch); - dprintf("Char: %c, spr.u = %d, spr.v = %d\n",str[i],ptrFont->spr.u, ptrFont->spr.v); - dprintf("Sprite CX = %d, sprite CY = %d\n",ptrFont->spr.cx, ptrFont->spr.cy);*/ - //dprintf("Sprite rgb={%d,%d,%d}\n",ptrFont->spr.r, ptrFont->spr.g, ptrFont->spr.b); - - GfxSortSprite(&ptrFont->spr); -80021364: 02002021 move a0,s0 -80021368: afa6001c sw a2,28(sp) -8002136c: 0c0090d2 jal 80024348 -80021370: afa20018 sw v0,24(sp) - x += ptrFont->char_w; -80021374: 9603002c lhu v1,44(s0) -80021378: 8fa6001c lw a2,28(sp) -8002137c: 02639821 addu s3,s3,v1 -80021380: 00139c00 sll s3,s3,0x10 -80021384: 8fa20018 lw v0,24(sp) - break; -80021388: 1000ffa9 b 80021230 -8002138c: 00139c03 sra s3,s3,0x10 - } - } - - va_end(ap); -} -80021390: 8fbf0044 lw ra,68(sp) -80021394: 8fbe0040 lw s8,64(sp) -80021398: 8fb7003c lw s7,60(sp) -8002139c: 8fb60038 lw s6,56(sp) -800213a0: 8fb50034 lw s5,52(sp) -800213a4: 8fb40030 lw s4,48(sp) -800213a8: 8fb3002c lw s3,44(sp) -800213ac: 8fb20028 lw s2,40(sp) -800213b0: 8fb10024 lw s1,36(sp) -800213b4: 8fb00020 lw s0,32(sp) -800213b8: 03e00008 jr ra -800213bc: 27bd0048 addiu sp,sp,72 - -800213c0 : - -uint16_t GameGetTileFromIsoPosition(TYPE_ISOMETRIC_POS * IsoPos) -{ - uint16_t tile; - - if( (IsoPos->x < 0) || (IsoPos->y < 0) ) -800213c0: 84830000 lh v1,0(a0) -800213c4: 00000000 nop -800213c8: 0460000d bltz v1,80021400 -800213cc: 3402ffff li v0,0xffff -800213d0: 84840002 lh a0,2(a0) -800213d4: 00000000 nop -800213d8: 04800009 bltz a0,80021400 -800213dc: 00042183 sra a0,a0,0x6 - { - return GAME_INVALID_TILE_SELECTION; // Invalid XYZ position - } - - tile = IsoPos->x >> TILE_SIZE_BIT_SHIFT; - tile += (IsoPos->y >> TILE_SIZE_BIT_SHIFT) * GameLevelColumns; -800213e0: 3c028007 lui v0,0x8007 -800213e4: 90421c12 lbu v0,7186(v0) -800213e8: 00000000 nop -800213ec: 00820018 mult a0,v0 - if( (IsoPos->x < 0) || (IsoPos->y < 0) ) - { - return GAME_INVALID_TILE_SELECTION; // Invalid XYZ position - } - - tile = IsoPos->x >> TILE_SIZE_BIT_SHIFT; -800213f0: 00031983 sra v1,v1,0x6 - tile += (IsoPos->y >> TILE_SIZE_BIT_SHIFT) * GameLevelColumns; -800213f4: 00002012 mflo a0 -800213f8: 00641021 addu v0,v1,a0 -800213fc: 3042ffff andi v0,v0,0xffff - IsoPos->x, - IsoPos->y, - IsoPos->z );*/ - - return tile; -} -80021400: 03e00008 jr ra -80021404: 00000000 nop - -80021408 : - } - } -} - -void GameGetSelectedRunwayArray(uint16_t rwyHeader) -{ -80021408: 27bdffd8 addiu sp,sp,-40 -8002140c: afb00010 sw s0,16(sp) -80021410: 3c108004 lui s0,0x8004 -80021414: afb40020 sw s4,32(sp) -80021418: afb20018 sw s2,24(sp) -8002141c: afb10014 sw s1,20(sp) -80021420: afbf0024 sw ra,36(sp) -80021424: afb3001c sw s3,28(sp) -80021428: 3c128004 lui s2,0x8004 -8002142c: 3c118007 lui s1,0x8007 -80021430: 3c148007 lui s4,0x8007 - - static uint16_t last_tile = 0; - static uint8_t i = 0; - static RWY_DIR dir; - - if(rwyHeader != 0) -80021434: 1080002a beqz a0,800214e0 -80021438: 26103324 addiu s0,s0,13092 -8002143c: 00809821 move s3,a0 - { - // This function is called recursively. - // Since 0 is not a valid value (it's not allowed to place - // a runway header on first tile), it is used to determine - // when to start creating the array. - memset(GameRwyArray, 0, GAME_MAX_RWY_LENGTH * sizeof(uint16_t)); -80021440: 24060020 li a2,32 -80021444: 00002821 move a1,zero -80021448: 26443744 addiu a0,s2,14148 -8002144c: 0c00d7ab jal 80035eac -80021450: 02138021 addu s0,s0,s3 - last_tile = rwyHeader; - i = 0; - - switch(GameLevelBuffer[rwyHeader]) -80021454: 92020000 lbu v0,0(s0) -80021458: 2403000a li v1,10 - // This function is called recursively. - // Since 0 is not a valid value (it's not allowed to place - // a runway header on first tile), it is used to determine - // when to start creating the array. - memset(GameRwyArray, 0, GAME_MAX_RWY_LENGTH * sizeof(uint16_t)); - last_tile = rwyHeader; -8002145c: a6331c0a sh s3,7178(s1) - i = 0; - - switch(GameLevelBuffer[rwyHeader]) -80021460: 10430010 beq v0,v1,800214a4 -80021464: a2801c08 sb zero,7176(s4) -80021468: 2c43000b sltiu v1,v0,11 -8002146c: 10600006 beqz v1,80021488 -80021470: 24030001 li v1,1 -80021474: 24030009 li v1,9 -80021478: 1443000e bne v0,v1,800214b4 -8002147c: 3c028007 lui v0,0x8007 - { - case TILE_RWY_START_1: - dir = RWY_DIR_EAST; - break; -80021480: 10000030 b 80021544 -80021484: ac401c04 sw zero,7172(v0) - // when to start creating the array. - memset(GameRwyArray, 0, GAME_MAX_RWY_LENGTH * sizeof(uint16_t)); - last_tile = rwyHeader; - i = 0; - - switch(GameLevelBuffer[rwyHeader]) -80021488: 2442ff77 addiu v0,v0,-137 -8002148c: 0062102b sltu v0,v1,v0 -80021490: 14400008 bnez v0,800214b4 -80021494: 24030002 li v1,2 - dir = RWY_DIR_WEST; - break; - case TILE_RWY_START_1 | TILE_MIRROR_FLAG: - dir = RWY_DIR_SOUTH; - case TILE_RWY_START_2 | TILE_MIRROR_FLAG: - dir = RWY_DIR_NORTH; -80021498: 3c028007 lui v0,0x8007 -8002149c: 10000005 b 800214b4 -800214a0: ac431c04 sw v1,7172(v0) - { - case TILE_RWY_START_1: - dir = RWY_DIR_EAST; - break; - case TILE_RWY_START_2: - dir = RWY_DIR_WEST; -800214a4: 24030001 li v1,1 -800214a8: 3c028007 lui v0,0x8007 - break; -800214ac: 10000025 b 80021544 -800214b0: ac431c04 sw v1,7172(v0) - case RWY_DIR_SOUTH: - last_tile += GameLevelColumns; - } - - GameGetSelectedRunwayArray(0); -} -800214b4: 8fbf0024 lw ra,36(sp) -800214b8: 8fb40020 lw s4,32(sp) -800214bc: 8fb20018 lw s2,24(sp) -800214c0: 8fb10014 lw s1,20(sp) -800214c4: 8fb00010 lw s0,16(sp) - case TILE_RWY_START_1 | TILE_MIRROR_FLAG: - dir = RWY_DIR_SOUTH; - case TILE_RWY_START_2 | TILE_MIRROR_FLAG: - dir = RWY_DIR_NORTH; - default: - dprintf("Unknown direction for tile %d\n",rwyHeader); -800214c8: 02602821 move a1,s3 -800214cc: 3c048004 lui a0,0x8004 - case RWY_DIR_SOUTH: - last_tile += GameLevelColumns; - } - - GameGetSelectedRunwayArray(0); -} -800214d0: 8fb3001c lw s3,28(sp) - case TILE_RWY_START_1 | TILE_MIRROR_FLAG: - dir = RWY_DIR_SOUTH; - case TILE_RWY_START_2 | TILE_MIRROR_FLAG: - dir = RWY_DIR_NORTH; - default: - dprintf("Unknown direction for tile %d\n",rwyHeader); -800214d4: 2484023c addiu a0,a0,572 -800214d8: 0800ed8f j 8003b63c -800214dc: 27bd0028 addiu sp,sp,40 - break; - } - } - else - { - if( (GameLevelBuffer[last_tile] == TILE_RWY_START_1) -800214e0: 96231c0a lhu v1,7178(s1) -800214e4: 00000000 nop -800214e8: 02038021 addu s0,s0,v1 -800214ec: 92020000 lbu v0,0(s0) -800214f0: 00000000 nop -800214f4: 3042007f andi v0,v0,0x7f -800214f8: 2442fff7 addiu v0,v0,-9 -800214fc: 2c420002 sltiu v0,v0,2 -80021500: 10400010 beqz v0,80021544 -80021504: 00000000 nop - (GameLevelBuffer[last_tile] == (TILE_RWY_START_1 | TILE_MIRROR_FLAG) ) - || - (GameLevelBuffer[last_tile] == (TILE_RWY_START_2 | TILE_MIRROR_FLAG) ) ) - { - // Runway end found - GameRwyArray[i++] = last_tile; -80021508: 92821c08 lbu v0,7176(s4) -8002150c: 26523744 addiu s2,s2,14148 -80021510: 24440001 addiu a0,v0,1 - case RWY_DIR_SOUTH: - last_tile += GameLevelColumns; - } - - GameGetSelectedRunwayArray(0); -} -80021514: 8fbf0024 lw ra,36(sp) - (GameLevelBuffer[last_tile] == (TILE_RWY_START_1 | TILE_MIRROR_FLAG) ) - || - (GameLevelBuffer[last_tile] == (TILE_RWY_START_2 | TILE_MIRROR_FLAG) ) ) - { - // Runway end found - GameRwyArray[i++] = last_tile; -80021518: 00021040 sll v0,v0,0x1 -8002151c: 00521021 addu v0,v0,s2 - case RWY_DIR_SOUTH: - last_tile += GameLevelColumns; - } - - GameGetSelectedRunwayArray(0); -} -80021520: 8fb3001c lw s3,28(sp) -80021524: 8fb20018 lw s2,24(sp) -80021528: 8fb10014 lw s1,20(sp) -8002152c: 8fb00010 lw s0,16(sp) - (GameLevelBuffer[last_tile] == (TILE_RWY_START_1 | TILE_MIRROR_FLAG) ) - || - (GameLevelBuffer[last_tile] == (TILE_RWY_START_2 | TILE_MIRROR_FLAG) ) ) - { - // Runway end found - GameRwyArray[i++] = last_tile; -80021530: a2841c08 sb a0,7176(s4) -80021534: a4430000 sh v1,0(v0) - case RWY_DIR_SOUTH: - last_tile += GameLevelColumns; - } - - GameGetSelectedRunwayArray(0); -} -80021538: 8fb40020 lw s4,32(sp) -8002153c: 03e00008 jr ra -80021540: 27bd0028 addiu sp,sp,40 - GameRwyArray[i++] = last_tile; - return; - } - } - - GameRwyArray[i++] = last_tile; -80021544: 92831c08 lbu v1,7176(s4) -80021548: 26523744 addiu s2,s2,14148 -8002154c: 24620001 addiu v0,v1,1 -80021550: a2821c08 sb v0,7176(s4) -80021554: 00031840 sll v1,v1,0x1 -80021558: 96221c0a lhu v0,7178(s1) -8002155c: 00721821 addu v1,v1,s2 -80021560: a4620000 sh v0,0(v1) - - switch(dir) -80021564: 3c038007 lui v1,0x8007 -80021568: 8c631c04 lw v1,7172(v1) -8002156c: 24050001 li a1,1 -80021570: 1065000c beq v1,a1,800215a4 -80021574: 3c048007 lui a0,0x8007 -80021578: 10600008 beqz v1,8002159c -8002157c: 24420001 addiu v0,v0,1 -80021580: 24020002 li v0,2 -80021584: 10620009 beq v1,v0,800215ac -80021588: 24020003 li v0,3 -8002158c: 1062000e beq v1,v0,800215c8 -80021590: 3c028007 lui v0,0x8007 -80021594: 10000011 b 800215dc -80021598: 00000000 nop - { - case RWY_DIR_EAST: - last_tile++; - break; -8002159c: 1000000f b 800215dc -800215a0: a4821c0a sh v0,7178(a0) - case RWY_DIR_WEST: - last_tile--; -800215a4: 2442ffff addiu v0,v0,-1 -800215a8: a4821c0a sh v0,7178(a0) - case RWY_DIR_NORTH: - last_tile -= GameLevelColumns; -800215ac: 3c028007 lui v0,0x8007 -800215b0: 90431c12 lbu v1,7186(v0) -800215b4: 96221c0a lhu v0,7178(s1) -800215b8: 00000000 nop -800215bc: 00431023 subu v0,v0,v1 -800215c0: a6221c0a sh v0,7178(s1) - case RWY_DIR_SOUTH: - last_tile += GameLevelColumns; -800215c4: 3c028007 lui v0,0x8007 -800215c8: 96231c0a lhu v1,7178(s1) -800215cc: 90421c12 lbu v0,7186(v0) -800215d0: 00000000 nop -800215d4: 00431021 addu v0,v0,v1 -800215d8: a6221c0a sh v0,7178(s1) - } - - GameGetSelectedRunwayArray(0); -} -800215dc: 8fbf0024 lw ra,36(sp) -800215e0: 8fb40020 lw s4,32(sp) -800215e4: 8fb3001c lw s3,28(sp) -800215e8: 8fb20018 lw s2,24(sp) -800215ec: 8fb10014 lw s1,20(sp) -800215f0: 8fb00010 lw s0,16(sp) - last_tile -= GameLevelColumns; - case RWY_DIR_SOUTH: - last_tile += GameLevelColumns; - } - - GameGetSelectedRunwayArray(0); -800215f4: 00002021 move a0,zero -800215f8: 08008502 j 80021408 -800215fc: 27bd0028 addiu sp,sp,40 - -80021600 : -void GamePlayerAddWaypoint_Ex(TYPE_PLAYER * ptrPlayer, uint16_t tile) -{ - // "_Ex" function allow selecting a certain tile, whereas the other one - // is a particulare case of "_Ex" for tile = ptrPlayer->SelectedTIle. - - if(ptrPlayer->WaypointIdx >= PLAYER_MAX_WAYPOINTS) -80021600: 90820074 lbu v0,116(a0) -80021604: 00000000 nop -80021608: 2c430020 sltiu v1,v0,32 -8002160c: 14600004 bnez v1,80021620 -80021610: 24430001 addiu v1,v0,1 - { - dprintf("No available waypoints for this player!\n"); -80021614: 3c048004 lui a0,0x8004 -80021618: 0800ed8f j 8003b63c -8002161c: 2484025c addiu a0,a0,604 - - /*dprintf("Added tile %d to ptrPlayer->Waypoints[%d]\n", - tile, - ptrPlayer->WaypointIdx);*/ - - ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile; -80021620: 24420018 addiu v0,v0,24 -80021624: 00021040 sll v0,v0,0x1 -80021628: 00821021 addu v0,a0,v0 -8002162c: a0830074 sb v1,116(a0) -80021630: 03e00008 jr ra -80021634: a4450004 sh a1,4(v0) - -80021638 : - - return true; -} - -void GameSelectAircraft(TYPE_PLAYER * ptrPlayer) -{ -80021638: 27bdffe0 addiu sp,sp,-32 -8002163c: afbf001c sw ra,28(sp) -80021640: afb00018 sw s0,24(sp) - TYPE_ISOMETRIC_POS IsoPos = AircraftGetIsoPos(ptrPlayer->SelectedAircraft); -80021644: 9085002e lbu a1,46(a0) - - return true; -} - -void GameSelectAircraft(TYPE_PLAYER * ptrPlayer) -{ -80021648: 00808021 move s0,a0 - TYPE_ISOMETRIC_POS IsoPos = AircraftGetIsoPos(ptrPlayer->SelectedAircraft); -8002164c: 0c008227 jal 8002089c -80021650: 27a40010 addiu a0,sp,16 - - CameraMoveToIsoPos(ptrPlayer, IsoPos); -80021654: 8fa50010 lw a1,16(sp) -80021658: 8fa60014 lw a2,20(sp) -8002165c: 0c00832b jal 80020cac -80021660: 02002021 move a0,s0 - - ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos); -80021664: 0c0084f0 jal 800213c0 -80021668: 27a40010 addiu a0,sp,16 -8002166c: a6020032 sh v0,50(s0) - return GameLevelColumns; -} - -void GamePlayerAddWaypoint(TYPE_PLAYER * ptrPlayer) -{ - GamePlayerAddWaypoint_Ex(ptrPlayer, ptrPlayer->SelectedTile); -80021670: 02002021 move a0,s0 -80021674: 0c008580 jal 80021600 -80021678: 00402821 move a1,v0 - CameraMoveToIsoPos(ptrPlayer, IsoPos); - - ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos); - - GamePlayerAddWaypoint(ptrPlayer); -} -8002167c: 8fbf001c lw ra,28(sp) -80021680: 8fb00018 lw s0,24(sp) -80021684: 03e00008 jr ra -80021688: 27bd0020 addiu sp,sp,32 - -8002168c : - - ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile; -} - -bool GamePathToTile(TYPE_PLAYER * ptrPlayer) -{ -8002168c: 27bdffc0 addiu sp,sp,-64 - // Given an input TYPE_PLAYER structure and a selected tile, - // it updates current Waypoints array with all tiles between two points. - // If one of these tiles do not belong to desired tiles (i.e.: grass, - // water, buildings...), then false is returned. - - uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS, -80021690: 3c058004 lui a1,0x8004 -80021694: 2406000b li a2,11 - - ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile; -} - -bool GamePathToTile(TYPE_PLAYER * ptrPlayer) -{ -80021698: afb10024 sw s1,36(sp) - // Given an input TYPE_PLAYER structure and a selected tile, - // it updates current Waypoints array with all tiles between two points. - // If one of these tiles do not belong to desired tiles (i.e.: grass, - // water, buildings...), then false is returned. - - uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS, -8002169c: 24a5f784 addiu a1,a1,-2172 - - ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile; -} - -bool GamePathToTile(TYPE_PLAYER * ptrPlayer) -{ -800216a0: 00808821 move s1,a0 - // Given an input TYPE_PLAYER structure and a selected tile, - // it updates current Waypoints array with all tiles between two points. - // If one of these tiles do not belong to desired tiles (i.e.: grass, - // water, buildings...), then false is returned. - - uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS, -800216a4: 27a40010 addiu a0,sp,16 - - ptrPlayer->Waypoints[ptrPlayer->WaypointIdx++] = tile; -} - -bool GamePathToTile(TYPE_PLAYER * ptrPlayer) -{ -800216a8: afbf003c sw ra,60(sp) -800216ac: afb60038 sw s6,56(sp) -800216b0: afb50034 sw s5,52(sp) -800216b4: afb40030 sw s4,48(sp) -800216b8: afb3002c sw s3,44(sp) -800216bc: afb20028 sw s2,40(sp) - // Given an input TYPE_PLAYER structure and a selected tile, - // it updates current Waypoints array with all tiles between two points. - // If one of these tiles do not belong to desired tiles (i.e.: grass, - // water, buildings...), then false is returned. - - uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS, -800216c0: 0c00d75e jal 80035d78 -800216c4: afb00020 sw s0,32(sp) - - uint16_t x_diff; - uint16_t y_diff; - uint16_t temp_tile; - - if(ptrPlayer->SelectedTile == GAME_INVALID_TILE_SELECTION) -800216c8: 96240032 lhu a0,50(s1) -800216cc: 3402ffff li v0,0xffff -800216d0: 10820105 beq a0,v0,80021ae8 -800216d4: 00001021 move v0,zero - { - return false; - } - - for(i = (ptrPlayer->LastWaypointIdx + 1); i < PLAYER_MAX_WAYPOINTS; i++) -800216d8: 92220075 lbu v0,117(s1) -800216dc: 00000000 nop -800216e0: 24460001 addiu a2,v0,1 -800216e4: 30c600ff andi a2,a2,0xff -800216e8: 00c01821 move v1,a2 -800216ec: 2c650020 sltiu a1,v1,32 -800216f0: 10a00007 beqz a1,80021710 -800216f4: 24650018 addiu a1,v1,24 - { - ptrPlayer->Waypoints[i] = 0; -800216f8: 00052840 sll a1,a1,0x1 -800216fc: 02252821 addu a1,s1,a1 - if(ptrPlayer->SelectedTile == GAME_INVALID_TILE_SELECTION) - { - return false; - } - - for(i = (ptrPlayer->LastWaypointIdx + 1); i < PLAYER_MAX_WAYPOINTS; i++) -80021700: 24630001 addiu v1,v1,1 - { - ptrPlayer->Waypoints[i] = 0; -80021704: a4a00004 sh zero,4(a1) - if(ptrPlayer->SelectedTile == GAME_INVALID_TILE_SELECTION) - { - return false; - } - - for(i = (ptrPlayer->LastWaypointIdx + 1); i < PLAYER_MAX_WAYPOINTS; i++) -80021708: 1000fff8 b 800216ec -8002170c: 306300ff andi v1,v1,0xff - ptrPlayer->Waypoints[i] = 0; - } - - ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1; - - x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) - -80021710: 3c158007 lui s5,0x8007 -80021714: 92a31c12 lbu v1,7186(s5) - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ); -80021718: 24420018 addiu v0,v0,24 - ptrPlayer->Waypoints[i] = 0; - } - - ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1; - - x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) - -8002171c: 14600002 bnez v1,80021728 -80021720: 0083001a div zero,a0,v1 -80021724: 0007000d break 0x7 - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ); -80021728: 00021040 sll v0,v0,0x1 - for(i = (ptrPlayer->LastWaypointIdx + 1); i < PLAYER_MAX_WAYPOINTS; i++) - { - ptrPlayer->Waypoints[i] = 0; - } - - ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1; -8002172c: a2260074 sb a2,116(s1) - - x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) - - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ); -80021730: 02221021 addu v0,s1,v0 - ptrPlayer->Waypoints[i] = 0; - } - - ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1; - - x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) - -80021734: 94420004 lhu v0,4(v0) -80021738: 26340034 addiu s4,s1,52 -8002173c: 00002010 mfhi a0 - ... -80021748: 14600002 bnez v1,80021754 -8002174c: 0043001a div zero,v0,v1 -80021750: 0007000d break 0x7 -80021754: 00001010 mfhi v0 -80021758: 0c00d588 jal 80035620 -8002175c: 00822023 subu a0,a0,v0 - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ); - - y_diff = (uint16_t)abs( (ptrPlayer->SelectedTile / GameLevelColumns) - -80021760: 92a31c12 lbu v1,7186(s5) -80021764: 96240032 lhu a0,50(s1) - ptrPlayer->Waypoints[i] = 0; - } - - ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1; - - x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) - -80021768: 3052ffff andi s2,v0,0xffff - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ); - - y_diff = (uint16_t)abs( (ptrPlayer->SelectedTile / GameLevelColumns) - -8002176c: 14600002 bnez v1,80021778 -80021770: 0083001a div zero,a0,v1 -80021774: 0007000d break 0x7 - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) ); -80021778: 92220075 lbu v0,117(s1) -8002177c: 00000000 nop -80021780: 24420018 addiu v0,v0,24 -80021784: 00021040 sll v0,v0,0x1 -80021788: 02221021 addu v0,s1,v0 - ptrPlayer->WaypointIdx = ptrPlayer->LastWaypointIdx + 1; - - x_diff = (uint16_t)abs( (ptrPlayer->SelectedTile % GameLevelColumns) - - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ); - - y_diff = (uint16_t)abs( (ptrPlayer->SelectedTile / GameLevelColumns) - -8002178c: 94420004 lhu v0,4(v0) -80021790: 00002012 mflo a0 - ... -8002179c: 14600002 bnez v1,800217a8 -800217a0: 0043001a div zero,v0,v1 -800217a4: 0007000d break 0x7 -800217a8: 00001812 mflo v1 -800217ac: 0c00d588 jal 80035620 -800217b0: 00832023 subu a0,a0,v1 -800217b4: 3053ffff andi s3,v0,0xffff - - // At this point, we have to update current waypoints list. - // ptrPlayer->Waypoints[ptrPlayer->WaypointIdx - 1] points to the last inserted point, - // so now we have to determine how many points need to be created. - - temp_tile = ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]; -800217b8: 92220075 lbu v0,117(s1) -800217bc: 00000000 nop -800217c0: 24420018 addiu v0,v0,24 -800217c4: 00021040 sll v0,v0,0x1 -800217c8: 02221021 addu v0,s1,v0 -800217cc: 94500004 lhu s0,4(v0) - - if(x_diff >= y_diff) -800217d0: 0253102b sltu v0,s2,s3 -800217d4: 1440004e bnez v0,80021910 -800217d8: 00000000 nop - { - while( (x_diff--) > 0) -800217dc: 12400046 beqz s2,800218f8 -800217e0: 00000000 nop - { - if( (ptrPlayer->SelectedTile % GameLevelColumns) > -800217e4: 92a31c12 lbu v1,7186(s5) -800217e8: 96240032 lhu a0,50(s1) - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ) -800217ec: 92220075 lbu v0,117(s1) - - if(x_diff >= y_diff) - { - while( (x_diff--) > 0) - { - if( (ptrPlayer->SelectedTile % GameLevelColumns) > -800217f0: 14600002 bnez v1,800217fc -800217f4: 0083001a div zero,a0,v1 -800217f8: 0007000d break 0x7 - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ) -800217fc: 24420018 addiu v0,v0,24 -80021800: 00021040 sll v0,v0,0x1 -80021804: 02221021 addu v0,s1,v0 - - if(x_diff >= y_diff) - { - while( (x_diff--) > 0) - { - if( (ptrPlayer->SelectedTile % GameLevelColumns) > -80021808: 94420004 lhu v0,4(v0) -8002180c: 00002010 mfhi a0 - ... -80021818: 14600002 bnez v1,80021824 -8002181c: 0043001a div zero,v0,v1 -80021820: 0007000d break 0x7 -80021824: 00001010 mfhi v0 -80021828: 0044182a slt v1,v0,a0 -8002182c: 10600003 beqz v1,8002183c -80021830: 00000000 nop - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ) - { - temp_tile++; -80021834: 10000002 b 80021840 -80021838: 26100001 addiu s0,s0,1 - } - else - { - temp_tile--; -8002183c: 2610ffff addiu s0,s0,-1 -80021840: 3210ffff andi s0,s0,0xffff - } - - if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false) -80021844: 24060020 li a2,32 -80021848: 02802821 move a1,s4 -8002184c: 0c00a067 jal 8002819c -80021850: 02002021 move a0,s0 -80021854: 14400003 bnez v0,80021864 -80021858: 02002821 move a1,s0 - { - GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile); -8002185c: 0c008580 jal 80021600 -80021860: 02202021 move a0,s1 -80021864: 2652ffff addiu s2,s2,-1 -80021868: 1000ffdc b 800217dc -8002186c: 3252ffff andi s2,s2,0xffff - } - } - - while( (y_diff--) > 0) - { - if( (ptrPlayer->SelectedTile / GameLevelColumns) > -80021870: 92a21c12 lbu v0,7186(s5) -80021874: 96230032 lhu v1,50(s1) -80021878: 00000000 nop -8002187c: 14400002 bnez v0,80021888 -80021880: 0062001a div zero,v1,v0 -80021884: 0007000d break 0x7 - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) ) -80021888: 92230075 lbu v1,117(s1) -8002188c: 00000000 nop -80021890: 24630018 addiu v1,v1,24 -80021894: 00031840 sll v1,v1,0x1 -80021898: 02231821 addu v1,s1,v1 - } - } - - while( (y_diff--) > 0) - { - if( (ptrPlayer->SelectedTile / GameLevelColumns) > -8002189c: 94630004 lhu v1,4(v1) -800218a0: 00002012 mflo a0 - ... -800218ac: 14400002 bnez v0,800218b8 -800218b0: 0062001a div zero,v1,v0 -800218b4: 0007000d break 0x7 -800218b8: 00001812 mflo v1 -800218bc: 0064182a slt v1,v1,a0 -800218c0: 10600011 beqz v1,80021908 -800218c4: 00000000 nop - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) ) - { - temp_tile += GameLevelColumns; -800218c8: 02028021 addu s0,s0,v0 - } - else - { - temp_tile -= GameLevelColumns; -800218cc: 3210ffff andi s0,s0,0xffff - } - - if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false) -800218d0: 24060020 li a2,32 -800218d4: 02802821 move a1,s4 -800218d8: 0c00a067 jal 8002819c -800218dc: 02002021 move a0,s0 -800218e0: 14400003 bnez v0,800218f0 -800218e4: 02002821 move a1,s0 - { - GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile); -800218e8: 0c008580 jal 80021600 -800218ec: 02202021 move a0,s1 -800218f0: 2673ffff addiu s3,s3,-1 -800218f4: 3273ffff andi s3,s3,0xffff - { - GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile); - } - } - - while( (y_diff--) > 0) -800218f8: 1660ffdd bnez s3,80021870 -800218fc: 3c128004 lui s2,0x8004 -80021900: 1000002b b 800219b0 -80021904: 26523324 addiu s2,s2,13092 - { - temp_tile += GameLevelColumns; - } - else - { - temp_tile -= GameLevelColumns; -80021908: 1000fff0 b 800218cc -8002190c: 02028023 subu s0,s0,v0 - } - else - { - while( (y_diff--) > 0) - { - if( (ptrPlayer->SelectedTile / GameLevelColumns) > -80021910: 92a21c12 lbu v0,7186(s5) -80021914: 96230032 lhu v1,50(s1) -80021918: 00000000 nop -8002191c: 14400002 bnez v0,80021928 -80021920: 0062001a div zero,v1,v0 -80021924: 0007000d break 0x7 - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) ) -80021928: 92230075 lbu v1,117(s1) -8002192c: 00000000 nop -80021930: 24630018 addiu v1,v1,24 -80021934: 00031840 sll v1,v1,0x1 -80021938: 02231821 addu v1,s1,v1 - } - else - { - while( (y_diff--) > 0) - { - if( (ptrPlayer->SelectedTile / GameLevelColumns) > -8002193c: 94630004 lhu v1,4(v1) -80021940: 00002012 mflo a0 - ... -8002194c: 14400002 bnez v0,80021958 -80021950: 0062001a div zero,v1,v0 -80021954: 0007000d break 0x7 -80021958: 00001812 mflo v1 -8002195c: 0064182a slt v1,v1,a0 -80021960: 10600018 beqz v1,800219c4 -80021964: 00000000 nop - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] / GameLevelColumns) ) - { - temp_tile += GameLevelColumns; -80021968: 02028021 addu s0,s0,v0 - } - else - { - temp_tile -= GameLevelColumns; -8002196c: 3210ffff andi s0,s0,0xffff - } - - if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false) -80021970: 24060020 li a2,32 -80021974: 02802821 move a1,s4 -80021978: 0c00a067 jal 8002819c -8002197c: 02002021 move a0,s0 -80021980: 14400003 bnez v0,80021990 -80021984: 02002821 move a1,s0 - { - GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile); -80021988: 0c008580 jal 80021600 -8002198c: 02202021 move a0,s1 -80021990: 2673ffff addiu s3,s3,-1 -80021994: 3273ffff andi s3,s3,0xffff - } - } - } - else - { - while( (y_diff--) > 0) -80021998: 1660ffdd bnez s3,80021910 -8002199c: 00000000 nop - { - GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile); - } - } - - while( (x_diff--) > 0) -800219a0: 1640000a bnez s2,800219cc -800219a4: 00000000 nop - { - // We have found empty waypoints. Exit loop - break; - } - - if(SystemContains_u8( GameLevelBuffer[ptrPlayer->Waypoints[i]], -800219a8: 3c128004 lui s2,0x8004 -800219ac: 26523324 addiu s2,s2,13092 -800219b0: 26310074 addiu s1,s1,116 -800219b4: 0240a821 move s5,s2 -800219b8: 27b3001b addiu s3,sp,27 - { - // Now try again with mirrored tiles, just in case! - - for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++) - { - AcceptedTiles[j] |= TILE_MIRROR_FLAG; -800219bc: 1000002f b 80021a7c -800219c0: 2416ff80 li s6,-128 - { - temp_tile += GameLevelColumns; - } - else - { - temp_tile -= GameLevelColumns; -800219c4: 1000ffe9 b 8002196c -800219c8: 02028023 subu s0,s0,v0 - } - } - - while( (x_diff--) > 0) - { - if( (ptrPlayer->SelectedTile % GameLevelColumns) > -800219cc: 92a31c12 lbu v1,7186(s5) -800219d0: 96240032 lhu a0,50(s1) - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ) -800219d4: 92220075 lbu v0,117(s1) - } - } - - while( (x_diff--) > 0) - { - if( (ptrPlayer->SelectedTile % GameLevelColumns) > -800219d8: 14600002 bnez v1,800219e4 -800219dc: 0083001a div zero,a0,v1 -800219e0: 0007000d break 0x7 - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ) -800219e4: 24420018 addiu v0,v0,24 -800219e8: 00021040 sll v0,v0,0x1 -800219ec: 02221021 addu v0,s1,v0 - } - } - - while( (x_diff--) > 0) - { - if( (ptrPlayer->SelectedTile % GameLevelColumns) > -800219f0: 94420004 lhu v0,4(v0) -800219f4: 00002010 mfhi a0 - ... -80021a00: 14600002 bnez v1,80021a0c -80021a04: 0043001a div zero,v0,v1 -80021a08: 0007000d break 0x7 -80021a0c: 00001010 mfhi v0 -80021a10: 0044182a slt v1,v0,a0 -80021a14: 10600003 beqz v1,80021a24 -80021a18: 00000000 nop - (ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx] % GameLevelColumns) ) - { - temp_tile++; -80021a1c: 10000002 b 80021a28 -80021a20: 26100001 addiu s0,s0,1 - } - else - { - temp_tile--; -80021a24: 2610ffff addiu s0,s0,-1 -80021a28: 3210ffff andi s0,s0,0xffff - } - - if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false) -80021a2c: 24060020 li a2,32 -80021a30: 02802821 move a1,s4 -80021a34: 0c00a067 jal 8002819c -80021a38: 02002021 move a0,s0 -80021a3c: 14400003 bnez v0,80021a4c -80021a40: 02002821 move a1,s0 - { - GamePlayerAddWaypoint_Ex(ptrPlayer, temp_tile); -80021a44: 0c008580 jal 80021600 -80021a48: 02202021 move a0,s1 -80021a4c: 2652ffff addiu s2,s2,-1 -80021a50: 1000ffd3 b 800219a0 -80021a54: 3252ffff andi s2,s2,0xffff - { - // We have found empty waypoints. Exit loop - break; - } - - if(SystemContains_u8( GameLevelBuffer[ptrPlayer->Waypoints[i]], -80021a58: 00521021 addu v0,v0,s2 -80021a5c: 90440000 lbu a0,0(v0) -80021a60: 0c00a05b jal 8002816c -80021a64: 27a50010 addiu a1,sp,16 -80021a68: 1040000a beqz v0,80021a94 -80021a6c: 27b00010 addiu s0,sp,16 -80021a70: 26940002 addiu s4,s4,2 - } - } - - // Now at this point, we have prepared our array. - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) -80021a74: 1291001c beq s4,s1,80021ae8 -80021a78: 24020001 li v0,1 - { - if(ptrPlayer->Waypoints[i] == 0) -80021a7c: 96820000 lhu v0,0(s4) -80021a80: 00000000 nop -80021a84: 1440fff4 bnez v0,80021a58 -80021a88: 2406000b li a2,11 - AcceptedTiles[j] &= ~(TILE_MIRROR_FLAG); - } - } - } - - return true; -80021a8c: 10000016 b 80021ae8 -80021a90: 24020001 li v0,1 - { - // We have found empty waypoints. Exit loop - break; - } - - if(SystemContains_u8( GameLevelBuffer[ptrPlayer->Waypoints[i]], -80021a94: 02001021 move v0,s0 - { - // Now try again with mirrored tiles, just in case! - - for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++) - { - AcceptedTiles[j] |= TILE_MIRROR_FLAG; -80021a98: 90430000 lbu v1,0(v0) -80021a9c: 24420001 addiu v0,v0,1 -80021aa0: 00761825 or v1,v1,s6 - AcceptedTiles, - sizeof(AcceptedTiles) ) == false) - { - // Now try again with mirrored tiles, just in case! - - for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++) -80021aa4: 1453fffc bne v0,s3,80021a98 -80021aa8: a043ffff sb v1,-1(v0) - { - AcceptedTiles[j] |= TILE_MIRROR_FLAG; - } - - if(SystemContains_u8( GameLevelBuffer[ptrPlayer->Waypoints[i]], -80021aac: 96820000 lhu v0,0(s4) -80021ab0: 2406000b li a2,11 -80021ab4: 02a21021 addu v0,s5,v0 -80021ab8: 90440000 lbu a0,0(v0) -80021abc: 0c00a05b jal 8002816c -80021ac0: 27a50010 addiu a1,sp,16 -80021ac4: 10400008 beqz v0,80021ae8 -80021ac8: 00001021 move v0,zero - - // Reverse mirror flag. - - for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++) - { - AcceptedTiles[j] &= ~(TILE_MIRROR_FLAG); -80021acc: 92020000 lbu v0,0(s0) -80021ad0: 26100001 addiu s0,s0,1 -80021ad4: 3042007f andi v0,v0,0x7f - return false; - } - - // Reverse mirror flag. - - for(j = 0; j < (sizeof(AcceptedTiles) * sizeof(uint8_t) ); j++) -80021ad8: 1613fffc bne s0,s3,80021acc -80021adc: a202ffff sb v0,-1(s0) -80021ae0: 1000ffe4 b 80021a74 -80021ae4: 26940002 addiu s4,s4,2 - } - } - } - - return true; -} -80021ae8: 8fbf003c lw ra,60(sp) -80021aec: 8fb60038 lw s6,56(sp) -80021af0: 8fb50034 lw s5,52(sp) -80021af4: 8fb40030 lw s4,48(sp) -80021af8: 8fb3002c lw s3,44(sp) -80021afc: 8fb20028 lw s2,40(sp) -80021b00: 8fb10024 lw s1,36(sp) -80021b04: 8fb00020 lw s0,32(sp) -80021b08: 03e00008 jr ra -80021b0c: 27bd0040 addiu sp,sp,64 - -80021b10 : -static uint8_t firstActiveAircraft; -//Index for last non-idle aircraft on list -static uint8_t lastActiveAircraft; - -void Game(bool two_players) -{ -80021b10: 27bdff28 addiu sp,sp,-216 -80021b14: afb100b4 sw s1,180(sp) - TwoPlayersActive = two_players; -80021b18: 3c118007 lui s1,0x8007 -80021b1c: a2241c0e sb a0,7182(s1) - uint8_t i; - uint32_t track; - - GameStartupFlag = true; - - LoadMenu( GameFileList, -80021b20: 3c058004 lui a1,0x8004 -80021b24: 3c048004 lui a0,0x8004 -void GameInit(void) -{ - uint8_t i; - uint32_t track; - - GameStartupFlag = true; -80021b28: 24020001 li v0,1 -static uint8_t firstActiveAircraft; -//Index for last non-idle aircraft on list -static uint8_t lastActiveAircraft; - -void Game(bool two_players) -{ -80021b2c: afb000b0 sw s0,176(sp) - uint8_t i; - uint32_t track; - - GameStartupFlag = true; - - LoadMenu( GameFileList, -80021b30: 24070006 li a3,6 -void GameInit(void) -{ - uint8_t i; - uint32_t track; - - GameStartupFlag = true; -80021b34: 3c108007 lui s0,0x8007 - - LoadMenu( GameFileList, -80021b38: 24060006 li a2,6 -80021b3c: 24a51418 addiu a1,a1,5144 -80021b40: 24841430 addiu a0,a0,5168 -static uint8_t firstActiveAircraft; -//Index for last non-idle aircraft on list -static uint8_t lastActiveAircraft; - -void Game(bool two_players) -{ -80021b44: afbf00d4 sw ra,212(sp) -void GameInit(void) -{ - uint8_t i; - uint32_t track; - - GameStartupFlag = true; -80021b48: a2021d24 sb v0,7460(s0) -static uint8_t firstActiveAircraft; -//Index for last non-idle aircraft on list -static uint8_t lastActiveAircraft; - -void Game(bool two_players) -{ -80021b4c: afbe00d0 sw s8,208(sp) -80021b50: afb700cc sw s7,204(sp) -80021b54: afb600c8 sw s6,200(sp) -80021b58: afb500c4 sw s5,196(sp) -80021b5c: afb400c0 sw s4,192(sp) -80021b60: afb300bc sw s3,188(sp) - uint8_t i; - uint32_t track; - - GameStartupFlag = true; - - LoadMenu( GameFileList, -80021b64: 0c0093c1 jal 80024f04 -80021b68: afb200b8 sw s2,184(sp) - /* TODO - Very important */ - // Map contents (that means, without header) should be copied to GameLevelBuffer - // Header treatment (magic number, map size, map title...) should be done - // using System's file buffer. - - if(SystemLoadFile(GameLevelList[0]) == false) -80021b6c: 3c048004 lui a0,0x8004 -80021b70: 0c00a022 jal 80028088 -80021b74: 24840288 addiu a0,a0,648 -80021b78: 10400046 beqz v0,80021c94 -80021b7c: afb00094 sw s0,148(sp) - { - return; - } - - ptrBuffer = SystemGetBufferAddress(); -80021b80: 0c00a027 jal 8002809c -80021b84: 00000000 nop -80021b88: 00408021 move s0,v0 - - //SystemLoadFileToBuffer(GameLevelList[0],GameLevelBuffer,GAME_MAX_MAP_SIZE); - - memset(LevelHeader,0, LEVEL_MAGIC_NUMBER_SIZE + 1); -80021b8c: 24060004 li a2,4 -80021b90: 00002821 move a1,zero -80021b94: 0c00d7ab jal 80035eac -80021b98: 27a40010 addiu a0,sp,16 - - memcpy(LevelHeader,ptrBuffer,LEVEL_MAGIC_NUMBER_SIZE); -80021b9c: 24060003 li a2,3 -80021ba0: 02002821 move a1,s0 -80021ba4: 0c00d75e jal 80035d78 -80021ba8: 27a40010 addiu a0,sp,16 - - LevelHeader[LEVEL_MAGIC_NUMBER_SIZE] = '\0'; - - dprintf("Level header: %s\n",LevelHeader); -80021bac: 3c048004 lui a0,0x8004 -80021bb0: 27a50010 addiu a1,sp,16 -80021bb4: 248402a8 addiu a0,a0,680 -80021bb8: 0c00ed8f jal 8003b63c -80021bbc: a3a00013 sb zero,19(sp) - - if(strncmp(LevelHeader,LEVEL_MAGIC_NUMBER_STRING,LEVEL_MAGIC_NUMBER_SIZE) != 0) -80021bc0: 3c058004 lui a1,0x8004 -80021bc4: 24060003 li a2,3 -80021bc8: 24a502bc addiu a1,a1,700 -80021bcc: 0c00d9dd jal 80036774 -80021bd0: 27a40010 addiu a0,sp,16 -80021bd4: 10400004 beqz v0,80021be8 -80021bd8: 3c048004 lui a0,0x8004 - { - dprintf("Invalid level header! Read \"%s\" instead of \"ATC\"\n",LevelHeader); -80021bdc: 27a50010 addiu a1,sp,16 -80021be0: 1000000f b 80021c20 -80021be4: 248402c0 addiu a0,a0,704 - return; - } - - i += LEVEL_MAGIC_NUMBER_SIZE; - - GameLevelColumns = ptrBuffer[i++]; -80021be8: 92050003 lbu a1,3(s0) - - dprintf("Level size: %d\n",GameLevelColumns); -80021bec: 3c048004 lui a0,0x8004 - return; - } - - i += LEVEL_MAGIC_NUMBER_SIZE; - - GameLevelColumns = ptrBuffer[i++]; -80021bf0: 3c128007 lui s2,0x8007 - - dprintf("Level size: %d\n",GameLevelColumns); -80021bf4: 248402f4 addiu a0,a0,756 -80021bf8: 0c00ed8f jal 8003b63c -80021bfc: a2451c12 sb a1,7186(s2) - - if( (GameLevelColumns < MIN_MAP_COLUMNS) - || -80021c00: 92451c12 lbu a1,7186(s2) -80021c04: 00000000 nop - - GameLevelColumns = ptrBuffer[i++]; - - dprintf("Level size: %d\n",GameLevelColumns); - - if( (GameLevelColumns < MIN_MAP_COLUMNS) -80021c08: 24a2fff8 addiu v0,a1,-8 -80021c0c: 2c420019 sltiu v0,v0,25 -80021c10: 14400007 bnez v0,80021c30 -80021c14: 00a50018 mult a1,a1 - || - (GameLevelColumns > MAX_MAP_COLUMNS) ) - { - dprintf("Invalid map size! Value: %d\n",GameLevelColumns); -80021c18: 3c048004 lui a0,0x8004 -80021c1c: 24840304 addiu a0,a0,772 -80021c20: 0c00ed8f jal 8003b63c -80021c24: 3c128004 lui s2,0x8004 -80021c28: 1000001b b 80021c98 -80021c2c: 00000000 nop - return; - } - - GameLevelSize = GameLevelColumns * GameLevelColumns; - - memset(GameLevelTitle,0,LEVEL_TITLE_SIZE); -80021c30: 3c128004 lui s2,0x8004 - { - dprintf("Invalid map size! Value: %d\n",GameLevelColumns); - return; - } - - GameLevelSize = GameLevelColumns * GameLevelColumns; -80021c34: 3c138007 lui s3,0x8007 - - memset(GameLevelTitle,0,LEVEL_TITLE_SIZE); -80021c38: 2644330c addiu a0,s2,13068 -80021c3c: 24060018 li a2,24 - { - dprintf("Invalid map size! Value: %d\n",GameLevelColumns); - return; - } - - GameLevelSize = GameLevelColumns * GameLevelColumns; -80021c40: 00002812 mflo a1 -80021c44: a2651c11 sb a1,7185(s3) - - memset(GameLevelTitle,0,LEVEL_TITLE_SIZE); -80021c48: 0c00d7ab jal 80035eac -80021c4c: 00002821 move a1,zero - - memcpy(GameLevelTitle,&ptrBuffer[i],LEVEL_TITLE_SIZE); -80021c50: 24060018 li a2,24 -80021c54: 2644330c addiu a0,s2,13068 -80021c58: 0c00d75e jal 80035d78 -80021c5c: 26050004 addiu a1,s0,4 - - dprintf("Game level title: %s\n",GameLevelTitle); -80021c60: 3c048004 lui a0,0x8004 -80021c64: 2645330c addiu a1,s2,13068 -80021c68: 24840324 addiu a0,a0,804 -80021c6c: 0c00ed8f jal 8003b63c -80021c70: 3c128004 lui s2,0x8004 - - i += LEVEL_TITLE_SIZE; - - memset(GameLevelBuffer,0,GAME_MAX_MAP_SIZE); -80021c74: 24060400 li a2,1024 -80021c78: 00002821 move a1,zero -80021c7c: 0c00d7ab jal 80035eac -80021c80: 26443324 addiu a0,s2,13092 - - i = LEVEL_HEADER_SIZE; - - memcpy(GameLevelBuffer,&ptrBuffer[i],GameLevelSize); -80021c84: 92661c11 lbu a2,7185(s3) -80021c88: 26050040 addiu a1,s0,64 -80021c8c: 0c00d75e jal 80035d78 -80021c90: 26443324 addiu a0,s2,13092 - - GameLoadLevel(); - - GameGuiInit(); - - memset(GameRwy,0,GAME_MAX_RUNWAYS * sizeof(uint16_t) ); -80021c94: 3c128004 lui s2,0x8004 - sizeof(GameFileList) / sizeof(char*), - sizeof(GameFileDest) /sizeof(void*) ); - - GameLoadLevel(); - - GameGuiInit(); -80021c98: 0c008c9e jal 80023278 -80021c9c: 3c108007 lui s0,0x8007 - - memset(GameRwy,0,GAME_MAX_RUNWAYS * sizeof(uint16_t) ); -80021ca0: 24060020 li a2,32 -80021ca4: 00002821 move a1,zero -80021ca8: 0c00d7ab jal 80035eac -80021cac: 26443a08 addiu a0,s2,14856 - - memset(GameUsedRwy,0,GAME_MAX_RUNWAYS * sizeof(uint16_t) ); -80021cb0: 3c048004 lui a0,0x8004 -80021cb4: 24060020 li a2,32 -80021cb8: 00002821 move a1,zero -80021cbc: 0c00d7ab jal 80035eac -80021cc0: 24843724 addiu a0,a0,14116 - - PlayerData[PLAYER_ONE].Active = true; -80021cc4: 24020001 li v0,1 -80021cc8: a2028e80 sb v0,-29056(s0) - PlayerData[PLAYER_ONE].PadKeyPressed_Callback = &PadOneKeyPressed; -80021ccc: 3c028002 lui v0,0x8002 -80021cd0: 26108e80 addiu s0,s0,-29056 -80021cd4: 24426b60 addiu v0,v0,27488 -80021cd8: ae020078 sw v0,120(s0) - PlayerData[PLAYER_ONE].PadKeyReleased_Callback = &PadOneKeyReleased; -80021cdc: 3c028002 lui v0,0x8002 -80021ce0: 24426780 addiu v0,v0,26496 -80021ce4: ae02007c sw v0,124(s0) - PlayerData[PLAYER_ONE].PadDirectionKeyPressed_Callback = &PadOneDirectionKeyPressed; -80021ce8: 3c028002 lui v0,0x8002 -80021cec: 24426a78 addiu v0,v0,27256 -80021cf0: ae020080 sw v0,128(s0) - PlayerData[PLAYER_ONE].FlightDataPage = 0; - - PlayerData[PLAYER_TWO].Active = TwoPlayersActive? true : false; -80021cf4: 92221c0e lbu v0,7182(s1) - - PlayerData[PLAYER_ONE].Active = true; - PlayerData[PLAYER_ONE].PadKeyPressed_Callback = &PadOneKeyPressed; - PlayerData[PLAYER_ONE].PadKeyReleased_Callback = &PadOneKeyReleased; - PlayerData[PLAYER_ONE].PadDirectionKeyPressed_Callback = &PadOneDirectionKeyPressed; - PlayerData[PLAYER_ONE].FlightDataPage = 0; -80021cf8: a200002d sb zero,45(s0) - - PlayerData[PLAYER_TWO].Active = TwoPlayersActive? true : false; - - if(PlayerData[PLAYER_TWO].Active == true) -80021cfc: 10400015 beqz v0,80021d54 -80021d00: a2020090 sb v0,144(s0) - { - PlayerData[PLAYER_TWO].PadKeyPressed_Callback = &PadTwoKeyPressed; -80021d04: 3c028002 lui v0,0x8002 -80021d08: 24426b78 addiu v0,v0,27512 -80021d0c: ae020108 sw v0,264(s0) - PlayerData[PLAYER_TWO].PadKeyReleased_Callback = &PadTwoKeyReleased; -80021d10: 3c028002 lui v0,0x8002 -80021d14: 244267b4 addiu v0,v0,26548 -80021d18: ae02010c sw v0,268(s0) - PlayerData[PLAYER_TWO].PadDirectionKeyPressed_Callback = &PadTwoDirectionKeyPressed; -80021d1c: 3c028002 lui v0,0x8002 -80021d20: 24426b38 addiu v0,v0,27448 -80021d24: ae020110 sw v0,272(s0) - PlayerData[PLAYER_TWO].FlightDataPage = 0; - - // On 2-player mode, one player controls departure flights and - // other player controls arrival flights. - PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE; -80021d28: 24020001 li v0,1 -80021d2c: ae020028 sw v0,40(s0) - PlayerData[PLAYER_TWO].FlightDirection = ARRIVAL; -80021d30: 24020002 li v0,2 - if(PlayerData[PLAYER_TWO].Active == true) - { - PlayerData[PLAYER_TWO].PadKeyPressed_Callback = &PadTwoKeyPressed; - PlayerData[PLAYER_TWO].PadKeyReleased_Callback = &PadTwoKeyReleased; - PlayerData[PLAYER_TWO].PadDirectionKeyPressed_Callback = &PadTwoDirectionKeyPressed; - PlayerData[PLAYER_TWO].FlightDataPage = 0; -80021d34: a20000bd sb zero,189(s0) - - // On 2-player mode, one player controls departure flights and - // other player controls arrival flights. - PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE; - PlayerData[PLAYER_TWO].FlightDirection = ARRIVAL; -80021d38: ae0200b8 sw v0,184(s0) -80021d3c: 3c028007 lui v0,0x8007 -80021d40: 24428fa0 addiu v0,v0,-28768 -80021d44: afb00074 sw s0,116(sp) -80021d48: afa20078 sw v0,120(sp) -static uint8_t firstActiveAircraft; -//Index for last non-idle aircraft on list -static uint8_t lastActiveAircraft; - -void Game(bool two_players) -{ -80021d4c: 10000004 b 80021d60 -80021d50: 02008821 move s1,s0 - PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE; - PlayerData[PLAYER_TWO].FlightDirection = ARRIVAL; - } - else - { - PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE | ARRIVAL; -80021d54: 24020003 li v0,3 -80021d58: 1000fff8 b 80021d3c -80021d5c: ae020028 sw v0,40(s0) - } - - for(i = 0; i < MAX_PLAYERS ; i++) - { - CameraInit(&PlayerData[i]); -80021d60: 0c008255 jal 80020954 -80021d64: 02202021 move a0,s1 - PlayerData[i].ShowAircraftData = false; -80021d68: a2200001 sb zero,1(s1) - PlayerData[i].SelectRunway = false; -80021d6c: a2200002 sb zero,2(s1) - PlayerData[i].SelectTaxiwayRunway = false; -80021d70: a2200003 sb zero,3(s1) - PlayerData[i].LockTarget = false; -80021d74: a2200006 sb zero,6(s1) - PlayerData[i].SelectedAircraft = 0; -80021d78: a220002e sb zero,46(s1) - PlayerData[i].FlightDataPage = 0; -80021d7c: a220002d sb zero,45(s1) - memset(&PlayerData[i].Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); -80021d80: 26240034 addiu a0,s1,52 -80021d84: 24060040 li a2,64 -80021d88: 0c00d7ab jal 80035eac -80021d8c: 00002821 move a1,zero - else - { - PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE | ARRIVAL; - } - - for(i = 0; i < MAX_PLAYERS ; i++) -80021d90: 8fa20078 lw v0,120(sp) - PlayerData[i].SelectTaxiwayRunway = false; - PlayerData[i].LockTarget = false; - PlayerData[i].SelectedAircraft = 0; - PlayerData[i].FlightDataPage = 0; - memset(&PlayerData[i].Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); - PlayerData[i].WaypointIdx = 0; -80021d94: a2200074 sb zero,116(s1) - PlayerData[i].LastWaypointIdx = 0; -80021d98: a2200075 sb zero,117(s1) -80021d9c: 26310090 addiu s1,s1,144 - else - { - PlayerData[PLAYER_ONE].FlightDirection = DEPARTURE | ARRIVAL; - } - - for(i = 0; i < MAX_PLAYERS ; i++) -80021da0: 1622ffef bne s1,v0,80021d60 -80021da4: 3c028004 lui v0,0x8004 - } - - firstActiveAircraft = 0; - lastActiveAircraft = 0; - - GameMouseSpr.x = MOUSE_X; -80021da8: 240300c0 li v1,192 -80021dac: a4433a28 sh v1,14888(v0) - GameMouseSpr.y = MOUSE_Y; -80021db0: 24423a28 addiu v0,v0,14888 -80021db4: 24030078 li v1,120 -80021db8: a4430002 sh v1,2(v0) - GameMouseSpr.w = MOUSE_W; -80021dbc: 24030008 li v1,8 -80021dc0: a4430006 sh v1,6(v0) - GameMouseSpr.h = MOUSE_H; -80021dc4: a4430008 sh v1,8(v0) - GameMouseSpr.attribute = COLORMODE(COLORMODE_16BPP); -80021dc8: 24030002 li v1,2 - memset(&PlayerData[i].Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); - PlayerData[i].WaypointIdx = 0; - PlayerData[i].LastWaypointIdx = 0; - } - - firstActiveAircraft = 0; -80021dcc: 3c058007 lui a1,0x8007 - lastActiveAircraft = 0; -80021dd0: 3c048007 lui a0,0x8007 - - GameMouseSpr.x = MOUSE_X; - GameMouseSpr.y = MOUSE_Y; - GameMouseSpr.w = MOUSE_W; - GameMouseSpr.h = MOUSE_H; - GameMouseSpr.attribute = COLORMODE(COLORMODE_16BPP); -80021dd4: ac430014 sw v1,20(v0) - uint8_t i; - uint8_t j = 0; - - for(i = 0; i < GameLevelSize; i++) - { - if(GameLevelBuffer[i] == TILE_RWY_START_1) -80021dd8: 3c148004 lui s4,0x8004 - GameMouseSpr.x = MOUSE_X; - GameMouseSpr.y = MOUSE_Y; - GameMouseSpr.w = MOUSE_W; - GameMouseSpr.h = MOUSE_H; - GameMouseSpr.attribute = COLORMODE(COLORMODE_16BPP); - GameMouseSpr.r = NORMAL_LUMINANCE; -80021ddc: 2403ff80 li v1,-128 - memset(&PlayerData[i].Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); - PlayerData[i].WaypointIdx = 0; - PlayerData[i].LastWaypointIdx = 0; - } - - firstActiveAircraft = 0; -80021de0: a0a01c0d sb zero,7181(a1) - lastActiveAircraft = 0; -80021de4: a0801c0c sb zero,7180(a0) - GameMouseSpr.x = MOUSE_X; - GameMouseSpr.y = MOUSE_Y; - GameMouseSpr.w = MOUSE_W; - GameMouseSpr.h = MOUSE_H; - GameMouseSpr.attribute = COLORMODE(COLORMODE_16BPP); - GameMouseSpr.r = NORMAL_LUMINANCE; -80021de8: a043000e sb v1,14(v0) - GameMouseSpr.g = NORMAL_LUMINANCE; -80021dec: a043000f sb v1,15(v0) - GameMouseSpr.b = NORMAL_LUMINANCE; -80021df0: a0430010 sb v1,16(v0) -} - -void GameGetRunwayArray(void) -{ - uint8_t i; - uint8_t j = 0; -80021df4: 00009821 move s3,zero - - for(i = 0; i < GameLevelSize; i++) -80021df8: 00008821 move s1,zero -80021dfc: afa50080 sw a1,128(sp) -80021e00: afa40084 sw a0,132(sp) -80021e04: 3c158007 lui s5,0x8007 - { - if(GameLevelBuffer[i] == TILE_RWY_START_1) -80021e08: 26943324 addiu s4,s4,13092 -80021e0c: 24160009 li s6,9 - { - if(SystemContains_u8(i, GameLevelBuffer, GAME_MAX_RUNWAYS) == false) - { - GameRwy[j++] = i; -80021e10: 26573a08 addiu s7,s2,14856 -void GameGetRunwayArray(void) -{ - uint8_t i; - uint8_t j = 0; - - for(i = 0; i < GameLevelSize; i++) -80021e14: 92a21c11 lbu v0,7185(s5) -80021e18: 00000000 nop -80021e1c: 0222102b sltu v0,s1,v0 -80021e20: 10400011 beqz v0,80021e68 -80021e24: 02341021 addu v0,s1,s4 - { - if(GameLevelBuffer[i] == TILE_RWY_START_1) -80021e28: 90420000 lbu v0,0(v0) -80021e2c: 00000000 nop -80021e30: 1456000a bne v0,s6,80021e5c -80021e34: 24060010 li a2,16 - { - if(SystemContains_u8(i, GameLevelBuffer, GAME_MAX_RUNWAYS) == false) -80021e38: 02802821 move a1,s4 -80021e3c: 0c00a05b jal 8002816c -80021e40: 02202021 move a0,s1 -80021e44: 14400005 bnez v0,80021e5c -80021e48: 26620001 addiu v0,s3,1 - { - GameRwy[j++] = i; -80021e4c: 00139840 sll s3,s3,0x1 -80021e50: 02779821 addu s3,s3,s7 -80021e54: a6710000 sh s1,0(s3) -80021e58: 305300ff andi s3,v0,0xff -void GameGetRunwayArray(void) -{ - uint8_t i; - uint8_t j = 0; - - for(i = 0; i < GameLevelSize; i++) -80021e5c: 26310001 addiu s1,s1,1 -80021e60: 1000ffec b 80021e14 -80021e64: 323100ff andi s1,s1,0xff - GameRwy[j++] = i; - } - } - } - - dprintf("GameRwy = "); -80021e68: 3c048004 lui a0,0x8004 -80021e6c: 2484033c addiu a0,a0,828 -80021e70: 0c00ed8f jal 8003b63c -80021e74: 3c138004 lui s3,0x8004 -80021e78: 00008821 move s1,zero - - for(i = 0; i < GAME_MAX_RUNWAYS; i++) - { - if(GameRwy[i] == 0) -80021e7c: 26523a08 addiu s2,s2,14856 - { - break; - } - - dprintf("%d ", GameRwy[i]); -80021e80: 26730348 addiu s3,s3,840 - } - } - - dprintf("GameRwy = "); - - for(i = 0; i < GAME_MAX_RUNWAYS; i++) -80021e84: 24140020 li s4,32 - { - if(GameRwy[i] == 0) -80021e88: 02511021 addu v0,s2,s1 -80021e8c: 94450000 lhu a1,0(v0) -80021e90: 00000000 nop -80021e94: 14a00017 bnez a1,80021ef4 -80021e98: afb20068 sw s2,104(sp) - } - - dprintf("%d ", GameRwy[i]); - } - - dprintf("\n"); -80021e9c: 3c118004 lui s1,0x8004 -80021ea0: 0c00ed8f jal 8003b63c -80021ea4: 262408dc addiu a0,s1,2268 - - GameGetRunwayArray(); - - GameSelectedTile = 0; - - AircraftInit(); -80021ea8: 0c008078 jal 800201e0 -80021eac: 00000000 nop - - LoadMenuEnd(); -80021eb0: 0c0093ab jal 80024eac -80021eb4: 00000000 nop - - GfxSetGlobalLuminance(0); -80021eb8: 0c00900b jal 8002402c -80021ebc: 00002021 move a0,zero - - track = SystemRand(GAMEPLAY_FIRST_TRACK,GAMEPLAY_LAST_TRACK); -80021ec0: 24050004 li a1,4 -80021ec4: 0c00a03d jal 800280f4 -80021ec8: 24040003 li a0,3 - - SfxPlayTrack(track); -80021ecc: 0c009f16 jal 80027c58 -80021ed0: 00402021 move a0,v0 - -void GameClockFlights(void) -{ - uint8_t i; - - for(i = 0; i < FlightData.nAircraft ; i++) -80021ed4: 3c028004 lui v0,0x8004 -80021ed8: 24423764 addiu v0,v0,14180 -80021edc: afb10098 sw s1,152(sp) -80021ee0: afa2006c sw v0,108(sp) -80021ee4: afa20070 sw v0,112(sp) -80021ee8: 00409021 move s2,v0 - } - } - - if(PadOneKeyReleased(PAD_CIRCLE) == true) - { - for(i = 0; i < FlightData.nAircraft ; i++) -80021eec: 100000a8 b 80022190 -80021ef0: afa2008c sw v0,140(sp) - if(GameRwy[i] == 0) - { - break; - } - - dprintf("%d ", GameRwy[i]); -80021ef4: 02602021 move a0,s3 -80021ef8: 0c00ed8f jal 8003b63c -80021efc: 26310002 addiu s1,s1,2 - } - } - - dprintf("GameRwy = "); - - for(i = 0; i < GAME_MAX_RUNWAYS; i++) -80021f00: 1634ffe2 bne s1,s4,80021e8c -80021f04: 02511021 addu v0,s2,s1 - } - - dprintf("%d ", GameRwy[i]); - } - - dprintf("\n"); -80021f08: 1000ffe5 b 80021ea0 -80021f0c: 3c118004 lui s1,0x8004 - GameSelectAircraftFromList(ptrPlayer, ptrFlightData); -} - -void GameClock(void) -{ - if(System1SecondTick() == true) -80021f10: 0c009fb6 jal 80027ed8 -80021f14: 00000000 nop -80021f18: 144000f0 bnez v0,800222dc -80021f1c: 3c048007 lui a0,0x8007 -{ - TYPE_PLAYER * ptrPlayer; - uint8_t i; - bool pause_flag = false; - - if(GameStartupFlag == true) -80021f20: 00008821 move s1,zero - { - if( (FlightData.Minutes[i] == 0) - && - (FlightData.Hours[i] > 0) ) - { - FlightData.Minutes[i] = 60; -80021f24: 2413003c li s3,60 - -void GameClockFlights(void) -{ - uint8_t i; - - for(i = 0; i < FlightData.nAircraft ; i++) -80021f28: 8fa2006c lw v0,108(sp) -80021f2c: 00000000 nop -80021f30: 90460200 lbu a2,512(v0) -80021f34: 00000000 nop -80021f38: 0226102b sltu v0,s1,a2 -80021f3c: 144000fa bnez v0,80022328 -80021f40: 3c148004 lui s4,0x8004 -80021f44: 8fa50070 lw a1,112(sp) -80021f48: 00001821 move v1,zero -80021f4c: 00a01021 move v0,a1 -80021f50: 00a02021 move a0,a1 - && - (FlightData.Minutes[i] == 0) - && - (FlightData.State[i] == STATE_IDLE) ) - { - if(FlightData.FlightDirection[i] == DEPARTURE) -80021f54: 24070001 li a3,1 - { - FlightData.State[i] = STATE_APPROACH; - } - - // Create notification request for incoming aircraft - FlightData.NotificationRequest[i] = true; -80021f58: 24090001 li t1,1 - { - if(FlightData.FlightDirection[i] == DEPARTURE) - { - FlightData.State[i] = STATE_PARKED; - } - else if(FlightData.FlightDirection[i] == ARRIVAL) -80021f5c: 240a0002 li t2,2 - { - FlightData.State[i] = STATE_APPROACH; -80021f60: 240b0004 li t3,4 - -void GameAircraftState(void) -{ - uint8_t i; - - for(i = 0; i < FlightData.nAircraft ; i++) -80021f64: 1466010c bne v1,a2,80022398 -80021f68: 00000000 nop - -void GameActiveAircraft(void) -{ - uint8_t i; - - FlightData.ActiveAircraft = 0; -80021f6c: 8fa40070 lw a0,112(sp) -80021f70: a2400201 sb zero,513(s2) -80021f74: 00003821 move a3,zero -80021f78: 00001021 move v0,zero - - for(i = 0 ; i < FlightData.nAircraft ; i++) -80021f7c: 00001821 move v1,zero -80021f80: 14660120 bne v1,a2,80022404 -80021f84: 00000000 nop -80021f88: 10e00002 beqz a3,80021f94 -80021f8c: 00000000 nop -80021f90: a2420201 sb v0,513(s2) -80021f94: 8fa20080 lw v0,128(sp) -80021f98: 00003021 move a2,zero -80021f9c: 90431c0d lbu v1,7181(v0) -80021fa0: 8fa20084 lw v0,132(sp) -80021fa4: 00003821 move a3,zero -80021fa8: 90441c0c lbu a0,7180(v0) -void GameFirstLastAircraftIndex(void) -{ - bool first_set = false; - uint8_t i; - - for(i = 0; i < GAME_MAX_AIRCRAFT ; i++) -80021fac: 24080020 li t0,32 -{ - uint8_t i; - - FlightData.ActiveAircraft = 0; - - for(i = 0 ; i < FlightData.nAircraft ; i++) -80021fb0: 00001021 move v0,zero - bool first_set = false; - uint8_t i; - - for(i = 0; i < GAME_MAX_AIRCRAFT ; i++) - { - if(FlightData.State[i] != STATE_IDLE) -80021fb4: 8ca90204 lw t1,516(a1) -80021fb8: 00000000 nop -80021fbc: 1520011c bnez t1,80022430 -80021fc0: 00000000 nop -void GameFirstLastAircraftIndex(void) -{ - bool first_set = false; - uint8_t i; - - for(i = 0; i < GAME_MAX_AIRCRAFT ; i++) -80021fc4: 24420001 addiu v0,v0,1 -80021fc8: 304200ff andi v0,v0,0xff -80021fcc: 1448fff9 bne v0,t0,80021fb4 -80021fd0: 24a50004 addiu a1,a1,4 -80021fd4: 10c00004 beqz a2,80021fe8 -80021fd8: 00000000 nop -80021fdc: 8fa20084 lw v0,132(sp) -80021fe0: 00000000 nop -80021fe4: a0441c0c sb a0,7180(v0) -80021fe8: 12e00004 beqz s7,80021ffc -80021fec: 00000000 nop -80021ff0: 8fa20080 lw v0,128(sp) -80021ff4: 00000000 nop -80021ff8: a0431c0d sb v1,7181(v0) - - GameClock(); - GameAircraftState(); - GameActiveAircraft(); - GameFirstLastAircraftIndex(); - AircraftHandler(); -80021ffc: 0c00813e jal 800204f8 -80022000: 3c118007 lui s1,0x8007 - // Move camera to selected aircraft and add first waypoint. - GameSelectAircraft(ptrPlayer); - break; - - default: - dprintf("Incompatible state %d!\n",aircraftState); -80022004: 3c028004 lui v0,0x8004 - - GameClock(); - GameAircraftState(); - GameActiveAircraft(); - GameFirstLastAircraftIndex(); - AircraftHandler(); -80022008: 8fbe0074 lw s8,116(sp) - // Move camera to selected aircraft and add first waypoint. - GameSelectAircraft(ptrPlayer); - break; - - default: - dprintf("Incompatible state %d!\n",aircraftState); -8002200c: afa200a4 sw v0,164(sp) - } - - ptrPlayer->LastWaypointIdx = i; - } - - target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]]; -80022010: 3c028004 lui v0,0x8004 -80022014: 24423324 addiu v0,v0,13092 -80022018: 26318eb4 addiu s1,s1,-29004 - - GameClock(); - GameAircraftState(); - GameActiveAircraft(); - GameFirstLastAircraftIndex(); - AircraftHandler(); -8002201c: 0000a821 move s5,zero - } - - ptrPlayer->LastWaypointIdx = i; - } - - target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]]; -80022020: afbe0088 sw s8,136(sp) -80022024: afa2007c sw v0,124(sp) - AircraftHandler(); - - for(i = 0 ; i < MAX_PLAYERS ; i++) - { - // Run player-specific functions for each player - if(PlayerData[i].Active == true) -80022028: 93c20000 lbu v0,0(s8) -8002202c: 00000000 nop -80022030: 14400107 bnez v0,80022450 -80022034: 00000000 nop - GameAircraftState(); - GameActiveAircraft(); - GameFirstLastAircraftIndex(); - AircraftHandler(); - - for(i = 0 ; i < MAX_PLAYERS ; i++) -80022038: 8fa20078 lw v0,120(sp) -8002203c: 27de0090 addiu s8,s8,144 -80022040: 26b50001 addiu s5,s5,1 -80022044: 17c2fff8 bne s8,v0,80022028 -80022048: 26310090 addiu s1,s1,144 - { - GamePlayerHandler(&PlayerData[i], &FlightData); - } - } - - if(PadOneKeyReleased(PAD_CIRCLE) == true) -8002204c: 0c0099e0 jal 80026780 -80022050: 24040020 li a0,32 -80022054: 10400011 beqz v0,8002209c -80022058: 00000000 nop - uint8_t Hours[GAME_MAX_AIRCRAFT]; - uint8_t Minutes[GAME_MAX_AIRCRAFT]; - uint8_t Parking[GAME_MAX_AIRCRAFT]; - }TYPE_FLIGHT_DATA;*/ - - dprintf("\n*****************\n"); -8002205c: 3c138004 lui s3,0x8004 - - dprintf("Time: %d:%d\n",FlightData.Hours[i],FlightData.Minutes[i]); - - dprintf("State: "); - - switch(FlightData.State[i]) -80022060: 3c158004 lui s5,0x8004 - { - GamePlayerHandler(&PlayerData[i], &FlightData); - } - } - - if(PadOneKeyReleased(PAD_CIRCLE) == true) -80022064: 00008821 move s1,zero - uint8_t Hours[GAME_MAX_AIRCRAFT]; - uint8_t Minutes[GAME_MAX_AIRCRAFT]; - uint8_t Parking[GAME_MAX_AIRCRAFT]; - }TYPE_FLIGHT_DATA;*/ - - dprintf("\n*****************\n"); -80022068: 26730518 addiu s3,s3,1304 - dprintf("\tAIRCRAFT %d\n",i); -8002206c: 3c168004 lui s6,0x8004 - - dprintf("Time: %d:%d\n",FlightData.Hours[i],FlightData.Minutes[i]); - - dprintf("State: "); - - switch(FlightData.State[i]) -80022070: 26b5f790 addiu s5,s5,-2160 - } - } - - if(PadOneKeyReleased(PAD_CIRCLE) == true) - { - for(i = 0; i < FlightData.nAircraft ; i++) -80022074: 92420200 lbu v0,512(s2) -80022078: 00000000 nop -8002207c: 0222102b sltu v0,s1,v0 -80022080: 14400303 bnez v0,80022c90 -80022084: 00000000 nop - break; - } - dprintf("\n"); - } - - dprintf("Active aircraft: %d\n",FlightData.ActiveAircraft); -80022088: 8fa2008c lw v0,140(sp) -8002208c: 3c048004 lui a0,0x8004 -80022090: 90450201 lbu a1,513(v0) -80022094: 0c00ed8f jal 8003b63c -80022098: 248405bc addiu a0,a0,1468 - -void GameGraphics(void) -{ - int i; - - while( (GfxIsGPUBusy() == true) -8002209c: 0c00901d jal 80024074 -800220a0: 00000000 nop -800220a4: 1440fffd bnez v0,8002209c -800220a8: 00000000 nop - || - (SystemRefreshNeeded() == false) ); -800220ac: 0c009f9a jal 80027e68 -800220b0: 00000000 nop -void GameGraphics(void) -{ - int i; - - while( (GfxIsGPUBusy() == true) - || -800220b4: 1040fff9 beqz v0,8002209c -800220b8: 24060040 li a2,64 - (SystemRefreshNeeded() == false) ); - - GsSortCls(0,0,NORMAL_LUMINANCE >> 1); -800220bc: 00002821 move a1,zero -800220c0: 0c00c4e8 jal 800313a0 -800220c4: 00002021 move a0,zero - - if(GfxGetGlobalLuminance() < NORMAL_LUMINANCE) -800220c8: 0c009007 jal 8002401c -800220cc: 00000000 nop -800220d0: 00021600 sll v0,v0,0x18 -800220d4: 00021603 sra v0,v0,0x18 -800220d8: 04400004 bltz v0,800220ec -800220dc: 3c178004 lui s7,0x8004 - { - GfxIncreaseGlobalLuminance(1); -800220e0: 0c00900e jal 80024038 -800220e4: 24040001 li a0,1 - } - - for(i = 0 ; i < GameLevelSize; i++) - { - // Flipped tiles have bit 7 enabled - if(GameLevelBuffer[i] & TILE_MIRROR_FLAG) -800220e8: 3c178004 lui s7,0x8004 -800220ec: 26e23324 addiu v0,s7,13092 -800220f0: afa2007c sw v0,124(sp) -800220f4: afa20088 sw v0,136(sp) - && - (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) ) - { - for(j = 0; j < GAME_MAX_RUNWAYS; j++) - { - if(GameUsedRwy[j] != 0) -800220f8: 3c028004 lui v0,0x8004 -800220fc: 24423724 addiu v0,v0,14116 - { - GamePlayerHandler(&PlayerData[i], &FlightData); - } - } - - if(PadOneKeyReleased(PAD_CIRCLE) == true) -80022100: 8fb10074 lw s1,116(sp) - && - (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) ) - { - for(j = 0; j < GAME_MAX_RUNWAYS; j++) - { - if(GameUsedRwy[j] != 0) -80022104: afa2009c sw v0,156(sp) - GfxIncreaseGlobalLuminance(1); - } - - for(i = 0; i < MAX_PLAYERS ; i++) - { - if(PlayerData[i].Active == true) -80022108: 92220000 lbu v0,0(s1) -8002210c: 00000000 nop -80022110: 14400327 bnez v0,80022db0 -80022114: 00000000 nop - if(GfxGetGlobalLuminance() < NORMAL_LUMINANCE) - { - GfxIncreaseGlobalLuminance(1); - } - - for(i = 0; i < MAX_PLAYERS ; i++) -80022118: 8fa20078 lw v0,120(sp) -8002211c: 26310090 addiu s1,s1,144 -80022120: 1622fff9 bne s1,v0,80022108 -80022124: 00000000 nop - GameRenderLevel(&PlayerData[i]); - AircraftRender(&PlayerData[i]); - } - } - - GameGuiAircraftNotificationRequest(&FlightData); -80022128: 0c008cc9 jal 80023324 -8002212c: 26843764 addiu a0,s4,14180 - - GameGuiBubble(&FlightData); -80022130: 0c008f21 jal 80023c84 -80022134: 26843764 addiu a0,s4,14180 - - GameGuiClock(GameHour,GameMinutes); -80022138: 3c028007 lui v0,0x8007 -8002213c: 90451c0f lbu a1,7183(v0) -80022140: 3c028007 lui v0,0x8007 -80022144: 90441c10 lbu a0,7184(v0) -80022148: 0c008f86 jal 80023e18 -8002214c: 00000000 nop - - for(i = 0; i < MAX_PLAYERS ; i++) - { - GameGuiAircraftList(&PlayerData[i], &FlightData); -80022150: 3c048007 lui a0,0x8007 -80022154: 26853764 addiu a1,s4,14180 -80022158: 0c008e2b jal 800238ac -8002215c: 24848e80 addiu a0,a0,-29056 -80022160: 3c048007 lui a0,0x8007 -80022164: 26853764 addiu a1,s4,14180 -80022168: 0c008e2b jal 800238ac -8002216c: 24848f10 addiu a0,a0,-28912 - } - - GfxDrawScene(); -80022170: 0c008fe2 jal 80023f88 -80022174: 00000000 nop - - GameCalculations(); - - GameGraphics(); - - if(GameStartupFlag == true) -80022178: 3c028007 lui v0,0x8007 -8002217c: 90431d24 lbu v1,7460(v0) -80022180: 00000000 nop -80022184: 10600002 beqz v1,80022190 -80022188: 00000000 nop - { - GameStartupFlag = false; -8002218c: a0401d24 sb zero,7460(v0) -{ - TYPE_PLAYER * ptrPlayer; - uint8_t i; - bool pause_flag = false; - - if(GameStartupFlag == true) -80022190: 8fa20094 lw v0,148(sp) -80022194: 00000000 nop -80022198: 90421d24 lbu v0,7460(v0) -8002219c: 00000000 nop -800221a0: 1040000b beqz v0,800221d0 -800221a4: 00000000 nop - ERROR_RECT_B = NORMAL_LUMINANCE - }; - - GsRectangle errorRct; - - bzero((GsRectangle*)&errorRct, sizeof(GsRectangle)); -800221a8: 24060010 li a2,16 -800221ac: 00002821 move a1,zero -800221b0: 0c00d7ab jal 80035eac -800221b4: 27a40010 addiu a0,sp,16 - // Pad one has been disconnected during gameplay - // Show an error screen until it is disconnected again. - - GsSortCls(0,0,0); - - errorRct.x = ERROR_RECT_X; -800221b8: 24110020 li s1,32 - errorRct.w = ERROR_RECT_W; -800221bc: 24130140 li s3,320 - errorRct.y = ERROR_RECT_Y; -800221c0: 24140010 li s4,16 - errorRct.h = ERROR_RECT_H; -800221c4: 241500d0 li s5,208 - - errorRct.r = ERROR_RECT_R; - errorRct.g = ERROR_RECT_G; - errorRct.b = ERROR_RECT_B; -800221c8: 1000002f b 80022288 -800221cc: 2416ff80 li s6,-128 -{ - TYPE_PLAYER * ptrPlayer; - uint8_t i; - bool pause_flag = false; - - if(GameStartupFlag == true) -800221d0: 8fb30074 lw s3,116(sp) -800221d4: 00008821 move s1,zero - { - return false; - } - - for(i = 0 ; i < MAX_PLAYERS ; i++) -800221d8: 24140002 li s4,2 - { - ptrPlayer = &PlayerData[i]; - // Run player-specific functions for each player - if(ptrPlayer->Active == true) -800221dc: 92620000 lbu v0,0(s3) -800221e0: 00000000 nop -800221e4: 10400023 beqz v0,80022274 -800221e8: 00000000 nop - { - //dprintf("Released callback = 0x%08X\n", ptrPlayer->PadKeyReleased_Callback); - if(ptrPlayer->PadKeyReleased_Callback(PAD_START) == true) -800221ec: 8e62007c lw v0,124(s3) -800221f0: 00000000 nop -800221f4: 0040f809 jalr v0 -800221f8: 24040800 li a0,2048 -800221fc: 1040001e beqz v0,80022278 -80022200: 26310001 addiu s1,s1,1 -80022204: 2631ffff addiu s1,s1,-1 - { - dprintf("Player %d set pause_flag to true!\n",i); -80022208: 3c048004 lui a0,0x8004 -8002220c: 02202821 move a1,s1 -80022210: 0c00ed8f jal 8003b63c -80022214: 2484034c addiu a0,a0,844 - return false; - } - - for(i = 0 ; i < MAX_PLAYERS ; i++) - { - ptrPlayer = &PlayerData[i]; -80022218: 00112100 sll a0,s1,0x4 -8002221c: 001189c0 sll s1,s1,0x7 -80022220: 00912021 addu a0,a0,s1 - if(pause_flag == true) - { - // Blocking function: - // * Returns true if player pointed to by ptrPlayer wants to exit game - // * Returns false if player pointed to by ptrPlayer wants to resume game - return GameGuiPauseDialog(ptrPlayer); -80022224: 0c008d62 jal 80023588 -80022228: 02042021 addu a0,s0,a0 - TwoPlayersActive = two_players; - GameInit(); - - while(1) - { - if(GamePause() == true) -8002222c: 1040ffdf beqz v0,800221ac -80022230: 24060010 li a2,16 - { - GameStartupFlag = false; - } - } - - EndAnimation(); -80022234: 0c00835d jal 80020d74 -80022238: 00000000 nop - - SfxPlayTrack(INTRO_TRACK); -8002223c: 0c009f16 jal 80027c58 -80022240: 24040002 li a0,2 -} -80022244: 8fbf00d4 lw ra,212(sp) -80022248: 8fbe00d0 lw s8,208(sp) -8002224c: 8fb700cc lw s7,204(sp) -80022250: 8fb600c8 lw s6,200(sp) -80022254: 8fb500c4 lw s5,196(sp) -80022258: 8fb400c0 lw s4,192(sp) -8002225c: 8fb300bc lw s3,188(sp) -80022260: 8fb200b8 lw s2,184(sp) -80022264: 8fb100b4 lw s1,180(sp) -80022268: 8fb000b0 lw s0,176(sp) -8002226c: 03e00008 jr ra -80022270: 27bd00d8 addiu sp,sp,216 -80022274: 26310001 addiu s1,s1,1 - if(GameStartupFlag == true) - { - return false; - } - - for(i = 0 ; i < MAX_PLAYERS ; i++) -80022278: 1234ffcb beq s1,s4,800221a8 -8002227c: 26730090 addiu s3,s3,144 -80022280: 1000ffd6 b 800221dc -80022284: 00000000 nop - - GsRectangle errorRct; - - bzero((GsRectangle*)&errorRct, sizeof(GsRectangle)); - - while(SystemGetEmergencyMode() == true) -80022288: 0c00a053 jal 8002814c -8002228c: 00000000 nop -80022290: 1040ff1f beqz v0,80021f10 -80022294: 0040b821 move s7,v0 - { - // Pad one has been disconnected during gameplay - // Show an error screen until it is disconnected again. - - GsSortCls(0,0,0); -80022298: 00003021 move a2,zero -8002229c: 00002821 move a1,zero -800222a0: 0c00c4e8 jal 800313a0 -800222a4: 00002021 move a0,zero - - errorRct.r = ERROR_RECT_R; - errorRct.g = ERROR_RECT_G; - errorRct.b = ERROR_RECT_B; - - GsSortRectangle(&errorRct); -800222a8: 27a40010 addiu a0,sp,16 - // Pad one has been disconnected during gameplay - // Show an error screen until it is disconnected again. - - GsSortCls(0,0,0); - - errorRct.x = ERROR_RECT_X; -800222ac: a7b10010 sh s1,16(sp) - errorRct.w = ERROR_RECT_W; -800222b0: a7b30014 sh s3,20(sp) - errorRct.y = ERROR_RECT_Y; -800222b4: a7b40012 sh s4,18(sp) - errorRct.h = ERROR_RECT_H; -800222b8: a7b50016 sh s5,22(sp) - - errorRct.r = ERROR_RECT_R; -800222bc: a3a00018 sb zero,24(sp) - errorRct.g = ERROR_RECT_G; -800222c0: a3b10019 sb s1,25(sp) - errorRct.b = ERROR_RECT_B; - - GsSortRectangle(&errorRct); -800222c4: 0c00b762 jal 8002dd88 -800222c8: a3b6001a sb s6,26(sp) - GfxDrawScene(); -800222cc: 0c008fe2 jal 80023f88 -800222d0: 00000000 nop -800222d4: 1000ffec b 80022288 -800222d8: 00000000 nop - -void GameClock(void) -{ - if(System1SecondTick() == true) - { - GameMinutes++; -800222dc: 90821c0f lbu v0,7183(a0) -800222e0: 00000000 nop -800222e4: 24420001 addiu v0,v0,1 -800222e8: 304200ff andi v0,v0,0xff -800222ec: a0821c0f sb v0,7183(a0) - - if(GameMinutes >= 60) -800222f0: 2c42003c sltiu v0,v0,60 -800222f4: 14400005 bnez v0,8002230c -800222f8: 3c038007 lui v1,0x8007 - { - GameHour++; -800222fc: 90621c10 lbu v0,7184(v1) - GameMinutes = 0; -80022300: a0801c0f sb zero,7183(a0) - { - GameMinutes++; - - if(GameMinutes >= 60) - { - GameHour++; -80022304: 24420001 addiu v0,v0,1 -80022308: a0621c10 sb v0,7184(v1) - GameMinutes = 0; - } - - if(GameHour >= 24) -8002230c: 90621c10 lbu v0,7184(v1) -80022310: 00000000 nop -80022314: 2c420018 sltiu v0,v0,24 -80022318: 1440ff01 bnez v0,80021f20 -8002231c: 3c028007 lui v0,0x8007 - { - GameHour = 0; -80022320: 1000feff b 80021f20 -80022324: a0401c10 sb zero,7184(v0) -{ - uint8_t i; - - for(i = 0; i < FlightData.nAircraft ; i++) - { - if(System1SecondTick() == true) -80022328: 0c009fb6 jal 80027ed8 -8002232c: 00000000 nop -80022330: 10400016 beqz v0,8002238c -80022334: 00000000 nop - { - if( (FlightData.Minutes[i] == 0) -80022338: 8fa2006c lw v0,108(sp) -8002233c: 00000000 nop -80022340: 02221021 addu v0,s1,v0 -80022344: 904301c0 lbu v1,448(v0) -80022348: 00000000 nop -8002234c: 14600007 bnez v1,8002236c -80022350: 00000000 nop - && - (FlightData.Hours[i] > 0) ) -80022354: 904301a0 lbu v1,416(v0) -80022358: 00000000 nop - for(i = 0; i < FlightData.nAircraft ; i++) - { - if(System1SecondTick() == true) - { - if( (FlightData.Minutes[i] == 0) - && -8002235c: 10600003 beqz v1,8002236c -80022360: 2463ffff addiu v1,v1,-1 - (FlightData.Hours[i] > 0) ) - { - FlightData.Minutes[i] = 60; -80022364: a05301c0 sb s3,448(v0) - FlightData.Hours[i]--; -80022368: a04301a0 sb v1,416(v0) - } - - if(FlightData.Minutes[i] > 0) -8002236c: 8fa20070 lw v0,112(sp) -80022370: 00000000 nop -80022374: 00511821 addu v1,v0,s1 -80022378: 906201c0 lbu v0,448(v1) -8002237c: 00000000 nop -80022380: 10400002 beqz v0,8002238c -80022384: 2442ffff addiu v0,v0,-1 - { - FlightData.Minutes[i]--; -80022388: a06201c0 sb v0,448(v1) - -void GameClockFlights(void) -{ - uint8_t i; - - for(i = 0; i < FlightData.nAircraft ; i++) -8002238c: 26310001 addiu s1,s1,1 -80022390: 1000fee5 b 80021f28 -80022394: 323100ff andi s1,s1,0xff -{ - uint8_t i; - - for(i = 0; i < FlightData.nAircraft ; i++) - { - if( (FlightData.Hours[i] == 0) -80022398: 908801a0 lbu t0,416(a0) -8002239c: 00000000 nop -800223a0: 15000013 bnez t0,800223f0 -800223a4: 00000000 nop - && -800223a8: 908801c0 lbu t0,448(a0) -800223ac: 00000000 nop -800223b0: 1500000f bnez t0,800223f0 -800223b4: 00000000 nop - (FlightData.Minutes[i] == 0) - && -800223b8: 8c480204 lw t0,516(v0) -800223bc: 00000000 nop -800223c0: 1500000b bnez t0,800223f0 -800223c4: 00000000 nop - (FlightData.State[i] == STATE_IDLE) ) - { - if(FlightData.FlightDirection[i] == DEPARTURE) -800223c8: 8c480000 lw t0,0(v0) -800223cc: 00000000 nop -800223d0: 15070003 bne t0,a3,800223e0 -800223d4: 00000000 nop - { - FlightData.State[i] = STATE_PARKED; -800223d8: 10000004 b 800223ec -800223dc: ac470204 sw a3,516(v0) - } - else if(FlightData.FlightDirection[i] == ARRIVAL) -800223e0: 150a0002 bne t0,t2,800223ec -800223e4: 00000000 nop - { - FlightData.State[i] = STATE_APPROACH; -800223e8: ac4b0204 sw t3,516(v0) - } - - // Create notification request for incoming aircraft - FlightData.NotificationRequest[i] = true; -800223ec: a0890284 sb t1,644(a0) - -void GameAircraftState(void) -{ - uint8_t i; - - for(i = 0; i < FlightData.nAircraft ; i++) -800223f0: 24630001 addiu v1,v1,1 -800223f4: 306300ff andi v1,v1,0xff -800223f8: 24840001 addiu a0,a0,1 -800223fc: 1000fed9 b 80021f64 -80022400: 24420004 addiu v0,v0,4 - - FlightData.ActiveAircraft = 0; - - for(i = 0 ; i < FlightData.nAircraft ; i++) - { - if(FlightData.State[i] != STATE_IDLE) -80022404: 8c880204 lw t0,516(a0) -80022408: 00000000 nop -8002240c: 11000004 beqz t0,80022420 -80022410: 00000000 nop - { - FlightData.ActiveAircraft++; -80022414: 24420001 addiu v0,v0,1 -80022418: 304200ff andi v0,v0,0xff -8002241c: 24070001 li a3,1 -{ - uint8_t i; - - FlightData.ActiveAircraft = 0; - - for(i = 0 ; i < FlightData.nAircraft ; i++) -80022420: 24630001 addiu v1,v1,1 -80022424: 306300ff andi v1,v1,0xff -80022428: 1000fed5 b 80021f80 -8002242c: 24840004 addiu a0,a0,4 - - for(i = 0; i < GAME_MAX_AIRCRAFT ; i++) - { - if(FlightData.State[i] != STATE_IDLE) - { - if(first_set == false) -80022430: 14e00003 bnez a3,80022440 -80022434: 00000000 nop - { - firstActiveAircraft = i; -80022438: 00401821 move v1,v0 - - for(i = 0; i < GAME_MAX_AIRCRAFT ; i++) - { - if(FlightData.State[i] != STATE_IDLE) - { - if(first_set == false) -8002243c: 24170001 li s7,1 - { - firstActiveAircraft = i; - first_set = true; - } - lastActiveAircraft = i; -80022440: 00402021 move a0,v0 -80022444: 24060001 li a2,1 -80022448: 1000fede b 80021fc4 -8002244c: 24070001 li a3,1 - } -} - -void GameStateLockTarget(TYPE_PLAYER * ptrPlayer) -{ - if(ptrPlayer->LockTarget == true) -80022450: 93c20006 lbu v0,6(s8) - return lastActiveAircraft; -} - -void GamePlayerHandler(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - ptrPlayer->SelectedTile = 0; // Reset selected tile if no states -80022454: a7c00032 sh zero,50(s8) - } -} - -void GameStateLockTarget(TYPE_PLAYER * ptrPlayer) -{ - if(ptrPlayer->LockTarget == true) -80022458: 10400010 beqz v0,8002249c -8002245c: a3c00005 sb zero,5(s8) - { - CameraMoveToIsoPos(ptrPlayer, AircraftGetIsoPos(ptrPlayer->LockedAircraft) ); -80022460: 93c5002f lbu a1,47(s8) -80022464: 0c008227 jal 8002089c -80022468: 27a40060 addiu a0,sp,96 -8002246c: 8fa50060 lw a1,96(sp) -80022470: 8fa60064 lw a2,100(sp) -80022474: 0c00832b jal 80020cac -80022478: 03c02021 move a0,s8 - - if(ptrPlayer->PadKeyReleased_Callback(PAD_SQUARE) == true) -8002247c: 8fc2007c lw v0,124(s8) -80022480: 00000000 nop -80022484: 0040f809 jalr v0 -80022488: 24040080 li a0,128 -8002248c: 10400003 beqz v0,8002249c -80022490: 00000000 nop - { - ptrPlayer->LockTarget = false; -80022494: a3c00006 sb zero,6(s8) - ptrPlayer->LockedAircraft = 0; -80022498: a3c0002f sb zero,47(s8) -void GameStateSelectRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint8_t i; - bool success; - - if(ptrPlayer->SelectRunway == true) -8002249c: 93c20002 lbu v0,2(s8) -800224a0: 00000000 nop -800224a4: 104000b6 beqz v0,80022780 -800224a8: 03c02821 move a1,s8 - { - // Under this mode, always reset locking target. - ptrPlayer->LockTarget = false; - ptrPlayer->LockedAircraft = 0; - - if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true) -800224ac: 8fc2007c lw v0,124(s8) - bool success; - - if(ptrPlayer->SelectRunway == true) - { - // Under this mode, always reset locking target. - ptrPlayer->LockTarget = false; -800224b0: a3c00006 sb zero,6(s8) - ptrPlayer->LockedAircraft = 0; -800224b4: a3c0002f sb zero,47(s8) - - if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true) -800224b8: 0040f809 jalr v0 -800224bc: 24040010 li a0,16 -800224c0: 10400003 beqz v0,800224d0 -800224c4: 00000000 nop - { - ptrPlayer->SelectRunway = false; -800224c8: 100000ac b 8002277c -800224cc: a3c00002 sb zero,2(s8) - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true) -800224d0: 8fc2007c lw v0,124(s8) -800224d4: 00000000 nop -800224d8: 0040f809 jalr v0 -800224dc: 24040040 li a0,64 -800224e0: 10400087 beqz v0,80022700 -800224e4: 3c048004 lui a0,0x8004 - { - ptrPlayer->SelectRunway = false; - - dprintf("ptrPlayer->SelectedRunway = %d\n", GameRwy[ptrPlayer->SelectedRunway]); -800224e8: 97c20030 lhu v0,48(s8) -800224ec: 8fa30068 lw v1,104(sp) -800224f0: 00021040 sll v0,v0,0x1 -800224f4: 00621021 addu v0,v1,v0 -800224f8: 94450000 lhu a1,0(v0) -800224fc: 24840370 addiu a0,a0,880 -80022500: 0c00ed8f jal 8003b63c -80022504: a3c00002 sb zero,2(s8) - if(SystemContains_u16(GameRwy[ptrPlayer->SelectedRunway], GameUsedRwy, GAME_MAX_RUNWAYS) == false) -80022508: 97c20030 lhu v0,48(s8) -8002250c: 8fa30068 lw v1,104(sp) -80022510: 00021040 sll v0,v0,0x1 -80022514: 00621021 addu v0,v1,v0 -80022518: 3c138004 lui s3,0x8004 -8002251c: 94440000 lhu a0,0(v0) -80022520: 24060010 li a2,16 -80022524: 0c00a067 jal 8002819c -80022528: 26653724 addiu a1,s3,14116 -8002252c: 14400094 bnez v0,80022780 -80022530: 03c02821 move a1,s8 - { - ptrPlayer->SelectRunway = false; - dprintf("Player selected runway %d!\n",GameRwy[ptrPlayer->SelectedRunway]); -80022534: 97c20030 lhu v0,48(s8) -80022538: 8fa30068 lw v1,104(sp) -8002253c: 00021040 sll v0,v0,0x1 -80022540: 00431021 addu v0,v0,v1 -80022544: 94450000 lhu a1,0(v0) -80022548: 3c048004 lui a0,0x8004 -8002254c: 24840390 addiu a0,a0,912 -80022550: 0c00ed8f jal 8003b63c -80022554: a3c00002 sb zero,2(s8) -80022558: 26623724 addiu v0,s3,14116 -8002255c: afa2009c sw v0,156(sp) -80022560: 00009821 move s3,zero - - success = false; - - for(i = 0; i < GAME_MAX_RUNWAYS; i++) -80022564: 24040010 li a0,16 - { - if(GameUsedRwy[i] == 0) -80022568: 94450000 lhu a1,0(v0) -8002256c: 00000000 nop -80022570: 14a0005c bnez a1,800226e4 -80022574: 26730001 addiu s3,s3,1 -80022578: 2673ffff addiu s3,s3,-1 - GameGetSelectedRunwayArray(0); -} - -void GameAssignRunwaytoAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint16_t assignedRwy = GameRwy[ptrPlayer->SelectedRunway]; -8002257c: 97c20030 lhu v0,48(s8) -80022580: 8fa30068 lw v1,104(sp) -80022584: 00021040 sll v0,v0,0x1 -80022588: 93d7002e lbu s7,46(s8) -8002258c: 00621021 addu v0,v1,v0 - uint16_t rwyExit; - uint32_t i; - uint16_t targets[AIRCRAFT_MAX_TARGETS]; - uint8_t rwyTiles[GAME_MAX_RWY_LENGTH]; - - memset(targets, 0, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); -80022590: 24060040 li a2,64 - GameGetSelectedRunwayArray(0); -} - -void GameAssignRunwaytoAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint16_t assignedRwy = GameRwy[ptrPlayer->SelectedRunway]; -80022594: 94560000 lhu s6,0(v0) - uint16_t rwyExit; - uint32_t i; - uint16_t targets[AIRCRAFT_MAX_TARGETS]; - uint8_t rwyTiles[GAME_MAX_RWY_LENGTH]; - - memset(targets, 0, sizeof(uint16_t) * AIRCRAFT_MAX_TARGETS); -80022598: 0c00d7ab jal 80035eac -8002259c: 27a40010 addiu a0,sp,16 - STATE_TAXIING, - STATE_APPROACH, - STATE_FINAL - }FL_STATE;*/ - - dprintf("aircraftIndex = %d\n",aircraftIndex); -800225a0: 3c048004 lui a0,0x8004 -800225a4: 02e02821 move a1,s7 -800225a8: 0c00ed8f jal 8003b63c -800225ac: 248403ac addiu a0,a0,940 - - if(ptrFlightData->State[aircraftIndex] == STATE_APPROACH) -800225b0: 26e20080 addiu v0,s7,128 -800225b4: 00021080 sll v0,v0,0x2 -800225b8: 02421021 addu v0,s2,v0 -800225bc: 8c450004 lw a1,4(v0) -800225c0: 24040004 li a0,4 -800225c4: 14a4003d bne a1,a0,800226bc -800225c8: 24040005 li a0,5 - { - ptrFlightData->State[aircraftIndex] = STATE_FINAL; -800225cc: ac440004 sw a0,4(v0) - - GameGetSelectedRunwayArray(assignedRwy); -800225d0: 0c008502 jal 80021408 -800225d4: 02c02021 move a0,s6 -800225d8: 3c028004 lui v0,0x8004 -800225dc: 24423744 addiu v0,v0,14148 - - for(i = 0; i < GAME_MAX_RWY_LENGTH; i++) -800225e0: 00002021 move a0,zero -800225e4: afa200a0 sw v0,160(sp) -800225e8: 24060010 li a2,16 - { - rwyTiles[i] = GameLevelBuffer[GameRwyArray[i]]; -800225ec: 27a30050 addiu v1,sp,80 -800225f0: 00643821 addu a3,v1,a0 -800225f4: 94450000 lhu a1,0(v0) -800225f8: 8fa3007c lw v1,124(sp) - { - ptrFlightData->State[aircraftIndex] = STATE_FINAL; - - GameGetSelectedRunwayArray(assignedRwy); - - for(i = 0; i < GAME_MAX_RWY_LENGTH; i++) -800225fc: 24840001 addiu a0,a0,1 - { - rwyTiles[i] = GameLevelBuffer[GameRwyArray[i]]; -80022600: 00a32821 addu a1,a1,v1 -80022604: 90a50000 lbu a1,0(a1) -80022608: 24420002 addiu v0,v0,2 - { - ptrFlightData->State[aircraftIndex] = STATE_FINAL; - - GameGetSelectedRunwayArray(assignedRwy); - - for(i = 0; i < GAME_MAX_RWY_LENGTH; i++) -8002260c: 1486fff7 bne a0,a2,800225ec -80022610: a0e50000 sb a1,0(a3) - { - rwyTiles[i] = GameLevelBuffer[GameRwyArray[i]]; - } - - i = SystemIndexOf_U8((uint8_t)TILE_RWY_EXIT, rwyTiles, 0, GAME_MAX_RWY_LENGTH); -80022614: 24070010 li a3,16 -80022618: 00003021 move a2,zero -8002261c: 27a50050 addiu a1,sp,80 -80022620: 0c00a19a jal 80028668 -80022624: 24040018 li a0,24 - - if(i == -1) -80022628: 2408ffff li t0,-1 -8002262c: 14480005 bne v0,t0,80022644 -80022630: 24070010 li a3,16 - { - dprintf("ERROR: Could not find TILE_RWY_EXIT for runway header %d.\n", assignedRwy); -80022634: 3c048004 lui a0,0x8004 -80022638: 02c02821 move a1,s6 -8002263c: 1000000d b 80022674 -80022640: 248403c0 addiu a0,a0,960 - return; - } - - i = SystemIndexOf_U8((uint8_t)TILE_RWY_EXIT, rwyTiles, i + 1, GAME_MAX_RWY_LENGTH); -80022644: 24460001 addiu a2,v0,1 -80022648: 27a50050 addiu a1,sp,80 -8002264c: 24040018 li a0,24 -80022650: 0c00a19a jal 80028668 -80022654: afa800a8 sw t0,168(sp) - - if(i == -1) -80022658: 8fa800a8 lw t0,168(sp) -8002265c: 00000000 nop -80022660: 14480008 bne v0,t0,80022684 -80022664: 00021040 sll v0,v0,0x1 - { - dprintf("ERROR: Could not find second TILE_RWY_EXIT for runway header %d.\n", assignedRwy); -80022668: 3c048004 lui a0,0x8004 -8002266c: 02c02821 move a1,s6 -80022670: 248403fc addiu a0,a0,1020 -80022674: 0c00ed8f jal 8003b63c -80022678: 00000000 nop -8002267c: 1000000f b 800226bc -80022680: 00000000 nop - return; - } - - rwyExit = GameRwyArray[i]; -80022684: 8fa300a0 lw v1,160(sp) -80022688: 00000000 nop -8002268c: 00621021 addu v0,v1,v0 -80022690: 94420000 lhu v0,0(v0) - - targets[0] = assignedRwy; - targets[1] = rwyExit; - - if( AircraftAddNew(ptrFlightData, -80022694: 27a60010 addiu a2,sp,16 -80022698: 02e02821 move a1,s7 -8002269c: 26843764 addiu a0,s4,14180 - return; - } - - rwyExit = GameRwyArray[i]; - - targets[0] = assignedRwy; -800226a0: a7b60010 sh s6,16(sp) - targets[1] = rwyExit; - - if( AircraftAddNew(ptrFlightData, -800226a4: 0c00809d jal 80020274 -800226a8: a7a20012 sh v0,18(sp) -800226ac: 14400003 bnez v0,800226bc -800226b0: 3c048004 lui a0,0x8004 - aircraftIndex, - targets ) == false) - { - dprintf("Exceeded maximum aircraft number!\n"); -800226b4: 0c00ed8f jal 8003b63c -800226b8: 24840440 addiu a0,a0,1088 - { - if(GameUsedRwy[i] == 0) - { - GameAssignRunwaytoAircraft(ptrPlayer, ptrFlightData); - success = true; - GameUsedRwy[i] = GameRwy[ptrPlayer->SelectedRunway]; -800226bc: 8fa2009c lw v0,156(sp) -800226c0: 00139840 sll s3,s3,0x1 -800226c4: 00539821 addu s3,v0,s3 -800226c8: 97c20030 lhu v0,48(s8) -800226cc: 8fa30068 lw v1,104(sp) -800226d0: 00021040 sll v0,v0,0x1 -800226d4: 00621021 addu v0,v1,v0 -800226d8: 94420000 lhu v0,0(v0) -800226dc: 10000027 b 8002277c -800226e0: a6620000 sh v0,0(s3) - ptrPlayer->SelectRunway = false; - dprintf("Player selected runway %d!\n",GameRwy[ptrPlayer->SelectedRunway]); - - success = false; - - for(i = 0; i < GAME_MAX_RUNWAYS; i++) -800226e4: 1664ffa0 bne s3,a0,80022568 -800226e8: 24420002 addiu v0,v0,2 - } - } - - if(success == false) - { - dprintf("No available runways!\n"); -800226ec: 3c048004 lui a0,0x8004 -800226f0: 0c00ed8f jal 8003b63c -800226f4: 248405d4 addiu a0,a0,1492 - } -} - -void GameStateSelectTaxiwayRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - TYPE_ISOMETRIC_POS IsoPos = CameraGetIsoPos(ptrPlayer); -800226f8: 10000021 b 80022780 -800226fc: 03c02821 move a1,s8 - { - dprintf("No available runways!\n"); - } - } - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_LEFT) == true) -80022700: 8fc2007c lw v0,124(s8) -80022704: 00000000 nop -80022708: 0040f809 jalr v0 -8002270c: 34048000 li a0,0x8000 -80022710: 10400007 beqz v0,80022730 -80022714: 00000000 nop - { - if(ptrPlayer->SelectedRunway != 0) -80022718: 97c20030 lhu v0,48(s8) -8002271c: 00000000 nop -80022720: 10400017 beqz v0,80022780 -80022724: 03c02821 move a1,s8 - { - ptrPlayer->SelectedRunway--; -80022728: 10000013 b 80022778 -8002272c: 2442ffff addiu v0,v0,-1 - } - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_RIGHT) == true) -80022730: 8fc2007c lw v0,124(s8) -80022734: 00000000 nop -80022738: 0040f809 jalr v0 -8002273c: 24042000 li a0,8192 -80022740: 1040000f beqz v0,80022780 -80022744: 03c02821 move a1,s8 - { - if(ptrPlayer->SelectedRunway < GAME_MAX_RUNWAYS) -80022748: 97c20030 lhu v0,48(s8) -8002274c: 00000000 nop -80022750: 2c440010 sltiu a0,v0,16 -80022754: 1080000a beqz a0,80022780 -80022758: 24420001 addiu v0,v0,1 - { - if(GameRwy[ptrPlayer->SelectedRunway + 1] != 0) -8002275c: 8fa30068 lw v1,104(sp) -80022760: 00022040 sll a0,v0,0x1 -80022764: 00642021 addu a0,v1,a0 -80022768: 94840000 lhu a0,0(a0) -8002276c: 00000000 nop -80022770: 10800003 beqz a0,80022780 -80022774: 00000000 nop - { - ptrPlayer->SelectedRunway++; -80022778: a7c20030 sh v0,48(s8) - } -} - -void GameStateSelectTaxiwayRunway(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - TYPE_ISOMETRIC_POS IsoPos = CameraGetIsoPos(ptrPlayer); -8002277c: 03c02821 move a1,s8 -80022780: 0c00830f jal 80020c3c -80022784: 27a40010 addiu a0,sp,16 - uint8_t i; - uint16_t target_tile; - - /*dprintf("Camera is pointing to {%d,%d}\n",IsoPos.x, IsoPos.y);*/ - - if(ptrPlayer->SelectTaxiwayRunway == true) -80022788: 93c20003 lbu v0,3(s8) -8002278c: 00000000 nop -80022790: 10400065 beqz v0,80022928 -80022794: 03c02821 move a1,s8 - { - // Under this mode, always reset locking target. - ptrPlayer->LockTarget = false; - ptrPlayer->LockedAircraft = 0; - - ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos); -80022798: 27a40010 addiu a0,sp,16 - /*dprintf("Camera is pointing to {%d,%d}\n",IsoPos.x, IsoPos.y);*/ - - if(ptrPlayer->SelectTaxiwayRunway == true) - { - // Under this mode, always reset locking target. - ptrPlayer->LockTarget = false; -8002279c: a3c00006 sb zero,6(s8) - ptrPlayer->LockedAircraft = 0; - - ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos); -800227a0: 0c0084f0 jal 800213c0 -800227a4: a3c0002f sb zero,47(s8) -800227a8: a7c20032 sh v0,50(s8) - - if(GamePathToTile(ptrPlayer) == false) -800227ac: 0c0085a3 jal 8002168c -800227b0: 03c02021 move a0,s8 -800227b4: 14400002 bnez v0,800227c0 -800227b8: 24020001 li v0,1 - { - ptrPlayer->InvalidPath = true; -800227bc: a3c20005 sb v0,5(s8) - } - - if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true) -800227c0: 8fc2007c lw v0,124(s8) -800227c4: 00000000 nop -800227c8: 0040f809 jalr v0 -800227cc: 24040010 li a0,16 -800227d0: 10400008 beqz v0,800227f4 -800227d4: 24060040 li a2,64 - { - // State exit. - ptrPlayer->SelectTaxiwayRunway = false; -800227d8: a3c00003 sb zero,3(s8) - // Clear waypoints array. - memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); -800227dc: 00002821 move a1,zero -800227e0: 0c00d7ab jal 80035eac -800227e4: 02202021 move a0,s1 - ptrPlayer->WaypointIdx = 0; -800227e8: a3c00074 sb zero,116(s8) - ptrPlayer->LastWaypointIdx = 0; -800227ec: 1000004d b 80022924 -800227f0: a3c00075 sb zero,117(s8) - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true) -800227f4: 8fc2007c lw v0,124(s8) -800227f8: 00000000 nop -800227fc: 0040f809 jalr v0 -80022800: 24040040 li a0,64 -80022804: 10400048 beqz v0,80022928 -80022808: 03c02821 move a1,s8 - { - if(ptrPlayer->InvalidPath == false) -8002280c: 93c20005 lbu v0,5(s8) -80022810: 00000000 nop -80022814: 14400043 bnez v0,80022924 -80022818: 24050020 li a1,32 - { - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) - { - if(ptrPlayer->Waypoints[i] == 0) -8002281c: 00022040 sll a0,v0,0x1 -80022820: 03c42021 addu a0,s8,a0 -80022824: 94840034 lhu a0,52(a0) -80022828: 00000000 nop -8002282c: 14800021 bnez a0,800228b4 -80022830: 304600ff andi a2,v0,0xff - } - - ptrPlayer->LastWaypointIdx = i; - } - - target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]]; -80022834: 93c50075 lbu a1,117(s8) -80022838: 001510c0 sll v0,s5,0x3 -8002283c: 00153180 sll a2,s5,0x6 -80022840: 00461021 addu v0,v0,a2 -80022844: 00451021 addu v0,v0,a1 -80022848: 8fa30088 lw v1,136(sp) -8002284c: 24420018 addiu v0,v0,24 -80022850: 00021040 sll v0,v0,0x1 -80022854: 00621021 addu v0,v1,v0 -80022858: 94420004 lhu v0,4(v0) -8002285c: 8fa3007c lw v1,124(sp) -80022860: 00000000 nop -80022864: 00431021 addu v0,v0,v1 - - if( (target_tile == TILE_RWY_START_1) -80022868: 90420000 lbu v0,0(v0) -8002286c: 00000000 nop -80022870: 3042007f andi v0,v0,0x7f -80022874: 2442fff7 addiu v0,v0,-9 -80022878: 2c420002 sltiu v0,v0,2 -8002287c: 1040002a beqz v0,80022928 -80022880: 03c02821 move a1,s8 - (target_tile == TILE_RWY_START_2) - || - (target_tile == (TILE_RWY_START_2 | TILE_MIRROR_FLAG) ) ) - { - // TODO: Assign path to aircraft - AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints); -80022884: 93c4002f lbu a0,47(s8) -80022888: 0c00824d jal 80020934 -8002288c: 02202821 move a1,s1 - dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft); -80022890: 93c5002f lbu a1,47(s8) -80022894: 3c048004 lui a0,0x8004 -80022898: 24840464 addiu a0,a0,1124 -8002289c: 0c00ed8f jal 8003b63c -800228a0: 3c168004 lui s6,0x8004 -800228a4: 00009821 move s3,zero - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) - { - dprintf("%d ",ptrPlayer->Waypoints[i]); -800228a8: 26d60348 addiu s6,s6,840 - { - // TODO: Assign path to aircraft - AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints); - dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft); - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) -800228ac: 10000006 b 800228c8 -800228b0: 24170040 li s7,64 -800228b4: 24420001 addiu v0,v0,1 - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true) - { - if(ptrPlayer->InvalidPath == false) - { - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) -800228b8: 1445ffd8 bne v0,a1,8002281c -800228bc: a3c60075 sb a2,117(s8) -800228c0: 1000ffdc b 80022834 -800228c4: 00000000 nop - AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints); - dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft); - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) - { - dprintf("%d ",ptrPlayer->Waypoints[i]); -800228c8: 03d31021 addu v0,s8,s3 -800228cc: 94450034 lhu a1,52(v0) -800228d0: 02c02021 move a0,s6 -800228d4: 0c00ed8f jal 8003b63c -800228d8: 26730002 addiu s3,s3,2 - { - // TODO: Assign path to aircraft - AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints); - dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft); - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) -800228dc: 1677fffb bne s3,s7,800228cc -800228e0: 03d31021 addu v0,s8,s3 - { - dprintf("%d ",ptrPlayer->Waypoints[i]); - } - - dprintf("\n"); -800228e4: 3c048004 lui a0,0x8004 -800228e8: 0c00ed8f jal 8003b63c -800228ec: 248408dc addiu a0,a0,2268 - - ptrPlayer->SelectTaxiwayParking = false; - // Clear waypoints array. - memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); -800228f0: 02202021 move a0,s1 - dprintf("%d ",ptrPlayer->Waypoints[i]); - } - - dprintf("\n"); - - ptrPlayer->SelectTaxiwayParking = false; -800228f4: a3c00004 sb zero,4(s8) - // Clear waypoints array. - memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); -800228f8: 24060040 li a2,64 -800228fc: 0c00d7ab jal 80035eac -80022900: 00002821 move a1,zero - ptrPlayer->WaypointIdx = 0; - ptrPlayer->LastWaypointIdx = 0; - - ptrFlightData->State[ptrPlayer->LockedAircraft] = STATE_TAXIING; -80022904: 93c2002f lbu v0,47(s8) -80022908: 24040002 li a0,2 -8002290c: 24420080 addiu v0,v0,128 -80022910: 00021080 sll v0,v0,0x2 -80022914: 02421021 addu v0,s2,v0 - dprintf("\n"); - - ptrPlayer->SelectTaxiwayParking = false; - // Clear waypoints array. - memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); - ptrPlayer->WaypointIdx = 0; -80022918: a3c00074 sb zero,116(s8) - ptrPlayer->LastWaypointIdx = 0; -8002291c: a3c00075 sb zero,117(s8) - - ptrFlightData->State[ptrPlayer->LockedAircraft] = STATE_TAXIING; -80022920: ac440004 sw a0,4(v0) - } -} - -void GameStateSelectTaxiwayParking(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - TYPE_ISOMETRIC_POS IsoPos = CameraGetIsoPos(ptrPlayer); -80022924: 03c02821 move a1,s8 -80022928: 0c00830f jal 80020c3c -8002292c: 27a40010 addiu a0,sp,16 - uint8_t i; - uint16_t target_tile; - - if(ptrPlayer->SelectTaxiwayParking == true) -80022930: 93c20004 lbu v0,4(s8) -80022934: 00000000 nop -80022938: 10400068 beqz v0,80022adc -8002293c: 27a40010 addiu a0,sp,16 - { - // Under this mode, always reset locking target. - ptrPlayer->LockTarget = false; -80022940: a3c00006 sb zero,6(s8) - ptrPlayer->LockedAircraft = 0; - - ptrPlayer->SelectedTile = GameGetTileFromIsoPosition(&IsoPos); -80022944: 0c0084f0 jal 800213c0 -80022948: a3c0002f sb zero,47(s8) -8002294c: a7c20032 sh v0,50(s8) - - if(GamePathToTile(ptrPlayer) == false) -80022950: 0c0085a3 jal 8002168c -80022954: 03c02021 move a0,s8 -80022958: 14400002 bnez v0,80022964 -8002295c: 24020001 li v0,1 - { - ptrPlayer->InvalidPath = true; -80022960: a3c20005 sb v0,5(s8) - } - - if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true) -80022964: 8fc2007c lw v0,124(s8) -80022968: 00000000 nop -8002296c: 0040f809 jalr v0 -80022970: 24040010 li a0,16 -80022974: 10400008 beqz v0,80022998 -80022978: 24060040 li a2,64 - { - // State exit. - ptrPlayer->SelectTaxiwayParking = false; -8002297c: a3c00004 sb zero,4(s8) - // Clear waypoints array. - memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); -80022980: 00002821 move a1,zero -80022984: 0c00d7ab jal 80035eac -80022988: 02202021 move a0,s1 - ptrPlayer->WaypointIdx = 0; -8002298c: a3c00074 sb zero,116(s8) - ptrPlayer->LastWaypointIdx = 0; -80022990: 10000052 b 80022adc -80022994: a3c00075 sb zero,117(s8) - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true) -80022998: 8fc2007c lw v0,124(s8) -8002299c: 00000000 nop -800229a0: 0040f809 jalr v0 -800229a4: 24040040 li a0,64 -800229a8: 1040004c beqz v0,80022adc -800229ac: 00000000 nop - { - if(ptrPlayer->InvalidPath == false) -800229b0: 93c20005 lbu v0,5(s8) -800229b4: 00000000 nop -800229b8: 14400048 bnez v0,80022adc -800229bc: 24050020 li a1,32 - { - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) - { - if(ptrPlayer->Waypoints[i] == 0) -800229c0: 00022040 sll a0,v0,0x1 -800229c4: 03c42021 addu a0,s8,a0 -800229c8: 94840034 lhu a0,52(a0) -800229cc: 00000000 nop -800229d0: 14800026 bnez a0,80022a6c -800229d4: 304600ff andi a2,v0,0xff - } - - ptrPlayer->LastWaypointIdx = i; - } - - target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]]; -800229d8: 93c50075 lbu a1,117(s8) -800229dc: 00152180 sll a0,s5,0x6 -800229e0: 001510c0 sll v0,s5,0x3 -800229e4: 00441021 addu v0,v0,a0 -800229e8: 00451021 addu v0,v0,a1 -800229ec: 8fa30088 lw v1,136(sp) -800229f0: 24420018 addiu v0,v0,24 -800229f4: 00021040 sll v0,v0,0x1 -800229f8: 00621021 addu v0,v1,v0 -800229fc: 94420004 lhu v0,4(v0) -80022a00: 8fa3007c lw v1,124(sp) - - dprintf("ptrPlayer->LastWaypointIdx = %d\n", -80022a04: 3c048004 lui a0,0x8004 - } - - ptrPlayer->LastWaypointIdx = i; - } - - target_tile = GameLevelBuffer[ptrPlayer->Waypoints[ptrPlayer->LastWaypointIdx]]; -80022a08: 00431021 addu v0,v0,v1 -80022a0c: 90530000 lbu s3,0(v0) - - dprintf("ptrPlayer->LastWaypointIdx = %d\n", -80022a10: 0c00ed8f jal 8003b63c -80022a14: 2484048c addiu a0,a0,1164 - ptrPlayer->LastWaypointIdx); - - dprintf("target_tile = %d, TILE_PARKING = %d\n", -80022a18: 3c048004 lui a0,0x8004 -80022a1c: 02602821 move a1,s3 -80022a20: 2406000b li a2,11 -80022a24: 0c00ed8f jal 8003b63c -80022a28: 248404b0 addiu a0,a0,1200 - target_tile, - TILE_PARKING); - - if( (target_tile == TILE_PARKING) -80022a2c: 3273007f andi s3,s3,0x7f -80022a30: 2402000b li v0,11 -80022a34: 16620029 bne s3,v0,80022adc -80022a38: 00000000 nop - || - (target_tile == (TILE_PARKING | TILE_MIRROR_FLAG) ) ) - { - // TODO: Assign path to aircraft - AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints); -80022a3c: 93c4002f lbu a0,47(s8) -80022a40: 0c00824d jal 80020934 -80022a44: 02202821 move a1,s1 - - dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft); -80022a48: 93c5002f lbu a1,47(s8) -80022a4c: 3c048004 lui a0,0x8004 -80022a50: 24840464 addiu a0,a0,1124 -80022a54: 0c00ed8f jal 8003b63c -80022a58: 3c168004 lui s6,0x8004 -80022a5c: 00009821 move s3,zero - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) - { - dprintf("%d ",ptrPlayer->Waypoints[i]); -80022a60: 26d60348 addiu s6,s6,840 - // TODO: Assign path to aircraft - AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints); - - dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft); - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) -80022a64: 10000006 b 80022a80 -80022a68: 24170040 li s7,64 -80022a6c: 24420001 addiu v0,v0,1 - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true) - { - if(ptrPlayer->InvalidPath == false) - { - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) -80022a70: 1445ffd3 bne v0,a1,800229c0 -80022a74: a3c60075 sb a2,117(s8) -80022a78: 1000ffd7 b 800229d8 -80022a7c: 00000000 nop - - dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft); - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) - { - dprintf("%d ",ptrPlayer->Waypoints[i]); -80022a80: 03d31021 addu v0,s8,s3 -80022a84: 94450034 lhu a1,52(v0) -80022a88: 02c02021 move a0,s6 -80022a8c: 0c00ed8f jal 8003b63c -80022a90: 26730002 addiu s3,s3,2 - // TODO: Assign path to aircraft - AircraftFromFlightDataIndexAddTargets(ptrPlayer->LockedAircraft, ptrPlayer->Waypoints); - - dprintf("Added these targets to aircraft %d:\n", ptrPlayer->LockedAircraft); - - for(i = 0; i < PLAYER_MAX_WAYPOINTS; i++) -80022a94: 1677fffb bne s3,s7,80022a84 -80022a98: 03d31021 addu v0,s8,s3 - { - dprintf("%d ",ptrPlayer->Waypoints[i]); - } - - dprintf("\n"); -80022a9c: 3c048004 lui a0,0x8004 -80022aa0: 0c00ed8f jal 8003b63c -80022aa4: 248408dc addiu a0,a0,2268 - - ptrPlayer->SelectTaxiwayParking = false; - // Clear waypoints array. - memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); -80022aa8: 02202021 move a0,s1 - dprintf("%d ",ptrPlayer->Waypoints[i]); - } - - dprintf("\n"); - - ptrPlayer->SelectTaxiwayParking = false; -80022aac: a3c00004 sb zero,4(s8) - // Clear waypoints array. - memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); -80022ab0: 24060040 li a2,64 -80022ab4: 0c00d7ab jal 80035eac -80022ab8: 00002821 move a1,zero - ptrPlayer->WaypointIdx = 0; - ptrPlayer->LastWaypointIdx = 0; - - ptrFlightData->State[ptrPlayer->LockedAircraft] = STATE_TAXIING; -80022abc: 93c2002f lbu v0,47(s8) -80022ac0: 24040002 li a0,2 -80022ac4: 24420080 addiu v0,v0,128 -80022ac8: 00021080 sll v0,v0,0x2 -80022acc: 02421021 addu v0,s2,v0 - dprintf("\n"); - - ptrPlayer->SelectTaxiwayParking = false; - // Clear waypoints array. - memset(ptrPlayer->Waypoints, 0, sizeof(uint16_t) * PLAYER_MAX_WAYPOINTS); - ptrPlayer->WaypointIdx = 0; -80022ad0: a3c00074 sb zero,116(s8) - ptrPlayer->LastWaypointIdx = 0; -80022ad4: a3c00075 sb zero,117(s8) - - ptrFlightData->State[ptrPlayer->LockedAircraft] = STATE_TAXIING; -80022ad8: ac440004 sw a0,4(v0) - } -} - -void GameStateShowAircraft(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - if(ptrPlayer->ShowAircraftData == true) -80022adc: 93c20001 lbu v0,1(s8) -80022ae0: 00000000 nop -80022ae4: 10400023 beqz v0,80022b74 -80022ae8: 00000000 nop - { - if(ptrPlayer->PadKeyReleased_Callback(PAD_TRIANGLE) == true) -80022aec: 8fc2007c lw v0,124(s8) -80022af0: 00000000 nop -80022af4: 0040f809 jalr v0 -80022af8: 24040010 li a0,16 -80022afc: 10400003 beqz v0,80022b0c -80022b00: 00000000 nop - { - ptrPlayer->ShowAircraftData = false; -80022b04: 1000001b b 80022b74 -80022b08: a3c00001 sb zero,1(s8) - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_SQUARE) == true) -80022b0c: 8fc2007c lw v0,124(s8) -80022b10: 00000000 nop -80022b14: 0040f809 jalr v0 -80022b18: 24040080 li a0,128 -80022b1c: 10400015 beqz v0,80022b74 -80022b20: 3c048004 lui a0,0x8004 - { - dprintf("Aircraft state = %d. STATE_IDLE = %d\n", - ptrFlightData->State[ptrPlayer->SelectedAircraft], -80022b24: 93c2002e lbu v0,46(s8) -80022b28: 00000000 nop -80022b2c: 24420080 addiu v0,v0,128 -80022b30: 00021080 sll v0,v0,0x2 -80022b34: 02421021 addu v0,s2,v0 - { - ptrPlayer->ShowAircraftData = false; - } - else if(ptrPlayer->PadKeyReleased_Callback(PAD_SQUARE) == true) - { - dprintf("Aircraft state = %d. STATE_IDLE = %d\n", -80022b38: 8c450004 lw a1,4(v0) -80022b3c: 248404d8 addiu a0,a0,1240 -80022b40: 0c00ed8f jal 8003b63c -80022b44: 00003021 move a2,zero - ptrFlightData->State[ptrPlayer->SelectedAircraft], - STATE_IDLE); - - if(ptrFlightData->State[ptrPlayer->SelectedAircraft] != STATE_IDLE) -80022b48: 93c4002e lbu a0,46(s8) -80022b4c: 00000000 nop -80022b50: 24820080 addiu v0,a0,128 -80022b54: 00021080 sll v0,v0,0x2 -80022b58: 02421021 addu v0,s2,v0 -80022b5c: 8c420004 lw v0,4(v0) -80022b60: 00000000 nop -80022b64: 10400003 beqz v0,80022b74 -80022b68: 24020001 li v0,1 - { - ptrPlayer->LockTarget = true; -80022b6c: a3c20006 sb v0,6(s8) - ptrPlayer->LockedAircraft = ptrPlayer->SelectedAircraft; -80022b70: a3c4002f sb a0,47(s8) - } - } - } - - if(ptrPlayer->PadKeyReleased_Callback(PAD_CIRCLE) == true) -80022b74: 8fc2007c lw v0,124(s8) -80022b78: 00000000 nop -80022b7c: 0040f809 jalr v0 -80022b80: 24040020 li a0,32 -80022b84: 1040000d beqz v0,80022bbc -80022b88: 00000000 nop - -bool GameGuiShowAircraftDataSpecialConditions(TYPE_PLAYER * ptrPlayer) -{ - // Aircraft list data cannot be shown under these conditions. - - if( (ptrPlayer->SelectRunway == true) -80022b8c: 93c20002 lbu v0,2(s8) -80022b90: 00000000 nop -80022b94: 14400009 bnez v0,80022bbc -80022b98: 00000000 nop - || -80022b9c: 93c20004 lbu v0,4(s8) -80022ba0: 00000000 nop -80022ba4: 14400005 bnez v0,80022bbc -80022ba8: 00000000 nop - (ptrPlayer->SelectTaxiwayParking == true) - || -80022bac: 93c20003 lbu v0,3(s8) -80022bb0: 00000000 nop -80022bb4: 10400166 beqz v0,80023150 -80022bb8: 00000000 nop - GameStateLockTarget(ptrPlayer); - GameStateSelectRunway(ptrPlayer, ptrFlightData); - GameStateSelectTaxiwayRunway(ptrPlayer, ptrFlightData); - GameStateSelectTaxiwayParking(ptrPlayer, ptrFlightData); - GameStateShowAircraft(ptrPlayer, ptrFlightData); - CameraHandler(ptrPlayer); -80022bbc: 0c008280 jal 80020a00 -80022bc0: 03c02021 move a0,s8 - GameGuiActiveAircraftList(ptrPlayer, ptrFlightData); -80022bc4: 26853764 addiu a1,s4,14180 -80022bc8: 0c008d95 jal 80023654 -80022bcc: 03c02021 move a0,s8 - GameGuiActiveAircraftPage(ptrPlayer, ptrFlightData); -80022bd0: 26853764 addiu a1,s4,14180 -80022bd4: 0c008dbe jal 800236f8 -80022bd8: 03c02021 move a0,s8 - -void GameSelectAircraftFromList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - FL_STATE aircraftState = ptrFlightData->State[ptrPlayer->SelectedAircraft]; - - if(ptrPlayer->ShowAircraftData == true) -80022bdc: 93c20001 lbu v0,1(s8) -80022be0: 00000000 nop -80022be4: 1040fd14 beqz v0,80022038 -80022be8: 00000000 nop - dprintf("\n"); -} - -void GameSelectAircraftFromList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - FL_STATE aircraftState = ptrFlightData->State[ptrPlayer->SelectedAircraft]; -80022bec: 93c2002e lbu v0,46(s8) -80022bf0: 00000000 nop -80022bf4: 24420080 addiu v0,v0,128 -80022bf8: 00021080 sll v0,v0,0x2 -80022bfc: 02421021 addu v0,s2,v0 -80022c00: 8c530004 lw s3,4(v0) - - if(ptrPlayer->ShowAircraftData == true) - { - if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true) -80022c04: 8fc2007c lw v0,124(s8) -80022c08: 00000000 nop -80022c0c: 0040f809 jalr v0 -80022c10: 24040040 li a0,64 -80022c14: 1040fd08 beqz v0,80022038 -80022c18: 00000000 nop - { - if(ptrPlayer->ActiveAircraft != 0) -80022c1c: 93c2002c lbu v0,44(s8) -80022c20: 00000000 nop -80022c24: 1040fd04 beqz v0,80022038 -80022c28: 24020004 li v0,4 - { - ptrPlayer->ShowAircraftData = false; - - switch(aircraftState) -80022c2c: 12620008 beq s3,v0,80022c50 -80022c30: a3c00001 sb zero,1(s8) -80022c34: 24020006 li v0,6 -80022c38: 12620008 beq s3,v0,80022c5c -80022c3c: 24160001 li s6,1 -80022c40: 1676000c bne s3,s6,80022c74 -80022c44: 02602821 move a1,s3 - case STATE_APPROACH: - ptrPlayer->SelectRunway = true; - break; - - case STATE_PARKED: - ptrPlayer->SelectTaxiwayRunway = true; -80022c48: 10000006 b 80022c64 -80022c4c: a3d30003 sb s3,3(s8) - ptrPlayer->ShowAircraftData = false; - - switch(aircraftState) - { - case STATE_APPROACH: - ptrPlayer->SelectRunway = true; -80022c50: 24020001 li v0,1 -80022c54: 1000fcf8 b 80022038 -80022c58: a3c20002 sb v0,2(s8) - ptrPlayer->SelectTaxiwayRunway = true; - GameSelectAircraft(ptrPlayer); - break; - - case STATE_LANDED: - ptrPlayer->SelectTaxiwayParking = true; -80022c5c: 24020001 li v0,1 -80022c60: a3c20004 sb v0,4(s8) - // Move camera to selected aircraft and add first waypoint. - GameSelectAircraft(ptrPlayer); -80022c64: 0c00858e jal 80021638 -80022c68: 03c02021 move a0,s8 -80022c6c: 1000fcf2 b 80022038 -80022c70: 00000000 nop - break; - - default: - dprintf("Incompatible state %d!\n",aircraftState); -80022c74: 8fa200a4 lw v0,164(sp) -80022c78: 0c00ed8f jal 8003b63c -80022c7c: 24440500 addiu a0,v0,1280 - // States remain unchanged - ptrPlayer->SelectRunway = false; -80022c80: a3c00002 sb zero,2(s8) - ptrPlayer->SelectTaxiwayRunway = false; -80022c84: a3c00003 sb zero,3(s8) - ptrPlayer->ShowAircraftData = true; -80022c88: 1000fceb b 80022038 -80022c8c: a3d60001 sb s6,1(s8) - uint8_t Hours[GAME_MAX_AIRCRAFT]; - uint8_t Minutes[GAME_MAX_AIRCRAFT]; - uint8_t Parking[GAME_MAX_AIRCRAFT]; - }TYPE_FLIGHT_DATA;*/ - - dprintf("\n*****************\n"); -80022c90: 0c00ed8f jal 8003b63c -80022c94: 02602021 move a0,s3 - dprintf("\tAIRCRAFT %d\n",i); -80022c98: 02202821 move a1,s1 -80022c9c: 0c00ed8f jal 8003b63c -80022ca0: 26c4052c addiu a0,s6,1324 - dprintf("*****************\n"); -80022ca4: 3c048004 lui a0,0x8004 -80022ca8: 0c00ed8f jal 8003b63c -80022cac: 2484053c addiu a0,a0,1340 - - if(FlightData.FlightDirection[i] == ARRIVAL) -80022cb0: 8fa3008c lw v1,140(sp) -80022cb4: 00111080 sll v0,s1,0x2 -80022cb8: 00431021 addu v0,v0,v1 - { - dprintf("Direction: %s\n","Arrival"); - } - else if(FlightData.FlightDirection[i] == DEPARTURE) -80022cbc: 8c420000 lw v0,0(v0) -80022cc0: 00000000 nop -80022cc4: 2442ffff addiu v0,v0,-1 -80022cc8: 2c420002 sltiu v0,v0,2 -80022ccc: 10400007 beqz v0,80022cec -80022cd0: 02511021 addu v0,s2,s1 - dprintf("\tAIRCRAFT %d\n",i); - dprintf("*****************\n"); - - if(FlightData.FlightDirection[i] == ARRIVAL) - { - dprintf("Direction: %s\n","Arrival"); -80022cd4: 3c058004 lui a1,0x8004 -80022cd8: 3c048004 lui a0,0x8004 -80022cdc: 24a50550 addiu a1,a1,1360 -80022ce0: 0c00ed8f jal 8003b63c -80022ce4: 24840558 addiu a0,a0,1368 - else if(FlightData.FlightDirection[i] == DEPARTURE) - { - dprintf("Direction: %s\n","Arrival"); - } - - dprintf("Time: %d:%d\n",FlightData.Hours[i],FlightData.Minutes[i]); -80022ce8: 02511021 addu v0,s2,s1 -80022cec: 904601c0 lbu a2,448(v0) -80022cf0: 904501a0 lbu a1,416(v0) -80022cf4: 3c048004 lui a0,0x8004 -80022cf8: 0c00ed8f jal 8003b63c -80022cfc: 24840568 addiu a0,a0,1384 - - dprintf("State: "); -80022d00: 3c048004 lui a0,0x8004 -80022d04: 0c00ed8f jal 8003b63c -80022d08: 24840578 addiu a0,a0,1400 - - switch(FlightData.State[i]) -80022d0c: 26220080 addiu v0,s1,128 -80022d10: 00021080 sll v0,v0,0x2 -80022d14: 02421021 addu v0,s2,v0 -80022d18: 8c420004 lw v0,4(v0) -80022d1c: 00000000 nop -80022d20: 2c430007 sltiu v1,v0,7 -80022d24: 1060001c beqz v1,80022d98 -80022d28: 00021080 sll v0,v0,0x2 -80022d2c: 02a21021 addu v0,s5,v0 -80022d30: 8c420000 lw v0,0(v0) -80022d34: 00000000 nop -80022d38: 00400008 jr v0 -80022d3c: 00000000 nop - { - case STATE_APPROACH: - dprintf("Approach"); -80022d40: 3c048004 lui a0,0x8004 -80022d44: 10000012 b 80022d90 -80022d48: 24840580 addiu a0,a0,1408 - break; - - case STATE_TAXIING: - dprintf("Taxiing"); -80022d4c: 3c048004 lui a0,0x8004 -80022d50: 1000000f b 80022d90 -80022d54: 2484058c addiu a0,a0,1420 - break; - - case STATE_FINAL: - dprintf("Final"); -80022d58: 3c048004 lui a0,0x8004 -80022d5c: 1000000c b 80022d90 -80022d60: 24840594 addiu a0,a0,1428 - break; - - case STATE_IDLE: - dprintf("Idle"); -80022d64: 3c048004 lui a0,0x8004 -80022d68: 10000009 b 80022d90 -80022d6c: 2484059c addiu a0,a0,1436 - break; - - case STATE_PARKED: - dprintf("Parked"); -80022d70: 3c048004 lui a0,0x8004 -80022d74: 10000006 b 80022d90 -80022d78: 248405a4 addiu a0,a0,1444 - break; - - case STATE_LANDED: - dprintf("Landed"); -80022d7c: 3c048004 lui a0,0x8004 -80022d80: 10000003 b 80022d90 -80022d84: 248405ac addiu a0,a0,1452 - break; - - case STATE_TAKEOFF: - dprintf("Takeoff"); -80022d88: 3c048004 lui a0,0x8004 -80022d8c: 248405b4 addiu a0,a0,1460 -80022d90: 0c00ed8f jal 8003b63c -80022d94: 00000000 nop - break; - - default: - break; - } - dprintf("\n"); -80022d98: 8fa20098 lw v0,152(sp) - } - } - - if(PadOneKeyReleased(PAD_CIRCLE) == true) - { - for(i = 0; i < FlightData.nAircraft ; i++) -80022d9c: 26310001 addiu s1,s1,1 - break; - - default: - break; - } - dprintf("\n"); -80022da0: 0c00ed8f jal 8003b63c -80022da4: 244408dc addiu a0,v0,2268 - } - } - - if(PadOneKeyReleased(PAD_CIRCLE) == true) - { - for(i = 0; i < FlightData.nAircraft ; i++) -80022da8: 1000fcb2 b 80022074 -80022dac: 323100ff andi s1,s1,0xff - static bool rwy_sine_decrease = false; - TYPE_ISOMETRIC_POS tileIsoPos; - TYPE_CARTESIAN_POS tileCartPos; - - // Prepare runway to be painted in blue if player is on runway selection mode - if(ptrPlayer->SelectRunway == true) -80022db0: 92220002 lbu v0,2(s1) -80022db4: 00000000 nop -80022db8: 1040000a beqz v0,80022de4 -80022dbc: 0000a821 move s5,zero - { - GameGetSelectedRunwayArray(GameRwy[ptrPlayer->SelectedRunway]); -80022dc0: 96220030 lhu v0,48(s1) -80022dc4: 00000000 nop -80022dc8: 00021840 sll v1,v0,0x1 -80022dcc: 3c028004 lui v0,0x8004 -80022dd0: 24423a08 addiu v0,v0,14856 -80022dd4: 00621021 addu v0,v1,v0 -80022dd8: 94440000 lhu a0,0(v0) -80022ddc: 0c008502 jal 80021408 -80022de0: 00000000 nop - columns++; - } - else - { - rows++; - columns = 0; -80022de4: 00009821 move s3,zero -80022de8: 0000f021 move s8,zero - } - - dprintf("\n");*/ - } - - for(i = 0 ; i < GameLevelSize; i++) -80022dec: 3c028007 lui v0,0x8007 -80022df0: 90421c11 lbu v0,7185(v0) -80022df4: 00000000 nop -80022df8: 03c2102b sltu v0,s8,v0 -80022dfc: 104000c6 beqz v0,80023118 -80022e00: 00000000 nop - { - // Flipped tiles have bit 7 enabled - if(GameLevelBuffer[i] & TILE_MIRROR_FLAG) -80022e04: 8fa2007c lw v0,124(sp) -80022e08: 00000000 nop -80022e0c: 03c21821 addu v1,s8,v0 -80022e10: 90620000 lbu v0,0(v1) -80022e14: 00000000 nop -80022e18: 00022600 sll a0,v0,0x18 -80022e1c: 00042603 sra a0,a0,0x18 -80022e20: 04810005 bgez a0,80022e38 -80022e24: 0000b021 move s6,zero - { - flip_id = true; - aux_id = GameLevelBuffer[i]; - GameLevelBuffer[i] &= ~(TILE_MIRROR_FLAG); -80022e28: 3044007f andi a0,v0,0x7f -80022e2c: a0640000 sb a0,0(v1) -80022e30: afa20090 sw v0,144(sp) - for(i = 0 ; i < GameLevelSize; i++) - { - // Flipped tiles have bit 7 enabled - if(GameLevelBuffer[i] & TILE_MIRROR_FLAG) - { - flip_id = true; -80022e34: 24160001 li s6,1 - else - { - flip_id = false; - } - - if(GameLevelBuffer[i] == TILE_NOTHING) -80022e38: 8fa20088 lw v0,136(sp) -80022e3c: 240300ff li v1,255 -80022e40: 005e1021 addu v0,v0,s8 -80022e44: 90420000 lbu v0,0(v0) -80022e48: 00000000 nop -80022e4c: 104300af beq v0,v1,8002310c -80022e50: 2c430010 sltiu v1,v0,16 - { - // Skip empty tiles - continue; - } - - if(GameLevelBuffer[i] <= LAST_TILE_TILESET1) -80022e54: 14600008 bnez v1,80022e78 -80022e58: 2442fff0 addiu v0,v0,-16 - { - // Draw using GameTilesetSpr - ptrTileset = &GameTilesetSpr; - } - else if( (GameLevelBuffer[i] > LAST_TILE_TILESET1) -80022e5c: 2c42000d sltiu v0,v0,13 -80022e60: 14400008 bnez v0,80022e84 -80022e64: 00000000 nop - } - else - { - ptrTileset = NULL; - - if(flip_id == false) -80022e68: 16c000c8 bnez s6,8002318c -80022e6c: 27c70001 addiu a3,s8,1 -80022e70: 1000ffde b 80022dec -80022e74: 30feffff andi s8,a3,0xffff - } - - if(GameLevelBuffer[i] <= LAST_TILE_TILESET1) - { - // Draw using GameTilesetSpr - ptrTileset = &GameTilesetSpr; -80022e78: 3c038004 lui v1,0x8004 -80022e7c: 10000003 b 80022e8c -80022e80: 24773aac addiu s7,v1,15020 - else if( (GameLevelBuffer[i] > LAST_TILE_TILESET1) - && - (GameLevelBuffer[i] <= LAST_TILE_TILESET2) ) - { - // Draw using GameTileset2Spr - ptrTileset = &GameTileset2Spr; -80022e84: 3c038004 lui v1,0x8004 -80022e88: 24773a80 addiu s7,v1,14976 - { - continue; - } - } - - ptrTileset->w = TILE_SIZE; -80022e8c: 24020040 li v0,64 -80022e90: a6e20006 sh v0,6(s7) - ptrTileset->h = TILE_SIZE; -80022e94: a6e20008 sh v0,8(s7) - - used_rwy = false; - - if( (ptrPlayer->SelectRunway == true) -80022e98: 92220002 lbu v0,2(s1) -80022e9c: 00000000 nop -80022ea0: 10400027 beqz v0,80022f40 -80022ea4: 00000000 nop - && -80022ea8: 13c00025 beqz s8,80022f40 -80022eac: 3c098004 lui t1,0x8004 - (i != 0) - && - (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) ) -80022eb0: 24060010 li a2,16 -80022eb4: 25253744 addiu a1,t1,14148 -80022eb8: 03c02021 move a0,s8 -80022ebc: 0c00a067 jal 8002819c -80022ec0: afa900a0 sw t1,160(sp) - used_rwy = false; - - if( (ptrPlayer->SelectRunway == true) - && - (i != 0) - && -80022ec4: 1040001e beqz v0,80022f40 -80022ec8: 00004021 move t0,zero - { - for(j = 0; j < GAME_MAX_RUNWAYS; j++) - { - if(GameUsedRwy[j] != 0) - { - if(SystemContains_u16(GameUsedRwy[j], GameRwyArray, GAME_MAX_RWY_LENGTH) == true) -80022ecc: 8fa900a0 lw t1,160(sp) -80022ed0: 00000000 nop -80022ed4: 25293744 addiu t1,t1,14148 - && - (i != 0) - && - (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) ) - { - for(j = 0; j < GAME_MAX_RUNWAYS; j++) -80022ed8: 240a0020 li t2,32 - { - if(GameUsedRwy[j] != 0) -80022edc: 8fa2009c lw v0,156(sp) -80022ee0: 00000000 nop -80022ee4: 00481021 addu v0,v0,t0 -80022ee8: 94440000 lhu a0,0(v0) -80022eec: 00000000 nop -80022ef0: 14800007 bnez a0,80022f10 -80022ef4: 01202821 move a1,t1 -80022ef8: 25080002 addiu t0,t0,2 - && - (i != 0) - && - (SystemContains_u16(i, GameRwyArray, GAME_MAX_RWY_LENGTH) == true) ) - { - for(j = 0; j < GAME_MAX_RUNWAYS; j++) -80022efc: 150afff7 bne t0,t2,80022edc -80022f00: 3c028007 lui v0,0x8007 - ptrTileset->b = NORMAL_LUMINANCE >> 2; - ptrTileset->g = NORMAL_LUMINANCE >> 2; - } - else - { - ptrTileset->r = NORMAL_LUMINANCE >> 2; -80022f04: a2e8000e sb t0,14(s7) - ptrTileset->g = NORMAL_LUMINANCE >> 2; -80022f08: 1000009d b 80023180 -80022f0c: a2e8000f sb t0,15(s7) - { - for(j = 0; j < GAME_MAX_RUNWAYS; j++) - { - if(GameUsedRwy[j] != 0) - { - if(SystemContains_u16(GameUsedRwy[j], GameRwyArray, GAME_MAX_RWY_LENGTH) == true) -80022f10: 24060010 li a2,16 -80022f14: afaa00a8 sw t2,168(sp) -80022f18: afa800a4 sw t0,164(sp) -80022f1c: 0c00a067 jal 8002819c -80022f20: afa900a0 sw t1,160(sp) -80022f24: 8fa900a0 lw t1,160(sp) -80022f28: 8fa800a4 lw t0,164(sp) -80022f2c: 8faa00a8 lw t2,168(sp) -80022f30: 1040fff2 beqz v0,80022efc -80022f34: 25080002 addiu t0,t0,2 - } - } - - if(used_rwy == true) - { - ptrTileset->r = rwy_sine; -80022f38: 1000008a b 80023164 -80022f3c: 3c028007 lui v0,0x8007 - ptrTileset->r = NORMAL_LUMINANCE >> 2; - ptrTileset->g = NORMAL_LUMINANCE >> 2; - ptrTileset->b = rwy_sine; - } - } - else if( ( (ptrPlayer->SelectTaxiwayParking == true) -80022f40: 92220004 lbu v0,4(s1) -80022f44: 00000000 nop -80022f48: 14400005 bnez v0,80022f60 -80022f4c: 00000000 nop - || -80022f50: 92220003 lbu v0,3(s1) -80022f54: 00000000 nop -80022f58: 10400018 beqz v0,80022fbc -80022f5c: 2402ff80 li v0,-128 - (ptrPlayer->SelectTaxiwayRunway == true) ) - && -80022f60: 13c00016 beqz s8,80022fbc -80022f64: 2402ff80 li v0,-128 - (i != 0) - && - ( (SystemContains_u16(i, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == true) -80022f68: 03c02021 move a0,s8 -80022f6c: 24060020 li a2,32 -80022f70: 0c00a067 jal 8002819c -80022f74: 26250034 addiu a1,s1,52 -80022f78: 96240032 lhu a0,50(s1) - else if( ( (ptrPlayer->SelectTaxiwayParking == true) - || - (ptrPlayer->SelectTaxiwayRunway == true) ) - && - (i != 0) - && -80022f7c: 14400004 bnez v0,80022f90 -80022f80: 3402ffff li v0,0xffff - ( (SystemContains_u16(i, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == true) - || -80022f84: 149e000d bne a0,s8,80022fbc -80022f88: 2402ff80 li v0,-128 - (i == ptrPlayer->SelectedTile) ) - && -80022f8c: 3402ffff li v0,0xffff -80022f90: 10820009 beq a0,v0,80022fb8 -80022f94: 00000000 nop - (ptrPlayer->SelectedTile != GAME_INVALID_TILE_SELECTION) ) - { - if(ptrPlayer->InvalidPath == true) -80022f98: 92240005 lbu a0,5(s1) -80022f9c: 00000000 nop -80022fa0: 14800070 bnez a0,80023164 -80022fa4: 3c028007 lui v0,0x8007 - ptrTileset->b = NORMAL_LUMINANCE >> 2; - ptrTileset->g = NORMAL_LUMINANCE >> 2; - } - else - { - ptrTileset->r = NORMAL_LUMINANCE >> 2; -80022fa8: 24040020 li a0,32 -80022fac: a2e4000e sb a0,14(s7) - ptrTileset->g = NORMAL_LUMINANCE >> 2; -80022fb0: 10000073 b 80023180 -80022fb4: a2e4000f sb a0,15(s7) - ptrTileset->b = rwy_sine; - } - } - else - { - ptrTileset->r = NORMAL_LUMINANCE; -80022fb8: 2402ff80 li v0,-128 -80022fbc: a2e2000e sb v0,14(s7) - ptrTileset->g = NORMAL_LUMINANCE; -80022fc0: a2e2000f sb v0,15(s7) - ptrTileset->b = NORMAL_LUMINANCE; -80022fc4: a2e20010 sb v0,16(s7) - } - - if(System100msTick() == true) -80022fc8: 0c009fba jal 80027ee8 -80022fcc: 00000000 nop -80022fd0: 10400014 beqz v0,80023024 -80022fd4: 3c058007 lui a1,0x8007 - { - if(rwy_sine_decrease == false) -80022fd8: 90a41c00 lbu a0,7168(a1) -80022fdc: 00000000 nop -80022fe0: 14800008 bnez a0,80023004 -80022fe4: 3c028007 lui v0,0x8007 - { - if(rwy_sine < 255) -80022fe8: 90441c01 lbu a0,7169(v0) -80022fec: 240600ff li a2,255 -80022ff0: 14860009 bne a0,a2,80023018 -80022ff4: 24840001 addiu a0,a0,1 - { - rwy_sine++; - } - else - { - rwy_sine_decrease = true; -80022ff8: 24020001 li v0,1 -80022ffc: 10000009 b 80023024 -80023000: a0a21c00 sb v0,7168(a1) - } - } - else - { - if(rwy_sine > (NORMAL_LUMINANCE >> 2)) -80023004: 90441c01 lbu a0,7169(v0) -80023008: 00000000 nop -8002300c: 2c860021 sltiu a2,a0,33 -80023010: 14c00003 bnez a2,80023020 -80023014: 2484ffff addiu a0,a0,-1 - { - rwy_sine--; -80023018: 10000002 b 80023024 -8002301c: a0441c01 sb a0,7169(v0) - } - else - { - rwy_sine_decrease = false; -80023020: a0a01c00 sb zero,7168(a1) - } - } - } - - // TODO: Isometric -> Cartesian conversion - tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT); -80023024: 00131180 sll v0,s3,0x6 -80023028: a7a20010 sh v0,16(sp) - tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT); - tileIsoPos.z = 0; - - tileCartPos = GfxIsometricToCartesian(&tileIsoPos); -8002302c: 27a40050 addiu a0,sp,80 - } - } - - // TODO: Isometric -> Cartesian conversion - tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT); - tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT); -80023030: 00151180 sll v0,s5,0x6 - tileIsoPos.z = 0; - - tileCartPos = GfxIsometricToCartesian(&tileIsoPos); -80023034: 27a50010 addiu a1,sp,16 - } - } - - // TODO: Isometric -> Cartesian conversion - tileIsoPos.x = columns << (TILE_SIZE_BIT_SHIFT); - tileIsoPos.y = rows << (TILE_SIZE_BIT_SHIFT); -80023038: a7a20012 sh v0,18(sp) - tileIsoPos.z = 0; - - tileCartPos = GfxIsometricToCartesian(&tileIsoPos); -8002303c: 0c0091ac jal 800246b0 -80023040: a7a00014 sh zero,20(sp) - - ptrTileset->x = tileCartPos.x; - ptrTileset->y = tileCartPos.y; -80023044: 87a20052 lh v0,82(sp) - - // Set coordinate origin to left upper corner - ptrTileset->x -= TILE_SIZE >> 1; -80023048: 97a40050 lhu a0,80(sp) - ptrTileset->y -= TILE_SIZE >> 2; -8002304c: 2442fff0 addiu v0,v0,-16 -80023050: a6e20002 sh v0,2(s7) - ptrTileset->x -= rows << (TILE_SIZE_BIT_SHIFT - 1); - - ptrTileset->y = rows << (TILE_SIZE_BIT_SHIFT - 2); - ptrTileset->y += columns << (TILE_SIZE_BIT_SHIFT - 2);*/ - - if(columns < GameLevelColumns -1 ) -80023054: 3c028007 lui v0,0x8007 -80023058: 90421c12 lbu v0,7186(v0) - - ptrTileset->x = tileCartPos.x; - ptrTileset->y = tileCartPos.y; - - // Set coordinate origin to left upper corner - ptrTileset->x -= TILE_SIZE >> 1; -8002305c: 2484ffe0 addiu a0,a0,-32 - ptrTileset->x -= rows << (TILE_SIZE_BIT_SHIFT - 1); - - ptrTileset->y = rows << (TILE_SIZE_BIT_SHIFT - 2); - ptrTileset->y += columns << (TILE_SIZE_BIT_SHIFT - 2);*/ - - if(columns < GameLevelColumns -1 ) -80023060: 2442ffff addiu v0,v0,-1 -80023064: 0262102a slt v0,s3,v0 -80023068: 10400004 beqz v0,8002307c -8002306c: a6e40000 sh a0,0(s7) - { - columns++; -80023070: 26730001 addiu s3,s3,1 -80023074: 10000004 b 80023088 -80023078: 327300ff andi s3,s3,0xff - } - else - { - rows++; -8002307c: 26b50001 addiu s5,s5,1 -80023080: 32b500ff andi s5,s5,0xff - columns = 0; -80023084: 00009821 move s3,zero - } - - if(ptrTileset != NULL) - { - if(flip_id == true) -80023088: 12c00005 beqz s6,800230a0 -8002308c: 00000000 nop - { - ptrTileset->attribute |= H_FLIP; -80023090: 8ee20014 lw v0,20(s7) -80023094: 00000000 nop -80023098: 34420020 ori v0,v0,0x20 -8002309c: aee20014 sw v0,20(s7) - } - } - - ptrTileset->u = (short)(GameLevelBuffer[i] % COLUMNS_PER_TILESET)<v = (short)(GameLevelBuffer[i] / COLUMNS_PER_TILESET)<attribute |= H_FLIP; - } - } - - ptrTileset->u = (short)(GameLevelBuffer[i] % COLUMNS_PER_TILESET)<v = (short)(GameLevelBuffer[i] / COLUMNS_PER_TILESET)< -800230c8: a2e20005 sb v0,5(s7) - { - flip_id = false; - GameLevelBuffer[i] = aux_id; -800230cc: 93a20090 lbu v0,144(sp) -800230d0: 00000000 nop -800230d4: a0820000 sb v0,0(a0) - } - - // dprintf("Tile %d, attribute 0x%X\n",i,ptrTileset->attribute); - - CameraApplyCoordinatesToSprite(ptrPlayer, ptrTileset); -800230d8: 02e02821 move a1,s7 -800230dc: 0c00825d jal 80020974 -800230e0: 02202021 move a0,s1 - GfxSortSprite(ptrTileset); -800230e4: 0c0090d2 jal 80024348 -800230e8: 02e02021 move a0,s7 - - if(ptrTileset->attribute & H_FLIP) -800230ec: 8ee20014 lw v0,20(s7) -800230f0: 00000000 nop -800230f4: 30440020 andi a0,v0,0x20 -800230f8: 10800005 beqz a0,80023110 -800230fc: 27c70001 addiu a3,s8,1 - { - ptrTileset->attribute &= ~(H_FLIP); -80023100: 2404ffdf li a0,-33 -80023104: 00441024 and v0,v0,a0 -80023108: aee20014 sw v0,20(s7) - } - - dprintf("\n");*/ - } - - for(i = 0 ; i < GameLevelSize; i++) -8002310c: 27c70001 addiu a3,s8,1 -80023110: 1000ff36 b 80022dec -80023114: 30feffff andi s8,a3,0xffff - { - ptrTileset->attribute &= ~(H_FLIP); - } - } - - if( (ptrPlayer->SelectTaxiwayParking == true) -80023118: 92220004 lbu v0,4(s1) -8002311c: 00000000 nop -80023120: 14400005 bnez v0,80023138 -80023124: 3c048004 lui a0,0x8004 - || -80023128: 92220003 lbu v0,3(s1) -8002312c: 00000000 nop -80023130: 10400003 beqz v0,80023140 -80023134: 00000000 nop - (ptrPlayer->SelectTaxiwayRunway == true) ) - { - GfxSortSprite(&GameMouseSpr); -80023138: 0c0090d2 jal 80024348 -8002313c: 24843a28 addiu a0,a0,14888 - for(i = 0; i < MAX_PLAYERS ; i++) - { - if(PlayerData[i].Active == true) - { - GameRenderLevel(&PlayerData[i]); - AircraftRender(&PlayerData[i]); -80023140: 0c0081be jal 800206f8 -80023144: 02202021 move a0,s1 -80023148: 1000fbf3 b 80022118 -8002314c: 00000000 nop - if(ptrPlayer->PadKeyReleased_Callback(PAD_CIRCLE) == true) - { - if(GameGuiShowAircraftDataSpecialConditions(ptrPlayer) == false) - { - //Invert ptrPlayer->ShowAircraftData value - ptrPlayer->ShowAircraftData = ptrPlayer->ShowAircraftData ? false : true; -80023150: 93c20001 lbu v0,1(s8) -80023154: 00000000 nop -80023158: 38420001 xori v0,v0,0x1 -8002315c: 1000fe97 b 80022bbc -80023160: a3c20001 sb v0,1(s8) - } - } - - if(used_rwy == true) - { - ptrTileset->r = rwy_sine; -80023164: 90421c01 lbu v0,7169(v0) -80023168: 00000000 nop -8002316c: a2e2000e sb v0,14(s7) - ptrTileset->b = NORMAL_LUMINANCE >> 2; -80023170: 24020020 li v0,32 -80023174: a2e20010 sb v0,16(s7) - ptrTileset->g = NORMAL_LUMINANCE >> 2; -80023178: 1000ff93 b 80022fc8 -8002317c: a2e2000f sb v0,15(s7) - } - else - { - ptrTileset->r = NORMAL_LUMINANCE >> 2; - ptrTileset->g = NORMAL_LUMINANCE >> 2; - ptrTileset->b = rwy_sine; -80023180: 90421c01 lbu v0,7169(v0) - } - else - { - ptrTileset->r = NORMAL_LUMINANCE; - ptrTileset->g = NORMAL_LUMINANCE; - ptrTileset->b = NORMAL_LUMINANCE; -80023184: 1000ff90 b 80022fc8 -80023188: a2e20010 sb v0,16(s7) - { - continue; - } - } - - ptrTileset->w = TILE_SIZE; -8002318c: a4000006 sh zero,6(zero) -80023190: 0000000d break - -80023194 : -} - -uint8_t GameGetFirstActiveAircraft(void) -{ - return firstActiveAircraft; -} -80023194: 3c028007 lui v0,0x8007 -80023198: 90421c0d lbu v0,7181(v0) -8002319c: 03e00008 jr ra -800231a0: 00000000 nop - -800231a4 : - -uint8_t GameGetLastActiveAircraft(void) -{ - return lastActiveAircraft; -} -800231a4: 3c028007 lui v0,0x8007 -800231a8: 90421c0c lbu v0,7180(v0) -800231ac: 03e00008 jr ra -800231b0: 00000000 nop - -800231b4 : -} - -char* GetGameLevelTitle(void) -{ - return GameLevelTitle; -} -800231b4: 3c028004 lui v0,0x8004 -800231b8: 03e00008 jr ra -800231bc: 2442330c addiu v0,v0,13068 - -800231c0 : - }*/ -} - -void GameSetTime(uint8_t hour, uint8_t minutes) -{ - GameHour = hour; -800231c0: 3c028007 lui v0,0x8007 -800231c4: a0441c10 sb a0,7184(v0) - GameMinutes = minutes; -800231c8: 3c028007 lui v0,0x8007 -800231cc: 03e00008 jr ra -800231d0: a0451c0f sb a1,7183(v0) - -800231d4 : - -fix16_t GameGetXFromTile(uint16_t tile) -{ - fix16_t retVal; - - tile %= GameLevelColumns; -800231d4: 3c028007 lui v0,0x8007 - - retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT); -800231d8: 90421c12 lbu v0,7186(v0) - } - } -} - -fix16_t GameGetXFromTile(uint16_t tile) -{ -800231dc: 3084ffff andi a0,a0,0xffff - fix16_t retVal; - - tile %= GameLevelColumns; - - retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT); -800231e0: 14400002 bnez v0,800231ec -800231e4: 0082001a div zero,a0,v0 -800231e8: 0007000d break 0x7 -800231ec: 00001010 mfhi v0 -800231f0: 3042ffff andi v0,v0,0xffff -800231f4: 00021180 sll v0,v0,0x6 - // Always point to tile center - retVal += TILE_SIZE >> 1; - - retVal = fix16_from_int(retVal); - - return retVal; -800231f8: 24420020 addiu v0,v0,32 -} -800231fc: 03e00008 jr ra -80023200: 00021400 sll v0,v0,0x10 - -80023204 : - -fix16_t GameGetYFromTile(uint16_t tile) -{ - fix16_t retVal; - - tile /= GameLevelColumns; -80023204: 3c028007 lui v0,0x8007 - - retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT); -80023208: 90421c12 lbu v0,7186(v0) - - return retVal; -} - -fix16_t GameGetYFromTile(uint16_t tile) -{ -8002320c: 3084ffff andi a0,a0,0xffff - fix16_t retVal; - - tile /= GameLevelColumns; - - retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT); -80023210: 14400002 bnez v0,8002321c -80023214: 0082001a div zero,a0,v0 -80023218: 0007000d break 0x7 -8002321c: 00001012 mflo v0 -80023220: 00021180 sll v0,v0,0x6 - // Always point to tile center - retVal += TILE_SIZE >> 1; - - retVal = fix16_from_int(retVal); - - return retVal; -80023224: 24420020 addiu v0,v0,32 -} -80023228: 03e00008 jr ra -8002322c: 00021400 sll v0,v0,0x10 - -80023230 : - -void GameTargetsReached(uint8_t index) -{ -80023230: 308400ff andi a0,a0,0xff - switch(FlightData.State[index]) -80023234: 24840080 addiu a0,a0,128 -80023238: 3c028004 lui v0,0x8004 -8002323c: 24423764 addiu v0,v0,14180 -80023240: 00042080 sll a0,a0,0x2 -80023244: 00442021 addu a0,v0,a0 -80023248: 8c830004 lw v1,4(a0) -8002324c: 24020005 li v0,5 -80023250: 14620003 bne v1,v0,80023260 -80023254: 00000000 nop - { - case STATE_FINAL: - FlightData.State[index] = STATE_LANDED; -80023258: 24020006 li v0,6 -8002325c: ac820004 sw v0,4(a0) -80023260: 03e00008 jr ra -80023264: 00000000 nop - -80023268 : -} - -uint8_t GameGetLevelColumns(void) -{ - return GameLevelColumns; -} -80023268: 3c028007 lui v0,0x8007 -8002326c: 90421c12 lbu v0,7186(v0) -80023270: 03e00008 jr ra -80023274: 00000000 nop - -80023278 : - -static char strNotificationRequest[NOTIFICATION_BUFFER_SIZE]; - -void GameGuiInit(void) -{ - LoadMenu( GameFileList, -80023278: 3c058004 lui a1,0x8004 -8002327c: 3c048004 lui a0,0x8004 - (GsSprite*)&ArrowsSpr }; - -static char strNotificationRequest[NOTIFICATION_BUFFER_SIZE]; - -void GameGuiInit(void) -{ -80023280: 27bdffe8 addiu sp,sp,-24 - LoadMenu( GameFileList, -80023284: 24a51448 addiu a1,a1,5192 -80023288: 24841454 addiu a0,a0,5204 -8002328c: 24070003 li a3,3 - (GsSprite*)&ArrowsSpr }; - -static char strNotificationRequest[NOTIFICATION_BUFFER_SIZE]; - -void GameGuiInit(void) -{ -80023290: afbf0014 sw ra,20(sp) - LoadMenu( GameFileList, -80023294: 0c0093c1 jal 80024f04 -80023298: 24060003 li a2,3 - GameFileDest, - sizeof(GameFileList) / sizeof(char*), - sizeof(GameFileDest) /sizeof(void*) ); - - PauseRect.x[0] = PAUSE_DIALOG_X; -8002329c: 3c038004 lui v1,0x8004 -800232a0: 24623bcc addiu v0,v1,15308 - PauseRect.y[0] = PAUSE_DIALOG_Y; - PauseRect.y[1] = PAUSE_DIALOG_Y; - PauseRect.y[2] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H; - PauseRect.y[3] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H; - - PauseRect.r[0] = PAUSE_DIALOG_R0; -800232a4: a0603bcc sb zero,15308(v1) - PauseRect.r[1] = PAUSE_DIALOG_R1; - PauseRect.r[2] = PAUSE_DIALOG_R2; - PauseRect.r[3] = PAUSE_DIALOG_R3; - - PauseRect.b[0] = PAUSE_DIALOG_B0; -800232a8: 24030028 li v1,40 -800232ac: a0430008 sb v1,8(v0) - PauseRect.b[1] = PAUSE_DIALOG_B1; -800232b0: a0430009 sb v1,9(v0) - PauseRect.b[2] = PAUSE_DIALOG_B2; - PauseRect.b[3] = PAUSE_DIALOG_B3; - - PauseRect.g[0] = PAUSE_DIALOG_G0; -800232b4: 2403ff80 li v1,-128 - GameFileDest, - sizeof(GameFileList) / sizeof(char*), - sizeof(GameFileDest) /sizeof(void*) ); - - PauseRect.x[0] = PAUSE_DIALOG_X; - PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W; -800232b8: 24040124 li a0,292 - PauseRect.b[0] = PAUSE_DIALOG_B0; - PauseRect.b[1] = PAUSE_DIALOG_B1; - PauseRect.b[2] = PAUSE_DIALOG_B2; - PauseRect.b[3] = PAUSE_DIALOG_B3; - - PauseRect.g[0] = PAUSE_DIALOG_G0; -800232bc: a0430004 sb v1,4(v0) - PauseRect.g[1] = PAUSE_DIALOG_G1; -800232c0: a0430005 sb v1,5(v0) - PauseRect.g[2] = PAUSE_DIALOG_G2; - PauseRect.g[3] = PAUSE_DIALOG_G3; - - PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -800232c4: 8c43001c lw v1,28(v0) -} -800232c8: 8fbf0014 lw ra,20(sp) - GameFileDest, - sizeof(GameFileList) / sizeof(char*), - sizeof(GameFileDest) /sizeof(void*) ); - - PauseRect.x[0] = PAUSE_DIALOG_X; - PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W; -800232cc: a444000e sh a0,14(v0) - PauseRect.x[2] = PAUSE_DIALOG_X; - PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W; -800232d0: a4440012 sh a0,18(v0) - - PauseRect.y[0] = PAUSE_DIALOG_Y; -800232d4: 2404001c li a0,28 - LoadMenu( GameFileList, - GameFileDest, - sizeof(GameFileList) / sizeof(char*), - sizeof(GameFileDest) /sizeof(void*) ); - - PauseRect.x[0] = PAUSE_DIALOG_X; -800232d8: 2405005c li a1,92 - PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W; - PauseRect.x[2] = PAUSE_DIALOG_X; - PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W; - - PauseRect.y[0] = PAUSE_DIALOG_Y; -800232dc: a4440014 sh a0,20(v0) - PauseRect.y[1] = PAUSE_DIALOG_Y; -800232e0: a4440016 sh a0,22(v0) - PauseRect.g[0] = PAUSE_DIALOG_G0; - PauseRect.g[1] = PAUSE_DIALOG_G1; - PauseRect.g[2] = PAUSE_DIALOG_G2; - PauseRect.g[3] = PAUSE_DIALOG_G3; - - PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -800232e4: 34630010 ori v1,v1,0x10 - PauseRect.x[2] = PAUSE_DIALOG_X; - PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W; - - PauseRect.y[0] = PAUSE_DIALOG_Y; - PauseRect.y[1] = PAUSE_DIALOG_Y; - PauseRect.y[2] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H; -800232e8: 240400d4 li a0,212 - LoadMenu( GameFileList, - GameFileDest, - sizeof(GameFileList) / sizeof(char*), - sizeof(GameFileDest) /sizeof(void*) ); - - PauseRect.x[0] = PAUSE_DIALOG_X; -800232ec: a445000c sh a1,12(v0) - PauseRect.x[1] = PAUSE_DIALOG_X + PAUSE_DIALOG_W; - PauseRect.x[2] = PAUSE_DIALOG_X; -800232f0: a4450010 sh a1,16(v0) - PauseRect.x[3] = PAUSE_DIALOG_X + PAUSE_DIALOG_W; - - PauseRect.y[0] = PAUSE_DIALOG_Y; - PauseRect.y[1] = PAUSE_DIALOG_Y; - PauseRect.y[2] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H; -800232f4: a4440018 sh a0,24(v0) - PauseRect.y[3] = PAUSE_DIALOG_Y + PAUSE_DIALOG_H; -800232f8: a444001a sh a0,26(v0) - - PauseRect.r[0] = PAUSE_DIALOG_R0; - PauseRect.r[1] = PAUSE_DIALOG_R1; -800232fc: a0400001 sb zero,1(v0) - PauseRect.r[2] = PAUSE_DIALOG_R2; -80023300: a0400002 sb zero,2(v0) - PauseRect.r[3] = PAUSE_DIALOG_R3; -80023304: a0400003 sb zero,3(v0) - - PauseRect.b[0] = PAUSE_DIALOG_B0; - PauseRect.b[1] = PAUSE_DIALOG_B1; - PauseRect.b[2] = PAUSE_DIALOG_B2; -80023308: a040000a sb zero,10(v0) - PauseRect.b[3] = PAUSE_DIALOG_B3; -8002330c: a040000b sb zero,11(v0) - - PauseRect.g[0] = PAUSE_DIALOG_G0; - PauseRect.g[1] = PAUSE_DIALOG_G1; - PauseRect.g[2] = PAUSE_DIALOG_G2; -80023310: a0400006 sb zero,6(v0) - PauseRect.g[3] = PAUSE_DIALOG_G3; -80023314: a0400007 sb zero,7(v0) - - PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80023318: ac43001c sw v1,28(v0) -} -8002331c: 03e00008 jr ra -80023320: 27bd0018 addiu sp,sp,24 - -80023324 : - uint8_t i; - static uint16_t NotificationTimer; - static uint8_t FirstNotification; - bool first_entered = true; - - if(GameStartupFlag == true) -80023324: 3c028007 lui v0,0x8007 -80023328: 90421d24 lbu v0,7460(v0) - - PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -} - -void GameGuiAircraftNotificationRequest(TYPE_FLIGHT_DATA * ptrFlightData) -{ -8002332c: 27bdffc8 addiu sp,sp,-56 -80023330: afb30020 sw s3,32(sp) -80023334: afbf0034 sw ra,52(sp) -80023338: afb70030 sw s7,48(sp) -8002333c: afb6002c sw s6,44(sp) -80023340: afb50028 sw s5,40(sp) -80023344: afb40024 sw s4,36(sp) -80023348: afb2001c sw s2,28(sp) -8002334c: afb10018 sw s1,24(sp) -80023350: afb00014 sw s0,20(sp) - uint8_t i; - static uint16_t NotificationTimer; - static uint8_t FirstNotification; - bool first_entered = true; - - if(GameStartupFlag == true) -80023354: 10400004 beqz v0,80023368 -80023358: 3c138007 lui s3,0x8007 - { - // Set initial values to static variables - NotificationTimer = 0; -8002335c: 3c028007 lui v0,0x8007 -80023360: a4401c20 sh zero,7200(v0) - FirstNotification = 0; -80023364: a2601c1e sb zero,7198(s3) - } - - for(i = FirstNotification; i < ptrFlightData->nAircraft ; i++) -80023368: 92711c1e lbu s1,7198(s3) -8002336c: 90830200 lbu v1,512(a0) -80023370: 00000000 nop -80023374: 0223102b sltu v0,s1,v1 -80023378: 10400078 beqz v0,8002355c -8002337c: 00913021 addu a2,a0,s1 - { - if(ptrFlightData->NotificationRequest[i] == true) -80023380: 90c20284 lbu v0,644(a2) -80023384: 00000000 nop -80023388: 10400072 beqz v0,80023554 -8002338c: 26310001 addiu s1,s1,1 -80023390: 2631ffff addiu s1,s1,-1 - { - // Prepare RGB data and (X,Y) coordinates for notification - // request rectangle. - NotificationGPoly4.r[0] = NOTIFICATION_GSGPOLY4_R0; -80023394: 3c158004 lui s5,0x8004 - NotificationGPoly4.r[1] = NOTIFICATION_GSGPOLY4_R1; -80023398: 26a23c58 addiu v0,s5,15448 - NotificationGPoly4.r[2] = NOTIFICATION_GSGPOLY4_R2; - NotificationGPoly4.r[3] = NOTIFICATION_GSGPOLY4_R3; - - NotificationGPoly4.g[0] = NOTIFICATION_GSGPOLY4_G0; -8002339c: 2403ff80 li v1,-128 -800233a0: a0430004 sb v1,4(v0) - NotificationGPoly4.g[1] = NOTIFICATION_GSGPOLY4_G1; -800233a4: a0430005 sb v1,5(v0) - NotificationGPoly4.g[2] = NOTIFICATION_GSGPOLY4_G2; - NotificationGPoly4.g[3] = NOTIFICATION_GSGPOLY4_G3; - - NotificationGPoly4.b[0] = NOTIFICATION_GSGPOLY4_B0; -800233a8: 24030028 li v1,40 -800233ac: a0430008 sb v1,8(v0) - NotificationGPoly4.b[1] = NOTIFICATION_GSGPOLY4_B1; -800233b0: a0430009 sb v1,9(v0) - NotificationGPoly4.b[2] = NOTIFICATION_GSGPOLY4_B2; - NotificationGPoly4.b[3] = NOTIFICATION_GSGPOLY4_B3; - - NotificationGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); -800233b4: 8c43001c lw v1,28(v0) - - NotificationGPoly4.x[0] = NOTIFICATION_GSGPOLY4_X0; -800233b8: 24050010 li a1,16 - NotificationGPoly4.b[0] = NOTIFICATION_GSGPOLY4_B0; - NotificationGPoly4.b[1] = NOTIFICATION_GSGPOLY4_B1; - NotificationGPoly4.b[2] = NOTIFICATION_GSGPOLY4_B2; - NotificationGPoly4.b[3] = NOTIFICATION_GSGPOLY4_B3; - - NotificationGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); -800233bc: 34630010 ori v1,v1,0x10 -800233c0: ac43001c sw v1,28(v0) - - NotificationGPoly4.x[0] = NOTIFICATION_GSGPOLY4_X0; - NotificationGPoly4.x[1] = NOTIFICATION_GSGPOLY4_X1; -800233c4: 24030160 li v1,352 -800233c8: a443000e sh v1,14(v0) - NotificationGPoly4.x[2] = NOTIFICATION_GSGPOLY4_X2; - NotificationGPoly4.x[3] = NOTIFICATION_GSGPOLY4_X3; -800233cc: a4430012 sh v1,18(v0) - - NotificationGPoly4.y[0] = NOTIFICATION_GSGPOLY4_Y0; -800233d0: 240300a8 li v1,168 - NotificationGPoly4.b[2] = NOTIFICATION_GSGPOLY4_B2; - NotificationGPoly4.b[3] = NOTIFICATION_GSGPOLY4_B3; - - NotificationGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - NotificationGPoly4.x[0] = NOTIFICATION_GSGPOLY4_X0; -800233d4: a445000c sh a1,12(v0) - NotificationGPoly4.x[1] = NOTIFICATION_GSGPOLY4_X1; - NotificationGPoly4.x[2] = NOTIFICATION_GSGPOLY4_X2; -800233d8: a4450010 sh a1,16(v0) - NotificationGPoly4.x[3] = NOTIFICATION_GSGPOLY4_X3; - - NotificationGPoly4.y[0] = NOTIFICATION_GSGPOLY4_Y0; -800233dc: a4430014 sh v1,20(v0) - NotificationGPoly4.y[2] = NOTIFICATION_GSGPOLY4_Y2; - NotificationGPoly4.y[3] = NOTIFICATION_GSGPOLY4_Y3; - - /* dprintf("Notification timer: %d.\n",NotificationTimer); */ - - if(++NotificationTimer >= NOTIFICATION_TIMER_LIMIT) -800233e0: 3c058007 lui a1,0x8007 - NotificationGPoly4.x[1] = NOTIFICATION_GSGPOLY4_X1; - NotificationGPoly4.x[2] = NOTIFICATION_GSGPOLY4_X2; - NotificationGPoly4.x[3] = NOTIFICATION_GSGPOLY4_X3; - - NotificationGPoly4.y[0] = NOTIFICATION_GSGPOLY4_Y0; - NotificationGPoly4.y[1] = NOTIFICATION_GSGPOLY4_Y1; -800233e4: a4430016 sh v1,22(v0) - NotificationGPoly4.y[2] = NOTIFICATION_GSGPOLY4_Y2; -800233e8: 240300e8 li v1,232 -800233ec: a4430018 sh v1,24(v0) - NotificationGPoly4.y[3] = NOTIFICATION_GSGPOLY4_Y3; -800233f0: a443001a sh v1,26(v0) - - /* dprintf("Notification timer: %d.\n",NotificationTimer); */ - - if(++NotificationTimer >= NOTIFICATION_TIMER_LIMIT) -800233f4: 94a31c20 lhu v1,7200(a1) - { - if(ptrFlightData->NotificationRequest[i] == true) - { - // Prepare RGB data and (X,Y) coordinates for notification - // request rectangle. - NotificationGPoly4.r[0] = NOTIFICATION_GSGPOLY4_R0; -800233f8: a2a03c58 sb zero,15448(s5) - NotificationGPoly4.y[2] = NOTIFICATION_GSGPOLY4_Y2; - NotificationGPoly4.y[3] = NOTIFICATION_GSGPOLY4_Y3; - - /* dprintf("Notification timer: %d.\n",NotificationTimer); */ - - if(++NotificationTimer >= NOTIFICATION_TIMER_LIMIT) -800233fc: 24630001 addiu v1,v1,1 -80023400: 3063ffff andi v1,v1,0xffff -80023404: a4a31c20 sh v1,7200(a1) -80023408: 2c6300fa sltiu v1,v1,250 - if(ptrFlightData->NotificationRequest[i] == true) - { - // Prepare RGB data and (X,Y) coordinates for notification - // request rectangle. - NotificationGPoly4.r[0] = NOTIFICATION_GSGPOLY4_R0; - NotificationGPoly4.r[1] = NOTIFICATION_GSGPOLY4_R1; -8002340c: a0400001 sb zero,1(v0) - NotificationGPoly4.r[2] = NOTIFICATION_GSGPOLY4_R2; -80023410: a0400002 sb zero,2(v0) - NotificationGPoly4.r[3] = NOTIFICATION_GSGPOLY4_R3; -80023414: a0400003 sb zero,3(v0) - - NotificationGPoly4.g[0] = NOTIFICATION_GSGPOLY4_G0; - NotificationGPoly4.g[1] = NOTIFICATION_GSGPOLY4_G1; - NotificationGPoly4.g[2] = NOTIFICATION_GSGPOLY4_G2; -80023418: a0400006 sb zero,6(v0) - NotificationGPoly4.g[3] = NOTIFICATION_GSGPOLY4_G3; -8002341c: a0400007 sb zero,7(v0) - - NotificationGPoly4.b[0] = NOTIFICATION_GSGPOLY4_B0; - NotificationGPoly4.b[1] = NOTIFICATION_GSGPOLY4_B1; - NotificationGPoly4.b[2] = NOTIFICATION_GSGPOLY4_B2; -80023420: a040000a sb zero,10(v0) - NotificationGPoly4.b[3] = NOTIFICATION_GSGPOLY4_B3; -80023424: a040000b sb zero,11(v0) - NotificationGPoly4.y[2] = NOTIFICATION_GSGPOLY4_Y2; - NotificationGPoly4.y[3] = NOTIFICATION_GSGPOLY4_Y3; - - /* dprintf("Notification timer: %d.\n",NotificationTimer); */ - - if(++NotificationTimer >= NOTIFICATION_TIMER_LIMIT) -80023428: 14600005 bnez v1,80023440 -8002342c: 00408021 move s0,v0 - { - // Reset timer and notification request for current aircraft - FirstNotification = 0; -80023430: a2601c1e sb zero,7198(s3) - NotificationTimer = 0; -80023434: a4a01c20 sh zero,7200(a1) -80023438: 10000048 b 8002355c -8002343c: a0c00284 sb zero,644(a2) - { - if(first_entered == true) - { - // Prepare string for new notification request only once - first_entered = false; - RadioFont.max_ch_wrap = 18; -80023440: 3c178007 lui s7,0x8007 -80023444: 26e28d78 addiu v0,s7,-29320 -80023448: 24030012 li v1,18 -8002344c: a0430032 sb v1,50(v0) -void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset) -{ - memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE); - strncat( strNotificationRequest, - ptrFlightData->strFlightNumber[offset], - strlen(ptrFlightData->strFlightNumber[offset]) ); -80023450: 26340010 addiu s4,s1,16 - if(first_entered == true) - { - // Prepare string for new notification request only once - first_entered = false; - RadioFont.max_ch_wrap = 18; - RadioFont.flags |= FONT_WRAP_LINE; -80023454: 8c430034 lw v1,52(v0) -80023458: 0080b021 move s6,a0 - //dprintf("Bubble timer: %d\n",BubbleVibrationTimer); -} - -void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset) -{ - memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE); -8002345c: 3c128004 lui s2,0x8004 - strncat( strNotificationRequest, - ptrFlightData->strFlightNumber[offset], - strlen(ptrFlightData->strFlightNumber[offset]) ); -80023460: 0014a0c0 sll s4,s4,0x3 - if(first_entered == true) - { - // Prepare string for new notification request only once - first_entered = false; - RadioFont.max_ch_wrap = 18; - RadioFont.flags |= FONT_WRAP_LINE; -80023464: 34630002 ori v1,v1,0x2 - //dprintf("Bubble timer: %d\n",BubbleVibrationTimer); -} - -void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset) -{ - memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE); -80023468: 240600c8 li a2,200 -8002346c: 00002821 move a1,zero - strncat( strNotificationRequest, - ptrFlightData->strFlightNumber[offset], - strlen(ptrFlightData->strFlightNumber[offset]) ); -80023470: 02d4a021 addu s4,s6,s4 - //dprintf("Bubble timer: %d\n",BubbleVibrationTimer); -} - -void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset) -{ - memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE); -80023474: 26443ad8 addiu a0,s2,15064 -80023478: 0c00d7ab jal 80035eac -8002347c: ac430034 sw v1,52(v0) - strncat( strNotificationRequest, - ptrFlightData->strFlightNumber[offset], - strlen(ptrFlightData->strFlightNumber[offset]) ); -80023480: 0c00d8af jal 800362bc -80023484: 02802021 move a0,s4 -} - -void GameGuiPrepareNotificationString(TYPE_FLIGHT_DATA * ptrFlightData, uint8_t offset) -{ - memset(strNotificationRequest,0,NOTIFICATION_BUFFER_SIZE); - strncat( strNotificationRequest, -80023488: 00403021 move a2,v0 -8002348c: 02802821 move a1,s4 -80023490: 0c00dc6e jal 800371b8 -80023494: 26443ad8 addiu a0,s2,15064 - ptrFlightData->strFlightNumber[offset], - strlen(ptrFlightData->strFlightNumber[offset]) ); - - strcat(strNotificationRequest, " request for "); -80023498: 3c058004 lui a1,0x8004 -8002349c: 26443ad8 addiu a0,s2,15064 -800234a0: 0c00dc56 jal 80037158 -800234a4: 24a506bc addiu a1,a1,1724 - - switch(ptrFlightData->FlightDirection[offset]) -800234a8: 00112080 sll a0,s1,0x2 -800234ac: 02c42021 addu a0,s6,a0 -800234b0: 8c820000 lw v0,0(a0) -800234b4: 24030001 li v1,1 -800234b8: 10430006 beq v0,v1,800234d4 -800234bc: 02e0a021 move s4,s7 -800234c0: 24030002 li v1,2 -800234c4: 14430007 bne v0,v1,800234e4 -800234c8: 3c058004 lui a1,0x8004 - { - case DEPARTURE: - strcat(strNotificationRequest, "departure"); - break; - case ARRIVAL: - strcat(strNotificationRequest, "approach"); -800234cc: 10000003 b 800234dc -800234d0: 24a506d8 addiu a1,a1,1752 - strcat(strNotificationRequest, " request for "); - - switch(ptrFlightData->FlightDirection[offset]) - { - case DEPARTURE: - strcat(strNotificationRequest, "departure"); -800234d4: 3c058004 lui a1,0x8004 -800234d8: 24a506cc addiu a1,a1,1740 - break; - case ARRIVAL: - strcat(strNotificationRequest, "approach"); -800234dc: 0c00dc56 jal 80037158 -800234e0: 26443ad8 addiu a0,s2,15064 - break; - } - - strcat(strNotificationRequest, "."); -800234e4: 3c058004 lui a1,0x8004 -800234e8: 24a506e4 addiu a1,a1,1764 -800234ec: 0c00dc56 jal 80037158 -800234f0: 26443ad8 addiu a0,s2,15064 - } - - // Keep information about last aircraft notified... - // so that it gets called on next cycle - FirstNotification = i; - GsSortGPoly4(&NotificationGPoly4); -800234f4: 26a43c58 addiu a0,s5,15448 -800234f8: 0c00b0e6 jal 8002c398 -800234fc: a2711c1e sb s1,7198(s3) - FontPrintText( &RadioFont, -80023500: 96060014 lhu a2,20(s0) -80023504: 9605000c lhu a1,12(s0) -80023508: 24c60008 addiu a2,a2,8 -8002350c: 24a50008 addiu a1,a1,8 - } - - break; - } - } -} -80023510: 8fbf0034 lw ra,52(sp) -80023514: 8fb70030 lw s7,48(sp) -80023518: 8fb6002c lw s6,44(sp) -8002351c: 8fb50028 lw s5,40(sp) -80023520: 8fb30020 lw s3,32(sp) -80023524: 8fb10018 lw s1,24(sp) -80023528: 8fb00014 lw s0,20(sp) - - // Keep information about last aircraft notified... - // so that it gets called on next cycle - FirstNotification = i; - GsSortGPoly4(&NotificationGPoly4); - FontPrintText( &RadioFont, -8002352c: 26473ad8 addiu a3,s2,15064 -80023530: 00063400 sll a2,a2,0x10 - } - - break; - } - } -} -80023534: 8fb2001c lw s2,28(sp) - - // Keep information about last aircraft notified... - // so that it gets called on next cycle - FirstNotification = i; - GsSortGPoly4(&NotificationGPoly4); - FontPrintText( &RadioFont, -80023538: 00052c00 sll a1,a1,0x10 -8002353c: 26848d78 addiu a0,s4,-29320 - } - - break; - } - } -} -80023540: 8fb40024 lw s4,36(sp) - - // Keep information about last aircraft notified... - // so that it gets called on next cycle - FirstNotification = i; - GsSortGPoly4(&NotificationGPoly4); - FontPrintText( &RadioFont, -80023544: 00063403 sra a2,a2,0x10 -80023548: 00052c03 sra a1,a1,0x10 -8002354c: 08008451 j 80021144 -80023550: 27bd0038 addiu sp,sp,56 - // Set initial values to static variables - NotificationTimer = 0; - FirstNotification = 0; - } - - for(i = FirstNotification; i < ptrFlightData->nAircraft ; i++) -80023554: 1000ff87 b 80023374 -80023558: 323100ff andi s1,s1,0xff - } - - break; - } - } -} -8002355c: 8fbf0034 lw ra,52(sp) -80023560: 8fb70030 lw s7,48(sp) -80023564: 8fb6002c lw s6,44(sp) -80023568: 8fb50028 lw s5,40(sp) -8002356c: 8fb40024 lw s4,36(sp) -80023570: 8fb30020 lw s3,32(sp) -80023574: 8fb2001c lw s2,28(sp) -80023578: 8fb10018 lw s1,24(sp) -8002357c: 8fb00014 lw s0,20(sp) -80023580: 03e00008 jr ra -80023584: 27bd0038 addiu sp,sp,56 - -80023588 : - -bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer) -{ -80023588: 27bdffc8 addiu sp,sp,-56 -8002358c: afb00024 sw s0,36(sp) - GfxSaveDisplayData(&SecondDisplay); -80023590: 3c108004 lui s0,0x8004 - } - } -} - -bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer) -{ -80023594: afb30030 sw s3,48(sp) -80023598: 00809821 move s3,a0 - GfxSaveDisplayData(&SecondDisplay); -8002359c: 26043ba0 addiu a0,s0,15264 - } - } -} - -bool GameGuiPauseDialog(TYPE_PLAYER * ptrPlayer) -{ -800235a0: afbf0034 sw ra,52(sp) -800235a4: afb2002c sw s2,44(sp) - GfxSaveDisplayData(&SecondDisplay); -800235a8: 0c009090 jal 80024240 -800235ac: afb10028 sw s1,40(sp) - - DrawFBRect(0, 0, X_SCREEN_RESOLUTION, VRAM_H, 0, 0, 0); -800235b0: afa00018 sw zero,24(sp) -800235b4: afa00014 sw zero,20(sp) -800235b8: afa00010 sw zero,16(sp) -800235bc: 24070200 li a3,512 -800235c0: 24060180 li a2,384 -800235c4: 00002821 move a1,zero -800235c8: 0c00bd2f jal 8002f4bc -800235cc: 00002021 move a0,zero - - while(GfxIsGPUBusy() == true); -800235d0: 0c00901d jal 80024074 -800235d4: 00000000 nop -800235d8: 1440fffd bnez v0,800235d0 -800235dc: 00000000 nop - return true; - } - - GfxSortSprite(&SecondDisplay); - - GsSortGPoly4(&PauseRect); -800235e0: 3c118004 lui s1,0x8004 - if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true) - { - return true; - } - - GfxSortSprite(&SecondDisplay); -800235e4: 26103ba0 addiu s0,s0,15264 - - GsSortGPoly4(&PauseRect); -800235e8: 26313bcc addiu s1,s1,15308 - - while(GfxIsGPUBusy() == true); - - do - { - if(ptrPlayer->PadKeyReleased_Callback(PAD_CROSS) == true) -800235ec: 8e62007c lw v0,124(s3) -800235f0: 00000000 nop -800235f4: 0040f809 jalr v0 -800235f8: 24040040 li a0,64 -800235fc: 1440000d bnez v0,80023634 -80023600: 00409021 move s2,v0 - { - return true; - } - - GfxSortSprite(&SecondDisplay); -80023604: 0c0090d2 jal 80024348 -80023608: 02002021 move a0,s0 - - GsSortGPoly4(&PauseRect); -8002360c: 0c00b0e6 jal 8002c398 -80023610: 02202021 move a0,s1 - - GfxDrawScene_Slow(); -80023614: 0c009030 jal 800240c0 -80023618: 00000000 nop - - }while(ptrPlayer->PadKeyReleased_Callback(PAD_START) == false); -8002361c: 8e62007c lw v0,124(s3) -80023620: 00000000 nop -80023624: 0040f809 jalr v0 -80023628: 24040800 li a0,2048 -8002362c: 1040ffef beqz v0,800235ec -80023630: 00000000 nop - - return false; -} -80023634: 8fbf0034 lw ra,52(sp) -80023638: 02401021 move v0,s2 -8002363c: 8fb30030 lw s3,48(sp) -80023640: 8fb2002c lw s2,44(sp) -80023644: 8fb10028 lw s1,40(sp) -80023648: 8fb00024 lw s0,36(sp) -8002364c: 03e00008 jr ra -80023650: 27bd0038 addiu sp,sp,56 - -80023654 : - -void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ -80023654: 27bdffe0 addiu sp,sp,-32 - uint8_t i; - uint8_t j = 0; - - // Clear all pointers for aircraft data first. - // Then, rebuild aircraft list for player. - memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT); -80023658: 24060020 li a2,32 - - return false; -} - -void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ -8002365c: afb10018 sw s1,24(sp) -80023660: afb00014 sw s0,20(sp) -80023664: 00808821 move s1,a0 -80023668: 00a08021 move s0,a1 - uint8_t i; - uint8_t j = 0; - - // Clear all pointers for aircraft data first. - // Then, rebuild aircraft list for player. - memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT); -8002366c: 24840007 addiu a0,a0,7 - - return false; -} - -void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ -80023670: afbf001c sw ra,28(sp) - uint8_t i; - uint8_t j = 0; - - // Clear all pointers for aircraft data first. - // Then, rebuild aircraft list for player. - memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT); -80023674: 0c00d7ab jal 80035eac -80023678: 00002821 move a1,zero - ptrPlayer->ActiveAircraft = 0; -8002367c: a220002c sb zero,44(s1) -80023680: 26050204 addiu a1,s0,516 -} - -void GameGuiActiveAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint8_t i; - uint8_t j = 0; -80023684: 00001821 move v1,zero - // Clear all pointers for aircraft data first. - // Then, rebuild aircraft list for player. - memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT); - ptrPlayer->ActiveAircraft = 0; - - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) -80023688: 00001021 move v0,zero -8002368c: 24060020 li a2,32 - { - if( (ptrFlightData->State[i] != STATE_IDLE) -80023690: 8ca40000 lw a0,0(a1) -80023694: 00000000 nop -80023698: 1080000e beqz a0,800236d4 -8002369c: 00000000 nop - && -800236a0: 8ca4fdfc lw a0,-516(a1) -800236a4: 8e270028 lw a3,40(s1) -800236a8: 00000000 nop -800236ac: 00872024 and a0,a0,a3 -800236b0: 10800008 beqz a0,800236d4 -800236b4: 24640001 addiu a0,v1,1 - (ptrFlightData->FlightDirection[i] & ptrPlayer->FlightDirection) ) - { - ptrPlayer->ActiveAircraftList[j++] = i; -800236b8: 02231821 addu v1,s1,v1 -800236bc: a0620007 sb v0,7(v1) - ptrPlayer->ActiveAircraft++; -800236c0: 9223002c lbu v1,44(s1) -800236c4: 00000000 nop -800236c8: 24630001 addiu v1,v1,1 -800236cc: a223002c sb v1,44(s1) - { - if( (ptrFlightData->State[i] != STATE_IDLE) - && - (ptrFlightData->FlightDirection[i] & ptrPlayer->FlightDirection) ) - { - ptrPlayer->ActiveAircraftList[j++] = i; -800236d0: 308300ff andi v1,a0,0xff - // Clear all pointers for aircraft data first. - // Then, rebuild aircraft list for player. - memset(ptrPlayer->ActiveAircraftList, 0, GAME_MAX_AIRCRAFT); - ptrPlayer->ActiveAircraft = 0; - - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) -800236d4: 24420001 addiu v0,v0,1 -800236d8: 304200ff andi v0,v0,0xff -800236dc: 1446ffec bne v0,a2,80023690 -800236e0: 24a50004 addiu a1,a1,4 - { - ptrPlayer->ActiveAircraftList[j++] = i; - ptrPlayer->ActiveAircraft++; - } - } -} -800236e4: 8fbf001c lw ra,28(sp) -800236e8: 8fb10018 lw s1,24(sp) -800236ec: 8fb00014 lw s0,20(sp) -800236f0: 03e00008 jr ra -800236f4: 27bd0020 addiu sp,sp,32 - -800236f8 : - -void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - while(ptrPlayer->ActiveAircraft < ptrPlayer->SelectedAircraft) -800236f8: 9085002c lbu a1,44(a0) -800236fc: 9082002e lbu v0,46(a0) -80023700: 00000000 nop -80023704: 00a2182b sltu v1,a1,v0 -80023708: 10600003 beqz v1,80023718 -8002370c: 2442ffff addiu v0,v0,-1 - { - ptrPlayer->SelectedAircraft--; -80023710: 1000fffa b 800236fc -80023714: a082002e sb v0,46(a0) - } - - while(ptrPlayer->ActiveAircraft < (uint8_t)(GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * ptrPlayer->FlightDataPage) ) -80023718: 9083002d lbu v1,45(a0) -8002371c: 00000000 nop -80023720: 00031080 sll v0,v1,0x2 -80023724: 00621021 addu v0,v1,v0 -80023728: 304200ff andi v0,v0,0xff -8002372c: 00a2102b sltu v0,a1,v0 -80023730: 10400003 beqz v0,80023740 -80023734: 2463ffff addiu v1,v1,-1 - { - ptrPlayer->FlightDataPage--; -80023738: 1000fff7 b 80023718 -8002373c: a083002d sb v1,45(a0) - } - - if(ptrPlayer->ShowAircraftData == true) -80023740: 90820001 lbu v0,1(a0) -80023744: 00000000 nop -80023748: 10400056 beqz v0,800238a4 -8002374c: 00000000 nop - } - } -} - -void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ -80023750: 27bdffe8 addiu sp,sp,-24 - ptrPlayer->FlightDataPage--; - } - - if(ptrPlayer->ShowAircraftData == true) - { - if(ptrPlayer->PadKeyReleased_Callback(PAD_DOWN) == true) -80023754: 8c82007c lw v0,124(a0) - } - } -} - -void GameGuiActiveAircraftPage(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ -80023758: afb00010 sw s0,16(sp) -8002375c: afbf0014 sw ra,20(sp) -80023760: 00808021 move s0,a0 - ptrPlayer->FlightDataPage--; - } - - if(ptrPlayer->ShowAircraftData == true) - { - if(ptrPlayer->PadKeyReleased_Callback(PAD_DOWN) == true) -80023764: 0040f809 jalr v0 -80023768: 24044000 li a0,16384 -8002376c: 10400010 beqz v0,800237b0 -80023770: 00000000 nop - { - if( ( (ptrPlayer->SelectedAircraft + 1) < ptrPlayer->ActiveAircraft) -80023774: 9202002e lbu v0,46(s0) -80023778: 9203002c lbu v1,44(s0) -8002377c: 24420001 addiu v0,v0,1 -80023780: 0043182a slt v1,v0,v1 -80023784: 1060000a beqz v1,800237b0 -80023788: 00000000 nop - && -8002378c: 9203002d lbu v1,45(s0) -80023790: 00000000 nop -80023794: 24630001 addiu v1,v1,1 -80023798: 00032080 sll a0,v1,0x2 -8002379c: 00831821 addu v1,a0,v1 -800237a0: 0043182a slt v1,v0,v1 -800237a4: 10600002 beqz v1,800237b0 -800237a8: 00000000 nop - ( (ptrPlayer->SelectedAircraft + 1) < ( (ptrPlayer->FlightDataPage + 1) * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE) ) ) - { - ptrPlayer->SelectedAircraft++; -800237ac: a202002e sb v0,46(s0) - } - } - - if(ptrPlayer->PadKeyReleased_Callback(PAD_UP) == true) -800237b0: 8e02007c lw v0,124(s0) -800237b4: 00000000 nop -800237b8: 0040f809 jalr v0 -800237bc: 24041000 li a0,4096 -800237c0: 10400009 beqz v0,800237e8 -800237c4: 00000000 nop - { - if(ptrPlayer->SelectedAircraft > ( (ptrPlayer->FlightDataPage) * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE) ) -800237c8: 9204002d lbu a0,45(s0) -800237cc: 9203002e lbu v1,46(s0) -800237d0: 00041080 sll v0,a0,0x2 -800237d4: 00441021 addu v0,v0,a0 -800237d8: 0043102a slt v0,v0,v1 -800237dc: 10400002 beqz v0,800237e8 -800237e0: 2463ffff addiu v1,v1,-1 - { - ptrPlayer->SelectedAircraft--; -800237e4: a203002e sb v1,46(s0) - } - } - - if(ptrPlayer->PadKeyReleased_Callback(PAD_RIGHT) == true) -800237e8: 8e02007c lw v0,124(s0) -800237ec: 00000000 nop -800237f0: 0040f809 jalr v0 -800237f4: 24042000 li a0,8192 -800237f8: 10400011 beqz v0,80023840 -800237fc: 00000000 nop - { - if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) ) -80023800: 9202002d lbu v0,45(s0) -80023804: 9204002c lbu a0,44(s0) -80023808: 24420001 addiu v0,v0,1 -8002380c: 00021880 sll v1,v0,0x2 -80023810: 00621821 addu v1,v1,v0 -80023814: 0064182a slt v1,v1,a0 -80023818: 10600009 beqz v1,80023840 -8002381c: 304200ff andi v0,v0,0xff - { - ptrPlayer->FlightDataPage++; - ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE; -80023820: 00022880 sll a1,v0,0x2 -80023824: 00452821 addu a1,v0,a1 -80023828: 30a500ff andi a1,a1,0xff - dprintf("Selected Aircraft = %d\n",ptrPlayer->SelectedAircraft); -8002382c: 3c048004 lui a0,0x8004 - - if(ptrPlayer->PadKeyReleased_Callback(PAD_RIGHT) == true) - { - if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) ) - { - ptrPlayer->FlightDataPage++; -80023830: a202002d sb v0,45(s0) - ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE; -80023834: a205002e sb a1,46(s0) - dprintf("Selected Aircraft = %d\n",ptrPlayer->SelectedAircraft); -80023838: 0c00ed8f jal 8003b63c -8002383c: 248406e8 addiu a0,a0,1768 - } - } - - if(ptrPlayer->PadKeyReleased_Callback(PAD_LEFT) == true) -80023840: 8e02007c lw v0,124(s0) -80023844: 00000000 nop -80023848: 0040f809 jalr v0 -8002384c: 34048000 li a0,0x8000 -80023850: 10400011 beqz v0,80023898 -80023854: 00000000 nop - { - if(ptrPlayer->FlightDataPage != 0) -80023858: 9202002d lbu v0,45(s0) -8002385c: 00000000 nop -80023860: 1040000d beqz v0,80023898 -80023864: 2442ffff addiu v0,v0,-1 - { - ptrPlayer->FlightDataPage--; -80023868: 304200ff andi v0,v0,0xff - ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE; -8002386c: 00022880 sll a1,v0,0x2 -80023870: 00452821 addu a1,v0,a1 -80023874: 30a500ff andi a1,a1,0xff - - if(ptrPlayer->PadKeyReleased_Callback(PAD_LEFT) == true) - { - if(ptrPlayer->FlightDataPage != 0) - { - ptrPlayer->FlightDataPage--; -80023878: a202002d sb v0,45(s0) - ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE; -8002387c: a205002e sb a1,46(s0) - dprintf("Selected Aircraft = %d\n",ptrPlayer->SelectedAircraft); - } - } - } -} -80023880: 8fbf0014 lw ra,20(sp) -80023884: 8fb00010 lw s0,16(sp) - { - if(ptrPlayer->FlightDataPage != 0) - { - ptrPlayer->FlightDataPage--; - ptrPlayer->SelectedAircraft = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE; - dprintf("Selected Aircraft = %d\n",ptrPlayer->SelectedAircraft); -80023888: 3c048004 lui a0,0x8004 -8002388c: 248406e8 addiu a0,a0,1768 -80023890: 0800ed8f j 8003b63c -80023894: 27bd0018 addiu sp,sp,24 - } - } - } -} -80023898: 8fbf0014 lw ra,20(sp) -8002389c: 8fb00010 lw s0,16(sp) -800238a0: 27bd0018 addiu sp,sp,24 -800238a4: 03e00008 jr ra -800238a8: 00000000 nop - -800238ac : -void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - short y_offset; - uint8_t page_aircraft; - - if(ptrPlayer->ShowAircraftData == true) -800238ac: 90820001 lbu v0,1(a0) -800238b0: 00000000 nop -800238b4: 104000f1 beqz v0,80023c7c -800238b8: 24020028 li v0,40 - } - } -} - -void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ -800238bc: 27bdffb8 addiu sp,sp,-72 -800238c0: afb10024 sw s1,36(sp) -800238c4: 00808821 move s1,a0 - - if(ptrPlayer->ShowAircraftData == true) - { - // Prepare RGB data and (X,Y) coordinates for aircraft - // data list request rectangle. - AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0; -800238c8: 3c048004 lui a0,0x8004 -800238cc: a0803c38 sb zero,15416(a0) - AircraftDataGPoly4.r[1] = AIRCRAFT_DATA_GSGPOLY4_R1; -800238d0: 24843c38 addiu a0,a0,15416 - } - } -} - -void GameGuiAircraftList(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ -800238d4: afbf0044 sw ra,68(sp) -800238d8: afb50034 sw s5,52(sp) -800238dc: afb40030 sw s4,48(sp) -800238e0: afb00020 sw s0,32(sp) -800238e4: afbe0040 sw s8,64(sp) -800238e8: afb7003c sw s7,60(sp) -800238ec: afb60038 sw s6,56(sp) -800238f0: afb3002c sw s3,44(sp) -800238f4: afb20028 sw s2,40(sp) - AircraftDataGPoly4.g[0] = AIRCRAFT_DATA_GSGPOLY4_G0; - AircraftDataGPoly4.g[1] = AIRCRAFT_DATA_GSGPOLY4_G1; - AircraftDataGPoly4.g[2] = AIRCRAFT_DATA_GSGPOLY4_G2; - AircraftDataGPoly4.g[3] = AIRCRAFT_DATA_GSGPOLY4_G3; - - AircraftDataGPoly4.b[0] = AIRCRAFT_DATA_GSGPOLY4_B0; -800238f8: a0820008 sb v0,8(a0) - AircraftDataGPoly4.b[1] = AIRCRAFT_DATA_GSGPOLY4_B1; -800238fc: a0820009 sb v0,9(a0) - AircraftDataGPoly4.b[2] = AIRCRAFT_DATA_GSGPOLY4_B2; - AircraftDataGPoly4.b[3] = AIRCRAFT_DATA_GSGPOLY4_B3; - - AircraftDataGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80023900: 8c82001c lw v0,28(a0) - - AircraftDataGPoly4.x[0] = AIRCRAFT_DATA_GSGPOLY4_X0; -80023904: 24030060 li v1,96 - AircraftDataGPoly4.b[0] = AIRCRAFT_DATA_GSGPOLY4_B0; - AircraftDataGPoly4.b[1] = AIRCRAFT_DATA_GSGPOLY4_B1; - AircraftDataGPoly4.b[2] = AIRCRAFT_DATA_GSGPOLY4_B2; - AircraftDataGPoly4.b[3] = AIRCRAFT_DATA_GSGPOLY4_B3; - - AircraftDataGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80023908: 34420010 ori v0,v0,0x10 -8002390c: ac82001c sw v0,28(a0) - - AircraftDataGPoly4.x[0] = AIRCRAFT_DATA_GSGPOLY4_X0; - AircraftDataGPoly4.x[1] = AIRCRAFT_DATA_GSGPOLY4_X1; -80023910: 24020120 li v0,288 -80023914: a482000e sh v0,14(a0) - AircraftDataGPoly4.x[2] = AIRCRAFT_DATA_GSGPOLY4_X2; - AircraftDataGPoly4.x[3] = AIRCRAFT_DATA_GSGPOLY4_X3; -80023918: a4820012 sh v0,18(a0) - - AircraftDataGPoly4.y[0] = AIRCRAFT_DATA_GSGPOLY4_Y0; -8002391c: 24020018 li v0,24 -80023920: a4820014 sh v0,20(a0) - AircraftDataGPoly4.y[1] = AIRCRAFT_DATA_GSGPOLY4_Y1; -80023924: a4820016 sh v0,22(a0) - AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0; - AircraftDataGPoly4.r[1] = AIRCRAFT_DATA_GSGPOLY4_R1; - AircraftDataGPoly4.r[2] = AIRCRAFT_DATA_GSGPOLY4_R2; - AircraftDataGPoly4.r[3] = AIRCRAFT_DATA_GSGPOLY4_R3; - - AircraftDataGPoly4.g[0] = AIRCRAFT_DATA_GSGPOLY4_G0; -80023928: 2410ff80 li s0,-128 - AircraftDataGPoly4.x[2] = AIRCRAFT_DATA_GSGPOLY4_X2; - AircraftDataGPoly4.x[3] = AIRCRAFT_DATA_GSGPOLY4_X3; - - AircraftDataGPoly4.y[0] = AIRCRAFT_DATA_GSGPOLY4_Y0; - AircraftDataGPoly4.y[1] = AIRCRAFT_DATA_GSGPOLY4_Y1; - AircraftDataGPoly4.y[2] = AIRCRAFT_DATA_GSGPOLY4_Y2; -8002392c: 240200d8 li v0,216 -80023930: a4820018 sh v0,24(a0) - if(ptrPlayer->ShowAircraftData == true) - { - // Prepare RGB data and (X,Y) coordinates for aircraft - // data list request rectangle. - AircraftDataGPoly4.r[0] = AIRCRAFT_DATA_GSGPOLY4_R0; - AircraftDataGPoly4.r[1] = AIRCRAFT_DATA_GSGPOLY4_R1; -80023934: a0800001 sb zero,1(a0) - AircraftDataGPoly4.r[2] = AIRCRAFT_DATA_GSGPOLY4_R2; -80023938: a0800002 sb zero,2(a0) - AircraftDataGPoly4.r[3] = AIRCRAFT_DATA_GSGPOLY4_R3; -8002393c: a0800003 sb zero,3(a0) - - AircraftDataGPoly4.g[0] = AIRCRAFT_DATA_GSGPOLY4_G0; -80023940: a0900004 sb s0,4(a0) - AircraftDataGPoly4.g[1] = AIRCRAFT_DATA_GSGPOLY4_G1; -80023944: a0900005 sb s0,5(a0) - AircraftDataGPoly4.g[2] = AIRCRAFT_DATA_GSGPOLY4_G2; -80023948: a0800006 sb zero,6(a0) - AircraftDataGPoly4.g[3] = AIRCRAFT_DATA_GSGPOLY4_G3; -8002394c: a0800007 sb zero,7(a0) - - AircraftDataGPoly4.b[0] = AIRCRAFT_DATA_GSGPOLY4_B0; - AircraftDataGPoly4.b[1] = AIRCRAFT_DATA_GSGPOLY4_B1; - AircraftDataGPoly4.b[2] = AIRCRAFT_DATA_GSGPOLY4_B2; -80023950: a080000a sb zero,10(a0) - AircraftDataGPoly4.b[3] = AIRCRAFT_DATA_GSGPOLY4_B3; -80023954: a080000b sb zero,11(a0) - - AircraftDataGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - AircraftDataGPoly4.x[0] = AIRCRAFT_DATA_GSGPOLY4_X0; -80023958: a483000c sh v1,12(a0) - AircraftDataGPoly4.x[1] = AIRCRAFT_DATA_GSGPOLY4_X1; - AircraftDataGPoly4.x[2] = AIRCRAFT_DATA_GSGPOLY4_X2; -8002395c: a4830010 sh v1,16(a0) -80023960: 00a0a821 move s5,a1 - AircraftDataGPoly4.y[0] = AIRCRAFT_DATA_GSGPOLY4_Y0; - AircraftDataGPoly4.y[1] = AIRCRAFT_DATA_GSGPOLY4_Y1; - AircraftDataGPoly4.y[2] = AIRCRAFT_DATA_GSGPOLY4_Y2; - AircraftDataGPoly4.y[3] = AIRCRAFT_DATA_GSGPOLY4_Y3; - - GsSortGPoly4(&AircraftDataGPoly4); -80023964: 0c00b0e6 jal 8002c398 -80023968: a482001a sh v0,26(a0) - - if(ptrPlayer->ActiveAircraft != 0) -8002396c: 9222002c lbu v0,44(s1) -80023970: 00000000 nop -80023974: 104000a5 beqz v0,80023c0c -80023978: 3c148007 lui s4,0x8007 - { - SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0; -8002397c: 3c048004 lui a0,0x8004 -80023980: a0903c18 sb s0,15384(a0) - SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1; -80023984: 24843c18 addiu a0,a0,15384 - SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0; - SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1; - SelectedAircraftGPoly4.b[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2; - SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3; - - SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80023988: 8c82001c lw v0,28(a0) - SelectedAircraftGPoly4.x[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X2; - SelectedAircraftGPoly4.x[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X3; - - page_aircraft = (ptrPlayer->SelectedAircraft) - (ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE); - - y_offset = (short)(page_aircraft * AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H); -8002398c: 9223002d lbu v1,45(s1) - SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0; - SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1; - SelectedAircraftGPoly4.b[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2; - SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3; - - SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80023990: 34420010 ori v0,v0,0x10 -80023994: ac82001c sw v0,28(a0) - - SelectedAircraftGPoly4.x[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0; -80023998: 24020068 li v0,104 -8002399c: a482000c sh v0,12(a0) - SelectedAircraftGPoly4.x[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1; - SelectedAircraftGPoly4.x[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X2; -800239a0: a4820010 sh v0,16(a0) - SelectedAircraftGPoly4.x[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X3; - - page_aircraft = (ptrPlayer->SelectedAircraft) - (ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE); - - y_offset = (short)(page_aircraft * AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H); -800239a4: 00031080 sll v0,v1,0x2 -800239a8: 00431021 addu v0,v0,v1 -800239ac: 9223002e lbu v1,46(s1) - GsSortGPoly4(&AircraftDataGPoly4); - - if(ptrPlayer->ActiveAircraft != 0) - { - SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0; - SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1; -800239b0: a0900001 sb s0,1(a0) - SelectedAircraftGPoly4.x[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X2; - SelectedAircraftGPoly4.x[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X3; - - page_aircraft = (ptrPlayer->SelectedAircraft) - (ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE); - - y_offset = (short)(page_aircraft * AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H); -800239b4: 00621023 subu v0,v1,v0 -800239b8: 00021140 sll v0,v0,0x5 -800239bc: 30421fe0 andi v0,v0,0x1fe0 - /*dprintf("ptrPlayer->ActiveAircraft = %d\n",ptrPlayer->ActiveAircraft); - dprintf("ptrPlayer->SelectedAircraft = %d\n",ptrPlayer->SelectedAircraft); - dprintf("ptrPlayer->FlightDataPage = %d\n",ptrPlayer->FlightDataPage); - dprintf("y_offset = %d\n",y_offset);*/ - - SelectedAircraftGPoly4.y[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y0 + y_offset; -800239c0: 24430020 addiu v1,v0,32 - SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0; - SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1; - SelectedAircraftGPoly4.r[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R2; - SelectedAircraftGPoly4.r[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R3; - - SelectedAircraftGPoly4.g[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G0; -800239c4: a0900004 sb s0,4(a0) - dprintf("ptrPlayer->FlightDataPage = %d\n",ptrPlayer->FlightDataPage); - dprintf("y_offset = %d\n",y_offset);*/ - - SelectedAircraftGPoly4.y[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y0 + y_offset; - SelectedAircraftGPoly4.y[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y1 + y_offset; - SelectedAircraftGPoly4.y[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y2 + y_offset; -800239c8: 24420040 addiu v0,v0,64 - SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1; - SelectedAircraftGPoly4.r[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R2; - SelectedAircraftGPoly4.r[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R3; - - SelectedAircraftGPoly4.g[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G0; - SelectedAircraftGPoly4.g[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G1; -800239cc: a0900005 sb s0,5(a0) - SelectedAircraftGPoly4.g[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G2; - SelectedAircraftGPoly4.g[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G3; - - SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0; -800239d0: a0900008 sb s0,8(a0) - SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1; -800239d4: a0900009 sb s0,9(a0) - SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3; - - SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - SelectedAircraftGPoly4.x[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0; - SelectedAircraftGPoly4.x[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1; -800239d8: 24100118 li s0,280 - /*dprintf("ptrPlayer->ActiveAircraft = %d\n",ptrPlayer->ActiveAircraft); - dprintf("ptrPlayer->SelectedAircraft = %d\n",ptrPlayer->SelectedAircraft); - dprintf("ptrPlayer->FlightDataPage = %d\n",ptrPlayer->FlightDataPage); - dprintf("y_offset = %d\n",y_offset);*/ - - SelectedAircraftGPoly4.y[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y0 + y_offset; -800239dc: a4830014 sh v1,20(a0) - SelectedAircraftGPoly4.y[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y1 + y_offset; -800239e0: a4830016 sh v1,22(a0) - SelectedAircraftGPoly4.y[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y2 + y_offset; -800239e4: a4820018 sh v0,24(a0) - SelectedAircraftGPoly4.y[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y3 + y_offset; -800239e8: a482001a sh v0,26(a0) - - if(ptrPlayer->ActiveAircraft != 0) - { - SelectedAircraftGPoly4.r[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R0; - SelectedAircraftGPoly4.r[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R1; - SelectedAircraftGPoly4.r[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R2; -800239ec: a0800002 sb zero,2(a0) - SelectedAircraftGPoly4.r[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_R3; -800239f0: a0800003 sb zero,3(a0) - - SelectedAircraftGPoly4.g[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G0; - SelectedAircraftGPoly4.g[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G1; - SelectedAircraftGPoly4.g[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G2; -800239f4: a0800006 sb zero,6(a0) - SelectedAircraftGPoly4.g[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_G3; -800239f8: a0800007 sb zero,7(a0) - - SelectedAircraftGPoly4.b[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B0; - SelectedAircraftGPoly4.b[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B1; - SelectedAircraftGPoly4.b[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2; -800239fc: a080000a sb zero,10(a0) - SelectedAircraftGPoly4.b[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3; -80023a00: a080000b sb zero,11(a0) - - SelectedAircraftGPoly4.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - SelectedAircraftGPoly4.x[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0; - SelectedAircraftGPoly4.x[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1; -80023a04: a490000e sh s0,14(a0) - SelectedAircraftGPoly4.y[0] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y0 + y_offset; - SelectedAircraftGPoly4.y[1] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y1 + y_offset; - SelectedAircraftGPoly4.y[2] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y2 + y_offset; - SelectedAircraftGPoly4.y[3] = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_Y3 + y_offset; - - GsSortGPoly4(&SelectedAircraftGPoly4); -80023a08: 0c00b0e6 jal 8002c398 -80023a0c: a4900012 sh s0,18(a0) - - if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) ) -80023a10: 9222002d lbu v0,45(s1) -80023a14: 9223002c lbu v1,44(s1) -80023a18: 24420001 addiu v0,v0,1 -80023a1c: 00022080 sll a0,v0,0x2 -80023a20: 00821021 addu v0,a0,v0 -80023a24: 0043102a slt v0,v0,v1 -80023a28: 10400011 beqz v0,80023a70 -80023a2c: 3c048004 lui a0,0x8004 - { - ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_X; - ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_Y; -80023a30: 24020070 li v0,112 - - GsSortGPoly4(&SelectedAircraftGPoly4); - - if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) ) - { - ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_X; -80023a34: a4903bec sh s0,15340(a0) - ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_Y; -80023a38: 24843bec addiu a0,a0,15340 -80023a3c: a4820002 sh v0,2(a0) - - ArrowsSpr.attribute |= GFX_1HZ_FLASH; -80023a40: 8c820014 lw v0,20(a0) -80023a44: 00000000 nop -80023a48: 34420080 ori v0,v0,0x80 -80023a4c: ac820014 sw v0,20(a0) - - ArrowsSpr.u = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_U; -80023a50: 24020034 li v0,52 -80023a54: a0820004 sb v0,4(a0) - ArrowsSpr.v = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_V; -80023a58: 24020030 li v0,48 -80023a5c: a0820005 sb v0,5(a0) - - ArrowsSpr.w = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE; -80023a60: 24020008 li v0,8 -80023a64: a4820006 sh v0,6(a0) - ArrowsSpr.h = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE; - - GfxSortSprite(&ArrowsSpr); -80023a68: 0c0090d2 jal 80024348 -80023a6c: a4820008 sh v0,8(a0) - } - - if(ptrPlayer->FlightDataPage != 0) -80023a70: 9222002d lbu v0,45(s1) -80023a74: 00000000 nop -80023a78: 10400012 beqz v0,80023ac4 -80023a7c: 3c048004 lui a0,0x8004 - { - ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_X; -80023a80: 24020060 li v0,96 -80023a84: a4823bec sh v0,15340(a0) - ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_Y; -80023a88: 24843bec addiu a0,a0,15340 -80023a8c: 24020070 li v0,112 -80023a90: a4820002 sh v0,2(a0) - - ArrowsSpr.attribute |= GFX_1HZ_FLASH; -80023a94: 8c820014 lw v0,20(a0) -80023a98: 00000000 nop -80023a9c: 34420080 ori v0,v0,0x80 -80023aa0: ac820014 sw v0,20(a0) - - ArrowsSpr.u = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_U; -80023aa4: 2402002c li v0,44 -80023aa8: a0820004 sb v0,4(a0) - ArrowsSpr.v = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_V; -80023aac: 24020030 li v0,48 -80023ab0: a0820005 sb v0,5(a0) - - ArrowsSpr.w = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE; -80023ab4: 24020008 li v0,8 -80023ab8: a4820006 sh v0,6(a0) - ArrowsSpr.h = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE; - - GfxSortSprite(&ArrowsSpr); -80023abc: 0c0090d2 jal 80024348 -80023ac0: a4820008 sh v0,8(a0) - FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock); -} - -void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint8_t init_flight = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE; -80023ac4: 9230002d lbu s0,45(s1) - uint8_t i; - uint8_t j; - - FontSetFlags(&SmallFont,FONT_NOFLAGS); -80023ac8: 00002821 move a1,zero - FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock); -} - -void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint8_t init_flight = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE; -80023acc: 00101080 sll v0,s0,0x2 - uint8_t i; - uint8_t j; - - FontSetFlags(&SmallFont,FONT_NOFLAGS); -80023ad0: 26848d38 addiu a0,s4,-29384 -80023ad4: 0c008441 jal 80021104 -80023ad8: 00508021 addu s0,v0,s0 - AIRCRAFT_DATA_DIRECTION_X, - AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "Arrival" ); - break; - case DEPARTURE: - FontPrintText( &SmallFont, -80023adc: 3c028004 lui v0,0x8004 -80023ae0: 24420700 addiu v0,v0,1792 -80023ae4: 3c138007 lui s3,0x8007 - FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock); -} - -void GameGuiShowAircraftData(TYPE_PLAYER * ptrPlayer, TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint8_t init_flight = ptrPlayer->FlightDataPage * GAME_GUI_AIRCRAFT_DATA_MAX_PAGE; -80023ae8: 321000ff andi s0,s0,0xff - uint8_t i; - uint8_t j; - - FontSetFlags(&SmallFont,FONT_NOFLAGS); -80023aec: 24120030 li s2,48 - AIRCRAFT_DATA_DIRECTION_X, - AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "Arrival" ); - break; - case DEPARTURE: - FontPrintText( &SmallFont, -80023af0: afa20018 sw v0,24(sp) -80023af4: 26738d38 addiu s3,s3,-29384 - ptrFlightData->strFlightNumber[i] ); - - switch(ptrFlightData->FlightDirection[i]) - { - case ARRIVAL: - FontPrintText( &SmallFont, -80023af8: 3c1e8004 lui s8,0x8004 - uint8_t i; - uint8_t j; - - FontSetFlags(&SmallFont,FONT_NOFLAGS); - - for(i = init_flight ; i < ptrPlayer->ActiveAircraft ; i++) -80023afc: 9222002c lbu v0,44(s1) -80023b00: 00000000 nop -80023b04: 0202102b sltu v0,s0,v0 -80023b08: 10400051 beqz v0,80023c50 -80023b0c: 240200d0 li v0,208 - { - j = i - init_flight; - - if(j >= GAME_GUI_AIRCRAFT_DATA_MAX_PAGE) -80023b10: 1242004f beq s2,v0,80023c50 -80023b14: 26070010 addiu a3,s0,16 -80023b18: 2657fff8 addiu s7,s2,-8 - } - - FontPrintText( &SmallFont, - AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_X, - AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - ptrFlightData->strFlightNumber[i] ); -80023b1c: 000738c0 sll a3,a3,0x3 -80023b20: 0010b080 sll s6,s0,0x2 - if(j >= GAME_GUI_AIRCRAFT_DATA_MAX_PAGE) - { - break; - } - - FontPrintText( &SmallFont, -80023b24: 02a73821 addu a3,s5,a3 -80023b28: 02e03021 move a2,s7 -80023b2c: 24050070 li a1,112 -80023b30: 26848d38 addiu a0,s4,-29384 -80023b34: 0c008451 jal 80021144 -80023b38: 02b6b021 addu s6,s5,s6 - AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_X, - AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - ptrFlightData->strFlightNumber[i] ); - - switch(ptrFlightData->FlightDirection[i]) -80023b3c: 8ec20000 lw v0,0(s6) -80023b40: 24030001 li v1,1 -80023b44: 10430005 beq v0,v1,80023b5c -80023b48: 24030002 li v1,2 -80023b4c: 10430004 beq v0,v1,80023b60 -80023b50: 27c70550 addiu a3,s8,1360 - break; - default: - break; - } - - FontSetFlags(&SmallFont, FONT_2HZ_FLASH); -80023b54: 10000007 b 80023b74 -80023b58: 24050010 li a1,16 - AIRCRAFT_DATA_DIRECTION_X, - AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "Arrival" ); - break; - case DEPARTURE: - FontPrintText( &SmallFont, -80023b5c: 8fa70018 lw a3,24(sp) -80023b60: 02403021 move a2,s2 -80023b64: 24050070 li a1,112 -80023b68: 0c008451 jal 80021144 -80023b6c: 02602021 move a0,s3 - break; - default: - break; - } - - FontSetFlags(&SmallFont, FONT_2HZ_FLASH); -80023b70: 24050010 li a1,16 -80023b74: 0c008441 jal 80021104 -80023b78: 26848d38 addiu a0,s4,-29384 - - switch(ptrFlightData->State[i]) -80023b7c: 8ec20204 lw v0,516(s6) -80023b80: 24030005 li v1,5 -80023b84: 10430008 beq v0,v1,80023ba8 -80023b88: 24030006 li v1,6 -80023b8c: 10430009 beq v0,v1,80023bb4 -80023b90: 24030002 li v1,2 -80023b94: 1443000e bne v0,v1,80023bd0 -80023b98: 00002821 move a1,zero - AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "Landing" ); - break; - - case STATE_TAXIING: - FontPrintText( &SmallFont, -80023b9c: 3c078004 lui a3,0x8004 -80023ba0: 10000006 b 80023bbc -80023ba4: 24e7058c addiu a3,a3,1420 - FontSetFlags(&SmallFont, FONT_2HZ_FLASH); - - switch(ptrFlightData->State[i]) - { - case STATE_FINAL: - FontPrintText( &SmallFont, -80023ba8: 3c078004 lui a3,0x8004 -80023bac: 10000003 b 80023bbc -80023bb0: 24e7070c addiu a3,a3,1804 - AIRCRAFT_DATA_DIRECTION_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "Taxiing" ); - break; - - case STATE_LANDED: - FontPrintText( &SmallFont, -80023bb4: 3c078004 lui a3,0x8004 -80023bb8: 24e70714 addiu a3,a3,1812 -80023bbc: 02403021 move a2,s2 -80023bc0: 240500b0 li a1,176 -80023bc4: 0c008451 jal 80021144 -80023bc8: 02602021 move a0,s3 - - default: - break; - } - - FontSetFlags(&SmallFont, FONT_NOFLAGS); -80023bcc: 00002821 move a1,zero -80023bd0: 0c008441 jal 80021104 -80023bd4: 26848d38 addiu a0,s4,-29384 - - FontPrintText( &SmallFont, - AIRCRAFT_DATA_PASSENGERS_X, - AIRCRAFT_DATA_PASSENGERS_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "%d pax.", - ptrFlightData->Passengers[i] ); -80023bd8: 02b01021 addu v0,s5,s0 - break; - } - - FontSetFlags(&SmallFont, FONT_NOFLAGS); - - FontPrintText( &SmallFont, -80023bdc: 90420180 lbu v0,384(v0) -80023be0: 3c078004 lui a3,0x8004 -80023be4: afa20010 sw v0,16(sp) -80023be8: 24e7071c addiu a3,a3,1820 -80023bec: 02e03021 move a2,s7 -80023bf0: 240500b0 li a1,176 -80023bf4: 26848d38 addiu a0,s4,-29384 -80023bf8: 0c008451 jal 80021144 -80023bfc: 26100001 addiu s0,s0,1 - uint8_t i; - uint8_t j; - - FontSetFlags(&SmallFont,FONT_NOFLAGS); - - for(i = init_flight ; i < ptrPlayer->ActiveAircraft ; i++) -80023c00: 321000ff andi s0,s0,0xff -80023c04: 1000ffbd b 80023afc -80023c08: 26520020 addiu s2,s2,32 - ( (AIRCRAFT_DATA_GSGPOLY4_Y2 - AIRCRAFT_DATA_GSGPOLY4_Y0) >> 1), - "No flights!" ); - } - } - -} -80023c0c: 8fbf0044 lw ra,68(sp) -80023c10: 8fbe0040 lw s8,64(sp) -80023c14: 8fb7003c lw s7,60(sp) -80023c18: 8fb60038 lw s6,56(sp) -80023c1c: 8fb50034 lw s5,52(sp) -80023c20: 8fb3002c lw s3,44(sp) -80023c24: 8fb20028 lw s2,40(sp) -80023c28: 8fb10024 lw s1,36(sp) -80023c2c: 8fb00020 lw s0,32(sp) - - GameGuiShowAircraftData(ptrPlayer, ptrFlightData); - } - else - { - FontPrintText( &SmallFont, -80023c30: 3c078004 lui a3,0x8004 -80023c34: 26848d38 addiu a0,s4,-29384 - ( (AIRCRAFT_DATA_GSGPOLY4_Y2 - AIRCRAFT_DATA_GSGPOLY4_Y0) >> 1), - "No flights!" ); - } - } - -} -80023c38: 8fb40030 lw s4,48(sp) - - GameGuiShowAircraftData(ptrPlayer, ptrFlightData); - } - else - { - FontPrintText( &SmallFont, -80023c3c: 24e70724 addiu a3,a3,1828 -80023c40: 24060078 li a2,120 -80023c44: 240500c0 li a1,192 -80023c48: 08008451 j 80021144 -80023c4c: 27bd0048 addiu sp,sp,72 - ( (AIRCRAFT_DATA_GSGPOLY4_Y2 - AIRCRAFT_DATA_GSGPOLY4_Y0) >> 1), - "No flights!" ); - } - } - -} -80023c50: 8fbf0044 lw ra,68(sp) -80023c54: 8fbe0040 lw s8,64(sp) -80023c58: 8fb7003c lw s7,60(sp) -80023c5c: 8fb60038 lw s6,56(sp) -80023c60: 8fb50034 lw s5,52(sp) -80023c64: 8fb40030 lw s4,48(sp) -80023c68: 8fb3002c lw s3,44(sp) -80023c6c: 8fb20028 lw s2,40(sp) -80023c70: 8fb10024 lw s1,36(sp) -80023c74: 8fb00020 lw s0,32(sp) -80023c78: 27bd0048 addiu sp,sp,72 -80023c7c: 03e00008 jr ra -80023c80: 00000000 nop - -80023c84 : - uint8_t i; - static uint16_t BubbleVibrationTimer; - static uint8_t FirstNotification; - bool AtLeastOneEnabled = false; - - if(GameStartupFlag == true) -80023c84: 3c028007 lui v0,0x8007 -80023c88: 90421d24 lbu v0,7460(v0) - } - -} - -void GameGuiBubble(TYPE_FLIGHT_DATA * ptrFlightData) -{ -80023c8c: 27bdffc8 addiu sp,sp,-56 -80023c90: afb4002c sw s4,44(sp) -80023c94: afbf0034 sw ra,52(sp) -80023c98: afb50030 sw s5,48(sp) -80023c9c: afb30028 sw s3,40(sp) -80023ca0: afb20024 sw s2,36(sp) -80023ca4: afb10020 sw s1,32(sp) -80023ca8: afb0001c sw s0,28(sp) - uint8_t i; - static uint16_t BubbleVibrationTimer; - static uint8_t FirstNotification; - bool AtLeastOneEnabled = false; - - if(GameStartupFlag == true) -80023cac: 10400004 beqz v0,80023cc0 -80023cb0: 3c148007 lui s4,0x8007 - { - // Set initial values to static variables - BubbleVibrationTimer = 0; -80023cb4: 3c028007 lui v0,0x8007 -80023cb8: a4401c1c sh zero,7196(v0) - FirstNotification = 0; -80023cbc: a2801c1a sb zero,7194(s4) - } - - for(i = FirstNotification ; i < ptrFlightData->nAircraft ; i++) -80023cc0: 92911c1a lbu s1,7194(s4) -80023cc4: 90830200 lbu v1,512(a0) -80023cc8: 00000000 nop -80023ccc: 0223102b sltu v0,s1,v1 -80023cd0: 10400045 beqz v0,80023de8 -80023cd4: 00911021 addu v0,a0,s1 - { - if(ptrFlightData->NotificationRequest[i] != 0) -80023cd8: 90420284 lbu v0,644(v0) -80023cdc: 00000000 nop -80023ce0: 1040003f beqz v0,80023de0 -80023ce4: 26310001 addiu s1,s1,1 -80023ce8: 2631ffff addiu s1,s1,-1 - { - AtLeastOneEnabled = true; - - BubbleSpr.x = BUBBLE_SPRITE_X; -80023cec: 3c108004 lui s0,0x8004 -80023cf0: 2402012a li v0,298 -80023cf4: a6023c78 sh v0,15480(s0) - BubbleSpr.y = BUBBLE_SPRITE_Y; -80023cf8: 26123c78 addiu s2,s0,15480 -80023cfc: 24020020 li v0,32 - - if(BubbleVibrationTimer >= BUBBLE_VIBRATION_TIMER_LIMIT) -80023d00: 3c158007 lui s5,0x8007 - if(ptrFlightData->NotificationRequest[i] != 0) - { - AtLeastOneEnabled = true; - - BubbleSpr.x = BUBBLE_SPRITE_X; - BubbleSpr.y = BUBBLE_SPRITE_Y; -80023d04: a6420002 sh v0,2(s2) - - if(BubbleVibrationTimer >= BUBBLE_VIBRATION_TIMER_LIMIT) -80023d08: 96a21c1c lhu v0,7196(s5) -80023d0c: 00000000 nop -80023d10: 2c420019 sltiu v0,v0,25 -80023d14: 10400012 beqz v0,80023d60 -80023d18: 00809821 move s3,a0 - BubbleVibrationTimer = 0; - } - } - else - { - BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX); -80023d1c: 24050003 li a1,3 -80023d20: 0c00a03d jal 800280f4 -80023d24: 2404fffd li a0,-3 -80023d28: 96033c78 lhu v1,15480(s0) - BubbleSpr.y += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX); -80023d2c: 24050003 li a1,3 - BubbleVibrationTimer = 0; - } - } - else - { - BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX); -80023d30: 00431021 addu v0,v0,v1 - BubbleSpr.y += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX); -80023d34: 2404fffd li a0,-3 -80023d38: 0c00a03d jal 800280f4 -80023d3c: a6023c78 sh v0,15480(s0) -80023d40: 96430002 lhu v1,2(s2) - - // Keep information about last aircraft notified... - // so that it gets called on next cycle - FirstNotification = i; -80023d44: a2911c1a sb s1,7194(s4) - } - } - else - { - BubbleSpr.x += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX); - BubbleSpr.y += SystemRand(BUBBLE_SPRITE_RAND_MIN,BUBBLE_SPRITE_RAND_MAX); -80023d48: 00431021 addu v0,v0,v1 -80023d4c: a6420002 sh v0,2(s2) - - // Keep information about last aircraft notified... - // so that it gets called on next cycle - FirstNotification = i; - BubbleVibrationTimer++; -80023d50: 96a21c1c lhu v0,7196(s5) -80023d54: 00000000 nop -80023d58: 24420001 addiu v0,v0,1 -80023d5c: a6a21c1c sh v0,7196(s5) - } - - GfxSortSprite(&BubbleSpr); -80023d60: 26043c78 addiu a0,s0,15480 -80023d64: 0c0090d2 jal 80024348 -80023d68: 3c118007 lui s1,0x8007 - FontSetFlags(&SmallFont, FONT_CENTERED); -80023d6c: 26248d38 addiu a0,s1,-29384 -80023d70: 0c008441 jal 80021104 -80023d74: 24050001 li a1,1 - FontPrintText(&SmallFont,BubbleSpr.x + 8 , BubbleSpr.y + 2, "%d", ptrFlightData->ActiveAircraft); -80023d78: 96460002 lhu a2,2(s2) -80023d7c: 96053c78 lhu a1,15480(s0) -80023d80: 92620201 lbu v0,513(s3) -80023d84: 24c60002 addiu a2,a2,2 -80023d88: 24a50008 addiu a1,a1,8 -80023d8c: 3c078004 lui a3,0x8004 -80023d90: 00063400 sll a2,a2,0x10 -80023d94: 00052c00 sll a1,a1,0x10 -80023d98: 26248d38 addiu a0,s1,-29384 -80023d9c: afa20010 sw v0,16(sp) -80023da0: 00063403 sra a2,a2,0x10 -80023da4: 00052c03 sra a1,a1,0x10 -80023da8: 0c008451 jal 80021144 -80023dac: 24e70730 addiu a3,a3,1840 - { - FirstNotification = 0; - BubbleVibrationTimer = 0; - } - //dprintf("Bubble timer: %d\n",BubbleVibrationTimer); -} -80023db0: 8fbf0034 lw ra,52(sp) -80023db4: 8fb50030 lw s5,48(sp) -80023db8: 8fb4002c lw s4,44(sp) -80023dbc: 8fb30028 lw s3,40(sp) -80023dc0: 8fb20024 lw s2,36(sp) -80023dc4: 8fb10020 lw s1,32(sp) -80023dc8: 8fb0001c lw s0,28(sp) - - GfxSortSprite(&BubbleSpr); - FontSetFlags(&SmallFont, FONT_CENTERED); - FontPrintText(&SmallFont,BubbleSpr.x + 8 , BubbleSpr.y + 2, "%d", ptrFlightData->ActiveAircraft); - - GfxDrawButton(NOTIFICATION_BUTTON_X, NOTIFICATION_BUTTON_Y, PAD_CIRCLE); -80023dcc: 24060020 li a2,32 -80023dd0: 24050030 li a1,48 -80023dd4: 24040142 li a0,322 -80023dd8: 0800914a j 80024528 -80023ddc: 27bd0038 addiu sp,sp,56 - // Set initial values to static variables - BubbleVibrationTimer = 0; - FirstNotification = 0; - } - - for(i = FirstNotification ; i < ptrFlightData->nAircraft ; i++) -80023de0: 1000ffba b 80023ccc -80023de4: 323100ff andi s1,s1,0xff - { - FirstNotification = 0; - BubbleVibrationTimer = 0; - } - //dprintf("Bubble timer: %d\n",BubbleVibrationTimer); -} -80023de8: 8fbf0034 lw ra,52(sp) - } - - if(AtLeastOneEnabled == false) - { - FirstNotification = 0; - BubbleVibrationTimer = 0; -80023dec: 3c028007 lui v0,0x8007 - } - //dprintf("Bubble timer: %d\n",BubbleVibrationTimer); -} -80023df0: 8fb50030 lw s5,48(sp) -80023df4: 8fb30028 lw s3,40(sp) -80023df8: 8fb20024 lw s2,36(sp) -80023dfc: 8fb10020 lw s1,32(sp) -80023e00: 8fb0001c lw s0,28(sp) - } - } - - if(AtLeastOneEnabled == false) - { - FirstNotification = 0; -80023e04: a2801c1a sb zero,7194(s4) - BubbleVibrationTimer = 0; -80023e08: a4401c1c sh zero,7196(v0) - } - //dprintf("Bubble timer: %d\n",BubbleVibrationTimer); -} -80023e0c: 8fb4002c lw s4,44(sp) -80023e10: 03e00008 jr ra -80023e14: 27bd0038 addiu sp,sp,56 - -80023e18 : - -void GameGuiClock(uint8_t hour, uint8_t min) -{ - static char strClock[6]; // HH:MM + \0 (6 characters needed) - - if(GameStartupFlag || System1SecondTick() == true) -80023e18: 3c028007 lui v0,0x8007 -80023e1c: 90421d24 lbu v0,7460(v0) - - strcat(strNotificationRequest, "."); -} - -void GameGuiClock(uint8_t hour, uint8_t min) -{ -80023e20: 27bdffd8 addiu sp,sp,-40 -80023e24: afb20020 sw s2,32(sp) -80023e28: afb1001c sw s1,28(sp) -80023e2c: afb00018 sw s0,24(sp) -80023e30: afbf0024 sw ra,36(sp) -80023e34: 309100ff andi s1,a0,0xff -80023e38: 30b200ff andi s2,a1,0xff - static char strClock[6]; // HH:MM + \0 (6 characters needed) - - if(GameStartupFlag || System1SecondTick() == true) -80023e3c: 1040000e beqz v0,80023e78 -80023e40: 3c108007 lui s0,0x8007 - { - memset(strClock, 0, 6); -80023e44: 26041c14 addiu a0,s0,7188 -80023e48: 24060006 li a2,6 -80023e4c: 0c00d7ab jal 80035eac -80023e50: 00002821 move a1,zero - snprintf(strClock,6,"%02d:%02d",hour, min); -80023e54: 3c068004 lui a2,0x8004 -80023e58: afb20010 sw s2,16(sp) -80023e5c: 02203821 move a3,s1 -80023e60: 24c60734 addiu a2,a2,1844 -80023e64: 24050006 li a1,6 -80023e68: 0c00ecf4 jal 8003b3d0 -80023e6c: 26041c14 addiu a0,s0,7188 - } - - RadioFont.flags = FONT_NOFLAGS; -80023e70: 10000006 b 80023e8c -80023e74: 3c048007 lui a0,0x8007 - -void GameGuiClock(uint8_t hour, uint8_t min) -{ - static char strClock[6]; // HH:MM + \0 (6 characters needed) - - if(GameStartupFlag || System1SecondTick() == true) -80023e78: 0c009fb6 jal 80027ed8 -80023e7c: 00000000 nop -80023e80: 1440fff1 bnez v0,80023e48 -80023e84: 26041c14 addiu a0,s0,7188 - { - memset(strClock, 0, 6); - snprintf(strClock,6,"%02d:%02d",hour, min); - } - - RadioFont.flags = FONT_NOFLAGS; -80023e88: 3c048007 lui a0,0x8007 -80023e8c: 24848d78 addiu a0,a0,-29320 - RadioFont.max_ch_wrap = 0; -80023e90: a0800032 sb zero,50(a0) - FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock); -} -80023e94: 8fbf0024 lw ra,36(sp) -80023e98: 8fb20020 lw s2,32(sp) -80023e9c: 8fb1001c lw s1,28(sp) - snprintf(strClock,6,"%02d:%02d",hour, min); - } - - RadioFont.flags = FONT_NOFLAGS; - RadioFont.max_ch_wrap = 0; - FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock); -80023ea0: 26071c14 addiu a3,s0,7188 -} -80023ea4: 8fb00018 lw s0,24(sp) - { - memset(strClock, 0, 6); - snprintf(strClock,6,"%02d:%02d",hour, min); - } - - RadioFont.flags = FONT_NOFLAGS; -80023ea8: ac800034 sw zero,52(a0) - RadioFont.max_ch_wrap = 0; - FontPrintText(&RadioFont,CLOCK_X,CLOCK_Y,strClock); -80023eac: 24060010 li a2,16 -80023eb0: 24050010 li a1,16 -80023eb4: 08008451 j 80021144 -80023eb8: 27bd0028 addiu sp,sp,40 - -80023ebc : -} - - -void GfxInitDrawEnv(void) -{ - DrawEnv.x = 0; -80023ebc: 3c048004 lui a0,0x8004 -80023ec0: 24845ca4 addiu a0,a0,23716 - DrawEnv.y = 0; - DrawEnv.draw_on_display = false; - DrawEnv.w = X_SCREEN_RESOLUTION; -80023ec4: 24020180 li v0,384 -80023ec8: a4820006 sh v0,6(a0) - DrawEnv.h = Y_SCREEN_RESOLUTION; -80023ecc: 240200f0 li v0,240 -} - - -void GfxInitDrawEnv(void) -{ - DrawEnv.x = 0; -80023ed0: a4800002 sh zero,2(a0) - DrawEnv.y = 0; -80023ed4: a4800004 sh zero,4(a0) - DrawEnv.draw_on_display = false; -80023ed8: a0800001 sb zero,1(a0) - DrawEnv.w = X_SCREEN_RESOLUTION; - DrawEnv.h = Y_SCREEN_RESOLUTION; - - GsSetDrawEnv(&DrawEnv); -80023edc: 0800bada j 8002eb68 -80023ee0: a4820008 sh v0,8(a0) - -80023ee4 : -} - -void GfxInitDispEnv(void) -{ - DispEnv.x = 0; -80023ee4: 3c048007 lui a0,0x8007 -80023ee8: a4801c2c sh zero,7212(a0) - DispEnv.y = 0; -80023eec: 24841c2c addiu a0,a0,7212 - - GsSetDispEnv(&DispEnv); -80023ef0: 0800bb71 j 8002edc4 -80023ef4: a4800002 sh zero,2(a0) - -80023ef8 : -} - -void GfxSetPrimitiveList(void) -{ - GsSetList(prim_list); -80023ef8: 3c048004 lui a0,0x8004 -80023efc: 0800ae4f j 8002b93c -80023f00: 24843ca4 addiu a0,a0,15524 - -80023f04 : -//Dictates (R,G,B) brigthness to all sprites silently -static uint8_t global_lum; - -void GfxSwapBuffers(void) -{ - if(DrawEnv.h == Y_SCREEN_RESOLUTION) -80023f04: 3c048004 lui a0,0x8004 -80023f08: 24825ca4 addiu v0,a0,23716 -80023f0c: 84450008 lh a1,8(v0) -80023f10: 240300f0 li v1,240 -80023f14: 14a3001a bne a1,v1,80023f80 -80023f18: 00000000 nop -{ - GsSetList(prim_list); -} - -void GfxDrawScene_Fast(void) -{ -80023f1c: 27bdffe8 addiu sp,sp,-24 -80023f20: afb00010 sw s0,16(sp) -80023f24: 00808021 move s0,a0 - -void GfxSwapBuffers(void) -{ - if(DrawEnv.h == Y_SCREEN_RESOLUTION) - { - if(DispEnv.y == 0) -80023f28: 3c048007 lui a0,0x8007 -80023f2c: 24851c2c addiu a1,a0,7212 -80023f30: 84a30002 lh v1,2(a1) -80023f34: 00000000 nop -80023f38: 14600005 bnez v1,80023f50 -80023f3c: afbf0014 sw ra,20(sp) - { - DispEnv.y = DOUBLE_BUFFERING_SWAP_Y; -80023f40: 24030100 li v1,256 -80023f44: a4a30002 sh v1,2(a1) - DrawEnv.y = 0; -80023f48: 10000006 b 80023f64 -80023f4c: a4400004 sh zero,4(v0) - } - else if(DispEnv.y == DOUBLE_BUFFERING_SWAP_Y) -80023f50: 24060100 li a2,256 -80023f54: 14660003 bne v1,a2,80023f64 -80023f58: 00000000 nop - { - DispEnv.y = 0; -80023f5c: a4a00002 sh zero,2(a1) - DrawEnv.y = DOUBLE_BUFFERING_SWAP_Y; -80023f60: a4430004 sh v1,4(v0) - } - - GsSetDispEnv(&DispEnv); -80023f64: 0c00bb71 jal 8002edc4 -80023f68: 24841c2c addiu a0,a0,7212 - GsSetDrawEnv(&DrawEnv); -80023f6c: 0c00bada jal 8002eb68 -80023f70: 26045ca4 addiu a0,s0,23716 - -void GfxDrawScene_Fast(void) -{ - GfxSwapBuffers(); - GsDrawList(); -} -80023f74: 8fbf0014 lw ra,20(sp) -80023f78: 8fb00010 lw s0,16(sp) -80023f7c: 27bd0018 addiu sp,sp,24 -} - -void GfxDrawScene_Fast(void) -{ - GfxSwapBuffers(); - GsDrawList(); -80023f80: 0800ae5f j 8002b97c -80023f84: 00000000 nop - -80023f88 : -} - -void GfxDrawScene(void) -{ -80023f88: 27bdffe8 addiu sp,sp,-24 -80023f8c: afb00010 sw s0,16(sp) -80023f90: afbf0014 sw ra,20(sp) - while( (SystemRefreshNeeded() == false) - || -80023f94: 24100001 li s0,1 - GsDrawList(); -} - -void GfxDrawScene(void) -{ - while( (SystemRefreshNeeded() == false) -80023f98: 0c009f9a jal 80027e68 -80023f9c: 00000000 nop -80023fa0: 1040fffd beqz v0,80023f98 -80023fa4: 00000000 nop - || - (GsIsDrawing() == true) -80023fa8: 0c00bf9f jal 8002fe7c -80023fac: 00000000 nop -} - -void GfxDrawScene(void) -{ - while( (SystemRefreshNeeded() == false) - || -80023fb0: 1050fff9 beq v0,s0,80023f98 -80023fb4: 00000000 nop - (GsIsDrawing() == true) - || - (SystemDMAReady() == false) ); -80023fb8: 0c009f8b jal 80027e2c -80023fbc: 00000000 nop -void GfxDrawScene(void) -{ - while( (SystemRefreshNeeded() == false) - || - (GsIsDrawing() == true) - || -80023fc0: 1040fff5 beqz v0,80023f98 -80023fc4: 00000000 nop - (SystemDMAReady() == false) ); - - GfxDrawScene_Fast(); -80023fc8: 0c008fc1 jal 80023f04 -80023fcc: 00000000 nop - - if(UpdatePads() == false) -80023fd0: 0c009aec jal 80026bb0 -80023fd4: 00000000 nop -80023fd8: 10400002 beqz v0,80023fe4 -80023fdc: 24040001 li a0,1 - { - SystemSetEmergencyMode(true); - } - else - { - SystemSetEmergencyMode(false); -80023fe0: 00002021 move a0,zero -80023fe4: 0c00a050 jal 80028140 -80023fe8: 00000000 nop - } - - SystemRunTimers(); -80023fec: 0c009fc2 jal 80027f08 -80023ff0: 00000000 nop - - SystemUserTimersHandler(); -80023ff4: 0c00a0df jal 8002837c -80023ff8: 00000000 nop - - SystemDisableScreenRefresh(); -80023ffc: 0c009fb2 jal 80027ec8 -80024000: 00000000 nop - - MemCardHandler(); -80024004: 0c009747 jal 80025d1c -80024008: 00000000 nop - - SystemCheckStack(); -} -8002400c: 8fbf0014 lw ra,20(sp) -80024010: 8fb00010 lw s0,16(sp) - - SystemDisableScreenRefresh(); - - MemCardHandler(); - - SystemCheckStack(); -80024014: 0800a158 j 80028560 -80024018: 27bd0018 addiu sp,sp,24 - -8002401c : -} - -uint8_t GfxGetGlobalLuminance(void) -{ - return global_lum; -} -8002401c: 3c028007 lui v0,0x8007 -80024020: 90421c2a lbu v0,7210(v0) -80024024: 03e00008 jr ra -80024028: 00000000 nop - -8002402c : - -void GfxSetGlobalLuminance(uint8_t value) -{ - global_lum = value; -8002402c: 3c028007 lui v0,0x8007 -80024030: 03e00008 jr ra -80024034: a0441c2a sb a0,7210(v0) - -80024038 : -} - -void GfxIncreaseGlobalLuminance(int8_t step) -{ - if( ( (global_lum + step) < MAX_LUMINANCE ) -80024038: 3c038007 lui v1,0x8007 -8002403c: 90621c2a lbu v0,7210(v1) -{ - global_lum = value; -} - -void GfxIncreaseGlobalLuminance(int8_t step) -{ -80024040: 00042600 sll a0,a0,0x18 -80024044: 00042603 sra a0,a0,0x18 - if( ( (global_lum + step) < MAX_LUMINANCE ) -80024048: 00442021 addu a0,v0,a0 -8002404c: 2482ffff addiu v0,a0,-1 -80024050: 2c4200fe sltiu v0,v0,254 -80024054: 10400003 beqz v0,80024064 -80024058: 2402ffff li v0,-1 -8002405c: 03e00008 jr ra -80024060: a0641c2a sb a0,7210(v1) - { - global_lum += step; - } - else - { - global_lum = MAX_LUMINANCE; -80024064: 03e00008 jr ra -80024068: a0621c2a sb v0,7210(v1) - -8002406c : -} - -int GfxRotateFromDegrees(int deg) -{ - return deg << ROTATE_BIT_SHIFT; -} -8002406c: 03e00008 jr ra -80024070: 00041300 sll v0,a0,0xc - -80024074 : - -bool GfxIsGPUBusy(void) -{ -80024074: 27bdffe8 addiu sp,sp,-24 -80024078: afbf0014 sw ra,20(sp) - return (GsIsDrawing() || gfx_busy || SystemDMABusy() ); -8002407c: 0c00bf9f jal 8002fe7c -80024080: 00000000 nop -80024084: 1440000a bnez v0,800240b0 -80024088: 24030001 li v1,1 -8002408c: 3c028007 lui v0,0x8007 -80024090: 90421c2b lbu v0,7211(v0) -80024094: 00000000 nop -80024098: 304200ff andi v0,v0,0xff -8002409c: 14400004 bnez v0,800240b0 -800240a0: 00000000 nop -800240a4: 0c009f91 jal 80027e44 -800240a8: 00000000 nop -800240ac: 00401821 move v1,v0 -} -800240b0: 8fbf0014 lw ra,20(sp) -800240b4: 30620001 andi v0,v1,0x1 -800240b8: 03e00008 jr ra -800240bc: 27bd0018 addiu sp,sp,24 - -800240c0 : - - SystemCheckStack(); -} - -void GfxDrawScene_Slow(void) -{ -800240c0: 27bdffe8 addiu sp,sp,-24 -800240c4: afbf0014 sw ra,20(sp) - GfxDrawScene(); -800240c8: 0c008fe2 jal 80023f88 -800240cc: 00000000 nop - while(GfxIsGPUBusy() == true); -800240d0: 0c00901d jal 80024074 -800240d4: 00000000 nop -800240d8: 1440fffd bnez v0,800240d0 -800240dc: 00000000 nop -} -800240e0: 8fbf0014 lw ra,20(sp) -800240e4: 00000000 nop -800240e8: 03e00008 jr ra -800240ec: 27bd0018 addiu sp,sp,24 - -800240f0 : -{ - return (GsIsDrawing() || gfx_busy || SystemDMABusy() ); -} - -bool GfxSpriteFromFile(char * fname, GsSprite * spr) -{ -800240f0: 27bdffb0 addiu sp,sp,-80 -800240f4: afb20048 sw s2,72(sp) -800240f8: afb00040 sw s0,64(sp) -800240fc: afbf004c sw ra,76(sp) -80024100: afb10044 sw s1,68(sp) - GsImage gsi; - - if(SystemLoadFile(fname) == false) -80024104: 0c00a022 jal 80028088 -80024108: 00a09021 move s2,a1 -8002410c: 10400011 beqz v0,80024154 -80024110: 00408021 move s0,v0 - { - return false; - } - - while(GfxIsGPUBusy() == true); -80024114: 0c00901d jal 80024074 -80024118: 00000000 nop -8002411c: 1440fffd bnez v0,80024114 -80024120: 3c118007 lui s1,0x8007 - - gfx_busy = true; -80024124: 24020001 li v0,1 -80024128: a2221c2b sb v0,7211(s1) - - GsImageFromTim(&gsi,SystemGetBufferAddress() ); -8002412c: 0c00a027 jal 8002809c -80024130: 00000000 nop -80024134: 00402821 move a1,v0 -80024138: 0c00bda9 jal 8002f6a4 -8002413c: 27a40010 addiu a0,sp,16 - - GsSpriteFromImage(spr,&gsi,UPLOAD_IMAGE_FLAG); -80024140: 24060001 li a2,1 -80024144: 27a50010 addiu a1,sp,16 -80024148: 0c00bea4 jal 8002fa90 -8002414c: 02402021 move a0,s2 - gfx_busy = false; -80024150: a2201c2b sb zero,7211(s1) - - return true; -} -80024154: 8fbf004c lw ra,76(sp) -80024158: 02001021 move v0,s0 -8002415c: 8fb20048 lw s2,72(sp) -80024160: 8fb10044 lw s1,68(sp) -80024164: 8fb00040 lw s0,64(sp) -80024168: 03e00008 jr ra -8002416c: 27bd0050 addiu sp,sp,80 - -80024170 : - -bool GfxCLUTFromFile(char * fname) -{ -80024170: 27bdffb0 addiu sp,sp,-80 -80024174: afb00044 sw s0,68(sp) -80024178: afbf004c sw ra,76(sp) - GsImage gsi; - - if(SystemLoadFile(fname) == false) -8002417c: 0c00a022 jal 80028088 -80024180: afb10048 sw s1,72(sp) -80024184: 1040000f beqz v0,800241c4 -80024188: 00408021 move s0,v0 - { - return false; - } - - while(GfxIsGPUBusy() == true); -8002418c: 0c00901d jal 80024074 -80024190: 00000000 nop -80024194: 1440fffd bnez v0,8002418c -80024198: 24020001 li v0,1 - - gfx_busy = true; -8002419c: 3c118007 lui s1,0x8007 -800241a0: a2221c2b sb v0,7211(s1) - - GsImageFromTim(&gsi,SystemGetBufferAddress() ); -800241a4: 0c00a027 jal 8002809c -800241a8: 00000000 nop -800241ac: 00402821 move a1,v0 -800241b0: 0c00bda9 jal 8002f6a4 -800241b4: 27a40010 addiu a0,sp,16 - - GsUploadCLUT(&gsi); -800241b8: 0c00be81 jal 8002fa04 -800241bc: 27a40010 addiu a0,sp,16 - - gfx_busy = false; -800241c0: a2201c2b sb zero,7211(s1) - - return true; -} -800241c4: 8fbf004c lw ra,76(sp) -800241c8: 02001021 move v0,s0 -800241cc: 8fb10048 lw s1,72(sp) -800241d0: 8fb00044 lw s0,68(sp) -800241d4: 03e00008 jr ra -800241d8: 27bd0050 addiu sp,sp,80 - -800241dc : - -bool GfxIsInsideScreenArea(short x, short y, short w, short h) -{ -800241dc: 00042400 sll a0,a0,0x10 -800241e0: 00063400 sll a2,a2,0x10 -800241e4: 00042403 sra a0,a0,0x10 -800241e8: 00063403 sra a2,a2,0x10 -800241ec: 00052c00 sll a1,a1,0x10 -800241f0: 00073c00 sll a3,a3,0x10 - if( ( (x + w) >= 0) -800241f4: 00863021 addu a2,a0,a2 - - return true; -} - -bool GfxIsInsideScreenArea(short x, short y, short w, short h) -{ -800241f8: 00052c03 sra a1,a1,0x10 -800241fc: 00073c03 sra a3,a3,0x10 - if( ( (x + w) >= 0) -80024200: 04c00007 bltz a2,80024220 -80024204: 00001021 move v0,zero - && -80024208: 28840180 slti a0,a0,384 -8002420c: 10800004 beqz a0,80024220 -80024210: 00a73821 addu a3,a1,a3 - (x < X_SCREEN_RESOLUTION) - && -80024214: 04e00002 bltz a3,80024220 -80024218: 00000000 nop - ( (y + h) >= 0) - && -8002421c: 28a200f0 slti v0,a1,240 - { - return true; - } - - return false; -} -80024220: 03e00008 jr ra -80024224: 00000000 nop - -80024228 : - -bool GfxIsSpriteInsideScreenArea(GsSprite * spr) -{ - return GfxIsInsideScreenArea(spr->x, spr->y, spr->w, spr->h); -80024228: 84870008 lh a3,8(a0) -8002422c: 84860006 lh a2,6(a0) -80024230: 84850002 lh a1,2(a0) -80024234: 84840000 lh a0,0(a0) -80024238: 08009077 j 800241dc -8002423c: 00000000 nop - -80024240 : -} - -void GfxSaveDisplayData(GsSprite *spr) -{ - MoveImage( DispEnv.x, - DispEnv.y, -80024240: 3c028007 lui v0,0x8007 - - GfxSortSprite(&PSXButtons); -} - -void GfxSaveDisplayData(GsSprite *spr) -{ -80024244: 27bdffd8 addiu sp,sp,-40 - MoveImage( DispEnv.x, - DispEnv.y, -80024248: 24431c2c addiu v1,v0,7212 - GfxSortSprite(&PSXButtons); -} - -void GfxSaveDisplayData(GsSprite *spr) -{ - MoveImage( DispEnv.x, -8002424c: 84650002 lh a1,2(v1) - - GfxSortSprite(&PSXButtons); -} - -void GfxSaveDisplayData(GsSprite *spr) -{ -80024250: afb20020 sw s2,32(sp) -80024254: afb1001c sw s1,28(sp) -80024258: afb00018 sw s0,24(sp) - MoveImage( DispEnv.x, -8002425c: 241100f0 li s1,240 - - GfxSortSprite(&PSXButtons); -} - -void GfxSaveDisplayData(GsSprite *spr) -{ -80024260: 00808021 move s0,a0 - MoveImage( DispEnv.x, -80024264: 24120180 li s2,384 -80024268: 84441c2c lh a0,7212(v0) -8002426c: afb10014 sw s1,20(sp) -80024270: afb20010 sw s2,16(sp) -80024274: 24070100 li a3,256 - - GfxSortSprite(&PSXButtons); -} - -void GfxSaveDisplayData(GsSprite *spr) -{ -80024278: afbf0024 sw ra,36(sp) - MoveImage( DispEnv.x, -8002427c: 0c00ba20 jal 8002e880 -80024280: 24060180 li a2,384 - X_SCREEN_RESOLUTION, - Y_SCREEN_RESOLUTION); - - spr->x = 0; - spr->y = 0; - spr->tpage = GFX_SECOND_DISPLAY_TPAGE; -80024284: 24020016 li v0,22 -80024288: a2020011 sb v0,17(s0) - spr->attribute |= COLORMODE(COLORMODE_16BPP); -8002428c: 8e020014 lw v0,20(s0) - spr->u = 0; - spr->v = 0; - spr->r = NORMAL_LUMINANCE; - spr->g = NORMAL_LUMINANCE; - spr->b = NORMAL_LUMINANCE; -} -80024290: 8fbf0024 lw ra,36(sp) - Y_SCREEN_RESOLUTION); - - spr->x = 0; - spr->y = 0; - spr->tpage = GFX_SECOND_DISPLAY_TPAGE; - spr->attribute |= COLORMODE(COLORMODE_16BPP); -80024294: 34420002 ori v0,v0,0x2 -80024298: ae020014 sw v0,20(s0) - spr->w = X_SCREEN_RESOLUTION; - spr->h = Y_SCREEN_RESOLUTION; - spr->u = 0; - spr->v = 0; - spr->r = NORMAL_LUMINANCE; -8002429c: 2402ff80 li v0,-128 - - spr->x = 0; - spr->y = 0; - spr->tpage = GFX_SECOND_DISPLAY_TPAGE; - spr->attribute |= COLORMODE(COLORMODE_16BPP); - spr->w = X_SCREEN_RESOLUTION; -800242a0: a6120006 sh s2,6(s0) - spr->h = Y_SCREEN_RESOLUTION; -800242a4: a6110008 sh s1,8(s0) - spr->u = 0; - spr->v = 0; - spr->r = NORMAL_LUMINANCE; - spr->g = NORMAL_LUMINANCE; - spr->b = NORMAL_LUMINANCE; -} -800242a8: 8fb20020 lw s2,32(sp) -800242ac: 8fb1001c lw s1,28(sp) - GFX_SECOND_DISPLAY_X, - GFX_SECOND_DISPLAY_Y, - X_SCREEN_RESOLUTION, - Y_SCREEN_RESOLUTION); - - spr->x = 0; -800242b0: a6000000 sh zero,0(s0) - spr->y = 0; -800242b4: a6000002 sh zero,2(s0) - spr->tpage = GFX_SECOND_DISPLAY_TPAGE; - spr->attribute |= COLORMODE(COLORMODE_16BPP); - spr->w = X_SCREEN_RESOLUTION; - spr->h = Y_SCREEN_RESOLUTION; - spr->u = 0; -800242b8: a2000004 sb zero,4(s0) - spr->v = 0; -800242bc: a2000005 sb zero,5(s0) - spr->r = NORMAL_LUMINANCE; -800242c0: a202000e sb v0,14(s0) - spr->g = NORMAL_LUMINANCE; -800242c4: a202000f sb v0,15(s0) - spr->b = NORMAL_LUMINANCE; -800242c8: a2020010 sb v0,16(s0) -} -800242cc: 8fb00018 lw s0,24(sp) -800242d0: 03e00008 jr ra -800242d4: 27bd0028 addiu sp,sp,40 - -800242d8 : - -bool Gfx1HzFlash(void) -{ -800242d8: 27bdffe8 addiu sp,sp,-24 -800242dc: afbf0014 sw ra,20(sp) - static bool show = false; - - if(System1SecondTick() == true) -800242e0: 0c009fb6 jal 80027ed8 -800242e4: 00000000 nop -800242e8: 10400005 beqz v0,80024300 -800242ec: 3c038007 lui v1,0x8007 - { - show = show? false:true; -800242f0: 90621c25 lbu v0,7205(v1) -800242f4: 00000000 nop -800242f8: 38420001 xori v0,v0,0x1 -800242fc: a0621c25 sb v0,7205(v1) - } - - return show; -} -80024300: 8fbf0014 lw ra,20(sp) -80024304: 90621c25 lbu v0,7205(v1) -80024308: 03e00008 jr ra -8002430c: 27bd0018 addiu sp,sp,24 - -80024310 : - -bool Gfx2HzFlash(void) -{ -80024310: 27bdffe8 addiu sp,sp,-24 -80024314: afbf0014 sw ra,20(sp) - static bool show = false; - - if(System500msTick() == true) -80024318: 0c009fbe jal 80027ef8 -8002431c: 00000000 nop -80024320: 10400005 beqz v0,80024338 -80024324: 3c038007 lui v1,0x8007 - { - show = show? false:true; -80024328: 90621c24 lbu v0,7204(v1) -8002432c: 00000000 nop -80024330: 38420001 xori v0,v0,0x1 -80024334: a0621c24 sb v0,7204(v1) - } - - return show; -} -80024338: 8fbf0014 lw ra,20(sp) -8002433c: 90621c24 lbu v0,7204(v1) -80024340: 03e00008 jr ra -80024344: 27bd0018 addiu sp,sp,24 - -80024348 : - GfxDrawScene(); - while(GfxIsGPUBusy() == true); -} - -void GfxSortSprite(GsSprite * spr) -{ -80024348: 27bdffc8 addiu sp,sp,-56 -8002434c: afb10018 sw s1,24(sp) - uint8_t aux_r = spr->r; - uint8_t aux_g = spr->g; - uint8_t aux_b = spr->b; - unsigned char aux_tpage = spr->tpage; - short aux_w = spr->w; -80024350: 84910006 lh s1,6(a0) - GfxDrawScene(); - while(GfxIsGPUBusy() == true); -} - -void GfxSortSprite(GsSprite * spr) -{ -80024354: afbf0034 sw ra,52(sp) -80024358: afb70030 sw s7,48(sp) -8002435c: afb6002c sw s6,44(sp) -80024360: afb50028 sw s5,40(sp) -80024364: afb40024 sw s4,36(sp) -80024368: afb30020 sw s3,32(sp) -8002436c: afb2001c sw s2,28(sp) - short aux_w = spr->w; - short aux_x = spr->x; - bool has_1hz_flash = spr->attribute & GFX_1HZ_FLASH; - bool has_2hz_flash = spr->attribute & GFX_2HZ_FLASH; - - if( (spr->w <= 0) || (spr->h <= 0) ) -80024370: 1a200062 blez s1,800244fc -80024374: afb00014 sw s0,20(sp) -80024378: 84820008 lh v0,8(a0) -8002437c: 00000000 nop -80024380: 1840005e blez v0,800244fc -80024384: 00808021 move s0,a0 - { - // Invalid width or heigth - return; - } - - if(GfxIsSpriteInsideScreenArea(spr) == false) -80024388: 0c00908a jal 80024228 -8002438c: 00000000 nop -80024390: 1040005a beqz v0,800244fc -80024394: 00000000 nop - uint8_t aux_g = spr->g; - uint8_t aux_b = spr->b; - unsigned char aux_tpage = spr->tpage; - short aux_w = spr->w; - short aux_x = spr->x; - bool has_1hz_flash = spr->attribute & GFX_1HZ_FLASH; -80024398: 8e170014 lw s7,20(s0) - while(GfxIsGPUBusy() == true); -} - -void GfxSortSprite(GsSprite * spr) -{ - uint8_t aux_r = spr->r; -8002439c: 9214000e lbu s4,14(s0) - - if(GfxIsSpriteInsideScreenArea(spr) == false) - { - return; - } - else if(has_2hz_flash && Gfx2HzFlash() == false) -800243a0: 32e20100 andi v0,s7,0x100 -} - -void GfxSortSprite(GsSprite * spr) -{ - uint8_t aux_r = spr->r; - uint8_t aux_g = spr->g; -800243a4: 9213000f lbu s3,15(s0) - uint8_t aux_b = spr->b; -800243a8: 92120010 lbu s2,16(s0) - unsigned char aux_tpage = spr->tpage; -800243ac: 92160011 lbu s6,17(s0) - short aux_w = spr->w; - short aux_x = spr->x; -800243b0: 86150000 lh s5,0(s0) - - if(GfxIsSpriteInsideScreenArea(spr) == false) - { - return; - } - else if(has_2hz_flash && Gfx2HzFlash() == false) -800243b4: 14400007 bnez v0,800243d4 -800243b8: 3c028007 lui v0,0x8007 - { - return; - } - - if(global_lum != NORMAL_LUMINANCE) -800243bc: 90421c2a lbu v0,7210(v0) -800243c0: 24030080 li v1,128 -800243c4: 14430009 bne v0,v1,800243ec -800243c8: 00000000 nop - uint8_t aux_g = spr->g; - uint8_t aux_b = spr->b; - unsigned char aux_tpage = spr->tpage; - short aux_w = spr->w; - short aux_x = spr->x; - bool has_1hz_flash = spr->attribute & GFX_1HZ_FLASH; -800243cc: 10000023 b 8002445c -800243d0: 32f70080 andi s7,s7,0x80 - - if(GfxIsSpriteInsideScreenArea(spr) == false) - { - return; - } - else if(has_2hz_flash && Gfx2HzFlash() == false) -800243d4: 0c0090c4 jal 80024310 -800243d8: 00000000 nop -800243dc: 1440fff7 bnez v0,800243bc -800243e0: 3c028007 lui v0,0x8007 -800243e4: 10000045 b 800244fc -800243e8: 00000000 nop - return; - } - - if(global_lum != NORMAL_LUMINANCE) - { - if(spr->r < NORMAL_LUMINANCE - global_lum) -800243ec: 9204000e lbu a0,14(s0) -800243f0: 00621823 subu v1,v1,v0 -800243f4: 0083282a slt a1,a0,v1 -800243f8: 10a00003 beqz a1,80024408 -800243fc: 00442021 addu a0,v0,a0 -80024400: 10000003 b 80024410 -80024404: a200000e sb zero,14(s0) - { - spr->r = 0; - } - else - { - spr->r -= NORMAL_LUMINANCE - global_lum; -80024408: 2484ff80 addiu a0,a0,-128 -8002440c: a204000e sb a0,14(s0) - } - - if(spr->g < NORMAL_LUMINANCE - global_lum) -80024410: 9204000f lbu a0,15(s0) -80024414: 00000000 nop -80024418: 0083282a slt a1,a0,v1 -8002441c: 10a00003 beqz a1,8002442c -80024420: 00442021 addu a0,v0,a0 -80024424: 10000003 b 80024434 -80024428: a200000f sb zero,15(s0) - { - spr->g = 0; - } - else - { - spr->g -= NORMAL_LUMINANCE - global_lum; -8002442c: 2484ff80 addiu a0,a0,-128 -80024430: a204000f sb a0,15(s0) - } - - if(spr->b < NORMAL_LUMINANCE - global_lum) -80024434: 92040010 lbu a0,16(s0) -80024438: 00000000 nop -8002443c: 0083182a slt v1,a0,v1 -80024440: 10600003 beqz v1,80024450 -80024444: 00441021 addu v0,v0,a0 -80024448: 10000003 b 80024458 -8002444c: a2000010 sb zero,16(s0) - { - spr->b = 0; - } - else - { - spr->b -= NORMAL_LUMINANCE - global_lum; -80024450: 2442ff80 addiu v0,v0,-128 -80024454: a2020010 sb v0,16(s0) - uint8_t aux_g = spr->g; - uint8_t aux_b = spr->b; - unsigned char aux_tpage = spr->tpage; - short aux_w = spr->w; - short aux_x = spr->x; - bool has_1hz_flash = spr->attribute & GFX_1HZ_FLASH; -80024458: 32f70080 andi s7,s7,0x80 - { - spr->b -= NORMAL_LUMINANCE - global_lum; - } - } - - if(has_1hz_flash == true) -8002445c: 12e00005 beqz s7,80024474 -80024460: 2403ff7f li v1,-129 - { - spr->attribute &= ~(GFX_1HZ_FLASH); -80024464: 8e020014 lw v0,20(s0) -80024468: 00000000 nop -8002446c: 00431024 and v0,v0,v1 -80024470: ae020014 sw v0,20(s0) - } - - if(spr->w > MAX_SIZE_FOR_GSSPRITE) -80024474: 86020006 lh v0,6(s0) -80024478: 00000000 nop -8002447c: 28420101 slti v0,v0,257 -80024480: 14400013 bnez v0,800244d0 -80024484: 24020100 li v0,256 - { - // GsSprites can't be bigger than 256x256, so since display - // resolution is 384x240, it must be split into two primitives. - - spr->w = MAX_SIZE_FOR_GSSPRITE; -80024488: a6020006 sh v0,6(s0) - GsSortSprite(spr); -8002448c: 0c00b356 jal 8002cd58 -80024490: 02002021 move a0,s0 - - spr->x += MAX_SIZE_FOR_GSSPRITE; -80024494: 96020000 lhu v0,0(s0) - spr->w = X_SCREEN_RESOLUTION - MAX_SIZE_FOR_GSSPRITE; - spr->tpage += MAX_SIZE_FOR_GSSPRITE / GFX_TPAGE_WIDTH; - GsSortSprite(spr); -80024498: 02002021 move a0,s0 - // resolution is 384x240, it must be split into two primitives. - - spr->w = MAX_SIZE_FOR_GSSPRITE; - GsSortSprite(spr); - - spr->x += MAX_SIZE_FOR_GSSPRITE; -8002449c: 24420100 addiu v0,v0,256 -800244a0: a6020000 sh v0,0(s0) - spr->w = X_SCREEN_RESOLUTION - MAX_SIZE_FOR_GSSPRITE; -800244a4: 24020080 li v0,128 -800244a8: a6020006 sh v0,6(s0) - spr->tpage += MAX_SIZE_FOR_GSSPRITE / GFX_TPAGE_WIDTH; -800244ac: 92020011 lbu v0,17(s0) -800244b0: 00000000 nop -800244b4: 24420004 addiu v0,v0,4 - GsSortSprite(spr); -800244b8: 0c00b356 jal 8002cd58 -800244bc: a2020011 sb v0,17(s0) - - // Restore original values after sorting - spr->w = aux_w; -800244c0: a6110006 sh s1,6(s0) - spr->tpage = aux_tpage; -800244c4: a2160011 sb s6,17(s0) -800244c8: 10000003 b 800244d8 -800244cc: a6150000 sh s5,0(s0) - spr->x = aux_x; - } - else - { - GsSortSprite(spr); -800244d0: 0c00b356 jal 8002cd58 -800244d4: 02002021 move a0,s0 - } - - if(has_1hz_flash == true) -800244d8: 12e00005 beqz s7,800244f0 -800244dc: 00000000 nop - { - spr->attribute |= GFX_1HZ_FLASH; -800244e0: 8e020014 lw v0,20(s0) -800244e4: 00000000 nop -800244e8: 34420080 ori v0,v0,0x80 -800244ec: ae020014 sw v0,20(s0) - } - - spr->r = aux_r; -800244f0: a214000e sb s4,14(s0) - spr->g = aux_g; -800244f4: a213000f sb s3,15(s0) - spr->b = aux_b; -800244f8: a2120010 sb s2,16(s0) -} -800244fc: 8fbf0034 lw ra,52(sp) -80024500: 8fb70030 lw s7,48(sp) -80024504: 8fb6002c lw s6,44(sp) -80024508: 8fb50028 lw s5,40(sp) -8002450c: 8fb40024 lw s4,36(sp) -80024510: 8fb30020 lw s3,32(sp) -80024514: 8fb2001c lw s2,28(sp) -80024518: 8fb10018 lw s1,24(sp) -8002451c: 8fb00014 lw s0,20(sp) -80024520: 03e00008 jr ra -80024524: 27bd0038 addiu sp,sp,56 - -80024528 : -{ - static bool first_entered = true; - static short orig_u; - static short orig_v; - - if(first_entered == true) -80024528: 3c028004 lui v0,0x8004 -8002452c: 90431460 lbu v1,5216(v0) -{ - return GfxIsInsideScreenArea(spr->x, spr->y, spr->w, spr->h); -} - -void GfxDrawButton(short x, short y, unsigned short btn) -{ -80024530: 00045400 sll t2,a0,0x10 -80024534: 00052c00 sll a1,a1,0x10 -80024538: 3c098007 lui t1,0x8007 -8002453c: 000a5403 sra t2,t2,0x10 -80024540: 00052c03 sra a1,a1,0x10 -80024544: 30c6ffff andi a2,a2,0xffff -80024548: 3c088007 lui t0,0x8007 -8002454c: 25248fa0 addiu a0,t1,-28768 - static bool first_entered = true; - static short orig_u; - static short orig_v; - - if(first_entered == true) -80024550: 10600008 beqz v1,80024574 -80024554: 3c078007 lui a3,0x8007 - { - first_entered = false; -80024558: a0401460 sb zero,5216(v0) - orig_u = PSXButtons.u; -8002455c: 90820004 lbu v0,4(a0) -80024560: 00000000 nop -80024564: a5021c28 sh v0,7208(t0) - orig_v = PSXButtons.v; -80024568: 90820005 lbu v0,5(a0) -8002456c: 00000000 nop -80024570: a4e21c26 sh v0,7206(a3) - } - - PSXButtons.w = BUTTON_SIZE; - PSXButtons.h = BUTTON_SIZE; - - PSXButtons.r = NORMAL_LUMINANCE; -80024574: 2403ff80 li v1,-128 - first_entered = false; - orig_u = PSXButtons.u; - orig_v = PSXButtons.v; - } - - PSXButtons.w = BUTTON_SIZE; -80024578: 24020010 li v0,16 - PSXButtons.h = BUTTON_SIZE; - - PSXButtons.r = NORMAL_LUMINANCE; -8002457c: a083000e sb v1,14(a0) - PSXButtons.g = NORMAL_LUMINANCE; -80024580: a083000f sb v1,15(a0) - PSXButtons.b = NORMAL_LUMINANCE; -80024584: a0830010 sb v1,16(a0) - - PSXButtons.x = x; - PSXButtons.y = y; - - switch(btn) -80024588: 24030020 li v1,32 - first_entered = false; - orig_u = PSXButtons.u; - orig_v = PSXButtons.v; - } - - PSXButtons.w = BUTTON_SIZE; -8002458c: a4820006 sh v0,6(a0) - PSXButtons.h = BUTTON_SIZE; -80024590: a4820008 sh v0,8(a0) - - PSXButtons.r = NORMAL_LUMINANCE; - PSXButtons.g = NORMAL_LUMINANCE; - PSXButtons.b = NORMAL_LUMINANCE; - - PSXButtons.x = x; -80024594: a52a8fa0 sh t2,-28768(t1) - PSXButtons.y = y; - - switch(btn) -80024598: 10c30010 beq a2,v1,800245dc -8002459c: a4850002 sh a1,2(a0) -800245a0: 2cc20021 sltiu v0,a2,33 -800245a4: 10400006 beqz v0,800245c0 -800245a8: 24020040 li v0,64 -800245ac: 24020010 li v0,16 -800245b0: 14c2000d bne a2,v0,800245e8 -800245b4: 00000000 nop - PSXButtons.u = BUTTON_SQUARE_U; - PSXButtons.v = BUTTON_SQUARE_V; - break; - - case PAD_TRIANGLE: - PSXButtons.u = BUTTON_TRIANGLE_U; -800245b8: 10000009 b 800245e0 -800245bc: a0830004 sb v1,4(a0) - PSXButtons.b = NORMAL_LUMINANCE; - - PSXButtons.x = x; - PSXButtons.y = y; - - switch(btn) -800245c0: 10c20005 beq a2,v0,800245d8 -800245c4: 24020080 li v0,128 -800245c8: 14c20007 bne a2,v0,800245e8 -800245cc: 00000000 nop - PSXButtons.u = BUTTON_CROSS_U; - PSXButtons.v = BUTTON_CROSS_V; - break; - - case PAD_SQUARE: - PSXButtons.u = BUTTON_SQUARE_U; -800245d0: 10000003 b 800245e0 -800245d4: a0800004 sb zero,4(a0) - PSXButtons.y = y; - - switch(btn) - { - case PAD_CROSS: - PSXButtons.u = BUTTON_CROSS_U; -800245d8: 24020030 li v0,48 - PSXButtons.u = BUTTON_TRIANGLE_U; - PSXButtons.v = BUTTON_TRIANGLE_V; - break; - - case PAD_CIRCLE: - PSXButtons.u = BUTTON_CIRCLE_U; -800245dc: a0820004 sb v0,4(a0) - break; - - case PAD_SQUARE: - PSXButtons.u = BUTTON_SQUARE_U; - PSXButtons.v = BUTTON_SQUARE_V; - break; -800245e0: 10000003 b 800245f0 -800245e4: a0800005 sb zero,5(a0) - case PAD_R2: - case PAD_SELECT: - case PAD_START: - default: - // Set null width and height so that sprite doesn't get sorted - PSXButtons.w = 0; -800245e8: a4800006 sh zero,6(a0) - PSXButtons.h = 0; -800245ec: a4800008 sh zero,8(a0) - break; - } - - PSXButtons.u += orig_u; -800245f0: 90820004 lbu v0,4(a0) -800245f4: 91031c28 lbu v1,7208(t0) -800245f8: 00000000 nop -800245fc: 00431021 addu v0,v0,v1 -80024600: a0820004 sb v0,4(a0) - PSXButtons.v += orig_v; -80024604: 90e31c26 lbu v1,7206(a3) -80024608: 90820005 lbu v0,5(a0) -8002460c: 00000000 nop -80024610: 00431021 addu v0,v0,v1 - - GfxSortSprite(&PSXButtons); -80024614: 080090d2 j 80024348 -80024618: a0820005 sb v0,5(a0) - -8002461c : - - return show; -} - -bool GfxTPageOffsetFromVRAMPosition(GsSprite * spr, short x, short y) -{ -8002461c: 00051400 sll v0,a1,0x10 -80024620: 00021403 sra v0,v0,0x10 - if( (x >= VRAM_W) || (x < 0) || (y >= VRAM_H) || (y < 0) ) -80024624: 3043ffff andi v1,v0,0xffff -80024628: 2c630400 sltiu v1,v1,1024 -8002462c: 1060001e beqz v1,800246a8 -80024630: 00063400 sll a2,a2,0x10 -80024634: 00063403 sra a2,a2,0x10 -80024638: 30c3ffff andi v1,a2,0xffff -8002463c: 2c630200 sltiu v1,v1,512 -80024640: 10600019 beqz v1,800246a8 -80024644: 00062a03 sra a1,a2,0x8 - { - return false; - } - - spr->tpage = x / GFX_TPAGE_WIDTH; - spr->tpage += (short)(VRAM_W / GFX_TPAGE_WIDTH) * (short)(y / GFX_TPAGE_HEIGHT); -80024648: 00021983 sra v1,v0,0x6 -8002464c: 00052900 sll a1,a1,0x4 -80024650: 00652821 addu a1,v1,a1 - - spr->u = (x % GFX_TPAGE_WIDTH); - - if(spr->attribute & COLORMODE(COLORMODE_8BPP)) -80024654: 8c830014 lw v1,20(a0) - - return show; -} - -bool GfxTPageOffsetFromVRAMPosition(GsSprite * spr, short x, short y) -{ -80024658: 27bdffe8 addiu sp,sp,-24 - { - return false; - } - - spr->tpage = x / GFX_TPAGE_WIDTH; - spr->tpage += (short)(VRAM_W / GFX_TPAGE_WIDTH) * (short)(y / GFX_TPAGE_HEIGHT); -8002465c: 30a500ff andi a1,a1,0xff - - spr->u = (x % GFX_TPAGE_WIDTH); -80024660: 3042003f andi v0,v0,0x3f - - if(spr->attribute & COLORMODE(COLORMODE_8BPP)) -80024664: 30630001 andi v1,v1,0x1 - - return show; -} - -bool GfxTPageOffsetFromVRAMPosition(GsSprite * spr, short x, short y) -{ -80024668: afbf0014 sw ra,20(sp) - { - return false; - } - - spr->tpage = x / GFX_TPAGE_WIDTH; - spr->tpage += (short)(VRAM_W / GFX_TPAGE_WIDTH) * (short)(y / GFX_TPAGE_HEIGHT); -8002466c: a0850011 sb a1,17(a0) - - spr->u = (x % GFX_TPAGE_WIDTH); - - if(spr->attribute & COLORMODE(COLORMODE_8BPP)) -80024670: 10600003 beqz v1,80024680 -80024674: a0820004 sb v0,4(a0) - { - // On 8bpp images, it looks like U offset needs to be multiplied by 2. - spr->u <<= 1; -80024678: 00021040 sll v0,v0,0x1 -8002467c: a0820004 sb v0,4(a0) - } - - spr->v = (y % GFX_TPAGE_HEIGHT); -80024680: a0860005 sb a2,5(a0) - - dprintf("Sprite:\n\tTPAGE: %d\n\tU=%d\n\tV=%d\n",spr->tpage,spr->u, spr->v); -80024684: 30c700ff andi a3,a2,0xff -80024688: 90860004 lbu a2,4(a0) -8002468c: 3c048004 lui a0,0x8004 -80024690: 0c00ed8f jal 8003b63c -80024694: 248407a8 addiu a0,a0,1960 - - return false; -} -80024698: 8fbf0014 lw ra,20(sp) -8002469c: 00001021 move v0,zero -800246a0: 03e00008 jr ra -800246a4: 27bd0018 addiu sp,sp,24 -800246a8: 03e00008 jr ra -800246ac: 00001021 move v0,zero - -800246b0 : - -TYPE_CARTESIAN_POS GfxIsometricToCartesian(TYPE_ISOMETRIC_POS * ptrIsoPos) -{ - TYPE_CARTESIAN_POS retCartPos; - - retCartPos.x = ptrIsoPos->x - (ptrIsoPos->x >> 1); -800246b0: 84a30000 lh v1,0(a1) - retCartPos.x -= ptrIsoPos->y >> 1; -800246b4: 84a70002 lh a3,2(a1) - - return false; -} - -TYPE_CARTESIAN_POS GfxIsometricToCartesian(TYPE_ISOMETRIC_POS * ptrIsoPos) -{ -800246b8: 00801021 move v0,a0 - retCartPos.x = ptrIsoPos->x - (ptrIsoPos->x >> 1); - retCartPos.x -= ptrIsoPos->y >> 1; - - retCartPos.y = ptrIsoPos->y >> 2; - retCartPos.y += ptrIsoPos->x >> 2; - retCartPos.y -= ptrIsoPos->z; -800246bc: 00073083 sra a2,a3,0x2 -800246c0: 00032083 sra a0,v1,0x2 -800246c4: 00c43021 addu a2,a2,a0 -800246c8: 94a50004 lhu a1,4(a1) - - return retCartPos; -800246cc: 00032043 sra a0,v1,0x1 -800246d0: 00641823 subu v1,v1,a0 -800246d4: 00073843 sra a3,a3,0x1 - retCartPos.x = ptrIsoPos->x - (ptrIsoPos->x >> 1); - retCartPos.x -= ptrIsoPos->y >> 1; - - retCartPos.y = ptrIsoPos->y >> 2; - retCartPos.y += ptrIsoPos->x >> 2; - retCartPos.y -= ptrIsoPos->z; -800246d8: 00c52823 subu a1,a2,a1 - - return retCartPos; -800246dc: 00671823 subu v1,v1,a3 -800246e0: a4430000 sh v1,0(v0) -} -800246e4: 03e00008 jr ra -800246e8: a4450002 sh a1,2(v0) - -800246ec : - -TYPE_CARTESIAN_POS GfxIsometricFix16ToCartesian(TYPE_ISOMETRIC_FIX16_POS * ptrIso16Pos) -{ - TYPE_ISOMETRIC_POS IsoPos; - - IsoPos.x = (short)fix16_to_int(ptrIso16Pos->x); -800246ec: 8ca30000 lw v1,0(a1) - - return retCartPos; -} - -TYPE_CARTESIAN_POS GfxIsometricFix16ToCartesian(TYPE_ISOMETRIC_FIX16_POS * ptrIso16Pos) -{ -800246f0: 27bdffe0 addiu sp,sp,-32 -800246f4: 00804021 move t0,a0 -static inline int fix16_to_int(fix16_t a) -{ -#ifdef FIXMATH_NO_ROUNDING - return a >> 16; -#else - if (a >= 0) -800246f8: 04600004 bltz v1,8002470c -800246fc: afbf001c sw ra,28(sp) - return (a + fix16_one / 2) / fix16_one; -80024700: 34028000 li v0,0x8000 -80024704: 10000002 b 80024710 -80024708: 00621821 addu v1,v1,v0 - else - return (a - fix16_one / 2) / fix16_one; -8002470c: 24638000 addiu v1,v1,-32768 -80024710: 000327c3 sra a0,v1,0x1f -80024714: 3084ffff andi a0,a0,0xffff -80024718: 00831821 addu v1,a0,v1 -8002471c: 00031c03 sra v1,v1,0x10 - TYPE_ISOMETRIC_POS IsoPos; - - IsoPos.x = (short)fix16_to_int(ptrIso16Pos->x); -80024720: a7a30010 sh v1,16(sp) - IsoPos.y = (short)fix16_to_int(ptrIso16Pos->y); -80024724: 8ca30004 lw v1,4(a1) -80024728: 00000000 nop -static inline int fix16_to_int(fix16_t a) -{ -#ifdef FIXMATH_NO_ROUNDING - return a >> 16; -#else - if (a >= 0) -8002472c: 04600003 bltz v1,8002473c -80024730: 34028000 li v0,0x8000 - return (a + fix16_one / 2) / fix16_one; -80024734: 10000002 b 80024740 -80024738: 00621821 addu v1,v1,v0 - else - return (a - fix16_one / 2) / fix16_one; -8002473c: 24638000 addiu v1,v1,-32768 -80024740: 000327c3 sra a0,v1,0x1f -80024744: 3084ffff andi a0,a0,0xffff -80024748: 00831821 addu v1,a0,v1 -8002474c: 00031c03 sra v1,v1,0x10 -80024750: a7a30012 sh v1,18(sp) - IsoPos.z = (short)fix16_to_int(ptrIso16Pos->z); -80024754: 8ca30008 lw v1,8(a1) -80024758: 00000000 nop -static inline int fix16_to_int(fix16_t a) -{ -#ifdef FIXMATH_NO_ROUNDING - return a >> 16; -#else - if (a >= 0) -8002475c: 04600003 bltz v1,8002476c -80024760: 34028000 li v0,0x8000 - return (a + fix16_one / 2) / fix16_one; -80024764: 10000002 b 80024770 -80024768: 00621821 addu v1,v1,v0 - else - return (a - fix16_one / 2) / fix16_one; -8002476c: 24638000 addiu v1,v1,-32768 -80024770: 000327c3 sra a0,v1,0x1f -80024774: 3084ffff andi a0,a0,0xffff -80024778: 00831821 addu v1,a0,v1 -8002477c: 00031c03 sra v1,v1,0x10 - - return GfxIsometricToCartesian(&IsoPos); -80024780: 27a50010 addiu a1,sp,16 -80024784: 01002021 move a0,t0 -80024788: 0c0091ac jal 800246b0 -8002478c: a7a30014 sh v1,20(sp) -} -80024790: 8fbf001c lw ra,28(sp) -80024794: 01001021 move v0,t0 -80024798: 03e00008 jr ra -8002479c: 27bd0020 addiu sp,sp,32 - -800247a0 : - -TYPE_ISOMETRIC_POS GfxCartesianToIsometric(TYPE_CARTESIAN_POS * ptrCartPos) -{ -800247a0: 00801021 move v0,a0 - TYPE_ISOMETRIC_POS IsoPos; - - /*isoX = cartX - cartY; - isoY = (cartX + cartY) / 2;*/ - IsoPos.x = ptrCartPos->x + (ptrCartPos->y << 1); -800247a4: 94a40000 lhu a0,0(a1) -800247a8: 94a50002 lhu a1,2(a1) - IsoPos.y = (ptrCartPos->y << 1) - ptrCartPos->x; - - // Explicitely suppose z = 0 - IsoPos.z = 0; - - return IsoPos; -800247ac: a4400004 sh zero,4(v0) -{ - TYPE_ISOMETRIC_POS IsoPos; - - /*isoX = cartX - cartY; - isoY = (cartX + cartY) / 2;*/ - IsoPos.x = ptrCartPos->x + (ptrCartPos->y << 1); -800247b0: 00052840 sll a1,a1,0x1 -800247b4: 30a3ffff andi v1,a1,0xffff - IsoPos.y = (ptrCartPos->y << 1) - ptrCartPos->x; - - // Explicitely suppose z = 0 - IsoPos.z = 0; - - return IsoPos; -800247b8: 00832821 addu a1,a0,v1 -800247bc: 00641823 subu v1,v1,a0 -800247c0: a4450000 sh a1,0(v0) -} -800247c4: 03e00008 jr ra -800247c8: a4430002 sh v1,2(v0) - -800247cc : - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); -} - -void ISR_LoadMenuVBlank(void) -{ -800247cc: 27bdffe0 addiu sp,sp,-32 -800247d0: afbf001c sw ra,28(sp) -800247d4: afb20018 sw s2,24(sp) -800247d8: afb10014 sw s1,20(sp) - uint8_t i; - - if( (SystemIsBusy() == true) || (GfxIsGPUBusy() == true) ) -800247dc: 0c00a057 jal 8002815c -800247e0: afb00010 sw s0,16(sp) -800247e4: 1440010e bnez v0,80024c20 -800247e8: 00000000 nop -800247ec: 0c00901d jal 80024074 -800247f0: 00000000 nop -800247f4: 1440010a bnez v0,80024c20 -800247f8: 3c028007 lui v0,0x8007 - { - return; - } - - if(startup_flag == true) -800247fc: 90451c35 lbu a1,7221(v0) -80024800: 00401821 move v1,v0 -80024804: 30a500ff andi a1,a1,0xff -80024808: 3c108004 lui s0,0x8004 -8002480c: 3c048004 lui a0,0x8004 -80024810: 3c128004 lui s2,0x8004 -80024814: 10a0005a beqz a1,80024980 -80024818: 3c118004 lui s1,0x8004 - { - // "Loading..." text - if(LoadMenuTitleSpr.r < LOADING_TITLE_LUMINANCE_TARGET) -8002481c: 26025d00 addiu v0,s0,23808 -80024820: 9045000e lbu a1,14(v0) -80024824: 00000000 nop -80024828: 00053600 sll a2,a1,0x18 -8002482c: 00063603 sra a2,a2,0x18 -80024830: 04c0000a bltz a2,8002485c -80024834: 24a5000a addiu a1,a1,10 - { - LoadMenuTitleSpr.r += LOADING_TITLE_LUMINANCE_STEP; -80024838: a045000e sb a1,14(v0) - LoadMenuTitleSpr.g += LOADING_TITLE_LUMINANCE_STEP; -8002483c: 9045000f lbu a1,15(v0) -80024840: 00000000 nop -80024844: 24a5000a addiu a1,a1,10 -80024848: a045000f sb a1,15(v0) - LoadMenuTitleSpr.b += LOADING_TITLE_LUMINANCE_STEP; -8002484c: 90450010 lbu a1,16(v0) -80024850: 00000000 nop -80024854: 24a5000a addiu a1,a1,10 -80024858: a0450010 sb a1,16(v0) - - loadMenuBg.b[0] += BG_INCREASE_STEP; - loadMenuBg.b[1] += BG_INCREASE_STEP; - } - // Blue background - if(loadMenuBg.b[2] < BG_BLUE_TARGET_VALUE) -8002485c: 24825d58 addiu v0,a0,23896 -80024860: 9045000a lbu a1,10(v0) -80024864: 00000000 nop -80024868: 2ca600c0 sltiu a2,a1,192 -8002486c: 10c00006 beqz a2,80024888 -80024870: 24a50010 addiu a1,a1,16 - { - loadMenuBg.b[2] += BG_INCREASE_STEP; -80024874: a045000a sb a1,10(v0) - loadMenuBg.b[3] += BG_INCREASE_STEP; -80024878: 9045000b lbu a1,11(v0) -8002487c: 00000000 nop -80024880: 24a50010 addiu a1,a1,16 -80024884: a045000b sb a1,11(v0) - } - - if(LoadMenuBarRect.r < LOADING_BAR_LUMINANCE_TARGET) -80024888: 26425cb0 addiu v0,s2,23728 -8002488c: 90450008 lbu a1,8(v0) -80024890: 00000000 nop -80024894: 00053600 sll a2,a1,0x18 -80024898: 00063603 sra a2,a2,0x18 -8002489c: 04c0000d bltz a2,800248d4 -800248a0: 00000000 nop - { - LoadMenuBarRect.r += LOADING_BAR_LUMINANCE_STEP; - LoadMenuBarRect.g += LOADING_BAR_LUMINANCE_STEP; -800248a4: 90430009 lbu v1,9(v0) - loadMenuBg.b[3] += BG_INCREASE_STEP; - } - - if(LoadMenuBarRect.r < LOADING_BAR_LUMINANCE_TARGET) - { - LoadMenuBarRect.r += LOADING_BAR_LUMINANCE_STEP; -800248a8: 24a5000a addiu a1,a1,10 - LoadMenuBarRect.g += LOADING_BAR_LUMINANCE_STEP; -800248ac: 2463000a addiu v1,v1,10 -800248b0: a0430009 sb v1,9(v0) - LoadMenuBarRect.b += LOADING_BAR_LUMINANCE_STEP; -800248b4: 9043000a lbu v1,10(v0) - loadMenuBg.b[3] += BG_INCREASE_STEP; - } - - if(LoadMenuBarRect.r < LOADING_BAR_LUMINANCE_TARGET) - { - LoadMenuBarRect.r += LOADING_BAR_LUMINANCE_STEP; -800248b8: a0450008 sb a1,8(v0) - LoadMenuBarRect.g += LOADING_BAR_LUMINANCE_STEP; - LoadMenuBarRect.b += LOADING_BAR_LUMINANCE_STEP; -800248bc: 2463000a addiu v1,v1,10 -800248c0: a043000a sb v1,10(v0) -800248c4: 3c058004 lui a1,0x8004 -800248c8: 26225cc0 addiu v0,s1,23744 -800248cc: 1000000a b 800248f8 -800248d0: 24a55d00 addiu a1,a1,23808 - } - else - { - startup_flag = false; -800248d4: a0601c35 sb zero,7221(v1) - isr_started = true; -800248d8: 3c028007 lui v0,0x8007 -800248dc: 24030001 li v1,1 -800248e0: a0431c34 sb v1,7220(v0) -800248e4: 1000fff8 b 800248c8 -800248e8: 3c058004 lui a1,0x8004 -800248ec: 24420010 addiu v0,v0,16 - } - - for(i = 0;i < LOADING_BAR_N_LINES ; i++) -800248f0: 10450011 beq v0,a1,80024938 -800248f4: 00000000 nop - { - if(LoadMenuBarLines[i].r < LOADING_BAR_LUMINANCE_TARGET) -800248f8: 90430000 lbu v1,0(v0) -800248fc: 00000000 nop -80024900: 00033600 sll a2,v1,0x18 -80024904: 00063603 sra a2,a2,0x18 -80024908: 04c0fff8 bltz a2,800248ec -8002490c: 2463000a addiu v1,v1,10 - { - LoadMenuBarLines[i].r += LOADING_BAR_LUMINANCE_STEP; -80024910: a0430000 sb v1,0(v0) - LoadMenuBarLines[i].g += LOADING_BAR_LUMINANCE_STEP; -80024914: 90430001 lbu v1,1(v0) -80024918: 00000000 nop -8002491c: 2463000a addiu v1,v1,10 -80024920: a0430001 sb v1,1(v0) - LoadMenuBarLines[i].b += LOADING_BAR_LUMINANCE_STEP; -80024924: 90430002 lbu v1,2(v0) -80024928: 00000000 nop -8002492c: 2463000a addiu v1,v1,10 -80024930: 1000ffee b 800248ec -80024934: a0430002 sb v1,2(v0) - } - } - - if(LoadMenuPlaneSpr.r < PLANE_LUMINANCE_TARGET_VALUE) -80024938: 3c028004 lui v0,0x8004 -8002493c: 24425d2c addiu v0,v0,23852 -80024940: 9043000e lbu v1,14(v0) -80024944: 00000000 nop -80024948: 00032e00 sll a1,v1,0x18 -8002494c: 00052e03 sra a1,a1,0x18 -80024950: 04a00079 bltz a1,80024b38 -80024954: 24630010 addiu v1,v1,16 - { - LoadMenuPlaneSpr.r += PLANE_LUMINANCE_STEP; -80024958: a043000e sb v1,14(v0) - LoadMenuPlaneSpr.g += PLANE_LUMINANCE_STEP; -8002495c: 9043000f lbu v1,15(v0) -80024960: 00000000 nop -80024964: 24630010 addiu v1,v1,16 -80024968: a043000f sb v1,15(v0) - LoadMenuPlaneSpr.b += PLANE_LUMINANCE_STEP; -8002496c: 90430010 lbu v1,16(v0) -80024970: 00000000 nop -80024974: 24630010 addiu v1,v1,16 -80024978: 1000006f b 80024b38 -8002497c: a0430010 sb v1,16(v0) - } - - } - else if(end_flag == true) -80024980: 3c038007 lui v1,0x8007 -80024984: 90621c33 lbu v0,7219(v1) -80024988: 00000000 nop -8002498c: 304200ff andi v0,v0,0xff -80024990: 10400069 beqz v0,80024b38 -80024994: 26025d00 addiu v0,s0,23808 - { - LoadMenuTitleSpr.r -= LOADING_TITLE_LUMINANCE_STEP; -80024998: 9045000e lbu a1,14(v0) -8002499c: 00000000 nop -800249a0: 24a5fff6 addiu a1,a1,-10 -800249a4: a045000e sb a1,14(v0) - LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP; -800249a8: 9045000f lbu a1,15(v0) -800249ac: 00000000 nop -800249b0: 24a5fff6 addiu a1,a1,-10 -800249b4: a045000f sb a1,15(v0) - LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP; -800249b8: 90450010 lbu a1,16(v0) -800249bc: 00000000 nop -800249c0: 24a5fff6 addiu a1,a1,-10 -800249c4: a0450010 sb a1,16(v0) - - if(loadMenuBg.g[0] > 0) -800249c8: 24825d58 addiu v0,a0,23896 -800249cc: 90450004 lbu a1,4(v0) -800249d0: 00000000 nop -800249d4: 10a00011 beqz a1,80024a1c -800249d8: 24a5fff0 addiu a1,a1,-16 - { - loadMenuBg.r[0] -= BG_INCREASE_STEP; - loadMenuBg.r[1] -= BG_INCREASE_STEP; - - loadMenuBg.g[0] -= BG_INCREASE_STEP; -800249dc: a0450004 sb a1,4(v0) - loadMenuBg.g[1] -= BG_INCREASE_STEP; -800249e0: 90450005 lbu a1,5(v0) - LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP; - LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP; - - if(loadMenuBg.g[0] > 0) - { - loadMenuBg.r[0] -= BG_INCREASE_STEP; -800249e4: 90865d58 lbu a2,23896(a0) - loadMenuBg.r[1] -= BG_INCREASE_STEP; - - loadMenuBg.g[0] -= BG_INCREASE_STEP; - loadMenuBg.g[1] -= BG_INCREASE_STEP; -800249e8: 24a5fff0 addiu a1,a1,-16 -800249ec: a0450005 sb a1,5(v0) - - loadMenuBg.b[0] -= BG_INCREASE_STEP; -800249f0: 90450008 lbu a1,8(v0) - LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP; - LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP; - - if(loadMenuBg.g[0] > 0) - { - loadMenuBg.r[0] -= BG_INCREASE_STEP; -800249f4: 24c6fff0 addiu a2,a2,-16 - loadMenuBg.r[1] -= BG_INCREASE_STEP; - - loadMenuBg.g[0] -= BG_INCREASE_STEP; - loadMenuBg.g[1] -= BG_INCREASE_STEP; - - loadMenuBg.b[0] -= BG_INCREASE_STEP; -800249f8: 24a5fff0 addiu a1,a1,-16 - LoadMenuTitleSpr.g -= LOADING_TITLE_LUMINANCE_STEP; - LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP; - - if(loadMenuBg.g[0] > 0) - { - loadMenuBg.r[0] -= BG_INCREASE_STEP; -800249fc: a0865d58 sb a2,23896(a0) - loadMenuBg.r[1] -= BG_INCREASE_STEP; - - loadMenuBg.g[0] -= BG_INCREASE_STEP; - loadMenuBg.g[1] -= BG_INCREASE_STEP; - - loadMenuBg.b[0] -= BG_INCREASE_STEP; -80024a00: a0450008 sb a1,8(v0) - LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP; - - if(loadMenuBg.g[0] > 0) - { - loadMenuBg.r[0] -= BG_INCREASE_STEP; - loadMenuBg.r[1] -= BG_INCREASE_STEP; -80024a04: 90460001 lbu a2,1(v0) - - loadMenuBg.g[0] -= BG_INCREASE_STEP; - loadMenuBg.g[1] -= BG_INCREASE_STEP; - - loadMenuBg.b[0] -= BG_INCREASE_STEP; - loadMenuBg.b[1] -= BG_INCREASE_STEP; -80024a08: 90450009 lbu a1,9(v0) - LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP; - - if(loadMenuBg.g[0] > 0) - { - loadMenuBg.r[0] -= BG_INCREASE_STEP; - loadMenuBg.r[1] -= BG_INCREASE_STEP; -80024a0c: 24c6fff0 addiu a2,a2,-16 - - loadMenuBg.g[0] -= BG_INCREASE_STEP; - loadMenuBg.g[1] -= BG_INCREASE_STEP; - - loadMenuBg.b[0] -= BG_INCREASE_STEP; - loadMenuBg.b[1] -= BG_INCREASE_STEP; -80024a10: 24a5fff0 addiu a1,a1,-16 - LoadMenuTitleSpr.b -= LOADING_TITLE_LUMINANCE_STEP; - - if(loadMenuBg.g[0] > 0) - { - loadMenuBg.r[0] -= BG_INCREASE_STEP; - loadMenuBg.r[1] -= BG_INCREASE_STEP; -80024a14: a0460001 sb a2,1(v0) - - loadMenuBg.g[0] -= BG_INCREASE_STEP; - loadMenuBg.g[1] -= BG_INCREASE_STEP; - - loadMenuBg.b[0] -= BG_INCREASE_STEP; - loadMenuBg.b[1] -= BG_INCREASE_STEP; -80024a18: a0450009 sb a1,9(v0) - } - - if(loadMenuBg.b[2] > 0) -80024a1c: 9045000a lbu a1,10(v0) -80024a20: 00000000 nop -80024a24: 10a00006 beqz a1,80024a40 -80024a28: 24a5fff0 addiu a1,a1,-16 - { - loadMenuBg.b[2] -= BG_INCREASE_STEP; -80024a2c: a045000a sb a1,10(v0) - loadMenuBg.b[3] -= BG_INCREASE_STEP; -80024a30: 9045000b lbu a1,11(v0) -80024a34: 00000000 nop -80024a38: 24a5fff0 addiu a1,a1,-16 -80024a3c: a045000b sb a1,11(v0) - } - - if(loadMenuBg.b[2] == 0) -80024a40: 9042000a lbu v0,10(v0) -80024a44: 00000000 nop -80024a48: 14400005 bnez v0,80024a60 -80024a4c: 00000000 nop - { - end_flag = false; -80024a50: a0601c33 sb zero,7219(v1) - isr_ended = true; -80024a54: 3c028007 lui v0,0x8007 -80024a58: 24030001 li v1,1 -80024a5c: a0431c32 sb v1,7218(v0) - } - - if(LoadMenuPlaneSpr.r > 0) -80024a60: 3c038004 lui v1,0x8004 -80024a64: 24625d2c addiu v0,v1,23852 -80024a68: 9045000e lbu a1,14(v0) -80024a6c: 00000000 nop -80024a70: 10a0000a beqz a1,80024a9c -80024a74: 24a5fff0 addiu a1,a1,-16 - { - LoadMenuPlaneSpr.r -= PLANE_LUMINANCE_STEP; -80024a78: a045000e sb a1,14(v0) - LoadMenuPlaneSpr.g -= PLANE_LUMINANCE_STEP; -80024a7c: 9045000f lbu a1,15(v0) -80024a80: 00000000 nop -80024a84: 24a5fff0 addiu a1,a1,-16 -80024a88: a045000f sb a1,15(v0) - LoadMenuPlaneSpr.b -= PLANE_LUMINANCE_STEP; -80024a8c: 90450010 lbu a1,16(v0) -80024a90: 00000000 nop -80024a94: 24a5fff0 addiu a1,a1,-16 -80024a98: a0450010 sb a1,16(v0) - } - - LoadMenuPlaneSpr.x = (PLANE_START_X + LOADING_BAR_WIDTH); -80024a9c: 24050138 li a1,312 -80024aa0: a4655d2c sh a1,23852(v1) - LoadMenuPlaneSpr.y = PLANE_START_Y; -80024aa4: 240300c8 li v1,200 -80024aa8: a4430002 sh v1,2(v0) - - LoadMenuBarRect.w = LOADING_BAR_WIDTH; -80024aac: 26425cb0 addiu v0,s2,23728 -80024ab0: 24030100 li v1,256 -80024ab4: a4430004 sh v1,4(v0) - - if(LoadMenuBarRect.r > 0) -80024ab8: 90430008 lbu v1,8(v0) -80024abc: 00000000 nop -80024ac0: 1060000b beqz v1,80024af0 -80024ac4: 3c058004 lui a1,0x8004 - { - LoadMenuBarRect.r -= LOADING_BAR_LUMINANCE_STEP; -80024ac8: 2463fff6 addiu v1,v1,-10 -80024acc: a0430008 sb v1,8(v0) - LoadMenuBarRect.g -= LOADING_BAR_LUMINANCE_STEP; -80024ad0: 90430009 lbu v1,9(v0) -80024ad4: 00000000 nop -80024ad8: 2463fff6 addiu v1,v1,-10 -80024adc: a0430009 sb v1,9(v0) - LoadMenuBarRect.b -= LOADING_BAR_LUMINANCE_STEP; -80024ae0: 9043000a lbu v1,10(v0) -80024ae4: 00000000 nop -80024ae8: 2463fff6 addiu v1,v1,-10 -80024aec: a043000a sb v1,10(v0) -80024af0: 26225cc0 addiu v0,s1,23744 -80024af4: 24a55d00 addiu a1,a1,23808 - } - - for(i = 0;i < LOADING_BAR_N_LINES ; i++) - { - if(LoadMenuBarLines[i].r > 0) -80024af8: 90430000 lbu v1,0(v0) -80024afc: 00000000 nop -80024b00: 1060000a beqz v1,80024b2c -80024b04: 2463fff6 addiu v1,v1,-10 - { - LoadMenuBarLines[i].r -= LOADING_BAR_LUMINANCE_STEP; -80024b08: a0430000 sb v1,0(v0) - LoadMenuBarLines[i].g -= LOADING_BAR_LUMINANCE_STEP; -80024b0c: 90430001 lbu v1,1(v0) -80024b10: 00000000 nop -80024b14: 2463fff6 addiu v1,v1,-10 -80024b18: a0430001 sb v1,1(v0) - LoadMenuBarLines[i].b -= LOADING_BAR_LUMINANCE_STEP; -80024b1c: 90430002 lbu v1,2(v0) -80024b20: 00000000 nop -80024b24: 2463fff6 addiu v1,v1,-10 -80024b28: a0430002 sb v1,2(v0) -80024b2c: 24420010 addiu v0,v0,16 - LoadMenuBarRect.r -= LOADING_BAR_LUMINANCE_STEP; - LoadMenuBarRect.g -= LOADING_BAR_LUMINANCE_STEP; - LoadMenuBarRect.b -= LOADING_BAR_LUMINANCE_STEP; - } - - for(i = 0;i < LOADING_BAR_N_LINES ; i++) -80024b30: 1445fff1 bne v0,a1,80024af8 -80024b34: 00000000 nop - LoadMenuBarLines[i].b -= LOADING_BAR_LUMINANCE_STEP; - } - } - } - - GsSortGPoly4(&loadMenuBg); -80024b38: 0c00b0e6 jal 8002c398 -80024b3c: 24845d58 addiu a0,a0,23896 - - GsSortRectangle(&LoadMenuBarRect); -80024b40: 0c00b762 jal 8002dd88 -80024b44: 26445cb0 addiu a0,s2,23728 - - for(i = 0 ; i < LOADING_BAR_N_LINES ; i++) - { - GsSortLine(&LoadMenuBarLines[i]); -80024b48: 0c00b18e jal 8002c638 -80024b4c: 26245cc0 addiu a0,s1,23744 -80024b50: 3c048004 lui a0,0x8004 -80024b54: 0c00b18e jal 8002c638 -80024b58: 24845cd0 addiu a0,a0,23760 -80024b5c: 3c048004 lui a0,0x8004 -80024b60: 0c00b18e jal 8002c638 -80024b64: 24845ce0 addiu a0,a0,23776 -80024b68: 3c048004 lui a0,0x8004 -80024b6c: 0c00b18e jal 8002c638 -80024b70: 24845cf0 addiu a0,a0,23792 - } - - GsSortSprite(&LoadMenuTitleSpr); -80024b74: 0c00b356 jal 8002cd58 -80024b78: 26045d00 addiu a0,s0,23808 - - LoadMenuPlaneSpr.w = PLANE_SIZE; -80024b7c: 3c048004 lui a0,0x8004 -80024b80: 24845d2c addiu a0,a0,23852 -80024b84: 24020010 li v0,16 - LoadMenuPlaneSpr.u = PLANE_U; - LoadMenuPlaneSpr.v = PLANE_V; - - GsSortSprite(&LoadMenuPlaneSpr); - - FontSetFlags(&SmallFont, FONT_BLEND_EFFECT); -80024b88: 3c108007 lui s0,0x8007 - GsSortLine(&LoadMenuBarLines[i]); - } - - GsSortSprite(&LoadMenuTitleSpr); - - LoadMenuPlaneSpr.w = PLANE_SIZE; -80024b8c: a4820006 sh v0,6(a0) - LoadMenuPlaneSpr.h = PLANE_SIZE; -80024b90: a4820008 sh v0,8(a0) - - LoadMenuPlaneSpr.u = PLANE_U; - LoadMenuPlaneSpr.v = PLANE_V; -80024b94: 24020020 li v0,32 -80024b98: a0820005 sb v0,5(a0) - - GsSortSprite(&LoadMenuPlaneSpr); -80024b9c: 0c00b356 jal 8002cd58 -80024ba0: a0800004 sb zero,4(a0) - - FontSetFlags(&SmallFont, FONT_BLEND_EFFECT); -80024ba4: 26048d38 addiu a0,s0,-29384 -80024ba8: 0c008441 jal 80021104 -80024bac: 24050004 li a1,4 - - FontPrintText( &SmallFont, -80024bb0: 3c028007 lui v0,0x8007 -80024bb4: 8c471c38 lw a3,7224(v0) -80024bb8: 26048d38 addiu a0,s0,-29384 -80024bbc: 240600e0 li a2,224 -80024bc0: 0c008451 jal 80021144 -80024bc4: 24050038 li a1,56 - LOADING_BAR_X - 8, - LOADING_BAR_Y + LOADING_BAR_HEIGHT + 8, - strCurrentFile ); - - FontSetFlags(&SmallFont, FONT_NOFLAGS); -80024bc8: 26048d38 addiu a0,s0,-29384 -80024bcc: 0c008441 jal 80021104 -80024bd0: 00002821 move a1,zero - - small_font_lum -= 8; -80024bd4: 3c028007 lui v0,0x8007 -80024bd8: 90431c3c lbu v1,7228(v0) - - SmallFont.spr.r = small_font_lum; -80024bdc: 26108d38 addiu s0,s0,-29384 - LOADING_BAR_Y + LOADING_BAR_HEIGHT + 8, - strCurrentFile ); - - FontSetFlags(&SmallFont, FONT_NOFLAGS); - - small_font_lum -= 8; -80024be0: 2463fff8 addiu v1,v1,-8 -80024be4: 306300ff andi v1,v1,0xff -80024be8: a0431c3c sb v1,7228(v0) - - SmallFont.spr.r = small_font_lum; -80024bec: 90431c3c lbu v1,7228(v0) -80024bf0: 00000000 nop -80024bf4: a203000e sb v1,14(s0) - SmallFont.spr.g = small_font_lum; -80024bf8: 90431c3c lbu v1,7228(v0) - SmallFont.spr.b = small_font_lum; -80024bfc: 90421c3c lbu v0,7228(v0) - FontSetFlags(&SmallFont, FONT_NOFLAGS); - - small_font_lum -= 8; - - SmallFont.spr.r = small_font_lum; - SmallFont.spr.g = small_font_lum; -80024c00: a203000f sb v1,15(s0) - SmallFont.spr.b = small_font_lum; -80024c04: a2020010 sb v0,16(s0) - - GfxDrawScene_Fast(); -} -80024c08: 8fbf001c lw ra,28(sp) -80024c0c: 8fb20018 lw s2,24(sp) -80024c10: 8fb10014 lw s1,20(sp) -80024c14: 8fb00010 lw s0,16(sp) - - SmallFont.spr.r = small_font_lum; - SmallFont.spr.g = small_font_lum; - SmallFont.spr.b = small_font_lum; - - GfxDrawScene_Fast(); -80024c18: 08008fc1 j 80023f04 -80024c1c: 27bd0020 addiu sp,sp,32 -} -80024c20: 8fbf001c lw ra,28(sp) -80024c24: 8fb20018 lw s2,24(sp) -80024c28: 8fb10014 lw s1,20(sp) -80024c2c: 8fb00010 lw s0,16(sp) -80024c30: 03e00008 jr ra -80024c34: 27bd0020 addiu sp,sp,32 - -80024c38 : - - LoadMenuLoadFileList(fileList,dest,szFileList,szDestList); - -} - -void LoadMenuLoadFileList( char * fileList[], void * dest[], -80024c38: 27bdff60 addiu sp,sp,-160 -80024c3c: afb50090 sw s5,144(sp) -80024c40: afb30088 sw s3,136(sp) - - //We want to get file extension, so split into tokens - strtok(fileList[fileLoadedCount],".;"); - extension = strtok(NULL,".;"); - - dprintf("File extension: .%s\n",extension); -80024c44: 3c158004 lui s5,0x8004 - - // Backup original file path - strncpy(aux_file_name,fileList[fileLoadedCount],100); - - //We want to get file extension, so split into tokens - strtok(fileList[fileLoadedCount],".;"); -80024c48: 3c138004 lui s3,0x8004 - - LoadMenuLoadFileList(fileList,dest,szFileList,szDestList); - -} - -void LoadMenuLoadFileList( char * fileList[], void * dest[], -80024c4c: afb60094 sw s6,148(sp) -80024c50: afb4008c sw s4,140(sp) -80024c54: afb20084 sw s2,132(sp) -80024c58: afb10080 sw s1,128(sp) -80024c5c: afb0007c sw s0,124(sp) -80024c60: afbf009c sw ra,156(sp) -80024c64: afb70098 sw s7,152(sp) -80024c68: 00c0a021 move s4,a2 -80024c6c: 00808021 move s0,a0 -80024c70: 00a08821 move s1,a1 -80024c74: 00009021 move s2,zero - if(fileList[fileLoadedCount] == NULL) - { - continue; - } - - strCurrentFile = fileList[fileLoadedCount]; -80024c78: 3c168007 lui s6,0x8007 - - // Backup original file path - strncpy(aux_file_name,fileList[fileLoadedCount],100); - - //We want to get file extension, so split into tokens - strtok(fileList[fileLoadedCount],".;"); -80024c7c: 267307c8 addiu s3,s3,1992 - extension = strtok(NULL,".;"); - - dprintf("File extension: .%s\n",extension); -80024c80: 26b507cc addiu s5,s5,1996 - dprintf("File list size different from dest list size! %d vs %d\n", - szFileList, szDestList); - return; - } - - for(fileLoadedCount = 0; fileLoadedCount < szFileList ; fileLoadedCount++) -80024c84: 1254007e beq s2,s4,80024e80 -80024c88: 00000000 nop - { - if(fileList[fileLoadedCount] == NULL) -80024c8c: 8e050000 lw a1,0(s0) -80024c90: 00000000 nop -80024c94: 10a00076 beqz a1,80024e70 -80024c98: 24020100 li v0,256 - - x_increment = (short)(LOADING_BAR_WIDTH / szFileList); - - // Calculate new X position for loading menu plane sprite. - // This is not calculated on ISR as to avoid longer ISR time. - LoadMenuPlaneSpr.x = (PLANE_START_X + (fileLoadedCount* x_increment) ); -80024c9c: 16800002 bnez s4,80024ca8 -80024ca0: 0054001a div zero,v0,s4 -80024ca4: 0007000d break 0x7 -80024ca8: 3c038004 lui v1,0x8004 - LoadMenuBarRect.w = fileLoadedCount* x_increment; - - //dprintf("Files %d / %d loaded. New plane X = %d.\n",fileLoadedCount,szFileList,LoadMenuPlaneSpr.x); - - // Backup original file path - strncpy(aux_file_name,fileList[fileLoadedCount],100); -80024cac: 24060064 li a2,100 - if(fileList[fileLoadedCount] == NULL) - { - continue; - } - - strCurrentFile = fileList[fileLoadedCount]; -80024cb0: aec51c38 sw a1,7224(s6) - - x_increment = (short)(LOADING_BAR_WIDTH / szFileList); - - // Calculate new X position for loading menu plane sprite. - // This is not calculated on ISR as to avoid longer ISR time. - LoadMenuPlaneSpr.x = (PLANE_START_X + (fileLoadedCount* x_increment) ); -80024cb4: 00001012 mflo v0 - ... -80024cc0: 00520018 mult v0,s2 -80024cc4: 00001012 mflo v0 -80024cc8: 3042ffff andi v0,v0,0xffff -80024ccc: 24440038 addiu a0,v0,56 -80024cd0: a4645d2c sh a0,23852(v1) - - LoadMenuBarRect.w = fileLoadedCount* x_increment; -80024cd4: 3c038004 lui v1,0x8004 - - //dprintf("Files %d / %d loaded. New plane X = %d.\n",fileLoadedCount,szFileList,LoadMenuPlaneSpr.x); - - // Backup original file path - strncpy(aux_file_name,fileList[fileLoadedCount],100); -80024cd8: 27a40010 addiu a0,sp,16 -80024cdc: 0c00d860 jal 80036180 -80024ce0: a4625cb4 sh v0,23732(v1) - - //We want to get file extension, so split into tokens - strtok(fileList[fileLoadedCount],".;"); -80024ce4: 8e040000 lw a0,0(s0) -80024ce8: 0c00ddea jal 800377a8 -80024cec: 02602821 move a1,s3 - extension = strtok(NULL,".;"); -80024cf0: 02602821 move a1,s3 -80024cf4: 0c00ddea jal 800377a8 -80024cf8: 00002021 move a0,zero - - dprintf("File extension: .%s\n",extension); -80024cfc: 00402821 move a1,v0 -80024d00: 02a02021 move a0,s5 -80024d04: 0c00ed8f jal 8003b63c -80024d08: 0040b821 move s7,v0 - //Restore original file path in order to load file - strncpy(fileList[fileLoadedCount],aux_file_name,100); -80024d0c: 8e040000 lw a0,0(s0) -80024d10: 24060064 li a2,100 -80024d14: 0c00d860 jal 80036180 -80024d18: 27a50010 addiu a1,sp,16 - - if(strncmp(extension,"TIM",3) == 0) -80024d1c: 3c058004 lui a1,0x8004 -80024d20: 24060003 li a2,3 -80024d24: 24a507e4 addiu a1,a1,2020 -80024d28: 0c00d9dd jal 80036774 -80024d2c: 02e02021 move a0,s7 -80024d30: 1440000a bnez v0,80024d5c -80024d34: 3c058004 lui a1,0x8004 - { - if(GfxSpriteFromFile(fileList[fileLoadedCount], dest[fileLoadedCount]) == false) -80024d38: 8e250000 lw a1,0(s1) -80024d3c: 8e040000 lw a0,0(s0) -80024d40: 0c00903c jal 800240f0 -80024d44: 00000000 nop -80024d48: 14400049 bnez v0,80024e70 -80024d4c: 3c048004 lui a0,0x8004 - { - dprintf("Could not load image file \"%s\"!\n",fileList[fileLoadedCount]); -80024d50: 8e050000 lw a1,0(s0) -80024d54: 10000044 b 80024e68 -80024d58: 248407e8 addiu a0,a0,2024 - } - } - else if(strncmp(extension,"CLT",3) == 0) -80024d5c: 24060003 li a2,3 -80024d60: 24a5080c addiu a1,a1,2060 -80024d64: 0c00d9dd jal 80036774 -80024d68: 02e02021 move a0,s7 -80024d6c: 1440000f bnez v0,80024dac -80024d70: 3c058004 lui a1,0x8004 - { - if(dest[fileLoadedCount] != NULL) -80024d74: 8e250000 lw a1,0(s1) -80024d78: 00000000 nop -80024d7c: 10a00003 beqz a1,80024d8c -80024d80: 3c048004 lui a0,0x8004 - { - dprintf("WARNING: File %s linked to non-NULL destination pointer!\n", dest[fileLoadedCount]); -80024d84: 0c00ed8f jal 8003b63c -80024d88: 24840810 addiu a0,a0,2064 - } - - if(GfxCLUTFromFile(fileList[fileLoadedCount]) == false) -80024d8c: 8e040000 lw a0,0(s0) -80024d90: 0c00905c jal 80024170 -80024d94: 00000000 nop -80024d98: 14400035 bnez v0,80024e70 -80024d9c: 3c048004 lui a0,0x8004 - { - dprintf("Could not load CLUT file \"%s\"!\n",fileList[fileLoadedCount]); -80024da0: 8e050000 lw a1,0(s0) -80024da4: 10000030 b 80024e68 -80024da8: 2484084c addiu a0,a0,2124 - } - } - else if(strncmp(extension,"VAG",3) == 0) -80024dac: 24060003 li a2,3 -80024db0: 24a5086c addiu a1,a1,2156 -80024db4: 0c00d9dd jal 80036774 -80024db8: 02e02021 move a0,s7 -80024dbc: 1440000a bnez v0,80024de8 -80024dc0: 3c058004 lui a1,0x8004 - { - if(SfxUploadSound(fileList[fileLoadedCount], dest[fileLoadedCount]) == false) -80024dc4: 8e250000 lw a1,0(s1) -80024dc8: 8e040000 lw a0,0(s0) -80024dcc: 0c009eef jal 80027bbc -80024dd0: 00000000 nop -80024dd4: 14400026 bnez v0,80024e70 -80024dd8: 3c048004 lui a0,0x8004 - { - dprintf("Could not load sound file \"%s\"!\n",fileList[fileLoadedCount]); -80024ddc: 8e050000 lw a1,0(s0) -80024de0: 10000021 b 80024e68 -80024de4: 24840870 addiu a0,a0,2160 - } - } - else if(strncmp(extension,"FNT",3) == 0) -80024de8: 24060003 li a2,3 -80024dec: 24a50894 addiu a1,a1,2196 -80024df0: 0c00d9dd jal 80036774 -80024df4: 02e02021 move a0,s7 -80024df8: 1440000a bnez v0,80024e24 -80024dfc: 3c058004 lui a1,0x8004 - { - if(FontLoadImage(fileList[fileLoadedCount], dest[fileLoadedCount]) == false) -80024e00: 8e250000 lw a1,0(s1) -80024e04: 8e040000 lw a0,0(s0) -80024e08: 0c008411 jal 80021044 -80024e0c: 00000000 nop -80024e10: 14400017 bnez v0,80024e70 -80024e14: 3c048004 lui a0,0x8004 - { - dprintf("Could not load font file \"%s\"!\n",fileList[fileLoadedCount]); -80024e18: 8e050000 lw a1,0(s0) -80024e1c: 10000012 b 80024e68 -80024e20: 24840898 addiu a0,a0,2200 - } - } - else if(strncmp(extension,"PLT",3) == 0) -80024e24: 24060003 li a2,3 -80024e28: 24a508b8 addiu a1,a1,2232 -80024e2c: 0c00d9dd jal 80036774 -80024e30: 02e02021 move a0,s7 -80024e34: 1440000a bnez v0,80024e60 -80024e38: 3c048004 lui a0,0x8004 - { - if(PltParserLoadFile(fileList[fileLoadedCount], dest[fileLoadedCount]) == false) -80024e3c: 8e250000 lw a1,0(s1) -80024e40: 8e040000 lw a0,0(s0) -80024e44: 0c009bbb jal 80026eec -80024e48: 00000000 nop -80024e4c: 14400008 bnez v0,80024e70 -80024e50: 3c048004 lui a0,0x8004 - { - dprintf("Could not load pilots file \"%s\"!\n",fileList[fileLoadedCount]); -80024e54: 8e050000 lw a1,0(s0) -80024e58: 10000003 b 80024e68 -80024e5c: 248408bc addiu a0,a0,2236 - } - } - else - { - dprintf("LoadMenu does not recognize following extension: %s\n",extension); -80024e60: 02e02821 move a1,s7 -80024e64: 248408e0 addiu a0,a0,2272 -80024e68: 0c00ed8f jal 8003b63c -80024e6c: 00000000 nop -80024e70: 26520001 addiu s2,s2,1 -80024e74: 26100004 addiu s0,s0,4 -80024e78: 1000ff82 b 80024c84 -80024e7c: 26310004 addiu s1,s1,4 - } - } -} -80024e80: 8fbf009c lw ra,156(sp) -80024e84: 8fb70098 lw s7,152(sp) -80024e88: 8fb60094 lw s6,148(sp) -80024e8c: 8fb50090 lw s5,144(sp) -80024e90: 8fb4008c lw s4,140(sp) -80024e94: 8fb30088 lw s3,136(sp) -80024e98: 8fb20084 lw s2,132(sp) -80024e9c: 8fb10080 lw s1,128(sp) -80024ea0: 8fb0007c lw s0,124(sp) -80024ea4: 03e00008 jr ra -80024ea8: 27bd00a0 addiu sp,sp,160 - -80024eac : - SetVBlankHandler(&ISR_LoadMenuVBlank); -} - -void LoadMenuEnd(void) -{ - end_flag = true; -80024eac: 24030001 li v1,1 -80024eb0: 3c028007 lui v0,0x8007 -80024eb4: a0431c33 sb v1,7219(v0) - load_menu_running = false; -80024eb8: 3c028007 lui v0,0x8007 -80024ebc: a0401c31 sb zero,7217(v0) - GfxDrawScene_Fast(); -} - -bool LoadMenuISRHasEnded(void) -{ - return isr_ended; -80024ec0: 3c038007 lui v1,0x8007 -80024ec4: 90621c32 lbu v0,7218(v1) -80024ec8: 00000000 nop -80024ecc: 304200ff andi v0,v0,0xff -void LoadMenuEnd(void) -{ - end_flag = true; - load_menu_running = false; - - while(LoadMenuISRHasEnded() == false); -80024ed0: 1040fffc beqz v0,80024ec4 -80024ed4: 3c048004 lui a0,0x8004 - - SetVBlankHandler(&ISR_LoadMenuVBlank); -} - -void LoadMenuEnd(void) -{ -80024ed8: 27bdffe8 addiu sp,sp,-24 -80024edc: afbf0014 sw ra,20(sp) - end_flag = true; - load_menu_running = false; - - while(LoadMenuISRHasEnded() == false); - dprintf("Set default VBlank handler.\n"); -80024ee0: 0c00ed8f jal 8003b63c -80024ee4: 24840918 addiu a0,a0,2328 - SetVBlankHandler(&ISR_SystemDefaultVBlank); -80024ee8: 3c048002 lui a0,0x8002 -80024eec: 0c00d35e jal 80034d78 -80024ef0: 24847ea0 addiu a0,a0,32416 - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); -} -80024ef4: 8fbf0014 lw ra,20(sp) - - while(LoadMenuISRHasEnded() == false); - dprintf("Set default VBlank handler.\n"); - SetVBlankHandler(&ISR_SystemDefaultVBlank); - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); -80024ef8: 24040080 li a0,128 -80024efc: 0800900b j 8002402c -80024f00: 27bd0018 addiu sp,sp,24 - -80024f04 : -} - -void LoadMenu( char * fileList[], - void * dest[], - uint8_t szFileList , uint8_t szDestList) -{ -80024f04: 27bdffd0 addiu sp,sp,-48 -80024f08: afb00010 sw s0,16(sp) - - if(load_menu_running == false) -80024f0c: 3c108007 lui s0,0x8007 -80024f10: 92021c31 lbu v0,7217(s0) -} - -void LoadMenu( char * fileList[], - void * dest[], - uint8_t szFileList , uint8_t szDestList) -{ -80024f14: afb40020 sw s4,32(sp) -80024f18: afb3001c sw s3,28(sp) -80024f1c: afb20018 sw s2,24(sp) -80024f20: afb10014 sw s1,20(sp) -80024f24: afbf002c sw ra,44(sp) -80024f28: afb60028 sw s6,40(sp) -80024f2c: afb50024 sw s5,36(sp) -80024f30: 00809821 move s3,a0 -80024f34: 00a0a021 move s4,a1 -80024f38: 30d100ff andi s1,a2,0xff - - if(load_menu_running == false) -80024f3c: 1040000f beqz v0,80024f7c -80024f40: 30f200ff andi s2,a3,0xff - char aux_file_name[100]; - char * extension; - short x_increment; - uint8_t fileLoadedCount; - - if(szFileList != szDestList) -80024f44: 16320093 bne s1,s2,80025194 -80024f48: 02203021 move a2,s1 - while(LoadMenuISRHasStarted() == false); - } - - LoadMenuLoadFileList(fileList,dest,szFileList,szDestList); - -} -80024f4c: 8fbf002c lw ra,44(sp) -80024f50: 8fb60028 lw s6,40(sp) -80024f54: 8fb50024 lw s5,36(sp) -80024f58: 8fb20018 lw s2,24(sp) -80024f5c: 8fb00010 lw s0,16(sp) -80024f60: 02802821 move a1,s4 -80024f64: 8fb10014 lw s1,20(sp) -80024f68: 8fb40020 lw s4,32(sp) -80024f6c: 02602021 move a0,s3 -80024f70: 8fb3001c lw s3,28(sp) -80024f74: 0800930e j 80024c38 -80024f78: 27bd0030 addiu sp,sp,48 -void LoadMenuInit(void) -{ - int i; - static bool first_load = false; - - if(first_load == false) -80024f7c: 3c028007 lui v0,0x8007 -80024f80: 90431c30 lbu v1,7216(v0) -80024f84: 00000000 nop -80024f88: 1460000a bnez v1,80024fb4 -80024f8c: 3c158007 lui s5,0x8007 -80024f90: 3c058004 lui a1,0x8004 -80024f94: 3c048004 lui a0,0x8004 - { - first_load = true; -80024f98: 24030001 li v1,1 -80024f9c: 24060003 li a2,3 -80024fa0: 24a51464 addiu a1,a1,5220 -80024fa4: 24841470 addiu a0,a0,5232 -80024fa8: 0c00930e jal 80024c38 -80024fac: a0431c30 sb v1,7216(v0) - LoadMenuDest, - sizeof(LoadMenuFiles) / sizeof(char*), - sizeof(LoadMenuDest) / sizeof(void*)); - } - - FontSetSize(&SmallFont, SMALL_FONT_SIZE); -80024fb0: 3c158007 lui s5,0x8007 -80024fb4: 26a48d38 addiu a0,s5,-29384 -80024fb8: 0c008443 jal 8002110c -80024fbc: 24050008 li a1,8 - - LoadMenuPlaneSpr.r = 0; -80024fc0: 3c028004 lui v0,0x8004 - LoadMenuPlaneSpr.g = 0; - LoadMenuPlaneSpr.b = 0; - - LoadMenuPlaneSpr.x = PLANE_START_X; -80024fc4: 24040038 li a0,56 - sizeof(LoadMenuDest) / sizeof(void*)); - } - - FontSetSize(&SmallFont, SMALL_FONT_SIZE); - - LoadMenuPlaneSpr.r = 0; -80024fc8: 24435d2c addiu v1,v0,23852 - LoadMenuPlaneSpr.g = 0; - LoadMenuPlaneSpr.b = 0; - - LoadMenuPlaneSpr.x = PLANE_START_X; -80024fcc: a4445d2c sh a0,23852(v0) - LoadMenuPlaneSpr.y = PLANE_START_Y; -80024fd0: 240200c8 li v0,200 -80024fd4: a4620002 sh v0,2(v1) - - LoadMenuTitleSpr.r = 0; - LoadMenuTitleSpr.g = 0; - LoadMenuTitleSpr.b = 0; - - LoadMenuTitleSpr.x = LOADING_TITLE_X; -80024fd8: 24040080 li a0,128 - sizeof(LoadMenuDest) / sizeof(void*)); - } - - FontSetSize(&SmallFont, SMALL_FONT_SIZE); - - LoadMenuPlaneSpr.r = 0; -80024fdc: a060000e sb zero,14(v1) - LoadMenuPlaneSpr.g = 0; -80024fe0: a060000f sb zero,15(v1) - LoadMenuPlaneSpr.b = 0; -80024fe4: a0600010 sb zero,16(v1) - LoadMenuPlaneSpr.x = PLANE_START_X; - LoadMenuPlaneSpr.y = PLANE_START_Y; - - // "Loading..." title init - - LoadMenuTitleSpr.r = 0; -80024fe8: 3c038004 lui v1,0x8004 -80024fec: 24625d00 addiu v0,v1,23808 - LoadMenuTitleSpr.g = 0; - LoadMenuTitleSpr.b = 0; - - LoadMenuTitleSpr.x = LOADING_TITLE_X; -80024ff0: a4645d00 sh a0,23808(v1) - LoadMenuTitleSpr.y = LOADING_TITLE_Y; -80024ff4: 24030020 li v1,32 -80024ff8: a4430002 sh v1,2(v0) - - LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X; - LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y; -80024ffc: 240401f0 li a0,496 - LoadMenuTitleSpr.b = 0; - - LoadMenuTitleSpr.x = LOADING_TITLE_X; - LoadMenuTitleSpr.y = LOADING_TITLE_Y; - - LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X; -80025000: 24030180 li v1,384 - LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y; -80025004: a444000c sh a0,12(v0) - LoadMenuPlaneSpr.x = PLANE_START_X; - LoadMenuPlaneSpr.y = PLANE_START_Y; - - // "Loading..." title init - - LoadMenuTitleSpr.r = 0; -80025008: a040000e sb zero,14(v0) - LoadMenuTitleSpr.g = 0; -8002500c: a040000f sb zero,15(v0) - LoadMenuTitleSpr.b = 0; -80025010: a0400010 sb zero,16(v0) - - LoadMenuTitleSpr.x = LOADING_TITLE_X; - LoadMenuTitleSpr.y = LOADING_TITLE_Y; - - LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X; -80025014: a443000a sh v1,10(v0) - LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y; - LoadMenuTitleSpr.u = LOADING_TITLE_U; - LoadMenuTitleSpr.v = LOADING_TITLE_V; - - startup_flag = true; -80025018: 24040001 li a0,1 - LoadMenuTitleSpr.x = LOADING_TITLE_X; - LoadMenuTitleSpr.y = LOADING_TITLE_Y; - - LoadMenuTitleSpr.cx = LOADING_TITLE_CLUT_X; - LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y; - LoadMenuTitleSpr.u = LOADING_TITLE_U; -8002501c: a0400004 sb zero,4(v0) - LoadMenuTitleSpr.v = LOADING_TITLE_V; -80025020: a0400005 sb zero,5(v0) - - startup_flag = true; -80025024: 3c028007 lui v0,0x8007 -80025028: a0441c35 sb a0,7221(v0) - isr_started = false; -8002502c: 3c048007 lui a0,0x8007 - end_flag = false; -80025030: 3c028007 lui v0,0x8007 - LoadMenuTitleSpr.cy = LOADING_TITLE_CLUT_Y; - LoadMenuTitleSpr.u = LOADING_TITLE_U; - LoadMenuTitleSpr.v = LOADING_TITLE_V; - - startup_flag = true; - isr_started = false; -80025034: a0801c34 sb zero,7220(a0) - end_flag = false; -80025038: a0401c33 sb zero,7219(v0) - isr_ended = false; -8002503c: 3c028007 lui v0,0x8007 -80025040: a0401c32 sb zero,7218(v0) - - // Background init - - loadMenuBg.x[0] = 0; -80025044: 3c028004 lui v0,0x8004 -80025048: 24425d58 addiu v0,v0,23896 - loadMenuBg.x[1] = X_SCREEN_RESOLUTION; -8002504c: a443000e sh v1,14(v0) - loadMenuBg.x[2] = 0; - loadMenuBg.x[3] = X_SCREEN_RESOLUTION; -80025050: a4430012 sh v1,18(v0) - - loadMenuBg.y[0] = 0; - loadMenuBg.y[1] = 0; - loadMenuBg.y[2] = Y_SCREEN_RESOLUTION; -80025054: 240300f0 li v1,240 -80025058: a4430018 sh v1,24(v0) - loadMenuBg.y[3] = Y_SCREEN_RESOLUTION; -8002505c: a443001a sh v1,26(v0) -80025060: 0080b021 move s6,a0 - end_flag = false; - isr_ended = false; - - // Background init - - loadMenuBg.x[0] = 0; -80025064: a440000c sh zero,12(v0) - loadMenuBg.x[1] = X_SCREEN_RESOLUTION; - loadMenuBg.x[2] = 0; -80025068: a4400010 sh zero,16(v0) - loadMenuBg.x[3] = X_SCREEN_RESOLUTION; - - loadMenuBg.y[0] = 0; -8002506c: a4400014 sh zero,20(v0) - loadMenuBg.y[1] = 0; -80025070: a4400016 sh zero,22(v0) - loadMenuBg.y[2] = Y_SCREEN_RESOLUTION; - loadMenuBg.y[3] = Y_SCREEN_RESOLUTION; - - // Colour components adjustment (default to zero) - for(i = 0; i < 4 ; i++) -80025074: 00001821 move v1,zero -80025078: 24040004 li a0,4 -8002507c: 24630001 addiu v1,v1,1 - { - loadMenuBg.r[i] = 0; -80025080: a0400000 sb zero,0(v0) - loadMenuBg.g[i] = 0; -80025084: a0400004 sb zero,4(v0) - loadMenuBg.b[i] = 0; -80025088: a0400008 sb zero,8(v0) - loadMenuBg.y[1] = 0; - loadMenuBg.y[2] = Y_SCREEN_RESOLUTION; - loadMenuBg.y[3] = Y_SCREEN_RESOLUTION; - - // Colour components adjustment (default to zero) - for(i = 0; i < 4 ; i++) -8002508c: 1464fffb bne v1,a0,8002507c -80025090: 24420001 addiu v0,v0,1 - loadMenuBg.b[i] = 0; - } - - // "Loading" bar line 0 (up left - up right) - - LoadMenuBarLines[0].x[0] = LOADING_BAR_X; -80025094: 3c028004 lui v0,0x8004 -80025098: 24425cc0 addiu v0,v0,23744 - - LoadMenuBarLines[1].x[0] = LOADING_BAR_X; - LoadMenuBarLines[1].x[1] = LOADING_BAR_X; - - LoadMenuBarLines[1].y[0] = LOADING_BAR_Y; - LoadMenuBarLines[1].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; -8002509c: 240300d8 li v1,216 - loadMenuBg.b[i] = 0; - } - - // "Loading" bar line 0 (up left - up right) - - LoadMenuBarLines[0].x[0] = LOADING_BAR_X; -800250a0: 24060040 li a2,64 - LoadMenuBarLines[0].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH; -800250a4: 24050140 li a1,320 - - LoadMenuBarLines[0].y[0] = LOADING_BAR_Y; -800250a8: 240400c8 li a0,200 - - LoadMenuBarLines[1].x[0] = LOADING_BAR_X; - LoadMenuBarLines[1].x[1] = LOADING_BAR_X; - - LoadMenuBarLines[1].y[0] = LOADING_BAR_Y; - LoadMenuBarLines[1].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; -800250ac: a443001a sh v1,26(v0) - // "Loading" bar line 2 (down left - down right) - - LoadMenuBarLines[2].x[0] = LOADING_BAR_X; - LoadMenuBarLines[2].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH; - - LoadMenuBarLines[2].y[0] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; -800250b0: a4430028 sh v1,40(v0) - LoadMenuBarLines[2].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; -800250b4: a443002a sh v1,42(v0) - - LoadMenuBarLines[3].x[0] = LOADING_BAR_X + LOADING_BAR_WIDTH; - LoadMenuBarLines[3].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH; - - LoadMenuBarLines[3].y[0] = LOADING_BAR_Y; - LoadMenuBarLines[3].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; -800250b8: a443003a sh v1,58(v0) -800250bc: 3c038004 lui v1,0x8004 - loadMenuBg.b[i] = 0; - } - - // "Loading" bar line 0 (up left - up right) - - LoadMenuBarLines[0].x[0] = LOADING_BAR_X; -800250c0: a4460004 sh a2,4(v0) - LoadMenuBarLines[0].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH; -800250c4: a4450006 sh a1,6(v0) - - LoadMenuBarLines[0].y[0] = LOADING_BAR_Y; -800250c8: a4440008 sh a0,8(v0) - LoadMenuBarLines[0].y[1] = LOADING_BAR_Y; -800250cc: a444000a sh a0,10(v0) - - // "Loading" bar line 1 (up left - down left) - - LoadMenuBarLines[1].x[0] = LOADING_BAR_X; -800250d0: a4460014 sh a2,20(v0) - LoadMenuBarLines[1].x[1] = LOADING_BAR_X; -800250d4: a4460016 sh a2,22(v0) - - LoadMenuBarLines[1].y[0] = LOADING_BAR_Y; -800250d8: a4440018 sh a0,24(v0) - LoadMenuBarLines[1].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; - - // "Loading" bar line 2 (down left - down right) - - LoadMenuBarLines[2].x[0] = LOADING_BAR_X; -800250dc: a4460024 sh a2,36(v0) - LoadMenuBarLines[2].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH; -800250e0: a4450026 sh a1,38(v0) - LoadMenuBarLines[2].y[0] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; - LoadMenuBarLines[2].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; - - // "Loading" bar line 3 (up right - down right) - - LoadMenuBarLines[3].x[0] = LOADING_BAR_X + LOADING_BAR_WIDTH; -800250e4: a4450034 sh a1,52(v0) - LoadMenuBarLines[3].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH; -800250e8: a4450036 sh a1,54(v0) - - LoadMenuBarLines[3].y[0] = LOADING_BAR_Y; -800250ec: a4440038 sh a0,56(v0) -800250f0: 24635d00 addiu v1,v1,23808 - LoadMenuBarLines[3].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; - - for(i = 0; i < LOADING_BAR_N_LINES ; i++) - { - LoadMenuBarLines[i].r = 0; -800250f4: a0400000 sb zero,0(v0) - LoadMenuBarLines[i].g = 0; -800250f8: a0400001 sb zero,1(v0) - LoadMenuBarLines[i].b = 0; -800250fc: a0400002 sb zero,2(v0) -80025100: 24420010 addiu v0,v0,16 - LoadMenuBarLines[3].x[1] = LOADING_BAR_X + LOADING_BAR_WIDTH; - - LoadMenuBarLines[3].y[0] = LOADING_BAR_Y; - LoadMenuBarLines[3].y[1] = LOADING_BAR_Y + LOADING_BAR_HEIGHT; - - for(i = 0; i < LOADING_BAR_N_LINES ; i++) -80025104: 1443fffb bne v0,v1,800250f4 -80025108: 24040040 li a0,64 - LoadMenuBarLines[i].r = 0; - LoadMenuBarLines[i].g = 0; - LoadMenuBarLines[i].b = 0; - } - - LoadMenuBarRect.r = 0; -8002510c: 3c038004 lui v1,0x8004 -80025110: 24625cb0 addiu v0,v1,23728 - LoadMenuBarRect.g = 0; - LoadMenuBarRect.b = 0; - - // LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - LoadMenuBarRect.x = LOADING_BAR_X; -80025114: a4645cb0 sh a0,23728(v1) - LoadMenuBarRect.y = LOADING_BAR_Y; -80025118: 240300c8 li v1,200 -8002511c: a4430002 sh v1,2(v0) - LoadMenuBarRect.w = 0; - LoadMenuBarRect.h = LOADING_BAR_HEIGHT; -80025120: 24030010 li v1,16 -80025124: a4430006 sh v1,6(v0) - - LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80025128: 8c43000c lw v1,12(v0) - LoadMenuBarLines[i].r = 0; - LoadMenuBarLines[i].g = 0; - LoadMenuBarLines[i].b = 0; - } - - LoadMenuBarRect.r = 0; -8002512c: a0400008 sb zero,8(v0) - LoadMenuBarRect.x = LOADING_BAR_X; - LoadMenuBarRect.y = LOADING_BAR_Y; - LoadMenuBarRect.w = 0; - LoadMenuBarRect.h = LOADING_BAR_HEIGHT; - - LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80025130: 34630010 ori v1,v1,0x10 -80025134: ac43000c sw v1,12(v0) - LoadMenuBarLines[i].g = 0; - LoadMenuBarLines[i].b = 0; - } - - LoadMenuBarRect.r = 0; - LoadMenuBarRect.g = 0; -80025138: a0400009 sb zero,9(v0) - LoadMenuBarRect.b = 0; -8002513c: a040000a sb zero,10(v0) - - // LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - LoadMenuBarRect.x = LOADING_BAR_X; - LoadMenuBarRect.y = LOADING_BAR_Y; - LoadMenuBarRect.w = 0; -80025140: a4400004 sh zero,4(v0) - LoadMenuBarRect.h = LOADING_BAR_HEIGHT; - - LoadMenuBarRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - load_menu_running = true; -80025144: 24020001 li v0,1 -80025148: a2021c31 sb v0,7217(s0) - - small_font_lum = 0; -8002514c: 3c028007 lui v0,0x8007 -80025150: a0401c3c sb zero,7228(v0) - - SmallFont.spr.r = 0; - SmallFont.spr.g = 0; - SmallFont.spr.b = 0; - - GfxSetGlobalLuminance(0); -80025154: 00002021 move a0,zero - - load_menu_running = true; - - small_font_lum = 0; - - SmallFont.spr.r = 0; -80025158: 26a28d38 addiu v0,s5,-29384 -8002515c: a040000e sb zero,14(v0) - SmallFont.spr.g = 0; -80025160: a040000f sb zero,15(v0) - SmallFont.spr.b = 0; - - GfxSetGlobalLuminance(0); -80025164: 0c00900b jal 8002402c -80025168: a0400010 sb zero,16(v0) - - SetVBlankHandler(&ISR_LoadMenuVBlank); -8002516c: 3c048002 lui a0,0x8002 -80025170: 0c00d35e jal 80034d78 -80025174: 248447cc addiu a0,a0,18380 - return isr_ended; -} - -bool LoadMenuISRHasStarted(void) -{ - return isr_started; -80025178: 92c21c34 lbu v0,7220(s6) -8002517c: 00000000 nop -80025180: 304200ff andi v0,v0,0xff - - if(load_menu_running == false) - { - LoadMenuInit(); - - while(LoadMenuISRHasStarted() == false); -80025184: 1040fffc beqz v0,80025178 -80025188: 00000000 nop -8002518c: 1000ff6d b 80024f44 -80025190: 00000000 nop - } - - LoadMenuLoadFileList(fileList,dest,szFileList,szDestList); - -} -80025194: 8fbf002c lw ra,44(sp) -80025198: 8fb60028 lw s6,40(sp) -8002519c: 8fb50024 lw s5,36(sp) -800251a0: 8fb40020 lw s4,32(sp) -800251a4: 8fb3001c lw s3,28(sp) -800251a8: 8fb00010 lw s0,16(sp) - short x_increment; - uint8_t fileLoadedCount; - - if(szFileList != szDestList) - { - dprintf("File list size different from dest list size! %d vs %d\n", -800251ac: 02403021 move a2,s2 -800251b0: 02202821 move a1,s1 - while(LoadMenuISRHasStarted() == false); - } - - LoadMenuLoadFileList(fileList,dest,szFileList,szDestList); - -} -800251b4: 8fb20018 lw s2,24(sp) -800251b8: 8fb10014 lw s1,20(sp) - short x_increment; - uint8_t fileLoadedCount; - - if(szFileList != szDestList) - { - dprintf("File list size different from dest list size! %d vs %d\n", -800251bc: 3c048004 lui a0,0x8004 -800251c0: 24840938 addiu a0,a0,2360 -800251c4: 0800ed8f j 8003b63c -800251c8: 27bd0030 addiu sp,sp,48 - -800251cc
: -/* ************************************* - * Local Prototypes - * *************************************/ - -int main(void) -{ -800251cc: 27bdffe8 addiu sp,sp,-24 -800251d0: afbf0014 sw ra,20(sp) - - //System initialization - SystemInit(); -800251d4: 0c00a0a8 jal 800282a0 -800251d8: 00000000 nop - - MainMenu(); -800251dc: 0c009900 jal 80026400 -800251e0: 00000000 nop - - return 0; - -} -800251e4: 8fbf0014 lw ra,20(sp) -800251e8: 00001021 move v0,zero -800251ec: 03e00008 jr ra -800251f0: 27bd0018 addiu sp,sp,24 - -800251f4 : - - return true; -} - -bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector) -{ -800251f4: 27bdffe0 addiu sp,sp,-32 - uint8_t result; - - MemCardErrors.Block = ptrBlockData->Block; -800251f8: 8c860004 lw a2,4(a0) - - return true; -} - -bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector) -{ -800251fc: afb10014 sw s1,20(sp) -80025200: afb00010 sw s0,16(sp) - uint8_t result; - - MemCardErrors.Block = ptrBlockData->Block; -80025204: 3c118004 lui s1,0x8004 - - return true; -} - -bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector) -{ -80025208: 00808021 move s0,a0 - uint8_t result; - - MemCardErrors.Block = ptrBlockData->Block; - MemCardErrors.Slot = ptrBlockData->Slot; -8002520c: 8c840000 lw a0,0(a0) - -bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector) -{ - uint8_t result; - - MemCardErrors.Block = ptrBlockData->Block; -80025210: 26225e14 addiu v0,s1,24084 - - return true; -} - -bool MemCardReadSector(TYPE_BLOCK_DATA * ptrBlockData, int sector) -{ -80025214: afbf001c sw ra,28(sp) -80025218: afb20018 sw s2,24(sp) - uint8_t result; - - MemCardErrors.Block = ptrBlockData->Block; -8002521c: ac460008 sw a2,8(v0) - MemCardErrors.Slot = ptrBlockData->Slot; -80025220: ac440004 sw a0,4(v0) - - if( (ptrBlockData->Slot != 0) -80025224: 2c820002 sltiu v0,a0,2 -80025228: 14400008 bnez v0,8002524c -8002522c: 24020053 li v0,83 - && - (ptrBlockData->Slot != 1) ) - { - MemCardErrors.ErrorByte = 'S'; - - dprintf("Incorrect slot %d! Block %d?\n", -80025230: 00802821 move a1,a0 -80025234: 3c048004 lui a0,0x8004 -80025238: 248409d4 addiu a0,a0,2516 -8002523c: 0c00ed8f jal 8003b63c -80025240: a2225e14 sb v0,24084(s1) - return false; - - case MEMCARD_BAD_SECTOR: - dprintf("Invalid memory card sector %d. Only values between" - " 0 and 511 are allowed!\n", sector); - return false; -80025244: 1000001f b 800252c4 -80025248: 00001021 move v0,zero - ptrBlockData->Block); - - return false; - } - - if((sector < 0) || (sector > MEMCARD_MAXIMUM_SECTOR)) -8002524c: 2ca20200 sltiu v0,a1,512 -80025250: 14400004 bnez v0,80025264 -80025254: 00a09021 move s2,a1 - { - MemCardErrors.ErrorByte = 'T'; -80025258: 24020054 li v0,84 -8002525c: 10000015 b 800252b4 -80025260: a2225e14 sb v0,24084(s1) - dprintf("Invalid memory card sector %d. Only values between" - " 0 and 511 are allowed!\n", sector); - return false; - } - - result = McReadSector(ptrBlockData->Slot, sector, DataBuffer); -80025264: 3c068004 lui a2,0x8004 -80025268: 0c00ca8f jal 80032a3c -8002526c: 24c65e20 addiu a2,a2,24096 - - // Fill char "MemCardErrors" for further error description. - MemCardErrors.ErrorByte = result; - - switch(result) -80025270: 2403004e li v1,78 -80025274: 10430006 beq v0,v1,80025290 -80025278: a2225e14 sb v0,24084(s1) -8002527c: 240300ff li v1,255 -80025280: 1043000b beq v0,v1,800252b0 -80025284: 38420047 xori v0,v0,0x47 - { - case '1': - case '2': - case 'L': - case 'M': - return false; -80025288: 1000000e b 800252c4 -8002528c: 2c420001 sltiu v0,v0,1 - - case MEMCARD_INVALID_CHECKSUM: - dprintf("Invalid checksum for memory card sector %d" -80025290: 8e070000 lw a3,0(s0) -80025294: 8e060004 lw a2,4(s0) -80025298: 3c048004 lui a0,0x8004 -8002529c: 02402821 move a1,s2 -800252a0: 0c00ed8f jal 8003b63c -800252a4: 24840a40 addiu a0,a0,2624 - return false; - - case MEMCARD_BAD_SECTOR: - dprintf("Invalid memory card sector %d. Only values between" - " 0 and 511 are allowed!\n", sector); - return false; -800252a8: 10000006 b 800252c4 -800252ac: 00001021 move v0,zero - ptrBlockData->Block, - ptrBlockData->Slot ); - return false; - - case MEMCARD_BAD_SECTOR: - dprintf("Invalid memory card sector %d. Only values between" -800252b0: 02402821 move a1,s2 -800252b4: 3c048004 lui a0,0x8004 -800252b8: 0c00ed8f jal 8003b63c -800252bc: 248409f4 addiu a0,a0,2548 - " 0 and 511 are allowed!\n", sector); - return false; -800252c0: 00001021 move v0,zero - default: - return false; - } - - return true; -} -800252c4: 8fbf001c lw ra,28(sp) -800252c8: 8fb20018 lw s2,24(sp) -800252cc: 8fb10014 lw s1,20(sp) -800252d0: 8fb00010 lw s0,16(sp) -800252d4: 03e00008 jr ra -800252d8: 27bd0020 addiu sp,sp,32 - -800252dc : -void ISR_MemCardDataHandling(void) -{ - - uint8_t i; - - ISR_TimesAccessed++; -800252dc: 3c038007 lui v1,0x8007 -800252e0: 8c621c50 lw v0,7248(v1) - - bzero((TYPE_MEMCARD_ERRORS*)&MemCardErrors, sizeof(TYPE_MEMCARD_ERRORS) ); -} - -void ISR_MemCardDataHandling(void) -{ -800252e4: 27bdffe0 addiu sp,sp,-32 - - uint8_t i; - - ISR_TimesAccessed++; -800252e8: 24420001 addiu v0,v0,1 -800252ec: ac621c50 sw v0,7248(v1) - - bzero((TYPE_MEMCARD_ERRORS*)&MemCardErrors, sizeof(TYPE_MEMCARD_ERRORS) ); -} - -void ISR_MemCardDataHandling(void) -{ -800252f0: afbf001c sw ra,28(sp) -800252f4: afb20018 sw s2,24(sp) -800252f8: afb10014 sw s1,20(sp) - - uint8_t i; - - ISR_TimesAccessed++; - - if( (GfxIsGPUBusy() == true) || (SystemIsBusy() == true) ) -800252fc: 0c00901d jal 80024074 -80025300: afb00010 sw s0,16(sp) -80025304: 1440007d bnez v0,800254fc -80025308: 00000000 nop -8002530c: 0c00a057 jal 8002815c -80025310: 00000000 nop -80025314: 14400079 bnez v0,800254fc -80025318: 3c048004 lui a0,0x8004 - { - return; - } - - SecondDisplay.r = NORMAL_LUMINANCE; -8002531c: 2405ff80 li a1,-128 -80025320: 24825de8 addiu v0,a0,24040 - SecondDisplay.g = NORMAL_LUMINANCE; - SecondDisplay.b = NORMAL_LUMINANCE; - - MemCardRect.x[0] = MEMCARD_BG_X; -80025324: 3c038004 lui v1,0x8004 - if( (GfxIsGPUBusy() == true) || (SystemIsBusy() == true) ) - { - return; - } - - SecondDisplay.r = NORMAL_LUMINANCE; -80025328: a045000e sb a1,14(v0) - SecondDisplay.g = NORMAL_LUMINANCE; -8002532c: a045000f sb a1,15(v0) - SecondDisplay.b = NORMAL_LUMINANCE; -80025330: a0450010 sb a1,16(v0) - - MemCardRect.x[0] = MEMCARD_BG_X; -80025334: 24625dc8 addiu v0,v1,24008 - MemCardRect.r[2] = MEMCARD_BG_R2; - MemCardRect.r[3] = MEMCARD_BG_R3; - - MemCardRect.g[0] = MEMCARD_BG_G0; - MemCardRect.g[1] = MEMCARD_BG_G1; - MemCardRect.g[2] = MEMCARD_BG_G2; -80025338: a0450006 sb a1,6(v0) - MemCardRect.g[3] = MEMCARD_BG_G3; -8002533c: a0450007 sb a1,7(v0) - MemCardRect.b[0] = MEMCARD_BG_B0; - MemCardRect.b[1] = MEMCARD_BG_B1; - MemCardRect.b[2] = MEMCARD_BG_B2; - MemCardRect.b[3] = MEMCARD_BG_B3; - - MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80025340: 8c45001c lw a1,28(v0) - SecondDisplay.r = NORMAL_LUMINANCE; - SecondDisplay.g = NORMAL_LUMINANCE; - SecondDisplay.b = NORMAL_LUMINANCE; - - MemCardRect.x[0] = MEMCARD_BG_X; - MemCardRect.x[1] = MEMCARD_BG_X + MEMCARD_BG_W; -80025344: 24070140 li a3,320 -80025348: a447000e sh a3,14(v0) - MemCardRect.x[2] = MEMCARD_BG_X; - MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W; -8002534c: a4470012 sh a3,18(v0) - MemCardRect.b[0] = MEMCARD_BG_B0; - MemCardRect.b[1] = MEMCARD_BG_B1; - MemCardRect.b[2] = MEMCARD_BG_B2; - MemCardRect.b[3] = MEMCARD_BG_B3; - - MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80025350: 34a50010 ori a1,a1,0x10 - MemCardRect.x[0] = MEMCARD_BG_X; - MemCardRect.x[1] = MEMCARD_BG_X + MEMCARD_BG_W; - MemCardRect.x[2] = MEMCARD_BG_X; - MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W; - - MemCardRect.y[0] = MEMCARD_BG_Y; -80025354: 2407001c li a3,28 - - SecondDisplay.r = NORMAL_LUMINANCE; - SecondDisplay.g = NORMAL_LUMINANCE; - SecondDisplay.b = NORMAL_LUMINANCE; - - MemCardRect.x[0] = MEMCARD_BG_X; -80025358: 24060040 li a2,64 - MemCardRect.x[1] = MEMCARD_BG_X + MEMCARD_BG_W; - MemCardRect.x[2] = MEMCARD_BG_X; - MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W; - - MemCardRect.y[0] = MEMCARD_BG_Y; -8002535c: a4470014 sh a3,20(v0) - MemCardRect.y[1] = MEMCARD_BG_Y; -80025360: a4470016 sh a3,22(v0) - MemCardRect.b[0] = MEMCARD_BG_B0; - MemCardRect.b[1] = MEMCARD_BG_B1; - MemCardRect.b[2] = MEMCARD_BG_B2; - MemCardRect.b[3] = MEMCARD_BG_B3; - - MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); -80025364: ac45001c sw a1,28(v0) - MemCardRect.x[2] = MEMCARD_BG_X; - MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W; - - MemCardRect.y[0] = MEMCARD_BG_Y; - MemCardRect.y[1] = MEMCARD_BG_Y; - MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H; -80025368: 240700d4 li a3,212 - - MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - // "Loading" bar line 0 (up left - up right) - - MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X; -8002536c: 3c058004 lui a1,0x8004 - MemCardRect.x[2] = MEMCARD_BG_X; - MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W; - - MemCardRect.y[0] = MEMCARD_BG_Y; - MemCardRect.y[1] = MEMCARD_BG_Y; - MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H; -80025370: a4470018 sh a3,24(v0) - MemCardRect.g[2] = MEMCARD_BG_G2; - MemCardRect.g[3] = MEMCARD_BG_G3; - - MemCardRect.b[0] = MEMCARD_BG_B0; - MemCardRect.b[1] = MEMCARD_BG_B1; - MemCardRect.b[2] = MEMCARD_BG_B2; -80025374: a046000a sb a2,10(v0) - MemCardRect.b[3] = MEMCARD_BG_B3; -80025378: a046000b sb a2,11(v0) - - MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - // "Loading" bar line 0 (up left - up right) - - MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X; -8002537c: 24090056 li t1,86 - MemCardProgressBarLines[0].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; -80025380: 24080138 li t0,312 - - SecondDisplay.r = NORMAL_LUMINANCE; - SecondDisplay.g = NORMAL_LUMINANCE; - SecondDisplay.b = NORMAL_LUMINANCE; - - MemCardRect.x[0] = MEMCARD_BG_X; -80025384: a446000c sh a2,12(v0) - MemCardRect.x[1] = MEMCARD_BG_X + MEMCARD_BG_W; - MemCardRect.x[2] = MEMCARD_BG_X; -80025388: a4460010 sh a2,16(v0) - MemCardRect.x[3] = MEMCARD_BG_X + MEMCARD_BG_W; - - MemCardRect.y[0] = MEMCARD_BG_Y; - MemCardRect.y[1] = MEMCARD_BG_Y; - MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H; - MemCardRect.y[3] = MEMCARD_BG_Y + MEMCARD_BG_H; -8002538c: a447001a sh a3,26(v0) - - MemCardProgressBarLines[1].x[0] = MEMCARD_PROGRESS_BAR_X; - MemCardProgressBarLines[1].x[1] = MEMCARD_PROGRESS_BAR_X; - - MemCardProgressBarLines[1].y[0] = MEMCARD_PROGRESS_BAR_Y; - MemCardProgressBarLines[1].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; -80025390: 240600a4 li a2,164 - // "Loading" bar line 0 (up left - up right) - - MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X; - MemCardProgressBarLines[0].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; - - MemCardProgressBarLines[0].y[0] = MEMCARD_PROGRESS_BAR_Y; -80025394: 24070094 li a3,148 - MemCardRect.r[0] = MEMCARD_BG_R0; - MemCardRect.r[1] = MEMCARD_BG_R1; - MemCardRect.r[2] = MEMCARD_BG_R2; - MemCardRect.r[3] = MEMCARD_BG_R3; - - MemCardRect.g[0] = MEMCARD_BG_G0; -80025398: a0400004 sb zero,4(v0) - MemCardRect.g[1] = MEMCARD_BG_G1; -8002539c: a0400005 sb zero,5(v0) - MemCardRect.g[2] = MEMCARD_BG_G2; - MemCardRect.g[3] = MEMCARD_BG_G3; - - MemCardRect.b[0] = MEMCARD_BG_B0; -800253a0: a0400008 sb zero,8(v0) - MemCardRect.b[1] = MEMCARD_BG_B1; -800253a4: a0400009 sb zero,9(v0) - MemCardRect.y[1] = MEMCARD_BG_Y; - MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H; - MemCardRect.y[3] = MEMCARD_BG_Y + MEMCARD_BG_H; - - MemCardRect.r[0] = MEMCARD_BG_R0; - MemCardRect.r[1] = MEMCARD_BG_R1; -800253a8: a0400001 sb zero,1(v0) - MemCardRect.r[2] = MEMCARD_BG_R2; -800253ac: a0400002 sb zero,2(v0) - MemCardRect.r[3] = MEMCARD_BG_R3; -800253b0: a0400003 sb zero,3(v0) - - MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - // "Loading" bar line 0 (up left - up right) - - MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X; -800253b4: 24a25d78 addiu v0,a1,23928 - MemCardRect.y[0] = MEMCARD_BG_Y; - MemCardRect.y[1] = MEMCARD_BG_Y; - MemCardRect.y[2] = MEMCARD_BG_Y + MEMCARD_BG_H; - MemCardRect.y[3] = MEMCARD_BG_Y + MEMCARD_BG_H; - - MemCardRect.r[0] = MEMCARD_BG_R0; -800253b8: a0605dc8 sb zero,24008(v1) - - MemCardRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); - - // "Loading" bar line 0 (up left - up right) - - MemCardProgressBarLines[0].x[0] = MEMCARD_PROGRESS_BAR_X; -800253bc: a4490004 sh t1,4(v0) - MemCardProgressBarLines[0].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; -800253c0: a4480006 sh t0,6(v0) - - MemCardProgressBarLines[0].y[0] = MEMCARD_PROGRESS_BAR_Y; -800253c4: a4470008 sh a3,8(v0) - MemCardProgressBarLines[0].y[1] = MEMCARD_PROGRESS_BAR_Y; -800253c8: a447000a sh a3,10(v0) - - // "Loading" bar line 1 (up left - down left) - - MemCardProgressBarLines[1].x[0] = MEMCARD_PROGRESS_BAR_X; -800253cc: a4490014 sh t1,20(v0) - MemCardProgressBarLines[1].x[1] = MEMCARD_PROGRESS_BAR_X; -800253d0: a4490016 sh t1,22(v0) - - MemCardProgressBarLines[1].y[0] = MEMCARD_PROGRESS_BAR_Y; -800253d4: a4470018 sh a3,24(v0) - MemCardProgressBarLines[1].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; -800253d8: a446001a sh a2,26(v0) - // "Loading" bar line 2 (down left - down right) - - MemCardProgressBarLines[2].x[0] = MEMCARD_PROGRESS_BAR_X; - MemCardProgressBarLines[2].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; - - MemCardProgressBarLines[2].y[0] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; -800253dc: a4460028 sh a2,40(v0) - MemCardProgressBarLines[2].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; -800253e0: a446002a sh a2,42(v0) - - MemCardProgressBarLines[3].x[0] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; - MemCardProgressBarLines[3].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; - - MemCardProgressBarLines[3].y[0] = MEMCARD_PROGRESS_BAR_Y; - MemCardProgressBarLines[3].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; -800253e4: a446003a sh a2,58(v0) -800253e8: 3c068004 lui a2,0x8004 -800253ec: 00a09021 move s2,a1 - MemCardProgressBarLines[1].y[0] = MEMCARD_PROGRESS_BAR_Y; - MemCardProgressBarLines[1].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; - - // "Loading" bar line 2 (down left - down right) - - MemCardProgressBarLines[2].x[0] = MEMCARD_PROGRESS_BAR_X; -800253f0: a4490024 sh t1,36(v0) - MemCardProgressBarLines[2].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; -800253f4: a4480026 sh t0,38(v0) - MemCardProgressBarLines[2].y[0] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; - MemCardProgressBarLines[2].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; - - // "Loading" bar line 3 (up right - down right) - - MemCardProgressBarLines[3].x[0] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; -800253f8: a4480034 sh t0,52(v0) - MemCardProgressBarLines[3].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; -800253fc: a4480036 sh t0,54(v0) - - MemCardProgressBarLines[3].y[0] = MEMCARD_PROGRESS_BAR_Y; -80025400: a4470038 sh a3,56(v0) -80025404: 24c65db8 addiu a2,a2,23992 -80025408: 00608821 move s1,v1 - MemCardProgressBarLines[3].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; - - for(i = 0; i < MEMCARD_PROGRESS_BAR_N_LINES; i++) - { - MemCardProgressBarLines[i].r = NORMAL_LUMINANCE; -8002540c: 2405ff80 li a1,-128 -80025410: a0450000 sb a1,0(v0) - MemCardProgressBarLines[i].g = NORMAL_LUMINANCE; -80025414: a0450001 sb a1,1(v0) - MemCardProgressBarLines[i].b = NORMAL_LUMINANCE; -80025418: a0450002 sb a1,2(v0) -8002541c: 24420010 addiu v0,v0,16 - MemCardProgressBarLines[3].x[1] = MEMCARD_PROGRESS_BAR_X + MEMCARD_PROGRESS_BAR_W; - - MemCardProgressBarLines[3].y[0] = MEMCARD_PROGRESS_BAR_Y; - MemCardProgressBarLines[3].y[1] = MEMCARD_PROGRESS_BAR_Y + MEMCARD_PROGRESS_BAR_H; - - for(i = 0; i < MEMCARD_PROGRESS_BAR_N_LINES; i++) -80025420: 1446fffb bne v0,a2,80025410 -80025424: 2403ff80 li v1,-128 - MemCardProgressBarLines[i].b = NORMAL_LUMINANCE; - } - - // Set progress bar attributes - - MemCardProgressBar.x = MEMCARD_PROGRESS_BAR_X; -80025428: 3c108004 lui s0,0x8004 -8002542c: 24020056 li v0,86 -80025430: a6025db8 sh v0,23992(s0) - MemCardProgressBar.y = MEMCARD_PROGRESS_BAR_Y; -80025434: 26105db8 addiu s0,s0,23992 -80025438: 24020094 li v0,148 -8002543c: a6020002 sh v0,2(s0) - - MemCardProgressBar.w = ProgressBarXOffset; -80025440: 3c028007 lui v0,0x8007 -80025444: 94421c48 lhu v0,7240(v0) - - MemCardProgressBar.r = MEMCARD_PROGRESS_BAR_R; - MemCardProgressBar.g = MEMCARD_PROGRESS_BAR_G; - MemCardProgressBar.b = MEMCARD_PROGRESS_BAR_B; - - GfxSortSprite(&SecondDisplay); -80025448: 24845de8 addiu a0,a0,24040 - // Set progress bar attributes - - MemCardProgressBar.x = MEMCARD_PROGRESS_BAR_X; - MemCardProgressBar.y = MEMCARD_PROGRESS_BAR_Y; - - MemCardProgressBar.w = ProgressBarXOffset; -8002544c: a6020004 sh v0,4(s0) - MemCardProgressBar.h = MEMCARD_PROGRESS_BAR_H; -80025450: 24020010 li v0,16 -80025454: a6020006 sh v0,6(s0) - - MemCardProgressBar.r = MEMCARD_PROGRESS_BAR_R; -80025458: a2030008 sb v1,8(s0) - MemCardProgressBar.g = MEMCARD_PROGRESS_BAR_G; -8002545c: a2030009 sb v1,9(s0) - MemCardProgressBar.b = MEMCARD_PROGRESS_BAR_B; - - GfxSortSprite(&SecondDisplay); -80025460: 0c0090d2 jal 80024348 -80025464: a203000a sb v1,10(s0) - GsSortGPoly4(&MemCardRect); -80025468: 0c00b0e6 jal 8002c398 -8002546c: 26245dc8 addiu a0,s1,24008 - GsSortRectangle(&MemCardProgressBar); -80025470: 0c00b762 jal 8002dd88 -80025474: 02002021 move a0,s0 - - for(i = 0; i < MEMCARD_PROGRESS_BAR_N_LINES; i++) - { - GsSortLine(&MemCardProgressBarLines[i]); -80025478: 0c00b18e jal 8002c638 -8002547c: 26445d78 addiu a0,s2,23928 -80025480: 3c048004 lui a0,0x8004 -80025484: 0c00b18e jal 8002c638 -80025488: 24845d88 addiu a0,a0,23944 -8002548c: 3c048004 lui a0,0x8004 -80025490: 0c00b18e jal 8002c638 -80025494: 24845d98 addiu a0,a0,23960 -80025498: 3c048004 lui a0,0x8004 -8002549c: 0c00b18e jal 8002c638 -800254a0: 24845da8 addiu a0,a0,23976 - } - - GfxSetGlobalLuminance(0); - - FontSetFlags(&SmallFont, FONT_BLEND_EFFECT); -800254a4: 3c108007 lui s0,0x8007 - for(i = 0; i < MEMCARD_PROGRESS_BAR_N_LINES; i++) - { - GsSortLine(&MemCardProgressBarLines[i]); - } - - GfxSetGlobalLuminance(0); -800254a8: 0c00900b jal 8002402c -800254ac: 00002021 move a0,zero - - FontSetFlags(&SmallFont, FONT_BLEND_EFFECT); -800254b0: 24050004 li a1,4 -800254b4: 0c008441 jal 80021104 -800254b8: 26048d38 addiu a0,s0,-29384 - - FontPrintText(&SmallFont, MEMCARD_LOAD_DATA_TEXT_X, MEMCARD_LOAD_DATA_TEXT_Y, "Loading memory card data..."); -800254bc: 3c078004 lui a3,0x8004 -800254c0: 24e70a84 addiu a3,a3,2692 -800254c4: 240600c0 li a2,192 -800254c8: 24050060 li a1,96 -800254cc: 0c008451 jal 80021144 -800254d0: 26048d38 addiu a0,s0,-29384 - - FontSetFlags(&SmallFont, FONT_NOFLAGS); -800254d4: 00002821 move a1,zero -800254d8: 0c008441 jal 80021104 -800254dc: 26048d38 addiu a0,s0,-29384 - - GfxDrawScene_Fast(); -800254e0: 0c008fc1 jal 80023f04 -800254e4: 00000000 nop - - ISR_TimesExecuted++; -800254e8: 3c038007 lui v1,0x8007 -800254ec: 8c621c4c lw v0,7244(v1) -800254f0: 00000000 nop -800254f4: 24420001 addiu v0,v0,1 -800254f8: ac621c4c sw v0,7244(v1) -} -800254fc: 8fbf001c lw ra,28(sp) -80025500: 8fb20018 lw s2,24(sp) -80025504: 8fb10014 lw s1,20(sp) -80025508: 8fb00010 lw s0,16(sp) -8002550c: 03e00008 jr ra -80025510: 27bd0020 addiu sp,sp,32 - -80025514 : - * *************************************/ - -TYPE_BLOCK_DATA MemCardData[MEMCARD_BLOCKS_PER_CARD][MEMCARD_NUMBER_OF_SLOTS]; - -void MemCardInit(void) -{ -80025514: 3c028007 lui v0,0x8007 -80025518: 24428fcc addiu v0,v0,-28724 -8002551c: 3c048007 lui a0,0x8007 -80025520: 2484d16c addiu a0,a0,-11924 -80025524: 00401821 move v1,v0 - { - for(i = BLOCK_1; i <= BLOCK_15; i++) - { - ptrBlockData = &MemCardData[i - BLOCK_1][j]; - - ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE; -80025528: 2405ff80 li a1,-128 -8002552c: a0650218 sb a1,536(v1) - ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE; -80025530: a0650219 sb a1,537(v1) - ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE; -80025534: a065021a sb a1,538(v1) -80025538: 24630460 addiu v1,v1,1120 - uint8_t i; - uint8_t j; - - for(j = SLOT_ONE; j <= SLOT_TWO; j++) - { - for(i = BLOCK_1; i <= BLOCK_15; i++) -8002553c: 1483fffb bne a0,v1,8002552c -80025540: 00000000 nop - { - ptrBlockData = &MemCardData[i - BLOCK_1][j]; - - ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE; -80025544: 2403ff80 li v1,-128 -80025548: a0430448 sb v1,1096(v0) - ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE; -8002554c: a0430449 sb v1,1097(v0) - ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE; -80025550: a043044a sb v1,1098(v0) -80025554: 24420460 addiu v0,v0,1120 - uint8_t i; - uint8_t j; - - for(j = SLOT_ONE; j <= SLOT_TWO; j++) - { - for(i = BLOCK_1; i <= BLOCK_15; i++) -80025558: 1482fffb bne a0,v0,80025548 -8002555c: 2406000c li a2,12 - ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE; - ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE; - } - } - - ISR_TimesAccessed = 0; -80025560: 3c028007 lui v0,0x8007 - ISR_TimesExecuted = 0; - - bzero((TYPE_MEMCARD_ERRORS*)&MemCardErrors, sizeof(TYPE_MEMCARD_ERRORS) ); -80025564: 3c048004 lui a0,0x8004 - ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE; - ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE; - } - } - - ISR_TimesAccessed = 0; -80025568: ac401c50 sw zero,7248(v0) - ISR_TimesExecuted = 0; -8002556c: 3c028007 lui v0,0x8007 - - bzero((TYPE_MEMCARD_ERRORS*)&MemCardErrors, sizeof(TYPE_MEMCARD_ERRORS) ); -80025570: 00002821 move a1,zero -80025574: 24845e14 addiu a0,a0,24084 -80025578: 0800d7ab j 80035eac -8002557c: ac401c4c sw zero,7244(v0) - -80025580 : - - ISR_TimesExecuted++; -} - -void MemCardResetBlockData(TYPE_BLOCK_DATA * ptrBlockData) -{ -80025580: 27bdffe8 addiu sp,sp,-24 - bzero((TYPE_BLOCK_DATA*)ptrBlockData, sizeof(TYPE_BLOCK_DATA)); -80025584: 24060230 li a2,560 -80025588: 00002821 move a1,zero - - ISR_TimesExecuted++; -} - -void MemCardResetBlockData(TYPE_BLOCK_DATA * ptrBlockData) -{ -8002558c: afbf0014 sw ra,20(sp) -80025590: afb00010 sw s0,16(sp) - bzero((TYPE_BLOCK_DATA*)ptrBlockData, sizeof(TYPE_BLOCK_DATA)); -80025594: 0c00d7ab jal 80035eac -80025598: 00808021 move s0,a0 - - ptrBlockData->BlockCount = FIRST_OR_ONLY_BLOCK; -8002559c: 24020001 li v0,1 - - IconIndex = 0; -} -800255a0: 8fbf0014 lw ra,20(sp) - -void MemCardResetBlockData(TYPE_BLOCK_DATA * ptrBlockData) -{ - bzero((TYPE_BLOCK_DATA*)ptrBlockData, sizeof(TYPE_BLOCK_DATA)); - - ptrBlockData->BlockCount = FIRST_OR_ONLY_BLOCK; -800255a4: ae020020 sw v0,32(s0) - - IconIndex = 0; -800255a8: 3c028007 lui v0,0x8007 -} -800255ac: 8fb00010 lw s0,16(sp) -{ - bzero((TYPE_BLOCK_DATA*)ptrBlockData, sizeof(TYPE_BLOCK_DATA)); - - ptrBlockData->BlockCount = FIRST_OR_ONLY_BLOCK; - - IconIndex = 0; -800255b0: a0401c54 sb zero,7252(v0) -} -800255b4: 03e00008 jr ra -800255b8: 27bd0018 addiu sp,sp,24 - -800255bc : - - return false; -} - -bool MemCardUploadToGPU(TYPE_BLOCK_DATA * ptrBlockData) -{ -800255bc: 27bdff98 addiu sp,sp,-104 -800255c0: afbf0064 sw ra,100(sp) -800255c4: afb60060 sw s6,96(sp) -800255c8: afb5005c sw s5,92(sp) -800255cc: afb40058 sw s4,88(sp) -800255d0: afb30054 sw s3,84(sp) -800255d4: afb20050 sw s2,80(sp) -800255d8: afb1004c sw s1,76(sp) -800255dc: afb00048 sw s0,72(sp) - short x_clut_offset; - short y_clut_offset; - short x_block_offset; - GsImage gs; - - if( (ptrBlockData->IconNumber < 1) -800255e0: 90820008 lbu v0,8(a0) -800255e4: 00000000 nop -800255e8: 2442ffff addiu v0,v0,-1 -800255ec: 304200ff andi v0,v0,0xff -800255f0: 2c420003 sltiu v0,v0,3 -800255f4: 10400008 beqz v0,80025618 -800255f8: 3c128004 lui s2,0x8004 - if(i == 0) - { - ptrBlockData->IconTPoly.attribute = COLORMODE(COLORMODE_4BPP); - ptrBlockData->IconTPoly.tpage = (gs.x / 64) + ((gs.y/256)*16); - - dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage); -800255fc: 3c138004 lui s3,0x8004 -80025600: 00808021 move s0,a0 -80025604: 0000a821 move s5,zero - gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset; - gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4); - gs.clut_w = MEMCARD_BLOCK_CLUT_W; - gs.clut_h = MEMCARD_BLOCK_CLUT_H; - - dprintf("Gs Clut = {%d,%d,%d,%d}\n", -80025608: 26520abc addiu s2,s2,2748 - if(i == 0) - { - ptrBlockData->IconTPoly.attribute = COLORMODE(COLORMODE_4BPP); - ptrBlockData->IconTPoly.tpage = (gs.x / 64) + ((gs.y/256)*16); - - dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage); -8002560c: 26730ad8 addiu s3,s3,2776 - ptrBlockData->IconTPoly.u[0] = MEMCARD_BLOCK_IMAGE_X + x_block_offset; - ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + (gs.w << 2); - ptrBlockData->IconTPoly.u[2] = ptrBlockData->IconTPoly.u[0]; - ptrBlockData->IconTPoly.u[3] = ptrBlockData->IconTPoly.u[1]; - - dprintf("\tu = {%d, %d, %d, %d}\n", -80025610: 10000080 b 80025814 -80025614: 3c148004 lui s4,0x8004 - - if( (ptrBlockData->IconNumber < 1) - || - (ptrBlockData->IconNumber > MEMCARD_NUMBER_OF_ICONS) ) - { - dprintf("Invalid number of icons.\n"); -80025618: 3c048004 lui a0,0x8004 -8002561c: 0c00ed8f jal 8003b63c -80025620: 24840aa0 addiu a0,a0,2720 - return false; -80025624: 10000081 b 8002582c -80025628: 00001021 move v0,zero - { - gs.pmode = COLORMODE_4BPP; - gs.has_clut = 1; - - x_clut_offset = i << 4; - y_clut_offset = ptrBlockData->Block - 1; -8002562c: 8e060004 lw a2,4(s0) - - gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset; - gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4); -80025630: 8e020000 lw v0,0(s0) - { - gs.pmode = COLORMODE_4BPP; - gs.has_clut = 1; - - x_clut_offset = i << 4; - y_clut_offset = ptrBlockData->Block - 1; -80025634: 24c6ffff addiu a2,a2,-1 -80025638: 00063400 sll a2,a2,0x10 - - gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset; - gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4); -8002563c: 00021100 sll v0,v0,0x4 -80025640: 24420160 addiu v0,v0,352 - { - gs.pmode = COLORMODE_4BPP; - gs.has_clut = 1; - - x_clut_offset = i << 4; - y_clut_offset = ptrBlockData->Block - 1; -80025644: 00063403 sra a2,a2,0x10 - - gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset; -80025648: 00152900 sll a1,s5,0x4 -8002564c: 24a503c0 addiu a1,a1,960 - gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4); -80025650: 00463021 addu a2,v0,a2 - gs.clut_w = MEMCARD_BLOCK_CLUT_W; -80025654: 24160010 li s6,16 - gs.clut_h = MEMCARD_BLOCK_CLUT_H; - - dprintf("Gs Clut = {%d,%d,%d,%d}\n", -80025658: afa30010 sw v1,16(sp) -8002565c: 02402021 move a0,s2 -80025660: 24070010 li a3,16 - } - - for(i = 0; i < ptrBlockData->IconNumber; i++) - { - gs.pmode = COLORMODE_4BPP; - gs.has_clut = 1; -80025664: afa3001c sw v1,28(sp) - y_clut_offset = ptrBlockData->Block - 1; - - gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset; - gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4); - gs.clut_w = MEMCARD_BLOCK_CLUT_W; - gs.clut_h = MEMCARD_BLOCK_CLUT_H; -80025668: afa3002c sw v1,44(sp) - return false; - } - - for(i = 0; i < ptrBlockData->IconNumber; i++) - { - gs.pmode = COLORMODE_4BPP; -8002566c: afa00018 sw zero,24(sp) - gs.has_clut = 1; - - x_clut_offset = i << 4; - y_clut_offset = ptrBlockData->Block - 1; - - gs.clut_x = MEMCARD_BLOCK_CLUT_X + x_clut_offset; -80025670: afa50020 sw a1,32(sp) - gs.clut_y = MEMCARD_BLOCK_CLUT_Y + y_clut_offset + (ptrBlockData->Slot << 4); -80025674: afa60024 sw a2,36(sp) - gs.clut_w = MEMCARD_BLOCK_CLUT_W; -80025678: afb60028 sw s6,40(sp) - gs.clut_h = MEMCARD_BLOCK_CLUT_H; - - dprintf("Gs Clut = {%d,%d,%d,%d}\n", -8002567c: 0c00ed8f jal 8003b63c -80025680: 3c110fff lui s1,0xfff - gs.clut_y, - gs.clut_w, - gs.clut_h ); - - x_block_offset = MEMCARD_BLOCK_IMAGE_W * (ptrBlockData->Block - 1); - x_block_offset *= MEMCARD_BLOCK_MAX_ICONS; -80025684: 8e020004 lw v0,4(s0) -80025688: 3631ffff ori s1,s1,0xffff -8002568c: 00511021 addu v0,v0,s1 -80025690: 00021900 sll v1,v0,0x4 -80025694: 00021180 sll v0,v0,0x6 -80025698: 00431023 subu v0,v0,v1 -8002569c: 00021400 sll v0,v0,0x10 -800256a0: 00021403 sra v0,v0,0x10 - x_block_offset >>= MEMCARD_BLOCK_IMAGE_W_BITSHIFT; - x_block_offset += i<Slot); -800256b8: 8e020000 lw v0,0(s0) - gs.h = MEMCARD_BLOCK_IMAGE_H; - - gs.clut_data = (uint8_t*)ptrBlockData->CLUT[i]; - gs.data = (uint8_t*)ptrBlockData->Icons[i]; - - GsUploadImage(&gs); -800256bc: 27a40018 addiu a0,sp,24 - x_block_offset *= MEMCARD_BLOCK_MAX_ICONS; - x_block_offset >>= MEMCARD_BLOCK_IMAGE_W_BITSHIFT; - x_block_offset += i<Slot); -800256c0: 24420016 addiu v0,v0,22 -800256c4: 00021100 sll v0,v0,0x4 -800256c8: afa20034 sw v0,52(sp) - - // Dimensions are 16x16 px, but since 4bpp is used, it actually - // takes 4x16 px on the framebuffer. - gs.w = MEMCARD_BLOCK_IMAGE_W >> MEMCARD_BLOCK_IMAGE_W_BITSHIFT; -800256cc: 24020004 li v0,4 -800256d0: afa20038 sw v0,56(sp) - gs.h = MEMCARD_BLOCK_IMAGE_H; - - gs.clut_data = (uint8_t*)ptrBlockData->CLUT[i]; -800256d4: 26a2000d addiu v0,s5,13 -800256d8: 00021140 sll v0,v0,0x5 -800256dc: 02021021 addu v0,s0,v0 -800256e0: 24420004 addiu v0,v0,4 -800256e4: afa20040 sw v0,64(sp) - gs.data = (uint8_t*)ptrBlockData->Icons[i]; -800256e8: 001511c0 sll v0,s5,0x7 -800256ec: 02021021 addu v0,s0,v0 -800256f0: 24420024 addiu v0,v0,36 - gs.y = MEMCARD_BLOCK_IMAGE_Y + (MEMCARD_BLOCK_IMAGE_H * ptrBlockData->Slot); - - // Dimensions are 16x16 px, but since 4bpp is used, it actually - // takes 4x16 px on the framebuffer. - gs.w = MEMCARD_BLOCK_IMAGE_W >> MEMCARD_BLOCK_IMAGE_W_BITSHIFT; - gs.h = MEMCARD_BLOCK_IMAGE_H; -800256f4: afb6003c sw s6,60(sp) - - gs.clut_data = (uint8_t*)ptrBlockData->CLUT[i]; - gs.data = (uint8_t*)ptrBlockData->Icons[i]; - - GsUploadImage(&gs); -800256f8: 0c00be55 jal 8002f954 -800256fc: afa20044 sw v0,68(sp) - - if(i == 0) -80025700: 16a00042 bnez s5,8002580c -80025704: 00000000 nop - { - ptrBlockData->IconTPoly.attribute = COLORMODE(COLORMODE_4BPP); - ptrBlockData->IconTPoly.tpage = (gs.x / 64) + ((gs.y/256)*16); -80025708: 8fa20034 lw v0,52(sp) -8002570c: 8fa30030 lw v1,48(sp) -80025710: 00022fc3 sra a1,v0,0x1f -80025714: 30a500ff andi a1,a1,0xff -80025718: 00a22821 addu a1,a1,v0 -8002571c: 00052a03 sra a1,a1,0x8 -80025720: 00051100 sll v0,a1,0x4 -80025724: 00032fc3 sra a1,v1,0x1f -80025728: 30a5003f andi a1,a1,0x3f -8002572c: 00a32821 addu a1,a1,v1 -80025730: 00052983 sra a1,a1,0x6 -80025734: 00452821 addu a1,v0,a1 -80025738: 30a500ff andi a1,a1,0xff -8002573c: a2050220 sb a1,544(s0) - - dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage); -80025740: 02602021 move a0,s3 -80025744: 0c00ed8f jal 8003b63c -80025748: ae00022c sw zero,556(s0) - - x_block_offset = MEMCARD_BLOCK_IMAGE_W * (ptrBlockData->Block - 1); - x_block_offset *= MEMCARD_BLOCK_MAX_ICONS; - - ptrBlockData->IconTPoly.u[0] = MEMCARD_BLOCK_IMAGE_X + x_block_offset; -8002574c: 8e070004 lw a3,4(s0) - ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + (gs.w << 2); -80025750: 8fa60038 lw a2,56(sp) - dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage); - - x_block_offset = MEMCARD_BLOCK_IMAGE_W * (ptrBlockData->Block - 1); - x_block_offset *= MEMCARD_BLOCK_MAX_ICONS; - - ptrBlockData->IconTPoly.u[0] = MEMCARD_BLOCK_IMAGE_X + x_block_offset; -80025754: 00f18821 addu s1,a3,s1 -80025758: 00113900 sll a3,s1,0x4 -8002575c: 00118980 sll s1,s1,0x6 -80025760: 02273823 subu a3,s1,a3 -80025764: 30e700ff andi a3,a3,0xff - ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + (gs.w << 2); -80025768: 00063080 sll a2,a2,0x2 -8002576c: 00e63021 addu a2,a3,a2 -80025770: 30c600ff andi a2,a2,0xff - dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage); - - x_block_offset = MEMCARD_BLOCK_IMAGE_W * (ptrBlockData->Block - 1); - x_block_offset *= MEMCARD_BLOCK_MAX_ICONS; - - ptrBlockData->IconTPoly.u[0] = MEMCARD_BLOCK_IMAGE_X + x_block_offset; -80025774: a2070221 sb a3,545(s0) - ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + (gs.w << 2); -80025778: a2060222 sb a2,546(s0) - ptrBlockData->IconTPoly.u[2] = ptrBlockData->IconTPoly.u[0]; -8002577c: a2070223 sb a3,547(s0) - ptrBlockData->IconTPoly.u[3] = ptrBlockData->IconTPoly.u[1]; -80025780: a2060224 sb a2,548(s0) - - dprintf("\tu = {%d, %d, %d, %d}\n", -80025784: 00e02821 move a1,a3 -80025788: afa60010 sw a2,16(sp) -8002578c: 0c00ed8f jal 8003b63c -80025790: 26840ae8 addiu a0,s4,2792 - ptrBlockData->IconTPoly.u[0], - ptrBlockData->IconTPoly.u[1], - ptrBlockData->IconTPoly.u[2], - ptrBlockData->IconTPoly.u[3]); - - ptrBlockData->IconTPoly.v[0] = gs.y % 256; -80025794: 8fa60034 lw a2,52(sp) -80025798: 24020100 li v0,256 -8002579c: 14400002 bnez v0,800257a8 -800257a0: 00c2001a div zero,a2,v0 -800257a4: 0007000d break 0x7 - ptrBlockData->IconTPoly.v[1] = ptrBlockData->IconTPoly.v[0]; - ptrBlockData->IconTPoly.v[2] = (gs.y % 256) + (gs.h); -800257a8: 8fa7003c lw a3,60(sp) - ptrBlockData->IconTPoly.v[3] = ptrBlockData->IconTPoly.v[2]; - - dprintf("\tu = {%d, %d, %d, %d}\n", -800257ac: 26840ae8 addiu a0,s4,2792 - ptrBlockData->IconTPoly.u[0], - ptrBlockData->IconTPoly.u[1], - ptrBlockData->IconTPoly.u[2], - ptrBlockData->IconTPoly.u[3]); - - ptrBlockData->IconTPoly.v[0] = gs.y % 256; -800257b0: 00003010 mfhi a2 -800257b4: 30c200ff andi v0,a2,0xff - ptrBlockData->IconTPoly.v[1] = ptrBlockData->IconTPoly.v[0]; - ptrBlockData->IconTPoly.v[2] = (gs.y % 256) + (gs.h); -800257b8: 00473821 addu a3,v0,a3 -800257bc: 30e700ff andi a3,a3,0xff -800257c0: 30c600ff andi a2,a2,0xff - ptrBlockData->IconTPoly.v[3] = ptrBlockData->IconTPoly.v[2]; - - dprintf("\tu = {%d, %d, %d, %d}\n", -800257c4: 00c02821 move a1,a2 - ptrBlockData->IconTPoly.u[0], - ptrBlockData->IconTPoly.u[1], - ptrBlockData->IconTPoly.u[2], - ptrBlockData->IconTPoly.u[3]); - - ptrBlockData->IconTPoly.v[0] = gs.y % 256; -800257c8: a2020225 sb v0,549(s0) - ptrBlockData->IconTPoly.v[1] = ptrBlockData->IconTPoly.v[0]; -800257cc: a2020226 sb v0,550(s0) - ptrBlockData->IconTPoly.v[2] = (gs.y % 256) + (gs.h); -800257d0: a2070227 sb a3,551(s0) - ptrBlockData->IconTPoly.v[3] = ptrBlockData->IconTPoly.v[2]; -800257d4: a2070228 sb a3,552(s0) - - dprintf("\tu = {%d, %d, %d, %d}\n", -800257d8: 0c00ed8f jal 8003b63c -800257dc: afa70010 sw a3,16(sp) - - ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE; - ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE; - ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE; - - ptrBlockData->IconTPoly.cx = gs.clut_x; -800257e0: 87a50020 lh a1,32(sp) - ptrBlockData->IconTPoly.cy = gs.clut_y; -800257e4: 87a60024 lh a2,36(sp) - ptrBlockData->IconTPoly.v[0], - ptrBlockData->IconTPoly.v[1], - ptrBlockData->IconTPoly.v[2], - ptrBlockData->IconTPoly.v[3]); - - ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE; -800257e8: 2402ff80 li v0,-128 - ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE; - - ptrBlockData->IconTPoly.cx = gs.clut_x; - ptrBlockData->IconTPoly.cy = gs.clut_y; - - dprintf("\tclut = {%d, %d}\n", -800257ec: 3c048004 lui a0,0x8004 - ptrBlockData->IconTPoly.v[0], - ptrBlockData->IconTPoly.v[1], - ptrBlockData->IconTPoly.v[2], - ptrBlockData->IconTPoly.v[3]); - - ptrBlockData->IconTPoly.r = NORMAL_LUMINANCE; -800257f0: a2020218 sb v0,536(s0) - ptrBlockData->IconTPoly.g = NORMAL_LUMINANCE; -800257f4: a2020219 sb v0,537(s0) - ptrBlockData->IconTPoly.b = NORMAL_LUMINANCE; -800257f8: a202021a sb v0,538(s0) - - ptrBlockData->IconTPoly.cx = gs.clut_x; -800257fc: a605021c sh a1,540(s0) - ptrBlockData->IconTPoly.cy = gs.clut_y; -80025800: a606021e sh a2,542(s0) - - dprintf("\tclut = {%d, %d}\n", -80025804: 0c00ed8f jal 8003b63c -80025808: 24840b00 addiu a0,a0,2816 - { - dprintf("Invalid number of icons.\n"); - return false; - } - - for(i = 0; i < ptrBlockData->IconNumber; i++) -8002580c: 26b50001 addiu s5,s5,1 -80025810: 32b500ff andi s5,s5,0xff -80025814: 92020008 lbu v0,8(s0) -80025818: 00000000 nop -8002581c: 02a2102b sltu v0,s5,v0 -80025820: 1440ff82 bnez v0,8002562c -80025824: 24030001 li v1,1 - ptrBlockData->IconTPoly.cx, - ptrBlockData->IconTPoly.cy); - } - } - - return true; -80025828: 24020001 li v0,1 -} -8002582c: 8fbf0064 lw ra,100(sp) -80025830: 8fb60060 lw s6,96(sp) -80025834: 8fb5005c lw s5,92(sp) -80025838: 8fb40058 lw s4,88(sp) -8002583c: 8fb30054 lw s3,84(sp) -80025840: 8fb20050 lw s2,80(sp) -80025844: 8fb1004c lw s1,76(sp) -80025848: 8fb00048 lw s0,72(sp) -8002584c: 03e00008 jr ra -80025850: 27bd0068 addiu sp,sp,104 - -80025854 : -} - -bool MemCardGetBlockInfo( TYPE_BLOCK_DATA * ptrBlockData, - MEMCARD_SLOTS slot, - MEMCARD_BLOCKS blockNumber ) -{ -80025854: 27bdffd0 addiu sp,sp,-48 -80025858: afbf002c sw ra,44(sp) -8002585c: afb20018 sw s2,24(sp) -80025860: afb10014 sw s1,20(sp) -80025864: 00a09021 move s2,a1 -80025868: 00c08821 move s1,a2 -8002586c: afb00010 sw s0,16(sp) -80025870: afb60028 sw s6,40(sp) -80025874: 00808021 move s0,a0 -80025878: afb50024 sw s5,36(sp) -8002587c: afb40020 sw s4,32(sp) - MemCardResetBlockData(ptrBlockData); -80025880: 0c009560 jal 80025580 -80025884: afb3001c sw s3,28(sp) - - ptrBlockData->Slot = slot; - ptrBlockData->Block = blockNumber; - - dprintf("MemCardGetBlockStateFileName...\n"); -80025888: 3c048004 lui a0,0x8004 - MEMCARD_SLOTS slot, - MEMCARD_BLOCKS blockNumber ) -{ - MemCardResetBlockData(ptrBlockData); - - ptrBlockData->Slot = slot; -8002588c: ae120000 sw s2,0(s0) - ptrBlockData->Block = blockNumber; -80025890: ae110004 sw s1,4(s0) - - dprintf("MemCardGetBlockStateFileName...\n"); -80025894: 0c00ed8f jal 8003b63c -80025898: 24840b14 addiu a0,a0,2836 - -bool MemCardGetBlockStateFileName(TYPE_BLOCK_DATA * ptrBlockData) -{ - int sector = ptrBlockData->Block; - - memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE); -8002589c: 3c118004 lui s1,0x8004 - return true; -} - -bool MemCardGetBlockStateFileName(TYPE_BLOCK_DATA * ptrBlockData) -{ - int sector = ptrBlockData->Block; -800258a0: 8e120004 lw s2,4(s0) - - memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE); -800258a4: 00002821 move a1,zero -800258a8: 26245e20 addiu a0,s1,24096 -800258ac: 0c00d7ab jal 80035eac -800258b0: 24060080 li a2,128 - - if(MemCardReadSector(ptrBlockData, sector) == false) -800258b4: 02402821 move a1,s2 -800258b8: 0c00947d jal 800251f4 -800258bc: 02002021 move a0,s0 -800258c0: 104000a4 beqz v0,80025b54 -800258c4: 3c048004 lui a0,0x8004 - { - return false; - } - - // 00h-03h Block Allocation State - dprintf("Block %d, slot %d, allocation state: 0x%02X.\n", -800258c8: 92275e20 lbu a3,24096(s1) -800258cc: 8e060000 lw a2,0(s0) -800258d0: 8e050004 lw a1,4(s0) -800258d4: 24840b38 addiu a0,a0,2872 -800258d8: 0c00ed8f jal 8003b63c -800258dc: 00409821 move s3,v0 - * 000000A3h - Free ;deleted (last block of file) */ - - // Always take into account memory card data is little-endian, - // so if using a hex editor, you will read 51000000h. - - switch(DataBuffer[0]) -800258e0: 92225e20 lbu v0,24096(s1) -800258e4: 24030053 li v1,83 -800258e8: 10430012 beq v0,v1,80025934 -800258ec: 2c430054 sltiu v1,v0,84 -800258f0: 10600007 beqz v1,80025910 -800258f4: 24030051 li v1,81 -800258f8: 1043000c beq v0,v1,8002592c -800258fc: 24030052 li v1,82 -80025900: 14430021 bne v0,v1,80025988 -80025904: 24020002 li v0,2 - case 0x52: - ptrBlockData->BlockCount = INTERMEDIATE_BLOCK; - break; - - case 0x53: - ptrBlockData->BlockCount = LAST_BLOCK; -80025908: 1000000c b 8002593c -8002590c: ae020020 sw v0,32(s0) - * 000000A3h - Free ;deleted (last block of file) */ - - // Always take into account memory card data is little-endian, - // so if using a hex editor, you will read 51000000h. - - switch(DataBuffer[0]) -80025910: 2442ff60 addiu v0,v0,-160 -80025914: 24030003 li v1,3 -80025918: 0062102b sltu v0,v1,v0 -8002591c: 1440001b bnez v0,8002598c -80025920: 3c048004 lui a0,0x8004 - break; - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - ptrBlockData->BlockCount = EMPTY_BLOCK; -80025924: 1000001b b 80025994 -80025928: ae000020 sw zero,32(s0) - // so if using a hex editor, you will read 51000000h. - - switch(DataBuffer[0]) - { - case 0x51: - ptrBlockData->BlockCount = FIRST_OR_ONLY_BLOCK; -8002592c: 10000002 b 80025938 -80025930: 24020001 li v0,1 - case 0x52: - ptrBlockData->BlockCount = INTERMEDIATE_BLOCK; - break; - - case 0x53: - ptrBlockData->BlockCount = LAST_BLOCK; -80025934: 24020003 li v0,3 -80025938: ae020020 sw v0,32(s0) - } - - // 0Ah-1Eh Filename in ASCII, terminated by 00h (max 20 chars, plus ending 00h) - // File name is only defined on first block of group (allocation state == 0x51) - - if(ptrBlockData->BlockCount == FIRST_OR_ONLY_BLOCK) -8002593c: 8e030020 lw v1,32(s0) -80025940: 24020001 li v0,1 -80025944: 14620013 bne v1,v0,80025994 -80025948: 26120009 addiu s2,s0,9 - { - memset(ptrBlockData->FileName, 0 , MEMCARD_FILENAME_SIZE); -8002594c: 02402021 move a0,s2 -80025950: 24060015 li a2,21 -80025954: 0c00d7ab jal 80035eac -80025958: 00002821 move a1,zero - - memcpy(ptrBlockData->FileName, &DataBuffer[0x0A], MEMCARD_FILENAME_SIZE); -8002595c: 3c058004 lui a1,0x8004 -80025960: 02402021 move a0,s2 -80025964: 24060015 li a2,21 -80025968: 0c00d75e jal 80035d78 -8002596c: 24a55e2a addiu a1,a1,24106 - - dprintf("File name: %s\n", ptrBlockData->FileName); -80025970: 3c048004 lui a0,0x8004 -80025974: 02402821 move a1,s2 -80025978: 0c00ed8f jal 8003b63c -8002597c: 24840b8c addiu a0,a0,2956 -80025980: 10000004 b 80025994 -80025984: 00000000 nop - case 0xA2: - case 0xA3: - ptrBlockData->BlockCount = EMPTY_BLOCK; - return true; - default: - printf("Invalid block allocation state!\n"); -80025988: 3c048004 lui a0,0x8004 -8002598c: 1000001d b 80025a04 -80025990: 24840b68 addiu a0,a0,2920 - if(MemCardGetBlockStateFileName(ptrBlockData) == false) - { - return false; - } - - if(ptrBlockData->BlockCount == EMPTY_BLOCK) -80025994: 8e020020 lw v0,32(s0) -80025998: 00000000 nop -8002599c: 104000bc beqz v0,80025c90 -800259a0: 3c048004 lui a0,0x8004 - { - // Stop looking for any other data. - return true; - } - - dprintf("MemCardGetInitialFrameInfo...\n"); -800259a4: 0c00ed8f jal 8003b63c -800259a8: 24840b9c addiu a0,a0,2972 -bool MemCardGetInitialFrameInfo(TYPE_BLOCK_DATA * ptrBlockData) -{ - unsigned int i; - int sector = ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT; - - if(ptrBlockData->BlockCount != FIRST_OR_ONLY_BLOCK) -800259ac: 8e140020 lw s4,32(s0) -800259b0: 24020001 li v0,1 -800259b4: 12820017 beq s4,v0,80025a14 -800259b8: 00002821 move a1,zero - if(MemCardGetInitialFrameInfo(ptrBlockData) == false) - { - return false; - } - - dprintf("MemCardGetIconFrameInfo...\n"); -800259bc: 3c048004 lui a0,0x8004 -800259c0: 0c00ed8f jal 8003b63c -800259c4: 24840ce4 addiu a0,a0,3300 - unsigned int i; - unsigned int j; - uint8_t buffer_contents; - static TYPE_BLOCK_DATA * ptrReferenceBlock = NULL; - - switch(ptrBlockData->BlockCount) -800259c8: 8e020020 lw v0,32(s0) -800259cc: 24030001 li v1,1 -800259d0: 10430083 beq v0,v1,80025be0 -800259d4: 24120001 li s2,1 -800259d8: 1040009f beqz v0,80025c58 -800259dc: 2c420004 sltiu v0,v0,4 -800259e0: 1040007d beqz v0,80025bd8 -800259e4: 3c048004 lui a0,0x8004 - return true; - - case INTERMEDIATE_BLOCK: - case LAST_BLOCK: - - if(ptrReferenceBlock == NULL) -800259e8: 3c128007 lui s2,0x8007 -800259ec: 8e421c44 lw v0,7236(s2) -800259f0: 00000000 nop -800259f4: 14400059 bnez v0,80025b5c -800259f8: 261401a4 addiu s4,s0,420 - { - dprintf("No reference memory card block found yet!\n"); -800259fc: 3c048004 lui a0,0x8004 -80025a00: 24840c28 addiu a0,a0,3112 - ptrReferenceBlock = ptrBlockData; - - return true; - } - - dprintf("Unknown error from MemCardGetIconFrameInfo()!\n"); -80025a04: 0c00ed8f jal 8003b63c -80025a08: 00009821 move s3,zero -80025a0c: 100000a0 b 80025c90 -80025a10: 00000000 nop -} - -bool MemCardGetInitialFrameInfo(TYPE_BLOCK_DATA * ptrBlockData) -{ - unsigned int i; - int sector = ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT; -80025a14: 8e120004 lw s2,4(s0) - - // Pretty silly operation (TITLE_FRAME = 0), but used for - // conceptual purposes and better understanding. - sector += TITLE_FRAME; - - memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE); -80025a18: 26245e20 addiu a0,s1,24096 -80025a1c: 0c00d7ab jal 80035eac -80025a20: 24060080 li a2,128 - - if(MemCardReadSector(ptrBlockData, sector) == false) -80025a24: 00122980 sll a1,s2,0x6 -80025a28: 02002021 move a0,s0 -80025a2c: 0c00947d jal 800251f4 -80025a30: 3c138004 lui s3,0x8004 -80025a34: 10400047 beqz v0,80025b54 -80025a38: 26725e20 addiu s2,s3,24096 - { - return false; - } - - dprintf("Magic number: '%c' '%c'\n",DataBuffer[0], DataBuffer[1]); -80025a3c: 92460001 lbu a2,1(s2) -80025a40: 92655e20 lbu a1,24096(s3) -80025a44: 3c048004 lui a0,0x8004 -80025a48: 0c00ed8f jal 8003b63c -80025a4c: 24840bbc addiu a0,a0,3004 - - if(DataBuffer[0] != 'S' || DataBuffer[1] != 'C') -80025a50: 92635e20 lbu v1,24096(s3) -80025a54: 24020053 li v0,83 -80025a58: 14620005 bne v1,v0,80025a70 -80025a5c: 24020043 li v0,67 -80025a60: 92430001 lbu v1,1(s2) -80025a64: 00000000 nop -80025a68: 10620006 beq v1,v0,80025a84 -80025a6c: 24030012 li v1,18 - { - // Invalid magic number. - dprintf("Invalid magic number extracted from slot %d, block %d.\n", -80025a70: 3c048004 lui a0,0x8004 -80025a74: 8e060004 lw a2,4(s0) -80025a78: 8e050000 lw a1,0(s0) -80025a7c: 10000033 b 80025b4c -80025a80: 24840bd8 addiu a0,a0,3032 - 11h...Icon has 1 frame (static) (same image shown forever) - 12h...Icon has 2 frames (animated) (changes every 16 PAL frames) - 13h...Icon has 3 frames (animated) (changes every 11 PAL frames) - * */ - - switch(DataBuffer[2]) -80025a84: 92420002 lbu v0,2(s2) -80025a88: 00000000 nop -80025a8c: 10430007 beq v0,v1,80025aac -80025a90: 24030013 li v1,19 -80025a94: 10430007 beq v0,v1,80025ab4 -80025a98: 24030011 li v1,17 -80025a9c: 1443007c bne v0,v1,80025c90 -80025aa0: 00009821 move s3,zero - { - case 0x11: - ptrBlockData->IconNumber = 1; -80025aa4: 10000005 b 80025abc -80025aa8: a2140008 sb s4,8(s0) - break; - - case 0x12: - ptrBlockData->IconNumber = 2; -80025aac: 10000002 b 80025ab8 -80025ab0: 24020002 li v0,2 - break; - - case 0x13: - ptrBlockData->IconNumber = 3; -80025ab4: 24020003 li v0,3 -80025ab8: a2020008 sb v0,8(s0) - // Invalid icon display flag! We can't know how many icons - // are used. - return false; - } - - dprintf("Number of icons: %d\n", ptrBlockData->IconNumber); -80025abc: 92050008 lbu a1,8(s0) -80025ac0: 3c048004 lui a0,0x8004 -80025ac4: 24840c10 addiu a0,a0,3088 -80025ac8: 0c00ed8f jal 8003b63c -80025acc: 3c148004 lui s4,0x8004 -80025ad0: 261301a4 addiu s3,s0,420 - - // 60h-7Fh Icon 16 Color Palette Data (each entry is 16bit CLUT) - - for(i = 0; i < ptrBlockData->IconNumber; i++) -80025ad4: 00009021 move s2,zero - { - memcpy(ptrBlockData->CLUT[i],&DataBuffer[0x60], MEMCARD_CLUT_SIZE); -80025ad8: 26945e80 addiu s4,s4,24192 - - dprintf("Number of icons: %d\n", ptrBlockData->IconNumber); - - // 60h-7Fh Icon 16 Color Palette Data (each entry is 16bit CLUT) - - for(i = 0; i < ptrBlockData->IconNumber; i++) -80025adc: 92020008 lbu v0,8(s0) -80025ae0: 00000000 nop -80025ae4: 0242102b sltu v0,s2,v0 -80025ae8: 1040ffb4 beqz v0,800259bc -80025aec: 24060020 li a2,32 - { - memcpy(ptrBlockData->CLUT[i],&DataBuffer[0x60], MEMCARD_CLUT_SIZE); -80025af0: 02602021 move a0,s3 -80025af4: 0c00d75e jal 80035d78 -80025af8: 02802821 move a1,s4 - - dprintf("Number of icons: %d\n", ptrBlockData->IconNumber); - - // 60h-7Fh Icon 16 Color Palette Data (each entry is 16bit CLUT) - - for(i = 0; i < ptrBlockData->IconNumber; i++) -80025afc: 26520001 addiu s2,s2,1 -80025b00: 1000fff6 b 80025adc -80025b04: 26730020 addiu s3,s3,32 - { - dprintf("Could not read memory sector!\n"); - return false; - } - - memcpy(ptrBlockData->Icons[i - 1 /* ICON_FRAME_# - 1 */], DataBuffer, MEMCARD_SECTOR_SIZE); -80025b08: 26640024 addiu a0,s3,36 -80025b0c: 0c00d75e jal 80035d78 -80025b10: 02c02821 move a1,s6 - - // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only) - for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++) - { - dprintf("\tIcon %d out of %d\n",i, ptrBlockData->IconNumber); - buffer_contents = 0; -80025b14: 00001821 move v1,zero - return false; - } - - memcpy(ptrBlockData->Icons[i - 1 /* ICON_FRAME_# - 1 */], DataBuffer, MEMCARD_SECTOR_SIZE); - - for(j = 0; j < MEMCARD_SECTOR_SIZE; j++) -80025b18: 00001021 move v0,zero -80025b1c: 24040080 li a0,128 - { - buffer_contents |= ptrBlockData->Icons[i - 1][j]; -80025b20: 02622821 addu a1,s3,v0 -80025b24: 90a50024 lbu a1,36(a1) - return false; - } - - memcpy(ptrBlockData->Icons[i - 1 /* ICON_FRAME_# - 1 */], DataBuffer, MEMCARD_SECTOR_SIZE); - - for(j = 0; j < MEMCARD_SECTOR_SIZE; j++) -80025b28: 24420001 addiu v0,v0,1 -80025b2c: 1444fffc bne v0,a0,80025b20 -80025b30: 00651825 or v1,v1,a1 - { - buffer_contents |= ptrBlockData->Icons[i - 1][j]; - } - - if(buffer_contents == 0) -80025b34: 14600044 bnez v1,80025c48 -80025b38: 26730080 addiu s3,s3,128 - { - // Icon buffer is empty! - dprintf("Invalid icon buffer for slot %d, block %d.\n", -80025b3c: 3c048004 lui a0,0x8004 -80025b40: 8e060004 lw a2,4(s0) -80025b44: 8e050000 lw a1,0(s0) -80025b48: 24840c88 addiu a0,a0,3208 -80025b4c: 0c00ed8f jal 8003b63c -80025b50: 00000000 nop - - dprintf("MemCardGetInitialFrameInfo...\n"); - - if(MemCardGetInitialFrameInfo(ptrBlockData) == false) - { - return false; -80025b54: 1000004e b 80025c90 -80025b58: 00009821 move s3,zero - { - dprintf("No reference memory card block found yet!\n"); - return false; - } - - ptrBlockData->IconNumber = ptrReferenceBlock->IconNumber; -80025b5c: 90420008 lbu v0,8(v0) -80025b60: 00000000 nop -80025b64: a2020008 sb v0,8(s0) -80025b68: 26130024 addiu s3,s0,36 - - for(i = 0; i < MEMCARD_NUMBER_OF_ICONS; i++) -80025b6c: 00008821 move s1,zero -80025b70: 24150003 li s5,3 - { - memcpy(ptrBlockData->CLUT[i], ptrReferenceBlock->CLUT[i], MEMCARD_CLUT_SIZE); -80025b74: 2625000d addiu a1,s1,13 -80025b78: 8e421c44 lw v0,7236(s2) -80025b7c: 00052940 sll a1,a1,0x5 -80025b80: 00452821 addu a1,v0,a1 -80025b84: 02802021 move a0,s4 -80025b88: 24060020 li a2,32 -80025b8c: 0c00d75e jal 80035d78 -80025b90: 24a50004 addiu a1,a1,4 - memcpy(ptrBlockData->Icons[i], ptrReferenceBlock->Icons[i], MEMCARD_ICON_SIZE); -80025b94: 8e421c44 lw v0,7236(s2) -80025b98: 001129c0 sll a1,s1,0x7 -80025b9c: 00452821 addu a1,v0,a1 -80025ba0: 02602021 move a0,s3 -80025ba4: 24060080 li a2,128 -80025ba8: 24a50024 addiu a1,a1,36 -80025bac: 0c00d75e jal 80035d78 -80025bb0: 26310001 addiu s1,s1,1 -80025bb4: 26940020 addiu s4,s4,32 - return false; - } - - ptrBlockData->IconNumber = ptrReferenceBlock->IconNumber; - - for(i = 0; i < MEMCARD_NUMBER_OF_ICONS; i++) -80025bb8: 1635ffee bne s1,s5,80025b74 -80025bbc: 26730080 addiu s3,s3,128 - { - memcpy(ptrBlockData->CLUT[i], ptrReferenceBlock->CLUT[i], MEMCARD_CLUT_SIZE); - memcpy(ptrBlockData->Icons[i], ptrReferenceBlock->Icons[i], MEMCARD_ICON_SIZE); - } - - if(ptrBlockData->BlockCount == LAST_BLOCK) -80025bc0: 8e020020 lw v0,32(s0) -80025bc4: 00000000 nop -80025bc8: 14510023 bne v0,s1,80025c58 -80025bcc: 3c028007 lui v0,0x8007 - { - // Dereference pointer - ptrReferenceBlock = NULL; -80025bd0: 10000021 b 80025c58 -80025bd4: ac401c44 sw zero,7236(v0) - ptrReferenceBlock = ptrBlockData; - - return true; - } - - dprintf("Unknown error from MemCardGetIconFrameInfo()!\n"); -80025bd8: 1000ff8a b 80025a04 -80025bdc: 24840cb4 addiu a0,a0,3252 - return true; -} - -bool MemCardGetIconFrameInfo(TYPE_BLOCK_DATA * ptrBlockData) -{ - int initial_sector = ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT; -80025be0: 8e150004 lw s5,4(s0) - case FIRST_OR_ONLY_BLOCK: - - // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only) - for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++) - { - dprintf("\tIcon %d out of %d\n",i, ptrBlockData->IconNumber); -80025be4: 3c148004 lui s4,0x8004 - buffer_contents = 0; - sector = initial_sector + i; - memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE * sizeof(uint8_t) ); -80025be8: 26315e20 addiu s1,s1,24096 - return true; -} - -bool MemCardGetIconFrameInfo(TYPE_BLOCK_DATA * ptrBlockData) -{ - int initial_sector = ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT; -80025bec: 0015a980 sll s5,s5,0x6 -80025bf0: 02009821 move s3,s0 - case FIRST_OR_ONLY_BLOCK: - - // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only) - for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++) - { - dprintf("\tIcon %d out of %d\n",i, ptrBlockData->IconNumber); -80025bf4: 26940c54 addiu s4,s4,3156 - { - dprintf("Could not read memory sector!\n"); - return false; - } - - memcpy(ptrBlockData->Icons[i - 1 /* ICON_FRAME_# - 1 */], DataBuffer, MEMCARD_SECTOR_SIZE); -80025bf8: 0220b021 move s6,s1 - - return true; - case FIRST_OR_ONLY_BLOCK: - - // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only) - for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++) -80025bfc: 92060008 lbu a2,8(s0) -80025c00: 00000000 nop -80025c04: 00d2102b sltu v0,a2,s2 -80025c08: 14400011 bnez v0,80025c50 -80025c0c: 02402821 move a1,s2 - { - dprintf("\tIcon %d out of %d\n",i, ptrBlockData->IconNumber); -80025c10: 0c00ed8f jal 8003b63c -80025c14: 02802021 move a0,s4 - buffer_contents = 0; - sector = initial_sector + i; - memset(DataBuffer, 0, MEMCARD_SECTOR_SIZE * sizeof(uint8_t) ); -80025c18: 00002821 move a1,zero -80025c1c: 02202021 move a0,s1 -80025c20: 0c00d7ab jal 80035eac -80025c24: 24060080 li a2,128 - - if(MemCardReadSector(ptrBlockData, sector) == false) -80025c28: 02b22821 addu a1,s5,s2 -80025c2c: 0c00947d jal 800251f4 -80025c30: 02002021 move a0,s0 -80025c34: 1440ffb4 bnez v0,80025b08 -80025c38: 24060080 li a2,128 - { - dprintf("Could not read memory sector!\n"); -80025c3c: 3c048004 lui a0,0x8004 -80025c40: 1000ff70 b 80025a04 -80025c44: 24840c68 addiu a0,a0,3176 - - return true; - case FIRST_OR_ONLY_BLOCK: - - // Icon Frame(s) (Block 1..15, Frame 1..3) (in first block of file only) - for(i = ICON_FRAME_1; i <= ptrBlockData->IconNumber; i++) -80025c48: 1000ffec b 80025bfc -80025c4c: 26520001 addiu s2,s2,1 - return false; - } - } - - // Use current block as reference if file contains more than one block. - ptrReferenceBlock = ptrBlockData; -80025c50: 3c028007 lui v0,0x8007 -80025c54: ac501c44 sw s0,7236(v0) - } - - // We will not get any block data information, we are only interested - // in basic info. - - dprintf("MemCardUploadToGPU...\n"); -80025c58: 3c048004 lui a0,0x8004 -80025c5c: 0c00ed8f jal 8003b63c -80025c60: 24840d00 addiu a0,a0,3328 - { - return false; - } - - return true; -} -80025c64: 8fbf002c lw ra,44(sp) -80025c68: 8fb60028 lw s6,40(sp) -80025c6c: 8fb50024 lw s5,36(sp) -80025c70: 8fb40020 lw s4,32(sp) -80025c74: 8fb3001c lw s3,28(sp) -80025c78: 8fb20018 lw s2,24(sp) -80025c7c: 8fb10014 lw s1,20(sp) - // We will not get any block data information, we are only interested - // in basic info. - - dprintf("MemCardUploadToGPU...\n"); - - if(MemCardUploadToGPU(ptrBlockData) == false) -80025c80: 02002021 move a0,s0 - { - return false; - } - - return true; -} -80025c84: 8fb00010 lw s0,16(sp) - // We will not get any block data information, we are only interested - // in basic info. - - dprintf("MemCardUploadToGPU...\n"); - - if(MemCardUploadToGPU(ptrBlockData) == false) -80025c88: 0800956f j 800255bc -80025c8c: 27bd0030 addiu sp,sp,48 - { - return false; - } - - return true; -} -80025c90: 8fbf002c lw ra,44(sp) -80025c94: 02601021 move v0,s3 -80025c98: 8fb60028 lw s6,40(sp) -80025c9c: 8fb50024 lw s5,36(sp) -80025ca0: 8fb40020 lw s4,32(sp) -80025ca4: 8fb3001c lw s3,28(sp) -80025ca8: 8fb20018 lw s2,24(sp) -80025cac: 8fb10014 lw s1,20(sp) -80025cb0: 8fb00010 lw s0,16(sp) -80025cb4: 03e00008 jr ra -80025cb8: 27bd0030 addiu sp,sp,48 - -80025cbc : - - return true; -} - -bool MemCardGetAllData(void) -{ -80025cbc: 27bdffe8 addiu sp,sp,-24 -80025cc0: afbf0014 sw ra,20(sp) - uint8_t i; - uint8_t j; - - PadClearData(); -80025cc4: 0c009b84 jal 80026e10 -80025cc8: 00000000 nop - - CurrentReadBlock = 0; -80025ccc: 3c028007 lui v0,0x8007 -80025cd0: a0401c4a sb zero,7242(v0) - - TotalBlocks = MEMCARD_BLOCKS_PER_CARD * MEMCARD_NUMBER_OF_SLOTS; -80025cd4: 2403001e li v1,30 -80025cd8: 3c028007 lui v0,0x8007 -80025cdc: a0431c4b sb v1,7243(v0) - - SmallFont.spr.r = 0; - SmallFont.spr.g = 0; - SmallFont.spr.b = 0; - - GfxSaveDisplayData(&SecondDisplay); -80025ce0: 3c048004 lui a0,0x8004 - - CurrentReadBlock = 0; - - TotalBlocks = MEMCARD_BLOCKS_PER_CARD * MEMCARD_NUMBER_OF_SLOTS; - - SmallFont.spr.r = 0; -80025ce4: 3c028007 lui v0,0x8007 -80025ce8: 24428d38 addiu v0,v0,-29384 - SmallFont.spr.g = 0; - SmallFont.spr.b = 0; - - GfxSaveDisplayData(&SecondDisplay); -80025cec: 24845de8 addiu a0,a0,24040 - - CurrentReadBlock = 0; - - TotalBlocks = MEMCARD_BLOCKS_PER_CARD * MEMCARD_NUMBER_OF_SLOTS; - - SmallFont.spr.r = 0; -80025cf0: a040000e sb zero,14(v0) - SmallFont.spr.g = 0; -80025cf4: a040000f sb zero,15(v0) - SmallFont.spr.b = 0; - - GfxSaveDisplayData(&SecondDisplay); -80025cf8: 0c009090 jal 80024240 -80025cfc: a0400010 sb zero,16(v0) - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); -80025d00: 0c00900b jal 8002402c -80025d04: 24040080 li a0,128 - - // ISR_MemCardDataHandling draws a rectangle on top to show - // memory card loading progress. - - SetVBlankHandler(&ISR_MemCardDataHandling); -80025d08: 3c048002 lui a0,0x8002 -80025d0c: 0c00d35e jal 80034d78 -80025d10: 248452dc addiu a0,a0,21212 -80025d14: 1000ffff b 80025d14 -80025d18: 00000000 nop - -80025d1c : - - return true; -} - -void MemCardHandler(void) -{ -80025d1c: 27bdffe8 addiu sp,sp,-24 -80025d20: afbf0014 sw ra,20(sp) - -void MemCardIconIndexHandler(void) -{ - static uint8_t iconTimer = 0; - - if(System100msTick() == true) -80025d24: 0c009fba jal 80027ee8 -80025d28: 00000000 nop -80025d2c: 10400016 beqz v0,80025d88 -80025d30: 3c038007 lui v1,0x8007 - { - if(++iconTimer >= MEMCARD_ICON_INDEX_TIME) -80025d34: 90621c40 lbu v0,7232(v1) -80025d38: 00000000 nop -80025d3c: 24420001 addiu v0,v0,1 -80025d40: 304200ff andi v0,v0,0xff -80025d44: 2c440004 sltiu a0,v0,4 -80025d48: 10800003 beqz a0,80025d58 -80025d4c: 00000000 nop -80025d50: 1000000d b 80025d88 -80025d54: a0621c40 sb v0,7232(v1) - { - iconTimer = 0; -80025d58: a0601c40 sb zero,7232(v1) - - if(++IconIndex >= MEMCARD_NUMBER_OF_ICONS) -80025d5c: 3c038007 lui v1,0x8007 -80025d60: 90621c54 lbu v0,7252(v1) -80025d64: 00000000 nop -80025d68: 24420001 addiu v0,v0,1 -80025d6c: 304200ff andi v0,v0,0xff -80025d70: 2c440003 sltiu a0,v0,3 -80025d74: 10800003 beqz a0,80025d84 -80025d78: 00000000 nop -80025d7c: 10000002 b 80025d88 -80025d80: a0621c54 sb v0,7252(v1) - { - IconIndex = 0; -80025d84: a0601c54 sb zero,7252(v1) -} - -void MemCardHandler(void) -{ - MemCardIconIndexHandler(); -} -80025d88: 8fbf0014 lw ra,20(sp) -80025d8c: 00000000 nop -80025d90: 03e00008 jr ra -80025d94: 27bd0018 addiu sp,sp,24 - -80025d98 : - // Auxiliar variable to keep original data - short orig_u[4]; - short orig_clut_x; - static bool first_access = true; - - if(ptrBlockData->BlockCount == EMPTY_BLOCK) -80025d98: 8c820020 lw v0,32(a0) -80025d9c: 00000000 nop -80025da0: 1040007b beqz v0,80025f90 -80025da4: 00052c00 sll a1,a1,0x10 -80025da8: 00052c03 sra a1,a1,0x10 -80025dac: 00063400 sll a2,a2,0x10 - } - } -} - -void MemCardDrawIcon(TYPE_BLOCK_DATA * ptrBlockData, short x, short y) -{ -80025db0: 27bdffc8 addiu sp,sp,-56 -80025db4: 00063403 sra a2,a2,0x10 - { - return; - } - - ptrBlockData->IconTPoly.x[0] = x; - ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W; -80025db8: 24a20010 addiu v0,a1,16 -80025dbc: 00021400 sll v0,v0,0x10 - } - } -} - -void MemCardDrawIcon(TYPE_BLOCK_DATA * ptrBlockData, short x, short y) -{ -80025dc0: afb10020 sw s1,32(sp) -80025dc4: afbf0034 sw ra,52(sp) -80025dc8: afb50030 sw s5,48(sp) -80025dcc: afb4002c sw s4,44(sp) -80025dd0: afb30028 sw s3,40(sp) -80025dd4: afb20024 sw s2,36(sp) -80025dd8: afb0001c sw s0,28(sp) - ptrBlockData->IconTPoly.x[0] = x; - ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W; - ptrBlockData->IconTPoly.x[2] = x; - ptrBlockData->IconTPoly.x[3] = ptrBlockData->IconTPoly.x[1]; - - ptrBlockData->IconTPoly.y[0] = y; -80025ddc: a4860210 sh a2,528(a0) - ptrBlockData->IconTPoly.y[1] = ptrBlockData->IconTPoly.y[0]; -80025de0: a4860212 sh a2,530(a0) - ptrBlockData->IconTPoly.y[2] = y + MEMCARD_BLOCK_IMAGE_H; -80025de4: 24c60010 addiu a2,a2,16 - { - return; - } - - ptrBlockData->IconTPoly.x[0] = x; - ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W; -80025de8: 00021403 sra v0,v0,0x10 - ptrBlockData->IconTPoly.x[2] = x; - ptrBlockData->IconTPoly.x[3] = ptrBlockData->IconTPoly.x[1]; - - ptrBlockData->IconTPoly.y[0] = y; - ptrBlockData->IconTPoly.y[1] = ptrBlockData->IconTPoly.y[0]; - ptrBlockData->IconTPoly.y[2] = y + MEMCARD_BLOCK_IMAGE_H; -80025dec: 00063400 sll a2,a2,0x10 -80025df0: 00063403 sra a2,a2,0x10 - { - return; - } - - ptrBlockData->IconTPoly.x[0] = x; - ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W; -80025df4: a482020a sh v0,522(a0) - ptrBlockData->IconTPoly.x[2] = x; - ptrBlockData->IconTPoly.x[3] = ptrBlockData->IconTPoly.x[1]; -80025df8: a482020e sh v0,526(a0) - orig_u[i] = ptrBlockData->IconTPoly.u[i]; - } - - orig_clut_x = ptrBlockData->IconTPoly.cx; - - if(ptrBlockData->IconNumber >= IconIndex) -80025dfc: 3c028007 lui v0,0x8007 - ptrBlockData->IconTPoly.x[2] = x; - ptrBlockData->IconTPoly.x[3] = ptrBlockData->IconTPoly.x[1]; - - ptrBlockData->IconTPoly.y[0] = y; - ptrBlockData->IconTPoly.y[1] = ptrBlockData->IconTPoly.y[0]; - ptrBlockData->IconTPoly.y[2] = y + MEMCARD_BLOCK_IMAGE_H; -80025e00: a4860214 sh a2,532(a0) - ptrBlockData->IconTPoly.y[3] = ptrBlockData->IconTPoly.y[2]; -80025e04: a4860216 sh a2,534(a0) - orig_u[i] = ptrBlockData->IconTPoly.u[i]; - } - - orig_clut_x = ptrBlockData->IconTPoly.cx; - - if(ptrBlockData->IconNumber >= IconIndex) -80025e08: 90461c54 lbu a2,7252(v0) -80025e0c: 90820008 lbu v0,8(a0) - if(ptrBlockData->BlockCount == EMPTY_BLOCK) - { - return; - } - - ptrBlockData->IconTPoly.x[0] = x; -80025e10: a4850208 sh a1,520(a0) - orig_u[i] = ptrBlockData->IconTPoly.u[i]; - } - - orig_clut_x = ptrBlockData->IconTPoly.cx; - - if(ptrBlockData->IconNumber >= IconIndex) -80025e14: 0046102b sltu v0,v0,a2 - return; - } - - ptrBlockData->IconTPoly.x[0] = x; - ptrBlockData->IconTPoly.x[1] = x + MEMCARD_BLOCK_IMAGE_W; - ptrBlockData->IconTPoly.x[2] = x; -80025e18: a485020c sh a1,524(a0) - ptrBlockData->IconTPoly.y[2] = y + MEMCARD_BLOCK_IMAGE_H; - ptrBlockData->IconTPoly.y[3] = ptrBlockData->IconTPoly.y[2]; - - for(i = 0; i < 4; i++) - { - orig_u[i] = ptrBlockData->IconTPoly.u[i]; -80025e1c: 90920221 lbu s2,545(a0) -80025e20: 90950222 lbu s5,546(a0) -80025e24: 90940223 lbu s4,547(a0) -80025e28: 90930224 lbu s3,548(a0) - } - - orig_clut_x = ptrBlockData->IconTPoly.cx; -80025e2c: 8491021c lh s1,540(a0) - - if(ptrBlockData->IconNumber >= IconIndex) -80025e30: 1440000d bnez v0,80025e68 -80025e34: 3c028004 lui v0,0x8004 - { - ptrBlockData->IconTPoly.u[0] += MEMCARD_BLOCK_IMAGE_W * IconIndex; -80025e38: 00061900 sll v1,a2,0x4 -80025e3c: 02431021 addu v0,s2,v1 -80025e40: 304200ff andi v0,v0,0xff - ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + MEMCARD_BLOCK_IMAGE_W; -80025e44: 24450010 addiu a1,v0,16 -80025e48: 30a500ff andi a1,a1,0xff - ptrBlockData->IconTPoly.u[2] = ptrBlockData->IconTPoly.u[0]; - ptrBlockData->IconTPoly.u[3] = ptrBlockData->IconTPoly.u[1]; - - ptrBlockData->IconTPoly.cx += IconIndex * MEMCARD_BLOCK_CLUT_W; -80025e4c: 00711821 addu v1,v1,s1 - - orig_clut_x = ptrBlockData->IconTPoly.cx; - - if(ptrBlockData->IconNumber >= IconIndex) - { - ptrBlockData->IconTPoly.u[0] += MEMCARD_BLOCK_IMAGE_W * IconIndex; -80025e50: a0820221 sb v0,545(a0) - ptrBlockData->IconTPoly.u[1] = ptrBlockData->IconTPoly.u[0] + MEMCARD_BLOCK_IMAGE_W; -80025e54: a0850222 sb a1,546(a0) - ptrBlockData->IconTPoly.u[2] = ptrBlockData->IconTPoly.u[0]; -80025e58: a0820223 sb v0,547(a0) - ptrBlockData->IconTPoly.u[3] = ptrBlockData->IconTPoly.u[1]; -80025e5c: a0850224 sb a1,548(a0) - - ptrBlockData->IconTPoly.cx += IconIndex * MEMCARD_BLOCK_CLUT_W; -80025e60: a483021c sh v1,540(a0) - } - - if(first_access == true) -80025e64: 3c028004 lui v0,0x8004 -80025e68: 904314e8 lbu v1,5352(v0) -80025e6c: 00000000 nop -80025e70: 10600038 beqz v1,80025f54 -80025e74: 00808021 move s0,a0 - { - if(IconIndex == 0) -80025e78: 14c00036 bnez a2,80025f54 -80025e7c: 3c048004 lui a0,0x8004 - { - first_access = false; - - dprintf("Icon index: %d\n",IconIndex); -80025e80: 00002821 move a1,zero -80025e84: 24840d18 addiu a0,a0,3352 -80025e88: 0c00ed8f jal 8003b63c -80025e8c: a04014e8 sb zero,5352(v0) - - dprintf("\tU = {%d,%d,%d,%d}\n", -80025e90: 92020224 lbu v0,548(s0) -80025e94: 92070223 lbu a3,547(s0) -80025e98: 92060222 lbu a2,546(s0) -80025e9c: 92050221 lbu a1,545(s0) -80025ea0: 3c048004 lui a0,0x8004 -80025ea4: 24840d28 addiu a0,a0,3368 -80025ea8: 0c00ed8f jal 8003b63c -80025eac: afa20010 sw v0,16(sp) - ptrBlockData->IconTPoly.u[1], - ptrBlockData->IconTPoly.u[2], - ptrBlockData->IconTPoly.u[3]); - - - dprintf("\tV = {%d,%d,%d,%d}\n", -80025eb0: 92020228 lbu v0,552(s0) -80025eb4: 92070227 lbu a3,551(s0) -80025eb8: 92060226 lbu a2,550(s0) -80025ebc: 92050225 lbu a1,549(s0) -80025ec0: 3c048004 lui a0,0x8004 -80025ec4: 24840d3c addiu a0,a0,3388 -80025ec8: 0c00ed8f jal 8003b63c -80025ecc: afa20010 sw v0,16(sp) - ptrBlockData->IconTPoly.v[0], - ptrBlockData->IconTPoly.v[1], - ptrBlockData->IconTPoly.v[2], - ptrBlockData->IconTPoly.v[3]); - - dprintf("\tBlock number: %d\n",ptrBlockData->Block); -80025ed0: 8e050004 lw a1,4(s0) -80025ed4: 3c048004 lui a0,0x8004 -80025ed8: 0c00ed8f jal 8003b63c -80025edc: 24840d50 addiu a0,a0,3408 - - dprintf("\tBlock count: %d\n",ptrBlockData->BlockCount); -80025ee0: 8e050020 lw a1,32(s0) -80025ee4: 3c048004 lui a0,0x8004 -80025ee8: 0c00ed8f jal 8003b63c -80025eec: 24840d64 addiu a0,a0,3428 - - dprintf("\tX = {%d,%d,%d,%d}\n", -80025ef0: 8602020e lh v0,526(s0) -80025ef4: 8607020c lh a3,524(s0) -80025ef8: 8606020a lh a2,522(s0) -80025efc: 86050208 lh a1,520(s0) -80025f00: 3c048004 lui a0,0x8004 -80025f04: 24840d78 addiu a0,a0,3448 -80025f08: 0c00ed8f jal 8003b63c -80025f0c: afa20010 sw v0,16(sp) - ptrBlockData->IconTPoly.x[0], - ptrBlockData->IconTPoly.x[1], - ptrBlockData->IconTPoly.x[2], - ptrBlockData->IconTPoly.x[3]); - - dprintf("\tY = {%d,%d,%d,%d}\n", -80025f10: 86020216 lh v0,534(s0) -80025f14: 86060212 lh a2,530(s0) -80025f18: 86070214 lh a3,532(s0) -80025f1c: 86050210 lh a1,528(s0) -80025f20: 3c048004 lui a0,0x8004 -80025f24: 24840d8c addiu a0,a0,3468 -80025f28: 0c00ed8f jal 8003b63c -80025f2c: afa20010 sw v0,16(sp) - ptrBlockData->IconTPoly.y[0], - ptrBlockData->IconTPoly.y[1], - ptrBlockData->IconTPoly.y[2], - ptrBlockData->IconTPoly.y[3]); - - dprintf("\tTPAGE = %d\n", ptrBlockData->IconTPoly.tpage); -80025f30: 92050220 lbu a1,544(s0) -80025f34: 3c048004 lui a0,0x8004 -80025f38: 0c00ed8f jal 8003b63c -80025f3c: 24840ad8 addiu a0,a0,2776 - dprintf("\tCLUT = {%d, %d}\n", -80025f40: 3c048004 lui a0,0x8004 -80025f44: 8606021e lh a2,542(s0) -80025f48: 8605021c lh a1,540(s0) -80025f4c: 0c00ed8f jal 8003b63c -80025f50: 24840da0 addiu a0,a0,3488 - ptrBlockData->IconTPoly.cx, - ptrBlockData->IconTPoly.cy); - } - } - - GsSortTPoly4(&ptrBlockData->IconTPoly); -80025f54: 0c00b7fe jal 8002dff8 -80025f58: 26040208 addiu a0,s0,520 - - for(i = 0; i < 4; i++) - { - ptrBlockData->IconTPoly.u[i] = orig_u[i]; // Restore data -80025f5c: a2120221 sb s2,545(s0) -80025f60: a2150222 sb s5,546(s0) -80025f64: a2140223 sb s4,547(s0) -80025f68: a2130224 sb s3,548(s0) - } - - ptrBlockData->IconTPoly.cx = orig_clut_x; -80025f6c: a611021c sh s1,540(s0) -} -80025f70: 8fbf0034 lw ra,52(sp) -80025f74: 8fb50030 lw s5,48(sp) -80025f78: 8fb4002c lw s4,44(sp) -80025f7c: 8fb30028 lw s3,40(sp) -80025f80: 8fb20024 lw s2,36(sp) -80025f84: 8fb10020 lw s1,32(sp) -80025f88: 8fb0001c lw s0,28(sp) -80025f8c: 27bd0038 addiu sp,sp,56 -80025f90: 03e00008 jr ra -80025f94: 00000000 nop - -80025f98 : - -TYPE_BLOCK_DATA * MemCardShowMap(void) -{ -80025f98: 27bdffe8 addiu sp,sp,-24 -80025f9c: afbf0014 sw ra,20(sp) - unsigned char orig_r; - unsigned char orig_g; - unsigned char orig_b; - GsRectangle MemCardMapDialog; - - if(MemCardGetAllData() == false) -80025fa0: 0c00972f jal 80025cbc -80025fa4: 00000000 nop - -80025fa8 : - uint32_t sz; - int sector = (ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT) + DATA_FRAME; - - // Always check whether current block is empty or not - - if(ptrBlockData->BlockCount != EMPTY_BLOCK) -80025fa8: 8c820020 lw v0,32(a0) - - return NULL; -} - -bool MemCardSaveData(TYPE_BLOCK_DATA * ptrBlockData) -{ -80025fac: 27bdffd8 addiu sp,sp,-40 -80025fb0: afbf0024 sw ra,36(sp) -80025fb4: afb30020 sw s3,32(sp) -80025fb8: afb2001c sw s2,28(sp) -80025fbc: afb10018 sw s1,24(sp) - uint32_t sz; - int sector = (ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT) + DATA_FRAME; - - // Always check whether current block is empty or not - - if(ptrBlockData->BlockCount != EMPTY_BLOCK) -80025fc0: 1040000d beqz v0,80025ff8 -80025fc4: afb00014 sw s0,20(sp) - { - if(strncmp((char*)ptrBlockData->FileName, MEMCARD_GAME_FILENAME, MEMCARD_FILENAME_SIZE) != 0) -80025fc8: 3c058004 lui a1,0x8004 -80025fcc: 00808821 move s1,a0 - -bool MemCardSaveData(TYPE_BLOCK_DATA * ptrBlockData) -{ - uint32_t i; - uint32_t sz; - int sector = (ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT) + DATA_FRAME; -80025fd0: 8c920004 lw s2,4(a0) - - // Always check whether current block is empty or not - - if(ptrBlockData->BlockCount != EMPTY_BLOCK) - { - if(strncmp((char*)ptrBlockData->FileName, MEMCARD_GAME_FILENAME, MEMCARD_FILENAME_SIZE) != 0) -80025fd4: 24060015 li a2,21 -80025fd8: 24a50db4 addiu a1,a1,3508 -80025fdc: 0c00d9dd jal 80036774 -80025fe0: 24840009 addiu a0,a0,9 -80025fe4: 1040000a beqz v0,80026010 -80025fe8: 00129180 sll s2,s2,0x6 - { - // Only our own blocks can be overwritten. NEVER overwrite other game blocks! - dprintf("I cannot erase blocks from other games!\n"); -80025fec: 3c048004 lui a0,0x8004 -80025ff0: 10000003 b 80026000 -80025ff4: 24840dc8 addiu a0,a0,3528 - return false; - } - } - else if(ptrBlockData->BlockCount != FIRST_OR_ONLY_BLOCK) - { - dprintf("Please select first block of block array.\n"); -80025ff8: 3c048004 lui a0,0x8004 -80025ffc: 24840df4 addiu a0,a0,3572 -80026000: 0c00ed8f jal 8003b63c -80026004: 00000000 nop - return false; -80026008: 1000000d b 80026040 -8002600c: 00001021 move v0,zero - -bool MemCardSaveData(TYPE_BLOCK_DATA * ptrBlockData) -{ - uint32_t i; - uint32_t sz; - int sector = (ptrBlockData->Block << MEMCARD_SECTORS_PER_BLOCK_BITSHIFT) + DATA_FRAME; -80026010: 26520004 addiu s2,s2,4 -80026014: 00008021 move s0,zero - - // After all these checks, now we can save data! - - sz = MEMCARD_FIRST_OR_LAST_DATA_SIZE; - - for(i = 0; i < sz; i++) -80026018: 24131e00 li s3,7680 - { - McWriteSector(ptrBlockData->Slot, sector + i, &ptrBlockData->Data[i << 7 /* 128 */]); -8002601c: 8e260204 lw a2,516(s1) -80026020: 001011c0 sll v0,s0,0x7 -80026024: 8e240000 lw a0,0(s1) -80026028: 02502821 addu a1,s2,s0 -8002602c: 00c23021 addu a2,a2,v0 -80026030: 0c00caf7 jal 80032bdc -80026034: 26100001 addiu s0,s0,1 - - // After all these checks, now we can save data! - - sz = MEMCARD_FIRST_OR_LAST_DATA_SIZE; - - for(i = 0; i < sz; i++) -80026038: 1613fff8 bne s0,s3,8002601c -8002603c: 24020001 li v0,1 - { - McWriteSector(ptrBlockData->Slot, sector + i, &ptrBlockData->Data[i << 7 /* 128 */]); - } - - return true; -} -80026040: 8fbf0024 lw ra,36(sp) -80026044: 8fb30020 lw s3,32(sp) -80026048: 8fb2001c lw s2,28(sp) -8002604c: 8fb10018 lw s1,24(sp) -80026050: 8fb00014 lw s0,20(sp) -80026054: 03e00008 jr ra -80026058: 27bd0028 addiu sp,sp,40 - -8002605c : -static MainMenuLevel menuLevel; -static MMBtn_Index MainMenuMinimumBtn; - -void PlayMenu(void) -{ - menuLevel = ONE_TWO_PLAYERS_LEVEL; -8002605c: 24030001 li v1,1 -80026060: 3c028007 lui v0,0x8007 -80026064: ac431c60 sw v1,7264(v0) - MainMenuMinimumBtn = ONE_PLAYER_BUTTON_INDEX; -80026068: 24040002 li a0,2 -8002606c: 3c028007 lui v0,0x8007 -80026070: ac441c5c sw a0,7260(v0) - - MainMenuBtn[PLAY_BUTTON_INDEX].selected = false; -80026074: 3c028004 lui v0,0x8004 -80026078: 24425ea0 addiu v0,v0,24224 -8002607c: a0400012 sb zero,18(v0) - MainMenuBtn[PLAY_BUTTON_INDEX].was_selected = false; -80026080: a0400013 sb zero,19(v0) - MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0; -80026084: a4400008 sh zero,8(v0) - - MainMenuBtn[OPTIONS_BUTTON_INDEX].selected = false; -80026088: a0400026 sb zero,38(v0) - MainMenuBtn[OPTIONS_BUTTON_INDEX].was_selected = false; -8002608c: a0400027 sb zero,39(v0) - MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0; -80026090: a440001c sh zero,28(v0) - - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].selected = true; -80026094: a043003a sb v1,58(v0) - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].was_selected = false; -80026098: a040003b sb zero,59(v0) - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0; -8002609c: a4400030 sh zero,48(v0) - - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].selected = false; -800260a0: a040004e sb zero,78(v0) - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].was_selected = false; -800260a4: a040004f sb zero,79(v0) - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0; -800260a8: 03e00008 jr ra -800260ac: a4400044 sh zero,68(v0) - -800260b0 : - } - -} - -void MenuTestCheat(void) -{ -800260b0: 27bdffe8 addiu sp,sp,-24 -800260b4: afbf0014 sw ra,20(sp) - if(MemCardShowMap() == false) -800260b8: 0c0097e6 jal 80025f98 -800260bc: 00000000 nop -800260c0: 14400005 bnez v0,800260d8 -800260c4: 3c048004 lui a0,0x8004 - { - dprintf("MemCardShowMap() failed!\n"); - return; - } -} -800260c8: 8fbf0014 lw ra,20(sp) - -void MenuTestCheat(void) -{ - if(MemCardShowMap() == false) - { - dprintf("MemCardShowMap() failed!\n"); -800260cc: 24840e20 addiu a0,a0,3616 -800260d0: 0800ed8f j 8003b63c -800260d4: 27bd0018 addiu sp,sp,24 - return; - } -} -800260d8: 8fbf0014 lw ra,20(sp) -800260dc: 00000000 nop -800260e0: 03e00008 jr ra -800260e4: 27bd0018 addiu sp,sp,24 - -800260e8 : - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0; -} - -void OptionsMenu(void) -{ - dprintf("OptionsMenu(void)!\n"); -800260e8: 3c048004 lui a0,0x8004 -800260ec: 0800ed8f j 8003b63c -800260f0: 24840e3c addiu a0,a0,3644 - -800260f4 : - EndAnimation(); - Game(false /* One Player Only */); -} - -void TwoPlayerMenu(void) -{ -800260f4: 27bdffe8 addiu sp,sp,-24 -800260f8: afbf0014 sw ra,20(sp) - EndAnimation(); -800260fc: 0c00835d jal 80020d74 -80026100: 00000000 nop - Game(true /* Two players */); -} -80026104: 8fbf0014 lw ra,20(sp) -} - -void TwoPlayerMenu(void) -{ - EndAnimation(); - Game(true /* Two players */); -80026108: 24040001 li a0,1 -8002610c: 080086c4 j 80021b10 -80026110: 27bd0018 addiu sp,sp,24 - -80026114 : -{ - dprintf("OptionsMenu(void)!\n"); -} - -void OnePlayerMenu(void) -{ -80026114: 27bdffe8 addiu sp,sp,-24 -80026118: afbf0014 sw ra,20(sp) - EndAnimation(); -8002611c: 0c00835d jal 80020d74 -80026120: 00000000 nop - Game(false /* One Player Only */); -} -80026124: 8fbf0014 lw ra,20(sp) -} - -void OnePlayerMenu(void) -{ - EndAnimation(); - Game(false /* One Player Only */); -80026128: 00002021 move a0,zero -8002612c: 080086c4 j 80021b10 -80026130: 27bd0018 addiu sp,sp,24 - -80026134 : - -} - -void MainMenuDrawButton(TYPE_MMBtn * btn) -{ - MenuSpr.w = BUTTON_SIZE; -80026134: 3c028004 lui v0,0x8004 -80026138: 24425f88 addiu v0,v0,24456 -8002613c: 24030040 li v1,64 -80026140: a4430006 sh v1,6(v0) - MenuSpr.h = BUTTON_SIZE; -80026144: a4430008 sh v1,8(v0) - - if(btn->timer < MAIN_MENU_BTN_ANI_SIZE) -80026148: 84830008 lh v1,8(a0) - - -} - -void MainMenuDrawButton(TYPE_MMBtn * btn) -{ -8002614c: 00802821 move a1,a0 - MenuSpr.w = BUTTON_SIZE; - MenuSpr.h = BUTTON_SIZE; - - if(btn->timer < MAIN_MENU_BTN_ANI_SIZE) -80026150: 28660035 slti a2,v1,53 -80026154: 10c00003 beqz a2,80026164 -80026158: 00402021 move a0,v0 - { - btn->timer++; -8002615c: 24630001 addiu v1,v1,1 -80026160: a4a30008 sh v1,8(a1) - } - - if(btn->selected == true) -80026164: 90a20012 lbu v0,18(a1) -80026168: 00000000 nop -8002616c: 10400007 beqz v0,8002618c -80026170: 2402ff80 li v0,-128 - { - if(btn->was_selected == false) -80026174: 90a20013 lbu v0,19(a1) -80026178: 00000000 nop -8002617c: 14400002 bnez v0,80026188 -80026180: 00000000 nop - { - btn->timer = 0; -80026184: a4a00008 sh zero,8(a1) -80026188: 2402ffc0 li v0,-64 - MenuSpr.g = SELECTED_BUTTON_LUMINANCE; - MenuSpr.b = SELECTED_BUTTON_LUMINANCE; - } - else - { - MenuSpr.r = NORMAL_LUMINANCE; -8002618c: a082000e sb v0,14(a0) - MenuSpr.g = NORMAL_LUMINANCE; -80026190: a082000f sb v0,15(a0) - MenuSpr.b = NORMAL_LUMINANCE; -80026194: a0820010 sb v0,16(a0) - } - - MenuSpr.u = DEFAULT_BUTTON_U_OFFSET; - MenuSpr.v = DEFAULT_BUTTON_V_OFFSET; -80026198: 2402ff80 li v0,-128 - MenuSpr.r = NORMAL_LUMINANCE; - MenuSpr.g = NORMAL_LUMINANCE; - MenuSpr.b = NORMAL_LUMINANCE; - } - - MenuSpr.u = DEFAULT_BUTTON_U_OFFSET; -8002619c: a0800004 sb zero,4(a0) - MenuSpr.v = DEFAULT_BUTTON_V_OFFSET; -800261a0: a0820005 sb v0,5(a0) - - switch(btn->i) -800261a4: 88a20011 lwl v0,17(a1) -800261a8: 24060001 li a2,1 -800261ac: 98a2000e lwr v0,14(a1) -800261b0: 00000000 nop -800261b4: 10460016 beq v0,a2,80026210 -800261b8: 3c038004 lui v1,0x8004 -800261bc: 10400007 beqz v0,800261dc -800261c0: 24060002 li a2,2 -800261c4: 10460005 beq v0,a2,800261dc -800261c8: 24060003 li a2,3 -800261cc: 10460011 beq v0,a2,80026214 -800261d0: 240200e1 li v0,225 -800261d4: 03e00008 jr ra -800261d8: 00000000 nop - - GsSortSprite(&MenuSpr); - break; - - case ONE_PLAYER_BUTTON_INDEX: - MenuSpr.x = MAIN_MENU_ONE_PLAYER_BUTTON_X; -800261dc: 2406005c li a2,92 -800261e0: a4665f88 sh a2,24456(v1) - MenuSpr.y = MAIN_MENU_ONE_PLAYER_BUTTON_Y - MainMenuBtnAni[btn->timer]; -800261e4: 84a20008 lh v0,8(a1) -800261e8: 00000000 nop -800261ec: 00021840 sll v1,v0,0x1 -800261f0: 3c028004 lui v0,0x8004 -800261f4: 2442147c addiu v0,v0,5244 -800261f8: 00621021 addu v0,v1,v0 -800261fc: 94420000 lhu v0,0(v0) -80026200: 00000000 nop -80026204: 00c23023 subu a2,a2,v0 -80026208: 1000000d b 80026240 -8002620c: a4860002 sh a2,2(a0) - - GsSortSprite(&MenuSpr); - break; - - case TWO_PLAYER_BUTTON_INDEX: - MenuSpr.x = MAIN_MENU_TWO_PLAYER_BUTTON_X; -80026210: 240200e1 li v0,225 -80026214: a4625f88 sh v0,24456(v1) - MenuSpr.y = MAIN_MENU_TWO_PLAYER_BUTTON_Y - MainMenuBtnAni[btn->timer]; -80026218: 84a20008 lh v0,8(a1) -8002621c: 00000000 nop -80026220: 00021840 sll v1,v0,0x1 -80026224: 3c028004 lui v0,0x8004 -80026228: 2442147c addiu v0,v0,5244 -8002622c: 00621021 addu v0,v1,v0 -80026230: 94430000 lhu v1,0(v0) -80026234: 2402005c li v0,92 -80026238: 00431023 subu v0,v0,v1 -8002623c: a4820002 sh v0,2(a0) - MenuSpr.u += btn->offset_u; -80026240: 8ca20000 lw v0,0(a1) -80026244: 00000000 nop -80026248: a0820004 sb v0,4(a0) - MenuSpr.v += btn->offset_v; -8002624c: 8ca20004 lw v0,4(a1) -80026250: 00000000 nop -80026254: 2442ff80 addiu v0,v0,-128 - - GsSortSprite(&MenuSpr); -80026258: 0800b356 j 8002cd58 -8002625c: a0820005 sb v0,5(a0) - -80026260 : -} - - -void MainMenuInit(void) -{ - LoadMenu( MainMenuFiles,MainMenuDest, -80026260: 3c058004 lui a1,0x8004 -80026264: 3c048004 lui a0,0x8004 - Game(true /* Two players */); -} - - -void MainMenuInit(void) -{ -80026268: 27bdffa8 addiu sp,sp,-88 - LoadMenu( MainMenuFiles,MainMenuDest, -8002626c: 2407000a li a3,10 -80026270: 2406000a li a2,10 -80026274: 24a514ec addiu a1,a1,5356 -80026278: 24841514 addiu a0,a0,5396 - Game(true /* Two players */); -} - - -void MainMenuInit(void) -{ -8002627c: afbf0054 sw ra,84(sp) - LoadMenu( MainMenuFiles,MainMenuDest, -80026280: 0c0093c1 jal 80024f04 -80026284: afb00050 sw s0,80(sp) - sizeof(MainMenuFiles) / sizeof(char*) , - sizeof(MainMenuDest) / sizeof(void*) ); - - MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET; -80026288: 3c028004 lui v0,0x8004 - MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET; - MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0; - MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu; -8002628c: 3c048002 lui a0,0x8002 - LoadMenu( MainMenuFiles,MainMenuDest, - sizeof(MainMenuFiles) / sizeof(char*) , - sizeof(MainMenuDest) / sizeof(void*) ); - - MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET; - MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET; -80026290: 24030040 li v1,64 - MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0; - MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu; -80026294: 2484605c addiu a0,a0,24668 -{ - LoadMenu( MainMenuFiles,MainMenuDest, - sizeof(MainMenuFiles) / sizeof(char*) , - sizeof(MainMenuDest) / sizeof(void*) ); - - MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET; -80026298: ac405ea0 sw zero,24224(v0) - MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET; -8002629c: 24425ea0 addiu v0,v0,24224 -800262a0: ac430004 sw v1,4(v0) - MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0; -800262a4: a4400008 sh zero,8(v0) - MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu; -800262a8: a844000d swl a0,13(v0) -800262ac: b844000a swr a0,10(v0) - MainMenuBtn[PLAY_BUTTON_INDEX].i = PLAY_BUTTON_INDEX; -800262b0: a8400011 swl zero,17(v0) - - MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_u = OPTIONS_BUTTON_U_OFFSET; - MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_v = OPTIONS_BUTTON_Y_OFFSET; - MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0; - MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu; -800262b4: 3c048002 lui a0,0x8002 - - MainMenuBtn[PLAY_BUTTON_INDEX].offset_u = PLAY_BUTTON_U_OFFSET; - MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET; - MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0; - MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu; - MainMenuBtn[PLAY_BUTTON_INDEX].i = PLAY_BUTTON_INDEX; -800262b8: b840000e swr zero,14(v0) - - MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_u = OPTIONS_BUTTON_U_OFFSET; - MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_v = OPTIONS_BUTTON_Y_OFFSET; - MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0; - MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu; -800262bc: 248460e8 addiu a0,a0,24808 - MainMenuBtn[PLAY_BUTTON_INDEX].offset_v = PLAY_BUTTON_Y_OFFSET; - MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0; - MainMenuBtn[PLAY_BUTTON_INDEX].f = &PlayMenu; - MainMenuBtn[PLAY_BUTTON_INDEX].i = PLAY_BUTTON_INDEX; - - MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_u = OPTIONS_BUTTON_U_OFFSET; -800262c0: ac430014 sw v1,20(v0) - MainMenuBtn[OPTIONS_BUTTON_INDEX].offset_v = OPTIONS_BUTTON_Y_OFFSET; -800262c4: ac430018 sw v1,24(v0) - MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0; -800262c8: a440001c sh zero,28(v0) - MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu; -800262cc: a8440021 swl a0,33(v0) -800262d0: b844001e swr a0,30(v0) - MainMenuBtn[OPTIONS_BUTTON_INDEX].i = OPTIONS_BUTTON_INDEX; -800262d4: 24040001 li a0,1 -800262d8: a8440025 swl a0,37(v0) -800262dc: b8440022 swr a0,34(v0) - - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_u = ONE_PLAYER_BUTTON_U_OFFSET; -800262e0: 24040080 li a0,128 -800262e4: ac440028 sw a0,40(v0) - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_v = ONE_PLAYER_BUTTON_Y_OFFSET; - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0; - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].f = &OnePlayerMenu; -800262e8: 3c048002 lui a0,0x8002 -800262ec: 24846114 addiu a0,a0,24852 - MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0; - MainMenuBtn[OPTIONS_BUTTON_INDEX].f = &OptionsMenu; - MainMenuBtn[OPTIONS_BUTTON_INDEX].i = OPTIONS_BUTTON_INDEX; - - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_u = ONE_PLAYER_BUTTON_U_OFFSET; - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_v = ONE_PLAYER_BUTTON_Y_OFFSET; -800262f0: ac43002c sw v1,44(v0) - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0; -800262f4: a4400030 sh zero,48(v0) - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].f = &OnePlayerMenu; -800262f8: a8440035 swl a0,53(v0) -800262fc: b8440032 swr a0,50(v0) - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].i = ONE_PLAYER_BUTTON_INDEX; -80026300: 24040002 li a0,2 -80026304: a8440039 swl a0,57(v0) -80026308: b8440036 swr a0,54(v0) - - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_u = TWO_PLAYER_BUTTON_U_OFFSET; - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_v = TWO_PLAYER_BUTTON_Y_OFFSET; -8002630c: ac430040 sw v1,64(v0) - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0; - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu; -80026310: 3c038002 lui v1,0x8002 -80026314: 246360f4 addiu v1,v1,24820 - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].offset_v = ONE_PLAYER_BUTTON_Y_OFFSET; - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0; - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].f = &OnePlayerMenu; - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].i = ONE_PLAYER_BUTTON_INDEX; - - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_u = TWO_PLAYER_BUTTON_U_OFFSET; -80026318: 240400c0 li a0,192 -8002631c: ac44003c sw a0,60(v0) - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].offset_v = TWO_PLAYER_BUTTON_Y_OFFSET; - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0; -80026320: a4400044 sh zero,68(v0) - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu; -80026324: a8430049 swl v1,73(v0) -80026328: b8430046 swr v1,70(v0) - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].i = TWO_PLAYER_BUTTON_INDEX; -8002632c: 24030003 li v1,3 -80026330: a843004d swl v1,77(v0) -80026334: b843004a swr v1,74(v0) - - menuLevel = PLAY_OPTIONS_LEVEL; -80026338: 3c028007 lui v0,0x8007 -8002633c: ac401c60 sw zero,7264(v0) - - MainMenuMinimumBtn = PLAY_BUTTON_INDEX; - - TestCheat.Callback = &MenuTestCheat; -80026340: 3c108004 lui s0,0x8004 - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu; - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].i = TWO_PLAYER_BUTTON_INDEX; - - menuLevel = PLAY_OPTIONS_LEVEL; - - MainMenuMinimumBtn = PLAY_BUTTON_INDEX; -80026344: 3c028007 lui v0,0x8007 - - TestCheat.Callback = &MenuTestCheat; -80026348: 26105f14 addiu s0,s0,24340 - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].f = &TwoPlayerMenu; - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].i = TWO_PLAYER_BUTTON_INDEX; - - menuLevel = PLAY_OPTIONS_LEVEL; - - MainMenuMinimumBtn = PLAY_BUTTON_INDEX; -8002634c: ac401c5c sw zero,7260(v0) - - TestCheat.Callback = &MenuTestCheat; -80026350: 3c028002 lui v0,0x8002 - memset(TestCheat.Combination,0,CHEAT_ARRAY_SIZE); -80026354: 02002021 move a0,s0 - - menuLevel = PLAY_OPTIONS_LEVEL; - - MainMenuMinimumBtn = PLAY_BUTTON_INDEX; - - TestCheat.Callback = &MenuTestCheat; -80026358: 244260b0 addiu v0,v0,24752 - memset(TestCheat.Combination,0,CHEAT_ARRAY_SIZE); -8002635c: 24060010 li a2,16 -80026360: 00002821 move a1,zero -80026364: 0c00d7ab jal 80035eac -80026368: ae020020 sw v0,32(s0) - //memcpy(myarray, (int [5]){a,b,c,d,e}, 5*sizeof(int)); - - memcpy( TestCheat.Combination, - (unsigned short[CHEAT_ARRAY_SIZE]) - { PAD_CIRCLE, PAD_CIRCLE, PAD_CROSS, PAD_TRIANGLE, -8002636c: 3c058004 lui a1,0x8004 -80026370: 27a40030 addiu a0,sp,48 -80026374: 24060020 li a2,32 -80026378: 0c00d75e jal 80035d78 -8002637c: 24a5f7ac addiu a1,a1,-2132 - - TestCheat.Callback = &MenuTestCheat; - memset(TestCheat.Combination,0,CHEAT_ARRAY_SIZE); - //memcpy(myarray, (int [5]){a,b,c,d,e}, 5*sizeof(int)); - - memcpy( TestCheat.Combination, -80026380: 27a50030 addiu a1,sp,48 -80026384: 24060020 li a2,32 -80026388: 0c00d75e jal 80035d78 -8002638c: 02002021 move a0,s0 - { PAD_CIRCLE, PAD_CIRCLE, PAD_CROSS, PAD_TRIANGLE, - PAD_TRIANGLE, PAD_TRIANGLE, 0 , 0 , - 0, 0, 0, 0, - 0, 0, 0, 0 } , sizeof(unsigned short) * CHEAT_ARRAY_SIZE); - - PadAddCheat(&TestCheat); -80026390: 02002021 move a0,s0 -80026394: 0c009ba4 jal 80026e90 -80026398: 3c108004 lui s0,0x8004 - - StackCheckCheat.Callback = &SystemPrintStackPointerAddress; -8002639c: 26105ef0 addiu s0,s0,24304 -800263a0: 3c028003 lui v0,0x8003 - memset(StackCheckCheat.Combination, 0, CHEAT_ARRAY_SIZE); -800263a4: 02002021 move a0,s0 - 0, 0, 0, 0, - 0, 0, 0, 0 } , sizeof(unsigned short) * CHEAT_ARRAY_SIZE); - - PadAddCheat(&TestCheat); - - StackCheckCheat.Callback = &SystemPrintStackPointerAddress; -800263a8: 24428490 addiu v0,v0,-31600 - memset(StackCheckCheat.Combination, 0, CHEAT_ARRAY_SIZE); -800263ac: 24060010 li a2,16 -800263b0: 00002821 move a1,zero -800263b4: 0c00d7ab jal 80035eac -800263b8: ae020020 sw v0,32(s0) - - memcpy( StackCheckCheat.Combination, - (unsigned short[CHEAT_ARRAY_SIZE]) - { PAD_TRIANGLE, PAD_TRIANGLE, PAD_CROSS, PAD_TRIANGLE, -800263bc: 3c058004 lui a1,0x8004 -800263c0: 27a40010 addiu a0,sp,16 -800263c4: 24060020 li a2,32 -800263c8: 0c00d75e jal 80035d78 -800263cc: 24a5f7cc addiu a1,a1,-2100 - PadAddCheat(&TestCheat); - - StackCheckCheat.Callback = &SystemPrintStackPointerAddress; - memset(StackCheckCheat.Combination, 0, CHEAT_ARRAY_SIZE); - - memcpy( StackCheckCheat.Combination, -800263d0: 27a50010 addiu a1,sp,16 -800263d4: 24060020 li a2,32 -800263d8: 0c00d75e jal 80035d78 -800263dc: 02002021 move a0,s0 - { PAD_TRIANGLE, PAD_TRIANGLE, PAD_CROSS, PAD_TRIANGLE, - PAD_L1, PAD_R1, 0 , 0 , - 0, 0, 0, 0, - 0, 0, 0, 0 } , sizeof(unsigned short) * CHEAT_ARRAY_SIZE); - - PadAddCheat(&StackCheckCheat); -800263e0: 0c009ba4 jal 80026e90 -800263e4: 02002021 move a0,s0 - - LoadMenuEnd(); -800263e8: 0c0093ab jal 80024eac -800263ec: 00000000 nop -} -800263f0: 8fbf0054 lw ra,84(sp) -800263f4: 8fb00050 lw s0,80(sp) -800263f8: 03e00008 jr ra -800263fc: 27bd0058 addiu sp,sp,88 - -80026400 : - -void MainMenu(void) -{ -80026400: 27bdffc8 addiu sp,sp,-56 -80026404: afb3001c sw s3,28(sp) - default: - max_buttons = 0; - break; - } - - MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected; -80026408: 3c138004 lui s3,0x8004 - - LoadMenuEnd(); -} - -void MainMenu(void) -{ -8002640c: afb40020 sw s4,32(sp) - default: - max_buttons = 0; - break; - } - - MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected; -80026410: 26735ea0 addiu s3,s3,24224 - - if( (PadOneKeyReleased(PAD_CROSS) == true) - || - (PadOneKeyReleased(PAD_TRIANGLE) == true) ) - { - SfxPlaySound(&AcceptSnd); -80026414: 3c148004 lui s4,0x8004 - - LoadMenuEnd(); -} - -void MainMenu(void) -{ -80026418: afbf0034 sw ra,52(sp) -8002641c: afb00010 sw s0,16(sp) -80026420: afbe0030 sw s8,48(sp) -80026424: afb7002c sw s7,44(sp) -80026428: afb60028 sw s6,40(sp) -8002642c: afb50024 sw s5,36(sp) -80026430: afb20018 sw s2,24(sp) -80026434: afb10014 sw s1,20(sp) - - MainMenuInit(); -80026438: 0c009898 jal 80026260 -8002643c: 02608021 move s0,s3 - - #ifndef NO_INTRO - PSXSDKIntro(); -80026440: 0c009d2e jal 800274b8 -80026444: 26945f38 addiu s4,s4,24376 -80026448: 3c118007 lui s1,0x8007 -{ - static uint8_t btn_selected = PLAY_BUTTON_INDEX; - static uint8_t previous_btn_selected = 0; - uint8_t max_buttons; - - if(PadOneAnyKeyPressed() == true) -8002644c: 0c009a9a jal 80026a68 -80026450: 00000000 nop -80026454: 10400007 beqz v0,80026474 -80026458: 00000000 nop - { - if(SystemIsRandSeedSet() == false) -8002645c: 0c009f87 jal 80027e1c -80026460: 00000000 nop -80026464: 14400003 bnez v0,80026474 -80026468: 00000000 nop - { - SystemSetRandSeed(); -8002646c: 0c009f6d jal 80027db4 -80026470: 00000000 nop - } - } - - if( (PadOneKeyReleased(PAD_CROSS) == true) -80026474: 0c0099e0 jal 80026780 -80026478: 24040040 li a0,64 -8002647c: 10400005 beqz v0,80026494 -80026480: 00000000 nop - || - (PadOneKeyReleased(PAD_TRIANGLE) == true) ) - { - SfxPlaySound(&AcceptSnd); -80026484: 0c009eeb jal 80027bac -80026488: 02802021 move a0,s4 - } - - switch(menuLevel) -8002648c: 10000006 b 800264a8 -80026490: 3c128007 lui s2,0x8007 - } - } - - if( (PadOneKeyReleased(PAD_CROSS) == true) - || - (PadOneKeyReleased(PAD_TRIANGLE) == true) ) -80026494: 0c0099e0 jal 80026780 -80026498: 24040010 li a0,16 - SystemSetRandSeed(); - } - } - - if( (PadOneKeyReleased(PAD_CROSS) == true) - || -8002649c: 1440fff9 bnez v0,80026484 -800264a0: 00000000 nop - (PadOneKeyReleased(PAD_TRIANGLE) == true) ) - { - SfxPlaySound(&AcceptSnd); - } - - switch(menuLevel) -800264a4: 3c128007 lui s2,0x8007 -800264a8: 8e421c60 lw v0,7264(s2) -800264ac: 3c158007 lui s5,0x8007 -800264b0: 1040000b beqz v0,800264e0 -800264b4: 24160002 li s6,2 -800264b8: 24030001 li v1,1 -800264bc: 14430008 bne v0,v1,800264e0 -800264c0: 0000b021 move s6,zero - max_buttons = MAIN_MENU_PLAY_OPTIONS_LEVEL_BUTTONS; - break; - - case ONE_TWO_PLAYERS_LEVEL: - max_buttons = MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS; - if(PadOneKeyReleased(PAD_TRIANGLE) == true) -800264c4: 0c0099e0 jal 80026780 -800264c8: 24040010 li a0,16 -800264cc: 10400004 beqz v0,800264e0 -800264d0: 24160002 li s6,2 - { - menuLevel = PLAY_OPTIONS_LEVEL; -800264d4: ae401c60 sw zero,7264(s2) - MainMenuMinimumBtn = PLAY_BUTTON_INDEX; -800264d8: aea01c5c sw zero,7260(s5) - btn_selected = PLAY_BUTTON_INDEX; -800264dc: a2201c59 sb zero,7257(s1) - default: - max_buttons = 0; - break; - } - - MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected; -800264e0: 3c178007 lui s7,0x8007 -800264e4: 92e21c58 lbu v0,7256(s7) - MainMenuBtn[btn_selected].was_selected = MainMenuBtn[btn_selected].selected; - - if(PadOneKeyReleased(PAD_LEFT) && (btn_selected > 0) ) -800264e8: 34048000 li a0,0x8000 - default: - max_buttons = 0; - break; - } - - MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected; -800264ec: 00021880 sll v1,v0,0x2 -800264f0: 00021100 sll v0,v0,0x4 -800264f4: 00621021 addu v0,v1,v0 -800264f8: 02621021 addu v0,s3,v0 -800264fc: 90430012 lbu v1,18(v0) -80026500: 02e0f021 move s8,s7 -80026504: a0430013 sb v1,19(v0) - MainMenuBtn[btn_selected].was_selected = MainMenuBtn[btn_selected].selected; -80026508: 92221c59 lbu v0,7257(s1) -8002650c: 00000000 nop -80026510: 00021880 sll v1,v0,0x2 -80026514: 00021100 sll v0,v0,0x4 -80026518: 00621021 addu v0,v1,v0 -8002651c: 02621021 addu v0,s3,v0 -80026520: 90430012 lbu v1,18(v0) - - if(PadOneKeyReleased(PAD_LEFT) && (btn_selected > 0) ) -80026524: 0c0099e0 jal 80026780 -80026528: a0430013 sb v1,19(v0) -8002652c: 1040000c beqz v0,80026560 -80026530: 00000000 nop -80026534: 92221c59 lbu v0,7257(s1) -80026538: 00000000 nop -8002653c: 10400008 beqz v0,80026560 -80026540: 00021880 sll v1,v0,0x2 - { - MainMenuBtn[btn_selected].selected = false; -80026544: 00022100 sll a0,v0,0x4 -80026548: 00641821 addu v1,v1,a0 -8002654c: 02631821 addu v1,s3,v1 - previous_btn_selected = btn_selected; -80026550: a2e21c58 sb v0,7256(s7) - MainMenuBtn[previous_btn_selected].was_selected = MainMenuBtn[previous_btn_selected].selected; - MainMenuBtn[btn_selected].was_selected = MainMenuBtn[btn_selected].selected; - - if(PadOneKeyReleased(PAD_LEFT) && (btn_selected > 0) ) - { - MainMenuBtn[btn_selected].selected = false; -80026554: a0600012 sb zero,18(v1) - previous_btn_selected = btn_selected; - btn_selected--; -80026558: 10000012 b 800265a4 -8002655c: 2442ffff addiu v0,v0,-1 - SfxPlaySound(&BellSnd); - } - else if(PadOneKeyReleased(PAD_RIGHT) -80026560: 0c0099e0 jal 80026780 -80026564: 24042000 li a0,8192 -80026568: 10400012 beqz v0,800265b4 -8002656c: 00000000 nop - && -80026570: 8ea31c5c lw v1,7260(s5) - (btn_selected < (max_buttons - 1 + MainMenuMinimumBtn) ) ) -80026574: 92221c59 lbu v0,7257(s1) - previous_btn_selected = btn_selected; - btn_selected--; - SfxPlaySound(&BellSnd); - } - else if(PadOneKeyReleased(PAD_RIGHT) - && -80026578: 2463ffff addiu v1,v1,-1 -8002657c: 00761821 addu v1,v1,s6 -80026580: 0043182b sltu v1,v0,v1 -80026584: 1060000b beqz v1,800265b4 -80026588: 00021880 sll v1,v0,0x2 - (btn_selected < (max_buttons - 1 + MainMenuMinimumBtn) ) ) - { - MainMenuBtn[btn_selected].selected = false; -8002658c: 00022100 sll a0,v0,0x4 -80026590: 00641821 addu v1,v1,a0 -80026594: 02031821 addu v1,s0,v1 - previous_btn_selected = btn_selected; -80026598: a3c21c58 sb v0,7256(s8) - } - else if(PadOneKeyReleased(PAD_RIGHT) - && - (btn_selected < (max_buttons - 1 + MainMenuMinimumBtn) ) ) - { - MainMenuBtn[btn_selected].selected = false; -8002659c: a0600012 sb zero,18(v1) - previous_btn_selected = btn_selected; - btn_selected++; -800265a0: 24420001 addiu v0,v0,1 - SfxPlaySound(&BellSnd); -800265a4: 3c048004 lui a0,0x8004 -800265a8: 24845f60 addiu a0,a0,24416 -800265ac: 0c009eeb jal 80027bac -800265b0: a2221c59 sb v0,7257(s1) - } - - if(btn_selected < MainMenuMinimumBtn) -800265b4: 8ea21c5c lw v0,7260(s5) -800265b8: 92231c59 lbu v1,7257(s1) -800265bc: 00000000 nop -800265c0: 0062182b sltu v1,v1,v0 -800265c4: 10600002 beqz v1,800265d0 -800265c8: 00000000 nop - { - btn_selected = MainMenuMinimumBtn; -800265cc: a2221c59 sb v0,7257(s1) - } - - if(btn_selected > (max_buttons - 1 + MainMenuMinimumBtn) ) -800265d0: 92231c59 lbu v1,7257(s1) -800265d4: 2442ffff addiu v0,v0,-1 -800265d8: 00561021 addu v0,v0,s6 -800265dc: 0043182b sltu v1,v0,v1 -800265e0: 10600002 beqz v1,800265ec -800265e4: 00000000 nop - { - // Avoid overflow when going back in menu navigation - btn_selected = (max_buttons - 1 + MainMenuMinimumBtn); -800265e8: a2221c59 sb v0,7257(s1) - } - - if(PadOneKeyReleased(PAD_CROSS) ) -800265ec: 0c0099e0 jal 80026780 -800265f0: 24040040 li a0,64 -800265f4: 10400033 beqz v0,800266c4 -800265f8: 24020001 li v0,1 - { - if(menuLevel == ONE_TWO_PLAYERS_LEVEL) -800265fc: 8e561c60 lw s6,7264(s2) -80026600: 00000000 nop -80026604: 16c2001e bne s6,v0,80026680 -80026608: 00000000 nop - { - MainMenuBtn[btn_selected].f(); -8002660c: 92221c59 lbu v0,7257(s1) -80026610: 00000000 nop -80026614: 00021880 sll v1,v0,0x2 -80026618: 00021100 sll v0,v0,0x4 -8002661c: 00621021 addu v0,v1,v0 -80026620: 02021021 addu v0,s0,v0 -80026624: 8843000d lwl v1,13(v0) -80026628: 00000000 nop -8002662c: 9843000a lwr v1,10(v0) -80026630: 00000000 nop -80026634: 0060f809 jalr v1 -80026638: 00000000 nop - -} - -void MainMenuRestoreInitValues(void) -{ - menuLevel = PLAY_OPTIONS_LEVEL; -8002663c: 3c028007 lui v0,0x8007 -80026640: ac401c60 sw zero,7264(v0) - MainMenuMinimumBtn = PLAY_BUTTON_INDEX; -80026644: aea01c5c sw zero,7260(s5) - - MainMenuBtn[PLAY_BUTTON_INDEX].selected = true; -80026648: a2160012 sb s6,18(s0) - MainMenuBtn[PLAY_BUTTON_INDEX].was_selected = false; -8002664c: a2000013 sb zero,19(s0) - MainMenuBtn[PLAY_BUTTON_INDEX].timer = 0; -80026650: a6000008 sh zero,8(s0) - - MainMenuBtn[OPTIONS_BUTTON_INDEX].selected = false; -80026654: a2000026 sb zero,38(s0) - MainMenuBtn[OPTIONS_BUTTON_INDEX].was_selected = false; -80026658: a2000027 sb zero,39(s0) - MainMenuBtn[OPTIONS_BUTTON_INDEX].timer = 0; -8002665c: a600001c sh zero,28(s0) - - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].selected = false; -80026660: a200003a sb zero,58(s0) - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].was_selected = false; -80026664: a200003b sb zero,59(s0) - MainMenuBtn[ONE_PLAYER_BUTTON_INDEX].timer = 0; -80026668: a6000030 sh zero,48(s0) - - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].selected = false; -8002666c: a200004e sb zero,78(s0) - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].was_selected = false; -80026670: a200004f sb zero,79(s0) - MainMenuBtn[TWO_PLAYER_BUTTON_INDEX].timer = 0; -80026674: a6000044 sh zero,68(s0) - if(menuLevel == ONE_TWO_PLAYERS_LEVEL) - { - MainMenuBtn[btn_selected].f(); - // Once gameplay has finished, turn back to first level - MainMenuRestoreInitValues(); - btn_selected = PLAY_BUTTON_INDEX; -80026678: 1000000d b 800266b0 -8002667c: a2201c59 sb zero,7257(s1) - } - else - { - MainMenuBtn[btn_selected].f(); -80026680: 92221c59 lbu v0,7257(s1) -80026684: 00000000 nop -80026688: 00021880 sll v1,v0,0x2 -8002668c: 00021100 sll v0,v0,0x4 -80026690: 00621021 addu v0,v1,v0 -80026694: 02021021 addu v0,s0,v0 -80026698: 8843000d lwl v1,13(v0) -8002669c: 00000000 nop -800266a0: 9843000a lwr v1,10(v0) -800266a4: 00000000 nop -800266a8: 0060f809 jalr v1 -800266ac: 00000000 nop - } - - - - if(menuLevel == ONE_TWO_PLAYERS_LEVEL) -800266b0: 8e431c60 lw v1,7264(s2) -800266b4: 24020001 li v0,1 -800266b8: 14620002 bne v1,v0,800266c4 -800266bc: 00000000 nop - { - btn_selected = PLAY_BUTTON_INDEX; -800266c0: a2201c59 sb zero,7257(s1) - } - - } - - MainMenuBtn[btn_selected].selected = true; -800266c4: 92221c59 lbu v0,7257(s1) -800266c8: 00000000 nop -800266cc: 00021880 sll v1,v0,0x2 -800266d0: 00021100 sll v0,v0,0x4 -800266d4: 00621021 addu v0,v1,v0 -800266d8: 02021021 addu v0,s0,v0 -800266dc: 24030001 li v1,1 -800266e0: a0430012 sb v1,18(v0) - - while(1) - { - MainMenuButtonHandler(); - - switch(menuLevel) -800266e4: 8e421c60 lw v0,7264(s2) -800266e8: 00000000 nop -800266ec: 10400005 beqz v0,80026704 -800266f0: 24030001 li v1,1 -800266f4: 10430010 beq v0,v1,80026738 -800266f8: 00000000 nop -800266fc: 1000ff53 b 8002644c -80026700: 00000000 nop - { - case PLAY_OPTIONS_LEVEL: - while(SystemDMAReady() == false); -80026704: 0c009f8b jal 80027e2c -80026708: 00000000 nop -8002670c: 1040fffd beqz v0,80026704 -80026710: 24060028 li a2,40 - - GsSortCls(0,0,40); -80026714: 00002821 move a1,zero -80026718: 0c00c4e8 jal 800313a0 -8002671c: 00002021 move a0,zero - MainMenuDrawButton(&MainMenuBtn[PLAY_BUTTON_INDEX]); -80026720: 3c048004 lui a0,0x8004 -80026724: 0c00984d jal 80026134 -80026728: 24845ea0 addiu a0,a0,24224 - MainMenuDrawButton(&MainMenuBtn[OPTIONS_BUTTON_INDEX]); -8002672c: 3c048004 lui a0,0x8004 -80026730: 1000000d b 80026768 -80026734: 24845eb4 addiu a0,a0,24244 - - GfxDrawScene(); - break; - - case ONE_TWO_PLAYERS_LEVEL: - while(SystemDMAReady() == false); -80026738: 0c009f8b jal 80027e2c -8002673c: 00000000 nop -80026740: 1040fffd beqz v0,80026738 -80026744: 24060028 li a2,40 - - GsSortCls(0,0,40); -80026748: 00002821 move a1,zero -8002674c: 0c00c4e8 jal 800313a0 -80026750: 00002021 move a0,zero - MainMenuDrawButton(&MainMenuBtn[ONE_PLAYER_BUTTON_INDEX]); -80026754: 3c048004 lui a0,0x8004 -80026758: 0c00984d jal 80026134 -8002675c: 24845ec8 addiu a0,a0,24264 - MainMenuDrawButton(&MainMenuBtn[TWO_PLAYER_BUTTON_INDEX]); -80026760: 3c048004 lui a0,0x8004 -80026764: 24845edc addiu a0,a0,24284 -80026768: 0c00984d jal 80026134 -8002676c: 3c118007 lui s1,0x8007 - GfxDrawScene(); -80026770: 0c008fe2 jal 80023f88 -80026774: 00000000 nop - break; -80026778: 1000ff34 b 8002644c -8002677c: 00000000 nop - -80026780 : - return true; -} - -bool PadOneKeyReleased(unsigned short key) -{ - return ( !(pad1 & key) && (previous_pad1 & key) ); -80026780: 3c028007 lui v0,0x8007 -80026784: 94431c7a lhu v1,7290(v0) - - return true; -} - -bool PadOneKeyReleased(unsigned short key) -{ -80026788: 3084ffff andi a0,a0,0xffff - return ( !(pad1 & key) && (previous_pad1 & key) ); -8002678c: 00831824 and v1,a0,v1 -80026790: 14600006 bnez v1,800267ac -80026794: 00001021 move v0,zero -80026798: 3c028007 lui v0,0x8007 -8002679c: 94421c76 lhu v0,7286(v0) -800267a0: 00000000 nop -800267a4: 00822024 and a0,a0,v0 -800267a8: 0004102b sltu v0,zero,a0 -} -800267ac: 03e00008 jr ra -800267b0: 00000000 nop - -800267b4 : - -bool PadTwoKeyReleased(unsigned short key) -{ - return ( !(pad2 & key) && (previous_pad2 & key) ); -800267b4: 3c028007 lui v0,0x8007 -800267b8: 94431c78 lhu v1,7288(v0) -{ - return ( !(pad1 & key) && (previous_pad1 & key) ); -} - -bool PadTwoKeyReleased(unsigned short key) -{ -800267bc: 3084ffff andi a0,a0,0xffff - return ( !(pad2 & key) && (previous_pad2 & key) ); -800267c0: 00831824 and v1,a0,v1 -800267c4: 14600006 bnez v1,800267e0 -800267c8: 00001021 move v0,zero -800267cc: 3c028007 lui v0,0x8007 -800267d0: 94421c74 lhu v0,7284(v0) -800267d4: 00000000 nop -800267d8: 00822024 and a0,a0,v0 -800267dc: 0004102b sltu v0,zero,a0 -} -800267e0: 03e00008 jr ra -800267e4: 00000000 nop - -800267e8 : - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); - memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS); -} - -void PadCheatHandler(uint8_t n_pad) -{ -800267e8: 27bdffb0 addiu sp,sp,-80 - unsigned short available_keys[12] = { PAD_LEFT, PAD_RIGHT, PAD_UP, PAD_DOWN, -800267ec: 3c058004 lui a1,0x8004 -800267f0: 24060018 li a2,24 - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); - memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS); -} - -void PadCheatHandler(uint8_t n_pad) -{ -800267f4: afb00028 sw s0,40(sp) - unsigned short available_keys[12] = { PAD_LEFT, PAD_RIGHT, PAD_UP, PAD_DOWN, -800267f8: 24a5f7ec addiu a1,a1,-2068 - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); - memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS); -} - -void PadCheatHandler(uint8_t n_pad) -{ -800267fc: 00808021 move s0,a0 - unsigned short available_keys[12] = { PAD_LEFT, PAD_RIGHT, PAD_UP, PAD_DOWN, -80026800: 27a40010 addiu a0,sp,16 - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); - memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS); -} - -void PadCheatHandler(uint8_t n_pad) -{ -80026804: afbf004c sw ra,76(sp) -80026808: afbe0048 sw s8,72(sp) -8002680c: afb70044 sw s7,68(sp) -80026810: afb60040 sw s6,64(sp) -80026814: afb5003c sw s5,60(sp) -80026818: afb40038 sw s4,56(sp) -8002681c: afb30034 sw s3,52(sp) -80026820: afb20030 sw s2,48(sp) - unsigned short available_keys[12] = { PAD_LEFT, PAD_RIGHT, PAD_UP, PAD_DOWN, -80026824: 0c00d75e jal 80035d78 -80026828: afb1002c sw s1,44(sp) - void (*clean_callback)(void); - bool success = false; - unsigned short * cheat_array; - TYPE_TIMER * timer; - - switch(n_pad) -8002682c: 1200000c beqz s0,80026860 -80026830: 24020001 li v0,1 -80026834: 16020013 bne s0,v0,80026884 -80026838: 3c048004 lui a0,0x8004 - - case PAD_TWO: - released_callback = &PadTwoKeyReleased; - cheat_array = pad2_cheat_array; - clean_callback = &PadTwoCleanCheatArray; - timer = pad2_cheat_timer; -8002683c: 3c028007 lui v0,0x8007 - timer = pad1_cheat_timer; - break; - - case PAD_TWO: - released_callback = &PadTwoKeyReleased; - cheat_array = pad2_cheat_array; -80026840: 3c108004 lui s0,0x8004 - clean_callback = &PadTwoCleanCheatArray; -80026844: 3c128002 lui s2,0x8002 - clean_callback = &PadOneCleanCheatArray; - timer = pad1_cheat_timer; - break; - - case PAD_TWO: - released_callback = &PadTwoKeyReleased; -80026848: 3c158002 lui s5,0x8002 - cheat_array = pad2_cheat_array; - clean_callback = &PadTwoCleanCheatArray; - timer = pad2_cheat_timer; -8002684c: 8c561c68 lw s6,7272(v0) - timer = pad1_cheat_timer; - break; - - case PAD_TWO: - released_callback = &PadTwoKeyReleased; - cheat_array = pad2_cheat_array; -80026850: 26115ff4 addiu s1,s0,24564 - clean_callback = &PadTwoCleanCheatArray; -80026854: 26526a18 addiu s2,s2,27160 - timer = pad2_cheat_timer; - break; -80026858: 10000017 b 800268b8 -8002685c: 26b567b4 addiu s5,s5,26548 - { - case PAD_ONE: - released_callback = &PadOneKeyReleased; - cheat_array = pad1_cheat_array; - clean_callback = &PadOneCleanCheatArray; - timer = pad1_cheat_timer; -80026860: 3c028007 lui v0,0x8007 - - switch(n_pad) - { - case PAD_ONE: - released_callback = &PadOneKeyReleased; - cheat_array = pad1_cheat_array; -80026864: 3c108004 lui s0,0x8004 - clean_callback = &PadOneCleanCheatArray; -80026868: 3c128002 lui s2,0x8002 - TYPE_TIMER * timer; - - switch(n_pad) - { - case PAD_ONE: - released_callback = &PadOneKeyReleased; -8002686c: 3c158002 lui s5,0x8002 - cheat_array = pad1_cheat_array; - clean_callback = &PadOneCleanCheatArray; - timer = pad1_cheat_timer; -80026870: 8c561c6c lw s6,7276(v0) - - switch(n_pad) - { - case PAD_ONE: - released_callback = &PadOneKeyReleased; - cheat_array = pad1_cheat_array; -80026874: 26116014 addiu s1,s0,24596 - clean_callback = &PadOneCleanCheatArray; -80026878: 26526a2c addiu s2,s2,27180 - timer = pad1_cheat_timer; - break; -8002687c: 1000000e b 800268b8 -80026880: 26b56780 addiu s5,s5,26496 - clean_callback(); - } - } - - cheat_array[j] = key; -} -80026884: 8fbf004c lw ra,76(sp) -80026888: 8fbe0048 lw s8,72(sp) -8002688c: 8fb70044 lw s7,68(sp) -80026890: 8fb60040 lw s6,64(sp) -80026894: 8fb5003c lw s5,60(sp) -80026898: 8fb40038 lw s4,56(sp) -8002689c: 8fb30034 lw s3,52(sp) -800268a0: 8fb20030 lw s2,48(sp) -800268a4: 8fb1002c lw s1,44(sp) -800268a8: 8fb00028 lw s0,40(sp) - clean_callback = &PadTwoCleanCheatArray; - timer = pad2_cheat_timer; - break; - - default: - dprintf("Invalid pad called for PadCheatHandler()!\n"); -800268ac: 24840fa8 addiu a0,a0,4008 -800268b0: 0800ed8f j 8003b63c -800268b4: 27bd0050 addiu sp,sp,80 -800268b8: 3c138004 lui s3,0x8004 -800268bc: 26735fb4 addiu s3,s3,24500 - clean_callback = &PadOneCleanCheatArray; - timer = pad1_cheat_timer; - break; - - case PAD_TWO: - released_callback = &PadTwoKeyReleased; -800268c0: 00008021 move s0,zero -800268c4: 0260b821 move s7,s3 - return; - } - - for(i = 0; i < PAD_MAX_CHEATS; i++) - { - if(cheatsArray[i] != NULL) -800268c8: 8e650000 lw a1,0(s3) -800268cc: 00000000 nop -800268d0: 10a0001e beqz a1,8002694c -800268d4: 24060010 li a2,16 - { - if(SystemArrayCompare(cheat_array, cheatsArray[i]->Combination, CHEAT_ARRAY_SIZE) == true) -800268d8: 0c00a116 jal 80028458 -800268dc: 02202021 move a0,s1 -800268e0: 1040001a beqz v0,8002694c -800268e4: 00000000 nop - { - if(cheatsArray[i]->Callback != NULL) -800268e8: 8e620000 lw v0,0(s3) -800268ec: 00000000 nop -800268f0: 8c420020 lw v0,32(v0) -800268f4: 00000000 nop -800268f8: 10400015 beqz v0,80026950 -800268fc: 26100001 addiu s0,s0,1 -80026900: 2610ffff addiu s0,s0,-1 - if(clean_callback != NULL) - { - clean_callback(); - } - - cheatsArray[i]->Callback(); -80026904: 00108080 sll s0,s0,0x2 - { - if(cheatsArray[i]->Callback != NULL) - { - if(clean_callback != NULL) - { - clean_callback(); -80026908: 0240f809 jalr s2 -8002690c: 02f08021 addu s0,s7,s0 - } - - cheatsArray[i]->Callback(); -80026910: 8e020000 lw v0,0(s0) - clean_callback(); - } - } - - cheat_array[j] = key; -} -80026914: 8fbf004c lw ra,76(sp) -80026918: 8fbe0048 lw s8,72(sp) -8002691c: 8fb70044 lw s7,68(sp) -80026920: 8fb60040 lw s6,64(sp) -80026924: 8fb5003c lw s5,60(sp) -80026928: 8fb40038 lw s4,56(sp) -8002692c: 8fb30034 lw s3,52(sp) -80026930: 8fb20030 lw s2,48(sp) -80026934: 8fb1002c lw s1,44(sp) -80026938: 8fb00028 lw s0,40(sp) - if(clean_callback != NULL) - { - clean_callback(); - } - - cheatsArray[i]->Callback(); -8002693c: 8c590020 lw t9,32(v0) -80026940: 00000000 nop -80026944: 03200008 jr t9 -80026948: 27bd0050 addiu sp,sp,80 -8002694c: 26100001 addiu s0,s0,1 - default: - dprintf("Invalid pad called for PadCheatHandler()!\n"); - return; - } - - for(i = 0; i < PAD_MAX_CHEATS; i++) -80026950: 24020010 li v0,16 -80026954: 1602ffdc bne s0,v0,800268c8 -80026958: 26730004 addiu s3,s3,4 -8002695c: 0000f021 move s8,zero -80026960: 00008021 move s0,zero - } - } - } - } - - for(i = 0; i < sizeof(available_keys) / sizeof(unsigned short); i++) -80026964: 24170018 li s7,24 - { - if(released_callback(available_keys[i]) == true) -80026968: 27a20010 addiu v0,sp,16 -8002696c: 005e1021 addu v0,v0,s8 -80026970: 94530000 lhu s3,0(v0) -80026974: 02a0f809 jalr s5 -80026978: 02602021 move a0,s3 -8002697c: 10400005 beqz v0,80026994 -80026980: 02c02021 move a0,s6 - { - SystemTimerRestart(timer); -80026984: 0c00a10d jal 80028434 -80026988: 26100001 addiu s0,s0,1 - key = available_keys[i]; - keys_released++; -8002698c: 321000ff andi s0,s0,0xff - for(i = 0; i < sizeof(available_keys) / sizeof(unsigned short); i++) - { - if(released_callback(available_keys[i]) == true) - { - SystemTimerRestart(timer); - key = available_keys[i]; -80026990: 0260a021 move s4,s3 -80026994: 27de0002 addiu s8,s8,2 - } - } - } - } - - for(i = 0; i < sizeof(available_keys) / sizeof(unsigned short); i++) -80026998: 17d7fff4 bne s8,s7,8002696c -8002699c: 27a20010 addiu v0,sp,16 - key = available_keys[i]; - keys_released++; - } - } - - if(keys_released != 1) -800269a0: 24020001 li v0,1 -800269a4: 16020010 bne s0,v0,800269e8 -800269a8: 02201021 move v0,s1 -800269ac: 00008021 move s0,zero - return; - } - - // Check for full array (return success = true if an empty array - // element was found. - for(j = 0; j < CHEAT_ARRAY_SIZE; j++) -800269b0: 24030010 li v1,16 - { - if(cheat_array[j] == 0) -800269b4: 94440000 lhu a0,0(v0) -800269b8: 00000000 nop -800269bc: 10800007 beqz a0,800269dc -800269c0: 00000000 nop - return; - } - - // Check for full array (return success = true if an empty array - // element was found. - for(j = 0; j < CHEAT_ARRAY_SIZE; j++) -800269c4: 26100001 addiu s0,s0,1 -800269c8: 321000ff andi s0,s0,0xff -800269cc: 1603fff9 bne s0,v1,800269b4 -800269d0: 24420002 addiu v0,v0,2 - if(success == false) - { - if(clean_callback != NULL) - { - // Overrun - clean_callback(); -800269d4: 0240f809 jalr s2 -800269d8: 00000000 nop - } - } - - cheat_array[j] = key; -800269dc: 00108040 sll s0,s0,0x1 -800269e0: 02308021 addu s0,s1,s0 -800269e4: a6140000 sh s4,0(s0) -} -800269e8: 8fbf004c lw ra,76(sp) -800269ec: 8fbe0048 lw s8,72(sp) -800269f0: 8fb70044 lw s7,68(sp) -800269f4: 8fb60040 lw s6,64(sp) -800269f8: 8fb5003c lw s5,60(sp) -800269fc: 8fb40038 lw s4,56(sp) -80026a00: 8fb30034 lw s3,52(sp) -80026a04: 8fb20030 lw s2,48(sp) -80026a08: 8fb1002c lw s1,44(sp) -80026a0c: 8fb00028 lw s0,40(sp) -80026a10: 03e00008 jr ra -80026a14: 27bd0050 addiu sp,sp,80 - -80026a18 : - memset(pad1_cheat_array,0,sizeof(unsigned short) * CHEAT_ARRAY_SIZE); -} - -void PadTwoCleanCheatArray(void) -{ - memset(pad2_cheat_array,0,sizeof(unsigned short) * CHEAT_ARRAY_SIZE); -80026a18: 3c048004 lui a0,0x8004 -80026a1c: 24060020 li a2,32 -80026a20: 00002821 move a1,zero -80026a24: 0800d7ab j 80035eac -80026a28: 24845ff4 addiu a0,a0,24564 - -80026a2c : - return true; -} - -void PadOneCleanCheatArray(void) -{ - memset(pad1_cheat_array,0,sizeof(unsigned short) * CHEAT_ARRAY_SIZE); -80026a2c: 3c048004 lui a0,0x8004 -80026a30: 24060020 li a2,32 -80026a34: 00002821 move a1,zero -80026a38: 0800d7ab j 80035eac -80026a3c: 24846014 addiu a0,a0,24596 - -80026a40 : - - return PadOne; -} - -bool PadOneConnected(void) -{ -80026a40: 27bdffd8 addiu sp,sp,-40 - -psx_pad_state PadOneGetState(void) -{ - psx_pad_state PadOne; - - PSX_PollPad_Fast(PAD_ONE,&PadOne); -80026a44: 27a50010 addiu a1,sp,16 - - return PadOne; -} - -bool PadOneConnected(void) -{ -80026a48: afbf0024 sw ra,36(sp) - -psx_pad_state PadOneGetState(void) -{ - psx_pad_state PadOne; - - PSX_PollPad_Fast(PAD_ONE,&PadOne); -80026a4c: 0c00d0ba jal 800342e8 -80026a50: 00002021 move a0,zero - - return PadOne; -80026a54: 93a20010 lbu v0,16(sp) - { - return false; - } - - return true; -} -80026a58: 8fbf0024 lw ra,36(sp) -80026a5c: 2c420001 sltiu v0,v0,1 -80026a60: 03e00008 jr ra -80026a64: 27bd0028 addiu sp,sp,40 - -80026a68 : - -bool PadOneAnyKeyPressed(void) -{ - return (bool)pad1; -80026a68: 3c028007 lui v0,0x8007 -80026a6c: 94421c7a lhu v0,7290(v0) -} -80026a70: 03e00008 jr ra -80026a74: 0002102b sltu v0,zero,v0 - -80026a78 : - -bool PadOneDirectionKeyPressed(void) -{ - return ( (PadOneKeyPressed(PAD_UP) == true) -80026a78: 3c028007 lui v0,0x8007 -80026a7c: 94421c7a lhu v0,7290(v0) -80026a80: 00000000 nop -80026a84: 3042f000 andi v0,v0,0xf000 - (PadOneKeyPressed(PAD_LEFT) == true) - || - (PadOneKeyPressed(PAD_RIGHT) == true) - || - (PadOneKeyPressed(PAD_DOWN) == true) ); -} -80026a88: 03e00008 jr ra -80026a8c: 0002102b sltu v0,zero,v0 - -80026a90 : - -bool PadOneDirectionKeyReleased(void) -{ -80026a90: 27bdffe8 addiu sp,sp,-24 -80026a94: afbf0014 sw ra,20(sp) - return ( (PadOneKeyReleased(PAD_UP) == true) -80026a98: 0c0099e0 jal 80026780 -80026a9c: 24041000 li a0,4096 - || - (PadOneKeyReleased(PAD_LEFT) == true) - || - (PadOneKeyReleased(PAD_RIGHT) == true) - || -80026aa0: 1440000c bnez v0,80026ad4 -80026aa4: 24050001 li a1,1 - -bool PadOneDirectionKeyReleased(void) -{ - return ( (PadOneKeyReleased(PAD_UP) == true) - || - (PadOneKeyReleased(PAD_LEFT) == true) -80026aa8: 0c0099e0 jal 80026780 -80026aac: 34048000 li a0,0x8000 -} - -bool PadOneDirectionKeyReleased(void) -{ - return ( (PadOneKeyReleased(PAD_UP) == true) - || -80026ab0: 14400008 bnez v0,80026ad4 -80026ab4: 00000000 nop - (PadOneKeyReleased(PAD_LEFT) == true) - || - (PadOneKeyReleased(PAD_RIGHT) == true) -80026ab8: 0c0099e0 jal 80026780 -80026abc: 24042000 li a0,8192 -bool PadOneDirectionKeyReleased(void) -{ - return ( (PadOneKeyReleased(PAD_UP) == true) - || - (PadOneKeyReleased(PAD_LEFT) == true) - || -80026ac0: 14400004 bnez v0,80026ad4 -80026ac4: 00000000 nop - (PadOneKeyReleased(PAD_RIGHT) == true) - || - (PadOneKeyReleased(PAD_DOWN) == true) ); -80026ac8: 0c0099e0 jal 80026780 -80026acc: 24044000 li a0,16384 -80026ad0: 00402821 move a1,v0 -} -80026ad4: 8fbf0014 lw ra,20(sp) -80026ad8: 30a20001 andi v0,a1,0x1 -80026adc: 03e00008 jr ra -80026ae0: 27bd0018 addiu sp,sp,24 - -80026ae4 : - -bool PadTwoDirectionKeyReleased(void) -{ -80026ae4: 27bdffe8 addiu sp,sp,-24 -80026ae8: afbf0014 sw ra,20(sp) - return ( (PadTwoKeyReleased(PAD_UP) == true) -80026aec: 0c0099ed jal 800267b4 -80026af0: 24041000 li a0,4096 - || - (PadTwoKeyReleased(PAD_LEFT) == true) - || - (PadTwoKeyReleased(PAD_RIGHT) == true) - || -80026af4: 1440000c bnez v0,80026b28 -80026af8: 24050001 li a1,1 - -bool PadTwoDirectionKeyReleased(void) -{ - return ( (PadTwoKeyReleased(PAD_UP) == true) - || - (PadTwoKeyReleased(PAD_LEFT) == true) -80026afc: 0c0099ed jal 800267b4 -80026b00: 34048000 li a0,0x8000 -} - -bool PadTwoDirectionKeyReleased(void) -{ - return ( (PadTwoKeyReleased(PAD_UP) == true) - || -80026b04: 14400008 bnez v0,80026b28 -80026b08: 00000000 nop - (PadTwoKeyReleased(PAD_LEFT) == true) - || - (PadTwoKeyReleased(PAD_RIGHT) == true) -80026b0c: 0c0099ed jal 800267b4 -80026b10: 24042000 li a0,8192 -bool PadTwoDirectionKeyReleased(void) -{ - return ( (PadTwoKeyReleased(PAD_UP) == true) - || - (PadTwoKeyReleased(PAD_LEFT) == true) - || -80026b14: 14400004 bnez v0,80026b28 -80026b18: 00000000 nop - (PadTwoKeyReleased(PAD_RIGHT) == true) - || - (PadTwoKeyReleased(PAD_DOWN) == true) ); -80026b1c: 0c0099ed jal 800267b4 -80026b20: 24044000 li a0,16384 -80026b24: 00402821 move a1,v0 -} -80026b28: 8fbf0014 lw ra,20(sp) -80026b2c: 30a20001 andi v0,a1,0x1 -80026b30: 03e00008 jr ra -80026b34: 27bd0018 addiu sp,sp,24 - -80026b38 : - -bool PadTwoDirectionKeyPressed(void) -{ - return ( (PadTwoKeyPressed(PAD_UP) == true) -80026b38: 3c028007 lui v0,0x8007 -80026b3c: 94421c78 lhu v0,7288(v0) -80026b40: 00000000 nop -80026b44: 3042f000 andi v0,v0,0xf000 - (PadTwoKeyPressed(PAD_LEFT) == true) - || - (PadTwoKeyPressed(PAD_RIGHT) == true) - || - (PadTwoKeyPressed(PAD_DOWN) == true) ); -} -80026b48: 03e00008 jr ra -80026b4c: 0002102b sltu v0,zero,v0 - -80026b50 : - -bool PadTwoAnyKeyPressed(void) -{ - return (bool)pad2; -80026b50: 3c028007 lui v0,0x8007 -80026b54: 94421c78 lhu v0,7288(v0) -} -80026b58: 03e00008 jr ra -80026b5c: 0002102b sltu v0,zero,v0 - -80026b60 : - -bool PadOneKeyPressed(unsigned short key) -{ - return (bool)( pad1 & key ); -80026b60: 3c028007 lui v0,0x8007 -80026b64: 94421c7a lhu v0,7290(v0) -80026b68: 00000000 nop -80026b6c: 00821024 and v0,a0,v0 -} -80026b70: 03e00008 jr ra -80026b74: 0002102b sltu v0,zero,v0 - -80026b78 : - -bool PadTwoKeyPressed(unsigned short key) -{ - return (bool)( pad2 & key ); -80026b78: 3c028007 lui v0,0x8007 -80026b7c: 94421c78 lhu v0,7288(v0) -80026b80: 00000000 nop -80026b84: 00821024 and v0,a0,v0 -} -80026b88: 03e00008 jr ra -80026b8c: 0002102b sltu v0,zero,v0 - -80026b90 : - } -} - -bool PadOneIsVibrationEnabled(void) -{ - return (pad1_vibration_timer & true); -80026b90: 3c028007 lui v0,0x8007 -80026b94: 90421c72 lbu v0,7282(v0) -} -80026b98: 03e00008 jr ra -80026b9c: 30420001 andi v0,v0,0x1 - -80026ba0 : - -bool PadTwoIsVibrationEnabled(void) -{ - return (pad2_vibration_timer & true); -80026ba0: 3c028007 lui v0,0x8007 -80026ba4: 90421c70 lbu v0,7280(v0) -} -80026ba8: 03e00008 jr ra -80026bac: 30420001 andi v0,v0,0x1 - -80026bb0 : - -bool UpdatePads(void) -{ -80026bb0: 27bdffe8 addiu sp,sp,-24 -80026bb4: afbf0014 sw ra,20(sp) - return false; -} - -void PadOneVibrationHandler(void) -{ - if(PadOneIsVibrationEnabled() == true) -80026bb8: 0c009ae4 jal 80026b90 -80026bbc: 00000000 nop -80026bc0: 1040000c beqz v0,80026bf4 -80026bc4: 00000000 nop - { - pad_enable_vibration(PAD_ONE); -80026bc8: 0c00ca38 jal 800328e0 -80026bcc: 00002021 move a0,zero - pad_set_vibration(PAD_ONE,pad1_small_vibration_force,pad1_big_vibration_force); -80026bd0: 00003021 move a2,zero -80026bd4: 00002821 move a1,zero -80026bd8: 0c00ca66 jal 80032998 -80026bdc: 00002021 move a0,zero - pad1_vibration_timer--; -80026be0: 3c038007 lui v1,0x8007 -80026be4: 94621c72 lhu v0,7282(v1) -80026be8: 00000000 nop -80026bec: 2442ffff addiu v0,v0,-1 -80026bf0: a4621c72 sh v0,7282(v1) - } -} - -void PadTwoVibrationHandler(void) -{ - if(PadTwoIsVibrationEnabled() == true) -80026bf4: 0c009ae8 jal 80026ba0 -80026bf8: 00000000 nop -80026bfc: 1040000c beqz v0,80026c30 -80026c00: 00000000 nop - { - pad_enable_vibration(PAD_TWO); -80026c04: 0c00ca38 jal 800328e0 -80026c08: 24040001 li a0,1 - pad_set_vibration(PAD_TWO,pad2_small_vibration_force,pad2_big_vibration_force); -80026c0c: 00003021 move a2,zero -80026c10: 00002821 move a1,zero -80026c14: 0c00ca66 jal 80032998 -80026c18: 24040001 li a0,1 - pad2_vibration_timer--; -80026c1c: 3c038007 lui v1,0x8007 -80026c20: 94621c70 lhu v0,7280(v1) -80026c24: 00000000 nop -80026c28: 2442ffff addiu v0,v0,-1 -80026c2c: a4621c70 sh v0,7280(v1) -{ - PadOneVibrationHandler(); - - PadTwoVibrationHandler(); - - PadCheatHandler(PAD_ONE); -80026c30: 0c0099fa jal 800267e8 -80026c34: 00002021 move a0,zero - - PadCheatHandler(PAD_TWO); -80026c38: 0c0099fa jal 800267e8 -80026c3c: 24040001 li a0,1 - - // Get now-old pad data - previous_pad1 = pad1; -80026c40: 3c048007 lui a0,0x8007 -80026c44: 94831c7a lhu v1,7290(a0) -80026c48: 3c028007 lui v0,0x8007 - previous_pad2 = pad2; -80026c4c: 3c058007 lui a1,0x8007 - PadCheatHandler(PAD_ONE); - - PadCheatHandler(PAD_TWO); - - // Get now-old pad data - previous_pad1 = pad1; -80026c50: a4431c76 sh v1,7286(v0) - previous_pad2 = pad2; -80026c54: 94a31c78 lhu v1,7288(a1) -80026c58: 3c028007 lui v0,0x8007 - - PSX_ReadPad(&pad1,&pad2); -80026c5c: 24a51c78 addiu a1,a1,7288 -80026c60: 24841c7a addiu a0,a0,7290 -80026c64: 0c00d062 jal 80034188 -80026c68: a4431c74 sh v1,7284(v0) - { - return false; - } - - return true; -} -80026c6c: 8fbf0014 lw ra,20(sp) - previous_pad1 = pad1; - previous_pad2 = pad2; - - PSX_ReadPad(&pad1,&pad2); - - if(PadOneConnected() == false) -80026c70: 08009a90 j 80026a40 -80026c74: 27bd0018 addiu sp,sp,24 - -80026c78 : -{ - return ( !(pad2 & key) && (previous_pad2 & key) ); -} - -uint8_t PadGetKeyIndex(unsigned short key) -{ -80026c78: 3084ffff andi a0,a0,0xffff - switch(key) -80026c7c: 24030020 li v1,32 -80026c80: 1083002a beq a0,v1,80026d2c -80026c84: 24020003 li v0,3 -80026c88: 2c820021 sltiu v0,a0,33 -80026c8c: 10400012 beqz v0,80026cd8 -80026c90: 24031000 li v1,4096 -80026c94: 24030004 li v1,4 -80026c98: 10830024 beq a0,v1,80026d2c -80026c9c: 24020008 li v0,8 -80026ca0: 2c820005 sltiu v0,a0,5 -80026ca4: 10400007 beqz v0,80026cc4 -80026ca8: 24030008 li v1,8 -80026cac: 24030001 li v1,1 -80026cb0: 1083001e beq a0,v1,80026d2c -80026cb4: 24020009 li v0,9 - case PAD_L2: - return PAD_L2_INDEX; - break; - - case PAD_R2: - return PAD_R2_INDEX; -80026cb8: 2402000b li v0,11 - return ( !(pad2 & key) && (previous_pad2 & key) ); -} - -uint8_t PadGetKeyIndex(unsigned short key) -{ - switch(key) -80026cbc: 10000018 b 80026d20 -80026cc0: 24030002 li v1,2 -80026cc4: 10830019 beq a0,v1,80026d2c -80026cc8: 2402000a li v0,10 - case PAD_SQUARE: - return PAD_SQUARE_INDEX; - break; - - case PAD_TRIANGLE: - return PAD_TRIANGLE_INDEX; -80026ccc: 24020002 li v0,2 - return ( !(pad2 & key) && (previous_pad2 & key) ); -} - -uint8_t PadGetKeyIndex(unsigned short key) -{ - switch(key) -80026cd0: 10000013 b 80026d20 -80026cd4: 24030010 li v1,16 -80026cd8: 10830014 beq a0,v1,80026d2c -80026cdc: 24020006 li v0,6 -80026ce0: 2c821001 sltiu v0,a0,4097 -80026ce4: 10400007 beqz v0,80026d04 -80026ce8: 24034000 li v1,16384 -80026cec: 24030040 li v1,64 -80026cf0: 1083000e beq a0,v1,80026d2c -80026cf4: 00001021 move v0,zero - case PAD_CROSS: - return PAD_CROSS_INDEX; - break; - - case PAD_SQUARE: - return PAD_SQUARE_INDEX; -80026cf8: 24020001 li v0,1 - return ( !(pad2 & key) && (previous_pad2 & key) ); -} - -uint8_t PadGetKeyIndex(unsigned short key) -{ - switch(key) -80026cfc: 10000008 b 80026d20 -80026d00: 24030080 li v1,128 -80026d04: 10830009 beq a0,v1,80026d2c -80026d08: 24020004 li v0,4 -80026d0c: 34038000 li v1,0x8000 -80026d10: 10830006 beq a0,v1,80026d2c -80026d14: 24020005 li v0,5 - case PAD_UP: - return PAD_UP_INDEX; - break; - - case PAD_RIGHT: - return PAD_RIGHT_INDEX; -80026d18: 24020007 li v0,7 - return ( !(pad2 & key) && (previous_pad2 & key) ); -} - -uint8_t PadGetKeyIndex(unsigned short key) -{ - switch(key) -80026d1c: 24032000 li v1,8192 -80026d20: 10830002 beq a0,v1,80026d2c -80026d24: 00000000 nop - case PAD_R2: - return PAD_R2_INDEX; - break; - - default: - return NUMBER_OF_KEYS; -80026d28: 2402000c li v0,12 - break; - } -} -80026d2c: 03e00008 jr ra -80026d30: 00000000 nop - -80026d34 : -{ - return (bool)( pad2 & key ); -} - -bool PadOneKeyRepeat(unsigned short key, uint8_t time) -{ -80026d34: 27bdffe8 addiu sp,sp,-24 -80026d38: afbf0014 sw ra,20(sp) - uint8_t key_index = PadGetKeyIndex(key); -80026d3c: 0c009b1e jal 80026c78 -80026d40: 3084ffff andi a0,a0,0xffff - - if(key_index == NUMBER_OF_KEYS) -80026d44: 2403000c li v1,12 -80026d48: 14430003 bne v0,v1,80026d58 -80026d4c: 3c038004 lui v1,0x8004 - { - return false; -80026d50: 1000000e b 80026d8c -80026d54: 00001021 move v0,zero - } - - pad1_keys_repeat[key_index]++; -80026d58: 24636040 addiu v1,v1,24640 -80026d5c: 00431021 addu v0,v0,v1 -80026d60: 90430000 lbu v1,0(v0) -80026d64: 30a500ff andi a1,a1,0xff -80026d68: 24630001 addiu v1,v1,1 -80026d6c: 306300ff andi v1,v1,0xff - - if(pad1_keys_repeat[key_index] >= time) -80026d70: 0065282b sltu a1,v1,a1 -80026d74: 10a00003 beqz a1,80026d84 -80026d78: 00000000 nop - if(key_index == NUMBER_OF_KEYS) - { - return false; - } - - pad1_keys_repeat[key_index]++; -80026d7c: 1000fff4 b 80026d50 -80026d80: a0430000 sb v1,0(v0) - - if(pad1_keys_repeat[key_index] >= time) - { - pad1_keys_repeat[key_index] = 0; -80026d84: a0400000 sb zero,0(v0) - return true; -80026d88: 24020001 li v0,1 - } - - return false; -} -80026d8c: 8fbf0014 lw ra,20(sp) -80026d90: 00000000 nop -80026d94: 03e00008 jr ra -80026d98: 27bd0018 addiu sp,sp,24 - -80026d9c : - -bool PadTwoKeyRepeat(unsigned short key, uint8_t time) -{ -80026d9c: 27bdffe8 addiu sp,sp,-24 -80026da0: afbf0014 sw ra,20(sp) - uint8_t key_index = PadGetKeyIndex(key); -80026da4: 0c009b1e jal 80026c78 -80026da8: 3084ffff andi a0,a0,0xffff - - if(key_index == NUMBER_OF_KEYS) -80026dac: 2403000c li v1,12 -80026db0: 14430003 bne v0,v1,80026dc0 -80026db4: 3c038004 lui v1,0x8004 - { - return false; -80026db8: 1000000e b 80026df4 -80026dbc: 00001021 move v0,zero - } - - pad2_keys_repeat[key_index]++; -80026dc0: 24636034 addiu v1,v1,24628 -80026dc4: 00431021 addu v0,v0,v1 -80026dc8: 90430000 lbu v1,0(v0) -80026dcc: 30a500ff andi a1,a1,0xff -80026dd0: 24630001 addiu v1,v1,1 -80026dd4: 306300ff andi v1,v1,0xff - - if(pad2_keys_repeat[key_index] >= time) -80026dd8: 0065282b sltu a1,v1,a1 -80026ddc: 10a00003 beqz a1,80026dec -80026de0: 00000000 nop - if(key_index == NUMBER_OF_KEYS) - { - return false; - } - - pad2_keys_repeat[key_index]++; -80026de4: 1000fff4 b 80026db8 -80026de8: a0430000 sb v1,0(v0) - - if(pad2_keys_repeat[key_index] >= time) - { - pad2_keys_repeat[key_index] = 0; -80026dec: a0400000 sb zero,0(v0) - return true; -80026df0: 24020001 li v0,1 - } - - return false; -} -80026df4: 8fbf0014 lw ra,20(sp) -80026df8: 00000000 nop -80026dfc: 03e00008 jr ra -80026e00: 27bd0018 addiu sp,sp,24 - -80026e04 : -} - -unsigned short * PadOneGetAddress(void) -{ - return &pad1; -} -80026e04: 3c028007 lui v0,0x8007 -80026e08: 03e00008 jr ra -80026e0c: 24421c7a addiu v0,v0,7290 - -80026e10 : - -void PadClearData(void) -{ - pad1 = 0; -80026e10: 3c028007 lui v0,0x8007 -80026e14: a4401c7a sh zero,7290(v0) - pad2 = 0; -80026e18: 3c028007 lui v0,0x8007 -80026e1c: a4401c78 sh zero,7288(v0) - - previous_pad1 = 0; -80026e20: 3c028007 lui v0,0x8007 -80026e24: a4401c76 sh zero,7286(v0) - previous_pad2 = 0; -80026e28: 3c028007 lui v0,0x8007 -80026e2c: 03e00008 jr ra -80026e30: a4401c74 sh zero,7284(v0) - -80026e34 : -} - -void PadInit(void) -{ - pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray); -80026e34: 3c068002 lui a2,0x8002 - previous_pad1 = 0; - previous_pad2 = 0; -} - -void PadInit(void) -{ -80026e38: 27bdffe8 addiu sp,sp,-24 - pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray); -80026e3c: 24c66a2c addiu a2,a2,27180 -80026e40: 24050001 li a1,1 - previous_pad1 = 0; - previous_pad2 = 0; -} - -void PadInit(void) -{ -80026e44: afbf0014 sw ra,20(sp) - pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray); -80026e48: 0c00a075 jal 800281d4 -80026e4c: 24040002 li a0,2 - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); -80026e50: 3c068002 lui a2,0x8002 - previous_pad2 = 0; -} - -void PadInit(void) -{ - pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray); -80026e54: 3c038007 lui v1,0x8007 - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); -80026e58: 24c66a18 addiu a2,a2,27160 -80026e5c: 24050001 li a1,1 -80026e60: 24040002 li a0,2 -80026e64: 0c00a075 jal 800281d4 -80026e68: ac621c6c sw v0,7276(v1) - memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS); -} -80026e6c: 8fbf0014 lw ra,20(sp) - -void PadInit(void) -{ - pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray); - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); - memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS); -80026e70: 3c048004 lui a0,0x8004 -} - -void PadInit(void) -{ - pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray); - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); -80026e74: 3c038007 lui v1,0x8007 - memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS); -80026e78: 24060240 li a2,576 -80026e7c: 00002821 move a1,zero -80026e80: 24845fb4 addiu a0,a0,24500 -} -80026e84: 27bd0018 addiu sp,sp,24 - -void PadInit(void) -{ - pad1_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadOneCleanCheatArray); - pad2_cheat_timer = SystemCreateTimer(PAD_CHEAT_TIMEOUT,true /* Repeat flag */,&PadTwoCleanCheatArray); - memset(cheatsArray,0, sizeof(TYPE_CHEAT) * PAD_MAX_CHEATS); -80026e88: 0800d7ab j 80035eac -80026e8c: ac621c68 sw v0,7272(v1) - -80026e90 : - -bool PadAddCheat(TYPE_CHEAT * cheat) -{ - static uint8_t idx = 0; - - if(idx >= PAD_MAX_CHEATS) -80026e90: 3c038007 lui v1,0x8007 -80026e94: 90621c64 lbu v0,7268(v1) -80026e98: 00000000 nop -80026e9c: 2c450010 sltiu a1,v0,16 -80026ea0: 14a0000a bnez a1,80026ecc -80026ea4: 24450001 addiu a1,v0,1 - { - dprintf("Maximum number of cheats exceeded!\n"); -80026ea8: 3c048004 lui a0,0x8004 - - cheat_array[j] = key; -} - -bool PadAddCheat(TYPE_CHEAT * cheat) -{ -80026eac: 27bdffe8 addiu sp,sp,-24 -80026eb0: afbf0014 sw ra,20(sp) - static uint8_t idx = 0; - - if(idx >= PAD_MAX_CHEATS) - { - dprintf("Maximum number of cheats exceeded!\n"); -80026eb4: 0c00ed8f jal 8003b63c -80026eb8: 24840fd4 addiu a0,a0,4052 - } - - cheatsArray[idx++] = cheat; - - return true; -} -80026ebc: 8fbf0014 lw ra,20(sp) - static uint8_t idx = 0; - - if(idx >= PAD_MAX_CHEATS) - { - dprintf("Maximum number of cheats exceeded!\n"); - return false; -80026ec0: 00001021 move v0,zero - } - - cheatsArray[idx++] = cheat; - - return true; -} -80026ec4: 03e00008 jr ra -80026ec8: 27bd0018 addiu sp,sp,24 - { - dprintf("Maximum number of cheats exceeded!\n"); - return false; - } - - cheatsArray[idx++] = cheat; -80026ecc: a0651c64 sb a1,7268(v1) -80026ed0: 3c038004 lui v1,0x8004 -80026ed4: 24635fb4 addiu v1,v1,24500 -80026ed8: 00021080 sll v0,v0,0x2 -80026edc: 00431021 addu v0,v0,v1 -80026ee0: ac440000 sw a0,0(v0) - - return true; -80026ee4: 03e00008 jr ra -80026ee8: 24020001 li v0,1 - -80026eec : - * Local Prototypes - * *************************************/ -static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData); - -bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData) -{ -80026eec: 27bdff48 addiu sp,sp,-184 -80026ef0: afb00090 sw s0,144(sp) - char * lineBufferPtr; - char * pltBufferSavePtr; - char strHour[PLT_HOUR_MINUTE_CHARACTERS]; - char strMinutes[PLT_HOUR_MINUTE_CHARACTERS]; - - if(SystemLoadFileToBuffer(strPath,(uint8_t*)strPltBuffer,PLT_BUFFER_SIZE) == false) -80026ef4: 3c108004 lui s0,0x8004 - * Local Prototypes - * *************************************/ -static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData); - -bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData) -{ -80026ef8: afb10094 sw s1,148(sp) - char * lineBufferPtr; - char * pltBufferSavePtr; - char strHour[PLT_HOUR_MINUTE_CHARACTERS]; - char strMinutes[PLT_HOUR_MINUTE_CHARACTERS]; - - if(SystemLoadFileToBuffer(strPath,(uint8_t*)strPltBuffer,PLT_BUFFER_SIZE) == false) -80026efc: 24062800 li a2,10240 - * Local Prototypes - * *************************************/ -static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData); - -bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData) -{ -80026f00: 00a08821 move s1,a1 - char * lineBufferPtr; - char * pltBufferSavePtr; - char strHour[PLT_HOUR_MINUTE_CHARACTERS]; - char strMinutes[PLT_HOUR_MINUTE_CHARACTERS]; - - if(SystemLoadFileToBuffer(strPath,(uint8_t*)strPltBuffer,PLT_BUFFER_SIZE) == false) -80026f04: 2605604c addiu a1,s0,24652 - * Local Prototypes - * *************************************/ -static void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData); - -bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData) -{ -80026f08: afb500a4 sw s5,164(sp) -80026f0c: afb20098 sw s2,152(sp) -80026f10: afbf00b4 sw ra,180(sp) -80026f14: afbe00b0 sw s8,176(sp) -80026f18: afb700ac sw s7,172(sp) -80026f1c: afb600a8 sw s6,168(sp) -80026f20: afb400a0 sw s4,160(sp) -80026f24: afb3009c sw s3,156(sp) - char * lineBufferPtr; - char * pltBufferSavePtr; - char strHour[PLT_HOUR_MINUTE_CHARACTERS]; - char strMinutes[PLT_HOUR_MINUTE_CHARACTERS]; - - if(SystemLoadFileToBuffer(strPath,(uint8_t*)strPltBuffer,PLT_BUFFER_SIZE) == false) -80026f28: 0c009fd8 jal 80027f60 -80026f2c: 00809021 move s2,a0 -80026f30: 14400005 bnez v0,80026f48 -80026f34: 0040a821 move s5,v0 - { - dprintf("Error loading file %s!\n",strPath); -80026f38: 3c048004 lui a0,0x8004 -80026f3c: 02402821 move a1,s2 -80026f40: 1000012d b 800273f8 -80026f44: 24840ff8 addiu a0,a0,4088 -80026f48: 02009821 move s3,s0 -80026f4c: 26320180 addiu s2,s1,384 -80026f50: 26300080 addiu s0,s1,128 -{ - uint8_t i; - - for(i = 0; i < GAME_MAX_AIRCRAFT ; i++) - { - memset(ptrFlightData->strFlightNumber[i],'\0',GAME_MAX_CHARACTERS); -80026f54: 02002021 move a0,s0 -80026f58: 24060008 li a2,8 -80026f5c: 00002821 move a1,zero -80026f60: 0c00d7ab jal 80035eac -80026f64: 26100008 addiu s0,s0,8 - -void PltParserResetBuffers(TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint8_t i; - - for(i = 0; i < GAME_MAX_AIRCRAFT ; i++) -80026f68: 1612fffa bne s0,s2,80026f54 -80026f6c: 24060020 li a2,32 - { - memset(ptrFlightData->strFlightNumber[i],'\0',GAME_MAX_CHARACTERS); - } - - memset(ptrFlightData->FlightDirection,DEPARTURE,GAME_MAX_AIRCRAFT); -80026f70: 24050001 li a1,1 -80026f74: 0c00d7ab jal 80035eac -80026f78: 02202021 move a0,s1 - memset(ptrFlightData->Passengers,0,GAME_MAX_AIRCRAFT); -80026f7c: 02002021 move a0,s0 -80026f80: 24060020 li a2,32 -80026f84: 0c00d7ab jal 80035eac -80026f88: 00002821 move a1,zero - memset(ptrFlightData->Hours,0,GAME_MAX_AIRCRAFT); -80026f8c: 24060020 li a2,32 -80026f90: 00002821 move a1,zero -80026f94: 0c00d7ab jal 80035eac -80026f98: 262401a0 addiu a0,s1,416 - memset(ptrFlightData->Minutes,0,GAME_MAX_AIRCRAFT); -80026f9c: 24060020 li a2,32 -80026fa0: 00002821 move a1,zero -80026fa4: 0c00d7ab jal 80035eac -80026fa8: 262401c0 addiu a0,s1,448 - memset(ptrFlightData->State,STATE_IDLE,GAME_MAX_AIRCRAFT); -80026fac: 24060020 li a2,32 -80026fb0: 00002821 move a1,zero -80026fb4: 0c00d7ab jal 80035eac -80026fb8: 26240204 addiu a0,s1,516 - memset(ptrFlightData->NotificationRequest,0,GAME_MAX_AIRCRAFT); -80026fbc: 24060020 li a2,32 -80026fc0: 00002821 move a1,zero -80026fc4: 0c00d7ab jal 80035eac -80026fc8: 26240284 addiu a0,s1,644 - - PltParserResetBuffers(ptrFlightData); - - // Now, buffer shall be read from line to line - - buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr); -80026fcc: 3c128004 lui s2,0x8004 - memset(ptrFlightData->Passengers,0,GAME_MAX_AIRCRAFT); - memset(ptrFlightData->Hours,0,GAME_MAX_AIRCRAFT); - memset(ptrFlightData->Minutes,0,GAME_MAX_AIRCRAFT); - memset(ptrFlightData->State,STATE_IDLE,GAME_MAX_AIRCRAFT); - memset(ptrFlightData->NotificationRequest,0,GAME_MAX_AIRCRAFT); - memset(ptrFlightData->Parking,0,GAME_MAX_AIRCRAFT); -80026fd0: 24060020 li a2,32 -80026fd4: 00002821 move a1,zero -80026fd8: 0c00d7ab jal 80035eac -80026fdc: 262401e0 addiu a0,s1,480 - - PltParserResetBuffers(ptrFlightData); - - // Now, buffer shall be read from line to line - - buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr); -80026fe0: 2664604c addiu a0,s3,24652 -80026fe4: 27a60074 addiu a2,sp,116 -80026fe8: 0c00dda6 jal 80037698 -80026fec: 264508dc addiu a1,s2,2268 - FLIGHT_NUMBER_INDEX, - PASSENGERS_INDEX, - HOURS_MINUTES_INDEX, - PARKING_INDEX - };*/ - switch(i) -80026ff0: 3c168004 lui s6,0x8004 - - PltParserResetBuffers(ptrFlightData); - - // Now, buffer shall be read from line to line - - buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr); -80026ff4: 00409821 move s3,v0 - else - { - // File header (initial game time) has already been read - strncpy(lineBuffer, buffer, LINE_MAX); - - lineBufferPtr = strtok(lineBuffer,";"); -80026ff8: 3c178004 lui s7,0x8004 - FLIGHT_NUMBER_INDEX, - PASSENGERS_INDEX, - HOURS_MINUTES_INDEX, - PARKING_INDEX - };*/ - switch(i) -80026ffc: 26c2f804 addiu v0,s6,-2044 -bool PltParserLoadFile(char * strPath, TYPE_FLIGHT_DATA * ptrFlightData) -{ - uint8_t i; - uint8_t j; - uint8_t aircraftIndex; - bool first_line_read = false; -80027000: 0000a021 move s4,zero - - // Now, buffer shall be read from line to line - - buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr); - - aircraftIndex = 0; -80027004: 00008021 move s0,zero - FLIGHT_NUMBER_INDEX, - PASSENGERS_INDEX, - HOURS_MINUTES_INDEX, - PARKING_INDEX - };*/ - switch(i) -80027008: afa20080 sw v0,128(sp) - - default: - break; - } - - lineBufferPtr = strtok(NULL,";"); -8002700c: 26fe1030 addiu s8,s7,4144 - - buffer = strtok_r(strPltBuffer,"\n",&pltBufferSavePtr); - - aircraftIndex = 0; - - while(buffer != NULL) -80027010: 126000f4 beqz s3,800273e4 -80027014: 24020023 li v0,35 - { - if(buffer[0] == '#') -80027018: 82630000 lb v1,0(s3) -8002701c: 00000000 nop -80027020: 14620006 bne v1,v0,8002703c -80027024: 27a60074 addiu a2,sp,116 - { - // Comment line - buffer = strtok_r(NULL,"\n",&pltBufferSavePtr); -80027028: 264508dc addiu a1,s2,2268 -8002702c: 0c00dda6 jal 80037698 -80027030: 00002021 move a0,zero - continue; -80027034: 1000fff6 b 80027010 -80027038: 00409821 move s3,v0 - } - - if(first_line_read == false) -8002703c: 1680003e bnez s4,80027138 -80027040: 24060064 li a2,100 - { - // First (non-comment) line should indicate level time - // i.e.: 10:30, or 22:45 - first_line_read = true; - - if(strlen(buffer) != PLT_FIRST_LINE_CHARACTERS) -80027044: 0c00d8af jal 800362bc -80027048: 02602021 move a0,s3 -8002704c: 24030005 li v1,5 -80027050: 144300ed bne v0,v1,80027408 -80027054: 2402003a li v0,58 - // Format should always be HH:MM (5 characters) - // Treat any other combination as possible error - return false; - } - - if(buffer[PLT_COLON_POSITION] != ':') -80027058: 82630002 lb v1,2(s3) -8002705c: 00000000 nop -80027060: 146200e9 bne v1,v0,80027408 -80027064: 00001021 move v0,zero - - j = 0; - - for(i = 0; i < PLT_FIRST_LINE_CHARACTERS ; i++) - { - if(i == PLT_COLON_POSITION) -80027068: 24070002 li a3,2 - { - j = 0; - buffer = strtok(NULL,"\n"); -8002706c: 264808dc addiu t0,s2,2268 - return false; - } - - j = 0; - - for(i = 0; i < PLT_FIRST_LINE_CHARACTERS ; i++) -80027070: 24160005 li s6,5 - { - if(i == PLT_COLON_POSITION) -80027074: 1687000b bne s4,a3,800270a4 -80027078: 328300ff andi v1,s4,0xff - { - j = 0; - buffer = strtok(NULL,"\n"); -8002707c: 01002821 move a1,t0 -80027080: 00002021 move a0,zero -80027084: afa70088 sw a3,136(sp) -80027088: 0c00ddea jal 800377a8 -8002708c: afa80084 sw t0,132(sp) -80027090: 00409821 move s3,v0 - continue; -80027094: 8fa80084 lw t0,132(sp) -80027098: 8fa70088 lw a3,136(sp) -8002709c: 1000000f b 800270dc -800270a0: 00001021 move v0,zero - } - else if(i < PLT_COLON_POSITION) -800270a4: 2c630002 sltiu v1,v1,2 -800270a8: 24440001 addiu a0,v0,1 -800270ac: 10600006 beqz v1,800270c8 -800270b0: 02742821 addu a1,s3,s4 - { - strHour[j++] = buffer[i]; -800270b4: 80a30000 lb v1,0(a1) -800270b8: 27a50010 addiu a1,sp,16 -800270bc: 00a21021 addu v0,a1,v0 -800270c0: 10000005 b 800270d8 -800270c4: a043006c sb v1,108(v0) - } - else - { - strMinutes[j++] = buffer[i]; -800270c8: 80a30000 lb v1,0(a1) -800270cc: 27a50010 addiu a1,sp,16 -800270d0: 00a21021 addu v0,a1,v0 -800270d4: a0430068 sb v1,104(v0) -800270d8: 308200ff andi v0,a0,0xff -800270dc: 26940001 addiu s4,s4,1 - return false; - } - - j = 0; - - for(i = 0; i < PLT_FIRST_LINE_CHARACTERS ; i++) -800270e0: 1696ffe4 bne s4,s6,80027074 -800270e4: 00000000 nop - { - strMinutes[j++] = buffer[i]; - } - } - - GameSetTime((uint8_t)atoi(strHour),(uint8_t)atoi(strMinutes) ); -800270e8: 0c00df72 jal 80037dc8 -800270ec: 27a4007c addiu a0,sp,124 -800270f0: 27a40078 addiu a0,sp,120 -800270f4: 0c00df72 jal 80037dc8 -800270f8: 00409821 move s3,v0 -800270fc: 304500ff andi a1,v0,0xff -80027100: 0c008c70 jal 800231c0 -80027104: 326400ff andi a0,s3,0xff - dprintf("Game time set to %.2d:%.2d.\n",(uint8_t)atoi(strHour),(uint8_t)atoi(strMinutes) ); -80027108: 0c00df72 jal 80037dc8 -8002710c: 27a4007c addiu a0,sp,124 -80027110: 27a40078 addiu a0,sp,120 -80027114: 0c00df72 jal 80037dc8 -80027118: 00409821 move s3,v0 -8002711c: 3c048004 lui a0,0x8004 -80027120: 304600ff andi a2,v0,0xff -80027124: 326500ff andi a1,s3,0xff -80027128: 0c00ed8f jal 8003b63c -8002712c: 24841010 addiu a0,a0,4112 -80027130: 100000a6 b 800273cc -80027134: 27a60074 addiu a2,sp,116 - } - else - { - // File header (initial game time) has already been read - strncpy(lineBuffer, buffer, LINE_MAX); -80027138: 02602821 move a1,s3 -8002713c: 0c00d860 jal 80036180 -80027140: 27a40010 addiu a0,sp,16 - - lineBufferPtr = strtok(lineBuffer,";"); -80027144: 26e51030 addiu a1,s7,4144 -80027148: 0c00ddea jal 800377a8 -8002714c: 27a40010 addiu a0,sp,16 - dprintf("Flight direction is not correct!\n"); - } - break; - - case FLIGHT_NUMBER_INDEX: - strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS); -80027150: 26140010 addiu s4,s0,16 - - lineBufferPtr = strtok(lineBuffer,";"); - - i = 0; - - dprintf("New line read: %s\n",buffer); -80027154: 3c048004 lui a0,0x8004 -80027158: 02602821 move a1,s3 -8002715c: 24841034 addiu a0,a0,4148 - dprintf("Flight direction is not correct!\n"); - } - break; - - case FLIGHT_NUMBER_INDEX: - strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS); -80027160: 0014a0c0 sll s4,s4,0x3 - else - { - // File header (initial game time) has already been read - strncpy(lineBuffer, buffer, LINE_MAX); - - lineBufferPtr = strtok(lineBuffer,";"); -80027164: 0040b021 move s6,v0 - - i = 0; - - dprintf("New line read: %s\n",buffer); -80027168: 0c00ed8f jal 8003b63c -8002716c: 00009821 move s3,zero - dprintf("Flight direction is not correct!\n"); - } - break; - - case FLIGHT_NUMBER_INDEX: - strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS); -80027170: 0234a021 addu s4,s1,s4 - - i = 0; - - dprintf("New line read: %s\n",buffer); - - while(lineBufferPtr != NULL) -80027174: 12c0008c beqz s6,800273a8 -80027178: 2e620005 sltiu v0,s3,5 - FLIGHT_NUMBER_INDEX, - PASSENGERS_INDEX, - HOURS_MINUTES_INDEX, - PARKING_INDEX - };*/ - switch(i) -8002717c: 10400083 beqz v0,8002738c -80027180: 00131080 sll v0,s3,0x2 -80027184: 8fa30080 lw v1,128(sp) -80027188: 00000000 nop -8002718c: 00621021 addu v0,v1,v0 -80027190: 8c420000 lw v0,0(v0) -80027194: 00000000 nop -80027198: 00400008 jr v0 -8002719c: 00000000 nop - { - case DEPARTURE_ARRIVAL_INDEX: - - if(strncmp(lineBufferPtr,"DEPARTURE",strlen("DEPARTURE") ) == 0) -800271a0: 3c058004 lui a1,0x8004 -800271a4: 24a41048 addiu a0,a1,4168 -800271a8: 0c00d8af jal 800362bc -800271ac: afa50084 sw a1,132(sp) -800271b0: 8fa50084 lw a1,132(sp) -800271b4: 00403021 move a2,v0 -800271b8: 24a51048 addiu a1,a1,4168 -800271bc: 0c00d9dd jal 80036774 -800271c0: 02c02021 move a0,s6 -800271c4: 14400008 bnez v0,800271e8 -800271c8: 00101080 sll v0,s0,0x2 - { - ptrFlightData->FlightDirection[aircraftIndex] = DEPARTURE; -800271cc: 02221021 addu v0,s1,v0 -800271d0: 24030001 li v1,1 - dprintf("Aircraft %d set to DEPARTURE.\n",aircraftIndex); -800271d4: 3c048004 lui a0,0x8004 - { - case DEPARTURE_ARRIVAL_INDEX: - - if(strncmp(lineBufferPtr,"DEPARTURE",strlen("DEPARTURE") ) == 0) - { - ptrFlightData->FlightDirection[aircraftIndex] = DEPARTURE; -800271d8: ac430000 sw v1,0(v0) - dprintf("Aircraft %d set to DEPARTURE.\n",aircraftIndex); -800271dc: 02002821 move a1,s0 -800271e0: 10000013 b 80027230 -800271e4: 24841054 addiu a0,a0,4180 - } - else if(strncmp(lineBufferPtr,"ARRIVAL",strlen("ARRIVAL") ) == 0) -800271e8: 3c058004 lui a1,0x8004 -800271ec: 24a41074 addiu a0,a1,4212 -800271f0: 0c00d8af jal 800362bc -800271f4: afa50084 sw a1,132(sp) -800271f8: 8fa50084 lw a1,132(sp) -800271fc: 00403021 move a2,v0 -80027200: 24a51074 addiu a1,a1,4212 -80027204: 0c00d9dd jal 80036774 -80027208: 02c02021 move a0,s6 -8002720c: 1440000c bnez v0,80027240 -80027210: 3c048004 lui a0,0x8004 - { - ptrFlightData->FlightDirection[aircraftIndex] = ARRIVAL; -80027214: 00101080 sll v0,s0,0x2 -80027218: 02221021 addu v0,s1,v0 -8002721c: 24030002 li v1,2 - dprintf("Aircraft %d set to ARRIVAL.\n",aircraftIndex); -80027220: 3c048004 lui a0,0x8004 - ptrFlightData->FlightDirection[aircraftIndex] = DEPARTURE; - dprintf("Aircraft %d set to DEPARTURE.\n",aircraftIndex); - } - else if(strncmp(lineBufferPtr,"ARRIVAL",strlen("ARRIVAL") ) == 0) - { - ptrFlightData->FlightDirection[aircraftIndex] = ARRIVAL; -80027224: ac430000 sw v1,0(v0) - dprintf("Aircraft %d set to ARRIVAL.\n",aircraftIndex); -80027228: 02002821 move a1,s0 -8002722c: 2484107c addiu a0,a0,4220 -80027230: 0c00ed8f jal 8003b63c -80027234: 00000000 nop -80027238: 10000055 b 80027390 -8002723c: 03c02821 move a1,s8 - } - else - { - dprintf("Flight direction is not correct!\n"); -80027240: 10000037 b 80027320 -80027244: 2484109c addiu a0,a0,4252 - } - break; - - case FLIGHT_NUMBER_INDEX: - strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS); -80027248: 24060008 li a2,8 -8002724c: 02c02821 move a1,s6 -80027250: 0c00d860 jal 80036180 -80027254: 02802021 move a0,s4 - ptrFlightData->strFlightNumber[aircraftIndex][GAME_MAX_CHARACTERS - 1] = '\0'; -80027258: 001010c0 sll v0,s0,0x3 -8002725c: 02221021 addu v0,s1,v0 - dprintf("Aircraft %d flight number set to %s.\n",aircraftIndex,ptrFlightData->strFlightNumber[aircraftIndex]); -80027260: 3c048004 lui a0,0x8004 - } - break; - - case FLIGHT_NUMBER_INDEX: - strncpy(ptrFlightData->strFlightNumber[aircraftIndex],lineBufferPtr,GAME_MAX_CHARACTERS); - ptrFlightData->strFlightNumber[aircraftIndex][GAME_MAX_CHARACTERS - 1] = '\0'; -80027264: a0400087 sb zero,135(v0) - dprintf("Aircraft %d flight number set to %s.\n",aircraftIndex,ptrFlightData->strFlightNumber[aircraftIndex]); -80027268: 02803021 move a2,s4 -8002726c: 02002821 move a1,s0 -80027270: 10000009 b 80027298 -80027274: 248410c0 addiu a0,a0,4288 - break; - - case PASSENGERS_INDEX: - ptrFlightData->Passengers[aircraftIndex] = atoi(lineBufferPtr); -80027278: 0c00df72 jal 80037dc8 -8002727c: 02c02021 move a0,s6 -80027280: 02301821 addu v1,s1,s0 - dprintf("Aircraft %d passengers set to %d.\n",aircraftIndex,ptrFlightData->Passengers[aircraftIndex]); -80027284: 3c048004 lui a0,0x8004 - ptrFlightData->strFlightNumber[aircraftIndex][GAME_MAX_CHARACTERS - 1] = '\0'; - dprintf("Aircraft %d flight number set to %s.\n",aircraftIndex,ptrFlightData->strFlightNumber[aircraftIndex]); - break; - - case PASSENGERS_INDEX: - ptrFlightData->Passengers[aircraftIndex] = atoi(lineBufferPtr); -80027288: a0620180 sb v0,384(v1) - dprintf("Aircraft %d passengers set to %d.\n",aircraftIndex,ptrFlightData->Passengers[aircraftIndex]); -8002728c: 304600ff andi a2,v0,0xff -80027290: 02002821 move a1,s0 -80027294: 248410e8 addiu a0,a0,4328 -80027298: 0c00ed8f jal 8003b63c -8002729c: 00000000 nop - break; -800272a0: 1000003b b 80027390 -800272a4: 03c02821 move a1,s8 - - case PARKING_INDEX: - if(ptrFlightData->FlightDirection[aircraftIndex] == DEPARTURE) -800272a8: 00101080 sll v0,s0,0x2 -800272ac: 02221021 addu v0,s1,v0 -800272b0: 8c440000 lw a0,0(v0) -800272b4: 24020001 li v0,1 -800272b8: 14820007 bne a0,v0,800272d8 -800272bc: 02302821 addu a1,s1,s0 - { - ptrFlightData->Parking[aircraftIndex] = atoi(lineBufferPtr); -800272c0: 02c02021 move a0,s6 -800272c4: 0c00df72 jal 80037dc8 -800272c8: afa50084 sw a1,132(sp) -800272cc: 8fa50084 lw a1,132(sp) -800272d0: 10000002 b 800272dc -800272d4: a0a201e0 sb v0,480(a1) - } - else - { - ptrFlightData->Parking[aircraftIndex] = 0; -800272d8: a0a001e0 sb zero,480(a1) - } - dprintf("Aircraft %d parking set to %d.\n",aircraftIndex,ptrFlightData->Parking[aircraftIndex]); -800272dc: 3c048004 lui a0,0x8004 -800272e0: 90a601e0 lbu a2,480(a1) -800272e4: 2484110c addiu a0,a0,4364 -800272e8: 1000ffeb b 80027298 -800272ec: 02002821 move a1,s0 - break; - - case HOURS_MINUTES_INDEX: - if( strlen(lineBufferPtr) != strlen("HH:MM") ) -800272f0: 0c00d8af jal 800362bc -800272f4: 02c02021 move a0,s6 -800272f8: 3c048004 lui a0,0x8004 -800272fc: 2484112c addiu a0,a0,4396 -80027300: 0c00d8af jal 800362bc -80027304: afa20084 sw v0,132(sp) -80027308: 8fa50084 lw a1,132(sp) -8002730c: 00000000 nop -80027310: 10a20007 beq a1,v0,80027330 -80027314: 27a4007c addiu a0,sp,124 - { - dprintf("Hour minute format is not correct!\n"); -80027318: 3c048004 lui a0,0x8004 -8002731c: 24841134 addiu a0,a0,4404 -80027320: 0c00ed8f jal 8003b63c -80027324: 00000000 nop - break; -80027328: 10000019 b 80027390 -8002732c: 03c02821 move a1,s8 - } - - // Copy hour - strHour[0] = lineBufferPtr[0]; -80027330: 82c20000 lb v0,0(s6) -80027334: 00000000 nop -80027338: a3a2007c sb v0,124(sp) - strHour[1] = lineBufferPtr[1]; -8002733c: 82c20001 lb v0,1(s6) -80027340: 00000000 nop -80027344: a3a2007d sb v0,125(sp) - // Copy minutes - strMinutes[0] = lineBufferPtr[3]; -80027348: 92c20003 lbu v0,3(s6) -8002734c: 00000000 nop -80027350: a3a20078 sb v0,120(sp) - strMinutes[1] = lineBufferPtr[4]; -80027354: 92c20004 lbu v0,4(s6) - - ptrFlightData->Hours[aircraftIndex] = (uint8_t)atoi(strHour); -80027358: 0230b021 addu s6,s1,s0 -8002735c: 0c00df72 jal 80037dc8 -80027360: a3a20079 sb v0,121(sp) -80027364: a2c201a0 sb v0,416(s6) - ptrFlightData->Minutes[aircraftIndex] = (uint8_t)atoi(strMinutes); -80027368: 0c00df72 jal 80037dc8 -8002736c: 27a40078 addiu a0,sp,120 - - dprintf("Aircraft %d time set to %.2d:%.2d.\n", aircraftIndex, -80027370: 3c048004 lui a0,0x8004 -80027374: 92c601a0 lbu a2,416(s6) - // Copy minutes - strMinutes[0] = lineBufferPtr[3]; - strMinutes[1] = lineBufferPtr[4]; - - ptrFlightData->Hours[aircraftIndex] = (uint8_t)atoi(strHour); - ptrFlightData->Minutes[aircraftIndex] = (uint8_t)atoi(strMinutes); -80027378: a2c201c0 sb v0,448(s6) - - dprintf("Aircraft %d time set to %.2d:%.2d.\n", aircraftIndex, -8002737c: 304700ff andi a3,v0,0xff -80027380: 02002821 move a1,s0 -80027384: 0c00ed8f jal 8003b63c -80027388: 24841158 addiu a0,a0,4440 - - default: - break; - } - - lineBufferPtr = strtok(NULL,";"); -8002738c: 03c02821 move a1,s8 -80027390: 0c00ddea jal 800377a8 -80027394: 00002021 move a0,zero - i++; -80027398: 26730001 addiu s3,s3,1 - - default: - break; - } - - lineBufferPtr = strtok(NULL,";"); -8002739c: 0040b021 move s6,v0 - i++; -800273a0: 1000ff74 b 80027174 -800273a4: 327300ff andi s3,s3,0xff - } - - ptrFlightData->State[aircraftIndex] = STATE_IDLE; -800273a8: 26020080 addiu v0,s0,128 -800273ac: 00021080 sll v0,v0,0x2 -800273b0: 02221021 addu v0,s1,v0 -800273b4: ac400004 sw zero,4(v0) - ptrFlightData->NotificationRequest[aircraftIndex] = false; -800273b8: 02301021 addu v0,s1,s0 - aircraftIndex++; -800273bc: 26100001 addiu s0,s0,1 - lineBufferPtr = strtok(NULL,";"); - i++; - } - - ptrFlightData->State[aircraftIndex] = STATE_IDLE; - ptrFlightData->NotificationRequest[aircraftIndex] = false; -800273c0: a0400284 sb zero,644(v0) - aircraftIndex++; -800273c4: 321000ff andi s0,s0,0xff - } - - buffer = strtok_r(NULL,"\n",&pltBufferSavePtr); -800273c8: 27a60074 addiu a2,sp,116 -800273cc: 264508dc addiu a1,s2,2268 -800273d0: 0c00dda6 jal 80037698 -800273d4: 00002021 move a0,zero -800273d8: 00409821 move s3,v0 -800273dc: 1000ff0c b 80027010 -800273e0: 24140001 li s4,1 - } - - ptrFlightData->nAircraft = aircraftIndex; //Set total number of aircraft used - ptrFlightData->ActiveAircraft = 0; - - dprintf("Number of aircraft parsed: %d\n",ptrFlightData->nAircraft); -800273e4: 3c048004 lui a0,0x8004 - } - - buffer = strtok_r(NULL,"\n",&pltBufferSavePtr); - } - - ptrFlightData->nAircraft = aircraftIndex; //Set total number of aircraft used -800273e8: a2300200 sb s0,512(s1) - ptrFlightData->ActiveAircraft = 0; -800273ec: a2200201 sb zero,513(s1) - - dprintf("Number of aircraft parsed: %d\n",ptrFlightData->nAircraft); -800273f0: 02002821 move a1,s0 -800273f4: 2484117c addiu a0,a0,4476 -800273f8: 0c00ed8f jal 8003b63c -800273fc: 00000000 nop - - return true; -80027400: 10000002 b 8002740c -80027404: 00000000 nop - - if(strlen(buffer) != PLT_FIRST_LINE_CHARACTERS) - { - // Format should always be HH:MM (5 characters) - // Treat any other combination as possible error - return false; -80027408: 0000a821 move s5,zero - ptrFlightData->ActiveAircraft = 0; - - dprintf("Number of aircraft parsed: %d\n",ptrFlightData->nAircraft); - - return true; -} -8002740c: 8fbf00b4 lw ra,180(sp) -80027410: 02a01021 move v0,s5 -80027414: 8fbe00b0 lw s8,176(sp) -80027418: 8fb700ac lw s7,172(sp) -8002741c: 8fb600a8 lw s6,168(sp) -80027420: 8fb500a4 lw s5,164(sp) -80027424: 8fb400a0 lw s4,160(sp) -80027428: 8fb3009c lw s3,156(sp) -8002742c: 8fb20098 lw s2,152(sp) -80027430: 8fb10094 lw s1,148(sp) -80027434: 8fb00090 lw s0,144(sp) -80027438: 03e00008 jr ra -8002743c: 27bd00b8 addiu sp,sp,184 - -80027440 : -SsVag TrayClSnd; -SsVag SpinDiskSnd; - -void PSXSDKIntroDrawChar(short x, short y, char ch) -{ - PSXSDKIntroFont.w = FONT_SIZE; -80027440: 3c038007 lui v1,0x8007 -80027444: 2462d1ec addiu v0,v1,-11796 -80027448: 24070010 li a3,16 - PSXSDKIntroFont.h = FONT_SIZE; - PSXSDKIntroFont.tpage = FONT_TPAGE; - - if( (ch >= 'A') && (ch <= 'Z') ) -8002744c: 24c6ffbf addiu a2,a2,-65 -SsVag TrayClSnd; -SsVag SpinDiskSnd; - -void PSXSDKIntroDrawChar(short x, short y, char ch) -{ - PSXSDKIntroFont.w = FONT_SIZE; -80027450: a4470006 sh a3,6(v0) - PSXSDKIntroFont.h = FONT_SIZE; -80027454: a4470008 sh a3,8(v0) - PSXSDKIntroFont.tpage = FONT_TPAGE; - - if( (ch >= 'A') && (ch <= 'Z') ) -80027458: 30c600ff andi a2,a2,0xff - -void PSXSDKIntroDrawChar(short x, short y, char ch) -{ - PSXSDKIntroFont.w = FONT_SIZE; - PSXSDKIntroFont.h = FONT_SIZE; - PSXSDKIntroFont.tpage = FONT_TPAGE; -8002745c: 24070006 li a3,6 -80027460: a0470011 sb a3,17(v0) - - if( (ch >= 'A') && (ch <= 'Z') ) -80027464: 2cc7001a sltiu a3,a2,26 -80027468: 10e00011 beqz a3,800274b0 -8002746c: 00063600 sll a2,a2,0x18 - { - ch -= 'A'; // Reset offset -80027470: 00063603 sra a2,a2,0x18 - - PSXSDKIntroFont.x = x; -80027474: a464d1ec sh a0,-11796(v1) - PSXSDKIntroFont.y = y; - - PSXSDKIntroFont.u = FONT_U + ( (ch % FONT_COLUMNS) << FONT_SIZE_BITSHIFT); -80027478: 24030005 li v1,5 -8002747c: 14600002 bnez v1,80027488 -80027480: 00c3001a div zero,a2,v1 -80027484: 0007000d break 0x7 - PSXSDKIntroFont.v = FONT_V + ((short)(ch / FONT_COLUMNS) << FONT_SIZE_BITSHIFT); - - GfxSortSprite(&PSXSDKIntroFont); -80027488: 00402021 move a0,v0 - if( (ch >= 'A') && (ch <= 'Z') ) - { - ch -= 'A'; // Reset offset - - PSXSDKIntroFont.x = x; - PSXSDKIntroFont.y = y; -8002748c: a4450002 sh a1,2(v0) - - PSXSDKIntroFont.u = FONT_U + ( (ch % FONT_COLUMNS) << FONT_SIZE_BITSHIFT); -80027490: 00003012 mflo a2 - PSXSDKIntroFont.v = FONT_V + ((short)(ch / FONT_COLUMNS) << FONT_SIZE_BITSHIFT); -80027494: 00063100 sll a2,a2,0x4 -80027498: 24c6004c addiu a2,a2,76 - ch -= 'A'; // Reset offset - - PSXSDKIntroFont.x = x; - PSXSDKIntroFont.y = y; - - PSXSDKIntroFont.u = FONT_U + ( (ch % FONT_COLUMNS) << FONT_SIZE_BITSHIFT); -8002749c: 00001810 mfhi v1 -800274a0: 00031900 sll v1,v1,0x4 -800274a4: a0430004 sb v1,4(v0) - PSXSDKIntroFont.v = FONT_V + ((short)(ch / FONT_COLUMNS) << FONT_SIZE_BITSHIFT); - - GfxSortSprite(&PSXSDKIntroFont); -800274a8: 080090d2 j 80024348 -800274ac: a0460005 sb a2,5(v0) -800274b0: 03e00008 jr ra -800274b4: 00000000 nop - -800274b8 : - return; - } -} - -void PSXSDKIntro(void) -{ -800274b8: 27bdffa0 addiu sp,sp,-96 - PSXSDKIntroRandTextEvent = false; - PSXSDKIntroRandTextEventReminder = false; - PSXSDKIntroStringEvent = false; - PSXSDKIntroClose = false; - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); -800274bc: 24040080 li a0,128 - return; - } -} - -void PSXSDKIntro(void) -{ -800274c0: afb70054 sw s7,84(sp) -800274c4: afb60050 sw s6,80(sp) -800274c8: afb5004c sw s5,76(sp) -800274cc: afb40048 sw s4,72(sp) -800274d0: afb30044 sw s3,68(sp) -800274d4: afb20040 sw s2,64(sp) -800274d8: afb1003c sw s1,60(sp) -800274dc: afb00038 sw s0,56(sp) - int i; - - PSXSDKIntroCloseShellEvent = false; - PSXSDKIntroCloseShellEventReminder = false; -800274e0: 3c178007 lui s7,0x8007 - PSXSDKIntroSpinDiskEvent = false; - PSXSDKIntroSpinDiskEventReminder = false; - PSXSDKIntroRandTextEvent = false; - PSXSDKIntroRandTextEventReminder = false; -800274e4: 3c108007 lui s0,0x8007 - int i; - - PSXSDKIntroCloseShellEvent = false; - PSXSDKIntroCloseShellEventReminder = false; - PSXSDKIntroSpinDiskEvent = false; - PSXSDKIntroSpinDiskEventReminder = false; -800274e8: 3c168007 lui s6,0x8007 - -void PSXSDKIntro(void) -{ - int i; - - PSXSDKIntroCloseShellEvent = false; -800274ec: 3c118007 lui s1,0x8007 - PSXSDKIntroCloseShellEventReminder = false; - PSXSDKIntroSpinDiskEvent = false; -800274f0: 3c128007 lui s2,0x8007 - PSXSDKIntroSpinDiskEventReminder = false; - PSXSDKIntroRandTextEvent = false; -800274f4: 3c138007 lui s3,0x8007 - PSXSDKIntroRandTextEventReminder = false; - PSXSDKIntroStringEvent = false; -800274f8: 3c148007 lui s4,0x8007 - PSXSDKIntroClose = false; -800274fc: 3c158007 lui s5,0x8007 - PSXSDKIntroCloseShellEvent = false; - PSXSDKIntroCloseShellEventReminder = false; - PSXSDKIntroSpinDiskEvent = false; - PSXSDKIntroSpinDiskEventReminder = false; - PSXSDKIntroRandTextEvent = false; - PSXSDKIntroRandTextEventReminder = false; -80027500: a2001c8a sb zero,7306(s0) - return; - } -} - -void PSXSDKIntro(void) -{ -80027504: afbf005c sw ra,92(sp) -80027508: afbe0058 sw s8,88(sp) - int i; - - PSXSDKIntroCloseShellEvent = false; -8002750c: a2201c8f sb zero,7311(s1) - PSXSDKIntroCloseShellEventReminder = false; -80027510: a2e01c8e sb zero,7310(s7) - PSXSDKIntroSpinDiskEvent = false; -80027514: a2401c8d sb zero,7309(s2) - PSXSDKIntroSpinDiskEventReminder = false; -80027518: a2c01c8c sb zero,7308(s6) - PSXSDKIntroRandTextEvent = false; -8002751c: a2601c8b sb zero,7307(s3) - PSXSDKIntroRandTextEventReminder = false; - PSXSDKIntroStringEvent = false; -80027520: a2801c89 sb zero,7305(s4) - PSXSDKIntroClose = false; - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); -80027524: 0c00900b jal 8002402c -80027528: a2a01c88 sb zero,7304(s5) -8002752c: 3c028007 lui v0,0x8007 -80027530: afb0001c sw s0,28(sp) -80027534: afa20028 sw v0,40(sp) - - OpenSource_Logo.x = OPEN_SOURCE_LOGO_X; - OpenSource_Logo.y = OPEN_SOURCE_LOGO_Y; - } - - GfxSortSprite(&GPL_Logo); -80027538: 2450d1c0 addiu s0,v0,-11840 -8002753c: 3c028004 lui v0,0x8004 -80027540: afa2002c sw v0,44(sp) - GfxSortSprite(&OpenSource_Logo); - } - } - - for(i = 0; i < strlen(strPSXSDKIntroAuthor) ; i++) -80027544: 2442119c addiu v0,v0,4508 -80027548: afb70014 sw s7,20(sp) -8002754c: afb60018 sw s6,24(sp) -80027550: afa20030 sw v0,48(sp) - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); - - while(1) - { - while(GfxIsGPUBusy() == true); -80027554: 0c00901d jal 80024074 -80027558: 00000000 nop -8002755c: 1440fffd bnez v0,80027554 -80027560: 00000000 nop - - if( ( (GfxGetGlobalLuminance() - BG_LUMINANCE_STEP) > 0) -80027564: 0c009007 jal 8002401c -80027568: 00000000 nop -8002756c: 2442fffe addiu v0,v0,-2 -80027570: 18400007 blez v0,80027590 -80027574: 00000000 nop - && -80027578: 92a21c88 lbu v0,7304(s5) -8002757c: 00000000 nop -80027580: 10400003 beqz v0,80027590 -80027584: 00000000 nop - (PSXSDKIntroClose == true) ) - { - GfxIncreaseGlobalLuminance(-BG_LUMINANCE_STEP); -80027588: 0c00900e jal 80024038 -8002758c: 2404fffe li a0,-2 - } - - if( (GfxGetGlobalLuminance() <= BG_LUMINANCE_STEP) -80027590: 0c009007 jal 8002401c -80027594: 00000000 nop -80027598: 2c420003 sltiu v0,v0,3 -8002759c: 10400005 beqz v0,800275b4 -800275a0: 00003021 move a2,zero - && -800275a4: 92a21c88 lbu v0,7304(s5) -800275a8: 00000000 nop -800275ac: 14400173 bnez v0,80027b7c -800275b0: 00000000 nop - (PSXSDKIntroClose == true) ) - { - break; - } - - GsSortCls(0,0,0); -800275b4: 00002821 move a1,zero -800275b8: 0c00c4e8 jal 800313a0 -800275bc: 00002021 move a0,zero -800275c0: 3c028004 lui v0,0x8004 -800275c4: 245e11ac addiu s8,v0,4524 -800275c8: afa20010 sw v0,16(sp) -800275cc: 3c028007 lui v0,0x8007 -800275d0: afa20020 sw v0,32(sp) - OpenSource_Logo.x = OPEN_SOURCE_LOGO_X; - OpenSource_Logo.y = OPEN_SOURCE_LOGO_Y; - } - - GfxSortSprite(&GPL_Logo); - GfxSortSprite(&OpenSource_Logo); -800275d4: 2456d16c addiu s6,v0,-11924 - { - if( (PSXSDKIntroRandTextEvent == true) - && - (PSXSDKIntroStringEvent == false) ) - { - if(PSXSDKIntroRandTextEventReminder == false) -800275d8: 3c028007 lui v0,0x8007 - break; - } - - GsSortCls(0,0,0); - - for(i = 0; i < strlen(strPSXSDKIntro) ; i++) -800275dc: 0000b821 move s7,zero - { - if( (PSXSDKIntroRandTextEvent == true) - && - (PSXSDKIntroStringEvent == false) ) - { - if(PSXSDKIntroRandTextEventReminder == false) -800275e0: afa20024 sw v0,36(sp) - break; - } - - GsSortCls(0,0,0); - - for(i = 0; i < strlen(strPSXSDKIntro) ; i++) -800275e4: 8fa20010 lw v0,16(sp) -800275e8: 0c00d8af jal 800362bc -800275ec: 244411ac addiu a0,v0,4524 -800275f0: 02e2102a slt v0,s7,v0 -800275f4: 10400060 beqz v0,80027778 -800275f8: 00000000 nop - { - if( (PSXSDKIntroRandTextEvent == true) -800275fc: 92621c8b lbu v0,7307(s3) -80027600: 00000000 nop -80027604: 10400059 beqz v0,8002776c -80027608: 00171900 sll v1,s7,0x4 - && -8002760c: 92821c89 lbu v0,7305(s4) -80027610: 00000000 nop -80027614: 1440001f bnez v0,80027694 -80027618: afa30034 sw v1,52(sp) - (PSXSDKIntroStringEvent == false) ) - { - if(PSXSDKIntroRandTextEventReminder == false) -8002761c: 8fa2001c lw v0,28(sp) -80027620: 00000000 nop -80027624: 90421c8a lbu v0,7306(v0) -80027628: 00000000 nop -8002762c: 14400008 bnez v0,80027650 -80027630: 2405005a li a1,90 - { - PSXSDKIntroRandTextEventReminder = true; -80027634: 8fa30024 lw v1,36(sp) - SfxPlaySound(&SpinDiskSnd); -80027638: 3c048007 lui a0,0x8007 - && - (PSXSDKIntroStringEvent == false) ) - { - if(PSXSDKIntroRandTextEventReminder == false) - { - PSXSDKIntroRandTextEventReminder = true; -8002763c: 24020001 li v0,1 - SfxPlaySound(&SpinDiskSnd); -80027640: 2484d198 addiu a0,a0,-11880 -80027644: 0c009eeb jal 80027bac -80027648: a0621c8a sb v0,7306(v1) - } - - PSXSDKIntroDrawChar(FONT_X + (i << FONT_SIZE_BITSHIFT),FONT_Y,SystemRand('A','Z')); -8002764c: 2405005a li a1,90 -80027650: 0c00a03d jal 800280f4 -80027654: 24040041 li a0,65 -80027658: 00171900 sll v1,s7,0x4 -8002765c: 24640040 addiu a0,v1,64 -80027660: 00023600 sll a2,v0,0x18 -80027664: 00042400 sll a0,a0,0x10 -80027668: 00063603 sra a2,a2,0x18 -8002766c: 24050090 li a1,144 -80027670: 0c009d10 jal 80027440 -80027674: 00042403 sra a0,a0,0x10 - - GPL_Logo.r = 0; -80027678: a200000e sb zero,14(s0) - GPL_Logo.g = 0; -8002767c: a200000f sb zero,15(s0) - GPL_Logo.b = 0; -80027680: a2000010 sb zero,16(s0) - - OpenSource_Logo.r = 0; -80027684: a2c0000e sb zero,14(s6) - OpenSource_Logo.g = 0; -80027688: a2c0000f sb zero,15(s6) - OpenSource_Logo.b = 0; -8002768c: 10000037 b 8002776c -80027690: a2c00010 sb zero,16(s6) - } - else if( (PSXSDKIntroRandTextEvent == true) - && - (PSXSDKIntroStringEvent == true) ) - { - PSXSDKIntroDrawChar(FONT_X + (i << FONT_SIZE_BITSHIFT),FONT_Y,strPSXSDKIntro[i]); -80027694: 00171100 sll v0,s7,0x4 -80027698: 24440040 addiu a0,v0,64 -8002769c: 83c60000 lb a2,0(s8) -800276a0: 00042400 sll a0,a0,0x10 -800276a4: 24050090 li a1,144 -800276a8: 0c009d10 jal 80027440 -800276ac: 00042403 sra a0,a0,0x10 - - if(System100msTick() == true) -800276b0: 0c009fba jal 80027ee8 -800276b4: 00000000 nop -800276b8: 10400028 beqz v0,8002775c -800276bc: 00000000 nop - { - if(GPL_Logo.r < GPL_LOGO_LUMINANCE_TARGET) -800276c0: 9202000e lbu v0,14(s0) -800276c4: 00000000 nop -800276c8: 00022600 sll a0,v0,0x18 -800276cc: 00042603 sra a0,a0,0x18 -800276d0: 0480000a bltz a0,800276fc -800276d4: 24420001 addiu v0,v0,1 - { - GPL_Logo.r += GPL_LOGO_LUMINANCE_STEP; -800276d8: a202000e sb v0,14(s0) - GPL_Logo.g += GPL_LOGO_LUMINANCE_STEP; -800276dc: 9202000f lbu v0,15(s0) -800276e0: 00000000 nop -800276e4: 24420001 addiu v0,v0,1 -800276e8: a202000f sb v0,15(s0) - GPL_Logo.b += GPL_LOGO_LUMINANCE_STEP; -800276ec: 92020010 lbu v0,16(s0) -800276f0: 00000000 nop -800276f4: 24420001 addiu v0,v0,1 -800276f8: a2020010 sb v0,16(s0) - } - - GPL_Logo.x = GPL_LOGO_X; -800276fc: 8fa30028 lw v1,40(sp) -80027700: 24020010 li v0,16 -80027704: a462d1c0 sh v0,-11840(v1) - GPL_Logo.y = GPL_LOGO_Y; -80027708: a6020002 sh v0,2(s0) - - if(OpenSource_Logo.r < OPEN_SOURCE_LOGO_LUMINANCE_TARGET) -8002770c: 92c2000e lbu v0,14(s6) -80027710: 00000000 nop -80027714: 00022600 sll a0,v0,0x18 -80027718: 00042603 sra a0,a0,0x18 -8002771c: 0480000a bltz a0,80027748 -80027720: 24420001 addiu v0,v0,1 - { - OpenSource_Logo.r += OPEN_SOURCE_LOGO_LUMINANCE_STEP; -80027724: a2c2000e sb v0,14(s6) - OpenSource_Logo.g += OPEN_SOURCE_LOGO_LUMINANCE_STEP; -80027728: 92c2000f lbu v0,15(s6) -8002772c: 00000000 nop -80027730: 24420001 addiu v0,v0,1 -80027734: a2c2000f sb v0,15(s6) - OpenSource_Logo.b += OPEN_SOURCE_LOGO_LUMINANCE_STEP; -80027738: 92c20010 lbu v0,16(s6) -8002773c: 00000000 nop -80027740: 24420001 addiu v0,v0,1 -80027744: a2c20010 sb v0,16(s6) - } - - OpenSource_Logo.x = OPEN_SOURCE_LOGO_X; -80027748: 8fa30020 lw v1,32(sp) -8002774c: 24020130 li v0,304 -80027750: a462d16c sh v0,-11924(v1) - OpenSource_Logo.y = OPEN_SOURCE_LOGO_Y; -80027754: 24020010 li v0,16 -80027758: a6c20002 sh v0,2(s6) - } - - GfxSortSprite(&GPL_Logo); -8002775c: 0c0090d2 jal 80024348 -80027760: 02002021 move a0,s0 - GfxSortSprite(&OpenSource_Logo); -80027764: 0c0090d2 jal 80024348 -80027768: 02c02021 move a0,s6 - break; - } - - GsSortCls(0,0,0); - - for(i = 0; i < strlen(strPSXSDKIntro) ; i++) -8002776c: 26f70001 addiu s7,s7,1 -80027770: 1000ff9c b 800275e4 -80027774: 27de0001 addiu s8,s8,1 -80027778: 8fa2002c lw v0,44(sp) -8002777c: 0000b021 move s6,zero -80027780: 2457119c addiu s7,v0,4508 - GfxSortSprite(&GPL_Logo); - GfxSortSprite(&OpenSource_Logo); - } - } - - for(i = 0; i < strlen(strPSXSDKIntroAuthor) ; i++) -80027784: 8fa40030 lw a0,48(sp) -80027788: 0c00d8af jal 800362bc -8002778c: 00000000 nop -80027790: 02c2102a slt v0,s6,v0 -80027794: 10400019 beqz v0,800277fc -80027798: 240200a8 li v0,168 - { - if( (PSXSDKIntroRandTextEvent == true) -8002779c: 92621c8b lbu v0,7307(s3) -800277a0: 00000000 nop -800277a4: 10400012 beqz v0,800277f0 -800277a8: 00000000 nop - && -800277ac: 92821c89 lbu v0,7305(s4) -800277b0: 00000000 nop -800277b4: 14400008 bnez v0,800277d8 -800277b8: 0016f100 sll s8,s6,0x4 - (PSXSDKIntroStringEvent == false) ) - { - PSXSDKIntroDrawChar(FONT_X2 + (i << FONT_SIZE_BITSHIFT),FONT_Y2,SystemRand('A','Z')); -800277bc: 24040041 li a0,65 -800277c0: 0c00a03d jal 800280f4 -800277c4: 2405005a li a1,90 -800277c8: 00023600 sll a2,v0,0x18 -800277cc: 27c40058 addiu a0,s8,88 -800277d0: 10000003 b 800277e0 -800277d4: 00063603 sra a2,a2,0x18 - } - else if( (PSXSDKIntroRandTextEvent == true) - && - (PSXSDKIntroStringEvent == true) ) - { - PSXSDKIntroDrawChar(FONT_X2 + (i << FONT_SIZE_BITSHIFT),FONT_Y2,strPSXSDKIntroAuthor[i]); -800277d8: 82e60000 lb a2,0(s7) -800277dc: 27c40058 addiu a0,s8,88 -800277e0: 00042400 sll a0,a0,0x10 -800277e4: 240500a0 li a1,160 -800277e8: 0c009d10 jal 80027440 -800277ec: 00042403 sra a0,a0,0x10 - GfxSortSprite(&GPL_Logo); - GfxSortSprite(&OpenSource_Logo); - } - } - - for(i = 0; i < strlen(strPSXSDKIntroAuthor) ; i++) -800277f0: 26d60001 addiu s6,s6,1 -800277f4: 1000ffe3 b 80027784 -800277f8: 26f70001 addiu s7,s7,1 - -} - -void PSXSDKIntroDrawConsole(void) -{ - PsxDisk.x = PSX_X; -800277fc: 3c168007 lui s6,0x8007 - PsxDisk.y = PSX_Y; -80027800: 26ded240 addiu s8,s6,-11712 - -} - -void PSXSDKIntroDrawConsole(void) -{ - PsxDisk.x = PSX_X; -80027804: a6c2d240 sh v0,-11712(s6) - PsxDisk.y = PSX_Y; -80027808: 24020068 li v0,104 -8002780c: a7c20002 sh v0,2(s8) - - PsxDisk.w = PSX_W; -80027810: 24020030 li v0,48 -80027814: a7c20006 sh v0,6(s8) - PsxDisk.h = PSX_H; -80027818: 24020020 li v0,32 -8002781c: a7c20008 sh v0,8(s8) - - PsxDisk.u = PSX_U; - PsxDisk.v = PSX_V; - - GfxSortSprite(&PsxDisk); -80027820: 03c02021 move a0,s8 - PsxDisk.y = PSX_Y; - - PsxDisk.w = PSX_W; - PsxDisk.h = PSX_H; - - PsxDisk.u = PSX_U; -80027824: 2402001e li v0,30 -80027828: a3c20004 sb v0,4(s8) - PsxDisk.v = PSX_V; - - GfxSortSprite(&PsxDisk); -8002782c: 0c0090d2 jal 80024348 -80027830: a3c00005 sb zero,5(s8) -void PSXSDKIntroDrawDisk(void) -{ - static int spin_rotate = 0; - static int spin_speed = 0; - - PsxDisk.x = DISK_X; -80027834: 240200b3 li v0,179 -80027838: a6c2d240 sh v0,-11712(s6) - PsxDisk.y = DISK_Y; -8002783c: 2402006a li v0,106 -80027840: a7c20002 sh v0,2(s8) - - PsxDisk.w = DISK_W; -80027844: 2402001b li v0,27 -80027848: a7c20006 sh v0,6(s8) - PsxDisk.h = DISK_H; -8002784c: a7c20008 sh v0,8(s8) - - PsxDisk.u = DISK_U; -80027850: 24020002 li v0,2 -80027854: a3c20004 sb v0,4(s8) - PsxDisk.v = DISK_V; -80027858: a3c20005 sb v0,5(s8) - - if(PSXSDKIntroSpinDiskEvent == true) -8002785c: 92421c8d lbu v0,7309(s2) -80027860: afb60010 sw s6,16(sp) -80027864: 1040002f beqz v0,80027924 -80027868: 03c0b821 move s7,s8 - { - if(PSXSDKIntroSpinDiskEventReminder == false) -8002786c: 8fa20018 lw v0,24(sp) -80027870: 00000000 nop -80027874: 90421c8c lbu v0,7308(v0) -80027878: 00000000 nop -8002787c: 14400004 bnez v0,80027890 -80027880: 3c058007 lui a1,0x8007 - { - PSXSDKIntroSpinDiskEventReminder = true; -80027884: 24030001 li v1,1 -80027888: 3c028007 lui v0,0x8007 -8002788c: a0431c8c sb v1,7308(v0) - - //SfxPlaySound(&SpinDiskSnd); - } - - if(spin_speed < MAX_DISK_SPIN) -80027890: 8ca21c84 lw v0,7300(a1) -80027894: 00000000 nop -80027898: 28430005 slti v1,v0,5 -8002789c: 10600003 beqz v1,800278ac -800278a0: 24040168 li a0,360 - { - spin_speed++; -800278a4: 24420001 addiu v0,v0,1 -800278a8: aca21c84 sw v0,7300(a1) - } - - if(spin_rotate < GfxRotateFromDegrees(360) ) -800278ac: 0c00901b jal 8002406c -800278b0: afa50020 sw a1,32(sp) -800278b4: 3c038007 lui v1,0x8007 -800278b8: 8c641c80 lw a0,7296(v1) -800278bc: 00000000 nop -800278c0: 0082102a slt v0,a0,v0 -800278c4: 1040000b beqz v0,800278f4 -800278c8: 0060b021 move s6,v1 - { - spin_rotate += GfxRotateFromDegrees(spin_speed++); -800278cc: 8fa50020 lw a1,32(sp) -800278d0: 00000000 nop -800278d4: 8ca41c84 lw a0,7300(a1) -800278d8: 00000000 nop -800278dc: 24820001 addiu v0,a0,1 -800278e0: 0c00901b jal 8002406c -800278e4: aca21c84 sw v0,7300(a1) -800278e8: 8ec41c80 lw a0,7296(s6) -800278ec: 10000006 b 80027908 -800278f0: 00821021 addu v0,a0,v0 - } - else - { - spin_rotate = SystemRand(0,GfxRotateFromDegrees(360)); -800278f4: 0c00901b jal 8002406c -800278f8: 24040168 li a0,360 -800278fc: 00402821 move a1,v0 -80027900: 0c00a03d jal 800280f4 -80027904: 00002021 move a0,zero -80027908: aec21c80 sw v0,7296(s6) - } - - PsxDisk.rotate = spin_rotate; -8002790c: 8ec21c80 lw v0,7296(s6) -80027910: 00000000 nop -80027914: afc20020 sw v0,32(s8) - PsxDisk.mx = DISK_W >> 1; -80027918: 2402000d li v0,13 -8002791c: afc20024 sw v0,36(s8) - PsxDisk.my = DISK_H >> 1; -80027920: afc20028 sw v0,40(s8) - } - - GfxSortSprite(&PsxDisk); -80027924: 8fa20010 lw v0,16(sp) -80027928: 0c0090d2 jal 80024348 -8002792c: 2444d240 addiu a0,v0,-11712 - - PSXSDKIntroDrawConsole(); - - PSXSDKIntroDrawDisk(); - - if(PSXSDKIntroCloseShellEvent == true) -80027930: 92221c8f lbu v0,7311(s1) -80027934: 00000000 nop -80027938: 10400016 beqz v0,80027994 -8002793c: afc00020 sw zero,32(s8) - { - if(PSXSDKIntroCloseShellEventReminder == false) -80027940: 8fa20014 lw v0,20(sp) -80027944: 00000000 nop -80027948: 90421c8e lbu v0,7310(v0) -8002794c: 00000000 nop -80027950: 14400006 bnez v0,8002796c -80027954: 3c048007 lui a0,0x8007 - { - PSXSDKIntroCloseShellEventReminder = true; -80027958: 24030001 li v1,1 -8002795c: 3c028007 lui v0,0x8007 - - SfxPlaySound(&TrayClSnd); -80027960: 2484d218 addiu a0,a0,-11752 -80027964: 0c009eeb jal 80027bac -80027968: a0431c8e sb v1,7310(v0) - } - - PsxDisk.x = READER_X; -8002796c: 8fa30010 lw v1,16(sp) -80027970: 240200b1 li v0,177 -80027974: a462d240 sh v0,-11712(v1) - PsxDisk.y = READER_Y; -80027978: 24020069 li v0,105 -8002797c: a7c20002 sh v0,2(s8) - - PsxDisk.w = CLOSED_READER_W; -80027980: 2402001e li v0,30 -80027984: a7c20006 sh v0,6(s8) - PsxDisk.h = CLOSED_READER_H; -80027988: a7c20008 sh v0,8(s8) - - PsxDisk.u = CLOSED_READER_U; -8002798c: 1000000c b 800279c0 -80027990: a3c00004 sb zero,4(s8) - - GfxSortSprite(&PsxDisk); - } - else - { - PsxDisk.x = READER_X; -80027994: 3c028007 lui v0,0x8007 -80027998: 240300b1 li v1,177 -8002799c: a443d240 sh v1,-11712(v0) - PsxDisk.y = READER_Y; -800279a0: 24020069 li v0,105 -800279a4: a7c20002 sh v0,2(s8) - - PsxDisk.w = OPEN_READER_W; -800279a8: 2402001e li v0,30 -800279ac: a7c20006 sh v0,6(s8) - PsxDisk.h = OPEN_READER_H; -800279b0: 2402000f li v0,15 -800279b4: a7c20008 sh v0,8(s8) - - PsxDisk.u = OPEN_READER_U; -800279b8: a3c00004 sb zero,4(s8) - PsxDisk.v = OPEN_READER_V; -800279bc: 2402003d li v0,61 - - GfxSortSprite(&PsxDisk); -800279c0: 02e02021 move a0,s7 - -void PSXSDKIntroRunTimers(void) -{ - static uint16_t intro_timer = 0; - - intro_timer++; -800279c4: 3c168007 lui s6,0x8007 - PsxDisk.h = OPEN_READER_H; - - PsxDisk.u = OPEN_READER_U; - PsxDisk.v = OPEN_READER_V; - - GfxSortSprite(&PsxDisk); -800279c8: 0c0090d2 jal 80024348 -800279cc: a3c20005 sb v0,5(s8) - } - - PSXSDKIntroDrawTransCase(); - - GfxDrawScene(); -800279d0: 0c008fe2 jal 80023f88 -800279d4: 00000000 nop - -void PSXSDKIntroRunTimers(void) -{ - static uint16_t intro_timer = 0; - - intro_timer++; -800279d8: 96c21c7c lhu v0,7292(s6) -800279dc: 00000000 nop -800279e0: 24420001 addiu v0,v0,1 -800279e4: 3042ffff andi v0,v0,0xffff -800279e8: a6c21c7c sh v0,7292(s6) - - if( (intro_timer >= CLOSE_SHELL_EV_TIM) -800279ec: 2c420032 sltiu v0,v0,50 -800279f0: 14400008 bnez v0,80027a14 -800279f4: 00000000 nop - && -800279f8: 92221c8f lbu v0,7311(s1) -800279fc: 00000000 nop -80027a00: 14400004 bnez v0,80027a14 -80027a04: 24030001 li v1,1 - (PSXSDKIntroCloseShellEvent == false) ) - { - PSXSDKIntroCloseShellEvent = true; -80027a08: 3c028007 lui v0,0x8007 -80027a0c: a0431c8f sb v1,7311(v0) - intro_timer = 0; -80027a10: a6c01c7c sh zero,7292(s6) - } - - if( (intro_timer >= DISK_SPIN_EV_TIM) -80027a14: 96c21c7c lhu v0,7292(s6) -80027a18: 00000000 nop -80027a1c: 2c42001e sltiu v0,v0,30 -80027a20: 1440000d bnez v0,80027a58 -80027a24: 00000000 nop - && -80027a28: 92221c8f lbu v0,7311(s1) -80027a2c: 00000000 nop -80027a30: 10400009 beqz v0,80027a58 -80027a34: 00000000 nop - (PSXSDKIntroCloseShellEvent == true) - && -80027a38: 92421c8d lbu v0,7309(s2) -80027a3c: 00000000 nop -80027a40: 14400005 bnez v0,80027a58 -80027a44: 3c028007 lui v0,0x8007 - (PSXSDKIntroSpinDiskEvent == false) ) - { - PSXSDKIntroSpinDiskEvent = true; -80027a48: 24030001 li v1,1 -80027a4c: a0431c8d sb v1,7309(v0) - intro_timer = 0; -80027a50: 3c028007 lui v0,0x8007 -80027a54: a4401c7c sh zero,7292(v0) - } - - if( (intro_timer >= TEXT_APPEAR_RANDOM_TIM) -80027a58: 96c21c7c lhu v0,7292(s6) -80027a5c: 00000000 nop -80027a60: 2c420064 sltiu v0,v0,100 -80027a64: 14400011 bnez v0,80027aac -80027a68: 00000000 nop - && -80027a6c: 92221c8f lbu v0,7311(s1) -80027a70: 00000000 nop -80027a74: 1040000d beqz v0,80027aac -80027a78: 00000000 nop - (PSXSDKIntroCloseShellEvent == true) - && -80027a7c: 92421c8d lbu v0,7309(s2) -80027a80: 00000000 nop -80027a84: 10400009 beqz v0,80027aac -80027a88: 00000000 nop - (PSXSDKIntroSpinDiskEvent == true) - && -80027a8c: 92621c8b lbu v0,7307(s3) -80027a90: 00000000 nop -80027a94: 14400005 bnez v0,80027aac -80027a98: 3c028007 lui v0,0x8007 - (PSXSDKIntroRandTextEvent == false) ) - { - PSXSDKIntroRandTextEvent = true; -80027a9c: 24030001 li v1,1 -80027aa0: a0431c8b sb v1,7307(v0) - intro_timer = 0; -80027aa4: 3c028007 lui v0,0x8007 -80027aa8: a4401c7c sh zero,7292(v0) - } - - if( (intro_timer >= TEXT_APPEAR_STRING_TIM) -80027aac: 96c21c7c lhu v0,7292(s6) -80027ab0: 00000000 nop -80027ab4: 2c420064 sltiu v0,v0,100 -80027ab8: 14400017 bnez v0,80027b18 -80027abc: 00000000 nop - && -80027ac0: 92221c8f lbu v0,7311(s1) -80027ac4: 00000000 nop -80027ac8: 10400013 beqz v0,80027b18 -80027acc: 00000000 nop - (PSXSDKIntroCloseShellEvent == true) - && -80027ad0: 92421c8d lbu v0,7309(s2) -80027ad4: 00000000 nop -80027ad8: 1040000f beqz v0,80027b18 -80027adc: 00000000 nop - (PSXSDKIntroSpinDiskEvent == true) - && -80027ae0: 92621c8b lbu v0,7307(s3) -80027ae4: 00000000 nop -80027ae8: 1040000b beqz v0,80027b18 -80027aec: 00000000 nop - (PSXSDKIntroRandTextEvent == true) - && -80027af0: 92821c89 lbu v0,7305(s4) -80027af4: 00000000 nop -80027af8: 14400007 bnez v0,80027b18 -80027afc: 3c028007 lui v0,0x8007 - (PSXSDKIntroStringEvent == false) ) - { - PSXSDKIntroStringEvent = true; -80027b00: 24030001 li v1,1 - SfxPlayTrack(INTRO_TRACK); -80027b04: 24040002 li a0,2 -80027b08: 0c009f16 jal 80027c58 -80027b0c: a0431c89 sb v1,7305(v0) - intro_timer = 0; -80027b10: 3c028007 lui v0,0x8007 -80027b14: a4401c7c sh zero,7292(v0) - } - - if( (intro_timer >= INTRO_CLOSE_TIM) -80027b18: 96c21c7c lhu v0,7292(s6) -80027b1c: 00000000 nop -80027b20: 2c420064 sltiu v0,v0,100 -80027b24: 1440fe8b bnez v0,80027554 -80027b28: 00000000 nop - && -80027b2c: 92221c8f lbu v0,7311(s1) -80027b30: 00000000 nop -80027b34: 1040fe87 beqz v0,80027554 -80027b38: 00000000 nop - (PSXSDKIntroCloseShellEvent == true) - && -80027b3c: 92421c8d lbu v0,7309(s2) -80027b40: 00000000 nop -80027b44: 1040fe83 beqz v0,80027554 -80027b48: 00000000 nop - (PSXSDKIntroSpinDiskEvent == true) - && -80027b4c: 92621c8b lbu v0,7307(s3) -80027b50: 00000000 nop -80027b54: 1040fe7f beqz v0,80027554 -80027b58: 00000000 nop - (PSXSDKIntroRandTextEvent == true) - && -80027b5c: 92821c89 lbu v0,7305(s4) -80027b60: 00000000 nop -80027b64: 1040fe7b beqz v0,80027554 -80027b68: 24020001 li v0,1 - (PSXSDKIntroStringEvent == true) ) - { - PSXSDKIntroClose = true; -80027b6c: a2a21c88 sb v0,7304(s5) - intro_timer = 0; -80027b70: 3c028007 lui v0,0x8007 -80027b74: 1000fe77 b 80027554 -80027b78: a4401c7c sh zero,7292(v0) - - GfxDrawScene(); - - PSXSDKIntroRunTimers(); - } -} -80027b7c: 8fbf005c lw ra,92(sp) -80027b80: 8fbe0058 lw s8,88(sp) -80027b84: 8fb70054 lw s7,84(sp) -80027b88: 8fb60050 lw s6,80(sp) -80027b8c: 8fb5004c lw s5,76(sp) -80027b90: 8fb40048 lw s4,72(sp) -80027b94: 8fb30044 lw s3,68(sp) -80027b98: 8fb20040 lw s2,64(sp) -80027b9c: 8fb1003c lw s1,60(sp) -80027ba0: 8fb00038 lw s0,56(sp) -80027ba4: 03e00008 jr ra -80027ba8: 27bd0060 addiu sp,sp,96 - -80027bac : - -static uint8_t voiceIndex = 0; - -void SfxPlaySound(SsVag * sound) -{ - SsPlayVag(sound, sound->cur_voice, MAX_VOLUME, MAX_VOLUME); -80027bac: 90850024 lbu a1,36(a0) -80027bb0: 24073fff li a3,16383 -80027bb4: 0800cea7 j 80033a9c -80027bb8: 24063fff li a2,16383 - -80027bbc : -} - -bool SfxUploadSound(char * file_path, SsVag * vag) -{ -80027bbc: 27bdffe0 addiu sp,sp,-32 -80027bc0: afb20018 sw s2,24(sp) -80027bc4: afb00010 sw s0,16(sp) -80027bc8: afbf001c sw ra,28(sp) -80027bcc: afb10014 sw s1,20(sp) - if(SystemLoadFile(file_path) == false) -80027bd0: 0c00a022 jal 80028088 -80027bd4: 00a09021 move s2,a1 -80027bd8: 10400018 beqz v0,80027c3c -80027bdc: 00408021 move s0,v0 - { - return false; - } - - if(voiceIndex < NUMBER_OF_VOICES) -80027be0: 3c118007 lui s1,0x8007 -80027be4: 92221c90 lbu v0,7312(s1) -80027be8: 00000000 nop -80027bec: 2c420018 sltiu v0,v0,24 -80027bf0: 1040000e beqz v0,80027c2c -80027bf4: 00000000 nop - { - SsReadVag(vag,SystemGetBufferAddress()); -80027bf8: 0c00a027 jal 8002809c -80027bfc: 00000000 nop -80027c00: 00402821 move a1,v0 -80027c04: 0c00cdde jal 80033778 -80027c08: 02402021 move a0,s2 - - SsUploadVag(vag); -80027c0c: 0c00ce86 jal 80033a18 -80027c10: 02402021 move a0,s2 - - vag->cur_voice = voiceIndex; -80027c14: 92221c90 lbu v0,7312(s1) -80027c18: 00000000 nop -80027c1c: a2420024 sb v0,36(s2) - voiceIndex++; -80027c20: 24420001 addiu v0,v0,1 - { - dprintf("Maximum number of SPU voices exceeded!\n"); - return false; //Maximum voices exceeded - } - - return true; -80027c24: 10000005 b 80027c3c -80027c28: a2221c90 sb v0,7312(s1) - vag->cur_voice = voiceIndex; - voiceIndex++; - } - else - { - dprintf("Maximum number of SPU voices exceeded!\n"); -80027c2c: 3c048004 lui a0,0x8004 -80027c30: 0c00ed8f jal 8003b63c -80027c34: 248411c0 addiu a0,a0,4544 - return false; //Maximum voices exceeded -80027c38: 00008021 move s0,zero - } - - return true; -} -80027c3c: 8fbf001c lw ra,28(sp) -80027c40: 02001021 move v0,s0 -80027c44: 8fb20018 lw s2,24(sp) -80027c48: 8fb10014 lw s1,20(sp) -80027c4c: 8fb00010 lw s0,16(sp) -80027c50: 03e00008 jr ra -80027c54: 27bd0020 addiu sp,sp,32 - -80027c58 : - -void SfxPlayTrack(MUSIC_TRACKS track) -{ -80027c58: 27bdffe8 addiu sp,sp,-24 -#ifndef NO_CDDA - SsCdVol(0x7FFF,0x7FFF); -80027c5c: 24057fff li a1,32767 - - return true; -} - -void SfxPlayTrack(MUSIC_TRACKS track) -{ -80027c60: afb00010 sw s0,16(sp) -80027c64: 00808021 move s0,a0 -80027c68: afbf0014 sw ra,20(sp) -#ifndef NO_CDDA - SsCdVol(0x7FFF,0x7FFF); -80027c6c: 0c00cf2e jal 80033cb8 -80027c70: 24047fff li a0,32767 - SsEnableCd(); -80027c74: 0c00cf04 jal 80033c10 -80027c78: 00000000 nop - CdPlayTrack(track); -80027c7c: 0c00ab69 jal 8002ada4 -80027c80: 02002021 move a0,s0 - dprintf("Track number %d playing...\n",track); -#endif // NO_CDDA -} -80027c84: 8fbf0014 lw ra,20(sp) -{ -#ifndef NO_CDDA - SsCdVol(0x7FFF,0x7FFF); - SsEnableCd(); - CdPlayTrack(track); - dprintf("Track number %d playing...\n",track); -80027c88: 02002821 move a1,s0 -80027c8c: 3c048004 lui a0,0x8004 -#endif // NO_CDDA -} -80027c90: 8fb00010 lw s0,16(sp) -{ -#ifndef NO_CDDA - SsCdVol(0x7FFF,0x7FFF); - SsEnableCd(); - CdPlayTrack(track); - dprintf("Track number %d playing...\n",track); -80027c94: 248411e8 addiu a0,a0,4584 -80027c98: 0800ed8f j 8003b63c -80027c9c: 27bd0018 addiu sp,sp,24 - -80027ca0 : -#endif // NO_CDDA -} - -void SfxStopMusic(void) -{ -80027ca0: 27bdffd0 addiu sp,sp,-48 -80027ca4: afb20024 sw s2,36(sp) -80027ca8: afb10020 sw s1,32(sp) -80027cac: afb0001c sw s0,28(sp) -80027cb0: afbf002c sw ra,44(sp) -#ifndef NO_CDDA - uint64_t timer = SystemGetGlobalTimer(); -80027cb4: 0c009fad jal 80027eb4 -80027cb8: afb30028 sw s3,40(sp) -80027cbc: 00608021 move s0,v1 -80027cc0: 24120009 li s2,9 - uint16_t CDVol = 0x7FFF; -80027cc4: 24117fff li s1,32767 - uint8_t time_step = 5; - - while (CDVol > 0x3F) - { - CDVol>>=1; -80027cc8: 00118842 srl s1,s1,0x1 - SsCdVol(CDVol,CDVol); -80027ccc: 02202821 move a1,s1 -80027cd0: 02202021 move a0,s1 -80027cd4: 0c00cf2e jal 80033cb8 -80027cd8: afa20010 sw v0,16(sp) - - while(SystemGetGlobalTimer() < (timer + time_step) ); -80027cdc: 8fa20010 lw v0,16(sp) -80027ce0: 00000000 nop -80027ce4: 24530005 addiu s3,v0,5 -80027ce8: 0262102b sltu v0,s3,v0 -80027cec: 00508021 addu s0,v0,s0 -80027cf0: 0c009fad jal 80027eb4 -80027cf4: 00000000 nop -80027cf8: 0070202b sltu a0,v1,s0 -80027cfc: 1480fffc bnez a0,80027cf0 -80027d00: 00000000 nop -80027d04: 16030003 bne s0,v1,80027d14 -80027d08: 0053102b sltu v0,v0,s3 -80027d0c: 1440fff8 bnez v0,80027cf0 -80027d10: 00000000 nop - - timer = SystemGetGlobalTimer(); -80027d14: 0c009fad jal 80027eb4 -80027d18: 2652ffff addiu s2,s2,-1 -#ifndef NO_CDDA - uint64_t timer = SystemGetGlobalTimer(); - uint16_t CDVol = 0x7FFF; - uint8_t time_step = 5; - - while (CDVol > 0x3F) -80027d1c: 1640ffea bnez s2,80027cc8 -80027d20: 00608021 move s0,v1 - timer = SystemGetGlobalTimer(); - } - - CdSendCommand(CdlMute,0); -#endif -} -80027d24: 8fbf002c lw ra,44(sp) -80027d28: 8fb30028 lw s3,40(sp) -80027d2c: 8fb20024 lw s2,36(sp) -80027d30: 8fb10020 lw s1,32(sp) -80027d34: 8fb0001c lw s0,28(sp) - while(SystemGetGlobalTimer() < (timer + time_step) ); - - timer = SystemGetGlobalTimer(); - } - - CdSendCommand(CdlMute,0); -80027d38: 00002821 move a1,zero -80027d3c: 2404000b li a0,11 -80027d40: 0800aa46 j 8002a918 -80027d44: 27bd0030 addiu sp,sp,48 - -80027d48 : - -} - -void SystemCheckTimer(bool * timer, uint64_t * last_timer, uint8_t step) -{ - if(*timer == true) -80027d48: 90830000 lbu v1,0(a0) -80027d4c: 00000000 nop -80027d50: 10600006 beqz v1,80027d6c -80027d54: 3c028007 lui v0,0x8007 - { - *timer = false; - *last_timer = global_timer; -80027d58: 8c481cb8 lw t0,7352(v0) -80027d5c: 8c491cbc lw t1,7356(v0) - -void SystemCheckTimer(bool * timer, uint64_t * last_timer, uint8_t step) -{ - if(*timer == true) - { - *timer = false; -80027d60: a0800000 sb zero,0(a0) - *last_timer = global_timer; -80027d64: aca80000 sw t0,0(a1) -80027d68: aca90004 sw t1,4(a1) - } - - if(global_timer >= (*last_timer + step) ) -80027d6c: 8ca30000 lw v1,0(a1) -80027d70: 8c481cb8 lw t0,7352(v0) -80027d74: 8ca50004 lw a1,4(a1) -80027d78: 8c491cbc lw t1,7356(v0) -80027d7c: 00c31021 addu v0,a2,v1 -80027d80: 0046302b sltu a2,v0,a2 -80027d84: 00c53021 addu a2,a2,a1 -80027d88: 0126182b sltu v1,t1,a2 -80027d8c: 14600007 bnez v1,80027dac -80027d90: 00000000 nop -80027d94: 14c90003 bne a2,t1,80027da4 -80027d98: 0102102b sltu v0,t0,v0 -80027d9c: 14400003 bnez v0,80027dac -80027da0: 00000000 nop - { - *timer = true; -80027da4: 24020001 li v0,1 -80027da8: a0820000 sb v0,0(a0) -80027dac: 03e00008 jr ra -80027db0: 00000000 nop - -80027db4 : - StartRCnt(RCntCNT2); -} - -void SystemSetRandSeed(void) -{ - if(rand_seed == false) -80027db4: 3c028007 lui v0,0x8007 -80027db8: 90431cb6 lbu v1,7350(v0) -80027dbc: 00000000 nop -80027dc0: 14600014 bnez v1,80027e14 -80027dc4: 00000000 nop - SetRCnt(RCntCNT2,0xFFFF,RCntSC); - StartRCnt(RCntCNT2); -} - -void SystemSetRandSeed(void) -{ -80027dc8: 27bdffe8 addiu sp,sp,-24 -80027dcc: afb00010 sw s0,16(sp) - if(rand_seed == false) - { - rand_seed = true; - //Set random seed using global timer as reference - srand((unsigned int)global_timer); -80027dd0: 3c108007 lui s0,0x8007 -80027dd4: 8e041cb8 lw a0,7352(s0) - -void SystemSetRandSeed(void) -{ - if(rand_seed == false) - { - rand_seed = true; -80027dd8: 24030001 li v1,1 - SetRCnt(RCntCNT2,0xFFFF,RCntSC); - StartRCnt(RCntCNT2); -} - -void SystemSetRandSeed(void) -{ -80027ddc: afbf0014 sw ra,20(sp) - if(rand_seed == false) - { - rand_seed = true; -80027de0: a0431cb6 sb v1,7350(v0) - //Set random seed using global timer as reference - srand((unsigned int)global_timer); -80027de4: 8e051cbc lw a1,7356(s0) -80027de8: 0c00d59b jal 8003566c -80027dec: 00000000 nop - - dprintf("Seed used: %d\n",(unsigned int)global_timer); -80027df0: 8e021cb8 lw v0,7352(s0) - } -} -80027df4: 8fbf0014 lw ra,20(sp) - { - rand_seed = true; - //Set random seed using global timer as reference - srand((unsigned int)global_timer); - - dprintf("Seed used: %d\n",(unsigned int)global_timer); -80027df8: 8e031cbc lw v1,7356(s0) -80027dfc: 3c048004 lui a0,0x8004 - } -} -80027e00: 8fb00010 lw s0,16(sp) - { - rand_seed = true; - //Set random seed using global timer as reference - srand((unsigned int)global_timer); - - dprintf("Seed used: %d\n",(unsigned int)global_timer); -80027e04: 00402821 move a1,v0 -80027e08: 24841204 addiu a0,a0,4612 -80027e0c: 0800ed8f j 8003b63c -80027e10: 27bd0018 addiu sp,sp,24 -80027e14: 03e00008 jr ra -80027e18: 00000000 nop - -80027e1c : -} - -bool SystemIsRandSeedSet(void) -{ - return rand_seed; -} -80027e1c: 3c028007 lui v0,0x8007 -80027e20: 90421cb6 lbu v0,7350(v0) -80027e24: 03e00008 jr ra -80027e28: 00000000 nop - -80027e2c : - -bool SystemDMAReady(void) -{ - return (*((unsigned int*)0x1F801814) & 1<<28); -80027e2c: 3c021f80 lui v0,0x1f80 -80027e30: 8c421814 lw v0,6164(v0) -80027e34: 00000000 nop -80027e38: 00021702 srl v0,v0,0x1c -} -80027e3c: 03e00008 jr ra -80027e40: 30420001 andi v0,v0,0x1 - -80027e44 : - -bool SystemDMABusy(void) -{ -80027e44: 27bdffe8 addiu sp,sp,-24 -80027e48: afbf0014 sw ra,20(sp) - return !SystemDMAReady(); -80027e4c: 0c009f8b jal 80027e2c -80027e50: 00000000 nop -} -80027e54: 8fbf0014 lw ra,20(sp) - return (*((unsigned int*)0x1F801814) & 1<<28); -} - -bool SystemDMABusy(void) -{ - return !SystemDMAReady(); -80027e58: 38420001 xori v0,v0,0x1 -} -80027e5c: 304200ff andi v0,v0,0xff -80027e60: 03e00008 jr ra -80027e64: 27bd0018 addiu sp,sp,24 - -80027e68 : - -bool SystemRefreshNeeded(void) -{ - return refresh_needed; -80027e68: 3c028007 lui v0,0x8007 -80027e6c: 90421cb5 lbu v0,7349(v0) -} -80027e70: 03e00008 jr ra -80027e74: 304200ff andi v0,v0,0xff - -80027e78 : - SystemIncreaseGlobalTimer(); -} - -void SystemIncreaseGlobalTimer(void) -{ - global_timer++; -80027e78: 3c068007 lui a2,0x8007 -80027e7c: 8cc41cb8 lw a0,7352(a2) -80027e80: 8cc51cbc lw a1,7356(a2) -80027e84: 24870001 addiu a3,a0,1 -80027e88: 00e4202b sltu a0,a3,a0 -80027e8c: 00851821 addu v1,a0,a1 -80027e90: acc71cb8 sw a3,7352(a2) -80027e94: acc31cbc sw v1,7356(a2) -80027e98: 03e00008 jr ra -80027e9c: 00000000 nop - -80027ea0 : - return refresh_needed; -} - -void ISR_SystemDefaultVBlank(void) -{ - refresh_needed = true; -80027ea0: 24030001 li v1,1 -80027ea4: 3c028007 lui v0,0x8007 -80027ea8: a0431cb5 sb v1,7349(v0) - SystemIncreaseGlobalTimer(); -80027eac: 08009f9e j 80027e78 -80027eb0: 00000000 nop - -80027eb4 : - global_timer++; -} - -uint64_t SystemGetGlobalTimer(void) -{ - return global_timer; -80027eb4: 3c028007 lui v0,0x8007 -80027eb8: 8c431cbc lw v1,7356(v0) -80027ebc: 8c421cb8 lw v0,7352(v0) -} -80027ec0: 03e00008 jr ra -80027ec4: 00000000 nop - -80027ec8 : - -void SystemDisableScreenRefresh(void) -{ - refresh_needed = false; -80027ec8: 3c028007 lui v0,0x8007 -80027ecc: a0401cb5 sb zero,7349(v0) -80027ed0: 03e00008 jr ra -80027ed4: 00000000 nop - -80027ed8 : -} - -bool System1SecondTick(void) -{ - return one_second_timer; -} -80027ed8: 3c028007 lui v0,0x8007 -80027edc: 90421cb4 lbu v0,7348(v0) -80027ee0: 03e00008 jr ra -80027ee4: 00000000 nop - -80027ee8 : - -bool System100msTick(void) -{ - return hundred_ms_timer; -} -80027ee8: 3c028007 lui v0,0x8007 -80027eec: 90421cb3 lbu v0,7347(v0) -80027ef0: 03e00008 jr ra -80027ef4: 00000000 nop - -80027ef8 : - -bool System500msTick(void) -{ - return five_hundred_ms_timer; -} -80027ef8: 3c028007 lui v0,0x8007 -80027efc: 90421cb2 lbu v0,7346(v0) -80027f00: 03e00008 jr ra -80027f04: 00000000 nop - -80027f08 : -{ - static uint64_t last_one_second_tick; - static uint64_t last_100_ms_tick; - static uint64_t last_500_ms_tick; - - SystemCheckTimer(&one_second_timer, &last_one_second_tick, REFRESH_FREQUENCY); -80027f08: 3c058007 lui a1,0x8007 -80027f0c: 3c048007 lui a0,0x8007 -{ - return five_hundred_ms_timer; -} - -void SystemRunTimers(void) -{ -80027f10: 27bdffe8 addiu sp,sp,-24 - static uint64_t last_one_second_tick; - static uint64_t last_100_ms_tick; - static uint64_t last_500_ms_tick; - - SystemCheckTimer(&one_second_timer, &last_one_second_tick, REFRESH_FREQUENCY); -80027f14: 24060032 li a2,50 -80027f18: 24a51ca8 addiu a1,a1,7336 -{ - return five_hundred_ms_timer; -} - -void SystemRunTimers(void) -{ -80027f1c: afbf0014 sw ra,20(sp) - static uint64_t last_one_second_tick; - static uint64_t last_100_ms_tick; - static uint64_t last_500_ms_tick; - - SystemCheckTimer(&one_second_timer, &last_one_second_tick, REFRESH_FREQUENCY); -80027f20: 0c009f52 jal 80027d48 -80027f24: 24841cb4 addiu a0,a0,7348 - -#ifdef _PAL_MODE_ - SystemCheckTimer(&hundred_ms_timer, &last_100_ms_tick, 2 /* 2 * 50 ms = 100 ms */); -80027f28: 3c058007 lui a1,0x8007 -80027f2c: 3c048007 lui a0,0x8007 -80027f30: 24060002 li a2,2 -80027f34: 24a51ca0 addiu a1,a1,7328 -80027f38: 0c009f52 jal 80027d48 -80027f3c: 24841cb3 addiu a0,a0,7347 - SystemCheckTimer(&five_hundred_ms_timer, &last_500_ms_tick, 10 /* 10 * 50 ms = 500 ms */); -#else - SystemCheckTimer(&hundred_ms_timer, &last_100_ms_tick, 3); -#endif //VMODE_PAL - -} -80027f40: 8fbf0014 lw ra,20(sp) - - SystemCheckTimer(&one_second_timer, &last_one_second_tick, REFRESH_FREQUENCY); - -#ifdef _PAL_MODE_ - SystemCheckTimer(&hundred_ms_timer, &last_100_ms_tick, 2 /* 2 * 50 ms = 100 ms */); - SystemCheckTimer(&five_hundred_ms_timer, &last_500_ms_tick, 10 /* 10 * 50 ms = 500 ms */); -80027f44: 3c058007 lui a1,0x8007 -80027f48: 3c048007 lui a0,0x8007 -80027f4c: 2406000a li a2,10 -80027f50: 24a51c98 addiu a1,a1,7320 -80027f54: 24841cb2 addiu a0,a0,7346 -80027f58: 08009f52 j 80027d48 -80027f5c: 27bd0018 addiu sp,sp,24 - -80027f60 : - *timer = true; - } -} - -bool SystemLoadFileToBuffer(char * fname, uint8_t * buffer, uint32_t szBuffer) -{ -80027f60: 27bdffd0 addiu sp,sp,-48 -80027f64: afbf002c sw ra,44(sp) -80027f68: afb50028 sw s5,40(sp) -80027f6c: afb40024 sw s4,36(sp) -80027f70: afb30020 sw s3,32(sp) -80027f74: afb2001c sw s2,28(sp) -80027f78: afb10018 sw s1,24(sp) - FILE *f; - int32_t size; - - if(fname == NULL) -80027f7c: 14800004 bnez a0,80027f90 -80027f80: afb00014 sw s0,20(sp) - { - dprintf("SystemLoadFile: NULL fname!\n"); -80027f84: 3c048004 lui a0,0x8004 -80027f88: 10000012 b 80027fd4 -80027f8c: 24841214 addiu a0,a0,4628 -80027f90: 00a0a821 move s5,a1 -80027f94: 00808821 move s1,a0 - return false; - } - - memset(buffer,0,szBuffer); -80027f98: 00002821 move a1,zero -80027f9c: 02a02021 move a0,s5 -80027fa0: 0c00d7ab jal 80035eac -80027fa4: 00c09821 move s3,a2 - - system_busy = true; - f = fopen(fname, "r"); -80027fa8: 3c058004 lui a1,0x8004 - return false; - } - - memset(buffer,0,szBuffer); - - system_busy = true; -80027fac: 24020001 li v0,1 -80027fb0: 3c148007 lui s4,0x8007 - f = fopen(fname, "r"); -80027fb4: 24a51234 addiu a1,a1,4660 -80027fb8: 02202021 move a0,s1 -80027fbc: 0c00a40c jal 80029030 -80027fc0: a2821cb0 sb v0,7344(s4) - - if(f == NULL) -80027fc4: 14400007 bnez v0,80027fe4 -80027fc8: 00408021 move s0,v0 - { - dprintf("SystemLoadFile: file could not be found!\n"); -80027fcc: 3c048004 lui a0,0x8004 -80027fd0: 24841238 addiu a0,a0,4664 -80027fd4: 0c00ed8f jal 8003b63c -80027fd8: 00000000 nop - //File couldn't be found - return false; -80027fdc: 10000021 b 80028064 -80027fe0: 00001021 move v0,zero - } - - fseek(f, 0, SEEK_END); -80027fe4: 24060002 li a2,2 -80027fe8: 00002821 move a1,zero -80027fec: 0c00a598 jal 80029660 -80027ff0: 00402021 move a0,v0 - - size = ftell(f); -80027ff4: 0c00a58c jal 80029630 -80027ff8: 02002021 move a0,s0 - - if(size > szBuffer) -80027ffc: 0262982b sltu s3,s3,v0 -80028000: 12600007 beqz s3,80028020 -80028004: 00409021 move s2,v0 - { - dprintf("SystemLoadFile: Exceeds file buffer size (%d bytes)\n",size); -80028008: 3c048004 lui a0,0x8004 -8002800c: 00402821 move a1,v0 -80028010: 0c00ed8f jal 8003b63c -80028014: 24841264 addiu a0,a0,4708 -80028018: 10000012 b 80028064 -8002801c: 00001021 move v0,zero - //Bigger than 128 kB (buffer's max size) - return false; - } - - fseek(f, 0, SEEK_SET); //f->pos = 0; -80028020: 00003021 move a2,zero -80028024: 00002821 move a1,zero -80028028: 0c00a598 jal 80029660 -8002802c: 02002021 move a0,s0 - - fread(buffer, sizeof(char), size, f); -80028030: 02003821 move a3,s0 -80028034: 02403021 move a2,s2 -80028038: 24050001 li a1,1 -8002803c: 0c00a4b6 jal 800292d8 -80028040: 02a02021 move a0,s5 - - fclose(f); -80028044: 0c00a4a0 jal 80029280 -80028048: 02002021 move a0,s0 - - system_busy = false; - - dprintf("File \"%s\" loaded successfully!\n",fname); -8002804c: 3c048004 lui a0,0x8004 -80028050: 02202821 move a1,s1 -80028054: 2484129c addiu a0,a0,4764 -80028058: 0c00ed8f jal 8003b63c -8002805c: a2801cb0 sb zero,7344(s4) - - return true; -80028060: 24020001 li v0,1 -} -80028064: 8fbf002c lw ra,44(sp) -80028068: 8fb50028 lw s5,40(sp) -8002806c: 8fb40024 lw s4,36(sp) -80028070: 8fb30020 lw s3,32(sp) -80028074: 8fb2001c lw s2,28(sp) -80028078: 8fb10018 lw s1,24(sp) -8002807c: 8fb00014 lw s0,20(sp) -80028080: 03e00008 jr ra -80028084: 27bd0030 addiu sp,sp,48 - -80028088 : - -bool SystemLoadFile(char *fname) -{ - return SystemLoadFileToBuffer(fname,file_buffer,sizeof(file_buffer)); -80028088: 3c060002 lui a2,0x2 -8002808c: 3c058005 lui a1,0x8005 -80028090: 24c60014 addiu a2,a2,20 -80028094: 08009fd8 j 80027f60 -80028098: 24a5894c addiu a1,a1,-30388 - -8002809c : -} - -uint8_t * SystemGetBufferAddress(void) -{ - return file_buffer; -} -8002809c: 3c028005 lui v0,0x8005 -800280a0: 03e00008 jr ra -800280a4: 2442894c addiu v0,v0,-30388 - -800280a8 : - -void SystemWaitCycles(uint32_t cycles) -{ - uint64_t currentTime = global_timer; -800280a8: 3c028007 lui v0,0x8007 -800280ac: 8c461cb8 lw a2,7352(v0) -800280b0: 8c471cbc lw a3,7356(v0) - - while(global_timer < (currentTime + cycles) ); -800280b4: 00863021 addu a2,a0,a2 -800280b8: 00c4202b sltu a0,a2,a0 -800280bc: 00402821 move a1,v0 -800280c0: 00872021 addu a0,a0,a3 -800280c4: 8ca21cb8 lw v0,7352(a1) -800280c8: 8ca31cbc lw v1,7356(a1) -800280cc: 00000000 nop -800280d0: 0064382b sltu a3,v1,a0 -800280d4: 14e0fffb bnez a3,800280c4 -800280d8: 00000000 nop -800280dc: 14830003 bne a0,v1,800280ec -800280e0: 0046102b sltu v0,v0,a2 -800280e4: 1440fff7 bnez v0,800280c4 -800280e8: 00000000 nop -800280ec: 03e00008 jr ra -800280f0: 00000000 nop - -800280f4 : -} - -uint32_t SystemRand(uint32_t min, uint32_t max) -{ -800280f4: 27bdffe0 addiu sp,sp,-32 -800280f8: afb10018 sw s1,24(sp) -800280fc: afb00014 sw s0,20(sp) -80028100: 00808821 move s1,a0 -80028104: afbf001c sw ra,28(sp) - return rand() % (max - min + 1) + min; -80028108: 0c00d5a9 jal 800356a4 -8002810c: 00a08021 move s0,a1 -80028110: 02112823 subu a1,s0,s1 -80028114: 24a50001 addiu a1,a1,1 -80028118: 14a00002 bnez a1,80028124 -8002811c: 0045001b divu zero,v0,a1 -80028120: 0007000d break 0x7 -} -80028124: 8fbf001c lw ra,28(sp) -80028128: 8fb00014 lw s0,20(sp) - while(global_timer < (currentTime + cycles) ); -} - -uint32_t SystemRand(uint32_t min, uint32_t max) -{ - return rand() % (max - min + 1) + min; -8002812c: 00001010 mfhi v0 -} -80028130: 00511021 addu v0,v0,s1 -80028134: 8fb10018 lw s1,24(sp) -80028138: 03e00008 jr ra -8002813c: 27bd0020 addiu sp,sp,32 - -80028140 : - -void SystemSetEmergencyMode(bool value) -{ - emergency_mode = value; -80028140: 3c028007 lui v0,0x8007 -80028144: 03e00008 jr ra -80028148: a0441cb1 sb a0,7345(v0) - -8002814c : -} - -bool SystemGetEmergencyMode(void) -{ - return emergency_mode; -} -8002814c: 3c028007 lui v0,0x8007 -80028150: 90421cb1 lbu v0,7345(v0) -80028154: 03e00008 jr ra -80028158: 00000000 nop - -8002815c : - -bool SystemIsBusy(void) -{ - return system_busy; -} -8002815c: 3c028007 lui v0,0x8007 -80028160: 90421cb0 lbu v0,7344(v0) -80028164: 03e00008 jr ra -80028168: 00000000 nop - -8002816c : - -bool SystemContains_u8(uint8_t value, uint8_t * buffer, size_t sz) -{ -8002816c: 308400ff andi a0,a0,0xff -80028170: 00a63021 addu a2,a1,a2 - size_t i = 0; - - for(i = 0; i < sz; i++) -80028174: 10a60007 beq a1,a2,80028194 -80028178: 24a50001 addiu a1,a1,1 - { - if(buffer[i] == value) -8002817c: 90a2ffff lbu v0,-1(a1) -80028180: 00000000 nop -80028184: 1444fffb bne v0,a0,80028174 -80028188: 24020001 li v0,1 - return true; - } - } - - return false; -} -8002818c: 03e00008 jr ra -80028190: 00000000 nop -80028194: 03e00008 jr ra -80028198: 00001021 move v0,zero - -8002819c : - -bool SystemContains_u16(uint16_t value, uint16_t * buffer, size_t sz) -{ -8002819c: 3084ffff andi a0,a0,0xffff - size_t i = 0; - - for(i = 0; i < sz; i++) -800281a0: 00001021 move v0,zero -800281a4: 10460007 beq v0,a2,800281c4 -800281a8: 24a50002 addiu a1,a1,2 - { - if(buffer[i] == value) -800281ac: 94a3fffe lhu v1,-2(a1) -800281b0: 00000000 nop -800281b4: 10640005 beq v1,a0,800281cc -800281b8: 00000000 nop - -bool SystemContains_u16(uint16_t value, uint16_t * buffer, size_t sz) -{ - size_t i = 0; - - for(i = 0; i < sz; i++) -800281bc: 1000fff9 b 800281a4 -800281c0: 24420001 addiu v0,v0,1 -800281c4: 03e00008 jr ra -800281c8: 00001021 move v0,zero - return true; - } - } - - return false; -} -800281cc: 03e00008 jr ra -800281d0: 24020001 li v0,1 - -800281d4 : - -TYPE_TIMER * SystemCreateTimer(uint32_t seconds, bool rf, void (*timer_callback)(void) ) -{ -800281d4: 27bdffe8 addiu sp,sp,-24 - bool success = false; - uint8_t i; - - if(seconds == 0) -800281d8: 14800004 bnez a0,800281ec -800281dc: afbf0014 sw ra,20(sp) - { - dprintf("Cannot create timer with time == 0!\n"); -800281e0: 3c048004 lui a0,0x8004 -800281e4: 10000019 b 8002824c -800281e8: 248412bc addiu a0,a0,4796 -800281ec: 3c078005 lui a3,0x8005 -800281f0: 24e7884c addiu a3,a3,-30644 -800281f4: 30a500ff andi a1,a1,0xff -TYPE_TIMER * SystemCreateTimer(uint32_t seconds, bool rf, void (*timer_callback)(void) ) -{ - bool success = false; - uint8_t i; - - if(seconds == 0) -800281f8: 00001021 move v0,zero -800281fc: 00e01821 move v1,a3 - { - dprintf("Cannot create timer with time == 0!\n"); - return NULL; - } - - for(i = 0; i < SYSTEM_MAX_TIMERS; i++) -80028200: 24080010 li t0,16 - { - if(timer_array[i].busy == false) -80028204: 90e90009 lbu t1,9(a3) -80028208: 00000000 nop -8002820c: 1520000b bnez t1,8002823c -80028210: 24420001 addiu v0,v0,1 -80028214: 2442ffff addiu v0,v0,-1 - { - timer_array[i].Timeout_Callback = timer_callback; -80028218: 00021100 sll v0,v0,0x4 -8002821c: 00621021 addu v0,v1,v0 - timer_array[i].time = seconds; - timer_array[i].orig_time = seconds; - timer_array[i].repeat_flag = rf; - timer_array[i].busy = true; -80028220: 24030001 li v1,1 - - for(i = 0; i < SYSTEM_MAX_TIMERS; i++) - { - if(timer_array[i].busy == false) - { - timer_array[i].Timeout_Callback = timer_callback; -80028224: ac46000c sw a2,12(v0) - timer_array[i].time = seconds; -80028228: ac440000 sw a0,0(v0) - timer_array[i].orig_time = seconds; -8002822c: ac440004 sw a0,4(v0) - timer_array[i].repeat_flag = rf; -80028230: a0450008 sb a1,8(v0) - { - dprintf("Could not find any free timer!\n"); - return NULL; - } - - return &timer_array[i]; -80028234: 10000008 b 80028258 -80028238: a0430009 sb v1,9(v0) - { - dprintf("Cannot create timer with time == 0!\n"); - return NULL; - } - - for(i = 0; i < SYSTEM_MAX_TIMERS; i++) -8002823c: 1448fff1 bne v0,t0,80028204 -80028240: 24e70010 addiu a3,a3,16 - } - } - - if(success == false) - { - dprintf("Could not find any free timer!\n"); -80028244: 3c048004 lui a0,0x8004 -80028248: 248412e4 addiu a0,a0,4836 -8002824c: 0c00ed8f jal 8003b63c -80028250: 00000000 nop - return NULL; -80028254: 00001021 move v0,zero - } - - return &timer_array[i]; -} -80028258: 8fbf0014 lw ra,20(sp) -8002825c: 00000000 nop -80028260: 03e00008 jr ra -80028264: 27bd0018 addiu sp,sp,24 - -80028268 : - -void SystemResetTimers(void) -{ -80028268: 3c028005 lui v0,0x8005 -8002826c: 3c038005 lui v1,0x8005 -80028270: 2442884c addiu v0,v0,-30644 -80028274: 2463894c addiu v1,v1,-30388 - uint8_t i; - - for(i = 0; i < SYSTEM_MAX_TIMERS; i++) - { - timer_array[i].Timeout_Callback = NULL; -80028278: ac40000c sw zero,12(v0) - timer_array[i].busy = false; -8002827c: a0400009 sb zero,9(v0) - timer_array[i].repeat_flag = false; -80028280: a0400008 sb zero,8(v0) - timer_array[i].time = 0; -80028284: ac400000 sw zero,0(v0) - timer_array[i].orig_time = 0; -80028288: ac400004 sw zero,4(v0) -8002828c: 24420010 addiu v0,v0,16 - -void SystemResetTimers(void) -{ - uint8_t i; - - for(i = 0; i < SYSTEM_MAX_TIMERS; i++) -80028290: 1443fff9 bne v0,v1,80028278 -80028294: 00000000 nop - timer_array[i].busy = false; - timer_array[i].repeat_flag = false; - timer_array[i].time = 0; - timer_array[i].orig_time = 0; - } -} -80028298: 03e00008 jr ra -8002829c: 00000000 nop - -800282a0 : - * *************************************/ - -void SystemInit(void) -{ - //Reset global timer - global_timer = 0; -800282a0: 00002821 move a1,zero -800282a4: 3c028007 lui v0,0x8007 -800282a8: 00002021 move a0,zero - * @author: Xavier Del Campo - * @brief: - * *************************************/ - -void SystemInit(void) -{ -800282ac: 27bdffe8 addiu sp,sp,-24 - //Reset global timer - global_timer = 0; -800282b0: ac441cb8 sw a0,7352(v0) -800282b4: ac451cbc sw a1,7356(v0) - //Reset 1 second timer - one_second_timer = 0; - //PSXSDK init - PSX_InitEx(PSX_INIT_SAVESTATE | PSX_INIT_CD); -800282b8: 24040003 li a0,3 -void SystemInit(void) -{ - //Reset global timer - global_timer = 0; - //Reset 1 second timer - one_second_timer = 0; -800282bc: 3c028007 lui v0,0x8007 -800282c0: a0401cb4 sb zero,7348(v0) - * @author: Xavier Del Campo - * @brief: - * *************************************/ - -void SystemInit(void) -{ -800282c4: afbf0014 sw ra,20(sp) - //Reset global timer - global_timer = 0; - //Reset 1 second timer - one_second_timer = 0; - //PSXSDK init - PSX_InitEx(PSX_INIT_SAVESTATE | PSX_INIT_CD); -800282c8: 0c00cfe4 jal 80033f90 -800282cc: afb00010 sw s0,16(sp) - //Graphics init - GsInit(); -800282d0: 0c00bc55 jal 8002f154 -800282d4: 3c10f200 lui s0,0xf200 - //Clear VRAM - GsClearMem(); -800282d8: 0c00bd74 jal 8002f5d0 -800282dc: 00000000 nop - //Set Video Resolution -#ifdef _PAL_MODE_ - GsSetVideoMode(X_SCREEN_RESOLUTION, Y_SCREEN_RESOLUTION, VMODE_PAL); -800282e0: 24060001 li a2,1 -800282e4: 240500f0 li a1,240 -800282e8: 0c00bc63 jal 8002f18c -800282ec: 24040180 li a0,384 -#else - GsSetVideoMode(X_SCREEN_RESOLUTION, Y_SCREEN_RESOLUTION, VMODE_NTSC); -#endif //_PAL_MODE_ - //SPU init - SsInit(); -800282f0: 0c00ccb2 jal 800332c8 -800282f4: 00000000 nop - //Reset all user-handled timers - SystemResetTimers(); -800282f8: 0c00a09a jal 80028268 -800282fc: 00000000 nop - //Pads init - PadInit(); -80028300: 0c009b8d jal 80026e34 -80028304: 00000000 nop - //Set Drawing Environment - GfxInitDrawEnv(); -80028308: 0c008faf jal 80023ebc -8002830c: 00000000 nop - //Set Display Environment - GfxInitDispEnv(); -80028310: 0c008fb9 jal 80023ee4 -80028314: 00000000 nop - //Set VBlank Handler for screen refresh - SetVBlankHandler(&ISR_SystemDefaultVBlank); -80028318: 3c048002 lui a0,0x8002 -8002831c: 0c00d35e jal 80034d78 -80028320: 24847ea0 addiu a0,a0,32416 - //Set Primitive List - GfxSetPrimitiveList(); -80028324: 0c008fbe jal 80023ef8 -80028328: 00000000 nop - // Init memory card - MemCardInit(); -8002832c: 0c009545 jal 80025514 -80028330: 00000000 nop - //Initial value for system_busy - system_busy = false; -80028334: 3c028007 lui v0,0x8007 - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); -80028338: 24040080 li a0,128 -8002833c: 0c00900b jal 8002402c -80028340: a0401cb0 sb zero,7344(v0) -{ - uint32_t * ptrStack = BEGIN_STACK_ADDRESS; - - ptrStack -= STACK_SIZE; - - *ptrStack = END_STACK_PATTERN; -80028344: 3c031802 lui v1,0x1802 -80028348: 3c02801f lui v0,0x801f -8002834c: 24632015 addiu v1,v1,8213 -80028350: 3442bf00 ori v0,v0,0xbf00 - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); - - SystemSetStackPattern(); - - SetRCnt(RCntCNT2,0xFFFF,RCntSC); -80028354: 26040002 addiu a0,s0,2 -{ - uint32_t * ptrStack = BEGIN_STACK_ADDRESS; - - ptrStack -= STACK_SIZE; - - *ptrStack = END_STACK_PATTERN; -80028358: ac430000 sw v1,0(v0) - - GfxSetGlobalLuminance(NORMAL_LUMINANCE); - - SystemSetStackPattern(); - - SetRCnt(RCntCNT2,0xFFFF,RCntSC); -8002835c: 24060001 li a2,1 -80028360: 0c00d2c8 jal 80034b20 -80028364: 3405ffff li a1,0xffff - StartRCnt(RCntCNT2); -} -80028368: 8fbf0014 lw ra,20(sp) - GfxSetGlobalLuminance(NORMAL_LUMINANCE); - - SystemSetStackPattern(); - - SetRCnt(RCntCNT2,0xFFFF,RCntSC); - StartRCnt(RCntCNT2); -8002836c: 36040002 ori a0,s0,0x2 -} -80028370: 8fb00010 lw s0,16(sp) - GfxSetGlobalLuminance(NORMAL_LUMINANCE); - - SystemSetStackPattern(); - - SetRCnt(RCntCNT2,0xFFFF,RCntSC); - StartRCnt(RCntCNT2); -80028374: 0800d31a j 80034c68 -80028378: 27bd0018 addiu sp,sp,24 - -8002837c : - timer_array[i].orig_time = 0; - } -} - -void SystemUserTimersHandler(void) -{ -8002837c: 27bdffe0 addiu sp,sp,-32 -80028380: afb10014 sw s1,20(sp) -80028384: afb00010 sw s0,16(sp) -80028388: 3c118005 lui s1,0x8005 -8002838c: 3c108005 lui s0,0x8005 -80028390: afb20018 sw s2,24(sp) -80028394: afbf001c sw ra,28(sp) -80028398: 2610884c addiu s0,s0,-30644 -8002839c: 2631894c addiu s1,s1,-30388 - refresh_needed = false; -} - -bool System1SecondTick(void) -{ - return one_second_timer; -800283a0: 3c128007 lui s2,0x8007 -{ - uint8_t i; - - for(i = 0; i < SYSTEM_MAX_TIMERS; i++) - { - if(timer_array[i].busy == true) -800283a4: 92020009 lbu v0,9(s0) -800283a8: 00000000 nop -800283ac: 10400018 beqz v0,80028410 -800283b0: 00000000 nop - { - if(System1SecondTick() == true) -800283b4: 92421cb4 lbu v0,7348(s2) -800283b8: 00000000 nop -800283bc: 10400014 beqz v0,80028410 -800283c0: 00000000 nop - { - timer_array[i].time--; -800283c4: 8e020000 lw v0,0(s0) -800283c8: 00000000 nop -800283cc: 2442ffff addiu v0,v0,-1 - - if(timer_array[i].time == 0) -800283d0: 1440000f bnez v0,80028410 -800283d4: ae020000 sw v0,0(s0) - { - timer_array[i].Timeout_Callback(); -800283d8: 8e02000c lw v0,12(s0) -800283dc: 00000000 nop -800283e0: 0040f809 jalr v0 -800283e4: 00000000 nop - - if(timer_array[i].repeat_flag == true) -800283e8: 92020008 lbu v0,8(s0) -800283ec: 00000000 nop -800283f0: 10400004 beqz v0,80028404 -800283f4: 00000000 nop - { - timer_array[i].time = timer_array[i].orig_time; -800283f8: 8e020004 lw v0,4(s0) -800283fc: 10000004 b 80028410 -80028400: ae020000 sw v0,0(s0) - } - else - { - // Clean timer data - timer_array[i].busy = false; -80028404: a2000009 sb zero,9(s0) - timer_array[i].orig_time = 0; -80028408: ae000004 sw zero,4(s0) - timer_array[i].Timeout_Callback = NULL; -8002840c: ae00000c sw zero,12(s0) -80028410: 26100010 addiu s0,s0,16 - -void SystemUserTimersHandler(void) -{ - uint8_t i; - - for(i = 0; i < SYSTEM_MAX_TIMERS; i++) -80028414: 1611ffe3 bne s0,s1,800283a4 -80028418: 00000000 nop - } - } - } - } - } -} -8002841c: 8fbf001c lw ra,28(sp) -80028420: 8fb20018 lw s2,24(sp) -80028424: 8fb10014 lw s1,20(sp) -80028428: 8fb00010 lw s0,16(sp) -8002842c: 03e00008 jr ra -80028430: 27bd0020 addiu sp,sp,32 - -80028434 : - -void SystemTimerRestart(TYPE_TIMER * timer) -{ - timer->time = timer->orig_time; -80028434: 8c820004 lw v0,4(a0) -80028438: 03e00008 jr ra -8002843c: ac820000 sw v0,0(a0) - -80028440 : -} - -void SystemTimerRemove(TYPE_TIMER * timer) -{ - timer->time = 0; -80028440: ac800000 sw zero,0(a0) - timer->orig_time = 0; -80028444: ac800004 sw zero,4(a0) - timer->Timeout_Callback = NULL; -80028448: ac80000c sw zero,12(a0) - timer->busy = false; -8002844c: a0800009 sb zero,9(a0) - timer->repeat_flag = false; -80028450: 03e00008 jr ra -80028454: a0800008 sb zero,8(a0) - -80028458 : - -bool SystemArrayCompare(unsigned short * arr1, unsigned short * arr2, size_t sz) -{ - size_t i; - - for(i = 0; i < sz; i++) -80028458: 00001021 move v0,zero -8002845c: 10460008 beq v0,a2,80028480 -80028460: 00000000 nop - { - if(arr1[i] != arr2[i]) -80028464: 94870000 lhu a3,0(a0) -80028468: 94a30000 lhu v1,0(a1) -8002846c: 24840002 addiu a0,a0,2 -80028470: 14e30005 bne a3,v1,80028488 -80028474: 24a50002 addiu a1,a1,2 - -bool SystemArrayCompare(unsigned short * arr1, unsigned short * arr2, size_t sz) -{ - size_t i; - - for(i = 0; i < sz; i++) -80028478: 1000fff8 b 8002845c -8002847c: 24420001 addiu v0,v0,1 -80028480: 03e00008 jr ra -80028484: 24020001 li v0,1 - return false; - } - } - - return true; -} -80028488: 03e00008 jr ra -8002848c: 00001021 move v0,zero - -80028490 : - -void SystemPrintStackPointerAddress(void) -{ -80028490: 27bdffd0 addiu sp,sp,-48 -80028494: afb00020 sw s0,32(sp) -static const fix16_t fix16_one = 0x00010000; /*!< fix16_t value of 1 */ - -/* Conversion functions between fix16_t and float/integer. - * These are inlined to allow compiler to optimize away constant numbers - */ -static inline fix16_t fix16_from_int(int a) { return a * fix16_one; } -80028498: 3c10801f lui s0,0x801f -8002849c: afb10024 sw s1,36(sp) -800284a0: 3610ff00 ori s0,s0,0xff00 -800284a4: 27b10018 addiu s1,sp,24 -800284a8: 02118023 subu s0,s0,s1 -800284ac: 00108400 sll s0,s0,0x10 -#ifdef PSXSDK_DEBUG // Used to avoid unused variable warning - void * ptr = NULL; - fix16_t used_bytes = fix16_from_int((int)((void*)BEGIN_STACK_ADDRESS - (void*)&ptr)); - fix16_t stackPercent = fix16_sdiv(used_bytes,fix16_from_int((int)STACK_SIZE)); -800284b0: 3c051000 lui a1,0x1000 -800284b4: 02002021 move a0,s0 - - return true; -} - -void SystemPrintStackPointerAddress(void) -{ -800284b8: afbf002c sw ra,44(sp) -800284bc: afb20028 sw s2,40(sp) -#ifdef PSXSDK_DEBUG // Used to avoid unused variable warning - void * ptr = NULL; - fix16_t used_bytes = fix16_from_int((int)((void*)BEGIN_STACK_ADDRESS - (void*)&ptr)); - fix16_t stackPercent = fix16_sdiv(used_bytes,fix16_from_int((int)STACK_SIZE)); -800284c0: 0c00a281 jal 80028a04 -800284c4: afa00018 sw zero,24(sp) - - stackPercent = fix16_smul(stackPercent, fix16_from_int((int)100)); -800284c8: 00402021 move a0,v0 -800284cc: 0c00a1f8 jal 800287e0 -800284d0: 3c050064 lui a1,0x64 - - dprintf("stackPercent: %d\n", stackPercent); -800284d4: 3c048004 lui a0,0x8004 -#ifdef PSXSDK_DEBUG // Used to avoid unused variable warning - void * ptr = NULL; - fix16_t used_bytes = fix16_from_int((int)((void*)BEGIN_STACK_ADDRESS - (void*)&ptr)); - fix16_t stackPercent = fix16_sdiv(used_bytes,fix16_from_int((int)STACK_SIZE)); - - stackPercent = fix16_smul(stackPercent, fix16_from_int((int)100)); -800284d8: 00409021 move s2,v0 - - dprintf("stackPercent: %d\n", stackPercent); -800284dc: 00402821 move a1,v0 -800284e0: 0c00ed8f jal 8003b63c -800284e4: 24841304 addiu a0,a0,4868 -static inline int fix16_to_int(fix16_t a) -{ -#ifdef FIXMATH_NO_ROUNDING - return a >> 16; -#else - if (a >= 0) -800284e8: 06400003 bltz s2,800284f8 -800284ec: 26478000 addiu a3,s2,-32768 - return (a + fix16_one / 2) / fix16_one; -800284f0: 34078000 li a3,0x8000 -800284f4: 02473821 addu a3,s2,a3 - else - return (a - fix16_one / 2) / fix16_one; -800284f8: 00071fc3 sra v1,a3,0x1f -800284fc: 3063ffff andi v1,v1,0xffff -80028500: 00673821 addu a3,v1,a3 -static inline int fix16_to_int(fix16_t a) -{ -#ifdef FIXMATH_NO_ROUNDING - return a >> 16; -#else - if (a >= 0) -80028504: 06000004 bltz s0,80028518 -80028508: 00073c03 sra a3,a3,0x10 - return (a + fix16_one / 2) / fix16_one; -8002850c: 34028000 li v0,0x8000 -80028510: 10000002 b 8002851c -80028514: 02028021 addu s0,s0,v0 - else - return (a - fix16_one / 2) / fix16_one; -80028518: 26108000 addiu s0,s0,-32768 -8002851c: 001017c3 sra v0,s0,0x1f -80028520: 3042ffff andi v0,v0,0xffff -80028524: 00508021 addu s0,v0,s0 -80028528: 00108403 sra s0,s0,0x10 - - dprintf("Stack begin pointer: 0x%08X\n" -8002852c: 3c05801f lui a1,0x801f -80028530: 3c048004 lui a0,0x8004 -80028534: afb00010 sw s0,16(sp) -80028538: 02203021 move a2,s1 -8002853c: 34a5ff00 ori a1,a1,0xff00 -80028540: 0c00ed8f jal 8003b63c -80028544: 24841318 addiu a0,a0,4888 - (void*)&ptr, - fix16_to_int(stackPercent), - fix16_to_int(used_bytes) ); -#endif // PSXSDK_DEBUG - -} -80028548: 8fbf002c lw ra,44(sp) -8002854c: 8fb20028 lw s2,40(sp) -80028550: 8fb10024 lw s1,36(sp) -80028554: 8fb00020 lw s0,32(sp) -80028558: 03e00008 jr ra -8002855c: 27bd0030 addiu sp,sp,48 - -80028560 : -{ - uint32_t * ptrStack = BEGIN_STACK_ADDRESS; - uint32_t data; - - ptrStack -= STACK_SIZE; - data = (*ptrStack); -80028560: 3c02801f lui v0,0x801f -80028564: 3442bf00 ori v0,v0,0xbf00 - - if(data != END_STACK_PATTERN) -80028568: 8c430000 lw v1,0(v0) -8002856c: 3c021802 lui v0,0x1802 -80028570: 24422015 addiu v0,v0,8213 -80028574: 10620007 beq v1,v0,80028594 -80028578: 3c048004 lui a0,0x8004 -#endif // PSXSDK_DEBUG - -} - -void SystemCheckStack(void) -{ -8002857c: 27bdffe8 addiu sp,sp,-24 -80028580: afbf0014 sw ra,20(sp) - ptrStack -= STACK_SIZE; - data = (*ptrStack); - - if(data != END_STACK_PATTERN) - { - dprintf("Stack overflow?\n"); -80028584: 0c00ed8f jal 8003b63c -80028588: 2484137c addiu a0,a0,4988 -8002858c: 1000ffff b 8002858c -80028590: 00000000 nop -80028594: 03e00008 jr ra -80028598: 00000000 nop - -8002859c : - - *ptrStack = END_STACK_PATTERN; -} - -int32_t SystemIndexOfStringArray(char * str, char ** array) -{ -8002859c: 27bdffd8 addiu sp,sp,-40 -800285a0: afb2001c sw s2,28(sp) - int32_t i; - - for(i = 0; array[i] != NULL; i++) - { - dprintf("String to find: %s\nEntry: %s\n", str, array[i]); -800285a4: 3c128004 lui s2,0x8004 - - *ptrStack = END_STACK_PATTERN; -} - -int32_t SystemIndexOfStringArray(char * str, char ** array) -{ -800285a8: afb30020 sw s3,32(sp) -800285ac: afb10018 sw s1,24(sp) -800285b0: afb00014 sw s0,20(sp) -800285b4: afbf0024 sw ra,36(sp) -800285b8: 00809821 move s3,a0 -800285bc: 00a08821 move s1,a1 - int32_t i; - - for(i = 0; array[i] != NULL; i++) -800285c0: 00008021 move s0,zero - { - dprintf("String to find: %s\nEntry: %s\n", str, array[i]); -800285c4: 26521390 addiu s2,s2,5008 - -int32_t SystemIndexOfStringArray(char * str, char ** array) -{ - int32_t i; - - for(i = 0; array[i] != NULL; i++) -800285c8: 8e260000 lw a2,0(s1) -800285cc: 00000000 nop -800285d0: 10c00010 beqz a2,80028614 -800285d4: 02602821 move a1,s3 - { - dprintf("String to find: %s\nEntry: %s\n", str, array[i]); -800285d8: 0c00ed8f jal 8003b63c -800285dc: 02402021 move a0,s2 - - if(strcmp(str, array[i]) == 0) -800285e0: 8e250000 lw a1,0(s1) -800285e4: 0c00d9aa jal 800366a8 -800285e8: 02602021 move a0,s3 -800285ec: 14400007 bnez v0,8002860c -800285f0: 26310004 addiu s1,s1,4 - { - dprintf("Match! Returning index %d...\n", i); -800285f4: 3c048004 lui a0,0x8004 -800285f8: 02002821 move a1,s0 -800285fc: 0c00ed8f jal 8003b63c -80028600: 248413b0 addiu a0,a0,5040 - return i; -80028604: 10000004 b 80028618 -80028608: 02001021 move v0,s0 - -int32_t SystemIndexOfStringArray(char * str, char ** array) -{ - int32_t i; - - for(i = 0; array[i] != NULL; i++) -8002860c: 1000ffee b 800285c8 -80028610: 26100001 addiu s0,s0,1 - dprintf("Match! Returning index %d...\n", i); - return i; - } - } - - return -1; -80028614: 2402ffff li v0,-1 -} -80028618: 8fbf0024 lw ra,36(sp) -8002861c: 8fb30020 lw s3,32(sp) -80028620: 8fb2001c lw s2,28(sp) -80028624: 8fb10018 lw s1,24(sp) -80028628: 8fb00014 lw s0,20(sp) -8002862c: 03e00008 jr ra -80028630: 27bd0028 addiu sp,sp,40 - -80028634 : - -int32_t SystemIndexOf_U16(uint16_t value, uint16_t * array, uint32_t sz) -{ -80028634: 3084ffff andi a0,a0,0xffff - int32_t i; - - for(i = 0; i < sz; i++) -80028638: 00001021 move v0,zero -8002863c: 10460007 beq v0,a2,8002865c -80028640: 24a50002 addiu a1,a1,2 - { - if(value == array[i]) -80028644: 94a3fffe lhu v1,-2(a1) -80028648: 00000000 nop -8002864c: 10640004 beq v1,a0,80028660 -80028650: 00000000 nop - -int32_t SystemIndexOf_U16(uint16_t value, uint16_t * array, uint32_t sz) -{ - int32_t i; - - for(i = 0; i < sz; i++) -80028654: 1000fff9 b 8002863c -80028658: 24420001 addiu v0,v0,1 - { - return i; - } - } - - return -1; -8002865c: 2402ffff li v0,-1 -} -80028660: 03e00008 jr ra -80028664: 00000000 nop - -80028668 : - -int32_t SystemIndexOf_U8(uint8_t value, uint8_t * array, uint32_t from, uint32_t sz) -{ -80028668: 308400ff andi a0,a0,0xff - int32_t i; - - for(i = from; i < sz; i++) -8002866c: 00c7102b sltu v0,a2,a3 -80028670: 10400008 beqz v0,80028694 -80028674: 00000000 nop - { - if(value == array[i]) -80028678: 00a61021 addu v0,a1,a2 -8002867c: 90420000 lbu v0,0(v0) -80028680: 00000000 nop -80028684: 10440005 beq v0,a0,8002869c -80028688: 00000000 nop - -int32_t SystemIndexOf_U8(uint8_t value, uint8_t * array, uint32_t from, uint32_t sz) -{ - int32_t i; - - for(i = from; i < sz; i++) -8002868c: 1000fff7 b 8002866c -80028690: 24c60001 addiu a2,a2,1 -80028694: 03e00008 jr ra -80028698: 2402ffff li v0,-1 - return i; - } - } - - return -1; -} -8002869c: 03e00008 jr ra -800286a0: 00c01021 move v0,a2 - -800286a4 : - uint32_t _a = a, _b = b; - uint32_t sum = _a + _b; - - // Overflow can only happen if sign of a == sign of b, and then - // it causes sign of sum != sign of a. - if (!((_a ^ _b) & 0x80000000) && ((_a ^ sum) & 0x80000000)) -800286a4: 00851826 xor v1,a0,a1 -800286a8: 04600004 bltz v1,800286bc -800286ac: 00851021 addu v0,a0,a1 -800286b0: 00822026 xor a0,a0,v0 -800286b4: 04800003 bltz a0,800286c4 -800286b8: 00000000 nop - return fix16_overflow; - - return sum; -} -800286bc: 03e00008 jr ra -800286c0: 00000000 nop -800286c4: 03e00008 jr ra -800286c8: 3c028000 lui v0,0x8000 - -800286cc : - uint32_t _a = a, _b = b; - uint32_t diff = _a - _b; - - // Overflow can only happen if sign of a != sign of b, and then - // it causes sign of diff != sign of a. - if (((_a ^ _b) & 0x80000000) && ((_a ^ diff) & 0x80000000)) -800286cc: 00851826 xor v1,a0,a1 -800286d0: 04600003 bltz v1,800286e0 -800286d4: 00851023 subu v0,a0,a1 - return fix16_overflow; - - return diff; -} -800286d8: 03e00008 jr ra -800286dc: 00000000 nop - uint32_t _a = a, _b = b; - uint32_t diff = _a - _b; - - // Overflow can only happen if sign of a != sign of b, and then - // it causes sign of diff != sign of a. - if (((_a ^ _b) & 0x80000000) && ((_a ^ diff) & 0x80000000)) -800286e0: 00822026 xor a0,a0,v0 -800286e4: 0481fffc bgez a0,800286d8 -800286e8: 00000000 nop - return fix16_overflow; - - return diff; -} -800286ec: 03e00008 jr ra -800286f0: 3c028000 lui v0,0x8000 - -800286f4 : - uint32_t _a = a, _b = b; - uint32_t sum = _a + _b; - - // Overflow can only happen if sign of a == sign of b, and then - // it causes sign of sum != sign of a. - if (!((_a ^ _b) & 0x80000000) && ((_a ^ sum) & 0x80000000)) -800286f4: 00851826 xor v1,a0,a1 -800286f8: 04600004 bltz v1,8002870c -800286fc: 00851021 addu v0,a0,a1 -80028700: 00821826 xor v1,a0,v0 -80028704: 04600006 bltz v1,80028720 -80028708: 00000000 nop -/* Saturating arithmetic */ -fix16_t fix16_sadd(fix16_t a, fix16_t b) -{ - fix16_t result = fix16_add(a, b); - - if (result == fix16_overflow) -8002870c: 3c038000 lui v1,0x8000 -80028710: 10430003 beq v0,v1,80028720 -80028714: 00000000 nop - return (a > 0) ? fix16_max : fix16_min; - - return result; -} -80028718: 03e00008 jr ra -8002871c: 00000000 nop -fix16_t fix16_sadd(fix16_t a, fix16_t b) -{ - fix16_t result = fix16_add(a, b); - - if (result == fix16_overflow) - return (a > 0) ? fix16_max : fix16_min; -80028720: 18800004 blez a0,80028734 -80028724: 00000000 nop -80028728: 3c027fff lui v0,0x7fff - - return result; -} -8002872c: 03e00008 jr ra -80028730: 3442ffff ori v0,v0,0xffff -fix16_t fix16_sadd(fix16_t a, fix16_t b) -{ - fix16_t result = fix16_add(a, b); - - if (result == fix16_overflow) - return (a > 0) ? fix16_max : fix16_min; -80028734: 03e00008 jr ra -80028738: 3c028000 lui v0,0x8000 - -8002873c : - uint32_t _a = a, _b = b; - uint32_t diff = _a - _b; - - // Overflow can only happen if sign of a != sign of b, and then - // it causes sign of diff != sign of a. - if (((_a ^ _b) & 0x80000000) && ((_a ^ diff) & 0x80000000)) -8002873c: 00851826 xor v1,a0,a1 -80028740: 04600006 bltz v1,8002875c -80028744: 00851023 subu v0,a0,a1 - -fix16_t fix16_ssub(fix16_t a, fix16_t b) -{ - fix16_t result = fix16_sub(a, b); - - if (result == fix16_overflow) -80028748: 3c038000 lui v1,0x8000 -8002874c: 10430006 beq v0,v1,80028768 -80028750: 00000000 nop - return (a > 0) ? fix16_max : fix16_min; - - return result; -} -80028754: 03e00008 jr ra -80028758: 00000000 nop - uint32_t _a = a, _b = b; - uint32_t diff = _a - _b; - - // Overflow can only happen if sign of a != sign of b, and then - // it causes sign of diff != sign of a. - if (((_a ^ _b) & 0x80000000) && ((_a ^ diff) & 0x80000000)) -8002875c: 00821826 xor v1,a0,v0 -80028760: 0461fffa bgez v1,8002874c -80028764: 3c038000 lui v1,0x8000 -fix16_t fix16_ssub(fix16_t a, fix16_t b) -{ - fix16_t result = fix16_sub(a, b); - - if (result == fix16_overflow) - return (a > 0) ? fix16_max : fix16_min; -80028768: 18800004 blez a0,8002877c -8002876c: 00000000 nop -80028770: 3c027fff lui v0,0x7fff - - return result; -} -80028774: 03e00008 jr ra -80028778: 3442ffff ori v0,v0,0xffff -fix16_t fix16_ssub(fix16_t a, fix16_t b) -{ - fix16_t result = fix16_sub(a, b); - - if (result == fix16_overflow) - return (a > 0) ? fix16_max : fix16_min; -8002877c: 03e00008 jr ra -80028780: 3c028000 lui v0,0x8000 - -80028784 : - */ - -#if !defined(FIXMATH_NO_64BIT) && !defined(FIXMATH_OPTIMIZE_8BIT) -fix16_t fix16_mul(fix16_t inArg0, fix16_t inArg1) -{ - int64_t product = (int64_t)inArg0 * inArg1; -80028784: 00850018 mult a0,a1 -80028788: 00002810 mfhi a1 -8002878c: 00002012 mflo a0 - #ifndef FIXMATH_NO_OVERFLOW - // The upper 17 bits should all be the same (the sign). - uint32_t upper = (product >> 47); - #endif - - if (product < 0) -80028790: 04a1000f bgez a1,800287d0 -80028794: 000513c3 sra v0,a1,0xf - { - #ifndef FIXMATH_NO_OVERFLOW - if (~upper) -80028798: 2403ffff li v1,-1 -8002879c: 1443000e bne v0,v1,800287d8 -800287a0: 24a3ffff addiu v1,a1,-1 - return fix16_overflow; - #endif - - #ifndef FIXMATH_NO_ROUNDING - // This adjustment is required in order to round -1/2 correctly - product--; -800287a4: 2482ffff addiu v0,a0,-1 -800287a8: 0044302b sltu a2,v0,a0 -800287ac: 00402021 move a0,v0 -800287b0: 00c32821 addu a1,a2,v1 - - #ifdef FIXMATH_NO_ROUNDING - return product >> 16; - #else - fix16_t result = product >> 16; - result += (product & 0x8000) >> 15; -800287b4: 30828000 andi v0,a0,0x8000 -800287b8: 00051c00 sll v1,a1,0x10 -800287bc: 00042402 srl a0,a0,0x10 -800287c0: 00642025 or a0,v1,a0 -800287c4: 000213c2 srl v0,v0,0xf - - return result; -800287c8: 03e00008 jr ra -800287cc: 00441021 addu v0,v0,a0 - #endif - } - else - { - #ifndef FIXMATH_NO_OVERFLOW - if (upper) -800287d0: 1040fff8 beqz v0,800287b4 -800287d4: 00000000 nop - fix16_t result = product >> 16; - result += (product & 0x8000) >> 15; - - return result; - #endif -} -800287d8: 03e00008 jr ra -800287dc: 3c028000 lui v0,0x8000 - -800287e0 : - */ - -#if !defined(FIXMATH_NO_64BIT) && !defined(FIXMATH_OPTIMIZE_8BIT) -fix16_t fix16_mul(fix16_t inArg0, fix16_t inArg1) -{ - int64_t product = (int64_t)inArg0 * inArg1; -800287e0: 00850018 mult a0,a1 -800287e4: 00001810 mfhi v1 -800287e8: 00001012 mflo v0 - #ifndef FIXMATH_NO_OVERFLOW - // The upper 17 bits should all be the same (the sign). - uint32_t upper = (product >> 47); - #endif - - if (product < 0) -800287ec: 0461000c bgez v1,80028820 -800287f0: 000333c3 sra a2,v1,0xf - { - #ifndef FIXMATH_NO_OVERFLOW - if (~upper) -800287f4: 2407ffff li a3,-1 -800287f8: 10c70016 beq a2,a3,80028854 -800287fc: 2446ffff addiu a2,v0,-1 -fix16_t fix16_smul(fix16_t inArg0, fix16_t inArg1) { - fix16_t result = fix16_mul(inArg0, inArg1); - - if (result == fix16_overflow) - { - if ((inArg0 >= 0) == (inArg1 >= 0)) -80028800: 00052827 nor a1,zero,a1 -80028804: 000427c2 srl a0,a0,0x1f -80028808: 00052fc2 srl a1,a1,0x1f -8002880c: 10850016 beq a0,a1,80028868 -80028810: 00000000 nop - return fix16_max; -80028814: 3c027fff lui v0,0x7fff - else - return fix16_min; - } - - return result; -} -80028818: 03e00008 jr ra -8002881c: 3442ffff ori v0,v0,0xffff - #endif - } - else - { - #ifndef FIXMATH_NO_OVERFLOW - if (upper) -80028820: 14c0fff7 bnez a2,80028800 -80028824: 00000000 nop - - #ifdef FIXMATH_NO_ROUNDING - return product >> 16; - #else - fix16_t result = product >> 16; - result += (product & 0x8000) >> 15; -80028828: 30468000 andi a2,v0,0x8000 -8002882c: 00033c00 sll a3,v1,0x10 -80028830: 00021402 srl v0,v0,0x10 -80028834: 00061bc2 srl v1,a2,0xf -80028838: 00e21025 or v0,a3,v0 -8002883c: 00621021 addu v0,v1,v0 -#ifndef FIXMATH_NO_OVERFLOW -/* Wrapper around fix16_mul to add saturating arithmetic. */ -fix16_t fix16_smul(fix16_t inArg0, fix16_t inArg1) { - fix16_t result = fix16_mul(inArg0, inArg1); - - if (result == fix16_overflow) -80028840: 3c038000 lui v1,0x8000 -80028844: 1043ffef beq v0,v1,80028804 -80028848: 00052827 nor a1,zero,a1 - else - return fix16_min; - } - - return result; -} -8002884c: 03e00008 jr ra -80028850: 00000000 nop - return fix16_overflow; - #endif - - #ifndef FIXMATH_NO_ROUNDING - // This adjustment is required in order to round -1/2 correctly - product--; -80028854: 00c2402b sltu t0,a2,v0 -80028858: 2467ffff addiu a3,v1,-1 -8002885c: 00c01021 move v0,a2 -80028860: 1000fff1 b 80028828 -80028864: 01071821 addu v1,t0,a3 - if (result == fix16_overflow) - { - if ((inArg0 >= 0) == (inArg1 >= 0)) - return fix16_max; - else - return fix16_min; -80028868: 03e00008 jr ra -8002886c: 3c028000 lui v0,0x8000 - -80028870 : -fix16_t fix16_div(fix16_t a, fix16_t b) -{ - // This uses a hardware 32/32 bit division multiple times, until we have - // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations. - - if (b == 0) -80028870: 10a00062 beqz a1,800289fc -80028874: 00000000 nop - return result; -} -#endif - -fix16_t fix16_div(fix16_t a, fix16_t b) -{ -80028878: 27bdffd0 addiu sp,sp,-48 - // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations. - - if (b == 0) - return fix16_min; - - uint32_t remainder = (a >= 0) ? a : (-a); -8002887c: 00803821 move a3,a0 - return result; -} -#endif - -fix16_t fix16_div(fix16_t a, fix16_t b) -{ -80028880: afbf002c sw ra,44(sp) -80028884: afb60028 sw s6,40(sp) -80028888: afb50024 sw s5,36(sp) -8002888c: afb40020 sw s4,32(sp) -80028890: afb3001c sw s3,28(sp) -80028894: afb20018 sw s2,24(sp) -80028898: afb10014 sw s1,20(sp) - // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations. - - if (b == 0) - return fix16_min; - - uint32_t remainder = (a >= 0) ? a : (-a); -8002889c: 04800055 bltz a0,800289f4 -800288a0: afb00010 sw s0,16(sp) -800288a4: 00e08021 move s0,a3 - uint32_t divider = (b >= 0) ? b : (-b); -800288a8: 04a00050 bltz a1,800289ec -800288ac: 00a03021 move a2,a1 - int bit_pos = 17; - - // Kick-start the division a bit. - // This improves speed in the worst-case scenarios where N and D are large - // It gets a lower estimate for the result by N/(D >> 17 + 1). - if (divider & 0xFFF00000) -800288b0: 3c02fff0 lui v0,0xfff0 -800288b4: 00c21024 and v0,a2,v0 -800288b8: 14400036 bnez v0,80028994 -800288bc: 00c08821 move s1,a2 - if (b == 0) - return fix16_min; - - uint32_t remainder = (a >= 0) ? a : (-a); - uint32_t divider = (b >= 0) ? b : (-b); - uint32_t quotient = 0; -800288c0: 0000b021 move s6,zero - quotient = remainder / shifted_div; - remainder -= ((uint64_t)quotient * divider) >> 17; - } - - // If the divider is divisible by 2^n, take advantage of it. - while (!(divider & 0xF) && bit_pos >= 4) -800288c4: 30c6000f andi a2,a2,0xf -800288c8: 0080a021 move s4,a0 -800288cc: 00a09821 move s3,a1 -800288d0: 14c00008 bnez a2,800288f4 -800288d4: 24150011 li s5,17 -800288d8: 24030001 li v1,1 - { - divider >>= 4; -800288dc: 00118902 srl s1,s1,0x4 - quotient = remainder / shifted_div; - remainder -= ((uint64_t)quotient * divider) >> 17; - } - - // If the divider is divisible by 2^n, take advantage of it. - while (!(divider & 0xF) && bit_pos >= 4) -800288e0: 3222000f andi v0,s1,0xf -800288e4: 14400003 bnez v0,800288f4 -800288e8: 26b5fffc addiu s5,s5,-4 -800288ec: 16a3fffb bne s5,v1,800288dc -800288f0: 00000000 nop - { - divider >>= 4; - bit_pos -= 4; - } - - while (remainder && bit_pos >= 0) -800288f4: 12000037 beqz s0,800289d4 -800288f8: 2412ffff li s2,-1 -800288fc: 10000005 b 80028914 -80028900: 00000000 nop -80028904: 12000033 beqz s0,800289d4 -80028908: 00000000 nop -8002890c: 06a00031 bltz s5,800289d4 -80028910: 00000000 nop - { - // Shift remainder as much as we can without overflowing - int shift = clz(remainder); -80028914: 0c00a2d8 jal 80028b60 <__clzsi2> -80028918: 02002021 move a0,s0 -8002891c: 02a2182a slt v1,s5,v0 -80028920: 10600002 beqz v1,8002892c -80028924: 00000000 nop -80028928: 02a01021 move v0,s5 - if (shift > bit_pos) shift = bit_pos; - remainder <<= shift; -8002892c: 00508004 sllv s0,s0,v0 - bit_pos -= shift; - - uint32_t div = remainder / divider; -80028930: 16200002 bnez s1,8002893c -80028934: 0211001b divu zero,s0,s1 -80028938: 0007000d break 0x7 - { - // Shift remainder as much as we can without overflowing - int shift = clz(remainder); - if (shift > bit_pos) shift = bit_pos; - remainder <<= shift; - bit_pos -= shift; -8002893c: 02a21023 subu v0,s5,v0 - uint32_t div = remainder / divider; - remainder = remainder % divider; - quotient += div << bit_pos; - - #ifndef FIXMATH_NO_OVERFLOW - if (div & ~(0xFFFFFFFF >> bit_pos)) -80028940: 00521806 srlv v1,s2,v0 -80028944: 00031827 nor v1,zero,v1 - return fix16_overflow; - #endif - - remainder <<= 1; - bit_pos--; -80028948: 2455ffff addiu s5,v0,-1 - int shift = clz(remainder); - if (shift > bit_pos) shift = bit_pos; - remainder <<= shift; - bit_pos -= shift; - - uint32_t div = remainder / divider; -8002894c: 00008012 mflo s0 - remainder = remainder % divider; - quotient += div << bit_pos; -80028950: 00501004 sllv v0,s0,v0 - - #ifndef FIXMATH_NO_OVERFLOW - if (div & ~(0xFFFFFFFF >> bit_pos)) -80028954: 00701824 and v1,v1,s0 - int shift = clz(remainder); - if (shift > bit_pos) shift = bit_pos; - remainder <<= shift; - bit_pos -= shift; - - uint32_t div = remainder / divider; -80028958: 00002010 mfhi a0 - #ifndef FIXMATH_NO_OVERFLOW - if (div & ~(0xFFFFFFFF >> bit_pos)) - return fix16_overflow; - #endif - - remainder <<= 1; -8002895c: 00048040 sll s0,a0,0x1 - uint32_t div = remainder / divider; - remainder = remainder % divider; - quotient += div << bit_pos; - - #ifndef FIXMATH_NO_OVERFLOW - if (div & ~(0xFFFFFFFF >> bit_pos)) -80028960: 1060ffe8 beqz v1,80028904 -80028964: 02c2b021 addu s6,s6,v0 -{ - // This uses a hardware 32/32 bit division multiple times, until we have - // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations. - - if (b == 0) - return fix16_min; -80028968: 3c028000 lui v0,0x8000 - - result = -result; - } - - return result; -} -8002896c: 8fbf002c lw ra,44(sp) -80028970: 8fb60028 lw s6,40(sp) -80028974: 8fb50024 lw s5,36(sp) -80028978: 8fb40020 lw s4,32(sp) -8002897c: 8fb3001c lw s3,28(sp) -80028980: 8fb20018 lw s2,24(sp) -80028984: 8fb10014 lw s1,20(sp) -80028988: 8fb00010 lw s0,16(sp) -8002898c: 03e00008 jr ra -80028990: 27bd0030 addiu sp,sp,48 - // This improves speed in the worst-case scenarios where N and D are large - // It gets a lower estimate for the result by N/(D >> 17 + 1). - if (divider & 0xFFF00000) - { - uint32_t shifted_div = ((divider >> 17) + 1); - quotient = remainder / shifted_div; -80028994: 0006b442 srl s6,a2,0x11 -80028998: 26d60001 addiu s6,s6,1 -8002899c: 16c00002 bnez s6,800289a8 -800289a0: 00f6001b divu zero,a3,s6 -800289a4: 0007000d break 0x7 -800289a8: 0000b012 mflo s6 - ... - remainder -= ((uint64_t)quotient * divider) >> 17; -800289b4: 02c60019 multu s6,a2 -800289b8: 00001012 mflo v0 -800289bc: 00021442 srl v0,v0,0x11 -800289c0: 00001810 mfhi v1 -800289c4: 00031bc0 sll v1,v1,0xf -800289c8: 00621025 or v0,v1,v0 -800289cc: 1000ffbd b 800288c4 -800289d0: 00e28023 subu s0,a3,v0 - #ifndef FIXMATH_NO_ROUNDING - // Quotient is always positive so rounding is easy - quotient++; - #endif - - fix16_t result = quotient >> 1; -800289d4: 26d60001 addiu s6,s6,1 - - // Figure out the sign of the result - if ((a ^ b) & 0x80000000) -800289d8: 02749826 xor s3,s3,s4 -800289dc: 0661ffe3 bgez s3,8002896c -800289e0: 00161042 srl v0,s6,0x1 - #ifndef FIXMATH_NO_OVERFLOW - if (result == fix16_min) - return fix16_overflow; - #endif - - result = -result; -800289e4: 1000ffe1 b 8002896c -800289e8: 00021023 negu v0,v0 - - if (b == 0) - return fix16_min; - - uint32_t remainder = (a >= 0) ? a : (-a); - uint32_t divider = (b >= 0) ? b : (-b); -800289ec: 1000ffb0 b 800288b0 -800289f0: 00053023 negu a2,a1 - // computed all the bits in (a<<17)/b. Usually this takes 1-3 iterations. - - if (b == 0) - return fix16_min; - - uint32_t remainder = (a >= 0) ? a : (-a); -800289f4: 1000ffab b 800288a4 -800289f8: 00043823 negu a3,a0 - - result = -result; - } - - return result; -} -800289fc: 03e00008 jr ra -80028a00: 3c028000 lui v0,0x8000 - -80028a04 : -} -#endif - -#ifndef FIXMATH_NO_OVERFLOW -/* Wrapper around fix16_div to add saturating arithmetic. */ -fix16_t fix16_sdiv(fix16_t inArg0, fix16_t inArg1) { -80028a04: 27bdffe0 addiu sp,sp,-32 -80028a08: afb10018 sw s1,24(sp) -80028a0c: afb00014 sw s0,20(sp) -80028a10: afbf001c sw ra,28(sp) -80028a14: 00808821 move s1,a0 - fix16_t result = fix16_div(inArg0, inArg1); -80028a18: 0c00a21c jal 80028870 -80028a1c: 00a08021 move s0,a1 - - if (result == fix16_overflow) -80028a20: 3c038000 lui v1,0x8000 -80028a24: 10430006 beq v0,v1,80028a40 -80028a28: 00108027 nor s0,zero,s0 - else - return fix16_min; - } - - return result; -} -80028a2c: 8fbf001c lw ra,28(sp) -80028a30: 8fb10018 lw s1,24(sp) -80028a34: 8fb00014 lw s0,20(sp) -80028a38: 03e00008 jr ra -80028a3c: 27bd0020 addiu sp,sp,32 -fix16_t fix16_sdiv(fix16_t inArg0, fix16_t inArg1) { - fix16_t result = fix16_div(inArg0, inArg1); - - if (result == fix16_overflow) - { - if ((inArg0 >= 0) == (inArg1 >= 0)) -80028a40: 00118fc2 srl s1,s1,0x1f -80028a44: 001087c2 srl s0,s0,0x1f -80028a48: 1230fff8 beq s1,s0,80028a2c -80028a4c: 3c028000 lui v0,0x8000 - else - return fix16_min; - } - - return result; -} -80028a50: 8fbf001c lw ra,28(sp) - fix16_t result = fix16_div(inArg0, inArg1); - - if (result == fix16_overflow) - { - if ((inArg0 >= 0) == (inArg1 >= 0)) - return fix16_max; -80028a54: 3c027fff lui v0,0x7fff - else - return fix16_min; - } - - return result; -} -80028a58: 8fb10018 lw s1,24(sp) -80028a5c: 8fb00014 lw s0,20(sp) - fix16_t result = fix16_div(inArg0, inArg1); - - if (result == fix16_overflow) - { - if ((inArg0 >= 0) == (inArg1 >= 0)) - return fix16_max; -80028a60: 3442ffff ori v0,v0,0xffff - else - return fix16_min; - } - - return result; -} -80028a64: 03e00008 jr ra -80028a68: 27bd0020 addiu sp,sp,32 - -80028a6c : -#endif - -fix16_t fix16_lerp8(fix16_t inArg0, fix16_t inArg1, uint8_t inFract) { -80028a6c: 30c600ff andi a2,a2,0xff - int64_t tempOut = int64_mul_i32_i32(inArg0, ((1 << 8) - inFract)); - tempOut = int64_add(tempOut, int64_mul_i32_i32(inArg1, inFract)); - tempOut = int64_shift(tempOut, -8); - return (fix16_t)int64_lo(tempOut); -80028a70: 24020100 li v0,256 -80028a74: 00461023 subu v0,v0,a2 -80028a78: 00440018 mult v0,a0 -80028a7c: 00002012 mflo a0 -80028a80: 000417c3 sra v0,a0,0x1f -80028a84: 00000000 nop -80028a88: 00c50018 mult a2,a1 -80028a8c: 00002812 mflo a1 -80028a90: 00853821 addu a3,a0,a1 -80028a94: 000537c3 sra a2,a1,0x1f -80028a98: 00e4182b sltu v1,a3,a0 -80028a9c: 00462021 addu a0,v0,a2 -80028aa0: 00642021 addu a0,v1,a0 -80028aa4: 00042600 sll a0,a0,0x18 -80028aa8: 00071202 srl v0,a3,0x8 -} -80028aac: 03e00008 jr ra -80028ab0: 00821025 or v0,a0,v0 - -80028ab4 : - -fix16_t fix16_lerp16(fix16_t inArg0, fix16_t inArg1, uint16_t inFract) { -80028ab4: 30c6ffff andi a2,a2,0xffff - int64_t tempOut = int64_mul_i32_i32(inArg0, ((1 << 16) - inFract)); - tempOut = int64_add(tempOut, int64_mul_i32_i32(inArg1, inFract)); - tempOut = int64_shift(tempOut, -16); - return (fix16_t)int64_lo(tempOut); -80028ab8: 3c020001 lui v0,0x1 -80028abc: 00461023 subu v0,v0,a2 -80028ac0: 00440018 mult v0,a0 -80028ac4: 00002012 mflo a0 -80028ac8: 000417c3 sra v0,a0,0x1f -80028acc: 00000000 nop -80028ad0: 00c50018 mult a2,a1 -80028ad4: 00002812 mflo a1 -80028ad8: 00853821 addu a3,a0,a1 -80028adc: 000537c3 sra a2,a1,0x1f -80028ae0: 00e4182b sltu v1,a3,a0 -80028ae4: 00462021 addu a0,v0,a2 -80028ae8: 00642021 addu a0,v1,a0 -80028aec: 00042400 sll a0,a0,0x10 -80028af0: 00071402 srl v0,a3,0x10 -} -80028af4: 03e00008 jr ra -80028af8: 00821025 or v0,a0,v0 - -80028afc : - -#ifndef FIXMATH_NO_64BIT -fix16_t fix16_lerp32(fix16_t inArg0, fix16_t inArg1, uint32_t inFract) { - int64_t tempOut; - tempOut = ((int64_t)inArg0 * (0 - inFract)); -80028afc: 00061023 negu v0,a2 -80028b00: 00043fc3 sra a3,a0,0x1f -80028b04: 00e20018 mult a3,v0 - tempOut += ((int64_t)inArg1 * inFract); -80028b08: 00051fc3 sra v1,a1,0x1f -} - -#ifndef FIXMATH_NO_64BIT -fix16_t fix16_lerp32(fix16_t inArg0, fix16_t inArg1, uint32_t inFract) { - int64_t tempOut; - tempOut = ((int64_t)inArg0 * (0 - inFract)); -80028b0c: 00003812 mflo a3 - ... -80028b18: 00440019 multu v0,a0 -80028b1c: 00004012 mflo t0 -80028b20: 00004810 mfhi t1 -80028b24: 00e94821 addu t1,a3,t1 -80028b28: 00000000 nop - tempOut += ((int64_t)inArg1 * inFract); -80028b2c: 00660018 mult v1,a2 -80028b30: 00001012 mflo v0 - ... -80028b3c: 00a60019 multu a1,a2 -80028b40: 00003012 mflo a2 -80028b44: 00003810 mfhi a3 -80028b48: 00473821 addu a3,v0,a3 -80028b4c: 00c81021 addu v0,a2,t0 -80028b50: 0046102b sltu v0,v0,a2 -80028b54: 00e91821 addu v1,a3,t1 - tempOut >>= 32; - return (fix16_t)tempOut; -} -80028b58: 03e00008 jr ra -80028b5c: 00431021 addu v0,v0,v1 - -80028b60 <__clzsi2>: -80028b60: 3c020001 lui v0,0x1 -80028b64: 0082102b sltu v0,a0,v0 -80028b68: 1040000c beqz v0,80028b9c <__clzsi2+0x3c> -80028b6c: 3c020100 lui v0,0x100 -80028b70: 2c820100 sltiu v0,a0,256 -80028b74: 10400014 beqz v0,80028bc8 <__clzsi2+0x68> -80028b78: 3c038004 lui v1,0x8004 -80028b7c: 00001021 move v0,zero -80028b80: 00442006 srlv a0,a0,v0 -80028b84: 2463f818 addiu v1,v1,-2024 -80028b88: 00832021 addu a0,a0,v1 -80028b8c: 90820000 lbu v0,0(a0) -80028b90: 24050020 li a1,32 -80028b94: 03e00008 jr ra -80028b98: 00a21023 subu v0,a1,v0 -80028b9c: 0082102b sltu v0,a0,v0 -80028ba0: 14400011 bnez v0,80028be8 <__clzsi2+0x88> -80028ba4: 3c038004 lui v1,0x8004 -80028ba8: 24020018 li v0,24 -80028bac: 00442006 srlv a0,a0,v0 -80028bb0: 2463f818 addiu v1,v1,-2024 -80028bb4: 00832021 addu a0,a0,v1 -80028bb8: 90820000 lbu v0,0(a0) -80028bbc: 24050008 li a1,8 -80028bc0: 03e00008 jr ra -80028bc4: 00a21023 subu v0,a1,v0 -80028bc8: 24020008 li v0,8 -80028bcc: 00442006 srlv a0,a0,v0 -80028bd0: 2463f818 addiu v1,v1,-2024 -80028bd4: 00832021 addu a0,a0,v1 -80028bd8: 90820000 lbu v0,0(a0) -80028bdc: 24050018 li a1,24 -80028be0: 03e00008 jr ra -80028be4: 00a21023 subu v0,a1,v0 -80028be8: 24020010 li v0,16 -80028bec: 00442006 srlv a0,a0,v0 -80028bf0: 2463f818 addiu v1,v1,-2024 -80028bf4: 00832021 addu a0,a0,v1 -80028bf8: 90820000 lbu v0,0(a0) -80028bfc: 24050010 li a1,16 -80028c00: 03e00008 jr ra -80028c04: 00a21023 subu v0,a1,v0 - -80028c08 <__do_global_ctors_aux>: -80028c08: 3c028004 lui v0,0x8004 -80028c0c: 8c422574 lw v0,9588(v0) -80028c10: 2403ffff li v1,-1 -80028c14: 10430012 beq v0,v1,80028c60 <__do_global_ctors_aux+0x58> -80028c18: 00000000 nop -80028c1c: 27bdffe0 addiu sp,sp,-32 -80028c20: afb00014 sw s0,20(sp) -80028c24: 3c108004 lui s0,0x8004 -80028c28: afb10018 sw s1,24(sp) -80028c2c: afbf001c sw ra,28(sp) -80028c30: 26102574 addiu s0,s0,9588 -80028c34: 2411ffff li s1,-1 -80028c38: 0040f809 jalr v0 -80028c3c: 2610fffc addiu s0,s0,-4 -80028c40: 8e020000 lw v0,0(s0) -80028c44: 00000000 nop -80028c48: 1451fffb bne v0,s1,80028c38 <__do_global_ctors_aux+0x30> -80028c4c: 00000000 nop -80028c50: 8fbf001c lw ra,28(sp) -80028c54: 8fb10018 lw s1,24(sp) -80028c58: 8fb00014 lw s0,20(sp) -80028c5c: 27bd0020 addiu sp,sp,32 -80028c60: 03e00008 jr ra -80028c64: 00000000 nop - -80028c68 : - FDEV_CDROM, - FDEV_MEMCARD -}; - -unsigned int fmode_to_desmode(const char *fmode) -{ -80028c68: 27bdffd0 addiu sp,sp,-48 -80028c6c: afbf002c sw ra,44(sp) -80028c70: afbe0028 sw s8,40(sp) -80028c74: 03a0f021 move s8,sp -80028c78: afc40030 sw a0,48(s8) - char rmode[16]; - int x, y; - - y = 0; -80028c7c: afc00014 sw zero,20(s8) - - for(x=0;x<15;x++) -80028c80: afc00010 sw zero,16(s8) -80028c84: 10000029 b 80028d2c -80028c88: 00000000 nop - { - if(fmode[x] == 0) -80028c8c: 8fc20010 lw v0,16(s8) -80028c90: 8fc30030 lw v1,48(s8) -80028c94: 00000000 nop -80028c98: 00621021 addu v0,v1,v0 -80028c9c: 80420000 lb v0,0(v0) -80028ca0: 00000000 nop -80028ca4: 10400028 beqz v0,80028d48 -80028ca8: 00000000 nop - break; - else - { - if(fmode[x] != 'b' && fmode[x] != 'f') -80028cac: 8fc20010 lw v0,16(s8) -80028cb0: 8fc30030 lw v1,48(s8) -80028cb4: 00000000 nop -80028cb8: 00621021 addu v0,v1,v0 -80028cbc: 80430000 lb v1,0(v0) -80028cc0: 24020062 li v0,98 -80028cc4: 10620015 beq v1,v0,80028d1c -80028cc8: 00000000 nop -80028ccc: 8fc20010 lw v0,16(s8) -80028cd0: 8fc30030 lw v1,48(s8) -80028cd4: 00000000 nop -80028cd8: 00621021 addu v0,v1,v0 -80028cdc: 80430000 lb v1,0(v0) -80028ce0: 24020066 li v0,102 -80028ce4: 1062000d beq v1,v0,80028d1c -80028ce8: 00000000 nop - rmode[y++] = fmode[x]; -80028cec: 8fc20014 lw v0,20(s8) -80028cf0: 00000000 nop -80028cf4: 24430001 addiu v1,v0,1 -80028cf8: afc30014 sw v1,20(s8) -80028cfc: 8fc30010 lw v1,16(s8) -80028d00: 8fc40030 lw a0,48(s8) -80028d04: 00000000 nop -80028d08: 00831821 addu v1,a0,v1 -80028d0c: 80630000 lb v1,0(v1) -80028d10: 27c40010 addiu a0,s8,16 -80028d14: 00821021 addu v0,a0,v0 -80028d18: a0430008 sb v1,8(v0) - char rmode[16]; - int x, y; - - y = 0; - - for(x=0;x<15;x++) -80028d1c: 8fc20010 lw v0,16(s8) -80028d20: 00000000 nop -80028d24: 24420001 addiu v0,v0,1 -80028d28: afc20010 sw v0,16(s8) -80028d2c: 8fc20010 lw v0,16(s8) -80028d30: 00000000 nop -80028d34: 2842000f slti v0,v0,15 -80028d38: 1440ffd4 bnez v0,80028c8c -80028d3c: 00000000 nop -80028d40: 10000002 b 80028d4c -80028d44: 00000000 nop - { - if(fmode[x] == 0) - break; -80028d48: 00000000 nop - if(fmode[x] != 'b' && fmode[x] != 'f') - rmode[y++] = fmode[x]; - } - } - - rmode[y] = 0; -80028d4c: 8fc20014 lw v0,20(s8) -80028d50: 27c30010 addiu v1,s8,16 -80028d54: 00621021 addu v0,v1,v0 -80028d58: a0400008 sb zero,8(v0) - - if(strcmp(rmode, "r") == 0) -80028d5c: 27c30018 addiu v1,s8,24 -80028d60: 3c028004 lui v0,0x8004 -80028d64: 2445f918 addiu a1,v0,-1768 -80028d68: 00602021 move a0,v1 -80028d6c: 0c00d9aa jal 800366a8 -80028d70: 00000000 nop -80028d74: 14400004 bnez v0,80028d88 -80028d78: 00000000 nop - { - return O_RDONLY; -80028d7c: 24020001 li v0,1 -80028d80: 10000039 b 80028e68 -80028d84: 00000000 nop - } - else if(strcmp(rmode, "r+") == 0) -80028d88: 27c30018 addiu v1,s8,24 -80028d8c: 3c028004 lui v0,0x8004 -80028d90: 2445f91c addiu a1,v0,-1764 -80028d94: 00602021 move a0,v1 -80028d98: 0c00d9aa jal 800366a8 -80028d9c: 00000000 nop -80028da0: 14400004 bnez v0,80028db4 -80028da4: 00000000 nop - { - dprintf("Open for reading and writing.\n"); - return O_RDWR; -80028da8: 24020003 li v0,3 -80028dac: 1000002e b 80028e68 -80028db0: 00000000 nop - } - else if(strcmp(rmode, "w") == 0) -80028db4: 27c30018 addiu v1,s8,24 -80028db8: 3c028004 lui v0,0x8004 -80028dbc: 2445f920 addiu a1,v0,-1760 -80028dc0: 00602021 move a0,v1 -80028dc4: 0c00d9aa jal 800366a8 -80028dc8: 00000000 nop -80028dcc: 14400004 bnez v0,80028de0 -80028dd0: 00000000 nop - { - dprintf("Open for writing.\n"); - return O_WRONLY | O_CREAT | O_TRUNC; -80028dd4: 24020602 li v0,1538 -80028dd8: 10000023 b 80028e68 -80028ddc: 00000000 nop - } - else if(strcmp(rmode, "w+") == 0) -80028de0: 27c30018 addiu v1,s8,24 -80028de4: 3c028004 lui v0,0x8004 -80028de8: 2445f924 addiu a1,v0,-1756 -80028dec: 00602021 move a0,v1 -80028df0: 0c00d9aa jal 800366a8 -80028df4: 00000000 nop -80028df8: 14400004 bnez v0,80028e0c -80028dfc: 00000000 nop - { - dprintf("Open for writing. Truncate to zero or create file.\n"); - return O_RDWR | O_CREAT | O_TRUNC; -80028e00: 24020603 li v0,1539 -80028e04: 10000018 b 80028e68 -80028e08: 00000000 nop - } - else if(strcmp(rmode, "a") == 0) -80028e0c: 27c30018 addiu v1,s8,24 -80028e10: 3c028004 lui v0,0x8004 -80028e14: 2445f928 addiu a1,v0,-1752 -80028e18: 00602021 move a0,v1 -80028e1c: 0c00d9aa jal 800366a8 -80028e20: 00000000 nop -80028e24: 14400004 bnez v0,80028e38 -80028e28: 00000000 nop - { - dprintf("Append; open for writing. Create file if it doesn't exist.\n"); - return O_WRONLY | O_APPEND; -80028e2c: 24020102 li v0,258 -80028e30: 1000000d b 80028e68 -80028e34: 00000000 nop - } - else if(strcmp(rmode, "a+") == 0) -80028e38: 27c30018 addiu v1,s8,24 -80028e3c: 3c028004 lui v0,0x8004 -80028e40: 2445f92c addiu a1,v0,-1748 -80028e44: 00602021 move a0,v1 -80028e48: 0c00d9aa jal 800366a8 -80028e4c: 00000000 nop -80028e50: 14400004 bnez v0,80028e64 -80028e54: 00000000 nop - { - dprintf("Append; open for reading and writing. Create file if it doesn't exist.\n"); - return O_RDWR | O_APPEND | O_CREAT; -80028e58: 24020303 li v0,771 -80028e5c: 10000002 b 80028e68 -80028e60: 00000000 nop - } - else - { - return 0; -80028e64: 00001021 move v0,zero - } -} -80028e68: 03c0e821 move sp,s8 -80028e6c: 8fbf002c lw ra,44(sp) -80028e70: 8fbe0028 lw s8,40(sp) -80028e74: 27bd0030 addiu sp,sp,48 -80028e78: 03e00008 jr ra -80028e7c: 00000000 nop - -80028e80 : - -FILE *fdopen(int fildes, const char *mode) -{ -80028e80: 27bdffe0 addiu sp,sp,-32 -80028e84: afbf001c sw ra,28(sp) -80028e88: afbe0018 sw s8,24(sp) -80028e8c: 03a0f021 move s8,sp -80028e90: afc40020 sw a0,32(s8) -80028e94: afc50024 sw a1,36(s8) -// Adjust for malloc - int x; - -// Find a free file structure - for(x = 0; x < 256; x++) -80028e98: afc00010 sw zero,16(s8) -80028e9c: 1000001d b 80028f14 -80028ea0: 00000000 nop - { - if(file_structs[x].used == 0) -80028ea4: 3c028007 lui v0,0x8007 -80028ea8: 8fc40010 lw a0,16(s8) -80028eac: 2443db6c addiu v1,v0,-9364 -80028eb0: 00801021 move v0,a0 -80028eb4: 000210c0 sll v0,v0,0x3 -80028eb8: 00022080 sll a0,v0,0x2 -80028ebc: 00821023 subu v0,a0,v0 -80028ec0: 00621021 addu v0,v1,v0 -80028ec4: 8c420014 lw v0,20(v0) -80028ec8: 00000000 nop -80028ecc: 1440000d bnez v0,80028f04 -80028ed0: 00000000 nop - { - file_structs[x].used = 1; -80028ed4: 3c028007 lui v0,0x8007 -80028ed8: 8fc40010 lw a0,16(s8) -80028edc: 2443db6c addiu v1,v0,-9364 -80028ee0: 00801021 move v0,a0 -80028ee4: 000210c0 sll v0,v0,0x3 -80028ee8: 00022080 sll a0,v0,0x2 -80028eec: 00821023 subu v0,a0,v0 -80028ef0: 00621021 addu v0,v1,v0 -80028ef4: 24030001 li v1,1 -80028ef8: ac430014 sw v1,20(v0) - break; -80028efc: 1000000a b 80028f28 -80028f00: 00000000 nop -{ -// Adjust for malloc - int x; - -// Find a free file structure - for(x = 0; x < 256; x++) -80028f04: 8fc20010 lw v0,16(s8) -80028f08: 00000000 nop -80028f0c: 24420001 addiu v0,v0,1 -80028f10: afc20010 sw v0,16(s8) -80028f14: 8fc20010 lw v0,16(s8) -80028f18: 00000000 nop -80028f1c: 28420100 slti v0,v0,256 -80028f20: 1440ffe0 bnez v0,80028ea4 -80028f24: 00000000 nop - } - } - -// If we found no free file structure, return NULL pointer - - if(x == 256) -80028f28: 8fc30010 lw v1,16(s8) -80028f2c: 24020100 li v0,256 -80028f30: 14620004 bne v1,v0,80028f44 -80028f34: 00000000 nop - return NULL; -80028f38: 00001021 move v0,zero -80028f3c: 10000036 b 80029018 -80028f40: 00000000 nop - - - file_structs[x].fildes = fildes; -80028f44: 3c048007 lui a0,0x8007 -80028f48: 8fc20010 lw v0,16(s8) -80028f4c: 00000000 nop -80028f50: 00401821 move v1,v0 -80028f54: 000310c0 sll v0,v1,0x3 -80028f58: 00401821 move v1,v0 -80028f5c: 00031080 sll v0,v1,0x2 -80028f60: 00431023 subu v0,v0,v1 -80028f64: 2483db6c addiu v1,a0,-9364 -80028f68: 00431021 addu v0,v0,v1 -80028f6c: 8fc30020 lw v1,32(s8) -80028f70: 00000000 nop -80028f74: ac430000 sw v1,0(v0) - file_structs[x].pos = lseek(fildes, 0, SEEK_CUR); -80028f78: 24060001 li a2,1 -80028f7c: 00002821 move a1,zero -80028f80: 8fc40020 lw a0,32(s8) -80028f84: 0c00ede0 jal 8003b780 -80028f88: 00000000 nop -80028f8c: 00402821 move a1,v0 -80028f90: 3c028007 lui v0,0x8007 -80028f94: 8fc40010 lw a0,16(s8) -80028f98: 2443db6c addiu v1,v0,-9364 -80028f9c: 00801021 move v0,a0 -80028fa0: 000210c0 sll v0,v0,0x3 -80028fa4: 00022080 sll a0,v0,0x2 -80028fa8: 00821023 subu v0,a0,v0 -80028fac: 00621021 addu v0,v1,v0 -80028fb0: ac450004 sw a1,4(v0) - file_structs[x].mode = fmode_to_desmode(mode); -80028fb4: 8fc40024 lw a0,36(s8) -80028fb8: 0c00a31a jal 80028c68 -80028fbc: 00000000 nop -80028fc0: 00402821 move a1,v0 -80028fc4: 3c048007 lui a0,0x8007 -80028fc8: 8fc20010 lw v0,16(s8) -80028fcc: 00000000 nop -80028fd0: 00401821 move v1,v0 -80028fd4: 000310c0 sll v0,v1,0x3 -80028fd8: 00401821 move v1,v0 -80028fdc: 00031080 sll v0,v1,0x2 -80028fe0: 00431023 subu v0,v0,v1 -80028fe4: 2483db6c addiu v1,a0,-9364 -80028fe8: 00431021 addu v0,v0,v1 -80028fec: ac450008 sw a1,8(v0) - - return &file_structs[x]; -80028ff0: 8fc20010 lw v0,16(s8) -80028ff4: 00000000 nop -80028ff8: 00401821 move v1,v0 -80028ffc: 000310c0 sll v0,v1,0x3 -80029000: 00401821 move v1,v0 -80029004: 00031080 sll v0,v1,0x2 -80029008: 00431023 subu v0,v0,v1 -8002900c: 3c038007 lui v1,0x8007 -80029010: 2463db6c addiu v1,v1,-9364 -80029014: 00431021 addu v0,v0,v1 -} -80029018: 03c0e821 move sp,s8 -8002901c: 8fbf001c lw ra,28(sp) -80029020: 8fbe0018 lw s8,24(sp) -80029024: 27bd0020 addiu sp,sp,32 -80029028: 03e00008 jr ra -8002902c: 00000000 nop - -80029030 : - -FILE *fopen(char *path, const char *mode) -{ -80029030: 27bdffd8 addiu sp,sp,-40 -80029034: afbf0024 sw ra,36(sp) -80029038: afbe0020 sw s8,32(sp) -8002903c: 03a0f021 move s8,sp -80029040: afc40028 sw a0,40(s8) -80029044: afc5002c sw a1,44(s8) - int fd; - FILE *f; - char *s = NULL; -80029048: afc00014 sw zero,20(s8) - - dprintf("fopen()\n"); - - if(strncmp(path, "cdromL:", 7) == 0) -8002904c: 24060007 li a2,7 -80029050: 3c028004 lui v0,0x8004 -80029054: 2445f930 addiu a1,v0,-1744 -80029058: 8fc40028 lw a0,40(s8) -8002905c: 0c00d9dd jal 80036774 -80029060: 00000000 nop -80029064: 1440001c bnez v0,800290d8 -80029068: 00000000 nop - { - //printf("strncmp=%d\n", strncmp(path, "cdromL:", 7) ); - s = malloc(1024); -8002906c: 24040400 li a0,1024 -80029070: 0c00ac10 jal 8002b040 -80029074: 00000000 nop -80029078: afc20014 sw v0,20(s8) - - if(libc_get_transtbl_fname(path+7, s, 1024) == 0) -8002907c: 8fc20028 lw v0,40(s8) -80029080: 00000000 nop -80029084: 24420007 addiu v0,v0,7 -80029088: 24060400 li a2,1024 -8002908c: 8fc50014 lw a1,20(s8) -80029090: 00402021 move a0,v0 -80029094: 0c00a604 jal 80029810 -80029098: 00000000 nop -8002909c: 14400004 bnez v0,800290b0 -800290a0: 00000000 nop - return NULL; -800290a4: 00001021 move v0,zero -800290a8: 1000006f b 80029268 -800290ac: 00000000 nop - - fd = open(s, fmode_to_desmode(mode)); -800290b0: 8fc4002c lw a0,44(s8) -800290b4: 0c00a31a jal 80028c68 -800290b8: 00000000 nop -800290bc: 00402821 move a1,v0 -800290c0: 8fc40014 lw a0,20(s8) -800290c4: 0c00eddc jal 8003b770 -800290c8: 00000000 nop -800290cc: afc20010 sw v0,16(s8) -800290d0: 10000009 b 800290f8 -800290d4: 00000000 nop - } - else - { - fd = open(path, fmode_to_desmode(mode)); -800290d8: 8fc4002c lw a0,44(s8) -800290dc: 0c00a31a jal 80028c68 -800290e0: 00000000 nop -800290e4: 00402821 move a1,v0 -800290e8: 8fc40028 lw a0,40(s8) -800290ec: 0c00eddc jal 8003b770 -800290f0: 00000000 nop -800290f4: afc20010 sw v0,16(s8) - } - - if(fd == -1) -800290f8: 8fc30010 lw v1,16(s8) -800290fc: 2402ffff li v0,-1 -80029100: 1462000b bne v1,v0,80029130 -80029104: 00000000 nop - { - if(s!=NULL)free(s); -80029108: 8fc20014 lw v0,20(s8) -8002910c: 00000000 nop -80029110: 10400004 beqz v0,80029124 -80029114: 00000000 nop -80029118: 8fc40014 lw a0,20(s8) -8002911c: 0c00acaf jal 8002b2bc -80029120: 00000000 nop - return NULL; -80029124: 00001021 move v0,zero -80029128: 1000004f b 80029268 -8002912c: 00000000 nop - } - - f = fdopen(fd, mode); -80029130: 8fc5002c lw a1,44(s8) -80029134: 8fc40010 lw a0,16(s8) -80029138: 0c00a3a0 jal 80028e80 -8002913c: 00000000 nop -80029140: afc20018 sw v0,24(s8) - - if(f == NULL) -80029144: 8fc20018 lw v0,24(s8) -80029148: 00000000 nop -8002914c: 1440000b bnez v0,8002917c -80029150: 00000000 nop - { - if(s!=NULL)free(s); -80029154: 8fc20014 lw v0,20(s8) -80029158: 00000000 nop -8002915c: 10400004 beqz v0,80029170 -80029160: 00000000 nop -80029164: 8fc40014 lw a0,20(s8) -80029168: 0c00acaf jal 8002b2bc -8002916c: 00000000 nop - return NULL; -80029170: 00001021 move v0,zero -80029174: 1000003c b 80029268 -80029178: 00000000 nop - } - - f->dev = FDEV_UNKNOWN; -8002917c: 8fc20018 lw v0,24(s8) -80029180: 00000000 nop -80029184: ac40000c sw zero,12(v0) - - if(strncmp(path, "cdrom", 5) == 0 || strncmp(path, "cdromL", 6) == 0) -80029188: 24060005 li a2,5 -8002918c: 3c028004 lui v0,0x8004 -80029190: 2445f938 addiu a1,v0,-1736 -80029194: 8fc40028 lw a0,40(s8) -80029198: 0c00d9dd jal 80036774 -8002919c: 00000000 nop -800291a0: 10400009 beqz v0,800291c8 -800291a4: 00000000 nop -800291a8: 24060006 li a2,6 -800291ac: 3c028004 lui v0,0x8004 -800291b0: 2445f940 addiu a1,v0,-1728 -800291b4: 8fc40028 lw a0,40(s8) -800291b8: 0c00d9dd jal 80036774 -800291bc: 00000000 nop -800291c0: 14400006 bnez v0,800291dc -800291c4: 00000000 nop - f->dev = FDEV_CDROM; -800291c8: 8fc20018 lw v0,24(s8) -800291cc: 24030001 li v1,1 -800291d0: ac43000c sw v1,12(v0) -800291d4: 1000000c b 80029208 -800291d8: 00000000 nop - else if(strncmp(path, "bu", 2) == 0) -800291dc: 24060002 li a2,2 -800291e0: 3c028004 lui v0,0x8004 -800291e4: 2445f948 addiu a1,v0,-1720 -800291e8: 8fc40028 lw a0,40(s8) -800291ec: 0c00d9dd jal 80036774 -800291f0: 00000000 nop -800291f4: 14400004 bnez v0,80029208 -800291f8: 00000000 nop - f->dev = FDEV_MEMCARD; -800291fc: 8fc20018 lw v0,24(s8) -80029200: 24030002 li v1,2 -80029204: ac43000c sw v1,12(v0) - - if(s!=NULL) -80029208: 8fc20014 lw v0,20(s8) -8002920c: 00000000 nop -80029210: 1040000d beqz v0,80029248 -80029214: 00000000 nop - { - f->size = get_real_file_size(s); -80029218: 8fc40014 lw a0,20(s8) -8002921c: 0c00d274 jal 800349d0 -80029220: 00000000 nop -80029224: 00401821 move v1,v0 -80029228: 8fc20018 lw v0,24(s8) -8002922c: 00000000 nop -80029230: ac430010 sw v1,16(v0) - free(s); -80029234: 8fc40014 lw a0,20(s8) -80029238: 0c00acaf jal 8002b2bc -8002923c: 00000000 nop -80029240: 10000008 b 80029264 -80029244: 00000000 nop - } - else - f->size = get_real_file_size(path); -80029248: 8fc40028 lw a0,40(s8) -8002924c: 0c00d274 jal 800349d0 -80029250: 00000000 nop -80029254: 00401821 move v1,v0 -80029258: 8fc20018 lw v0,24(s8) -8002925c: 00000000 nop -80029260: ac430010 sw v1,16(v0) - - dprintf("Finished fopen()\n"); - - return f; -80029264: 8fc20018 lw v0,24(s8) -} -80029268: 03c0e821 move sp,s8 -8002926c: 8fbf0024 lw ra,36(sp) -80029270: 8fbe0020 lw s8,32(sp) -80029274: 27bd0028 addiu sp,sp,40 -80029278: 03e00008 jr ra -8002927c: 00000000 nop - -80029280 : - -int fclose(FILE *stream) -{ -80029280: 27bdffe8 addiu sp,sp,-24 -80029284: afbf0014 sw ra,20(sp) -80029288: afbe0010 sw s8,16(sp) -8002928c: 03a0f021 move s8,sp -80029290: afc40018 sw a0,24(s8) - stream->used = 0; -80029294: 8fc20018 lw v0,24(s8) -80029298: 00000000 nop -8002929c: ac400014 sw zero,20(v0) - close(stream->fildes); -800292a0: 8fc20018 lw v0,24(s8) -800292a4: 00000000 nop -800292a8: 8c420000 lw v0,0(v0) -800292ac: 00000000 nop -800292b0: 00402021 move a0,v0 -800292b4: 0c00edec jal 8003b7b0 -800292b8: 00000000 nop - return 0; -800292bc: 00001021 move v0,zero -} -800292c0: 03c0e821 move sp,s8 -800292c4: 8fbf0014 lw ra,20(sp) -800292c8: 8fbe0010 lw s8,16(sp) -800292cc: 27bd0018 addiu sp,sp,24 -800292d0: 03e00008 jr ra -800292d4: 00000000 nop - -800292d8 : - * - * This is done to make programming and porting easier - */ - -int fread(void *ptr, int size, int nmemb, FILE *f) -{ -800292d8: 27bdffd8 addiu sp,sp,-40 -800292dc: afbf0024 sw ra,36(sp) -800292e0: afbe0020 sw s8,32(sp) -800292e4: 03a0f021 move s8,sp -800292e8: afc40028 sw a0,40(s8) -800292ec: afc5002c sw a1,44(s8) -800292f0: afc60030 sw a2,48(s8) -800292f4: afc70034 sw a3,52(s8) - int rsize = size * nmemb; -800292f8: 8fc3002c lw v1,44(s8) -800292fc: 8fc20030 lw v0,48(s8) -80029300: 00000000 nop -80029304: 00620018 mult v1,v0 -80029308: 00001012 mflo v0 -8002930c: afc20018 sw v0,24(s8) - int csize = rsize; -80029310: 8fc20018 lw v0,24(s8) -80029314: 00000000 nop -80029318: afc20010 sw v0,16(s8) - int max; - int nsect = (f->pos + rsize) >> 11; -8002931c: 8fc20034 lw v0,52(s8) -80029320: 00000000 nop -80029324: 8c430004 lw v1,4(v0) -80029328: 8fc20018 lw v0,24(s8) -8002932c: 00000000 nop -80029330: 00621021 addu v0,v1,v0 -80029334: 000212c2 srl v0,v0,0xb -80029338: afc20014 sw v0,20(s8) - nsect -= f->pos >> 11; -8002933c: 8fc30014 lw v1,20(s8) -80029340: 8fc20034 lw v0,52(s8) -80029344: 00000000 nop -80029348: 8c420004 lw v0,4(v0) -8002934c: 00000000 nop -80029350: 000212c2 srl v0,v0,0xb -80029354: 00621023 subu v0,v1,v0 -80029358: afc20014 sw v0,20(s8) - nsect++; -8002935c: 8fc20014 lw v0,20(s8) -80029360: 00000000 nop -80029364: 24420001 addiu v0,v0,1 -80029368: afc20014 sw v0,20(s8) - - //printf("f->dev = %d, f->pos = %d, rsize = %d\n", f->dev, f->pos, rsize); - - if(f->dev == FDEV_CDROM) -8002936c: 8fc20034 lw v0,52(s8) -80029370: 00000000 nop -80029374: 8c43000c lw v1,12(v0) -80029378: 24020001 li v0,1 -8002937c: 1462007c bne v1,v0,80029570 -80029380: 00000000 nop - { - // First sector - lseek(f->fildes, f->pos & (~0x7ff), SEEK_SET); -80029384: 8fc20034 lw v0,52(s8) -80029388: 00000000 nop -8002938c: 8c430000 lw v1,0(v0) -80029390: 8fc20034 lw v0,52(s8) -80029394: 00000000 nop -80029398: 8c420004 lw v0,4(v0) -8002939c: 00000000 nop -800293a0: 00402021 move a0,v0 -800293a4: 2402f800 li v0,-2048 -800293a8: 00821024 and v0,a0,v0 -800293ac: 00003021 move a2,zero -800293b0: 00402821 move a1,v0 -800293b4: 00602021 move a0,v1 -800293b8: 0c00ede0 jal 8003b780 -800293bc: 00000000 nop - read(f->fildes, onesec_buf, 2048); -800293c0: 8fc20034 lw v0,52(s8) -800293c4: 00000000 nop -800293c8: 8c430000 lw v1,0(v0) -800293cc: 24060800 li a2,2048 -800293d0: 3c028007 lui v0,0x8007 -800293d4: 2445d36c addiu a1,v0,-11412 -800293d8: 00602021 move a0,v1 -800293dc: 0c00ede4 jal 8003b790 -800293e0: 00000000 nop - - max = 2048 - (f->pos & 2047); -800293e4: 8fc20034 lw v0,52(s8) -800293e8: 00000000 nop -800293ec: 8c420004 lw v0,4(v0) -800293f0: 00000000 nop -800293f4: 304207ff andi v0,v0,0x7ff -800293f8: 24030800 li v1,2048 -800293fc: 00621023 subu v0,v1,v0 -80029400: afc2001c sw v0,28(s8) - - //printf("ptr(FIRST) = %d, %x\n", ptr, ptr); - dprintf("rsize = %d\n", rsize); - - memcpy(ptr, onesec_buf + (f->pos & 2047), (rsize > max) ? max : rsize); -80029404: 8fc20034 lw v0,52(s8) -80029408: 00000000 nop -8002940c: 8c420004 lw v0,4(v0) -80029410: 00000000 nop -80029414: 304307ff andi v1,v0,0x7ff -80029418: 3c028007 lui v0,0x8007 -8002941c: 2442d36c addiu v0,v0,-11412 -80029420: 00622821 addu a1,v1,v0 -80029424: 8fc3001c lw v1,28(s8) -80029428: 8fc20018 lw v0,24(s8) -8002942c: 00000000 nop -80029430: 0062202a slt a0,v1,v0 -80029434: 10800002 beqz a0,80029440 -80029438: 00000000 nop -8002943c: 00601021 move v0,v1 -80029440: 00403021 move a2,v0 -80029444: 8fc40028 lw a0,40(s8) -80029448: 0c00d75e jal 80035d78 -8002944c: 00000000 nop - - // Middle sector - ptr += max; -80029450: 8fc2001c lw v0,28(s8) -80029454: 8fc30028 lw v1,40(s8) -80029458: 00000000 nop -8002945c: 00621021 addu v0,v1,v0 -80029460: afc20028 sw v0,40(s8) - - //printf("ptr(MIDDLEsex) = %d, %x\n", ptr, ptr); - nsect--; -80029464: 8fc20014 lw v0,20(s8) -80029468: 00000000 nop -8002946c: 2442ffff addiu v0,v0,-1 -80029470: afc20014 sw v0,20(s8) - csize -= max; -80029474: 8fc30010 lw v1,16(s8) -80029478: 8fc2001c lw v0,28(s8) -8002947c: 00000000 nop -80029480: 00621023 subu v0,v1,v0 -80029484: afc20010 sw v0,16(s8) - - if(nsect > 1) -80029488: 8fc20014 lw v0,20(s8) -8002948c: 00000000 nop -80029490: 28420002 slti v0,v0,2 -80029494: 14400021 bnez v0,8002951c -80029498: 00000000 nop - - sect_num -= 4096;*/ - - //printf("read_middle=%d, sect_num = %d\n", read(f->fildes, ptr, sect_num), sect_num); - - read(f->fildes, ptr, (nsect - 1) * 2048); -8002949c: 8fc20034 lw v0,52(s8) -800294a0: 00000000 nop -800294a4: 8c430000 lw v1,0(v0) -800294a8: 8fc20014 lw v0,20(s8) -800294ac: 00000000 nop -800294b0: 2442ffff addiu v0,v0,-1 -800294b4: 000212c0 sll v0,v0,0xb -800294b8: 00403021 move a2,v0 -800294bc: 8fc50028 lw a1,40(s8) -800294c0: 00602021 move a0,v1 -800294c4: 0c00ede4 jal 8003b790 -800294c8: 00000000 nop - - ptr += (nsect - 1) * 2048; -800294cc: 8fc20014 lw v0,20(s8) -800294d0: 00000000 nop -800294d4: 2442ffff addiu v0,v0,-1 -800294d8: 000212c0 sll v0,v0,0xb -800294dc: 00401821 move v1,v0 -800294e0: 8fc20028 lw v0,40(s8) -800294e4: 00000000 nop -800294e8: 00431021 addu v0,v0,v1 -800294ec: afc20028 sw v0,40(s8) - csize -= (nsect - 1) * 2048; -800294f0: 24030001 li v1,1 -800294f4: 8fc20014 lw v0,20(s8) -800294f8: 00000000 nop -800294fc: 00621023 subu v0,v1,v0 -80029500: 000212c0 sll v0,v0,0xb -80029504: 8fc30010 lw v1,16(s8) -80029508: 00000000 nop -8002950c: 00621021 addu v0,v1,v0 -80029510: afc20010 sw v0,16(s8) - nsect = 1; -80029514: 24020001 li v0,1 -80029518: afc20014 sw v0,20(s8) - } - - //printf("ptr(LAST) = %d, %x\n", ptr, ptr); - - if(nsect == 1) -8002951c: 8fc30014 lw v1,20(s8) -80029520: 24020001 li v0,1 -80029524: 14620012 bne v1,v0,80029570 -80029528: 00000000 nop - { - // Last sector - read(f->fildes, onesec_buf, 2048); -8002952c: 8fc20034 lw v0,52(s8) -80029530: 00000000 nop -80029534: 8c430000 lw v1,0(v0) -80029538: 24060800 li a2,2048 -8002953c: 3c028007 lui v0,0x8007 -80029540: 2445d36c addiu a1,v0,-11412 -80029544: 00602021 move a0,v1 -80029548: 0c00ede4 jal 8003b790 -8002954c: 00000000 nop - - memcpy(ptr, onesec_buf, csize); -80029550: 8fc20010 lw v0,16(s8) -80029554: 00000000 nop -80029558: 00403021 move a2,v0 -8002955c: 3c028007 lui v0,0x8007 -80029560: 2445d36c addiu a1,v0,-11412 -80029564: 8fc40028 lw a0,40(s8) -80029568: 0c00d75e jal 80035d78 -8002956c: 00000000 nop - } - } - - f->pos+= rsize; -80029570: 8fc20034 lw v0,52(s8) -80029574: 00000000 nop -80029578: 8c430004 lw v1,4(v0) -8002957c: 8fc20018 lw v0,24(s8) -80029580: 00000000 nop -80029584: 00621821 addu v1,v1,v0 -80029588: 8fc20034 lw v0,52(s8) -8002958c: 00000000 nop -80029590: ac430004 sw v1,4(v0) - return rsize; -80029594: 8fc20018 lw v0,24(s8) -} -80029598: 03c0e821 move sp,s8 -8002959c: 8fbf0024 lw ra,36(sp) -800295a0: 8fbe0020 lw s8,32(sp) -800295a4: 27bd0028 addiu sp,sp,40 -800295a8: 03e00008 jr ra -800295ac: 00000000 nop - -800295b0 : - -int fgetc(FILE *f) -{ -800295b0: 27bdffe0 addiu sp,sp,-32 -800295b4: afbf001c sw ra,28(sp) -800295b8: afbe0018 sw s8,24(sp) -800295bc: 03a0f021 move s8,sp -800295c0: afc40020 sw a0,32(s8) - unsigned char c; - - if(f->pos >= f->size) -800295c4: 8fc20020 lw v0,32(s8) -800295c8: 00000000 nop -800295cc: 8c430004 lw v1,4(v0) -800295d0: 8fc20020 lw v0,32(s8) -800295d4: 00000000 nop -800295d8: 8c420010 lw v0,16(v0) -800295dc: 00000000 nop -800295e0: 0062102b sltu v0,v1,v0 -800295e4: 14400004 bnez v0,800295f8 -800295e8: 00000000 nop - return EOF; -800295ec: 2402ffff li v0,-1 -800295f0: 10000009 b 80029618 -800295f4: 00000000 nop - - fread(&c, sizeof(char), 1, f); -800295f8: 8fc70020 lw a3,32(s8) -800295fc: 24060001 li a2,1 -80029600: 24050001 li a1,1 -80029604: 27c20010 addiu v0,s8,16 -80029608: 00402021 move a0,v0 -8002960c: 0c00a4b6 jal 800292d8 -80029610: 00000000 nop - - return (int)c; -80029614: 93c20010 lbu v0,16(s8) -} -80029618: 03c0e821 move sp,s8 -8002961c: 8fbf001c lw ra,28(sp) -80029620: 8fbe0018 lw s8,24(sp) -80029624: 27bd0020 addiu sp,sp,32 -80029628: 03e00008 jr ra -8002962c: 00000000 nop - -80029630 : - -int ftell(FILE *f) -{ -80029630: 27bdfff8 addiu sp,sp,-8 -80029634: afbe0004 sw s8,4(sp) -80029638: 03a0f021 move s8,sp -8002963c: afc40008 sw a0,8(s8) - return f->pos; -80029640: 8fc20008 lw v0,8(s8) -80029644: 00000000 nop -80029648: 8c420004 lw v0,4(v0) -} -8002964c: 03c0e821 move sp,s8 -80029650: 8fbe0004 lw s8,4(sp) -80029654: 27bd0008 addiu sp,sp,8 -80029658: 03e00008 jr ra -8002965c: 00000000 nop - -80029660 : - -int fseek(FILE *f, int offset, int whence) -{ -80029660: 27bdfff8 addiu sp,sp,-8 -80029664: afbe0004 sw s8,4(sp) -80029668: 03a0f021 move s8,sp -8002966c: afc40008 sw a0,8(s8) -80029670: afc5000c sw a1,12(s8) -80029674: afc60010 sw a2,16(s8) - switch(whence) -80029678: 8fc20010 lw v0,16(s8) -8002967c: 24030001 li v1,1 -80029680: 1043000c beq v0,v1,800296b4 -80029684: 00000000 nop -80029688: 24030002 li v1,2 -8002968c: 10430014 beq v0,v1,800296e0 -80029690: 00000000 nop -80029694: 1440001d bnez v0,8002970c -80029698: 00000000 nop - { - case SEEK_SET: - f->pos = offset; -8002969c: 8fc3000c lw v1,12(s8) -800296a0: 8fc20008 lw v0,8(s8) -800296a4: 00000000 nop -800296a8: ac430004 sw v1,4(v0) - break; -800296ac: 10000020 b 80029730 -800296b0: 00000000 nop - case SEEK_CUR: - f->pos+= offset; -800296b4: 8fc20008 lw v0,8(s8) -800296b8: 00000000 nop -800296bc: 8c430004 lw v1,4(v0) -800296c0: 8fc2000c lw v0,12(s8) -800296c4: 00000000 nop -800296c8: 00621821 addu v1,v1,v0 -800296cc: 8fc20008 lw v0,8(s8) -800296d0: 00000000 nop -800296d4: ac430004 sw v1,4(v0) - break; -800296d8: 10000015 b 80029730 -800296dc: 00000000 nop - case SEEK_END: - f->pos = f->size + offset; -800296e0: 8fc20008 lw v0,8(s8) -800296e4: 00000000 nop -800296e8: 8c430010 lw v1,16(v0) -800296ec: 8fc2000c lw v0,12(s8) -800296f0: 00000000 nop -800296f4: 00621821 addu v1,v1,v0 -800296f8: 8fc20008 lw v0,8(s8) -800296fc: 00000000 nop -80029700: ac430004 sw v1,4(v0) - break; -80029704: 1000000a b 80029730 -80029708: 00000000 nop - default: - f->pos = whence + offset; -8002970c: 8fc30010 lw v1,16(s8) -80029710: 8fc2000c lw v0,12(s8) -80029714: 00000000 nop -80029718: 00621021 addu v0,v1,v0 -8002971c: 00401821 move v1,v0 -80029720: 8fc20008 lw v0,8(s8) -80029724: 00000000 nop -80029728: ac430004 sw v1,4(v0) - break; -8002972c: 00000000 nop - } - - return 0; -80029730: 00001021 move v0,zero -} -80029734: 03c0e821 move sp,s8 -80029738: 8fbe0004 lw s8,4(sp) -8002973c: 27bd0008 addiu sp,sp,8 -80029740: 03e00008 jr ra -80029744: 00000000 nop - -80029748 : - -int toupper(int c) -{ -80029748: 27bdfff8 addiu sp,sp,-8 -8002974c: afbe0004 sw s8,4(sp) -80029750: 03a0f021 move s8,sp -80029754: afc40008 sw a0,8(s8) - if(c >= 'a' && c <= 'z') -80029758: 8fc20008 lw v0,8(s8) -8002975c: 00000000 nop -80029760: 28420061 slti v0,v0,97 -80029764: 1440000b bnez v0,80029794 -80029768: 00000000 nop -8002976c: 8fc20008 lw v0,8(s8) -80029770: 00000000 nop -80029774: 2842007b slti v0,v0,123 -80029778: 10400006 beqz v0,80029794 -8002977c: 00000000 nop - return (c-'a')+'A'; -80029780: 8fc20008 lw v0,8(s8) -80029784: 00000000 nop -80029788: 2442ffe0 addiu v0,v0,-32 -8002978c: 10000002 b 80029798 -80029790: 00000000 nop - - return c; -80029794: 8fc20008 lw v0,8(s8) -} -80029798: 03c0e821 move sp,s8 -8002979c: 8fbe0004 lw s8,4(sp) -800297a0: 27bd0008 addiu sp,sp,8 -800297a4: 03e00008 jr ra -800297a8: 00000000 nop - -800297ac : - -int tolower(int c) -{ -800297ac: 27bdfff8 addiu sp,sp,-8 -800297b0: afbe0004 sw s8,4(sp) -800297b4: 03a0f021 move s8,sp -800297b8: afc40008 sw a0,8(s8) - if(c >= 'A' && c <= 'Z') -800297bc: 8fc20008 lw v0,8(s8) -800297c0: 00000000 nop -800297c4: 28420041 slti v0,v0,65 -800297c8: 1440000b bnez v0,800297f8 -800297cc: 00000000 nop -800297d0: 8fc20008 lw v0,8(s8) -800297d4: 00000000 nop -800297d8: 2842005b slti v0,v0,91 -800297dc: 10400006 beqz v0,800297f8 -800297e0: 00000000 nop - return (c-'A')+'a'; -800297e4: 8fc20008 lw v0,8(s8) -800297e8: 00000000 nop -800297ec: 24420020 addiu v0,v0,32 -800297f0: 10000002 b 800297fc -800297f4: 00000000 nop - - return c; -800297f8: 8fc20008 lw v0,8(s8) -} -800297fc: 03c0e821 move sp,s8 -80029800: 8fbe0004 lw s8,4(sp) -80029804: 27bd0008 addiu sp,sp,8 -80029808: 03e00008 jr ra -8002980c: 00000000 nop - -80029810 : - -int libc_get_transtbl_fname(char *tofind, char *outstr, int outl) -{ -80029810: 27bdbdb0 addiu sp,sp,-16976 -80029814: afbf424c sw ra,16972(sp) -80029818: afbe4248 sw s8,16968(sp) -8002981c: 03a0f021 move s8,sp -80029820: afc44250 sw a0,16976(s8) -80029824: afc54254 sw a1,16980(s8) -80029828: afc64258 sw a2,16984(s8) - FILE *f; - int s; - int x; - int type; - int y; - int l = strlen(tofind); -8002982c: 8fc44250 lw a0,16976(s8) -80029830: 0c00d8af jal 800362bc -80029834: 00000000 nop -80029838: afc20030 sw v0,48(s8) - int filename_found = 0; -8002983c: afc00020 sw zero,32(s8) - int exit_loop = 0; -80029840: afc00024 sw zero,36(s8) - int otfp = 0; -80029844: afc00028 sw zero,40(s8) - int tfp = 0; -80029848: afc0002c sw zero,44(s8) - char transtbl[0x4000]; - char orgname[16]; - char newname[256]; - char rootpath[256]; - - bzero(transtbl, 0x4000); -8002984c: 27c20038 addiu v0,s8,56 -80029850: 24064000 li a2,16384 -80029854: 00002821 move a1,zero -80029858: 00402021 move a0,v0 -8002985c: 0c00d7ab jal 80035eac -80029860: 00000000 nop - strcpy(rootpath, "cdrom:\\"); -80029864: 27c34148 addiu v1,s8,16712 -80029868: 3c028004 lui v0,0x8004 -8002986c: 2445f94c addiu a1,v0,-1716 -80029870: 00602021 move a0,v1 -80029874: 0c00d891 jal 80036244 -80029878: 00000000 nop - - f = fopen("cdrom:\\TRANS.TBL;1", "rb"); -8002987c: 3c028004 lui v0,0x8004 -80029880: 2445f954 addiu a1,v0,-1708 -80029884: 3c028004 lui v0,0x8004 -80029888: 2444f958 addiu a0,v0,-1704 -8002988c: 0c00a40c jal 80029030 -80029890: 00000000 nop -80029894: afc20034 sw v0,52(s8) - - if(f == NULL) -80029898: 8fc20034 lw v0,52(s8) -8002989c: 00000000 nop -800298a0: 14400004 bnez v0,800298b4 -800298a4: 00000000 nop - return 0; -800298a8: 00001021 move v0,zero -800298ac: 10000246 b 8002a1c8 -800298b0: 00000000 nop - - fseek(f, 0, SEEK_END); -800298b4: 24060002 li a2,2 -800298b8: 00002821 move a1,zero -800298bc: 8fc40034 lw a0,52(s8) -800298c0: 0c00a598 jal 80029660 -800298c4: 00000000 nop - s = ftell(f); -800298c8: 8fc40034 lw a0,52(s8) -800298cc: 0c00a58c jal 80029630 -800298d0: 00000000 nop -800298d4: afc20010 sw v0,16(s8) - fseek(f, 0, SEEK_SET); -800298d8: 00003021 move a2,zero -800298dc: 00002821 move a1,zero -800298e0: 8fc40034 lw a0,52(s8) -800298e4: 0c00a598 jal 80029660 -800298e8: 00000000 nop - fread(transtbl, 1, s, f); -800298ec: 27c20038 addiu v0,s8,56 -800298f0: 8fc70034 lw a3,52(s8) -800298f4: 8fc60010 lw a2,16(s8) -800298f8: 24050001 li a1,1 -800298fc: 00402021 move a0,v0 -80029900: 0c00a4b6 jal 800292d8 -80029904: 00000000 nop - fclose(f); -80029908: 8fc40034 lw a0,52(s8) -8002990c: 0c00a4a0 jal 80029280 -80029910: 00000000 nop - - outstr[0] = 0; -80029914: 8fc24254 lw v0,16980(s8) -80029918: 00000000 nop -8002991c: a0400000 sb zero,0(v0) - - x = 0; -80029920: afc00014 sw zero,20(s8) - - exit_loop = 0; -80029924: afc00024 sw zero,36(s8) - filename_found = 0; -80029928: afc00020 sw zero,32(s8) - - for(tfp = 0; tofind[tfp] == '\\' || tofind[tfp] == '/'; tfp++); -8002992c: afc0002c sw zero,44(s8) -80029930: 10000005 b 80029948 -80029934: 00000000 nop -80029938: 8fc2002c lw v0,44(s8) -8002993c: 00000000 nop -80029940: 24420001 addiu v0,v0,1 -80029944: afc2002c sw v0,44(s8) -80029948: 8fc2002c lw v0,44(s8) -8002994c: 8fc34250 lw v1,16976(s8) -80029950: 00000000 nop -80029954: 00621021 addu v0,v1,v0 -80029958: 80430000 lb v1,0(v0) -8002995c: 2402005c li v0,92 -80029960: 1062fff5 beq v1,v0,80029938 -80029964: 00000000 nop -80029968: 8fc2002c lw v0,44(s8) -8002996c: 8fc34250 lw v1,16976(s8) -80029970: 00000000 nop -80029974: 00621021 addu v0,v1,v0 -80029978: 80430000 lb v1,0(v0) -8002997c: 2402002f li v0,47 -80029980: 1062ffed beq v1,v0,80029938 -80029984: 00000000 nop - - otfp = tfp; -80029988: 8fc2002c lw v0,44(s8) -8002998c: 00000000 nop -80029990: afc20028 sw v0,40(s8) - - for(y = otfp; y < l; y++) -80029994: 8fc20028 lw v0,40(s8) -80029998: 00000000 nop -8002999c: afc2001c sw v0,28(s8) -800299a0: 1000001d b 80029a18 -800299a4: 00000000 nop - { - if(tofind[y] == '\0' || tofind[y] == '\\' || tofind[y] == '/') -800299a8: 8fc2001c lw v0,28(s8) -800299ac: 8fc34250 lw v1,16976(s8) -800299b0: 00000000 nop -800299b4: 00621021 addu v0,v1,v0 -800299b8: 80420000 lb v0,0(v0) -800299bc: 00000000 nop -800299c0: 1040001b beqz v0,80029a30 -800299c4: 00000000 nop -800299c8: 8fc2001c lw v0,28(s8) -800299cc: 8fc34250 lw v1,16976(s8) -800299d0: 00000000 nop -800299d4: 00621021 addu v0,v1,v0 -800299d8: 80430000 lb v1,0(v0) -800299dc: 2402005c li v0,92 -800299e0: 10620013 beq v1,v0,80029a30 -800299e4: 00000000 nop -800299e8: 8fc2001c lw v0,28(s8) -800299ec: 8fc34250 lw v1,16976(s8) -800299f0: 00000000 nop -800299f4: 00621021 addu v0,v1,v0 -800299f8: 80430000 lb v1,0(v0) -800299fc: 2402002f li v0,47 -80029a00: 1062000b beq v1,v0,80029a30 -80029a04: 00000000 nop - - for(tfp = 0; tofind[tfp] == '\\' || tofind[tfp] == '/'; tfp++); - - otfp = tfp; - - for(y = otfp; y < l; y++) -80029a08: 8fc2001c lw v0,28(s8) -80029a0c: 00000000 nop -80029a10: 24420001 addiu v0,v0,1 -80029a14: afc2001c sw v0,28(s8) -80029a18: 8fc3001c lw v1,28(s8) -80029a1c: 8fc20030 lw v0,48(s8) -80029a20: 00000000 nop -80029a24: 0062102a slt v0,v1,v0 -80029a28: 1440ffdf bnez v0,800299a8 -80029a2c: 00000000 nop - { - if(tofind[y] == '\0' || tofind[y] == '\\' || tofind[y] == '/') - break; - } - - tfp = y; -80029a30: 8fc2001c lw v0,28(s8) -80029a34: 00000000 nop -80029a38: afc2002c sw v0,44(s8) - - while((x < s) && !exit_loop) -80029a3c: 100001d7 b 8002a19c -80029a40: 00000000 nop - { - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') - x++; -80029a44: 8fc20014 lw v0,20(s8) -80029a48: 00000000 nop -80029a4c: 24420001 addiu v0,v0,1 -80029a50: afc20014 sw v0,20(s8) - - tfp = y; - - while((x < s) && !exit_loop) - { - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') -80029a54: 8fc20014 lw v0,20(s8) -80029a58: 27c30010 addiu v1,s8,16 -80029a5c: 00621021 addu v0,v1,v0 -80029a60: 80430028 lb v1,40(v0) -80029a64: 24020020 li v0,32 -80029a68: 1062fff6 beq v1,v0,80029a44 -80029a6c: 00000000 nop -80029a70: 8fc20014 lw v0,20(s8) -80029a74: 27c30010 addiu v1,s8,16 -80029a78: 00621021 addu v0,v1,v0 -80029a7c: 80430028 lb v1,40(v0) -80029a80: 24020009 li v0,9 -80029a84: 1062ffef beq v1,v0,80029a44 -80029a88: 00000000 nop -80029a8c: 8fc20014 lw v0,20(s8) -80029a90: 27c30010 addiu v1,s8,16 -80029a94: 00621021 addu v0,v1,v0 -80029a98: 80430028 lb v1,40(v0) -80029a9c: 2402000a li v0,10 -80029aa0: 1062ffe8 beq v1,v0,80029a44 -80029aa4: 00000000 nop -80029aa8: 8fc20014 lw v0,20(s8) -80029aac: 27c30010 addiu v1,s8,16 -80029ab0: 00621021 addu v0,v1,v0 -80029ab4: 80430028 lb v1,40(v0) -80029ab8: 2402000d li v0,13 -80029abc: 1062ffe1 beq v1,v0,80029a44 -80029ac0: 00000000 nop - x++; - - if(transtbl[x] == 'F') -80029ac4: 8fc20014 lw v0,20(s8) -80029ac8: 27c30010 addiu v1,s8,16 -80029acc: 00621021 addu v0,v1,v0 -80029ad0: 80430028 lb v1,40(v0) -80029ad4: 24020046 li v0,70 -80029ad8: 14620004 bne v1,v0,80029aec -80029adc: 00000000 nop - type = 0; -80029ae0: afc00018 sw zero,24(s8) -80029ae4: 1000000a b 80029b10 -80029ae8: 00000000 nop - else if(transtbl[x] == 'D') -80029aec: 8fc20014 lw v0,20(s8) -80029af0: 27c30010 addiu v1,s8,16 -80029af4: 00621021 addu v0,v1,v0 -80029af8: 80430028 lb v1,40(v0) -80029afc: 24020044 li v0,68 -80029b00: 14620003 bne v1,v0,80029b10 -80029b04: 00000000 nop - type = 1; -80029b08: 24020001 li v0,1 -80029b0c: afc20018 sw v0,24(s8) - - x++; -80029b10: 8fc20014 lw v0,20(s8) -80029b14: 00000000 nop -80029b18: 24420001 addiu v0,v0,1 -80029b1c: afc20014 sw v0,20(s8) - - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') -80029b20: 10000005 b 80029b38 -80029b24: 00000000 nop - x++; -80029b28: 8fc20014 lw v0,20(s8) -80029b2c: 00000000 nop -80029b30: 24420001 addiu v0,v0,1 -80029b34: afc20014 sw v0,20(s8) - else if(transtbl[x] == 'D') - type = 1; - - x++; - - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') -80029b38: 8fc20014 lw v0,20(s8) -80029b3c: 27c30010 addiu v1,s8,16 -80029b40: 00621021 addu v0,v1,v0 -80029b44: 80430028 lb v1,40(v0) -80029b48: 24020020 li v0,32 -80029b4c: 1062fff6 beq v1,v0,80029b28 -80029b50: 00000000 nop -80029b54: 8fc20014 lw v0,20(s8) -80029b58: 27c30010 addiu v1,s8,16 -80029b5c: 00621021 addu v0,v1,v0 -80029b60: 80430028 lb v1,40(v0) -80029b64: 24020009 li v0,9 -80029b68: 1062ffef beq v1,v0,80029b28 -80029b6c: 00000000 nop -80029b70: 8fc20014 lw v0,20(s8) -80029b74: 27c30010 addiu v1,s8,16 -80029b78: 00621021 addu v0,v1,v0 -80029b7c: 80430028 lb v1,40(v0) -80029b80: 2402000a li v0,10 -80029b84: 1062ffe8 beq v1,v0,80029b28 -80029b88: 00000000 nop -80029b8c: 8fc20014 lw v0,20(s8) -80029b90: 27c30010 addiu v1,s8,16 -80029b94: 00621021 addu v0,v1,v0 -80029b98: 80430028 lb v1,40(v0) -80029b9c: 2402000d li v0,13 -80029ba0: 1062ffe1 beq v1,v0,80029b28 -80029ba4: 00000000 nop - x++; - - y = 0; -80029ba8: afc0001c sw zero,28(s8) - - while(!(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r' -80029bac: 1000000f b 80029bec -80029bb0: 00000000 nop - || transtbl[x] == 0)) - orgname[y++] = transtbl[x++]; -80029bb4: 8fc2001c lw v0,28(s8) -80029bb8: 00000000 nop -80029bbc: 24430001 addiu v1,v0,1 -80029bc0: afc3001c sw v1,28(s8) -80029bc4: 8fc30014 lw v1,20(s8) -80029bc8: 00000000 nop -80029bcc: 24640001 addiu a0,v1,1 -80029bd0: afc40014 sw a0,20(s8) -80029bd4: 27c40010 addiu a0,s8,16 -80029bd8: 00831821 addu v1,a0,v1 -80029bdc: 80630028 lb v1,40(v1) -80029be0: 27c40010 addiu a0,s8,16 -80029be4: 00821021 addu v0,a0,v0 -80029be8: a0434028 sb v1,16424(v0) - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') - x++; - - y = 0; - - while(!(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r' -80029bec: 8fc20014 lw v0,20(s8) -80029bf0: 27c30010 addiu v1,s8,16 -80029bf4: 00621021 addu v0,v1,v0 -80029bf8: 80430028 lb v1,40(v0) -80029bfc: 24020020 li v0,32 -80029c00: 1062001d beq v1,v0,80029c78 -80029c04: 00000000 nop -80029c08: 8fc20014 lw v0,20(s8) -80029c0c: 27c30010 addiu v1,s8,16 -80029c10: 00621021 addu v0,v1,v0 -80029c14: 80430028 lb v1,40(v0) -80029c18: 24020009 li v0,9 -80029c1c: 10620016 beq v1,v0,80029c78 -80029c20: 00000000 nop -80029c24: 8fc20014 lw v0,20(s8) -80029c28: 27c30010 addiu v1,s8,16 -80029c2c: 00621021 addu v0,v1,v0 -80029c30: 80430028 lb v1,40(v0) -80029c34: 2402000a li v0,10 -80029c38: 1062000f beq v1,v0,80029c78 -80029c3c: 00000000 nop -80029c40: 8fc20014 lw v0,20(s8) -80029c44: 27c30010 addiu v1,s8,16 -80029c48: 00621021 addu v0,v1,v0 -80029c4c: 80430028 lb v1,40(v0) -80029c50: 2402000d li v0,13 -80029c54: 10620008 beq v1,v0,80029c78 -80029c58: 00000000 nop - || transtbl[x] == 0)) -80029c5c: 8fc20014 lw v0,20(s8) -80029c60: 27c30010 addiu v1,s8,16 -80029c64: 00621021 addu v0,v1,v0 -80029c68: 80420028 lb v0,40(v0) -80029c6c: 00000000 nop - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') - x++; - - y = 0; - - while(!(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r' -80029c70: 1440ffd0 bnez v0,80029bb4 -80029c74: 00000000 nop - || transtbl[x] == 0)) - orgname[y++] = transtbl[x++]; - - orgname[y] = 0; -80029c78: 8fc2001c lw v0,28(s8) -80029c7c: 27c30010 addiu v1,s8,16 -80029c80: 00621021 addu v0,v1,v0 -80029c84: a0404028 sb zero,16424(v0) - //printf("orgname = %s\n", orgname); - - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') -80029c88: 10000005 b 80029ca0 -80029c8c: 00000000 nop - x++; -80029c90: 8fc20014 lw v0,20(s8) -80029c94: 00000000 nop -80029c98: 24420001 addiu v0,v0,1 -80029c9c: afc20014 sw v0,20(s8) - orgname[y++] = transtbl[x++]; - - orgname[y] = 0; - //printf("orgname = %s\n", orgname); - - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') -80029ca0: 8fc20014 lw v0,20(s8) -80029ca4: 27c30010 addiu v1,s8,16 -80029ca8: 00621021 addu v0,v1,v0 -80029cac: 80430028 lb v1,40(v0) -80029cb0: 24020020 li v0,32 -80029cb4: 1062fff6 beq v1,v0,80029c90 -80029cb8: 00000000 nop -80029cbc: 8fc20014 lw v0,20(s8) -80029cc0: 27c30010 addiu v1,s8,16 -80029cc4: 00621021 addu v0,v1,v0 -80029cc8: 80430028 lb v1,40(v0) -80029ccc: 24020009 li v0,9 -80029cd0: 1062ffef beq v1,v0,80029c90 -80029cd4: 00000000 nop -80029cd8: 8fc20014 lw v0,20(s8) -80029cdc: 27c30010 addiu v1,s8,16 -80029ce0: 00621021 addu v0,v1,v0 -80029ce4: 80430028 lb v1,40(v0) -80029ce8: 2402000a li v0,10 -80029cec: 1062ffe8 beq v1,v0,80029c90 -80029cf0: 00000000 nop -80029cf4: 8fc20014 lw v0,20(s8) -80029cf8: 27c30010 addiu v1,s8,16 -80029cfc: 00621021 addu v0,v1,v0 -80029d00: 80430028 lb v1,40(v0) -80029d04: 2402000d li v0,13 -80029d08: 1062ffe1 beq v1,v0,80029c90 -80029d0c: 00000000 nop - x++; - - y = 0; -80029d10: afc0001c sw zero,28(s8) - - while(!(transtbl[x] == '\n' || transtbl[x] == '\r' || transtbl[x] == 0)) -80029d14: 1000000f b 80029d54 -80029d18: 00000000 nop - newname[y++] = transtbl[x++]; -80029d1c: 8fc2001c lw v0,28(s8) -80029d20: 00000000 nop -80029d24: 24430001 addiu v1,v0,1 -80029d28: afc3001c sw v1,28(s8) -80029d2c: 8fc30014 lw v1,20(s8) -80029d30: 00000000 nop -80029d34: 24640001 addiu a0,v1,1 -80029d38: afc40014 sw a0,20(s8) -80029d3c: 27c40010 addiu a0,s8,16 -80029d40: 00831821 addu v1,a0,v1 -80029d44: 80630028 lb v1,40(v1) -80029d48: 27c40010 addiu a0,s8,16 -80029d4c: 00821021 addu v0,a0,v0 -80029d50: a0434038 sb v1,16440(v0) - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') - x++; - - y = 0; - - while(!(transtbl[x] == '\n' || transtbl[x] == '\r' || transtbl[x] == 0)) -80029d54: 8fc20014 lw v0,20(s8) -80029d58: 27c30010 addiu v1,s8,16 -80029d5c: 00621021 addu v0,v1,v0 -80029d60: 80430028 lb v1,40(v0) -80029d64: 2402000a li v0,10 -80029d68: 1062000f beq v1,v0,80029da8 -80029d6c: 00000000 nop -80029d70: 8fc20014 lw v0,20(s8) -80029d74: 27c30010 addiu v1,s8,16 -80029d78: 00621021 addu v0,v1,v0 -80029d7c: 80430028 lb v1,40(v0) -80029d80: 2402000d li v0,13 -80029d84: 10620008 beq v1,v0,80029da8 -80029d88: 00000000 nop -80029d8c: 8fc20014 lw v0,20(s8) -80029d90: 27c30010 addiu v1,s8,16 -80029d94: 00621021 addu v0,v1,v0 -80029d98: 80420028 lb v0,40(v0) -80029d9c: 00000000 nop -80029da0: 1440ffde bnez v0,80029d1c -80029da4: 00000000 nop - newname[y++] = transtbl[x++]; - - newname[y] = 0; -80029da8: 8fc2001c lw v0,28(s8) -80029dac: 27c30010 addiu v1,s8,16 -80029db0: 00621021 addu v0,v1,v0 -80029db4: a0404038 sb zero,16440(v0) - - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') -80029db8: 10000005 b 80029dd0 -80029dbc: 00000000 nop - x++; -80029dc0: 8fc20014 lw v0,20(s8) -80029dc4: 00000000 nop -80029dc8: 24420001 addiu v0,v0,1 -80029dcc: afc20014 sw v0,20(s8) - while(!(transtbl[x] == '\n' || transtbl[x] == '\r' || transtbl[x] == 0)) - newname[y++] = transtbl[x++]; - - newname[y] = 0; - - while(transtbl[x] == ' ' || transtbl[x] == '\t' || transtbl[x] == '\n' || transtbl[x] == '\r') -80029dd0: 8fc20014 lw v0,20(s8) -80029dd4: 27c30010 addiu v1,s8,16 -80029dd8: 00621021 addu v0,v1,v0 -80029ddc: 80430028 lb v1,40(v0) -80029de0: 24020020 li v0,32 -80029de4: 1062fff6 beq v1,v0,80029dc0 -80029de8: 00000000 nop -80029dec: 8fc20014 lw v0,20(s8) -80029df0: 27c30010 addiu v1,s8,16 -80029df4: 00621021 addu v0,v1,v0 -80029df8: 80430028 lb v1,40(v0) -80029dfc: 24020009 li v0,9 -80029e00: 1062ffef beq v1,v0,80029dc0 -80029e04: 00000000 nop -80029e08: 8fc20014 lw v0,20(s8) -80029e0c: 27c30010 addiu v1,s8,16 -80029e10: 00621021 addu v0,v1,v0 -80029e14: 80430028 lb v1,40(v0) -80029e18: 2402000a li v0,10 -80029e1c: 1062ffe8 beq v1,v0,80029dc0 -80029e20: 00000000 nop -80029e24: 8fc20014 lw v0,20(s8) -80029e28: 27c30010 addiu v1,s8,16 -80029e2c: 00621021 addu v0,v1,v0 -80029e30: 80430028 lb v1,40(v0) -80029e34: 2402000d li v0,13 -80029e38: 1062ffe1 beq v1,v0,80029dc0 -80029e3c: 00000000 nop - x++; - - //printf("newname = %s\n", newname); - - if(strncasecmp(&tofind[otfp], newname, tfp-otfp) == 0) -80029e40: 8fc20028 lw v0,40(s8) -80029e44: 8fc34250 lw v1,16976(s8) -80029e48: 00000000 nop -80029e4c: 00622021 addu a0,v1,v0 -80029e50: 8fc3002c lw v1,44(s8) -80029e54: 8fc20028 lw v0,40(s8) -80029e58: 00000000 nop -80029e5c: 00621023 subu v0,v1,v0 -80029e60: 00401821 move v1,v0 -80029e64: 27c24048 addiu v0,s8,16456 -80029e68: 00603021 move a2,v1 -80029e6c: 00402821 move a1,v0 -80029e70: 0c00dcd3 jal 8003734c -80029e74: 00000000 nop -80029e78: 144000c8 bnez v0,8002a19c -80029e7c: 00000000 nop - { - if(type == 0) -80029e80: 8fc20018 lw v0,24(s8) -80029e84: 00000000 nop -80029e88: 1440001d bnez v0,80029f00 -80029e8c: 00000000 nop - { - dprintf("Filename found: %s -> %s%s\n", tofind, rootpath, orgname); - filename_found = 1; -80029e90: 24020001 li v0,1 -80029e94: afc20020 sw v0,32(s8) - exit_loop = 1; -80029e98: 24020001 li v0,1 -80029e9c: afc20024 sw v0,36(s8) - - strncpy(outstr, rootpath, outl); -80029ea0: 8fc34258 lw v1,16984(s8) -80029ea4: 27c24148 addiu v0,s8,16712 -80029ea8: 00603021 move a2,v1 -80029eac: 00402821 move a1,v0 -80029eb0: 8fc44254 lw a0,16980(s8) -80029eb4: 0c00d860 jal 80036180 -80029eb8: 00000000 nop - strncat(outstr, orgname, outl-strlen(rootpath)); -80029ebc: 27c24148 addiu v0,s8,16712 -80029ec0: 00402021 move a0,v0 -80029ec4: 0c00d8af jal 800362bc -80029ec8: 00000000 nop -80029ecc: 00401821 move v1,v0 -80029ed0: 8fc24258 lw v0,16984(s8) -80029ed4: 00000000 nop -80029ed8: 00431023 subu v0,v0,v1 -80029edc: 00401821 move v1,v0 -80029ee0: 27c24038 addiu v0,s8,16440 -80029ee4: 00603021 move a2,v1 -80029ee8: 00402821 move a1,v0 -80029eec: 8fc44254 lw a0,16980(s8) -80029ef0: 0c00dc6e jal 800371b8 -80029ef4: 00000000 nop -80029ef8: 100000a8 b 8002a19c -80029efc: 00000000 nop - { - //printf("Found directory! %s\n", newname); - - //printf("tfp = %d\n", tfp); - - if(tfp == l || tofind[l-1] == '/' -80029f00: 8fc3002c lw v1,44(s8) -80029f04: 8fc20030 lw v0,48(s8) -80029f08: 00000000 nop -80029f0c: 10620015 beq v1,v0,80029f64 -80029f10: 00000000 nop -80029f14: 8fc20030 lw v0,48(s8) -80029f18: 00000000 nop -80029f1c: 2442ffff addiu v0,v0,-1 -80029f20: 8fc34250 lw v1,16976(s8) -80029f24: 00000000 nop -80029f28: 00621021 addu v0,v1,v0 -80029f2c: 80430000 lb v1,0(v0) -80029f30: 2402002f li v0,47 -80029f34: 1062000b beq v1,v0,80029f64 -80029f38: 00000000 nop - || tofind[l-1] == '\\') -80029f3c: 8fc20030 lw v0,48(s8) -80029f40: 00000000 nop -80029f44: 2442ffff addiu v0,v0,-1 -80029f48: 8fc34250 lw v1,16976(s8) -80029f4c: 00000000 nop -80029f50: 00621021 addu v0,v1,v0 -80029f54: 80430000 lb v1,0(v0) -80029f58: 2402005c li v0,92 -80029f5c: 14620009 bne v1,v0,80029f84 -80029f60: 00000000 nop - { - dprintf("File not found. A directory was specified.\n"); - exit_loop = 1; -80029f64: 24020001 li v0,1 -80029f68: afc20024 sw v0,36(s8) - continue; -80029f6c: 1000008b b 8002a19c -80029f70: 00000000 nop - } - - //tfp++; - for(; tofind[tfp] == '\\' || tofind[tfp] == '/'; tfp++); -80029f74: 8fc2002c lw v0,44(s8) -80029f78: 00000000 nop -80029f7c: 24420001 addiu v0,v0,1 -80029f80: afc2002c sw v0,44(s8) -80029f84: 8fc2002c lw v0,44(s8) -80029f88: 8fc34250 lw v1,16976(s8) -80029f8c: 00000000 nop -80029f90: 00621021 addu v0,v1,v0 -80029f94: 80430000 lb v1,0(v0) -80029f98: 2402005c li v0,92 -80029f9c: 1062fff5 beq v1,v0,80029f74 -80029fa0: 00000000 nop -80029fa4: 8fc2002c lw v0,44(s8) -80029fa8: 8fc34250 lw v1,16976(s8) -80029fac: 00000000 nop -80029fb0: 00621021 addu v0,v1,v0 -80029fb4: 80430000 lb v1,0(v0) -80029fb8: 2402002f li v0,47 -80029fbc: 1062ffed beq v1,v0,80029f74 -80029fc0: 00000000 nop - - otfp = tfp; -80029fc4: 8fc2002c lw v0,44(s8) -80029fc8: 00000000 nop -80029fcc: afc20028 sw v0,40(s8) - - for(y = otfp; y < l; y++) -80029fd0: 8fc20028 lw v0,40(s8) -80029fd4: 00000000 nop -80029fd8: afc2001c sw v0,28(s8) -80029fdc: 1000001d b 8002a054 -80029fe0: 00000000 nop - { - if(tofind[y] == '\0' || tofind[y] == '\\' || tofind[y] == '/') -80029fe4: 8fc2001c lw v0,28(s8) -80029fe8: 8fc34250 lw v1,16976(s8) -80029fec: 00000000 nop -80029ff0: 00621021 addu v0,v1,v0 -80029ff4: 80420000 lb v0,0(v0) -80029ff8: 00000000 nop -80029ffc: 1040001b beqz v0,8002a06c -8002a000: 00000000 nop -8002a004: 8fc2001c lw v0,28(s8) -8002a008: 8fc34250 lw v1,16976(s8) -8002a00c: 00000000 nop -8002a010: 00621021 addu v0,v1,v0 -8002a014: 80430000 lb v1,0(v0) -8002a018: 2402005c li v0,92 -8002a01c: 10620013 beq v1,v0,8002a06c -8002a020: 00000000 nop -8002a024: 8fc2001c lw v0,28(s8) -8002a028: 8fc34250 lw v1,16976(s8) -8002a02c: 00000000 nop -8002a030: 00621021 addu v0,v1,v0 -8002a034: 80430000 lb v1,0(v0) -8002a038: 2402002f li v0,47 -8002a03c: 1062000b beq v1,v0,8002a06c -8002a040: 00000000 nop - //tfp++; - for(; tofind[tfp] == '\\' || tofind[tfp] == '/'; tfp++); - - otfp = tfp; - - for(y = otfp; y < l; y++) -8002a044: 8fc2001c lw v0,28(s8) -8002a048: 00000000 nop -8002a04c: 24420001 addiu v0,v0,1 -8002a050: afc2001c sw v0,28(s8) -8002a054: 8fc3001c lw v1,28(s8) -8002a058: 8fc20030 lw v0,48(s8) -8002a05c: 00000000 nop -8002a060: 0062102a slt v0,v1,v0 -8002a064: 1440ffdf bnez v0,80029fe4 -8002a068: 00000000 nop - { - if(tofind[y] == '\0' || tofind[y] == '\\' || tofind[y] == '/') - break; - } - - tfp = y; -8002a06c: 8fc2001c lw v0,28(s8) -8002a070: 00000000 nop -8002a074: afc2002c sw v0,44(s8) - - strcat(rootpath, orgname); -8002a078: 27c34038 addiu v1,s8,16440 -8002a07c: 27c24148 addiu v0,s8,16712 -8002a080: 00602821 move a1,v1 -8002a084: 00402021 move a0,v0 -8002a088: 0c00dc56 jal 80037158 -8002a08c: 00000000 nop - strcat(rootpath, "\\"); -8002a090: 27c34148 addiu v1,s8,16712 -8002a094: 3c028004 lui v0,0x8004 -8002a098: 2445f96c addiu a1,v0,-1684 -8002a09c: 00602021 move a0,v1 -8002a0a0: 0c00dc56 jal 80037158 -8002a0a4: 00000000 nop - - y = strlen(rootpath); -8002a0a8: 27c24148 addiu v0,s8,16712 -8002a0ac: 00402021 move a0,v0 -8002a0b0: 0c00d8af jal 800362bc -8002a0b4: 00000000 nop -8002a0b8: afc2001c sw v0,28(s8) - strcat(rootpath, "TRANS.TBL;1"); -8002a0bc: 27c34148 addiu v1,s8,16712 -8002a0c0: 3c028004 lui v0,0x8004 -8002a0c4: 2445f970 addiu a1,v0,-1680 -8002a0c8: 00602021 move a0,v1 -8002a0cc: 0c00dc56 jal 80037158 -8002a0d0: 00000000 nop - - bzero(transtbl, 0x4000); -8002a0d4: 27c20038 addiu v0,s8,56 -8002a0d8: 24064000 li a2,16384 -8002a0dc: 00002821 move a1,zero -8002a0e0: 00402021 move a0,v0 -8002a0e4: 0c00d7ab jal 80035eac -8002a0e8: 00000000 nop - - f = fopen(rootpath, "rb"); -8002a0ec: 27c34148 addiu v1,s8,16712 -8002a0f0: 3c028004 lui v0,0x8004 -8002a0f4: 2445f954 addiu a1,v0,-1708 -8002a0f8: 00602021 move a0,v1 -8002a0fc: 0c00a40c jal 80029030 -8002a100: 00000000 nop -8002a104: afc20034 sw v0,52(s8) - - if(f == NULL) -8002a108: 8fc20034 lw v0,52(s8) -8002a10c: 00000000 nop -8002a110: 14400005 bnez v0,8002a128 -8002a114: 00000000 nop - { - dprintf("Couldn't find %s\n", rootpath); - exit_loop = 1; -8002a118: 24020001 li v0,1 -8002a11c: afc20024 sw v0,36(s8) - continue; -8002a120: 1000001e b 8002a19c -8002a124: 00000000 nop - } - - rootpath[y] = 0; -8002a128: 8fc2001c lw v0,28(s8) -8002a12c: 27c30010 addiu v1,s8,16 -8002a130: 00621021 addu v0,v1,v0 -8002a134: a0404138 sb zero,16696(v0) - - fseek(f, 0, SEEK_END); -8002a138: 24060002 li a2,2 -8002a13c: 00002821 move a1,zero -8002a140: 8fc40034 lw a0,52(s8) -8002a144: 0c00a598 jal 80029660 -8002a148: 00000000 nop - s = ftell(f); -8002a14c: 8fc40034 lw a0,52(s8) -8002a150: 0c00a58c jal 80029630 -8002a154: 00000000 nop -8002a158: afc20010 sw v0,16(s8) - fseek(f, 0, SEEK_SET); -8002a15c: 00003021 move a2,zero -8002a160: 00002821 move a1,zero -8002a164: 8fc40034 lw a0,52(s8) -8002a168: 0c00a598 jal 80029660 -8002a16c: 00000000 nop - fread(transtbl, 1, s, f); -8002a170: 27c20038 addiu v0,s8,56 -8002a174: 8fc70034 lw a3,52(s8) -8002a178: 8fc60010 lw a2,16(s8) -8002a17c: 24050001 li a1,1 -8002a180: 00402021 move a0,v0 -8002a184: 0c00a4b6 jal 800292d8 -8002a188: 00000000 nop - fclose(f); -8002a18c: 8fc40034 lw a0,52(s8) -8002a190: 0c00a4a0 jal 80029280 -8002a194: 00000000 nop - - x = 0; -8002a198: afc00014 sw zero,20(s8) - break; - } - - tfp = y; - - while((x < s) && !exit_loop) -8002a19c: 8fc30014 lw v1,20(s8) -8002a1a0: 8fc20010 lw v0,16(s8) -8002a1a4: 00000000 nop -8002a1a8: 0062102a slt v0,v1,v0 -8002a1ac: 10400005 beqz v0,8002a1c4 -8002a1b0: 00000000 nop -8002a1b4: 8fc20024 lw v0,36(s8) -8002a1b8: 00000000 nop -8002a1bc: 1040fe25 beqz v0,80029a54 -8002a1c0: 00000000 nop - x = 0; - } - } - } - - return filename_found; -8002a1c4: 8fc20020 lw v0,32(s8) -} -8002a1c8: 03c0e821 move sp,s8 -8002a1cc: 8fbf424c lw ra,16972(sp) -8002a1d0: 8fbe4248 lw s8,16968(sp) -8002a1d4: 27bd4250 addiu sp,sp,16976 -8002a1d8: 03e00008 jr ra -8002a1dc: 00000000 nop - -8002a1e0 : - -int isupper(int c) -{ -8002a1e0: 27bdfff8 addiu sp,sp,-8 -8002a1e4: afbe0004 sw s8,4(sp) -8002a1e8: 03a0f021 move s8,sp -8002a1ec: afc40008 sw a0,8(s8) - return (c >= 'A' && c <= 'Z'); -8002a1f0: 8fc20008 lw v0,8(s8) -8002a1f4: 00000000 nop -8002a1f8: 28420041 slti v0,v0,65 -8002a1fc: 14400009 bnez v0,8002a224 -8002a200: 00000000 nop -8002a204: 8fc20008 lw v0,8(s8) -8002a208: 00000000 nop -8002a20c: 2842005b slti v0,v0,91 -8002a210: 10400004 beqz v0,8002a224 -8002a214: 00000000 nop -8002a218: 24020001 li v0,1 -8002a21c: 10000002 b 8002a228 -8002a220: 00000000 nop -8002a224: 00001021 move v0,zero -} -8002a228: 03c0e821 move sp,s8 -8002a22c: 8fbe0004 lw s8,4(sp) -8002a230: 27bd0008 addiu sp,sp,8 -8002a234: 03e00008 jr ra -8002a238: 00000000 nop - -8002a23c : - -int islower(int c) -{ -8002a23c: 27bdfff8 addiu sp,sp,-8 -8002a240: afbe0004 sw s8,4(sp) -8002a244: 03a0f021 move s8,sp -8002a248: afc40008 sw a0,8(s8) - return (c >= 'a' && c <= 'z'); -8002a24c: 8fc20008 lw v0,8(s8) -8002a250: 00000000 nop -8002a254: 28420061 slti v0,v0,97 -8002a258: 14400009 bnez v0,8002a280 -8002a25c: 00000000 nop -8002a260: 8fc20008 lw v0,8(s8) -8002a264: 00000000 nop -8002a268: 2842007b slti v0,v0,123 -8002a26c: 10400004 beqz v0,8002a280 -8002a270: 00000000 nop -8002a274: 24020001 li v0,1 -8002a278: 10000002 b 8002a284 -8002a27c: 00000000 nop -8002a280: 00001021 move v0,zero -} -8002a284: 03c0e821 move sp,s8 -8002a288: 8fbe0004 lw s8,4(sp) -8002a28c: 27bd0008 addiu sp,sp,8 -8002a290: 03e00008 jr ra -8002a294: 00000000 nop - -8002a298 : - -int isdigit(int c) -{ -8002a298: 27bdfff8 addiu sp,sp,-8 -8002a29c: afbe0004 sw s8,4(sp) -8002a2a0: 03a0f021 move s8,sp -8002a2a4: afc40008 sw a0,8(s8) - return (c >= '0' && c <= '9'); -8002a2a8: 8fc20008 lw v0,8(s8) -8002a2ac: 00000000 nop -8002a2b0: 28420030 slti v0,v0,48 -8002a2b4: 14400009 bnez v0,8002a2dc -8002a2b8: 00000000 nop -8002a2bc: 8fc20008 lw v0,8(s8) -8002a2c0: 00000000 nop -8002a2c4: 2842003a slti v0,v0,58 -8002a2c8: 10400004 beqz v0,8002a2dc -8002a2cc: 00000000 nop -8002a2d0: 24020001 li v0,1 -8002a2d4: 10000002 b 8002a2e0 -8002a2d8: 00000000 nop -8002a2dc: 00001021 move v0,zero -} -8002a2e0: 03c0e821 move sp,s8 -8002a2e4: 8fbe0004 lw s8,4(sp) -8002a2e8: 27bd0008 addiu sp,sp,8 -8002a2ec: 03e00008 jr ra -8002a2f0: 00000000 nop - -8002a2f4 : - -int isxdigit(int c) -{ -8002a2f4: 27bdfff8 addiu sp,sp,-8 -8002a2f8: afbe0004 sw s8,4(sp) -8002a2fc: 03a0f021 move s8,sp -8002a300: afc40008 sw a0,8(s8) - return ((c >= '0' && c <= '9') || (c >= 'A' && c<='F') || (c >= 'a' && c<='f')); -8002a304: 8fc20008 lw v0,8(s8) -8002a308: 00000000 nop -8002a30c: 28420030 slti v0,v0,48 -8002a310: 14400006 bnez v0,8002a32c -8002a314: 00000000 nop -8002a318: 8fc20008 lw v0,8(s8) -8002a31c: 00000000 nop -8002a320: 2842003a slti v0,v0,58 -8002a324: 14400015 bnez v0,8002a37c -8002a328: 00000000 nop -8002a32c: 8fc20008 lw v0,8(s8) -8002a330: 00000000 nop -8002a334: 28420041 slti v0,v0,65 -8002a338: 14400006 bnez v0,8002a354 -8002a33c: 00000000 nop -8002a340: 8fc20008 lw v0,8(s8) -8002a344: 00000000 nop -8002a348: 28420047 slti v0,v0,71 -8002a34c: 1440000b bnez v0,8002a37c -8002a350: 00000000 nop -8002a354: 8fc20008 lw v0,8(s8) -8002a358: 00000000 nop -8002a35c: 28420061 slti v0,v0,97 -8002a360: 14400009 bnez v0,8002a388 -8002a364: 00000000 nop -8002a368: 8fc20008 lw v0,8(s8) -8002a36c: 00000000 nop -8002a370: 28420067 slti v0,v0,103 -8002a374: 10400004 beqz v0,8002a388 -8002a378: 00000000 nop -8002a37c: 24020001 li v0,1 -8002a380: 10000002 b 8002a38c -8002a384: 00000000 nop -8002a388: 00001021 move v0,zero -} -8002a38c: 03c0e821 move sp,s8 -8002a390: 8fbe0004 lw s8,4(sp) -8002a394: 27bd0008 addiu sp,sp,8 -8002a398: 03e00008 jr ra -8002a39c: 00000000 nop - -8002a3a0 : - -int isalpha(int c) -{ -8002a3a0: 27bdfff8 addiu sp,sp,-8 -8002a3a4: afbe0004 sw s8,4(sp) -8002a3a8: 03a0f021 move s8,sp -8002a3ac: afc40008 sw a0,8(s8) - return ((c>='a' && c<='z') || (c>='A' && c<='Z')); -8002a3b0: 8fc20008 lw v0,8(s8) -8002a3b4: 00000000 nop -8002a3b8: 28420061 slti v0,v0,97 -8002a3bc: 14400006 bnez v0,8002a3d8 -8002a3c0: 00000000 nop -8002a3c4: 8fc20008 lw v0,8(s8) -8002a3c8: 00000000 nop -8002a3cc: 2842007b slti v0,v0,123 -8002a3d0: 1440000b bnez v0,8002a400 -8002a3d4: 00000000 nop -8002a3d8: 8fc20008 lw v0,8(s8) -8002a3dc: 00000000 nop -8002a3e0: 28420041 slti v0,v0,65 -8002a3e4: 14400009 bnez v0,8002a40c -8002a3e8: 00000000 nop -8002a3ec: 8fc20008 lw v0,8(s8) -8002a3f0: 00000000 nop -8002a3f4: 2842005b slti v0,v0,91 -8002a3f8: 10400004 beqz v0,8002a40c -8002a3fc: 00000000 nop -8002a400: 24020001 li v0,1 -8002a404: 10000002 b 8002a410 -8002a408: 00000000 nop -8002a40c: 00001021 move v0,zero -} -8002a410: 03c0e821 move sp,s8 -8002a414: 8fbe0004 lw s8,4(sp) -8002a418: 27bd0008 addiu sp,sp,8 -8002a41c: 03e00008 jr ra -8002a420: 00000000 nop - -8002a424 : - -int isalnum(int c) -{ -8002a424: 27bdfff8 addiu sp,sp,-8 -8002a428: afbe0004 sw s8,4(sp) -8002a42c: 03a0f021 move s8,sp -8002a430: afc40008 sw a0,8(s8) - return ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9')); -8002a434: 8fc20008 lw v0,8(s8) -8002a438: 00000000 nop -8002a43c: 28420061 slti v0,v0,97 -8002a440: 14400006 bnez v0,8002a45c -8002a444: 00000000 nop -8002a448: 8fc20008 lw v0,8(s8) -8002a44c: 00000000 nop -8002a450: 2842007b slti v0,v0,123 -8002a454: 14400015 bnez v0,8002a4ac -8002a458: 00000000 nop -8002a45c: 8fc20008 lw v0,8(s8) -8002a460: 00000000 nop -8002a464: 28420041 slti v0,v0,65 -8002a468: 14400006 bnez v0,8002a484 -8002a46c: 00000000 nop -8002a470: 8fc20008 lw v0,8(s8) -8002a474: 00000000 nop -8002a478: 2842005b slti v0,v0,91 -8002a47c: 1440000b bnez v0,8002a4ac -8002a480: 00000000 nop -8002a484: 8fc20008 lw v0,8(s8) -8002a488: 00000000 nop -8002a48c: 28420030 slti v0,v0,48 -8002a490: 14400009 bnez v0,8002a4b8 -8002a494: 00000000 nop -8002a498: 8fc20008 lw v0,8(s8) -8002a49c: 00000000 nop -8002a4a0: 2842003a slti v0,v0,58 -8002a4a4: 10400004 beqz v0,8002a4b8 -8002a4a8: 00000000 nop -8002a4ac: 24020001 li v0,1 -8002a4b0: 10000002 b 8002a4bc -8002a4b4: 00000000 nop -8002a4b8: 00001021 move v0,zero -} -8002a4bc: 03c0e821 move sp,s8 -8002a4c0: 8fbe0004 lw s8,4(sp) -8002a4c4: 27bd0008 addiu sp,sp,8 -8002a4c8: 03e00008 jr ra -8002a4cc: 00000000 nop - -8002a4d0 : - -int isspace(int c) -{ -8002a4d0: 27bdfff8 addiu sp,sp,-8 -8002a4d4: afbe0004 sw s8,4(sp) -8002a4d8: 03a0f021 move s8,sp -8002a4dc: afc40008 sw a0,8(s8) - return ((c == ' ') || (c == '\f') || (c == '\n') || (c == '\r') || (c == '\t') || (c == '\v')); -8002a4e0: 8fc30008 lw v1,8(s8) -8002a4e4: 24020020 li v0,32 -8002a4e8: 10620015 beq v1,v0,8002a540 -8002a4ec: 00000000 nop -8002a4f0: 8fc30008 lw v1,8(s8) -8002a4f4: 2402000c li v0,12 -8002a4f8: 10620011 beq v1,v0,8002a540 -8002a4fc: 00000000 nop -8002a500: 8fc30008 lw v1,8(s8) -8002a504: 2402000a li v0,10 -8002a508: 1062000d beq v1,v0,8002a540 -8002a50c: 00000000 nop -8002a510: 8fc30008 lw v1,8(s8) -8002a514: 2402000d li v0,13 -8002a518: 10620009 beq v1,v0,8002a540 -8002a51c: 00000000 nop -8002a520: 8fc30008 lw v1,8(s8) -8002a524: 24020009 li v0,9 -8002a528: 10620005 beq v1,v0,8002a540 -8002a52c: 00000000 nop -8002a530: 8fc30008 lw v1,8(s8) -8002a534: 2402000b li v0,11 -8002a538: 14620004 bne v1,v0,8002a54c -8002a53c: 00000000 nop -8002a540: 24020001 li v0,1 -8002a544: 10000002 b 8002a550 -8002a548: 00000000 nop -8002a54c: 00001021 move v0,zero -} -8002a550: 03c0e821 move sp,s8 -8002a554: 8fbe0004 lw s8,4(sp) -8002a558: 27bd0008 addiu sp,sp,8 -8002a55c: 03e00008 jr ra -8002a560: 00000000 nop - -8002a564 : - -int isprint(int c) -{ -8002a564: 27bdfff8 addiu sp,sp,-8 -8002a568: afbe0004 sw s8,4(sp) -8002a56c: 03a0f021 move s8,sp -8002a570: afc40008 sw a0,8(s8) - return (c >= 0x20) && (c <= 0x7E); -8002a574: 8fc20008 lw v0,8(s8) -8002a578: 00000000 nop -8002a57c: 28420020 slti v0,v0,32 -8002a580: 14400009 bnez v0,8002a5a8 -8002a584: 00000000 nop -8002a588: 8fc20008 lw v0,8(s8) -8002a58c: 00000000 nop -8002a590: 2842007f slti v0,v0,127 -8002a594: 10400004 beqz v0,8002a5a8 -8002a598: 00000000 nop -8002a59c: 24020001 li v0,1 -8002a5a0: 10000002 b 8002a5ac -8002a5a4: 00000000 nop -8002a5a8: 00001021 move v0,zero -} -8002a5ac: 03c0e821 move sp,s8 -8002a5b0: 8fbe0004 lw s8,4(sp) -8002a5b4: 27bd0008 addiu sp,sp,8 -8002a5b8: 03e00008 jr ra -8002a5bc: 00000000 nop - -8002a5c0 : - -int isgraph(int c) -{ -8002a5c0: 27bdfff8 addiu sp,sp,-8 -8002a5c4: afbe0004 sw s8,4(sp) -8002a5c8: 03a0f021 move s8,sp -8002a5cc: afc40008 sw a0,8(s8) - return (c > 0x20) && (c <= 0x7E); -8002a5d0: 8fc20008 lw v0,8(s8) -8002a5d4: 00000000 nop -8002a5d8: 28420021 slti v0,v0,33 -8002a5dc: 14400009 bnez v0,8002a604 -8002a5e0: 00000000 nop -8002a5e4: 8fc20008 lw v0,8(s8) -8002a5e8: 00000000 nop -8002a5ec: 2842007f slti v0,v0,127 -8002a5f0: 10400004 beqz v0,8002a604 -8002a5f4: 00000000 nop -8002a5f8: 24020001 li v0,1 -8002a5fc: 10000002 b 8002a608 -8002a600: 00000000 nop -8002a604: 00001021 move v0,zero -} -8002a608: 03c0e821 move sp,s8 -8002a60c: 8fbe0004 lw s8,4(sp) -8002a610: 27bd0008 addiu sp,sp,8 -8002a614: 03e00008 jr ra -8002a618: 00000000 nop - -8002a61c : - -int iscntrl(int c) -{ -8002a61c: 27bdfff8 addiu sp,sp,-8 -8002a620: afbe0004 sw s8,4(sp) -8002a624: 03a0f021 move s8,sp -8002a628: afc40008 sw a0,8(s8) - return (c < 0x20); -8002a62c: 8fc20008 lw v0,8(s8) -8002a630: 00000000 nop -8002a634: 28420020 slti v0,v0,32 -8002a638: 304200ff andi v0,v0,0xff -} -8002a63c: 03c0e821 move sp,s8 -8002a640: 8fbe0004 lw s8,4(sp) -8002a644: 27bd0008 addiu sp,sp,8 -8002a648: 03e00008 jr ra -8002a64c: 00000000 nop - -8002a650 : - -int isblank(int c) -{ -8002a650: 27bdfff8 addiu sp,sp,-8 -8002a654: afbe0004 sw s8,4(sp) -8002a658: 03a0f021 move s8,sp -8002a65c: afc40008 sw a0,8(s8) - return ((c == ' ') || (c == '\t')); -8002a660: 8fc30008 lw v1,8(s8) -8002a664: 24020020 li v0,32 -8002a668: 10620005 beq v1,v0,8002a680 -8002a66c: 00000000 nop -8002a670: 8fc30008 lw v1,8(s8) -8002a674: 24020009 li v0,9 -8002a678: 14620004 bne v1,v0,8002a68c -8002a67c: 00000000 nop -8002a680: 24020001 li v0,1 -8002a684: 10000002 b 8002a690 -8002a688: 00000000 nop -8002a68c: 00001021 move v0,zero -} -8002a690: 03c0e821 move sp,s8 -8002a694: 8fbe0004 lw s8,4(sp) -8002a698: 27bd0008 addiu sp,sp,8 -8002a69c: 03e00008 jr ra -8002a6a0: 00000000 nop - -8002a6a4 : - -void redirect_stdio_to_sio(void) -{ -8002a6a4: 27bdfff8 addiu sp,sp,-8 -8002a6a8: afbe0004 sw s8,4(sp) -8002a6ac: 03a0f021 move s8,sp - __stdio_direction = STDIO_DIRECTION_SIO; -8002a6b0: 3c028007 lui v0,0x8007 -8002a6b4: 24030001 li v1,1 -8002a6b8: ac431cc0 sw v1,7360(v0) -} -8002a6bc: 00000000 nop -8002a6c0: 03c0e821 move sp,s8 -8002a6c4: 8fbe0004 lw s8,4(sp) -8002a6c8: 27bd0008 addiu sp,sp,8 -8002a6cc: 03e00008 jr ra -8002a6d0: 00000000 nop - -8002a6d4 : - -void sio_stdio_mapcr(unsigned int setting) -{ -8002a6d4: 27bdfff8 addiu sp,sp,-8 -8002a6d8: afbe0004 sw s8,4(sp) -8002a6dc: 03a0f021 move s8,sp -8002a6e0: afc40008 sw a0,8(s8) - __sio_cr_mapped = setting; -8002a6e4: 3c028007 lui v0,0x8007 -8002a6e8: 8fc30008 lw v1,8(s8) -8002a6ec: 00000000 nop -8002a6f0: ac431cc4 sw v1,7364(v0) -} -8002a6f4: 00000000 nop -8002a6f8: 03c0e821 move sp,s8 -8002a6fc: 8fbe0004 lw s8,4(sp) -8002a700: 27bd0008 addiu sp,sp,8 -8002a704: 03e00008 jr ra -8002a708: 00000000 nop - -8002a70c : - -int sio_putchar(int c) -{ -8002a70c: 27bdffe8 addiu sp,sp,-24 -8002a710: afbf0014 sw ra,20(sp) -8002a714: afbe0010 sw s8,16(sp) -8002a718: 03a0f021 move s8,sp -8002a71c: afc40018 sw a0,24(s8) - if(c == '\n' && __sio_cr_mapped) -8002a720: 8fc30018 lw v1,24(s8) -8002a724: 2402000a li v0,10 -8002a728: 14620009 bne v1,v0,8002a750 -8002a72c: 00000000 nop -8002a730: 3c028007 lui v0,0x8007 -8002a734: 8c421cc4 lw v0,7364(v0) -8002a738: 00000000 nop -8002a73c: 10400004 beqz v0,8002a750 -8002a740: 00000000 nop - sio_putchar('\r'); -8002a744: 2404000d li a0,13 -8002a748: 0c00a9c3 jal 8002a70c -8002a74c: 00000000 nop - - while(!SIOCheckOutBuffer()); -8002a750: 00000000 nop -8002a754: 0c00cfd4 jal 80033f50 -8002a758: 00000000 nop -8002a75c: 1040fffd beqz v0,8002a754 -8002a760: 00000000 nop - - SIOSendByte(c); -8002a764: 8fc20018 lw v0,24(s8) -8002a768: 00000000 nop -8002a76c: 304200ff andi v0,v0,0xff -8002a770: 00402021 move a0,v0 -8002a774: 0c00cfb4 jal 80033ed0 -8002a778: 00000000 nop - - return c; -8002a77c: 8fc20018 lw v0,24(s8) -} -8002a780: 03c0e821 move sp,s8 -8002a784: 8fbf0014 lw ra,20(sp) -8002a788: 8fbe0010 lw s8,16(sp) -8002a78c: 27bd0018 addiu sp,sp,24 -8002a790: 03e00008 jr ra -8002a794: 00000000 nop - -8002a798 : - -int sio_puts(const char *str) -{ -8002a798: 27bdffe8 addiu sp,sp,-24 -8002a79c: afbf0014 sw ra,20(sp) -8002a7a0: afbe0010 sw s8,16(sp) -8002a7a4: 03a0f021 move s8,sp -8002a7a8: afc40018 sw a0,24(s8) - while(*str) -8002a7ac: 1000000a b 8002a7d8 -8002a7b0: 00000000 nop - sio_putchar(*(str++)); -8002a7b4: 8fc20018 lw v0,24(s8) -8002a7b8: 00000000 nop -8002a7bc: 24430001 addiu v1,v0,1 -8002a7c0: afc30018 sw v1,24(s8) -8002a7c4: 80420000 lb v0,0(v0) -8002a7c8: 00000000 nop -8002a7cc: 00402021 move a0,v0 -8002a7d0: 0c00a9c3 jal 8002a70c -8002a7d4: 00000000 nop - return c; -} - -int sio_puts(const char *str) -{ - while(*str) -8002a7d8: 8fc20018 lw v0,24(s8) -8002a7dc: 00000000 nop -8002a7e0: 80420000 lb v0,0(v0) -8002a7e4: 00000000 nop -8002a7e8: 1440fff2 bnez v0,8002a7b4 -8002a7ec: 00000000 nop - sio_putchar(*(str++)); - - sio_putchar('\n'); -8002a7f0: 2404000a li a0,10 -8002a7f4: 0c00a9c3 jal 8002a70c -8002a7f8: 00000000 nop - - return 1; -8002a7fc: 24020001 li v0,1 -} -8002a800: 03c0e821 move sp,s8 -8002a804: 8fbf0014 lw ra,20(sp) -8002a808: 8fbe0010 lw s8,16(sp) -8002a80c: 27bd0018 addiu sp,sp,24 -8002a810: 03e00008 jr ra -8002a814: 00000000 nop - -8002a818 : - -extern int bios_putchar(int c); -extern int bios_puts(const char *str); - -int putchar(int c) -{ -8002a818: 27bdffe8 addiu sp,sp,-24 -8002a81c: afbf0014 sw ra,20(sp) -8002a820: afbe0010 sw s8,16(sp) -8002a824: 03a0f021 move s8,sp -8002a828: afc40018 sw a0,24(s8) - switch(__stdio_direction) -8002a82c: 3c028007 lui v0,0x8007 -8002a830: 8c421cc0 lw v0,7360(v0) -8002a834: 00000000 nop -8002a838: 10400006 beqz v0,8002a854 -8002a83c: 00000000 nop -8002a840: 24030001 li v1,1 -8002a844: 10430008 beq v0,v1,8002a868 -8002a848: 00000000 nop -8002a84c: 1000000b b 8002a87c -8002a850: 00000000 nop - { - case STDIO_DIRECTION_BIOS: - return bios_putchar(c); -8002a854: 8fc40018 lw a0,24(s8) -8002a858: 0c00ed87 jal 8003b61c -8002a85c: 00000000 nop -8002a860: 10000007 b 8002a880 -8002a864: 00000000 nop - break; - case STDIO_DIRECTION_SIO: - return sio_putchar(c); -8002a868: 8fc40018 lw a0,24(s8) -8002a86c: 0c00a9c3 jal 8002a70c -8002a870: 00000000 nop -8002a874: 10000002 b 8002a880 -8002a878: 00000000 nop - break; - } - - return -1; -8002a87c: 2402ffff li v0,-1 -} -8002a880: 03c0e821 move sp,s8 -8002a884: 8fbf0014 lw ra,20(sp) -8002a888: 8fbe0010 lw s8,16(sp) -8002a88c: 27bd0018 addiu sp,sp,24 -8002a890: 03e00008 jr ra -8002a894: 00000000 nop - -8002a898 : - -int puts(const char *str) -{ -8002a898: 27bdffe8 addiu sp,sp,-24 -8002a89c: afbf0014 sw ra,20(sp) -8002a8a0: afbe0010 sw s8,16(sp) -8002a8a4: 03a0f021 move s8,sp -8002a8a8: afc40018 sw a0,24(s8) - switch(__stdio_direction) -8002a8ac: 3c028007 lui v0,0x8007 -8002a8b0: 8c421cc0 lw v0,7360(v0) -8002a8b4: 00000000 nop -8002a8b8: 10400006 beqz v0,8002a8d4 -8002a8bc: 00000000 nop -8002a8c0: 24030001 li v1,1 -8002a8c4: 10430008 beq v0,v1,8002a8e8 -8002a8c8: 00000000 nop -8002a8cc: 1000000b b 8002a8fc -8002a8d0: 00000000 nop - { - case STDIO_DIRECTION_BIOS: - return bios_puts(str); -8002a8d4: 8fc40018 lw a0,24(s8) -8002a8d8: 0c00ed8b jal 8003b62c -8002a8dc: 00000000 nop -8002a8e0: 10000007 b 8002a900 -8002a8e4: 00000000 nop - break; - case STDIO_DIRECTION_SIO: - return sio_puts(str); -8002a8e8: 8fc40018 lw a0,24(s8) -8002a8ec: 0c00a9e6 jal 8002a798 -8002a8f0: 00000000 nop -8002a8f4: 10000002 b 8002a900 -8002a8f8: 00000000 nop - break; - } - - return -1; -8002a8fc: 2402ffff li v0,-1 -} -8002a900: 03c0e821 move sp,s8 -8002a904: 8fbf0014 lw ra,20(sp) -8002a908: 8fbe0010 lw s8,16(sp) -8002a90c: 27bd0018 addiu sp,sp,24 -8002a910: 03e00008 jr ra -8002a914: 00000000 nop - -8002a918 : - 0xFF, // ??? 1D - 1, // ReadToc 1E -}; - -void CdSendCommand(int cmd, int num, ...) -{ -8002a918: 27bdfff0 addiu sp,sp,-16 -8002a91c: afbe000c sw s8,12(sp) -8002a920: 03a0f021 move s8,sp -8002a924: afc40010 sw a0,16(s8) -8002a928: afc50014 sw a1,20(s8) -8002a92c: afc60018 sw a2,24(s8) -8002a930: afc7001c sw a3,28(s8) - int x; - va_list ap; - va_start(ap, num); -8002a934: 27c20018 addiu v0,s8,24 -8002a938: afc20004 sw v0,4(s8) -// while(CDREG(0) & 128); - -// Flush old interrupts -// If this is not done, some events (like the opening of the shell) will hang the CD controller. - - CDREG(0) = 1; -8002a93c: 3c021f80 lui v0,0x1f80 -8002a940: 34421800 ori v0,v0,0x1800 -8002a944: 24030001 li v1,1 -8002a948: a0430000 sb v1,0(v0) - CDREG(3) = 7; -8002a94c: 3c021f80 lui v0,0x1f80 -8002a950: 34421803 ori v0,v0,0x1803 -8002a954: 24030007 li v1,7 -8002a958: a0430000 sb v1,0(v0) - -// Send parameters - - CDREG(0) = 0; -8002a95c: 3c021f80 lui v0,0x1f80 -8002a960: 34421800 ori v0,v0,0x1800 -8002a964: a0400000 sb zero,0(v0) - - while(num) -8002a968: 1000000f b 8002a9a8 -8002a96c: 00000000 nop - { - CDREG(2) = (unsigned char)va_arg(ap, unsigned int); -8002a970: 3c021f80 lui v0,0x1f80 -8002a974: 34431802 ori v1,v0,0x1802 -8002a978: 8fc20004 lw v0,4(s8) -8002a97c: 00000000 nop -8002a980: 24440004 addiu a0,v0,4 -8002a984: afc40004 sw a0,4(s8) -8002a988: 8c420000 lw v0,0(v0) -8002a98c: 00000000 nop -8002a990: 304200ff andi v0,v0,0xff -8002a994: a0620000 sb v0,0(v1) - num--; -8002a998: 8fc20014 lw v0,20(s8) -8002a99c: 00000000 nop -8002a9a0: 2442ffff addiu v0,v0,-1 -8002a9a4: afc20014 sw v0,20(s8) - -// Send parameters - - CDREG(0) = 0; - - while(num) -8002a9a8: 8fc20014 lw v0,20(s8) -8002a9ac: 00000000 nop -8002a9b0: 1440ffef bnez v0,8002a970 -8002a9b4: 00000000 nop - num--; - } - -// Send command - - CDREG(0) = 0; -8002a9b8: 3c021f80 lui v0,0x1f80 -8002a9bc: 34421800 ori v0,v0,0x1800 -8002a9c0: a0400000 sb zero,0(v0) - CDREG(1) = cmd; -8002a9c4: 3c021f80 lui v0,0x1f80 -8002a9c8: 34421801 ori v0,v0,0x1801 -8002a9cc: 8fc30010 lw v1,16(s8) -8002a9d0: 00000000 nop -8002a9d4: 306300ff andi v1,v1,0xff -8002a9d8: a0430000 sb v1,0(v0) - -// Depending on the number of INTs we expect for a command, -// we wait for an INT to occur, we store the response data returned, -// and we flush the INT. - for(x = 0; x < (cdrom_command_type[cmd] + 1); x++) -8002a9dc: afc00000 sw zero,0(s8) -8002a9e0: 10000022 b 8002aa6c -8002a9e4: 00000000 nop - { - CDREG(0) = 1; -8002a9e8: 3c021f80 lui v0,0x1f80 -8002a9ec: 34421800 ori v0,v0,0x1800 -8002a9f0: 24030001 li v1,1 -8002a9f4: a0430000 sb v1,0(v0) - // PROBLEMATIC INSTRUCTION - CHECK! - while((CDREG(3) & 7) == 0); -8002a9f8: 00000000 nop -8002a9fc: 3c021f80 lui v0,0x1f80 -8002aa00: 34421803 ori v0,v0,0x1803 -8002aa04: 90420000 lbu v0,0(v0) -8002aa08: 00000000 nop -8002aa0c: 30420007 andi v0,v0,0x7 -8002aa10: 1040fffa beqz v0,8002a9fc -8002aa14: 00000000 nop - - cdrom_command_stat[x] = CDREG(1); -8002aa18: 3c021f80 lui v0,0x1f80 -8002aa1c: 34421801 ori v0,v0,0x1801 -8002aa20: 90430000 lbu v1,0(v0) -8002aa24: 3c028007 lui v0,0x8007 -8002aa28: 24441d2c addiu a0,v0,7468 -8002aa2c: 8fc20000 lw v0,0(s8) -8002aa30: 00000000 nop -8002aa34: 00821021 addu v0,a0,v0 -8002aa38: a0430000 sb v1,0(v0) - - CDREG(0) = 1; -8002aa3c: 3c021f80 lui v0,0x1f80 -8002aa40: 34421800 ori v0,v0,0x1800 -8002aa44: 24030001 li v1,1 -8002aa48: a0430000 sb v1,0(v0) - CDREG(3) = 7; -8002aa4c: 3c021f80 lui v0,0x1f80 -8002aa50: 34421803 ori v0,v0,0x1803 -8002aa54: 24030007 li v1,7 -8002aa58: a0430000 sb v1,0(v0) - CDREG(1) = cmd; - -// Depending on the number of INTs we expect for a command, -// we wait for an INT to occur, we store the response data returned, -// and we flush the INT. - for(x = 0; x < (cdrom_command_type[cmd] + 1); x++) -8002aa5c: 8fc20000 lw v0,0(s8) -8002aa60: 00000000 nop -8002aa64: 24420001 addiu v0,v0,1 -8002aa68: afc20000 sw v0,0(s8) -8002aa6c: 3c028004 lui v0,0x8004 -8002aa70: 2443f97c addiu v1,v0,-1668 -8002aa74: 8fc20010 lw v0,16(s8) -8002aa78: 00000000 nop -8002aa7c: 00621021 addu v0,v1,v0 -8002aa80: 90420000 lbu v0,0(v0) -8002aa84: 00000000 nop -8002aa88: 24430001 addiu v1,v0,1 -8002aa8c: 8fc20000 lw v0,0(s8) -8002aa90: 00000000 nop -8002aa94: 0043102a slt v0,v0,v1 -8002aa98: 1440ffd3 bnez v0,8002a9e8 -8002aa9c: 00000000 nop - CDREG(0) = 1; - CDREG(3) = 7; - } - -// Store ID number of last executed command (this) - cdrom_last_command = cmd; -8002aaa0: 8fc20010 lw v0,16(s8) -8002aaa4: 00000000 nop -8002aaa8: 304300ff andi v1,v0,0xff -8002aaac: 3c028007 lui v0,0x8007 -8002aab0: a0431d2e sb v1,7470(v0) - - va_end(ap); -} -8002aab4: 00000000 nop -8002aab8: 03c0e821 move sp,s8 -8002aabc: 8fbe000c lw s8,12(sp) -8002aac0: 27bd0010 addiu sp,sp,16 -8002aac4: 03e00008 jr ra -8002aac8: 00000000 nop - -8002aacc : - -int CdReadResults(unsigned char *out, int max) -{ -8002aacc: 27bdffe8 addiu sp,sp,-24 -8002aad0: afbe0014 sw s8,20(sp) -8002aad4: 03a0f021 move s8,sp -8002aad8: afc40018 sw a0,24(s8) -8002aadc: afc5001c sw a1,28(s8) - int x; - unsigned char *outo = out; -8002aae0: 8fc20018 lw v0,24(s8) -8002aae4: 00000000 nop -8002aae8: afc20004 sw v0,4(s8) - unsigned char b; - - for(x = 0; x < (cdrom_command_type[cdrom_last_command] + 1); x++) -8002aaec: afc00000 sw zero,0(s8) -8002aaf0: 1000001a b 8002ab5c -8002aaf4: 00000000 nop - { - if(max > 0) -8002aaf8: 8fc2001c lw v0,28(s8) -8002aafc: 00000000 nop -8002ab00: 18400012 blez v0,8002ab4c -8002ab04: 00000000 nop - { - *(out++) = cdrom_command_stat[x]; -8002ab08: 8fc20018 lw v0,24(s8) -8002ab0c: 00000000 nop -8002ab10: 24430001 addiu v1,v0,1 -8002ab14: afc30018 sw v1,24(s8) -8002ab18: 3c038007 lui v1,0x8007 -8002ab1c: 24641d2c addiu a0,v1,7468 -8002ab20: 8fc30000 lw v1,0(s8) -8002ab24: 00000000 nop -8002ab28: 00831821 addu v1,a0,v1 -8002ab2c: 90630000 lbu v1,0(v1) -8002ab30: 00000000 nop -8002ab34: 306300ff andi v1,v1,0xff -8002ab38: a0430000 sb v1,0(v0) - max--; -8002ab3c: 8fc2001c lw v0,28(s8) -8002ab40: 00000000 nop -8002ab44: 2442ffff addiu v0,v0,-1 -8002ab48: afc2001c sw v0,28(s8) -{ - int x; - unsigned char *outo = out; - unsigned char b; - - for(x = 0; x < (cdrom_command_type[cdrom_last_command] + 1); x++) -8002ab4c: 8fc20000 lw v0,0(s8) -8002ab50: 00000000 nop -8002ab54: 24420001 addiu v0,v0,1 -8002ab58: afc20000 sw v0,0(s8) -8002ab5c: 3c028007 lui v0,0x8007 -8002ab60: 90421d2e lbu v0,7470(v0) -8002ab64: 00000000 nop -8002ab68: 304200ff andi v0,v0,0xff -8002ab6c: 00401821 move v1,v0 -8002ab70: 3c028004 lui v0,0x8004 -8002ab74: 2442f97c addiu v0,v0,-1668 -8002ab78: 00621021 addu v0,v1,v0 -8002ab7c: 90420000 lbu v0,0(v0) -8002ab80: 00000000 nop -8002ab84: 24430001 addiu v1,v0,1 -8002ab88: 8fc20000 lw v0,0(s8) -8002ab8c: 00000000 nop -8002ab90: 0043102a slt v0,v0,v1 -8002ab94: 1440ffd8 bnez v0,8002aaf8 -8002ab98: 00000000 nop - *(out++) = cdrom_command_stat[x]; - max--; - } - } - - CDREG(0) = 1; -8002ab9c: 3c021f80 lui v0,0x1f80 -8002aba0: 34421800 ori v0,v0,0x1800 -8002aba4: 24030001 li v1,1 -8002aba8: a0430000 sb v1,0(v0) - - while(CDREG(0) & 0x20) -8002abac: 10000015 b 8002ac04 -8002abb0: 00000000 nop - { - b = CDREG(1); -8002abb4: 3c021f80 lui v0,0x1f80 -8002abb8: 34421801 ori v0,v0,0x1801 -8002abbc: 90420000 lbu v0,0(v0) -8002abc0: 00000000 nop -8002abc4: a3c20008 sb v0,8(s8) - if(max>0) -8002abc8: 8fc2001c lw v0,28(s8) -8002abcc: 00000000 nop -8002abd0: 1840000c blez v0,8002ac04 -8002abd4: 00000000 nop - { - *(out++) = b; -8002abd8: 8fc20018 lw v0,24(s8) -8002abdc: 00000000 nop -8002abe0: 24430001 addiu v1,v0,1 -8002abe4: afc30018 sw v1,24(s8) -8002abe8: 93c30008 lbu v1,8(s8) -8002abec: 00000000 nop -8002abf0: a0430000 sb v1,0(v0) - max--; -8002abf4: 8fc2001c lw v0,28(s8) -8002abf8: 00000000 nop -8002abfc: 2442ffff addiu v0,v0,-1 -8002ac00: afc2001c sw v0,28(s8) - } - } - - CDREG(0) = 1; - - while(CDREG(0) & 0x20) -8002ac04: 3c021f80 lui v0,0x1f80 -8002ac08: 34421800 ori v0,v0,0x1800 -8002ac0c: 90420000 lbu v0,0(v0) -8002ac10: 00000000 nop -8002ac14: 30420020 andi v0,v0,0x20 -8002ac18: 1440ffe6 bnez v0,8002abb4 -8002ac1c: 00000000 nop - *(out++) = b; - max--; - } - } - - return (out-outo); -8002ac20: 8fc30018 lw v1,24(s8) -8002ac24: 8fc20004 lw v0,4(s8) -8002ac28: 00000000 nop -8002ac2c: 00621023 subu v0,v1,v0 -} -8002ac30: 03c0e821 move sp,s8 -8002ac34: 8fbe0014 lw s8,20(sp) -8002ac38: 27bd0018 addiu sp,sp,24 -8002ac3c: 03e00008 jr ra -8002ac40: 00000000 nop - -8002ac44 <_internal_cdromlib_callback>: - -void _internal_cdromlib_callback() -{ -8002ac44: 27bdffe8 addiu sp,sp,-24 -8002ac48: afbf0014 sw ra,20(sp) -8002ac4c: afbe0010 sw s8,16(sp) -8002ac50: 03a0f021 move s8,sp - printf("Call from CD-ROM interrupt!\n"); -8002ac54: 3c028004 lui v0,0x8004 -8002ac58: 2444f99c addiu a0,v0,-1636 -8002ac5c: 0c00ed8f jal 8003b63c -8002ac60: 00000000 nop - printf("Status: %d\n", IPENDING); -8002ac64: 3c021f80 lui v0,0x1f80 -8002ac68: 34421070 ori v0,v0,0x1070 -8002ac6c: 8c420000 lw v0,0(v0) -8002ac70: 00000000 nop -8002ac74: 00402821 move a1,v0 -8002ac78: 3c028004 lui v0,0x8004 -8002ac7c: 2444f9bc addiu a0,v0,-1604 -8002ac80: 0c00ed8f jal 8003b63c -8002ac84: 00000000 nop - IPENDING &= ~(1<<2); -8002ac88: 3c021f80 lui v0,0x1f80 -8002ac8c: 34421070 ori v0,v0,0x1070 -8002ac90: 3c031f80 lui v1,0x1f80 -8002ac94: 34631070 ori v1,v1,0x1070 -8002ac98: 8c640000 lw a0,0(v1) -8002ac9c: 2403fffb li v1,-5 -8002aca0: 00831824 and v1,a0,v1 -8002aca4: ac430000 sw v1,0(v0) - CDREG(3) = 7; - i = CDREG(1); - cdrom_command_stat[1] = i; - - //printf("cdrom_command_done = %d\n", cdrom_command_done);*/ -} -8002aca8: 00000000 nop -8002acac: 03c0e821 move sp,s8 -8002acb0: 8fbf0014 lw ra,20(sp) -8002acb4: 8fbe0010 lw s8,16(sp) -8002acb8: 27bd0018 addiu sp,sp,24 -8002acbc: 03e00008 jr ra -8002acc0: 00000000 nop - -8002acc4 <_internal_cdromlib_init>: - -void _internal_cdromlib_init() -{ -8002acc4: 27bdffe8 addiu sp,sp,-24 -8002acc8: afbf0014 sw ra,20(sp) -8002accc: afbe0010 sw s8,16(sp) -8002acd0: 03a0f021 move s8,sp - printf("Starting CDROMlib...\n"); -8002acd4: 3c028004 lui v0,0x8004 -8002acd8: 2444f9c8 addiu a0,v0,-1592 -8002acdc: 0c00ed8f jal 8003b63c -8002ace0: 00000000 nop - - EnterCriticalSection(); // Disable IRQs -8002ace4: 0c00ee04 jal 8003b810 -8002ace8: 00000000 nop - - SysEnqIntRP(0, cdrom_queue_buf); -8002acec: 3c028004 lui v0,0x8004 -8002acf0: 2445153c addiu a1,v0,5436 -8002acf4: 00002021 move a0,zero -8002acf8: 0c00ee10 jal 8003b840 -8002acfc: 00000000 nop - - IMASK|=4; -8002ad00: 3c021f80 lui v0,0x1f80 -8002ad04: 34421074 ori v0,v0,0x1074 -8002ad08: 3c031f80 lui v1,0x1f80 -8002ad0c: 34631074 ori v1,v1,0x1074 -8002ad10: 8c630000 lw v1,0(v1) -8002ad14: 00000000 nop -8002ad18: 34630004 ori v1,v1,0x4 -8002ad1c: ac430000 sw v1,0(v0) - - cdrom_handler_callback = _internal_cdromlib_callback; -8002ad20: 3c028007 lui v0,0x8007 -8002ad24: 3c038003 lui v1,0x8003 -8002ad28: 2463ac44 addiu v1,v1,-21436 -8002ad2c: ac431d34 sw v1,7476(v0) - - ExitCriticalSection(); // Enable IRQs -8002ad30: 0c00ee0a jal 8003b828 -8002ad34: 00000000 nop -} -8002ad38: 00000000 nop -8002ad3c: 03c0e821 move sp,s8 -8002ad40: 8fbf0014 lw ra,20(sp) -8002ad44: 8fbe0010 lw s8,16(sp) -8002ad48: 27bd0018 addiu sp,sp,24 -8002ad4c: 03e00008 jr ra -8002ad50: 00000000 nop - -8002ad54 : - -int CdGetStatus() -{ -8002ad54: 27bdffe0 addiu sp,sp,-32 -8002ad58: afbf001c sw ra,28(sp) -8002ad5c: afbe0018 sw s8,24(sp) -8002ad60: 03a0f021 move s8,sp - unsigned char out; - - CdSendCommand(CdlGetstat, 0); -8002ad64: 00002821 move a1,zero -8002ad68: 24040001 li a0,1 -8002ad6c: 0c00aa46 jal 8002a918 -8002ad70: 00000000 nop - CdReadResults(&out, 1); -8002ad74: 24050001 li a1,1 -8002ad78: 27c20010 addiu v0,s8,16 -8002ad7c: 00402021 move a0,v0 -8002ad80: 0c00aab3 jal 8002aacc -8002ad84: 00000000 nop - - return out; -8002ad88: 93c20010 lbu v0,16(s8) -} -8002ad8c: 03c0e821 move sp,s8 -8002ad90: 8fbf001c lw ra,28(sp) -8002ad94: 8fbe0018 lw s8,24(sp) -8002ad98: 27bd0020 addiu sp,sp,32 -8002ad9c: 03e00008 jr ra -8002ada0: 00000000 nop - -8002ada4 : - -int CdPlayTrack(unsigned int track) -{ -8002ada4: 27bdffe8 addiu sp,sp,-24 -8002ada8: afbf0014 sw ra,20(sp) -8002adac: afbe0010 sw s8,16(sp) -8002adb0: 03a0f021 move s8,sp -8002adb4: afc40018 sw a0,24(s8) - //while(CdGetStatus() & CDSTATUS_SEEK); - CdSendCommand(CdlSetmode, 1, 0x20); -8002adb8: 24060020 li a2,32 -8002adbc: 24050001 li a1,1 -8002adc0: 2404000e li a0,14 -8002adc4: 0c00aa46 jal 8002a918 -8002adc8: 00000000 nop - CdSendCommand(CdlPlay, 1, ((track/10)<<4)|(track%10)); -8002adcc: 8fc30018 lw v1,24(s8) -8002add0: 2402000a li v0,10 -8002add4: 14400002 bnez v0,8002ade0 -8002add8: 0062001b divu zero,v1,v0 -8002addc: 0007000d break 0x7 -8002ade0: 00001010 mfhi v0 -8002ade4: 00001012 mflo v0 -8002ade8: 00021100 sll v0,v0,0x4 -8002adec: 8fc40018 lw a0,24(s8) -8002adf0: 2403000a li v1,10 -8002adf4: 14600002 bnez v1,8002ae00 -8002adf8: 0083001b divu zero,a0,v1 -8002adfc: 0007000d break 0x7 -8002ae00: 00001810 mfhi v1 -8002ae04: 00431025 or v0,v0,v1 -8002ae08: 00403021 move a2,v0 -8002ae0c: 24050001 li a1,1 -8002ae10: 24040003 li a0,3 -8002ae14: 0c00aa46 jal 8002a918 -8002ae18: 00000000 nop - - return 1; -8002ae1c: 24020001 li v0,1 -} -8002ae20: 03c0e821 move sp,s8 -8002ae24: 8fbf0014 lw ra,20(sp) -8002ae28: 8fbe0010 lw s8,16(sp) -8002ae2c: 27bd0018 addiu sp,sp,24 -8002ae30: 03e00008 jr ra -8002ae34: 00000000 nop - -8002ae38 : - -unsigned char CdRamRead(unsigned short addr) -{ -8002ae38: 27bdffe0 addiu sp,sp,-32 -8002ae3c: afbf001c sw ra,28(sp) -8002ae40: afbe0018 sw s8,24(sp) -8002ae44: 03a0f021 move s8,sp -8002ae48: 00801021 move v0,a0 -8002ae4c: a7c20020 sh v0,32(s8) - unsigned char b; - addr &= 0x3ff; -8002ae50: 97c20020 lhu v0,32(s8) -8002ae54: 00000000 nop -8002ae58: 304203ff andi v0,v0,0x3ff -8002ae5c: a7c20020 sh v0,32(s8) - - CdSendCommand(0x19, 0x60, addr&0xff, addr >> 8); -8002ae60: 97c20020 lhu v0,32(s8) -8002ae64: 00000000 nop -8002ae68: 304300ff andi v1,v0,0xff -8002ae6c: 97c20020 lhu v0,32(s8) -8002ae70: 00000000 nop -8002ae74: 00021202 srl v0,v0,0x8 -8002ae78: 3042ffff andi v0,v0,0xffff -8002ae7c: 00403821 move a3,v0 -8002ae80: 00603021 move a2,v1 -8002ae84: 24050060 li a1,96 -8002ae88: 24040019 li a0,25 -8002ae8c: 0c00aa46 jal 8002a918 -8002ae90: 00000000 nop - CdReadResults(&b, 1); -8002ae94: 24050001 li a1,1 -8002ae98: 27c20010 addiu v0,s8,16 -8002ae9c: 00402021 move a0,v0 -8002aea0: 0c00aab3 jal 8002aacc -8002aea4: 00000000 nop - - return b; -8002aea8: 93c20010 lbu v0,16(s8) -} -8002aeac: 03c0e821 move sp,s8 -8002aeb0: 8fbf001c lw ra,28(sp) -8002aeb4: 8fbe0018 lw s8,24(sp) -8002aeb8: 27bd0020 addiu sp,sp,32 -8002aebc: 03e00008 jr ra -8002aec0: 00000000 nop - -8002aec4 : -// RAM memory map on the PSX -// 0x80000000 - 0x8000FFFF RAM used by the BIOS -// 0x80010000 - 0x801FFFFF Program memory - -void malloc_setup() -{ -8002aec4: 27bdfff0 addiu sp,sp,-16 -8002aec8: afbe000c sw s8,12(sp) -8002aecc: 03a0f021 move s8,sp - int x; - - dprintf("malloc setup.\n"); - - first_free_page = (unsigned int) __bss_end; -8002aed0: 3c028007 lui v0,0x8007 -8002aed4: 24431bf8 addiu v1,v0,7160 -8002aed8: 3c028007 lui v0,0x8007 -8002aedc: ac431d38 sw v1,7480(v0) - first_free_page-= 0x80000000; -8002aee0: 3c028007 lui v0,0x8007 -8002aee4: 8c431d38 lw v1,7480(v0) -8002aee8: 3c028000 lui v0,0x8000 -8002aeec: 00621821 addu v1,v1,v0 -8002aef0: 3c028007 lui v0,0x8007 -8002aef4: ac431d38 sw v1,7480(v0) - - if(first_free_page & 0x3ff) -8002aef8: 3c028007 lui v0,0x8007 -8002aefc: 8c421d38 lw v0,7480(v0) -8002af00: 00000000 nop -8002af04: 304203ff andi v0,v0,0x3ff -8002af08: 10400008 beqz v0,8002af2c -8002af0c: 00000000 nop - first_free_page = (first_free_page | 0x3ff) + 1; -8002af10: 3c028007 lui v0,0x8007 -8002af14: 8c421d38 lw v0,7480(v0) -8002af18: 00000000 nop -8002af1c: 344203ff ori v0,v0,0x3ff -8002af20: 24430001 addiu v1,v0,1 -8002af24: 3c028007 lui v0,0x8007 -8002af28: ac431d38 sw v1,7480(v0) - - first_free_page>>=10; -8002af2c: 3c028007 lui v0,0x8007 -8002af30: 8c421d38 lw v0,7480(v0) -8002af34: 00000000 nop -8002af38: 00021a82 srl v1,v0,0xa -8002af3c: 3c028007 lui v0,0x8007 -8002af40: ac431d38 sw v1,7480(v0) - - //printf("First free page: %d, bss_end: %x\n", first_free_page, __bss_end); - - for(x = 0; x < first_free_page; x++) -8002af44: afc00000 sw zero,0(s8) -8002af48: 10000014 b 8002af9c -8002af4c: 00000000 nop - { - busy_pages[x] = 1; // RAM occupied by program, data and BIOS looks always allocated -8002af50: 3c028007 lui v0,0x8007 -8002af54: 2443136c addiu v1,v0,4972 -8002af58: 8fc20000 lw v0,0(s8) -8002af5c: 00000000 nop -8002af60: 00621021 addu v0,v1,v0 -8002af64: 24030001 li v1,1 -8002af68: a0430000 sb v1,0(v0) - alloc_size[x] = 1; // Fake that 1K was required -8002af6c: 3c028007 lui v0,0x8007 -8002af70: 8fc30000 lw v1,0(s8) -8002af74: 00000000 nop -8002af78: 00031880 sll v1,v1,0x2 -8002af7c: 2442f36c addiu v0,v0,-3220 -8002af80: 00621021 addu v0,v1,v0 -8002af84: 24030001 li v1,1 -8002af88: ac430000 sw v1,0(v0) - - first_free_page>>=10; - - //printf("First free page: %d, bss_end: %x\n", first_free_page, __bss_end); - - for(x = 0; x < first_free_page; x++) -8002af8c: 8fc20000 lw v0,0(s8) -8002af90: 00000000 nop -8002af94: 24420001 addiu v0,v0,1 -8002af98: afc20000 sw v0,0(s8) -8002af9c: 8fc30000 lw v1,0(s8) -8002afa0: 3c028007 lui v0,0x8007 -8002afa4: 8c421d38 lw v0,7480(v0) -8002afa8: 00000000 nop -8002afac: 0062102b sltu v0,v1,v0 -8002afb0: 1440ffe7 bnez v0,8002af50 -8002afb4: 00000000 nop - { - busy_pages[x] = 1; // RAM occupied by program, data and BIOS looks always allocated - alloc_size[x] = 1; // Fake that 1K was required - } - - for(x = first_free_page; x < 2048; x++) -8002afb8: 3c028007 lui v0,0x8007 -8002afbc: 8c421d38 lw v0,7480(v0) -8002afc0: 00000000 nop -8002afc4: afc20000 sw v0,0(s8) -8002afc8: 10000012 b 8002b014 -8002afcc: 00000000 nop - { - busy_pages[x] = 0; -8002afd0: 3c028007 lui v0,0x8007 -8002afd4: 2443136c addiu v1,v0,4972 -8002afd8: 8fc20000 lw v0,0(s8) -8002afdc: 00000000 nop -8002afe0: 00621021 addu v0,v1,v0 -8002afe4: a0400000 sb zero,0(v0) - alloc_size[x] = 0; -8002afe8: 3c028007 lui v0,0x8007 -8002afec: 8fc30000 lw v1,0(s8) -8002aff0: 00000000 nop -8002aff4: 00031880 sll v1,v1,0x2 -8002aff8: 2442f36c addiu v0,v0,-3220 -8002affc: 00621021 addu v0,v1,v0 -8002b000: ac400000 sw zero,0(v0) - { - busy_pages[x] = 1; // RAM occupied by program, data and BIOS looks always allocated - alloc_size[x] = 1; // Fake that 1K was required - } - - for(x = first_free_page; x < 2048; x++) -8002b004: 8fc20000 lw v0,0(s8) -8002b008: 00000000 nop -8002b00c: 24420001 addiu v0,v0,1 -8002b010: afc20000 sw v0,0(s8) -8002b014: 8fc20000 lw v0,0(s8) -8002b018: 00000000 nop -8002b01c: 28420800 slti v0,v0,2048 -8002b020: 1440ffeb bnez v0,8002afd0 -8002b024: 00000000 nop - { - busy_pages[x] = 0; - alloc_size[x] = 0; - } -} -8002b028: 00000000 nop -8002b02c: 03c0e821 move sp,s8 -8002b030: 8fbe000c lw s8,12(sp) -8002b034: 27bd0010 addiu sp,sp,16 -8002b038: 03e00008 jr ra -8002b03c: 00000000 nop - -8002b040 : - -void *malloc(size_t size) -{ -8002b040: 27bdfff0 addiu sp,sp,-16 -8002b044: afbe000c sw s8,12(sp) -8002b048: 03a0f021 move s8,sp -8002b04c: afc40010 sw a0,16(s8) - - int x, y; - -// Round size - - if(size & 0x3ff) -8002b050: 8fc20010 lw v0,16(s8) -8002b054: 00000000 nop -8002b058: 304203ff andi v0,v0,0x3ff -8002b05c: 10400006 beqz v0,8002b078 -8002b060: 00000000 nop - size = (size | 0x3ff) + 1; -8002b064: 8fc20010 lw v0,16(s8) -8002b068: 00000000 nop -8002b06c: 344203ff ori v0,v0,0x3ff -8002b070: 24420001 addiu v0,v0,1 -8002b074: afc20010 sw v0,16(s8) - -// Divide it by 1024 - size >>= 10; -8002b078: 8fc20010 lw v0,16(s8) -8002b07c: 00000000 nop -8002b080: 00021282 srl v0,v0,0xa -8002b084: afc20010 sw v0,16(s8) - //printf("Allocating %dKb\n", size); - -// Find a free page - for(x = 0; x < 2048; x++) -8002b088: afc00000 sw zero,0(s8) -8002b08c: 1000004e b 8002b1c8 -8002b090: 00000000 nop - { - if(busy_pages[x] == 0) -8002b094: 3c028007 lui v0,0x8007 -8002b098: 2443136c addiu v1,v0,4972 -8002b09c: 8fc20000 lw v0,0(s8) -8002b0a0: 00000000 nop -8002b0a4: 00621021 addu v0,v1,v0 -8002b0a8: 90420000 lbu v0,0(v0) -8002b0ac: 00000000 nop -8002b0b0: 14400041 bnez v0,8002b1b8 -8002b0b4: 00000000 nop - // If it's enough for the memory we want to allocate, then return - // the pointer to the free page we found, otherwise keep finding - - // printf("Page found at %dKb\n", x); - - for(y = 0; y < size; y++) -8002b0b8: afc00004 sw zero,4(s8) -8002b0bc: 10000010 b 8002b100 -8002b0c0: 00000000 nop - if(busy_pages[x+y] == 1) goto malloc_keep_finding; -8002b0c4: 8fc30000 lw v1,0(s8) -8002b0c8: 8fc20004 lw v0,4(s8) -8002b0cc: 00000000 nop -8002b0d0: 00621821 addu v1,v1,v0 -8002b0d4: 3c028007 lui v0,0x8007 -8002b0d8: 2442136c addiu v0,v0,4972 -8002b0dc: 00621021 addu v0,v1,v0 -8002b0e0: 90430000 lbu v1,0(v0) -8002b0e4: 24020001 li v0,1 -8002b0e8: 10620032 beq v1,v0,8002b1b4 -8002b0ec: 00000000 nop - // If it's enough for the memory we want to allocate, then return - // the pointer to the free page we found, otherwise keep finding - - // printf("Page found at %dKb\n", x); - - for(y = 0; y < size; y++) -8002b0f0: 8fc20004 lw v0,4(s8) -8002b0f4: 00000000 nop -8002b0f8: 24420001 addiu v0,v0,1 -8002b0fc: afc20004 sw v0,4(s8) -8002b100: 8fc30004 lw v1,4(s8) -8002b104: 8fc20010 lw v0,16(s8) -8002b108: 00000000 nop -8002b10c: 0062102b sltu v0,v1,v0 -8002b110: 1440ffec bnez v0,8002b0c4 -8002b114: 00000000 nop - if(busy_pages[x+y] == 1) goto malloc_keep_finding; - - // We found the memory we wanted, now make it busy - - for(y = 0; y < size; y++) -8002b118: afc00004 sw zero,4(s8) -8002b11c: 1000000e b 8002b158 -8002b120: 00000000 nop - busy_pages[x+y] = 1; -8002b124: 8fc30000 lw v1,0(s8) -8002b128: 8fc20004 lw v0,4(s8) -8002b12c: 00000000 nop -8002b130: 00621821 addu v1,v1,v0 -8002b134: 3c028007 lui v0,0x8007 -8002b138: 2442136c addiu v0,v0,4972 -8002b13c: 00621021 addu v0,v1,v0 -8002b140: 24030001 li v1,1 -8002b144: a0430000 sb v1,0(v0) - for(y = 0; y < size; y++) - if(busy_pages[x+y] == 1) goto malloc_keep_finding; - - // We found the memory we wanted, now make it busy - - for(y = 0; y < size; y++) -8002b148: 8fc20004 lw v0,4(s8) -8002b14c: 00000000 nop -8002b150: 24420001 addiu v0,v0,1 -8002b154: afc20004 sw v0,4(s8) -8002b158: 8fc30004 lw v1,4(s8) -8002b15c: 8fc20010 lw v0,16(s8) -8002b160: 00000000 nop -8002b164: 0062102b sltu v0,v1,v0 -8002b168: 1440ffee bnez v0,8002b124 -8002b16c: 00000000 nop - busy_pages[x+y] = 1; - - // Store allocation size, it is essential for free() - - alloc_size[x] = size; -8002b170: 3c028007 lui v0,0x8007 -8002b174: 8fc30000 lw v1,0(s8) -8002b178: 00000000 nop -8002b17c: 00031880 sll v1,v1,0x2 -8002b180: 2442f36c addiu v0,v0,-3220 -8002b184: 00621021 addu v0,v1,v0 -8002b188: 8fc30010 lw v1,16(s8) -8002b18c: 00000000 nop -8002b190: ac430000 sw v1,0(v0) - // printf("malloc(): alloc_size[%d] = %d\n", x, size); - - return (void*)((unsigned int)0x80000000 + (x<<10)); -8002b194: 8fc20000 lw v0,0(s8) -8002b198: 00000000 nop -8002b19c: 00021280 sll v0,v0,0xa -8002b1a0: 00401821 move v1,v0 -8002b1a4: 3c028000 lui v0,0x8000 -8002b1a8: 00621021 addu v0,v1,v0 -8002b1ac: 1000000c b 8002b1e0 -8002b1b0: 00000000 nop - // the pointer to the free page we found, otherwise keep finding - - // printf("Page found at %dKb\n", x); - - for(y = 0; y < size; y++) - if(busy_pages[x+y] == 1) goto malloc_keep_finding; -8002b1b4: 00000000 nop -// Divide it by 1024 - size >>= 10; - //printf("Allocating %dKb\n", size); - -// Find a free page - for(x = 0; x < 2048; x++) -8002b1b8: 8fc20000 lw v0,0(s8) -8002b1bc: 00000000 nop -8002b1c0: 24420001 addiu v0,v0,1 -8002b1c4: afc20000 sw v0,0(s8) -8002b1c8: 8fc20000 lw v0,0(s8) -8002b1cc: 00000000 nop -8002b1d0: 28420800 slti v0,v0,2048 -8002b1d4: 1440ffaf bnez v0,8002b094 -8002b1d8: 00000000 nop -malloc_keep_finding: - ; // Useless statement to make GCC not bail out... - } - -// We couldn't find anything, return NULL - return NULL; -8002b1dc: 00001021 move v0,zero -} -8002b1e0: 03c0e821 move sp,s8 -8002b1e4: 8fbe000c lw s8,12(sp) -8002b1e8: 27bd0010 addiu sp,sp,16 -8002b1ec: 03e00008 jr ra -8002b1f0: 00000000 nop - -8002b1f4 : - -void *calloc(size_t number, size_t size) -{ -8002b1f4: 27bdffd8 addiu sp,sp,-40 -8002b1f8: afbf0024 sw ra,36(sp) -8002b1fc: afbe0020 sw s8,32(sp) -8002b200: 03a0f021 move s8,sp -8002b204: afc40028 sw a0,40(s8) -8002b208: afc5002c sw a1,44(s8) - void *ptr = malloc(number * size); -8002b20c: 8fc30028 lw v1,40(s8) -8002b210: 8fc2002c lw v0,44(s8) -8002b214: 00000000 nop -8002b218: 00620018 mult v1,v0 -8002b21c: 00002012 mflo a0 -8002b220: 0c00ac10 jal 8002b040 -8002b224: 00000000 nop -8002b228: afc20010 sw v0,16(s8) - unsigned char *cptr = (unsigned char*)ptr; -8002b22c: 8fc20010 lw v0,16(s8) -8002b230: 00000000 nop -8002b234: afc20018 sw v0,24(s8) - int x; - - if(ptr == NULL) -8002b238: 8fc20010 lw v0,16(s8) -8002b23c: 00000000 nop -8002b240: 14400002 bnez v0,8002b24c -8002b244: 00000000 nop - ptr = NULL; -8002b248: afc00010 sw zero,16(s8) - - for(x = 0; x < (number * size); x++) -8002b24c: afc00014 sw zero,20(s8) -8002b250: 1000000a b 8002b27c -8002b254: 00000000 nop - cptr[x] = 0; -8002b258: 8fc20014 lw v0,20(s8) -8002b25c: 8fc30018 lw v1,24(s8) -8002b260: 00000000 nop -8002b264: 00621021 addu v0,v1,v0 -8002b268: a0400000 sb zero,0(v0) - int x; - - if(ptr == NULL) - ptr = NULL; - - for(x = 0; x < (number * size); x++) -8002b26c: 8fc20014 lw v0,20(s8) -8002b270: 00000000 nop -8002b274: 24420001 addiu v0,v0,1 -8002b278: afc20014 sw v0,20(s8) -8002b27c: 8fc30028 lw v1,40(s8) -8002b280: 8fc2002c lw v0,44(s8) -8002b284: 00000000 nop -8002b288: 00620018 mult v1,v0 -8002b28c: 8fc20014 lw v0,20(s8) -8002b290: 00001812 mflo v1 -8002b294: 0043102b sltu v0,v0,v1 -8002b298: 1440ffef bnez v0,8002b258 -8002b29c: 00000000 nop - cptr[x] = 0; - - return ptr; -8002b2a0: 8fc20010 lw v0,16(s8) -} -8002b2a4: 03c0e821 move sp,s8 -8002b2a8: 8fbf0024 lw ra,36(sp) -8002b2ac: 8fbe0020 lw s8,32(sp) -8002b2b0: 27bd0028 addiu sp,sp,40 -8002b2b4: 03e00008 jr ra -8002b2b8: 00000000 nop - -8002b2bc : - -void free(void *ptr) -{ -8002b2bc: 27bdffe0 addiu sp,sp,-32 -8002b2c0: afbf001c sw ra,28(sp) -8002b2c4: afbe0018 sw s8,24(sp) -8002b2c8: 03a0f021 move s8,sp -8002b2cc: afc40020 sw a0,32(s8) - dprintf("free(%x)\n", (unsigned int)ptr); - - unsigned int ptri = (unsigned int)ptr; -8002b2d0: 8fc20020 lw v0,32(s8) -8002b2d4: 00000000 nop -8002b2d8: afc20014 sw v0,20(s8) - ptri -= 0x80000000; -8002b2dc: 8fc30014 lw v1,20(s8) -8002b2e0: 3c028000 lui v0,0x8000 -8002b2e4: 00621021 addu v0,v1,v0 -8002b2e8: afc20014 sw v0,20(s8) - int x; - - if((ptri & 0x3ff) || (busy_pages[ptri>>10] == 0) || (alloc_size[ptri>>10] == 0)) -8002b2ec: 8fc20014 lw v0,20(s8) -8002b2f0: 00000000 nop -8002b2f4: 304203ff andi v0,v0,0x3ff -8002b2f8: 14400016 bnez v0,8002b354 -8002b2fc: 00000000 nop -8002b300: 8fc20014 lw v0,20(s8) -8002b304: 00000000 nop -8002b308: 00021a82 srl v1,v0,0xa -8002b30c: 3c028007 lui v0,0x8007 -8002b310: 2442136c addiu v0,v0,4972 -8002b314: 00621021 addu v0,v1,v0 -8002b318: 90420000 lbu v0,0(v0) -8002b31c: 00000000 nop -8002b320: 1040000c beqz v0,8002b354 -8002b324: 00000000 nop -8002b328: 8fc20014 lw v0,20(s8) -8002b32c: 00000000 nop -8002b330: 00021a82 srl v1,v0,0xa -8002b334: 3c028007 lui v0,0x8007 -8002b338: 00031880 sll v1,v1,0x2 -8002b33c: 2442f36c addiu v0,v0,-3220 -8002b340: 00621021 addu v0,v1,v0 -8002b344: 8c420000 lw v0,0(v0) -8002b348: 00000000 nop -8002b34c: 1440000b bnez v0,8002b37c -8002b350: 00000000 nop - { - // If the pointer address is not a multiplier of 1K, or the page - // is free, it means that memory not allocated by malloc() was passed to free. - // Print a warning message and return. - - printf("** free() ** : tried to free memory with invalid pointer at %x\n", -8002b354: 8fc30014 lw v1,20(s8) -8002b358: 3c028000 lui v0,0x8000 -8002b35c: 00621021 addu v0,v1,v0 -8002b360: 00402821 move a1,v0 -8002b364: 3c028004 lui v0,0x8004 -8002b368: 2444f9e0 addiu a0,v0,-1568 -8002b36c: 0c00ed8f jal 8003b63c -8002b370: 00000000 nop - ptri + 0x80000000); - - return; -8002b374: 10000027 b 8002b414 -8002b378: 00000000 nop - } - -// Divide ptri by 1024, getting initial page - - ptri>>=10; -8002b37c: 8fc20014 lw v0,20(s8) -8002b380: 00000000 nop -8002b384: 00021282 srl v0,v0,0xa -8002b388: afc20014 sw v0,20(s8) - -// Free pages - -// printf("alloc_size[%d] = %d\n", ptri, alloc_size[ptri]); - - for(x = 0; x < alloc_size[ptri]; x++) -8002b38c: afc00010 sw zero,16(s8) -8002b390: 1000000d b 8002b3c8 -8002b394: 00000000 nop - { - dprintf("ptri + x = %d\n", ptri + x); - busy_pages[ptri + x] = 0; -8002b398: 8fc30010 lw v1,16(s8) -8002b39c: 8fc20014 lw v0,20(s8) -8002b3a0: 00000000 nop -8002b3a4: 00621821 addu v1,v1,v0 -8002b3a8: 3c028007 lui v0,0x8007 -8002b3ac: 2442136c addiu v0,v0,4972 -8002b3b0: 00621021 addu v0,v1,v0 -8002b3b4: a0400000 sb zero,0(v0) - -// Free pages - -// printf("alloc_size[%d] = %d\n", ptri, alloc_size[ptri]); - - for(x = 0; x < alloc_size[ptri]; x++) -8002b3b8: 8fc20010 lw v0,16(s8) -8002b3bc: 00000000 nop -8002b3c0: 24420001 addiu v0,v0,1 -8002b3c4: afc20010 sw v0,16(s8) -8002b3c8: 3c028007 lui v0,0x8007 -8002b3cc: 8fc30014 lw v1,20(s8) -8002b3d0: 00000000 nop -8002b3d4: 00031880 sll v1,v1,0x2 -8002b3d8: 2442f36c addiu v0,v0,-3220 -8002b3dc: 00621021 addu v0,v1,v0 -8002b3e0: 8c430000 lw v1,0(v0) -8002b3e4: 8fc20010 lw v0,16(s8) -8002b3e8: 00000000 nop -8002b3ec: 0043102b sltu v0,v0,v1 -8002b3f0: 1440ffe9 bnez v0,8002b398 -8002b3f4: 00000000 nop - busy_pages[ptri + x] = 0; - } - -// Set allocation size to 0, finally freeing initial page - - alloc_size[ptri] = 0; -8002b3f8: 3c028007 lui v0,0x8007 -8002b3fc: 8fc30014 lw v1,20(s8) -8002b400: 00000000 nop -8002b404: 00031880 sll v1,v1,0x2 -8002b408: 2442f36c addiu v0,v0,-3220 -8002b40c: 00621021 addu v0,v1,v0 -8002b410: ac400000 sw zero,0(v0) - - /*for(x=150;x<170;x++) - printf("%d: %d, %d\n", x, busy_pages[x], alloc_size[x]);*/ -} -8002b414: 03c0e821 move sp,s8 -8002b418: 8fbf001c lw ra,28(sp) -8002b41c: 8fbe0018 lw s8,24(sp) -8002b420: 27bd0020 addiu sp,sp,32 -8002b424: 03e00008 jr ra -8002b428: 00000000 nop - -8002b42c : - -void *realloc(void *ptr, size_t size) -{ -8002b42c: 27bdffd8 addiu sp,sp,-40 -8002b430: afbf0024 sw ra,36(sp) -8002b434: afbe0020 sw s8,32(sp) -8002b438: 03a0f021 move s8,sp -8002b43c: afc40028 sw a0,40(s8) -8002b440: afc5002c sw a1,44(s8) - unsigned int ptri = (unsigned int)ptr; -8002b444: 8fc20028 lw v0,40(s8) -8002b448: 00000000 nop -8002b44c: afc20014 sw v0,20(s8) - int x; - void *newptr; - - if(ptr == NULL) -8002b450: 8fc20028 lw v0,40(s8) -8002b454: 00000000 nop -8002b458: 14400006 bnez v0,8002b474 -8002b45c: 00000000 nop - return malloc(size); -8002b460: 8fc4002c lw a0,44(s8) -8002b464: 0c00ac10 jal 8002b040 -8002b468: 00000000 nop -8002b46c: 1000009c b 8002b6e0 -8002b470: 00000000 nop - - ptri -= 0x80000000; -8002b474: 8fc30014 lw v1,20(s8) -8002b478: 3c028000 lui v0,0x8000 -8002b47c: 00621021 addu v0,v1,v0 -8002b480: afc20014 sw v0,20(s8) - - size |= 0x3ff; -8002b484: 8fc2002c lw v0,44(s8) -8002b488: 00000000 nop -8002b48c: 344203ff ori v0,v0,0x3ff -8002b490: afc2002c sw v0,44(s8) - size++; -8002b494: 8fc2002c lw v0,44(s8) -8002b498: 00000000 nop -8002b49c: 24420001 addiu v0,v0,1 -8002b4a0: afc2002c sw v0,44(s8) - - size>>=10; -8002b4a4: 8fc2002c lw v0,44(s8) -8002b4a8: 00000000 nop -8002b4ac: 00021282 srl v0,v0,0xa -8002b4b0: afc2002c sw v0,44(s8) - - if((ptri & 0x3ff) || (busy_pages[ptri>>10] == 0) || (alloc_size[ptri>>10] == 0)) -8002b4b4: 8fc20014 lw v0,20(s8) -8002b4b8: 00000000 nop -8002b4bc: 304203ff andi v0,v0,0x3ff -8002b4c0: 14400016 bnez v0,8002b51c -8002b4c4: 00000000 nop -8002b4c8: 8fc20014 lw v0,20(s8) -8002b4cc: 00000000 nop -8002b4d0: 00021a82 srl v1,v0,0xa -8002b4d4: 3c028007 lui v0,0x8007 -8002b4d8: 2442136c addiu v0,v0,4972 -8002b4dc: 00621021 addu v0,v1,v0 -8002b4e0: 90420000 lbu v0,0(v0) -8002b4e4: 00000000 nop -8002b4e8: 1040000c beqz v0,8002b51c -8002b4ec: 00000000 nop -8002b4f0: 8fc20014 lw v0,20(s8) -8002b4f4: 00000000 nop -8002b4f8: 00021a82 srl v1,v0,0xa -8002b4fc: 3c028007 lui v0,0x8007 -8002b500: 00031880 sll v1,v1,0x2 -8002b504: 2442f36c addiu v0,v0,-3220 -8002b508: 00621021 addu v0,v1,v0 -8002b50c: 8c420000 lw v0,0(v0) -8002b510: 00000000 nop -8002b514: 1440000c bnez v0,8002b548 -8002b518: 00000000 nop - { - // If the pointer address is not a multiplier of 1K, or the page - // is free, it means that memory not allocated by malloc() was passed to realloc. - // Print a warning message and return. - - printf("** realloc() ** : tried to reallocate memory with invalid pointer at %x\n", -8002b51c: 8fc30014 lw v1,20(s8) -8002b520: 3c028000 lui v0,0x8000 -8002b524: 00621021 addu v0,v1,v0 -8002b528: 00402821 move a1,v0 -8002b52c: 3c028004 lui v0,0x8004 -8002b530: 2444fa20 addiu a0,v0,-1504 -8002b534: 0c00ed8f jal 8003b63c -8002b538: 00000000 nop - ptri + 0x80000000); - - return NULL; -8002b53c: 00001021 move v0,zero -8002b540: 10000067 b 8002b6e0 -8002b544: 00000000 nop - } - -// Get page - - ptri>>=10; -8002b548: 8fc20014 lw v0,20(s8) -8002b54c: 00000000 nop -8002b550: 00021282 srl v0,v0,0xa -8002b554: afc20014 sw v0,20(s8) - - if(size < alloc_size[ptri]) // New size smaller than old size -8002b558: 3c028007 lui v0,0x8007 -8002b55c: 8fc30014 lw v1,20(s8) -8002b560: 00000000 nop -8002b564: 00031880 sll v1,v1,0x2 -8002b568: 2442f36c addiu v0,v0,-3220 -8002b56c: 00621021 addu v0,v1,v0 -8002b570: 8c430000 lw v1,0(v0) -8002b574: 8fc2002c lw v0,44(s8) -8002b578: 00000000 nop -8002b57c: 0043102b sltu v0,v0,v1 -8002b580: 10400029 beqz v0,8002b628 -8002b584: 00000000 nop - { - for(x = size; x < alloc_size[ptri]; x++) -8002b588: 8fc2002c lw v0,44(s8) -8002b58c: 00000000 nop -8002b590: afc20010 sw v0,16(s8) -8002b594: 1000000d b 8002b5cc -8002b598: 00000000 nop - busy_pages[ptri + x] = 0; -8002b59c: 8fc30010 lw v1,16(s8) -8002b5a0: 8fc20014 lw v0,20(s8) -8002b5a4: 00000000 nop -8002b5a8: 00621821 addu v1,v1,v0 -8002b5ac: 3c028007 lui v0,0x8007 -8002b5b0: 2442136c addiu v0,v0,4972 -8002b5b4: 00621021 addu v0,v1,v0 -8002b5b8: a0400000 sb zero,0(v0) - - ptri>>=10; - - if(size < alloc_size[ptri]) // New size smaller than old size - { - for(x = size; x < alloc_size[ptri]; x++) -8002b5bc: 8fc20010 lw v0,16(s8) -8002b5c0: 00000000 nop -8002b5c4: 24420001 addiu v0,v0,1 -8002b5c8: afc20010 sw v0,16(s8) -8002b5cc: 3c028007 lui v0,0x8007 -8002b5d0: 8fc30014 lw v1,20(s8) -8002b5d4: 00000000 nop -8002b5d8: 00031880 sll v1,v1,0x2 -8002b5dc: 2442f36c addiu v0,v0,-3220 -8002b5e0: 00621021 addu v0,v1,v0 -8002b5e4: 8c430000 lw v1,0(v0) -8002b5e8: 8fc20010 lw v0,16(s8) -8002b5ec: 00000000 nop -8002b5f0: 0043102b sltu v0,v0,v1 -8002b5f4: 1440ffe9 bnez v0,8002b59c -8002b5f8: 00000000 nop - busy_pages[ptri + x] = 0; - - alloc_size[ptri] = size; -8002b5fc: 3c028007 lui v0,0x8007 -8002b600: 8fc30014 lw v1,20(s8) -8002b604: 00000000 nop -8002b608: 00031880 sll v1,v1,0x2 -8002b60c: 2442f36c addiu v0,v0,-3220 -8002b610: 00621021 addu v0,v1,v0 -8002b614: 8fc3002c lw v1,44(s8) -8002b618: 00000000 nop -8002b61c: ac430000 sw v1,0(v0) -8002b620: 1000002e b 8002b6dc -8002b624: 00000000 nop - } - else if(size > alloc_size[ptri]) // New size bigger than old size -8002b628: 3c028007 lui v0,0x8007 -8002b62c: 8fc30014 lw v1,20(s8) -8002b630: 00000000 nop -8002b634: 00031880 sll v1,v1,0x2 -8002b638: 2442f36c addiu v0,v0,-3220 -8002b63c: 00621021 addu v0,v1,v0 -8002b640: 8c430000 lw v1,0(v0) -8002b644: 8fc2002c lw v0,44(s8) -8002b648: 00000000 nop -8002b64c: 0062102b sltu v0,v1,v0 -8002b650: 10400022 beqz v0,8002b6dc -8002b654: 00000000 nop - { - newptr = malloc(size * 1024); -8002b658: 8fc2002c lw v0,44(s8) -8002b65c: 00000000 nop -8002b660: 00021280 sll v0,v0,0xa -8002b664: 00402021 move a0,v0 -8002b668: 0c00ac10 jal 8002b040 -8002b66c: 00000000 nop -8002b670: afc20018 sw v0,24(s8) - - if(newptr == NULL) -8002b674: 8fc20018 lw v0,24(s8) -8002b678: 00000000 nop -8002b67c: 14400004 bnez v0,8002b690 -8002b680: 00000000 nop - return NULL; -8002b684: 00001021 move v0,zero -8002b688: 10000015 b 8002b6e0 -8002b68c: 00000000 nop - - memcpy(newptr, ptr, alloc_size[ptri]); -8002b690: 3c028007 lui v0,0x8007 -8002b694: 8fc30014 lw v1,20(s8) -8002b698: 00000000 nop -8002b69c: 00031880 sll v1,v1,0x2 -8002b6a0: 2442f36c addiu v0,v0,-3220 -8002b6a4: 00621021 addu v0,v1,v0 -8002b6a8: 8c420000 lw v0,0(v0) -8002b6ac: 00000000 nop -8002b6b0: 00403021 move a2,v0 -8002b6b4: 8fc50028 lw a1,40(s8) -8002b6b8: 8fc40018 lw a0,24(s8) -8002b6bc: 0c00d75e jal 80035d78 -8002b6c0: 00000000 nop - free(ptr); -8002b6c4: 8fc40028 lw a0,40(s8) -8002b6c8: 0c00acaf jal 8002b2bc -8002b6cc: 00000000 nop - - ptr = newptr; -8002b6d0: 8fc20018 lw v0,24(s8) -8002b6d4: 00000000 nop -8002b6d8: afc20028 sw v0,40(s8) - } - - return ptr; -8002b6dc: 8fc20028 lw v0,40(s8) -} -8002b6e0: 03c0e821 move sp,s8 -8002b6e4: 8fbf0024 lw ra,36(sp) -8002b6e8: 8fbe0020 lw s8,32(sp) -8002b6ec: 27bd0028 addiu sp,sp,40 -8002b6f0: 03e00008 jr ra -8002b6f4: 00000000 nop - -8002b6f8 : -double gs_vbuf[4][3]; - -static int __gs_autowait = 0; - -unsigned int PRFONT_SCALEX(int i) -{ -8002b6f8: 27bdfff8 addiu sp,sp,-8 -8002b6fc: afbe0004 sw s8,4(sp) -8002b700: 03a0f021 move s8,sp -8002b704: afc40008 sw a0,8(s8) - prfont_scale_x = i; -8002b708: 3c028007 lui v0,0x8007 -8002b70c: 8fc30008 lw v1,8(s8) -8002b710: 00000000 nop -8002b714: ac431ce0 sw v1,7392(v0) - return PRFONT_SCALE; -8002b718: 24020008 li v0,8 -} -8002b71c: 03c0e821 move sp,s8 -8002b720: 8fbe0004 lw s8,4(sp) -8002b724: 27bd0008 addiu sp,sp,8 -8002b728: 03e00008 jr ra -8002b72c: 00000000 nop - -8002b730 : - -unsigned int PRFONT_SCALEY(int i) -{ -8002b730: 27bdfff8 addiu sp,sp,-8 -8002b734: afbe0004 sw s8,4(sp) -8002b738: 03a0f021 move s8,sp -8002b73c: afc40008 sw a0,8(s8) - prfont_scale_y = i; -8002b740: 3c028007 lui v0,0x8007 -8002b744: 8fc30008 lw v1,8(s8) -8002b748: 00000000 nop -8002b74c: ac431ce4 sw v1,7396(v0) - return PRFONT_SCALE; -8002b750: 24020008 li v0,8 -} -8002b754: 03c0e821 move sp,s8 -8002b758: 8fbe0004 lw s8,4(sp) -8002b75c: 27bd0008 addiu sp,sp,8 -8002b760: 03e00008 jr ra -8002b764: 00000000 nop - -8002b768 : - -unsigned int PRFONT_RL(unsigned char f) -{ -8002b768: 27bdfff8 addiu sp,sp,-8 -8002b76c: afbe0004 sw s8,4(sp) -8002b770: 03a0f021 move s8,sp -8002b774: 00801021 move v0,a0 -8002b778: a3c20008 sb v0,8(s8) - prfont_rl = f; -8002b77c: 3c028004 lui v0,0x8004 -8002b780: 93c30008 lbu v1,8(s8) -8002b784: 00000000 nop -8002b788: a043255c sb v1,9564(v0) - return PRFONT_COLOR; -8002b78c: 24020020 li v0,32 -} -8002b790: 03c0e821 move sp,s8 -8002b794: 8fbe0004 lw s8,4(sp) -8002b798: 27bd0008 addiu sp,sp,8 -8002b79c: 03e00008 jr ra -8002b7a0: 00000000 nop - -8002b7a4 : - -unsigned int PRFONT_GL(unsigned char f) -{ -8002b7a4: 27bdfff8 addiu sp,sp,-8 -8002b7a8: afbe0004 sw s8,4(sp) -8002b7ac: 03a0f021 move s8,sp -8002b7b0: 00801021 move v0,a0 -8002b7b4: a3c20008 sb v0,8(s8) - prfont_gl = f; -8002b7b8: 3c028004 lui v0,0x8004 -8002b7bc: 93c30008 lbu v1,8(s8) -8002b7c0: 00000000 nop -8002b7c4: a043255d sb v1,9565(v0) - return PRFONT_COLOR; -8002b7c8: 24020020 li v0,32 -} -8002b7cc: 03c0e821 move sp,s8 -8002b7d0: 8fbe0004 lw s8,4(sp) -8002b7d4: 27bd0008 addiu sp,sp,8 -8002b7d8: 03e00008 jr ra -8002b7dc: 00000000 nop - -8002b7e0 : - -unsigned int PRFONT_BL(unsigned char f) -{ -8002b7e0: 27bdfff8 addiu sp,sp,-8 -8002b7e4: afbe0004 sw s8,4(sp) -8002b7e8: 03a0f021 move s8,sp -8002b7ec: 00801021 move v0,a0 -8002b7f0: a3c20008 sb v0,8(s8) - prfont_bl = f; -8002b7f4: 3c028004 lui v0,0x8004 -8002b7f8: 93c30008 lbu v1,8(s8) -8002b7fc: 00000000 nop -8002b800: a043255e sb v1,9566(v0) - return PRFONT_COLOR; -8002b804: 24020020 li v0,32 -} -8002b808: 03c0e821 move sp,s8 -8002b80c: 8fbe0004 lw s8,4(sp) -8002b810: 27bd0008 addiu sp,sp,8 -8002b814: 03e00008 jr ra -8002b818: 00000000 nop - -8002b81c : -static void gs_internal_vector_rotate(int x_a, int y_a, int z_a, double *v, double *n); - -static char gpu_stringbuf[512]; - -int gs_calculate_scaled_size(int size, int scale) -{ -8002b81c: 27bdfff8 addiu sp,sp,-8 -8002b820: afbe0004 sw s8,4(sp) -8002b824: 03a0f021 move s8,sp -8002b828: afc40008 sw a0,8(s8) -8002b82c: afc5000c sw a1,12(s8) - if(scale > 8) -8002b830: 8fc2000c lw v0,12(s8) -8002b834: 00000000 nop -8002b838: 28420009 slti v0,v0,9 -8002b83c: 1440000c bnez v0,8002b870 -8002b840: 00000000 nop - return (size * scale) / SCALE_ONE; -8002b844: 8fc30008 lw v1,8(s8) -8002b848: 8fc2000c lw v0,12(s8) -8002b84c: 00000000 nop -8002b850: 00620018 mult v1,v0 -8002b854: 00001012 mflo v0 -8002b858: 04410002 bgez v0,8002b864 -8002b85c: 00000000 nop -8002b860: 24420fff addiu v0,v0,4095 -8002b864: 00021303 sra v0,v0,0xc -8002b868: 1000002f b 8002b928 -8002b86c: 00000000 nop - else if(scale == 0) -8002b870: 8fc2000c lw v0,12(s8) -8002b874: 00000000 nop -8002b878: 14400004 bnez v0,8002b88c -8002b87c: 00000000 nop - return size; -8002b880: 8fc20008 lw v0,8(s8) -8002b884: 10000028 b 8002b928 -8002b888: 00000000 nop - else if(scale > 0) -8002b88c: 8fc2000c lw v0,12(s8) -8002b890: 00000000 nop -8002b894: 18400008 blez v0,8002b8b8 -8002b898: 00000000 nop - return size * scale; -8002b89c: 8fc30008 lw v1,8(s8) -8002b8a0: 8fc2000c lw v0,12(s8) -8002b8a4: 00000000 nop -8002b8a8: 00620018 mult v1,v0 -8002b8ac: 00001012 mflo v0 -8002b8b0: 1000001d b 8002b928 -8002b8b4: 00000000 nop - else if(scale > -8) -8002b8b8: 8fc2000c lw v0,12(s8) -8002b8bc: 00000000 nop -8002b8c0: 2842fff9 slti v0,v0,-7 -8002b8c4: 1440000d bnez v0,8002b8fc -8002b8c8: 00000000 nop - return size / (scale * -1); -8002b8cc: 8fc2000c lw v0,12(s8) -8002b8d0: 00000000 nop -8002b8d4: 00021023 negu v0,v0 -8002b8d8: 8fc30008 lw v1,8(s8) -8002b8dc: 00000000 nop -8002b8e0: 14400002 bnez v0,8002b8ec -8002b8e4: 0062001a div zero,v1,v0 -8002b8e8: 0007000d break 0x7 -8002b8ec: 00001010 mfhi v0 -8002b8f0: 00001012 mflo v0 -8002b8f4: 1000000c b 8002b928 -8002b8f8: 00000000 nop - - return (size * SCALE_ONE) / -scale; -8002b8fc: 8fc20008 lw v0,8(s8) -8002b900: 00000000 nop -8002b904: 00021b00 sll v1,v0,0xc -8002b908: 8fc2000c lw v0,12(s8) -8002b90c: 00000000 nop -8002b910: 00021023 negu v0,v0 -8002b914: 14400002 bnez v0,8002b920 -8002b918: 0062001a div zero,v1,v0 -8002b91c: 0007000d break 0x7 -8002b920: 00001010 mfhi v0 -8002b924: 00001012 mflo v0 -} -8002b928: 03c0e821 move sp,s8 -8002b92c: 8fbe0004 lw s8,4(sp) -8002b930: 27bd0008 addiu sp,sp,8 -8002b934: 03e00008 jr ra -8002b938: 00000000 nop - -8002b93c : - -void GsSetList(unsigned int *listptr) -{ -8002b93c: 27bdfff8 addiu sp,sp,-8 -8002b940: afbe0004 sw s8,4(sp) -8002b944: 03a0f021 move s8,sp -8002b948: afc40008 sw a0,8(s8) - linked_list = listptr; -8002b94c: 3c028007 lui v0,0x8007 -8002b950: 8fc30008 lw v1,8(s8) -8002b954: 00000000 nop -8002b958: ac431cd4 sw v1,7380(v0) - linked_list_pos = 0; -8002b95c: 3c028007 lui v0,0x8007 -8002b960: ac401cd8 sw zero,7384(v0) -} -8002b964: 00000000 nop -8002b968: 03c0e821 move sp,s8 -8002b96c: 8fbe0004 lw s8,4(sp) -8002b970: 27bd0008 addiu sp,sp,8 -8002b974: 03e00008 jr ra -8002b978: 00000000 nop - -8002b97c : - -void GsDrawList() -{ -8002b97c: 27bdffe8 addiu sp,sp,-24 -8002b980: afbf0014 sw ra,20(sp) -8002b984: afbe0010 sw s8,16(sp) -8002b988: 03a0f021 move s8,sp - if(PSX_GetInitFlags() & PSX_INIT_NOBIOS) -8002b98c: 0c00d4c4 jal 80035310 -8002b990: 00000000 nop -8002b994: 30420004 andi v0,v0,0x4 -8002b998: 10400005 beqz v0,8002b9b0 -8002b99c: 00000000 nop - { -// DMA is unreliable right now, use PIO. - GsDrawListPIO(); -8002b9a0: 0c00aeaa jal 8002baa8 -8002b9a4: 00000000 nop - return; -8002b9a8: 10000039 b 8002ba90 -8002b9ac: 00000000 nop - } - - //int x = 0; - - /* Put a terminator, so the link listed ends. */ - linked_list[linked_list_pos] = 0x00ffffff; -8002b9b0: 3c028007 lui v0,0x8007 -8002b9b4: 8c431cd4 lw v1,7380(v0) -8002b9b8: 3c028007 lui v0,0x8007 -8002b9bc: 8c421cd8 lw v0,7384(v0) -8002b9c0: 00000000 nop -8002b9c4: 00021080 sll v0,v0,0x2 -8002b9c8: 00621021 addu v0,v1,v0 -8002b9cc: 3c0300ff lui v1,0xff -8002b9d0: 3463ffff ori v1,v1,0xffff -8002b9d4: ac430000 sw v1,0(v0) - -// do{printf("linked_list[%d] = %08x\n", x, linked_list[x]);}while(linked_list[x++]!=0xffffff); - - //#warning "Let's hope this works well." - - while(!(GPU_CONTROL_PORT & (1<<0x1a))); /* Wait for the GPU to finish -8002b9d8: 00000000 nop -8002b9dc: 3c021f80 lui v0,0x1f80 -8002b9e0: 34421814 ori v0,v0,0x1814 -8002b9e4: 8c430000 lw v1,0(v0) -8002b9e8: 3c020400 lui v0,0x400 -8002b9ec: 00621024 and v0,v1,v0 -8002b9f0: 1040fffa beqz v0,8002b9dc -8002b9f4: 00000000 nop - * drawing primitives. */ - while(!(GPU_CONTROL_PORT & (1<<0x1c))); /* Wait for the GPU to be free */ -8002b9f8: 00000000 nop -8002b9fc: 3c021f80 lui v0,0x1f80 -8002ba00: 34421814 ori v0,v0,0x1814 -8002ba04: 8c430000 lw v1,0(v0) -8002ba08: 3c021000 lui v0,0x1000 -8002ba0c: 00621024 and v0,v1,v0 -8002ba10: 1040fffa beqz v0,8002b9fc -8002ba14: 00000000 nop - - gpu_ctrl(4, 2); // DMA CPU->GPU mode -8002ba18: 24050002 li a1,2 -8002ba1c: 24040004 li a0,4 -8002ba20: 0c00bb8b jal 8002ee2c -8002ba24: 00000000 nop - D2_MADR = (unsigned int)linked_list; -8002ba28: 3c021f80 lui v0,0x1f80 -8002ba2c: 344210a0 ori v0,v0,0x10a0 -8002ba30: 3c038007 lui v1,0x8007 -8002ba34: 8c631cd4 lw v1,7380(v1) -8002ba38: 00000000 nop -8002ba3c: ac430000 sw v1,0(v0) - D2_BCR = 0; -8002ba40: 3c021f80 lui v0,0x1f80 -8002ba44: 344210a4 ori v0,v0,0x10a4 -8002ba48: ac400000 sw zero,0(v0) - D2_CHCR = (1<<0xa)|1|(1<<0x18); -8002ba4c: 3c021f80 lui v0,0x1f80 -8002ba50: 344210a8 ori v0,v0,0x10a8 -8002ba54: 3c030100 lui v1,0x100 -8002ba58: 34630401 ori v1,v1,0x401 -8002ba5c: ac430000 sw v1,0(v0) - - linked_list_pos = 0; -8002ba60: 3c028007 lui v0,0x8007 -8002ba64: ac401cd8 sw zero,7384(v0) - - //if(PSX_GetInitFlags() & PSX_INIT_NOBIOS) - // __psxsdk_gpu_dma_finished = 0; - - if(__gs_autowait) -8002ba68: 3c028007 lui v0,0x8007 -8002ba6c: 8c421ce8 lw v0,7400(v0) -8002ba70: 00000000 nop -8002ba74: 10400006 beqz v0,8002ba90 -8002ba78: 00000000 nop - while(GsIsDrawing()); -8002ba7c: 00000000 nop -8002ba80: 0c00bf9f jal 8002fe7c -8002ba84: 00000000 nop -8002ba88: 1440fffd bnez v0,8002ba80 -8002ba8c: 00000000 nop -} -8002ba90: 03c0e821 move sp,s8 -8002ba94: 8fbf0014 lw ra,20(sp) -8002ba98: 8fbe0010 lw s8,16(sp) -8002ba9c: 27bd0018 addiu sp,sp,24 -8002baa0: 03e00008 jr ra -8002baa4: 00000000 nop - -8002baa8 : - -void GsDrawListPIO() -{ -8002baa8: 27bdffd8 addiu sp,sp,-40 -8002baac: afbf0024 sw ra,36(sp) -8002bab0: afbe0020 sw s8,32(sp) -8002bab4: 03a0f021 move s8,sp - //linked_list[linked_list_pos] = 0x00ffffff; - int pos = 0; -8002bab8: afc00010 sw zero,16(s8) - int sz = 0; -8002babc: afc00018 sw zero,24(s8) - int x; - - while(!(GPU_CONTROL_PORT & (1<<0x1c))); -8002bac0: 00000000 nop -8002bac4: 3c021f80 lui v0,0x1f80 -8002bac8: 34421814 ori v0,v0,0x1814 -8002bacc: 8c430000 lw v1,0(v0) -8002bad0: 3c021000 lui v0,0x1000 -8002bad4: 00621024 and v0,v1,v0 -8002bad8: 1040fffa beqz v0,8002bac4 -8002badc: 00000000 nop - // Disable DMA - GPU_CONTROL_PORT = 0x04000000; -8002bae0: 3c021f80 lui v0,0x1f80 -8002bae4: 34421814 ori v0,v0,0x1814 -8002bae8: 3c030400 lui v1,0x400 -8002baec: ac430000 sw v1,0(v0) - - - while(pos < linked_list_pos) -8002baf0: 10000033 b 8002bbc0 -8002baf4: 00000000 nop - { - while(!(GPU_CONTROL_PORT & (1<<0x1c))); -8002baf8: 00000000 nop -8002bafc: 3c021f80 lui v0,0x1f80 -8002bb00: 34421814 ori v0,v0,0x1814 -8002bb04: 8c430000 lw v1,0(v0) -8002bb08: 3c021000 lui v0,0x1000 -8002bb0c: 00621024 and v0,v1,v0 -8002bb10: 1040fffa beqz v0,8002bafc -8002bb14: 00000000 nop - - GPU_DATA_PORT = 0x01000000; // Reset data port -8002bb18: 3c021f80 lui v0,0x1f80 -8002bb1c: 34421810 ori v0,v0,0x1810 -8002bb20: 3c030100 lui v1,0x100 -8002bb24: ac430000 sw v1,0(v0) - - sz = linked_list[pos++] >> 24; -8002bb28: 3c028007 lui v0,0x8007 -8002bb2c: 8c431cd4 lw v1,7380(v0) -8002bb30: 8fc20010 lw v0,16(s8) -8002bb34: 00000000 nop -8002bb38: 24440001 addiu a0,v0,1 -8002bb3c: afc40010 sw a0,16(s8) -8002bb40: 00021080 sll v0,v0,0x2 -8002bb44: 00621021 addu v0,v1,v0 -8002bb48: 8c420000 lw v0,0(v0) -8002bb4c: 00000000 nop -8002bb50: 00021602 srl v0,v0,0x18 -8002bb54: afc20018 sw v0,24(s8) - - for(x = 0; x < sz; x++) -8002bb58: afc00014 sw zero,20(s8) -8002bb5c: 10000012 b 8002bba8 -8002bb60: 00000000 nop - GPU_DATA_PORT = linked_list[pos++]; -8002bb64: 3c021f80 lui v0,0x1f80 -8002bb68: 34431810 ori v1,v0,0x1810 -8002bb6c: 3c028007 lui v0,0x8007 -8002bb70: 8c441cd4 lw a0,7380(v0) -8002bb74: 8fc20010 lw v0,16(s8) -8002bb78: 00000000 nop -8002bb7c: 24450001 addiu a1,v0,1 -8002bb80: afc50010 sw a1,16(s8) -8002bb84: 00021080 sll v0,v0,0x2 -8002bb88: 00821021 addu v0,a0,v0 -8002bb8c: 8c420000 lw v0,0(v0) -8002bb90: 00000000 nop -8002bb94: ac620000 sw v0,0(v1) - - GPU_DATA_PORT = 0x01000000; // Reset data port - - sz = linked_list[pos++] >> 24; - - for(x = 0; x < sz; x++) -8002bb98: 8fc20014 lw v0,20(s8) -8002bb9c: 00000000 nop -8002bba0: 24420001 addiu v0,v0,1 -8002bba4: afc20014 sw v0,20(s8) -8002bba8: 8fc30014 lw v1,20(s8) -8002bbac: 8fc20018 lw v0,24(s8) -8002bbb0: 00000000 nop -8002bbb4: 0062102a slt v0,v1,v0 -8002bbb8: 1440ffea bnez v0,8002bb64 -8002bbbc: 00000000 nop - while(!(GPU_CONTROL_PORT & (1<<0x1c))); - // Disable DMA - GPU_CONTROL_PORT = 0x04000000; - - - while(pos < linked_list_pos) -8002bbc0: 8fc30010 lw v1,16(s8) -8002bbc4: 3c028007 lui v0,0x8007 -8002bbc8: 8c421cd8 lw v0,7384(v0) -8002bbcc: 00000000 nop -8002bbd0: 0062102b sltu v0,v1,v0 -8002bbd4: 1440ffc8 bnez v0,8002baf8 -8002bbd8: 00000000 nop - - for(x = 0; x < sz; x++) - GPU_DATA_PORT = linked_list[pos++]; - } - - linked_list_pos = 0; -8002bbdc: 3c028007 lui v0,0x8007 -8002bbe0: ac401cd8 sw zero,7384(v0) -// GPU_DATA_PORT = 0xE6000000; // Disable masking stuff -// gpu_data_ctrl(2, ((b&0xff)<<16)|((g&0xff)<<8)|r); -// GPU_DATA_PORT = (y<<16)|x; -// GPU_DATA_PORT = (h<<16)|w; - if(__gs_autowait) -8002bbe4: 3c028007 lui v0,0x8007 -8002bbe8: 8c421ce8 lw v0,7400(v0) -8002bbec: 00000000 nop -8002bbf0: 10400006 beqz v0,8002bc0c -8002bbf4: 00000000 nop - while(GsIsDrawing()); -8002bbf8: 00000000 nop -8002bbfc: 0c00bf9f jal 8002fe7c -8002bc00: 00000000 nop -8002bc04: 1440fffd bnez v0,8002bbfc -8002bc08: 00000000 nop -} -8002bc0c: 00000000 nop -8002bc10: 03c0e821 move sp,s8 -8002bc14: 8fbf0024 lw ra,36(sp) -8002bc18: 8fbe0020 lw s8,32(sp) -8002bc1c: 27bd0028 addiu sp,sp,40 -8002bc20: 03e00008 jr ra -8002bc24: 00000000 nop - -8002bc28 : - -void GsSortPoly3(GsPoly3 *poly3) -{ -8002bc28: 27bdffd8 addiu sp,sp,-40 -8002bc2c: afbf0024 sw ra,36(sp) -8002bc30: afbe0020 sw s8,32(sp) -8002bc34: 03a0f021 move s8,sp -8002bc38: afc40028 sw a0,40(s8) - int orig_pos = linked_list_pos; -8002bc3c: 3c028007 lui v0,0x8007 -8002bc40: 8c421cd8 lw v0,7384(v0) -8002bc44: 00000000 nop -8002bc48: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x20; -8002bc4c: 24020020 li v0,32 -8002bc50: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(0, poly3->attribute, &pkt); -8002bc54: 8fc20028 lw v0,40(s8) -8002bc58: 00000000 nop -8002bc5c: 8c420010 lw v0,16(v0) -8002bc60: 27c3001c addiu v1,s8,28 -8002bc64: 00603021 move a2,v1 -8002bc68: 00402821 move a1,v0 -8002bc6c: 00002021 move a0,zero -8002bc70: 0c00bbd0 jal 8002ef40 -8002bc74: 00000000 nop -8002bc78: afc20018 sw v0,24(s8) - - linked_list[linked_list_pos++] = 0x05000000; -8002bc7c: 3c028007 lui v0,0x8007 -8002bc80: 8c431cd4 lw v1,7380(v0) -8002bc84: 3c028007 lui v0,0x8007 -8002bc88: 8c421cd8 lw v0,7384(v0) -8002bc8c: 00000000 nop -8002bc90: 24450001 addiu a1,v0,1 -8002bc94: 3c048007 lui a0,0x8007 -8002bc98: ac851cd8 sw a1,7384(a0) -8002bc9c: 00021080 sll v0,v0,0x2 -8002bca0: 00621021 addu v0,v1,v0 -8002bca4: 3c030500 lui v1,0x500 -8002bca8: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002bcac: 3c028007 lui v0,0x8007 -8002bcb0: 8c431cd4 lw v1,7380(v0) -8002bcb4: 3c028007 lui v0,0x8007 -8002bcb8: 8c421cd8 lw v0,7384(v0) -8002bcbc: 00000000 nop -8002bcc0: 24450001 addiu a1,v0,1 -8002bcc4: 3c048007 lui a0,0x8007 -8002bcc8: ac851cd8 sw a1,7384(a0) -8002bccc: 00021080 sll v0,v0,0x2 -8002bcd0: 00621021 addu v0,v1,v0 -8002bcd4: 8fc30018 lw v1,24(s8) -8002bcd8: 00000000 nop -8002bcdc: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (pkt<<24)|(poly3->b<<16)|(poly3->g<<8)|(poly3->r); -8002bce0: 3c028007 lui v0,0x8007 -8002bce4: 8c431cd4 lw v1,7380(v0) -8002bce8: 3c028007 lui v0,0x8007 -8002bcec: 8c421cd8 lw v0,7384(v0) -8002bcf0: 00000000 nop -8002bcf4: 24450001 addiu a1,v0,1 -8002bcf8: 3c048007 lui a0,0x8007 -8002bcfc: ac851cd8 sw a1,7384(a0) -8002bd00: 00021080 sll v0,v0,0x2 -8002bd04: 00621021 addu v0,v1,v0 -8002bd08: 93c3001c lbu v1,28(s8) -8002bd0c: 00000000 nop -8002bd10: 00032600 sll a0,v1,0x18 -8002bd14: 8fc30028 lw v1,40(s8) -8002bd18: 00000000 nop -8002bd1c: 90630002 lbu v1,2(v1) -8002bd20: 00000000 nop -8002bd24: 00031c00 sll v1,v1,0x10 -8002bd28: 00832025 or a0,a0,v1 -8002bd2c: 8fc30028 lw v1,40(s8) -8002bd30: 00000000 nop -8002bd34: 90630001 lbu v1,1(v1) -8002bd38: 00000000 nop -8002bd3c: 00031a00 sll v1,v1,0x8 -8002bd40: 00831825 or v1,a0,v1 -8002bd44: 8fc40028 lw a0,40(s8) -8002bd48: 00000000 nop -8002bd4c: 90840000 lbu a0,0(a0) -8002bd50: 00000000 nop -8002bd54: 00641825 or v1,v1,a0 -8002bd58: ac430000 sw v1,0(v0) - - for(x = 0; x < 3; x++) -8002bd5c: afc00010 sw zero,16(s8) -8002bd60: 10000025 b 8002bdf8 -8002bd64: 00000000 nop - linked_list[linked_list_pos++] = ((poly3->y[x]&0x7ff)<<16)|(poly3->x[x]&0x7ff); -8002bd68: 3c028007 lui v0,0x8007 -8002bd6c: 8c431cd4 lw v1,7380(v0) -8002bd70: 3c028007 lui v0,0x8007 -8002bd74: 8c421cd8 lw v0,7384(v0) -8002bd78: 00000000 nop -8002bd7c: 24450001 addiu a1,v0,1 -8002bd80: 3c048007 lui a0,0x8007 -8002bd84: ac851cd8 sw a1,7384(a0) -8002bd88: 00021080 sll v0,v0,0x2 -8002bd8c: 00621821 addu v1,v1,v0 -8002bd90: 8fc40028 lw a0,40(s8) -8002bd94: 8fc20010 lw v0,16(s8) -8002bd98: 00000000 nop -8002bd9c: 24420004 addiu v0,v0,4 -8002bda0: 00021040 sll v0,v0,0x1 -8002bda4: 00821021 addu v0,a0,v0 -8002bda8: 84420002 lh v0,2(v0) -8002bdac: 00000000 nop -8002bdb0: 3042ffff andi v0,v0,0xffff -8002bdb4: 304207ff andi v0,v0,0x7ff -8002bdb8: 00022400 sll a0,v0,0x10 -8002bdbc: 8fc50028 lw a1,40(s8) -8002bdc0: 8fc20010 lw v0,16(s8) -8002bdc4: 00000000 nop -8002bdc8: 00021040 sll v0,v0,0x1 -8002bdcc: 00a21021 addu v0,a1,v0 -8002bdd0: 84420004 lh v0,4(v0) -8002bdd4: 00000000 nop -8002bdd8: 3042ffff andi v0,v0,0xffff -8002bddc: 304207ff andi v0,v0,0x7ff -8002bde0: 00821025 or v0,a0,v0 -8002bde4: ac620000 sw v0,0(v1) - - linked_list[linked_list_pos++] = 0x05000000; - linked_list[linked_list_pos++] = md; - linked_list[linked_list_pos++] = (pkt<<24)|(poly3->b<<16)|(poly3->g<<8)|(poly3->r); - - for(x = 0; x < 3; x++) -8002bde8: 8fc20010 lw v0,16(s8) -8002bdec: 00000000 nop -8002bdf0: 24420001 addiu v0,v0,1 -8002bdf4: afc20010 sw v0,16(s8) -8002bdf8: 8fc20010 lw v0,16(s8) -8002bdfc: 00000000 nop -8002be00: 28420003 slti v0,v0,3 -8002be04: 1440ffd8 bnez v0,8002bd68 -8002be08: 00000000 nop - linked_list[linked_list_pos++] = ((poly3->y[x]&0x7ff)<<16)|(poly3->x[x]&0x7ff); - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002be0c: 3c028007 lui v0,0x8007 -8002be10: 8c431cd4 lw v1,7380(v0) -8002be14: 8fc20014 lw v0,20(s8) -8002be18: 00000000 nop -8002be1c: 00021080 sll v0,v0,0x2 -8002be20: 00621021 addu v0,v1,v0 -8002be24: 3c038007 lui v1,0x8007 -8002be28: 8c641cd4 lw a0,7380(v1) -8002be2c: 8fc30014 lw v1,20(s8) -8002be30: 00000000 nop -8002be34: 00031880 sll v1,v1,0x2 -8002be38: 00831821 addu v1,a0,v1 -8002be3c: 8c640000 lw a0,0(v1) -8002be40: 3c038007 lui v1,0x8007 -8002be44: 8c651cd4 lw a1,7380(v1) -8002be48: 3c038007 lui v1,0x8007 -8002be4c: 8c631cd8 lw v1,7384(v1) -8002be50: 00000000 nop -8002be54: 00031880 sll v1,v1,0x2 -8002be58: 00a31821 addu v1,a1,v1 -8002be5c: 00602821 move a1,v1 -8002be60: 3c0300ff lui v1,0xff -8002be64: 3463ffff ori v1,v1,0xffff -8002be68: 00a31824 and v1,a1,v1 -8002be6c: 00831825 or v1,a0,v1 -8002be70: ac430000 sw v1,0(v0) -} -8002be74: 00000000 nop -8002be78: 03c0e821 move sp,s8 -8002be7c: 8fbf0024 lw ra,36(sp) -8002be80: 8fbe0020 lw s8,32(sp) -8002be84: 27bd0028 addiu sp,sp,40 -8002be88: 03e00008 jr ra -8002be8c: 00000000 nop - -8002be90 : - -void GsSortPoly4(GsPoly4 *poly4) -{ -8002be90: 27bdffd8 addiu sp,sp,-40 -8002be94: afbf0024 sw ra,36(sp) -8002be98: afbe0020 sw s8,32(sp) -8002be9c: 03a0f021 move s8,sp -8002bea0: afc40028 sw a0,40(s8) - int orig_pos = linked_list_pos; -8002bea4: 3c028007 lui v0,0x8007 -8002bea8: 8c421cd8 lw v0,7384(v0) -8002beac: 00000000 nop -8002beb0: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x28; -8002beb4: 24020028 li v0,40 -8002beb8: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(0, poly4->attribute, &pkt); -8002bebc: 8fc20028 lw v0,40(s8) -8002bec0: 00000000 nop -8002bec4: 8c420014 lw v0,20(v0) -8002bec8: 27c3001c addiu v1,s8,28 -8002becc: 00603021 move a2,v1 -8002bed0: 00402821 move a1,v0 -8002bed4: 00002021 move a0,zero -8002bed8: 0c00bbd0 jal 8002ef40 -8002bedc: 00000000 nop -8002bee0: afc20018 sw v0,24(s8) - - linked_list[linked_list_pos++] = 0x06000000; -8002bee4: 3c028007 lui v0,0x8007 -8002bee8: 8c431cd4 lw v1,7380(v0) -8002beec: 3c028007 lui v0,0x8007 -8002bef0: 8c421cd8 lw v0,7384(v0) -8002bef4: 00000000 nop -8002bef8: 24450001 addiu a1,v0,1 -8002befc: 3c048007 lui a0,0x8007 -8002bf00: ac851cd8 sw a1,7384(a0) -8002bf04: 00021080 sll v0,v0,0x2 -8002bf08: 00621021 addu v0,v1,v0 -8002bf0c: 3c030600 lui v1,0x600 -8002bf10: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002bf14: 3c028007 lui v0,0x8007 -8002bf18: 8c431cd4 lw v1,7380(v0) -8002bf1c: 3c028007 lui v0,0x8007 -8002bf20: 8c421cd8 lw v0,7384(v0) -8002bf24: 00000000 nop -8002bf28: 24450001 addiu a1,v0,1 -8002bf2c: 3c048007 lui a0,0x8007 -8002bf30: ac851cd8 sw a1,7384(a0) -8002bf34: 00021080 sll v0,v0,0x2 -8002bf38: 00621021 addu v0,v1,v0 -8002bf3c: 8fc30018 lw v1,24(s8) -8002bf40: 00000000 nop -8002bf44: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (pkt<<24)|(poly4->b<<16)|(poly4->g<<8)|(poly4->r); -8002bf48: 3c028007 lui v0,0x8007 -8002bf4c: 8c431cd4 lw v1,7380(v0) -8002bf50: 3c028007 lui v0,0x8007 -8002bf54: 8c421cd8 lw v0,7384(v0) -8002bf58: 00000000 nop -8002bf5c: 24450001 addiu a1,v0,1 -8002bf60: 3c048007 lui a0,0x8007 -8002bf64: ac851cd8 sw a1,7384(a0) -8002bf68: 00021080 sll v0,v0,0x2 -8002bf6c: 00621021 addu v0,v1,v0 -8002bf70: 93c3001c lbu v1,28(s8) -8002bf74: 00000000 nop -8002bf78: 00032600 sll a0,v1,0x18 -8002bf7c: 8fc30028 lw v1,40(s8) -8002bf80: 00000000 nop -8002bf84: 90630002 lbu v1,2(v1) -8002bf88: 00000000 nop -8002bf8c: 00031c00 sll v1,v1,0x10 -8002bf90: 00832025 or a0,a0,v1 -8002bf94: 8fc30028 lw v1,40(s8) -8002bf98: 00000000 nop -8002bf9c: 90630001 lbu v1,1(v1) -8002bfa0: 00000000 nop -8002bfa4: 00031a00 sll v1,v1,0x8 -8002bfa8: 00831825 or v1,a0,v1 -8002bfac: 8fc40028 lw a0,40(s8) -8002bfb0: 00000000 nop -8002bfb4: 90840000 lbu a0,0(a0) -8002bfb8: 00000000 nop -8002bfbc: 00641825 or v1,v1,a0 -8002bfc0: ac430000 sw v1,0(v0) - - for(x = 0; x < 4; x++) -8002bfc4: afc00010 sw zero,16(s8) -8002bfc8: 10000025 b 8002c060 -8002bfcc: 00000000 nop - linked_list[linked_list_pos++] = ((poly4->y[x]&0x7ff)<<16)|(poly4->x[x]&0x7ff); -8002bfd0: 3c028007 lui v0,0x8007 -8002bfd4: 8c431cd4 lw v1,7380(v0) -8002bfd8: 3c028007 lui v0,0x8007 -8002bfdc: 8c421cd8 lw v0,7384(v0) -8002bfe0: 00000000 nop -8002bfe4: 24450001 addiu a1,v0,1 -8002bfe8: 3c048007 lui a0,0x8007 -8002bfec: ac851cd8 sw a1,7384(a0) -8002bff0: 00021080 sll v0,v0,0x2 -8002bff4: 00621821 addu v1,v1,v0 -8002bff8: 8fc40028 lw a0,40(s8) -8002bffc: 8fc20010 lw v0,16(s8) -8002c000: 00000000 nop -8002c004: 24420004 addiu v0,v0,4 -8002c008: 00021040 sll v0,v0,0x1 -8002c00c: 00821021 addu v0,a0,v0 -8002c010: 84420004 lh v0,4(v0) -8002c014: 00000000 nop -8002c018: 3042ffff andi v0,v0,0xffff -8002c01c: 304207ff andi v0,v0,0x7ff -8002c020: 00022400 sll a0,v0,0x10 -8002c024: 8fc50028 lw a1,40(s8) -8002c028: 8fc20010 lw v0,16(s8) -8002c02c: 00000000 nop -8002c030: 00021040 sll v0,v0,0x1 -8002c034: 00a21021 addu v0,a1,v0 -8002c038: 84420004 lh v0,4(v0) -8002c03c: 00000000 nop -8002c040: 3042ffff andi v0,v0,0xffff -8002c044: 304207ff andi v0,v0,0x7ff -8002c048: 00821025 or v0,a0,v0 -8002c04c: ac620000 sw v0,0(v1) - - linked_list[linked_list_pos++] = 0x06000000; - linked_list[linked_list_pos++] = md; - linked_list[linked_list_pos++] = (pkt<<24)|(poly4->b<<16)|(poly4->g<<8)|(poly4->r); - - for(x = 0; x < 4; x++) -8002c050: 8fc20010 lw v0,16(s8) -8002c054: 00000000 nop -8002c058: 24420001 addiu v0,v0,1 -8002c05c: afc20010 sw v0,16(s8) -8002c060: 8fc20010 lw v0,16(s8) -8002c064: 00000000 nop -8002c068: 28420004 slti v0,v0,4 -8002c06c: 1440ffd8 bnez v0,8002bfd0 -8002c070: 00000000 nop - linked_list[linked_list_pos++] = ((poly4->y[x]&0x7ff)<<16)|(poly4->x[x]&0x7ff); - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002c074: 3c028007 lui v0,0x8007 -8002c078: 8c431cd4 lw v1,7380(v0) -8002c07c: 8fc20014 lw v0,20(s8) -8002c080: 00000000 nop -8002c084: 00021080 sll v0,v0,0x2 -8002c088: 00621021 addu v0,v1,v0 -8002c08c: 3c038007 lui v1,0x8007 -8002c090: 8c641cd4 lw a0,7380(v1) -8002c094: 8fc30014 lw v1,20(s8) -8002c098: 00000000 nop -8002c09c: 00031880 sll v1,v1,0x2 -8002c0a0: 00831821 addu v1,a0,v1 -8002c0a4: 8c640000 lw a0,0(v1) -8002c0a8: 3c038007 lui v1,0x8007 -8002c0ac: 8c651cd4 lw a1,7380(v1) -8002c0b0: 3c038007 lui v1,0x8007 -8002c0b4: 8c631cd8 lw v1,7384(v1) -8002c0b8: 00000000 nop -8002c0bc: 00031880 sll v1,v1,0x2 -8002c0c0: 00a31821 addu v1,a1,v1 -8002c0c4: 00602821 move a1,v1 -8002c0c8: 3c0300ff lui v1,0xff -8002c0cc: 3463ffff ori v1,v1,0xffff -8002c0d0: 00a31824 and v1,a1,v1 -8002c0d4: 00831825 or v1,a0,v1 -8002c0d8: ac430000 sw v1,0(v0) -} -8002c0dc: 00000000 nop -8002c0e0: 03c0e821 move sp,s8 -8002c0e4: 8fbf0024 lw ra,36(sp) -8002c0e8: 8fbe0020 lw s8,32(sp) -8002c0ec: 27bd0028 addiu sp,sp,40 -8002c0f0: 03e00008 jr ra -8002c0f4: 00000000 nop - -8002c0f8 : - -void GsSortGPoly3(GsGPoly3 *poly3) -{ -8002c0f8: 27bdffd8 addiu sp,sp,-40 -8002c0fc: afbf0024 sw ra,36(sp) -8002c100: afbe0020 sw s8,32(sp) -8002c104: 03a0f021 move s8,sp -8002c108: afc40028 sw a0,40(s8) - // PKT 0x30 - - int orig_pos = linked_list_pos; -8002c10c: 3c028007 lui v0,0x8007 -8002c110: 8c421cd8 lw v0,7384(v0) -8002c114: 00000000 nop -8002c118: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x30; -8002c11c: 24020030 li v0,48 -8002c120: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(0, poly3->attribute, &pkt); -8002c124: 8fc20028 lw v0,40(s8) -8002c128: 00000000 nop -8002c12c: 8c420018 lw v0,24(v0) -8002c130: 27c3001c addiu v1,s8,28 -8002c134: 00603021 move a2,v1 -8002c138: 00402821 move a1,v0 -8002c13c: 00002021 move a0,zero -8002c140: 0c00bbd0 jal 8002ef40 -8002c144: 00000000 nop -8002c148: afc20018 sw v0,24(s8) - - linked_list[linked_list_pos++] = 0x07000000; -8002c14c: 3c028007 lui v0,0x8007 -8002c150: 8c431cd4 lw v1,7380(v0) -8002c154: 3c028007 lui v0,0x8007 -8002c158: 8c421cd8 lw v0,7384(v0) -8002c15c: 00000000 nop -8002c160: 24450001 addiu a1,v0,1 -8002c164: 3c048007 lui a0,0x8007 -8002c168: ac851cd8 sw a1,7384(a0) -8002c16c: 00021080 sll v0,v0,0x2 -8002c170: 00621021 addu v0,v1,v0 -8002c174: 3c030700 lui v1,0x700 -8002c178: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002c17c: 3c028007 lui v0,0x8007 -8002c180: 8c431cd4 lw v1,7380(v0) -8002c184: 3c028007 lui v0,0x8007 -8002c188: 8c421cd8 lw v0,7384(v0) -8002c18c: 00000000 nop -8002c190: 24450001 addiu a1,v0,1 -8002c194: 3c048007 lui a0,0x8007 -8002c198: ac851cd8 sw a1,7384(a0) -8002c19c: 00021080 sll v0,v0,0x2 -8002c1a0: 00621021 addu v0,v1,v0 -8002c1a4: 8fc30018 lw v1,24(s8) -8002c1a8: 00000000 nop -8002c1ac: ac430000 sw v1,0(v0) - - for(x = 0; x < 3; x++) -8002c1b0: afc00010 sw zero,16(s8) -8002c1b4: 10000052 b 8002c300 -8002c1b8: 00000000 nop - { - linked_list[linked_list_pos++] = (poly3->b[x]<<16)|(poly3->g[x]<<8)|(poly3->r[x]) | ((x == 0)?(pkt<<24):0); -8002c1bc: 3c028007 lui v0,0x8007 -8002c1c0: 8c431cd4 lw v1,7380(v0) -8002c1c4: 3c028007 lui v0,0x8007 -8002c1c8: 8c421cd8 lw v0,7384(v0) -8002c1cc: 00000000 nop -8002c1d0: 24450001 addiu a1,v0,1 -8002c1d4: 3c048007 lui a0,0x8007 -8002c1d8: ac851cd8 sw a1,7384(a0) -8002c1dc: 00021080 sll v0,v0,0x2 -8002c1e0: 00621821 addu v1,v1,v0 -8002c1e4: 8fc40028 lw a0,40(s8) -8002c1e8: 8fc20010 lw v0,16(s8) -8002c1ec: 00000000 nop -8002c1f0: 00821021 addu v0,a0,v0 -8002c1f4: 90420006 lbu v0,6(v0) -8002c1f8: 00000000 nop -8002c1fc: 00022400 sll a0,v0,0x10 -8002c200: 8fc50028 lw a1,40(s8) -8002c204: 8fc20010 lw v0,16(s8) -8002c208: 00000000 nop -8002c20c: 00a21021 addu v0,a1,v0 -8002c210: 90420003 lbu v0,3(v0) -8002c214: 00000000 nop -8002c218: 00021200 sll v0,v0,0x8 -8002c21c: 00821025 or v0,a0,v0 -8002c220: 8fc50028 lw a1,40(s8) -8002c224: 8fc40010 lw a0,16(s8) -8002c228: 00000000 nop -8002c22c: 00a42021 addu a0,a1,a0 -8002c230: 90840000 lbu a0,0(a0) -8002c234: 00000000 nop -8002c238: 00442025 or a0,v0,a0 -8002c23c: 8fc20010 lw v0,16(s8) -8002c240: 00000000 nop -8002c244: 14400006 bnez v0,8002c260 -8002c248: 00000000 nop -8002c24c: 93c2001c lbu v0,28(s8) -8002c250: 00000000 nop -8002c254: 00021600 sll v0,v0,0x18 -8002c258: 10000002 b 8002c264 -8002c25c: 00000000 nop -8002c260: 00001021 move v0,zero -8002c264: 00821025 or v0,a0,v0 -8002c268: ac620000 sw v0,0(v1) - linked_list[linked_list_pos++] = ((poly3->y[x]&0x7ff)<<16)|(poly3->x[x]&0x7ff); -8002c26c: 3c028007 lui v0,0x8007 -8002c270: 8c431cd4 lw v1,7380(v0) -8002c274: 3c028007 lui v0,0x8007 -8002c278: 8c421cd8 lw v0,7384(v0) -8002c27c: 00000000 nop -8002c280: 24450001 addiu a1,v0,1 -8002c284: 3c048007 lui a0,0x8007 -8002c288: ac851cd8 sw a1,7384(a0) -8002c28c: 00021080 sll v0,v0,0x2 -8002c290: 00621821 addu v1,v1,v0 -8002c294: 8fc40028 lw a0,40(s8) -8002c298: 8fc20010 lw v0,16(s8) -8002c29c: 00000000 nop -8002c2a0: 24420008 addiu v0,v0,8 -8002c2a4: 00021040 sll v0,v0,0x1 -8002c2a8: 00821021 addu v0,a0,v0 -8002c2ac: 84420000 lh v0,0(v0) -8002c2b0: 00000000 nop -8002c2b4: 3042ffff andi v0,v0,0xffff -8002c2b8: 304207ff andi v0,v0,0x7ff -8002c2bc: 00022400 sll a0,v0,0x10 -8002c2c0: 8fc50028 lw a1,40(s8) -8002c2c4: 8fc20010 lw v0,16(s8) -8002c2c8: 00000000 nop -8002c2cc: 24420004 addiu v0,v0,4 -8002c2d0: 00021040 sll v0,v0,0x1 -8002c2d4: 00a21021 addu v0,a1,v0 -8002c2d8: 84420002 lh v0,2(v0) -8002c2dc: 00000000 nop -8002c2e0: 3042ffff andi v0,v0,0xffff -8002c2e4: 304207ff andi v0,v0,0x7ff -8002c2e8: 00821025 or v0,a0,v0 -8002c2ec: ac620000 sw v0,0(v1) - md = setup_attribs(0, poly3->attribute, &pkt); - - linked_list[linked_list_pos++] = 0x07000000; - linked_list[linked_list_pos++] = md; - - for(x = 0; x < 3; x++) -8002c2f0: 8fc20010 lw v0,16(s8) -8002c2f4: 00000000 nop -8002c2f8: 24420001 addiu v0,v0,1 -8002c2fc: afc20010 sw v0,16(s8) -8002c300: 8fc20010 lw v0,16(s8) -8002c304: 00000000 nop -8002c308: 28420003 slti v0,v0,3 -8002c30c: 1440ffab bnez v0,8002c1bc -8002c310: 00000000 nop - { - linked_list[linked_list_pos++] = (poly3->b[x]<<16)|(poly3->g[x]<<8)|(poly3->r[x]) | ((x == 0)?(pkt<<24):0); - linked_list[linked_list_pos++] = ((poly3->y[x]&0x7ff)<<16)|(poly3->x[x]&0x7ff); - } - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002c314: 3c028007 lui v0,0x8007 -8002c318: 8c431cd4 lw v1,7380(v0) -8002c31c: 8fc20014 lw v0,20(s8) -8002c320: 00000000 nop -8002c324: 00021080 sll v0,v0,0x2 -8002c328: 00621021 addu v0,v1,v0 -8002c32c: 3c038007 lui v1,0x8007 -8002c330: 8c641cd4 lw a0,7380(v1) -8002c334: 8fc30014 lw v1,20(s8) -8002c338: 00000000 nop -8002c33c: 00031880 sll v1,v1,0x2 -8002c340: 00831821 addu v1,a0,v1 -8002c344: 8c640000 lw a0,0(v1) -8002c348: 3c038007 lui v1,0x8007 -8002c34c: 8c651cd4 lw a1,7380(v1) -8002c350: 3c038007 lui v1,0x8007 -8002c354: 8c631cd8 lw v1,7384(v1) -8002c358: 00000000 nop -8002c35c: 00031880 sll v1,v1,0x2 -8002c360: 00a31821 addu v1,a1,v1 -8002c364: 00602821 move a1,v1 -8002c368: 3c0300ff lui v1,0xff -8002c36c: 3463ffff ori v1,v1,0xffff -8002c370: 00a31824 and v1,a1,v1 -8002c374: 00831825 or v1,a0,v1 -8002c378: ac430000 sw v1,0(v0) -} -8002c37c: 00000000 nop -8002c380: 03c0e821 move sp,s8 -8002c384: 8fbf0024 lw ra,36(sp) -8002c388: 8fbe0020 lw s8,32(sp) -8002c38c: 27bd0028 addiu sp,sp,40 -8002c390: 03e00008 jr ra -8002c394: 00000000 nop - -8002c398 : - -void GsSortGPoly4(GsGPoly4 *poly4) -{ -8002c398: 27bdffd8 addiu sp,sp,-40 -8002c39c: afbf0024 sw ra,36(sp) -8002c3a0: afbe0020 sw s8,32(sp) -8002c3a4: 03a0f021 move s8,sp -8002c3a8: afc40028 sw a0,40(s8) - // PKT 0x38 - - int orig_pos = linked_list_pos; -8002c3ac: 3c028007 lui v0,0x8007 -8002c3b0: 8c421cd8 lw v0,7384(v0) -8002c3b4: 00000000 nop -8002c3b8: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x38; -8002c3bc: 24020038 li v0,56 -8002c3c0: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(0, poly4->attribute, &pkt); -8002c3c4: 8fc20028 lw v0,40(s8) -8002c3c8: 00000000 nop -8002c3cc: 8c42001c lw v0,28(v0) -8002c3d0: 27c3001c addiu v1,s8,28 -8002c3d4: 00603021 move a2,v1 -8002c3d8: 00402821 move a1,v0 -8002c3dc: 00002021 move a0,zero -8002c3e0: 0c00bbd0 jal 8002ef40 -8002c3e4: 00000000 nop -8002c3e8: afc20018 sw v0,24(s8) - - linked_list[linked_list_pos++] = 0x09000000; -8002c3ec: 3c028007 lui v0,0x8007 -8002c3f0: 8c431cd4 lw v1,7380(v0) -8002c3f4: 3c028007 lui v0,0x8007 -8002c3f8: 8c421cd8 lw v0,7384(v0) -8002c3fc: 00000000 nop -8002c400: 24450001 addiu a1,v0,1 -8002c404: 3c048007 lui a0,0x8007 -8002c408: ac851cd8 sw a1,7384(a0) -8002c40c: 00021080 sll v0,v0,0x2 -8002c410: 00621021 addu v0,v1,v0 -8002c414: 3c030900 lui v1,0x900 -8002c418: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002c41c: 3c028007 lui v0,0x8007 -8002c420: 8c431cd4 lw v1,7380(v0) -8002c424: 3c028007 lui v0,0x8007 -8002c428: 8c421cd8 lw v0,7384(v0) -8002c42c: 00000000 nop -8002c430: 24450001 addiu a1,v0,1 -8002c434: 3c048007 lui a0,0x8007 -8002c438: ac851cd8 sw a1,7384(a0) -8002c43c: 00021080 sll v0,v0,0x2 -8002c440: 00621021 addu v0,v1,v0 -8002c444: 8fc30018 lw v1,24(s8) -8002c448: 00000000 nop -8002c44c: ac430000 sw v1,0(v0) - - for(x = 0; x < 4; x++) -8002c450: afc00010 sw zero,16(s8) -8002c454: 10000052 b 8002c5a0 -8002c458: 00000000 nop - { - linked_list[linked_list_pos++] = (poly4->b[x]<<16)|(poly4->g[x]<<8)|(poly4->r[x]) | ((x == 0)?(pkt<<24):0); -8002c45c: 3c028007 lui v0,0x8007 -8002c460: 8c431cd4 lw v1,7380(v0) -8002c464: 3c028007 lui v0,0x8007 -8002c468: 8c421cd8 lw v0,7384(v0) -8002c46c: 00000000 nop -8002c470: 24450001 addiu a1,v0,1 -8002c474: 3c048007 lui a0,0x8007 -8002c478: ac851cd8 sw a1,7384(a0) -8002c47c: 00021080 sll v0,v0,0x2 -8002c480: 00621821 addu v1,v1,v0 -8002c484: 8fc40028 lw a0,40(s8) -8002c488: 8fc20010 lw v0,16(s8) -8002c48c: 00000000 nop -8002c490: 00821021 addu v0,a0,v0 -8002c494: 90420008 lbu v0,8(v0) -8002c498: 00000000 nop -8002c49c: 00022400 sll a0,v0,0x10 -8002c4a0: 8fc50028 lw a1,40(s8) -8002c4a4: 8fc20010 lw v0,16(s8) -8002c4a8: 00000000 nop -8002c4ac: 00a21021 addu v0,a1,v0 -8002c4b0: 90420004 lbu v0,4(v0) -8002c4b4: 00000000 nop -8002c4b8: 00021200 sll v0,v0,0x8 -8002c4bc: 00821025 or v0,a0,v0 -8002c4c0: 8fc50028 lw a1,40(s8) -8002c4c4: 8fc40010 lw a0,16(s8) -8002c4c8: 00000000 nop -8002c4cc: 00a42021 addu a0,a1,a0 -8002c4d0: 90840000 lbu a0,0(a0) -8002c4d4: 00000000 nop -8002c4d8: 00442025 or a0,v0,a0 -8002c4dc: 8fc20010 lw v0,16(s8) -8002c4e0: 00000000 nop -8002c4e4: 14400006 bnez v0,8002c500 -8002c4e8: 00000000 nop -8002c4ec: 93c2001c lbu v0,28(s8) -8002c4f0: 00000000 nop -8002c4f4: 00021600 sll v0,v0,0x18 -8002c4f8: 10000002 b 8002c504 -8002c4fc: 00000000 nop -8002c500: 00001021 move v0,zero -8002c504: 00821025 or v0,a0,v0 -8002c508: ac620000 sw v0,0(v1) - linked_list[linked_list_pos++] = ((poly4->y[x]&0x7ff)<<16)|(poly4->x[x]&0x7ff); -8002c50c: 3c028007 lui v0,0x8007 -8002c510: 8c431cd4 lw v1,7380(v0) -8002c514: 3c028007 lui v0,0x8007 -8002c518: 8c421cd8 lw v0,7384(v0) -8002c51c: 00000000 nop -8002c520: 24450001 addiu a1,v0,1 -8002c524: 3c048007 lui a0,0x8007 -8002c528: ac851cd8 sw a1,7384(a0) -8002c52c: 00021080 sll v0,v0,0x2 -8002c530: 00621821 addu v1,v1,v0 -8002c534: 8fc40028 lw a0,40(s8) -8002c538: 8fc20010 lw v0,16(s8) -8002c53c: 00000000 nop -8002c540: 24420008 addiu v0,v0,8 -8002c544: 00021040 sll v0,v0,0x1 -8002c548: 00821021 addu v0,a0,v0 -8002c54c: 84420004 lh v0,4(v0) -8002c550: 00000000 nop -8002c554: 3042ffff andi v0,v0,0xffff -8002c558: 304207ff andi v0,v0,0x7ff -8002c55c: 00022400 sll a0,v0,0x10 -8002c560: 8fc50028 lw a1,40(s8) -8002c564: 8fc20010 lw v0,16(s8) -8002c568: 00000000 nop -8002c56c: 24420004 addiu v0,v0,4 -8002c570: 00021040 sll v0,v0,0x1 -8002c574: 00a21021 addu v0,a1,v0 -8002c578: 84420004 lh v0,4(v0) -8002c57c: 00000000 nop -8002c580: 3042ffff andi v0,v0,0xffff -8002c584: 304207ff andi v0,v0,0x7ff -8002c588: 00821025 or v0,a0,v0 -8002c58c: ac620000 sw v0,0(v1) - md = setup_attribs(0, poly4->attribute, &pkt); - - linked_list[linked_list_pos++] = 0x09000000; - linked_list[linked_list_pos++] = md; - - for(x = 0; x < 4; x++) -8002c590: 8fc20010 lw v0,16(s8) -8002c594: 00000000 nop -8002c598: 24420001 addiu v0,v0,1 -8002c59c: afc20010 sw v0,16(s8) -8002c5a0: 8fc20010 lw v0,16(s8) -8002c5a4: 00000000 nop -8002c5a8: 28420004 slti v0,v0,4 -8002c5ac: 1440ffab bnez v0,8002c45c -8002c5b0: 00000000 nop - { - linked_list[linked_list_pos++] = (poly4->b[x]<<16)|(poly4->g[x]<<8)|(poly4->r[x]) | ((x == 0)?(pkt<<24):0); - linked_list[linked_list_pos++] = ((poly4->y[x]&0x7ff)<<16)|(poly4->x[x]&0x7ff); - } - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002c5b4: 3c028007 lui v0,0x8007 -8002c5b8: 8c431cd4 lw v1,7380(v0) -8002c5bc: 8fc20014 lw v0,20(s8) -8002c5c0: 00000000 nop -8002c5c4: 00021080 sll v0,v0,0x2 -8002c5c8: 00621021 addu v0,v1,v0 -8002c5cc: 3c038007 lui v1,0x8007 -8002c5d0: 8c641cd4 lw a0,7380(v1) -8002c5d4: 8fc30014 lw v1,20(s8) -8002c5d8: 00000000 nop -8002c5dc: 00031880 sll v1,v1,0x2 -8002c5e0: 00831821 addu v1,a0,v1 -8002c5e4: 8c640000 lw a0,0(v1) -8002c5e8: 3c038007 lui v1,0x8007 -8002c5ec: 8c651cd4 lw a1,7380(v1) -8002c5f0: 3c038007 lui v1,0x8007 -8002c5f4: 8c631cd8 lw v1,7384(v1) -8002c5f8: 00000000 nop -8002c5fc: 00031880 sll v1,v1,0x2 -8002c600: 00a31821 addu v1,a1,v1 -8002c604: 00602821 move a1,v1 -8002c608: 3c0300ff lui v1,0xff -8002c60c: 3463ffff ori v1,v1,0xffff -8002c610: 00a31824 and v1,a1,v1 -8002c614: 00831825 or v1,a0,v1 -8002c618: ac430000 sw v1,0(v0) -} -8002c61c: 00000000 nop -8002c620: 03c0e821 move sp,s8 -8002c624: 8fbf0024 lw ra,36(sp) -8002c628: 8fbe0020 lw s8,32(sp) -8002c62c: 27bd0028 addiu sp,sp,40 -8002c630: 03e00008 jr ra -8002c634: 00000000 nop - -8002c638 : - -void GsSortLine(GsLine *line) -{ -8002c638: 27bdffd8 addiu sp,sp,-40 -8002c63c: afbf0024 sw ra,36(sp) -8002c640: afbe0020 sw s8,32(sp) -8002c644: 03a0f021 move s8,sp -8002c648: afc40028 sw a0,40(s8) - // PKT 0x40 - - int orig_pos = linked_list_pos; -8002c64c: 3c028007 lui v0,0x8007 -8002c650: 8c421cd8 lw v0,7384(v0) -8002c654: 00000000 nop -8002c658: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x40; -8002c65c: 24020040 li v0,64 -8002c660: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(0, line->attribute, &pkt); -8002c664: 8fc20028 lw v0,40(s8) -8002c668: 00000000 nop -8002c66c: 8c42000c lw v0,12(v0) -8002c670: 27c3001c addiu v1,s8,28 -8002c674: 00603021 move a2,v1 -8002c678: 00402821 move a1,v0 -8002c67c: 00002021 move a0,zero -8002c680: 0c00bbd0 jal 8002ef40 -8002c684: 00000000 nop -8002c688: afc20018 sw v0,24(s8) - - linked_list[linked_list_pos++] = 0x04000000; -8002c68c: 3c028007 lui v0,0x8007 -8002c690: 8c431cd4 lw v1,7380(v0) -8002c694: 3c028007 lui v0,0x8007 -8002c698: 8c421cd8 lw v0,7384(v0) -8002c69c: 00000000 nop -8002c6a0: 24450001 addiu a1,v0,1 -8002c6a4: 3c048007 lui a0,0x8007 -8002c6a8: ac851cd8 sw a1,7384(a0) -8002c6ac: 00021080 sll v0,v0,0x2 -8002c6b0: 00621021 addu v0,v1,v0 -8002c6b4: 3c030400 lui v1,0x400 -8002c6b8: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002c6bc: 3c028007 lui v0,0x8007 -8002c6c0: 8c431cd4 lw v1,7380(v0) -8002c6c4: 3c028007 lui v0,0x8007 -8002c6c8: 8c421cd8 lw v0,7384(v0) -8002c6cc: 00000000 nop -8002c6d0: 24450001 addiu a1,v0,1 -8002c6d4: 3c048007 lui a0,0x8007 -8002c6d8: ac851cd8 sw a1,7384(a0) -8002c6dc: 00021080 sll v0,v0,0x2 -8002c6e0: 00621021 addu v0,v1,v0 -8002c6e4: 8fc30018 lw v1,24(s8) -8002c6e8: 00000000 nop -8002c6ec: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (pkt<<24)|(line->b<<16)|(line->g<<8)|(line->r); -8002c6f0: 3c028007 lui v0,0x8007 -8002c6f4: 8c431cd4 lw v1,7380(v0) -8002c6f8: 3c028007 lui v0,0x8007 -8002c6fc: 8c421cd8 lw v0,7384(v0) -8002c700: 00000000 nop -8002c704: 24450001 addiu a1,v0,1 -8002c708: 3c048007 lui a0,0x8007 -8002c70c: ac851cd8 sw a1,7384(a0) -8002c710: 00021080 sll v0,v0,0x2 -8002c714: 00621021 addu v0,v1,v0 -8002c718: 93c3001c lbu v1,28(s8) -8002c71c: 00000000 nop -8002c720: 00032600 sll a0,v1,0x18 -8002c724: 8fc30028 lw v1,40(s8) -8002c728: 00000000 nop -8002c72c: 90630002 lbu v1,2(v1) -8002c730: 00000000 nop -8002c734: 00031c00 sll v1,v1,0x10 -8002c738: 00832025 or a0,a0,v1 -8002c73c: 8fc30028 lw v1,40(s8) -8002c740: 00000000 nop -8002c744: 90630001 lbu v1,1(v1) -8002c748: 00000000 nop -8002c74c: 00031a00 sll v1,v1,0x8 -8002c750: 00831825 or v1,a0,v1 -8002c754: 8fc40028 lw a0,40(s8) -8002c758: 00000000 nop -8002c75c: 90840000 lbu a0,0(a0) -8002c760: 00000000 nop -8002c764: 00641825 or v1,v1,a0 -8002c768: ac430000 sw v1,0(v0) - - for(x = 0; x < 2; x++) -8002c76c: afc00010 sw zero,16(s8) -8002c770: 10000025 b 8002c808 -8002c774: 00000000 nop - linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x]&0x7ff); -8002c778: 3c028007 lui v0,0x8007 -8002c77c: 8c431cd4 lw v1,7380(v0) -8002c780: 3c028007 lui v0,0x8007 -8002c784: 8c421cd8 lw v0,7384(v0) -8002c788: 00000000 nop -8002c78c: 24450001 addiu a1,v0,1 -8002c790: 3c048007 lui a0,0x8007 -8002c794: ac851cd8 sw a1,7384(a0) -8002c798: 00021080 sll v0,v0,0x2 -8002c79c: 00621821 addu v1,v1,v0 -8002c7a0: 8fc40028 lw a0,40(s8) -8002c7a4: 8fc20010 lw v0,16(s8) -8002c7a8: 00000000 nop -8002c7ac: 24420004 addiu v0,v0,4 -8002c7b0: 00021040 sll v0,v0,0x1 -8002c7b4: 00821021 addu v0,a0,v0 -8002c7b8: 84420000 lh v0,0(v0) -8002c7bc: 00000000 nop -8002c7c0: 3042ffff andi v0,v0,0xffff -8002c7c4: 304207ff andi v0,v0,0x7ff -8002c7c8: 00022400 sll a0,v0,0x10 -8002c7cc: 8fc50028 lw a1,40(s8) -8002c7d0: 8fc20010 lw v0,16(s8) -8002c7d4: 00000000 nop -8002c7d8: 00021040 sll v0,v0,0x1 -8002c7dc: 00a21021 addu v0,a1,v0 -8002c7e0: 84420004 lh v0,4(v0) -8002c7e4: 00000000 nop -8002c7e8: 3042ffff andi v0,v0,0xffff -8002c7ec: 304207ff andi v0,v0,0x7ff -8002c7f0: 00821025 or v0,a0,v0 -8002c7f4: ac620000 sw v0,0(v1) - - linked_list[linked_list_pos++] = 0x04000000; - linked_list[linked_list_pos++] = md; - linked_list[linked_list_pos++] = (pkt<<24)|(line->b<<16)|(line->g<<8)|(line->r); - - for(x = 0; x < 2; x++) -8002c7f8: 8fc20010 lw v0,16(s8) -8002c7fc: 00000000 nop -8002c800: 24420001 addiu v0,v0,1 -8002c804: afc20010 sw v0,16(s8) -8002c808: 8fc20010 lw v0,16(s8) -8002c80c: 00000000 nop -8002c810: 28420002 slti v0,v0,2 -8002c814: 1440ffd8 bnez v0,8002c778 -8002c818: 00000000 nop - linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x]&0x7ff); - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002c81c: 3c028007 lui v0,0x8007 -8002c820: 8c431cd4 lw v1,7380(v0) -8002c824: 8fc20014 lw v0,20(s8) -8002c828: 00000000 nop -8002c82c: 00021080 sll v0,v0,0x2 -8002c830: 00621021 addu v0,v1,v0 -8002c834: 3c038007 lui v1,0x8007 -8002c838: 8c641cd4 lw a0,7380(v1) -8002c83c: 8fc30014 lw v1,20(s8) -8002c840: 00000000 nop -8002c844: 00031880 sll v1,v1,0x2 -8002c848: 00831821 addu v1,a0,v1 -8002c84c: 8c640000 lw a0,0(v1) -8002c850: 3c038007 lui v1,0x8007 -8002c854: 8c651cd4 lw a1,7380(v1) -8002c858: 3c038007 lui v1,0x8007 -8002c85c: 8c631cd8 lw v1,7384(v1) -8002c860: 00000000 nop -8002c864: 00031880 sll v1,v1,0x2 -8002c868: 00a31821 addu v1,a1,v1 -8002c86c: 00602821 move a1,v1 -8002c870: 3c0300ff lui v1,0xff -8002c874: 3463ffff ori v1,v1,0xffff -8002c878: 00a31824 and v1,a1,v1 -8002c87c: 00831825 or v1,a0,v1 -8002c880: ac430000 sw v1,0(v0) -} -8002c884: 00000000 nop -8002c888: 03c0e821 move sp,s8 -8002c88c: 8fbf0024 lw ra,36(sp) -8002c890: 8fbe0020 lw s8,32(sp) -8002c894: 27bd0028 addiu sp,sp,40 -8002c898: 03e00008 jr ra -8002c89c: 00000000 nop - -8002c8a0 : - -void GsSortGLine(GsGLine *line) -{ -8002c8a0: 27bdffd8 addiu sp,sp,-40 -8002c8a4: afbf0024 sw ra,36(sp) -8002c8a8: afbe0020 sw s8,32(sp) -8002c8ac: 03a0f021 move s8,sp -8002c8b0: afc40028 sw a0,40(s8) - // PKT 0x50 - - int orig_pos = linked_list_pos; -8002c8b4: 3c028007 lui v0,0x8007 -8002c8b8: 8c421cd8 lw v0,7384(v0) -8002c8bc: 00000000 nop -8002c8c0: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x50; -8002c8c4: 24020050 li v0,80 -8002c8c8: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(0, line->attribute, &pkt); -8002c8cc: 8fc20028 lw v0,40(s8) -8002c8d0: 00000000 nop -8002c8d4: 8c420010 lw v0,16(v0) -8002c8d8: 27c3001c addiu v1,s8,28 -8002c8dc: 00603021 move a2,v1 -8002c8e0: 00402821 move a1,v0 -8002c8e4: 00002021 move a0,zero -8002c8e8: 0c00bbd0 jal 8002ef40 -8002c8ec: 00000000 nop -8002c8f0: afc20018 sw v0,24(s8) - - linked_list[linked_list_pos++] = 0x05000000; -8002c8f4: 3c028007 lui v0,0x8007 -8002c8f8: 8c431cd4 lw v1,7380(v0) -8002c8fc: 3c028007 lui v0,0x8007 -8002c900: 8c421cd8 lw v0,7384(v0) -8002c904: 00000000 nop -8002c908: 24450001 addiu a1,v0,1 -8002c90c: 3c048007 lui a0,0x8007 -8002c910: ac851cd8 sw a1,7384(a0) -8002c914: 00021080 sll v0,v0,0x2 -8002c918: 00621021 addu v0,v1,v0 -8002c91c: 3c030500 lui v1,0x500 -8002c920: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002c924: 3c028007 lui v0,0x8007 -8002c928: 8c431cd4 lw v1,7380(v0) -8002c92c: 3c028007 lui v0,0x8007 -8002c930: 8c421cd8 lw v0,7384(v0) -8002c934: 00000000 nop -8002c938: 24450001 addiu a1,v0,1 -8002c93c: 3c048007 lui a0,0x8007 -8002c940: ac851cd8 sw a1,7384(a0) -8002c944: 00021080 sll v0,v0,0x2 -8002c948: 00621021 addu v0,v1,v0 -8002c94c: 8fc30018 lw v1,24(s8) -8002c950: 00000000 nop -8002c954: ac430000 sw v1,0(v0) - - for(x=0;x<2;x++) -8002c958: afc00010 sw zero,16(s8) -8002c95c: 10000051 b 8002caa4 -8002c960: 00000000 nop - { - linked_list[linked_list_pos++] = (line->b[x]<<16)|(line->g[x]<<8)|(line->r[x])|((x == 0)?(pkt<<24):0); -8002c964: 3c028007 lui v0,0x8007 -8002c968: 8c431cd4 lw v1,7380(v0) -8002c96c: 3c028007 lui v0,0x8007 -8002c970: 8c421cd8 lw v0,7384(v0) -8002c974: 00000000 nop -8002c978: 24450001 addiu a1,v0,1 -8002c97c: 3c048007 lui a0,0x8007 -8002c980: ac851cd8 sw a1,7384(a0) -8002c984: 00021080 sll v0,v0,0x2 -8002c988: 00621821 addu v1,v1,v0 -8002c98c: 8fc40028 lw a0,40(s8) -8002c990: 8fc20010 lw v0,16(s8) -8002c994: 00000000 nop -8002c998: 00821021 addu v0,a0,v0 -8002c99c: 90420004 lbu v0,4(v0) -8002c9a0: 00000000 nop -8002c9a4: 00022400 sll a0,v0,0x10 -8002c9a8: 8fc50028 lw a1,40(s8) -8002c9ac: 8fc20010 lw v0,16(s8) -8002c9b0: 00000000 nop -8002c9b4: 00a21021 addu v0,a1,v0 -8002c9b8: 90420002 lbu v0,2(v0) -8002c9bc: 00000000 nop -8002c9c0: 00021200 sll v0,v0,0x8 -8002c9c4: 00821025 or v0,a0,v0 -8002c9c8: 8fc50028 lw a1,40(s8) -8002c9cc: 8fc40010 lw a0,16(s8) -8002c9d0: 00000000 nop -8002c9d4: 00a42021 addu a0,a1,a0 -8002c9d8: 90840000 lbu a0,0(a0) -8002c9dc: 00000000 nop -8002c9e0: 00442025 or a0,v0,a0 -8002c9e4: 8fc20010 lw v0,16(s8) -8002c9e8: 00000000 nop -8002c9ec: 14400006 bnez v0,8002ca08 -8002c9f0: 00000000 nop -8002c9f4: 93c2001c lbu v0,28(s8) -8002c9f8: 00000000 nop -8002c9fc: 00021600 sll v0,v0,0x18 -8002ca00: 10000002 b 8002ca0c -8002ca04: 00000000 nop -8002ca08: 00001021 move v0,zero -8002ca0c: 00821025 or v0,a0,v0 -8002ca10: ac620000 sw v0,0(v1) - linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x] & 0x7ff); -8002ca14: 3c028007 lui v0,0x8007 -8002ca18: 8c431cd4 lw v1,7380(v0) -8002ca1c: 3c028007 lui v0,0x8007 -8002ca20: 8c421cd8 lw v0,7384(v0) -8002ca24: 00000000 nop -8002ca28: 24450001 addiu a1,v0,1 -8002ca2c: 3c048007 lui a0,0x8007 -8002ca30: ac851cd8 sw a1,7384(a0) -8002ca34: 00021080 sll v0,v0,0x2 -8002ca38: 00621821 addu v1,v1,v0 -8002ca3c: 8fc40028 lw a0,40(s8) -8002ca40: 8fc20010 lw v0,16(s8) -8002ca44: 00000000 nop -8002ca48: 24420004 addiu v0,v0,4 -8002ca4c: 00021040 sll v0,v0,0x1 -8002ca50: 00821021 addu v0,a0,v0 -8002ca54: 84420002 lh v0,2(v0) -8002ca58: 00000000 nop -8002ca5c: 3042ffff andi v0,v0,0xffff -8002ca60: 304207ff andi v0,v0,0x7ff -8002ca64: 00022400 sll a0,v0,0x10 -8002ca68: 8fc50028 lw a1,40(s8) -8002ca6c: 8fc20010 lw v0,16(s8) -8002ca70: 00000000 nop -8002ca74: 00021040 sll v0,v0,0x1 -8002ca78: 00a21021 addu v0,a1,v0 -8002ca7c: 84420006 lh v0,6(v0) -8002ca80: 00000000 nop -8002ca84: 3042ffff andi v0,v0,0xffff -8002ca88: 304207ff andi v0,v0,0x7ff -8002ca8c: 00821025 or v0,a0,v0 -8002ca90: ac620000 sw v0,0(v1) - md = setup_attribs(0, line->attribute, &pkt); - - linked_list[linked_list_pos++] = 0x05000000; - linked_list[linked_list_pos++] = md; - - for(x=0;x<2;x++) -8002ca94: 8fc20010 lw v0,16(s8) -8002ca98: 00000000 nop -8002ca9c: 24420001 addiu v0,v0,1 -8002caa0: afc20010 sw v0,16(s8) -8002caa4: 8fc20010 lw v0,16(s8) -8002caa8: 00000000 nop -8002caac: 28420002 slti v0,v0,2 -8002cab0: 1440ffac bnez v0,8002c964 -8002cab4: 00000000 nop - { - linked_list[linked_list_pos++] = (line->b[x]<<16)|(line->g[x]<<8)|(line->r[x])|((x == 0)?(pkt<<24):0); - linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x] & 0x7ff); - } - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002cab8: 3c028007 lui v0,0x8007 -8002cabc: 8c431cd4 lw v1,7380(v0) -8002cac0: 8fc20014 lw v0,20(s8) -8002cac4: 00000000 nop -8002cac8: 00021080 sll v0,v0,0x2 -8002cacc: 00621021 addu v0,v1,v0 -8002cad0: 3c038007 lui v1,0x8007 -8002cad4: 8c641cd4 lw a0,7380(v1) -8002cad8: 8fc30014 lw v1,20(s8) -8002cadc: 00000000 nop -8002cae0: 00031880 sll v1,v1,0x2 -8002cae4: 00831821 addu v1,a0,v1 -8002cae8: 8c640000 lw a0,0(v1) -8002caec: 3c038007 lui v1,0x8007 -8002caf0: 8c651cd4 lw a1,7380(v1) -8002caf4: 3c038007 lui v1,0x8007 -8002caf8: 8c631cd8 lw v1,7384(v1) -8002cafc: 00000000 nop -8002cb00: 00031880 sll v1,v1,0x2 -8002cb04: 00a31821 addu v1,a1,v1 -8002cb08: 00602821 move a1,v1 -8002cb0c: 3c0300ff lui v1,0xff -8002cb10: 3463ffff ori v1,v1,0xffff -8002cb14: 00a31824 and v1,a1,v1 -8002cb18: 00831825 or v1,a0,v1 -8002cb1c: ac430000 sw v1,0(v0) -} -8002cb20: 00000000 nop -8002cb24: 03c0e821 move sp,s8 -8002cb28: 8fbf0024 lw ra,36(sp) -8002cb2c: 8fbe0020 lw s8,32(sp) -8002cb30: 27bd0028 addiu sp,sp,40 -8002cb34: 03e00008 jr ra -8002cb38: 00000000 nop - -8002cb3c : - -void GsSortDot(GsDot *dot) -{ -8002cb3c: 27bdffd8 addiu sp,sp,-40 -8002cb40: afbf0024 sw ra,36(sp) -8002cb44: afbe0020 sw s8,32(sp) -8002cb48: 03a0f021 move s8,sp -8002cb4c: afc40028 sw a0,40(s8) - // PKT 0x68 - - int orig_pos = linked_list_pos; -8002cb50: 3c028007 lui v0,0x8007 -8002cb54: 8c421cd8 lw v0,7384(v0) -8002cb58: 00000000 nop -8002cb5c: afc20010 sw v0,16(s8) - unsigned char pkt = 0x68; -8002cb60: 24020068 li v0,104 -8002cb64: a3c20018 sb v0,24(s8) - unsigned int md; - - md = setup_attribs(0, dot->attribute, &pkt); -8002cb68: 8fc20028 lw v0,40(s8) -8002cb6c: 00000000 nop -8002cb70: 8c420008 lw v0,8(v0) -8002cb74: 27c30018 addiu v1,s8,24 -8002cb78: 00603021 move a2,v1 -8002cb7c: 00402821 move a1,v0 -8002cb80: 00002021 move a0,zero -8002cb84: 0c00bbd0 jal 8002ef40 -8002cb88: 00000000 nop -8002cb8c: afc20014 sw v0,20(s8) - - linked_list[linked_list_pos++] = 0x03000000; -8002cb90: 3c028007 lui v0,0x8007 -8002cb94: 8c431cd4 lw v1,7380(v0) -8002cb98: 3c028007 lui v0,0x8007 -8002cb9c: 8c421cd8 lw v0,7384(v0) -8002cba0: 00000000 nop -8002cba4: 24450001 addiu a1,v0,1 -8002cba8: 3c048007 lui a0,0x8007 -8002cbac: ac851cd8 sw a1,7384(a0) -8002cbb0: 00021080 sll v0,v0,0x2 -8002cbb4: 00621021 addu v0,v1,v0 -8002cbb8: 3c030300 lui v1,0x300 -8002cbbc: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002cbc0: 3c028007 lui v0,0x8007 -8002cbc4: 8c431cd4 lw v1,7380(v0) -8002cbc8: 3c028007 lui v0,0x8007 -8002cbcc: 8c421cd8 lw v0,7384(v0) -8002cbd0: 00000000 nop -8002cbd4: 24450001 addiu a1,v0,1 -8002cbd8: 3c048007 lui a0,0x8007 -8002cbdc: ac851cd8 sw a1,7384(a0) -8002cbe0: 00021080 sll v0,v0,0x2 -8002cbe4: 00621021 addu v0,v1,v0 -8002cbe8: 8fc30014 lw v1,20(s8) -8002cbec: 00000000 nop -8002cbf0: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (pkt<<24)|(dot->b<<16)|(dot->g<<8)|(dot->r); -8002cbf4: 3c028007 lui v0,0x8007 -8002cbf8: 8c431cd4 lw v1,7380(v0) -8002cbfc: 3c028007 lui v0,0x8007 -8002cc00: 8c421cd8 lw v0,7384(v0) -8002cc04: 00000000 nop -8002cc08: 24450001 addiu a1,v0,1 -8002cc0c: 3c048007 lui a0,0x8007 -8002cc10: ac851cd8 sw a1,7384(a0) -8002cc14: 00021080 sll v0,v0,0x2 -8002cc18: 00621021 addu v0,v1,v0 -8002cc1c: 93c30018 lbu v1,24(s8) -8002cc20: 00000000 nop -8002cc24: 00032600 sll a0,v1,0x18 -8002cc28: 8fc30028 lw v1,40(s8) -8002cc2c: 00000000 nop -8002cc30: 90630002 lbu v1,2(v1) -8002cc34: 00000000 nop -8002cc38: 00031c00 sll v1,v1,0x10 -8002cc3c: 00832025 or a0,a0,v1 -8002cc40: 8fc30028 lw v1,40(s8) -8002cc44: 00000000 nop -8002cc48: 90630001 lbu v1,1(v1) -8002cc4c: 00000000 nop -8002cc50: 00031a00 sll v1,v1,0x8 -8002cc54: 00831825 or v1,a0,v1 -8002cc58: 8fc40028 lw a0,40(s8) -8002cc5c: 00000000 nop -8002cc60: 90840000 lbu a0,0(a0) -8002cc64: 00000000 nop -8002cc68: 00641825 or v1,v1,a0 -8002cc6c: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((dot->y&0x7ff)<<16)|(dot->x&0x7ff); -8002cc70: 3c028007 lui v0,0x8007 -8002cc74: 8c431cd4 lw v1,7380(v0) -8002cc78: 3c028007 lui v0,0x8007 -8002cc7c: 8c421cd8 lw v0,7384(v0) -8002cc80: 00000000 nop -8002cc84: 24450001 addiu a1,v0,1 -8002cc88: 3c048007 lui a0,0x8007 -8002cc8c: ac851cd8 sw a1,7384(a0) -8002cc90: 00021080 sll v0,v0,0x2 -8002cc94: 00621021 addu v0,v1,v0 -8002cc98: 8fc30028 lw v1,40(s8) -8002cc9c: 00000000 nop -8002cca0: 84630006 lh v1,6(v1) -8002cca4: 00000000 nop -8002cca8: 3063ffff andi v1,v1,0xffff -8002ccac: 306307ff andi v1,v1,0x7ff -8002ccb0: 00032400 sll a0,v1,0x10 -8002ccb4: 8fc30028 lw v1,40(s8) -8002ccb8: 00000000 nop -8002ccbc: 84630004 lh v1,4(v1) -8002ccc0: 00000000 nop -8002ccc4: 3063ffff andi v1,v1,0xffff -8002ccc8: 306307ff andi v1,v1,0x7ff -8002cccc: 00831825 or v1,a0,v1 -8002ccd0: ac430000 sw v1,0(v0) - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002ccd4: 3c028007 lui v0,0x8007 -8002ccd8: 8c431cd4 lw v1,7380(v0) -8002ccdc: 8fc20010 lw v0,16(s8) -8002cce0: 00000000 nop -8002cce4: 00021080 sll v0,v0,0x2 -8002cce8: 00621021 addu v0,v1,v0 -8002ccec: 3c038007 lui v1,0x8007 -8002ccf0: 8c641cd4 lw a0,7380(v1) -8002ccf4: 8fc30010 lw v1,16(s8) -8002ccf8: 00000000 nop -8002ccfc: 00031880 sll v1,v1,0x2 -8002cd00: 00831821 addu v1,a0,v1 -8002cd04: 8c640000 lw a0,0(v1) -8002cd08: 3c038007 lui v1,0x8007 -8002cd0c: 8c651cd4 lw a1,7380(v1) -8002cd10: 3c038007 lui v1,0x8007 -8002cd14: 8c631cd8 lw v1,7384(v1) -8002cd18: 00000000 nop -8002cd1c: 00031880 sll v1,v1,0x2 -8002cd20: 00a31821 addu v1,a1,v1 -8002cd24: 00602821 move a1,v1 -8002cd28: 3c0300ff lui v1,0xff -8002cd2c: 3463ffff ori v1,v1,0xffff -8002cd30: 00a31824 and v1,a1,v1 -8002cd34: 00831825 or v1,a0,v1 -8002cd38: ac430000 sw v1,0(v0) -} -8002cd3c: 00000000 nop -8002cd40: 03c0e821 move sp,s8 -8002cd44: 8fbf0024 lw ra,36(sp) -8002cd48: 8fbe0020 lw s8,32(sp) -8002cd4c: 27bd0028 addiu sp,sp,40 -8002cd50: 03e00008 jr ra -8002cd54: 00000000 nop - -8002cd58 : - -void GsSortSprite(GsSprite *sprite) -{ -8002cd58: 27bdff98 addiu sp,sp,-104 -8002cd5c: afbf0064 sw ra,100(sp) -8002cd60: afbe0060 sw s8,96(sp) -8002cd64: afb0005c sw s0,92(sp) -8002cd68: 03a0f021 move s8,sp -8002cd6c: afc40068 sw a0,104(s8) - GsTPoly4 tpoly4; - int x, y; - int sx = sprite->x & 0x7ff; -8002cd70: 8fc20068 lw v0,104(s8) -8002cd74: 00000000 nop -8002cd78: 84420000 lh v0,0(v0) -8002cd7c: 00000000 nop -8002cd80: 3042ffff andi v0,v0,0xffff -8002cd84: 304207ff andi v0,v0,0x7ff -8002cd88: afc20020 sw v0,32(s8) - int sy = sprite->y & 0x7ff; -8002cd8c: 8fc20068 lw v0,104(s8) -8002cd90: 00000000 nop -8002cd94: 84420002 lh v0,2(v0) -8002cd98: 00000000 nop -8002cd9c: 3042ffff andi v0,v0,0xffff -8002cda0: 304207ff andi v0,v0,0x7ff -8002cda4: afc20024 sw v0,36(s8) - sprite->h = 256;*/ - - // If "sprite" has no flipping and no scaling use sprite primitive - // otherwise manipulate a 4 point textured polygon primitive - - if(sprite->rotate != 0) -8002cda8: 8fc20068 lw v0,104(s8) -8002cdac: 00000000 nop -8002cdb0: 8c420020 lw v0,32(v0) -8002cdb4: 00000000 nop -8002cdb8: 104001ba beqz v0,8002d4a4 -8002cdbc: 00000000 nop - { - tpoly4.u[0] = sprite->u; -8002cdc0: 8fc20068 lw v0,104(s8) -8002cdc4: 00000000 nop -8002cdc8: 90420004 lbu v0,4(v0) -8002cdcc: 00000000 nop -8002cdd0: a3c20049 sb v0,73(s8) - tpoly4.v[0] = sprite->v; -8002cdd4: 8fc20068 lw v0,104(s8) -8002cdd8: 00000000 nop -8002cddc: 90420005 lbu v0,5(v0) -8002cde0: 00000000 nop -8002cde4: a3c2004d sb v0,77(s8) - - tpoly4.u[1] = sprite->u; -8002cde8: 8fc20068 lw v0,104(s8) -8002cdec: 00000000 nop -8002cdf0: 90420004 lbu v0,4(v0) -8002cdf4: 00000000 nop -8002cdf8: a3c2004a sb v0,74(s8) - tpoly4.v[1] = sprite->v + sprite->h; -8002cdfc: 8fc20068 lw v0,104(s8) -8002ce00: 00000000 nop -8002ce04: 90430005 lbu v1,5(v0) -8002ce08: 8fc20068 lw v0,104(s8) -8002ce0c: 00000000 nop -8002ce10: 84420008 lh v0,8(v0) -8002ce14: 00000000 nop -8002ce18: 304200ff andi v0,v0,0xff -8002ce1c: 00621021 addu v0,v1,v0 -8002ce20: 304200ff andi v0,v0,0xff -8002ce24: a3c2004e sb v0,78(s8) - - tpoly4.u[2] = sprite->u + sprite->w; -8002ce28: 8fc20068 lw v0,104(s8) -8002ce2c: 00000000 nop -8002ce30: 90430004 lbu v1,4(v0) -8002ce34: 8fc20068 lw v0,104(s8) -8002ce38: 00000000 nop -8002ce3c: 84420006 lh v0,6(v0) -8002ce40: 00000000 nop -8002ce44: 304200ff andi v0,v0,0xff -8002ce48: 00621021 addu v0,v1,v0 -8002ce4c: 304200ff andi v0,v0,0xff -8002ce50: a3c2004b sb v0,75(s8) - tpoly4.v[2] = sprite->v; -8002ce54: 8fc20068 lw v0,104(s8) -8002ce58: 00000000 nop -8002ce5c: 90420005 lbu v0,5(v0) -8002ce60: 00000000 nop -8002ce64: a3c2004f sb v0,79(s8) - - tpoly4.u[3] = sprite->u + sprite->w; -8002ce68: 8fc20068 lw v0,104(s8) -8002ce6c: 00000000 nop -8002ce70: 90430004 lbu v1,4(v0) -8002ce74: 8fc20068 lw v0,104(s8) -8002ce78: 00000000 nop -8002ce7c: 84420006 lh v0,6(v0) -8002ce80: 00000000 nop -8002ce84: 304200ff andi v0,v0,0xff -8002ce88: 00621021 addu v0,v1,v0 -8002ce8c: 304200ff andi v0,v0,0xff -8002ce90: a3c2004c sb v0,76(s8) - tpoly4.v[3] = sprite->v + sprite->h; -8002ce94: 8fc20068 lw v0,104(s8) -8002ce98: 00000000 nop -8002ce9c: 90430005 lbu v1,5(v0) -8002cea0: 8fc20068 lw v0,104(s8) -8002cea4: 00000000 nop -8002cea8: 84420008 lh v0,8(v0) -8002ceac: 00000000 nop -8002ceb0: 304200ff andi v0,v0,0xff -8002ceb4: 00621021 addu v0,v1,v0 -8002ceb8: 304200ff andi v0,v0,0xff -8002cebc: a3c20050 sb v0,80(s8) - - gs_vbuf[0][2] = gs_vbuf[1][2] = gs_vbuf[2][2] = gs_vbuf[3][2] = 0; -8002cec0: 3c028007 lui v0,0x8007 -8002cec4: 24421b70 addiu v0,v0,7024 -8002cec8: ac400058 sw zero,88(v0) -8002cecc: ac40005c sw zero,92(v0) -8002ced0: 3c028007 lui v0,0x8007 -8002ced4: 24421b70 addiu v0,v0,7024 -8002ced8: 8c43005c lw v1,92(v0) -8002cedc: 8c420058 lw v0,88(v0) -8002cee0: 3c048007 lui a0,0x8007 -8002cee4: 24841b70 addiu a0,a0,7024 -8002cee8: ac820040 sw v0,64(a0) -8002ceec: ac830044 sw v1,68(a0) -8002cef0: 3c028007 lui v0,0x8007 -8002cef4: 24421b70 addiu v0,v0,7024 -8002cef8: 8c430044 lw v1,68(v0) -8002cefc: 8c420040 lw v0,64(v0) -8002cf00: 3c048007 lui a0,0x8007 -8002cf04: 24841b70 addiu a0,a0,7024 -8002cf08: ac820028 sw v0,40(a0) -8002cf0c: ac83002c sw v1,44(a0) -8002cf10: 3c028007 lui v0,0x8007 -8002cf14: 24421b70 addiu v0,v0,7024 -8002cf18: 8c43002c lw v1,44(v0) -8002cf1c: 8c420028 lw v0,40(v0) -8002cf20: 3c048007 lui a0,0x8007 -8002cf24: 24841b70 addiu a0,a0,7024 -8002cf28: ac820010 sw v0,16(a0) -8002cf2c: ac830014 sw v1,20(a0) - - mcx = sprite->mx + sprite->x; -8002cf30: 8fc20068 lw v0,104(s8) -8002cf34: 00000000 nop -8002cf38: 8c420024 lw v0,36(v0) -8002cf3c: 8fc30068 lw v1,104(s8) -8002cf40: 00000000 nop -8002cf44: 84630000 lh v1,0(v1) -8002cf48: 00000000 nop -8002cf4c: 00431021 addu v0,v0,v1 -8002cf50: afc20028 sw v0,40(s8) - mcy = sprite->my + sprite->y; -8002cf54: 8fc20068 lw v0,104(s8) -8002cf58: 00000000 nop -8002cf5c: 8c420028 lw v0,40(v0) -8002cf60: 8fc30068 lw v1,104(s8) -8002cf64: 00000000 nop -8002cf68: 84630002 lh v1,2(v1) -8002cf6c: 00000000 nop -8002cf70: 00431021 addu v0,v0,v1 -8002cf74: afc2002c sw v0,44(s8) - - gs_vbuf[0][0] = -(mcx - sprite->x); -8002cf78: 8fc20068 lw v0,104(s8) -8002cf7c: 00000000 nop -8002cf80: 84420000 lh v0,0(v0) -8002cf84: 00000000 nop -8002cf88: 00401821 move v1,v0 -8002cf8c: 8fc20028 lw v0,40(s8) -8002cf90: 00000000 nop -8002cf94: 00621023 subu v0,v1,v0 -8002cf98: 00402021 move a0,v0 -8002cf9c: 0c00fc5c jal 8003f170 <__floatsidf> -8002cfa0: 00000000 nop -8002cfa4: 3c048007 lui a0,0x8007 -8002cfa8: ac821b70 sw v0,7024(a0) -8002cfac: ac831b74 sw v1,7028(a0) - gs_vbuf[0][1] = (mcy - sprite->y); -8002cfb0: 8fc20068 lw v0,104(s8) -8002cfb4: 00000000 nop -8002cfb8: 84420002 lh v0,2(v0) -8002cfbc: 00000000 nop -8002cfc0: 00401821 move v1,v0 -8002cfc4: 8fc2002c lw v0,44(s8) -8002cfc8: 00000000 nop -8002cfcc: 00431023 subu v0,v0,v1 -8002cfd0: 00402021 move a0,v0 -8002cfd4: 0c00fc5c jal 8003f170 <__floatsidf> -8002cfd8: 00000000 nop -8002cfdc: 3c048007 lui a0,0x8007 -8002cfe0: 24841b70 addiu a0,a0,7024 -8002cfe4: ac820008 sw v0,8(a0) -8002cfe8: ac83000c sw v1,12(a0) - - gs_vbuf[1][0] = -(mcx - sprite->x); -8002cfec: 8fc20068 lw v0,104(s8) -8002cff0: 00000000 nop -8002cff4: 84420000 lh v0,0(v0) -8002cff8: 00000000 nop -8002cffc: 00401821 move v1,v0 -8002d000: 8fc20028 lw v0,40(s8) -8002d004: 00000000 nop -8002d008: 00621023 subu v0,v1,v0 -8002d00c: 00402021 move a0,v0 -8002d010: 0c00fc5c jal 8003f170 <__floatsidf> -8002d014: 00000000 nop -8002d018: 3c048007 lui a0,0x8007 -8002d01c: 24841b70 addiu a0,a0,7024 -8002d020: ac820018 sw v0,24(a0) -8002d024: ac83001c sw v1,28(a0) - gs_vbuf[1][1] = (mcy - (sprite->y + gs_calculate_scaled_size(sprite->h, sprite->scaley))); -8002d028: 8fc20068 lw v0,104(s8) -8002d02c: 00000000 nop -8002d030: 84420002 lh v0,2(v0) -8002d034: 00000000 nop -8002d038: 00408021 move s0,v0 -8002d03c: 8fc20068 lw v0,104(s8) -8002d040: 00000000 nop -8002d044: 84420008 lh v0,8(v0) -8002d048: 00000000 nop -8002d04c: 00401821 move v1,v0 -8002d050: 8fc20068 lw v0,104(s8) -8002d054: 00000000 nop -8002d058: 8c42001c lw v0,28(v0) -8002d05c: 00000000 nop -8002d060: 00402821 move a1,v0 -8002d064: 00602021 move a0,v1 -8002d068: 0c00ae07 jal 8002b81c -8002d06c: 00000000 nop -8002d070: 02021021 addu v0,s0,v0 -8002d074: 8fc3002c lw v1,44(s8) -8002d078: 00000000 nop -8002d07c: 00621023 subu v0,v1,v0 -8002d080: 00402021 move a0,v0 -8002d084: 0c00fc5c jal 8003f170 <__floatsidf> -8002d088: 00000000 nop -8002d08c: 3c048007 lui a0,0x8007 -8002d090: 24841b70 addiu a0,a0,7024 -8002d094: ac820020 sw v0,32(a0) -8002d098: ac830024 sw v1,36(a0) - - gs_vbuf[2][0] = -(mcx - (sprite->x + gs_calculate_scaled_size(sprite->w, sprite->scalex))); -8002d09c: 8fc20068 lw v0,104(s8) -8002d0a0: 00000000 nop -8002d0a4: 84420000 lh v0,0(v0) -8002d0a8: 00000000 nop -8002d0ac: 00408021 move s0,v0 -8002d0b0: 8fc20068 lw v0,104(s8) -8002d0b4: 00000000 nop -8002d0b8: 84420006 lh v0,6(v0) -8002d0bc: 00000000 nop -8002d0c0: 00401821 move v1,v0 -8002d0c4: 8fc20068 lw v0,104(s8) -8002d0c8: 00000000 nop -8002d0cc: 8c420018 lw v0,24(v0) -8002d0d0: 00000000 nop -8002d0d4: 00402821 move a1,v0 -8002d0d8: 00602021 move a0,v1 -8002d0dc: 0c00ae07 jal 8002b81c -8002d0e0: 00000000 nop -8002d0e4: 02021821 addu v1,s0,v0 -8002d0e8: 8fc20028 lw v0,40(s8) -8002d0ec: 00000000 nop -8002d0f0: 00621023 subu v0,v1,v0 -8002d0f4: 00402021 move a0,v0 -8002d0f8: 0c00fc5c jal 8003f170 <__floatsidf> -8002d0fc: 00000000 nop -8002d100: 3c048007 lui a0,0x8007 -8002d104: 24841b70 addiu a0,a0,7024 -8002d108: ac820030 sw v0,48(a0) -8002d10c: ac830034 sw v1,52(a0) - gs_vbuf[2][1] = (mcy - sprite->y); -8002d110: 8fc20068 lw v0,104(s8) -8002d114: 00000000 nop -8002d118: 84420002 lh v0,2(v0) -8002d11c: 00000000 nop -8002d120: 00401821 move v1,v0 -8002d124: 8fc2002c lw v0,44(s8) -8002d128: 00000000 nop -8002d12c: 00431023 subu v0,v0,v1 -8002d130: 00402021 move a0,v0 -8002d134: 0c00fc5c jal 8003f170 <__floatsidf> -8002d138: 00000000 nop -8002d13c: 3c048007 lui a0,0x8007 -8002d140: 24841b70 addiu a0,a0,7024 -8002d144: ac820038 sw v0,56(a0) -8002d148: ac83003c sw v1,60(a0) - - gs_vbuf[3][0] = -(mcx - (sprite->x + gs_calculate_scaled_size(sprite->w, sprite->scalex))); -8002d14c: 8fc20068 lw v0,104(s8) -8002d150: 00000000 nop -8002d154: 84420000 lh v0,0(v0) -8002d158: 00000000 nop -8002d15c: 00408021 move s0,v0 -8002d160: 8fc20068 lw v0,104(s8) -8002d164: 00000000 nop -8002d168: 84420006 lh v0,6(v0) -8002d16c: 00000000 nop -8002d170: 00401821 move v1,v0 -8002d174: 8fc20068 lw v0,104(s8) -8002d178: 00000000 nop -8002d17c: 8c420018 lw v0,24(v0) -8002d180: 00000000 nop -8002d184: 00402821 move a1,v0 -8002d188: 00602021 move a0,v1 -8002d18c: 0c00ae07 jal 8002b81c -8002d190: 00000000 nop -8002d194: 02021821 addu v1,s0,v0 -8002d198: 8fc20028 lw v0,40(s8) -8002d19c: 00000000 nop -8002d1a0: 00621023 subu v0,v1,v0 -8002d1a4: 00402021 move a0,v0 -8002d1a8: 0c00fc5c jal 8003f170 <__floatsidf> -8002d1ac: 00000000 nop -8002d1b0: 3c048007 lui a0,0x8007 -8002d1b4: 24841b70 addiu a0,a0,7024 -8002d1b8: ac820048 sw v0,72(a0) -8002d1bc: ac83004c sw v1,76(a0) - gs_vbuf[3][1] = (mcy - (sprite->y + gs_calculate_scaled_size(sprite->h, sprite->scaley))); -8002d1c0: 8fc20068 lw v0,104(s8) -8002d1c4: 00000000 nop -8002d1c8: 84420002 lh v0,2(v0) -8002d1cc: 00000000 nop -8002d1d0: 00408021 move s0,v0 -8002d1d4: 8fc20068 lw v0,104(s8) -8002d1d8: 00000000 nop -8002d1dc: 84420008 lh v0,8(v0) -8002d1e0: 00000000 nop -8002d1e4: 00401821 move v1,v0 -8002d1e8: 8fc20068 lw v0,104(s8) -8002d1ec: 00000000 nop -8002d1f0: 8c42001c lw v0,28(v0) -8002d1f4: 00000000 nop -8002d1f8: 00402821 move a1,v0 -8002d1fc: 00602021 move a0,v1 -8002d200: 0c00ae07 jal 8002b81c -8002d204: 00000000 nop -8002d208: 02021021 addu v0,s0,v0 -8002d20c: 8fc3002c lw v1,44(s8) -8002d210: 00000000 nop -8002d214: 00621023 subu v0,v1,v0 -8002d218: 00402021 move a0,v0 -8002d21c: 0c00fc5c jal 8003f170 <__floatsidf> -8002d220: 00000000 nop -8002d224: 3c048007 lui a0,0x8007 -8002d228: 24841b70 addiu a0,a0,7024 -8002d22c: ac820050 sw v0,80(a0) -8002d230: ac830054 sw v1,84(a0) - - for(x = 0; x < 4; x++) -8002d234: afc00018 sw zero,24(s8) -8002d238: 1000006c b 8002d3ec -8002d23c: 00000000 nop - { - gs_internal_vector_rotate(0, 0, sprite->rotate, gs_vbuf[x], gs_vbuf[x]); -8002d240: 8fc20068 lw v0,104(s8) -8002d244: 00000000 nop -8002d248: 8c440020 lw a0,32(v0) -8002d24c: 8fc20018 lw v0,24(s8) -8002d250: 00000000 nop -8002d254: 00401821 move v1,v0 -8002d258: 000310c0 sll v0,v1,0x3 -8002d25c: 00401821 move v1,v0 -8002d260: 00031080 sll v0,v1,0x2 -8002d264: 00431023 subu v0,v0,v1 -8002d268: 3c038007 lui v1,0x8007 -8002d26c: 24631b70 addiu v1,v1,7024 -8002d270: 00432821 addu a1,v0,v1 -8002d274: 8fc20018 lw v0,24(s8) -8002d278: 00000000 nop -8002d27c: 00401821 move v1,v0 -8002d280: 000310c0 sll v0,v1,0x3 -8002d284: 00401821 move v1,v0 -8002d288: 00031080 sll v0,v1,0x2 -8002d28c: 00431023 subu v0,v0,v1 -8002d290: 3c038007 lui v1,0x8007 -8002d294: 24631b70 addiu v1,v1,7024 -8002d298: 00431021 addu v0,v0,v1 -8002d29c: afa20010 sw v0,16(sp) -8002d2a0: 00a03821 move a3,a1 -8002d2a4: 00803021 move a2,a0 -8002d2a8: 00002821 move a1,zero -8002d2ac: 00002021 move a0,zero -8002d2b0: 0c00c347 jal 80030d1c -8002d2b4: 00000000 nop - tpoly4.x[x] = mcx + gs_vbuf[x][0]; -8002d2b8: 8fc40028 lw a0,40(s8) -8002d2bc: 0c00fc5c jal 8003f170 <__floatsidf> -8002d2c0: 00000000 nop -8002d2c4: 00404021 move t0,v0 -8002d2c8: 00604821 move t1,v1 -8002d2cc: 3c048007 lui a0,0x8007 -8002d2d0: 8fc20018 lw v0,24(s8) -8002d2d4: 00000000 nop -8002d2d8: 00401821 move v1,v0 -8002d2dc: 000310c0 sll v0,v1,0x3 -8002d2e0: 00401821 move v1,v0 -8002d2e4: 00031080 sll v0,v1,0x2 -8002d2e8: 00431023 subu v0,v0,v1 -8002d2ec: 24831b70 addiu v1,a0,7024 -8002d2f0: 00431021 addu v0,v0,v1 -8002d2f4: 8c430004 lw v1,4(v0) -8002d2f8: 8c420000 lw v0,0(v0) -8002d2fc: 00000000 nop -8002d300: 00403021 move a2,v0 -8002d304: 00603821 move a3,v1 -8002d308: 01002021 move a0,t0 -8002d30c: 01202821 move a1,t1 -8002d310: 0c00f3d7 jal 8003cf5c <__adddf3> -8002d314: 00000000 nop -8002d318: 00402021 move a0,v0 -8002d31c: 00602821 move a1,v1 -8002d320: 0c00fc39 jal 8003f0e4 <__fixdfsi> -8002d324: 00000000 nop -8002d328: 00021c00 sll v1,v0,0x10 -8002d32c: 00031c03 sra v1,v1,0x10 -8002d330: 8fc20018 lw v0,24(s8) -8002d334: 00000000 nop -8002d338: 00021040 sll v0,v0,0x1 -8002d33c: 27c40018 addiu a0,s8,24 -8002d340: 00821021 addu v0,a0,v0 -8002d344: a4430018 sh v1,24(v0) - tpoly4.y[x] = mcy + gs_vbuf[x][1]; -8002d348: 8fc4002c lw a0,44(s8) -8002d34c: 0c00fc5c jal 8003f170 <__floatsidf> -8002d350: 00000000 nop -8002d354: 00404021 move t0,v0 -8002d358: 00604821 move t1,v1 -8002d35c: 3c048007 lui a0,0x8007 -8002d360: 8fc20018 lw v0,24(s8) -8002d364: 00000000 nop -8002d368: 00401821 move v1,v0 -8002d36c: 000310c0 sll v0,v1,0x3 -8002d370: 00401821 move v1,v0 -8002d374: 00031080 sll v0,v1,0x2 -8002d378: 00431023 subu v0,v0,v1 -8002d37c: 24831b70 addiu v1,a0,7024 -8002d380: 00431021 addu v0,v0,v1 -8002d384: 8c43000c lw v1,12(v0) -8002d388: 8c420008 lw v0,8(v0) -8002d38c: 00000000 nop -8002d390: 00403021 move a2,v0 -8002d394: 00603821 move a3,v1 -8002d398: 01002021 move a0,t0 -8002d39c: 01202821 move a1,t1 -8002d3a0: 0c00f3d7 jal 8003cf5c <__adddf3> -8002d3a4: 00000000 nop -8002d3a8: 00402021 move a0,v0 -8002d3ac: 00602821 move a1,v1 -8002d3b0: 0c00fc39 jal 8003f0e4 <__fixdfsi> -8002d3b4: 00000000 nop -8002d3b8: 00021c00 sll v1,v0,0x10 -8002d3bc: 00031c03 sra v1,v1,0x10 -8002d3c0: 8fc20018 lw v0,24(s8) -8002d3c4: 00000000 nop -8002d3c8: 24420004 addiu v0,v0,4 -8002d3cc: 00021040 sll v0,v0,0x1 -8002d3d0: 27c40018 addiu a0,s8,24 -8002d3d4: 00821021 addu v0,a0,v0 -8002d3d8: a4430018 sh v1,24(v0) - gs_vbuf[2][1] = (mcy - sprite->y); - - gs_vbuf[3][0] = -(mcx - (sprite->x + gs_calculate_scaled_size(sprite->w, sprite->scalex))); - gs_vbuf[3][1] = (mcy - (sprite->y + gs_calculate_scaled_size(sprite->h, sprite->scaley))); - - for(x = 0; x < 4; x++) -8002d3dc: 8fc20018 lw v0,24(s8) -8002d3e0: 00000000 nop -8002d3e4: 24420001 addiu v0,v0,1 -8002d3e8: afc20018 sw v0,24(s8) -8002d3ec: 8fc20018 lw v0,24(s8) -8002d3f0: 00000000 nop -8002d3f4: 28420004 slti v0,v0,4 -8002d3f8: 1440ff91 bnez v0,8002d240 -8002d3fc: 00000000 nop - gs_internal_vector_rotate(0, 0, sprite->rotate, gs_vbuf[x], gs_vbuf[x]); - tpoly4.x[x] = mcx + gs_vbuf[x][0]; - tpoly4.y[x] = mcy + gs_vbuf[x][1]; - } - - tpoly4.r = sprite->r; -8002d400: 8fc20068 lw v0,104(s8) -8002d404: 00000000 nop -8002d408: 9042000e lbu v0,14(v0) -8002d40c: 00000000 nop -8002d410: a3c20040 sb v0,64(s8) - tpoly4.g = sprite->g; -8002d414: 8fc20068 lw v0,104(s8) -8002d418: 00000000 nop -8002d41c: 9042000f lbu v0,15(v0) -8002d420: 00000000 nop -8002d424: a3c20041 sb v0,65(s8) - tpoly4.b = sprite->b; -8002d428: 8fc20068 lw v0,104(s8) -8002d42c: 00000000 nop -8002d430: 90420010 lbu v0,16(v0) -8002d434: 00000000 nop -8002d438: a3c20042 sb v0,66(s8) - tpoly4.attribute = sprite->attribute; -8002d43c: 8fc20068 lw v0,104(s8) -8002d440: 00000000 nop -8002d444: 8c420014 lw v0,20(v0) -8002d448: 00000000 nop -8002d44c: afc20054 sw v0,84(s8) - tpoly4.tpage = sprite->tpage; -8002d450: 8fc20068 lw v0,104(s8) -8002d454: 00000000 nop -8002d458: 90420011 lbu v0,17(v0) -8002d45c: 00000000 nop -8002d460: a3c20048 sb v0,72(s8) - tpoly4.cx = sprite->cx; -8002d464: 8fc20068 lw v0,104(s8) -8002d468: 00000000 nop -8002d46c: 8442000a lh v0,10(v0) -8002d470: 00000000 nop -8002d474: a7c20044 sh v0,68(s8) - tpoly4.cy = sprite->cy; -8002d478: 8fc20068 lw v0,104(s8) -8002d47c: 00000000 nop -8002d480: 8442000c lh v0,12(v0) -8002d484: 00000000 nop -8002d488: a7c20046 sh v0,70(s8) - - GsSortTPoly4(&tpoly4); -8002d48c: 27c20030 addiu v0,s8,48 -8002d490: 00402021 move a0,v0 -8002d494: 0c00b7fe jal 8002dff8 -8002d498: 00000000 nop - } - else - { - GsSortSimpleSprite(sprite); - } -} -8002d49c: 1000016c b 8002da50 -8002d4a0: 00000000 nop - tpoly4.cx = sprite->cx; - tpoly4.cy = sprite->cy; - - GsSortTPoly4(&tpoly4); - } - else if((sprite->attribute & (H_FLIP|V_FLIP)) || -8002d4a4: 8fc20068 lw v0,104(s8) -8002d4a8: 00000000 nop -8002d4ac: 8c420014 lw v0,20(v0) -8002d4b0: 00000000 nop -8002d4b4: 30420060 andi v0,v0,0x60 -8002d4b8: 1440000d bnez v0,8002d4f0 -8002d4bc: 00000000 nop - sprite->scalex != 0 || sprite->scaley != 0) -8002d4c0: 8fc20068 lw v0,104(s8) -8002d4c4: 00000000 nop -8002d4c8: 8c420018 lw v0,24(v0) -8002d4cc: 00000000 nop - tpoly4.cx = sprite->cx; - tpoly4.cy = sprite->cy; - - GsSortTPoly4(&tpoly4); - } - else if((sprite->attribute & (H_FLIP|V_FLIP)) || -8002d4d0: 14400007 bnez v0,8002d4f0 -8002d4d4: 00000000 nop - sprite->scalex != 0 || sprite->scaley != 0) -8002d4d8: 8fc20068 lw v0,104(s8) -8002d4dc: 00000000 nop -8002d4e0: 8c42001c lw v0,28(v0) -8002d4e4: 00000000 nop -8002d4e8: 10400156 beqz v0,8002da44 -8002d4ec: 00000000 nop - { - x = sprite->w; -8002d4f0: 8fc20068 lw v0,104(s8) -8002d4f4: 00000000 nop -8002d4f8: 84420006 lh v0,6(v0) -8002d4fc: 00000000 nop -8002d500: afc20018 sw v0,24(s8) - if(x>256)x=256; -8002d504: 8fc20018 lw v0,24(s8) -8002d508: 00000000 nop -8002d50c: 28420101 slti v0,v0,257 -8002d510: 14400003 bnez v0,8002d520 -8002d514: 00000000 nop -8002d518: 24020100 li v0,256 -8002d51c: afc20018 sw v0,24(s8) - - y = sprite->h; -8002d520: 8fc20068 lw v0,104(s8) -8002d524: 00000000 nop -8002d528: 84420008 lh v0,8(v0) -8002d52c: 00000000 nop -8002d530: afc2001c sw v0,28(s8) - if(y>256)y=256; -8002d534: 8fc2001c lw v0,28(s8) -8002d538: 00000000 nop -8002d53c: 28420101 slti v0,v0,257 -8002d540: 14400003 bnez v0,8002d550 -8002d544: 00000000 nop -8002d548: 24020100 li v0,256 -8002d54c: afc2001c sw v0,28(s8) - - if(sprite->scalex > 8) -8002d550: 8fc20068 lw v0,104(s8) -8002d554: 00000000 nop -8002d558: 8c420018 lw v0,24(v0) -8002d55c: 00000000 nop -8002d560: 28420009 slti v0,v0,9 -8002d564: 14400012 bnez v0,8002d5b0 -8002d568: 00000000 nop - { - x *= sprite->scalex; -8002d56c: 8fc20068 lw v0,104(s8) -8002d570: 00000000 nop -8002d574: 8c420018 lw v0,24(v0) -8002d578: 8fc30018 lw v1,24(s8) -8002d57c: 00000000 nop -8002d580: 00620018 mult v1,v0 -8002d584: 00001012 mflo v0 -8002d588: afc20018 sw v0,24(s8) - x /= 4096; -8002d58c: 8fc20018 lw v0,24(s8) -8002d590: 00000000 nop -8002d594: 04410002 bgez v0,8002d5a0 -8002d598: 00000000 nop -8002d59c: 24420fff addiu v0,v0,4095 -8002d5a0: 00021303 sra v0,v0,0xc -8002d5a4: afc20018 sw v0,24(s8) -8002d5a8: 10000026 b 8002d644 -8002d5ac: 00000000 nop - } - else - { - if(sprite->scalex >= 2) -8002d5b0: 8fc20068 lw v0,104(s8) -8002d5b4: 00000000 nop -8002d5b8: 8c420018 lw v0,24(v0) -8002d5bc: 00000000 nop -8002d5c0: 28420002 slti v0,v0,2 -8002d5c4: 1440000b bnez v0,8002d5f4 -8002d5c8: 00000000 nop - x*=sprite->scalex; -8002d5cc: 8fc20068 lw v0,104(s8) -8002d5d0: 00000000 nop -8002d5d4: 8c420018 lw v0,24(v0) -8002d5d8: 8fc30018 lw v1,24(s8) -8002d5dc: 00000000 nop -8002d5e0: 00620018 mult v1,v0 -8002d5e4: 00001012 mflo v0 -8002d5e8: afc20018 sw v0,24(s8) -8002d5ec: 10000015 b 8002d644 -8002d5f0: 00000000 nop - else if(sprite->scalex <= -2) -8002d5f4: 8fc20068 lw v0,104(s8) -8002d5f8: 00000000 nop -8002d5fc: 8c420018 lw v0,24(v0) -8002d600: 00000000 nop -8002d604: 2842ffff slti v0,v0,-1 -8002d608: 1040000e beqz v0,8002d644 -8002d60c: 00000000 nop - x/=-sprite->scalex; -8002d610: 8fc20068 lw v0,104(s8) -8002d614: 00000000 nop -8002d618: 8c420018 lw v0,24(v0) -8002d61c: 00000000 nop -8002d620: 00021023 negu v0,v0 -8002d624: 8fc30018 lw v1,24(s8) -8002d628: 00000000 nop -8002d62c: 14400002 bnez v0,8002d638 -8002d630: 0062001a div zero,v1,v0 -8002d634: 0007000d break 0x7 -8002d638: 00001010 mfhi v0 -8002d63c: 00001012 mflo v0 -8002d640: afc20018 sw v0,24(s8) - } - - if(sprite->scaley > 8) -8002d644: 8fc20068 lw v0,104(s8) -8002d648: 00000000 nop -8002d64c: 8c42001c lw v0,28(v0) -8002d650: 00000000 nop -8002d654: 28420009 slti v0,v0,9 -8002d658: 14400012 bnez v0,8002d6a4 -8002d65c: 00000000 nop - { - y *= sprite->scaley; -8002d660: 8fc20068 lw v0,104(s8) -8002d664: 00000000 nop -8002d668: 8c42001c lw v0,28(v0) -8002d66c: 8fc3001c lw v1,28(s8) -8002d670: 00000000 nop -8002d674: 00620018 mult v1,v0 -8002d678: 00001012 mflo v0 -8002d67c: afc2001c sw v0,28(s8) - y /= 4096; -8002d680: 8fc2001c lw v0,28(s8) -8002d684: 00000000 nop -8002d688: 04410002 bgez v0,8002d694 -8002d68c: 00000000 nop -8002d690: 24420fff addiu v0,v0,4095 -8002d694: 00021303 sra v0,v0,0xc -8002d698: afc2001c sw v0,28(s8) -8002d69c: 10000026 b 8002d738 -8002d6a0: 00000000 nop - } - else - { - if(sprite->scaley >= 2) -8002d6a4: 8fc20068 lw v0,104(s8) -8002d6a8: 00000000 nop -8002d6ac: 8c42001c lw v0,28(v0) -8002d6b0: 00000000 nop -8002d6b4: 28420002 slti v0,v0,2 -8002d6b8: 1440000b bnez v0,8002d6e8 -8002d6bc: 00000000 nop - y*=sprite->scaley; -8002d6c0: 8fc20068 lw v0,104(s8) -8002d6c4: 00000000 nop -8002d6c8: 8c42001c lw v0,28(v0) -8002d6cc: 8fc3001c lw v1,28(s8) -8002d6d0: 00000000 nop -8002d6d4: 00620018 mult v1,v0 -8002d6d8: 00001012 mflo v0 -8002d6dc: afc2001c sw v0,28(s8) -8002d6e0: 10000015 b 8002d738 -8002d6e4: 00000000 nop - else if(sprite->scaley <= -2) -8002d6e8: 8fc20068 lw v0,104(s8) -8002d6ec: 00000000 nop -8002d6f0: 8c42001c lw v0,28(v0) -8002d6f4: 00000000 nop -8002d6f8: 2842ffff slti v0,v0,-1 -8002d6fc: 1040000e beqz v0,8002d738 -8002d700: 00000000 nop - y/=-sprite->scaley; -8002d704: 8fc20068 lw v0,104(s8) -8002d708: 00000000 nop -8002d70c: 8c42001c lw v0,28(v0) -8002d710: 00000000 nop -8002d714: 00021023 negu v0,v0 -8002d718: 8fc3001c lw v1,28(s8) -8002d71c: 00000000 nop -8002d720: 14400002 bnez v0,8002d72c -8002d724: 0062001a div zero,v1,v0 -8002d728: 0007000d break 0x7 -8002d72c: 00001010 mfhi v0 -8002d730: 00001012 mflo v0 -8002d734: afc2001c sw v0,28(s8) - } - - tpoly4.x[0] = tpoly4.x[1] = sx; -8002d738: 8fc20020 lw v0,32(s8) -8002d73c: 00000000 nop -8002d740: 00021400 sll v0,v0,0x10 -8002d744: 00021403 sra v0,v0,0x10 -8002d748: a7c20032 sh v0,50(s8) -8002d74c: 87c20032 lh v0,50(s8) -8002d750: 00000000 nop -8002d754: a7c20030 sh v0,48(s8) - tpoly4.x[2] = tpoly4.x[3] = (sx + x); -8002d758: 8fc20020 lw v0,32(s8) -8002d75c: 00000000 nop -8002d760: 3043ffff andi v1,v0,0xffff -8002d764: 8fc20018 lw v0,24(s8) -8002d768: 00000000 nop -8002d76c: 3042ffff andi v0,v0,0xffff -8002d770: 00621021 addu v0,v1,v0 -8002d774: 3042ffff andi v0,v0,0xffff -8002d778: 00021400 sll v0,v0,0x10 -8002d77c: 00021403 sra v0,v0,0x10 -8002d780: a7c20036 sh v0,54(s8) -8002d784: 87c20036 lh v0,54(s8) -8002d788: 00000000 nop -8002d78c: a7c20034 sh v0,52(s8) - tpoly4.y[0] = tpoly4.y[2] = sy; -8002d790: 8fc20024 lw v0,36(s8) -8002d794: 00000000 nop -8002d798: 00021400 sll v0,v0,0x10 -8002d79c: 00021403 sra v0,v0,0x10 -8002d7a0: a7c2003c sh v0,60(s8) -8002d7a4: 87c2003c lh v0,60(s8) -8002d7a8: 00000000 nop -8002d7ac: a7c20038 sh v0,56(s8) - tpoly4.y[1] = tpoly4.y[3] = (sy + y); -8002d7b0: 8fc20024 lw v0,36(s8) -8002d7b4: 00000000 nop -8002d7b8: 3043ffff andi v1,v0,0xffff -8002d7bc: 8fc2001c lw v0,28(s8) -8002d7c0: 00000000 nop -8002d7c4: 3042ffff andi v0,v0,0xffff -8002d7c8: 00621021 addu v0,v1,v0 -8002d7cc: 3042ffff andi v0,v0,0xffff -8002d7d0: 00021400 sll v0,v0,0x10 -8002d7d4: 00021403 sra v0,v0,0x10 -8002d7d8: a7c2003e sh v0,62(s8) -8002d7dc: 87c2003e lh v0,62(s8) -8002d7e0: 00000000 nop -8002d7e4: a7c2003a sh v0,58(s8) - - if(sprite->attribute & H_FLIP) -8002d7e8: 8fc20068 lw v0,104(s8) -8002d7ec: 00000000 nop -8002d7f0: 8c420014 lw v0,20(v0) -8002d7f4: 00000000 nop -8002d7f8: 30420020 andi v0,v0,0x20 -8002d7fc: 1040001b beqz v0,8002d86c -8002d800: 00000000 nop - { - tpoly4.u[0] = tpoly4.u[1] = (sprite->u + sprite->w) - 1; -8002d804: 8fc20068 lw v0,104(s8) -8002d808: 00000000 nop -8002d80c: 90430004 lbu v1,4(v0) -8002d810: 8fc20068 lw v0,104(s8) -8002d814: 00000000 nop -8002d818: 84420006 lh v0,6(v0) -8002d81c: 00000000 nop -8002d820: 304200ff andi v0,v0,0xff -8002d824: 00621021 addu v0,v1,v0 -8002d828: 304200ff andi v0,v0,0xff -8002d82c: 2442ffff addiu v0,v0,-1 -8002d830: 304200ff andi v0,v0,0xff -8002d834: a3c2004a sb v0,74(s8) -8002d838: 93c2004a lbu v0,74(s8) -8002d83c: 00000000 nop -8002d840: a3c20049 sb v0,73(s8) - tpoly4.u[2] = tpoly4.u[3] = sprite->u; -8002d844: 8fc20068 lw v0,104(s8) -8002d848: 00000000 nop -8002d84c: 90420004 lbu v0,4(v0) -8002d850: 00000000 nop -8002d854: a3c2004c sb v0,76(s8) -8002d858: 93c2004c lbu v0,76(s8) -8002d85c: 00000000 nop -8002d860: a3c2004b sb v0,75(s8) -8002d864: 10000017 b 8002d8c4 -8002d868: 00000000 nop - } - else - { - tpoly4.u[0] = tpoly4.u[1] = sprite->u; -8002d86c: 8fc20068 lw v0,104(s8) -8002d870: 00000000 nop -8002d874: 90420004 lbu v0,4(v0) -8002d878: 00000000 nop -8002d87c: a3c2004a sb v0,74(s8) -8002d880: 93c2004a lbu v0,74(s8) -8002d884: 00000000 nop -8002d888: a3c20049 sb v0,73(s8) - tpoly4.u[2] = tpoly4.u[3] = (sprite->u + sprite->w); -8002d88c: 8fc20068 lw v0,104(s8) -8002d890: 00000000 nop -8002d894: 90430004 lbu v1,4(v0) -8002d898: 8fc20068 lw v0,104(s8) -8002d89c: 00000000 nop -8002d8a0: 84420006 lh v0,6(v0) -8002d8a4: 00000000 nop -8002d8a8: 304200ff andi v0,v0,0xff -8002d8ac: 00621021 addu v0,v1,v0 -8002d8b0: 304200ff andi v0,v0,0xff -8002d8b4: a3c2004c sb v0,76(s8) -8002d8b8: 93c2004c lbu v0,76(s8) -8002d8bc: 00000000 nop -8002d8c0: a3c2004b sb v0,75(s8) - } - - if(sprite->attribute & V_FLIP) -8002d8c4: 8fc20068 lw v0,104(s8) -8002d8c8: 00000000 nop -8002d8cc: 8c420014 lw v0,20(v0) -8002d8d0: 00000000 nop -8002d8d4: 30420040 andi v0,v0,0x40 -8002d8d8: 1040001b beqz v0,8002d948 -8002d8dc: 00000000 nop - { - tpoly4.v[0] = tpoly4.v[2] = (sprite->v + sprite->h) - 1; -8002d8e0: 8fc20068 lw v0,104(s8) -8002d8e4: 00000000 nop -8002d8e8: 90430005 lbu v1,5(v0) -8002d8ec: 8fc20068 lw v0,104(s8) -8002d8f0: 00000000 nop -8002d8f4: 84420008 lh v0,8(v0) -8002d8f8: 00000000 nop -8002d8fc: 304200ff andi v0,v0,0xff -8002d900: 00621021 addu v0,v1,v0 -8002d904: 304200ff andi v0,v0,0xff -8002d908: 2442ffff addiu v0,v0,-1 -8002d90c: 304200ff andi v0,v0,0xff -8002d910: a3c2004f sb v0,79(s8) -8002d914: 93c2004f lbu v0,79(s8) -8002d918: 00000000 nop -8002d91c: a3c2004d sb v0,77(s8) - tpoly4.v[1] = tpoly4.v[3] = sprite->v; -8002d920: 8fc20068 lw v0,104(s8) -8002d924: 00000000 nop -8002d928: 90420005 lbu v0,5(v0) -8002d92c: 00000000 nop -8002d930: a3c20050 sb v0,80(s8) -8002d934: 93c20050 lbu v0,80(s8) -8002d938: 00000000 nop -8002d93c: a3c2004e sb v0,78(s8) -8002d940: 10000017 b 8002d9a0 -8002d944: 00000000 nop - } - else - { - tpoly4.v[0] = tpoly4.v[2] = sprite->v; -8002d948: 8fc20068 lw v0,104(s8) -8002d94c: 00000000 nop -8002d950: 90420005 lbu v0,5(v0) -8002d954: 00000000 nop -8002d958: a3c2004f sb v0,79(s8) -8002d95c: 93c2004f lbu v0,79(s8) -8002d960: 00000000 nop -8002d964: a3c2004d sb v0,77(s8) - tpoly4.v[1] = tpoly4.v[3] = (sprite->v + sprite->h); -8002d968: 8fc20068 lw v0,104(s8) -8002d96c: 00000000 nop -8002d970: 90430005 lbu v1,5(v0) -8002d974: 8fc20068 lw v0,104(s8) -8002d978: 00000000 nop -8002d97c: 84420008 lh v0,8(v0) -8002d980: 00000000 nop -8002d984: 304200ff andi v0,v0,0xff -8002d988: 00621021 addu v0,v1,v0 -8002d98c: 304200ff andi v0,v0,0xff -8002d990: a3c20050 sb v0,80(s8) -8002d994: 93c20050 lbu v0,80(s8) -8002d998: 00000000 nop -8002d99c: a3c2004e sb v0,78(s8) - } - - tpoly4.r = sprite->r; -8002d9a0: 8fc20068 lw v0,104(s8) -8002d9a4: 00000000 nop -8002d9a8: 9042000e lbu v0,14(v0) -8002d9ac: 00000000 nop -8002d9b0: a3c20040 sb v0,64(s8) - tpoly4.g = sprite->g; -8002d9b4: 8fc20068 lw v0,104(s8) -8002d9b8: 00000000 nop -8002d9bc: 9042000f lbu v0,15(v0) -8002d9c0: 00000000 nop -8002d9c4: a3c20041 sb v0,65(s8) - tpoly4.b = sprite->b; -8002d9c8: 8fc20068 lw v0,104(s8) -8002d9cc: 00000000 nop -8002d9d0: 90420010 lbu v0,16(v0) -8002d9d4: 00000000 nop -8002d9d8: a3c20042 sb v0,66(s8) - tpoly4.attribute = sprite->attribute; -8002d9dc: 8fc20068 lw v0,104(s8) -8002d9e0: 00000000 nop -8002d9e4: 8c420014 lw v0,20(v0) -8002d9e8: 00000000 nop -8002d9ec: afc20054 sw v0,84(s8) - tpoly4.tpage = sprite->tpage; -8002d9f0: 8fc20068 lw v0,104(s8) -8002d9f4: 00000000 nop -8002d9f8: 90420011 lbu v0,17(v0) -8002d9fc: 00000000 nop -8002da00: a3c20048 sb v0,72(s8) - tpoly4.cx = sprite->cx; -8002da04: 8fc20068 lw v0,104(s8) -8002da08: 00000000 nop -8002da0c: 8442000a lh v0,10(v0) -8002da10: 00000000 nop -8002da14: a7c20044 sh v0,68(s8) - tpoly4.cy = sprite->cy; -8002da18: 8fc20068 lw v0,104(s8) -8002da1c: 00000000 nop -8002da20: 8442000c lh v0,12(v0) -8002da24: 00000000 nop -8002da28: a7c20046 sh v0,70(s8) - - GsSortTPoly4(&tpoly4); -8002da2c: 27c20030 addiu v0,s8,48 -8002da30: 00402021 move a0,v0 -8002da34: 0c00b7fe jal 8002dff8 -8002da38: 00000000 nop - } - else - { - GsSortSimpleSprite(sprite); - } -} -8002da3c: 10000004 b 8002da50 -8002da40: 00000000 nop - - GsSortTPoly4(&tpoly4); - } - else - { - GsSortSimpleSprite(sprite); -8002da44: 8fc40068 lw a0,104(s8) -8002da48: 0c00b69c jal 8002da70 -8002da4c: 00000000 nop - } -} -8002da50: 00000000 nop -8002da54: 03c0e821 move sp,s8 -8002da58: 8fbf0064 lw ra,100(sp) -8002da5c: 8fbe0060 lw s8,96(sp) -8002da60: 8fb0005c lw s0,92(sp) -8002da64: 27bd0068 addiu sp,sp,104 -8002da68: 03e00008 jr ra -8002da6c: 00000000 nop - -8002da70 : - -void GsSortSimpleSprite(GsSprite *sprite) -{ -8002da70: 27bdffd8 addiu sp,sp,-40 -8002da74: afbf0024 sw ra,36(sp) -8002da78: afbe0020 sw s8,32(sp) -8002da7c: 03a0f021 move s8,sp -8002da80: afc40028 sw a0,40(s8) - unsigned int orig_pos = linked_list_pos; -8002da84: 3c028007 lui v0,0x8007 -8002da88: 8c421cd8 lw v0,7384(v0) -8002da8c: 00000000 nop -8002da90: afc20010 sw v0,16(s8) - unsigned char pkt = 0x64; -8002da94: 24020064 li v0,100 -8002da98: a3c20018 sb v0,24(s8) - unsigned int md; - - md = setup_attribs(sprite->tpage, sprite->attribute, &pkt); -8002da9c: 8fc20028 lw v0,40(s8) -8002daa0: 00000000 nop -8002daa4: 90420011 lbu v0,17(v0) -8002daa8: 00000000 nop -8002daac: 00402021 move a0,v0 -8002dab0: 8fc20028 lw v0,40(s8) -8002dab4: 00000000 nop -8002dab8: 8c420014 lw v0,20(v0) -8002dabc: 27c30018 addiu v1,s8,24 -8002dac0: 00603021 move a2,v1 -8002dac4: 00402821 move a1,v0 -8002dac8: 0c00bbd0 jal 8002ef40 -8002dacc: 00000000 nop -8002dad0: afc20014 sw v0,20(s8) - - linked_list[linked_list_pos++] = 0x05000000; -8002dad4: 3c028007 lui v0,0x8007 -8002dad8: 8c431cd4 lw v1,7380(v0) -8002dadc: 3c028007 lui v0,0x8007 -8002dae0: 8c421cd8 lw v0,7384(v0) -8002dae4: 00000000 nop -8002dae8: 24450001 addiu a1,v0,1 -8002daec: 3c048007 lui a0,0x8007 -8002daf0: ac851cd8 sw a1,7384(a0) -8002daf4: 00021080 sll v0,v0,0x2 -8002daf8: 00621021 addu v0,v1,v0 -8002dafc: 3c030500 lui v1,0x500 -8002db00: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002db04: 3c028007 lui v0,0x8007 -8002db08: 8c431cd4 lw v1,7380(v0) -8002db0c: 3c028007 lui v0,0x8007 -8002db10: 8c421cd8 lw v0,7384(v0) -8002db14: 00000000 nop -8002db18: 24450001 addiu a1,v0,1 -8002db1c: 3c048007 lui a0,0x8007 -8002db20: ac851cd8 sw a1,7384(a0) -8002db24: 00021080 sll v0,v0,0x2 -8002db28: 00621021 addu v0,v1,v0 -8002db2c: 8fc30014 lw v1,20(s8) -8002db30: 00000000 nop -8002db34: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (pkt<<24)|(sprite->b<<16)|(sprite->g<<8)|sprite->r; -8002db38: 3c028007 lui v0,0x8007 -8002db3c: 8c431cd4 lw v1,7380(v0) -8002db40: 3c028007 lui v0,0x8007 -8002db44: 8c421cd8 lw v0,7384(v0) -8002db48: 00000000 nop -8002db4c: 24450001 addiu a1,v0,1 -8002db50: 3c048007 lui a0,0x8007 -8002db54: ac851cd8 sw a1,7384(a0) -8002db58: 00021080 sll v0,v0,0x2 -8002db5c: 00621021 addu v0,v1,v0 -8002db60: 93c30018 lbu v1,24(s8) -8002db64: 00000000 nop -8002db68: 00032600 sll a0,v1,0x18 -8002db6c: 8fc30028 lw v1,40(s8) -8002db70: 00000000 nop -8002db74: 90630010 lbu v1,16(v1) -8002db78: 00000000 nop -8002db7c: 00031c00 sll v1,v1,0x10 -8002db80: 00832025 or a0,a0,v1 -8002db84: 8fc30028 lw v1,40(s8) -8002db88: 00000000 nop -8002db8c: 9063000f lbu v1,15(v1) -8002db90: 00000000 nop -8002db94: 00031a00 sll v1,v1,0x8 -8002db98: 00831825 or v1,a0,v1 -8002db9c: 8fc40028 lw a0,40(s8) -8002dba0: 00000000 nop -8002dba4: 9084000e lbu a0,14(a0) -8002dba8: 00000000 nop -8002dbac: 00641825 or v1,v1,a0 -8002dbb0: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((sprite->y&0x7ff)<<16)|(sprite->x&0x7ff); -8002dbb4: 3c028007 lui v0,0x8007 -8002dbb8: 8c431cd4 lw v1,7380(v0) -8002dbbc: 3c028007 lui v0,0x8007 -8002dbc0: 8c421cd8 lw v0,7384(v0) -8002dbc4: 00000000 nop -8002dbc8: 24450001 addiu a1,v0,1 -8002dbcc: 3c048007 lui a0,0x8007 -8002dbd0: ac851cd8 sw a1,7384(a0) -8002dbd4: 00021080 sll v0,v0,0x2 -8002dbd8: 00621021 addu v0,v1,v0 -8002dbdc: 8fc30028 lw v1,40(s8) -8002dbe0: 00000000 nop -8002dbe4: 84630002 lh v1,2(v1) -8002dbe8: 00000000 nop -8002dbec: 3063ffff andi v1,v1,0xffff -8002dbf0: 306307ff andi v1,v1,0x7ff -8002dbf4: 00032400 sll a0,v1,0x10 -8002dbf8: 8fc30028 lw v1,40(s8) -8002dbfc: 00000000 nop -8002dc00: 84630000 lh v1,0(v1) -8002dc04: 00000000 nop -8002dc08: 3063ffff andi v1,v1,0xffff -8002dc0c: 306307ff andi v1,v1,0x7ff -8002dc10: 00831825 or v1,a0,v1 -8002dc14: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (get_clutid(sprite->cx,sprite->cy)<<16)|(sprite->v<<8)|sprite->u; -8002dc18: 3c028007 lui v0,0x8007 -8002dc1c: 8c431cd4 lw v1,7380(v0) -8002dc20: 3c028007 lui v0,0x8007 -8002dc24: 8c421cd8 lw v0,7384(v0) -8002dc28: 00000000 nop -8002dc2c: 24450001 addiu a1,v0,1 -8002dc30: 3c048007 lui a0,0x8007 -8002dc34: ac851cd8 sw a1,7384(a0) -8002dc38: 00021080 sll v0,v0,0x2 -8002dc3c: 00621021 addu v0,v1,v0 -8002dc40: 8fc30028 lw v1,40(s8) -8002dc44: 00000000 nop -8002dc48: 8463000a lh v1,10(v1) -8002dc4c: 00000000 nop -8002dc50: 3063ffff andi v1,v1,0xffff -8002dc54: 306303ff andi v1,v1,0x3ff -8002dc58: 00032103 sra a0,v1,0x4 -8002dc5c: 8fc30028 lw v1,40(s8) -8002dc60: 00000000 nop -8002dc64: 8463000c lh v1,12(v1) -8002dc68: 00000000 nop -8002dc6c: 3063ffff andi v1,v1,0xffff -8002dc70: 306301ff andi v1,v1,0x1ff -8002dc74: 00031980 sll v1,v1,0x6 -8002dc78: 00831825 or v1,a0,v1 -8002dc7c: 00032400 sll a0,v1,0x10 -8002dc80: 8fc30028 lw v1,40(s8) -8002dc84: 00000000 nop -8002dc88: 90630005 lbu v1,5(v1) -8002dc8c: 00000000 nop -8002dc90: 00031a00 sll v1,v1,0x8 -8002dc94: 00831825 or v1,a0,v1 -8002dc98: 8fc40028 lw a0,40(s8) -8002dc9c: 00000000 nop -8002dca0: 90840004 lbu a0,4(a0) -8002dca4: 00000000 nop -8002dca8: 00641825 or v1,v1,a0 -8002dcac: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (sprite->h<<16)|sprite->w; -8002dcb0: 3c028007 lui v0,0x8007 -8002dcb4: 8c431cd4 lw v1,7380(v0) -8002dcb8: 3c028007 lui v0,0x8007 -8002dcbc: 8c421cd8 lw v0,7384(v0) -8002dcc0: 00000000 nop -8002dcc4: 24450001 addiu a1,v0,1 -8002dcc8: 3c048007 lui a0,0x8007 -8002dccc: ac851cd8 sw a1,7384(a0) -8002dcd0: 00021080 sll v0,v0,0x2 -8002dcd4: 00621021 addu v0,v1,v0 -8002dcd8: 8fc30028 lw v1,40(s8) -8002dcdc: 00000000 nop -8002dce0: 84630008 lh v1,8(v1) -8002dce4: 00000000 nop -8002dce8: 00031c00 sll v1,v1,0x10 -8002dcec: 8fc40028 lw a0,40(s8) -8002dcf0: 00000000 nop -8002dcf4: 84840006 lh a0,6(a0) -8002dcf8: 00000000 nop -8002dcfc: 00641825 or v1,v1,a0 -8002dd00: ac430000 sw v1,0(v0) - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002dd04: 3c028007 lui v0,0x8007 -8002dd08: 8c431cd4 lw v1,7380(v0) -8002dd0c: 8fc20010 lw v0,16(s8) -8002dd10: 00000000 nop -8002dd14: 00021080 sll v0,v0,0x2 -8002dd18: 00621021 addu v0,v1,v0 -8002dd1c: 3c038007 lui v1,0x8007 -8002dd20: 8c641cd4 lw a0,7380(v1) -8002dd24: 8fc30010 lw v1,16(s8) -8002dd28: 00000000 nop -8002dd2c: 00031880 sll v1,v1,0x2 -8002dd30: 00831821 addu v1,a0,v1 -8002dd34: 8c640000 lw a0,0(v1) -8002dd38: 3c038007 lui v1,0x8007 -8002dd3c: 8c651cd4 lw a1,7380(v1) -8002dd40: 3c038007 lui v1,0x8007 -8002dd44: 8c631cd8 lw v1,7384(v1) -8002dd48: 00000000 nop -8002dd4c: 00031880 sll v1,v1,0x2 -8002dd50: 00a31821 addu v1,a1,v1 -8002dd54: 00602821 move a1,v1 -8002dd58: 3c0300ff lui v1,0xff -8002dd5c: 3463ffff ori v1,v1,0xffff -8002dd60: 00a31824 and v1,a1,v1 -8002dd64: 00831825 or v1,a0,v1 -8002dd68: ac430000 sw v1,0(v0) -} -8002dd6c: 00000000 nop -8002dd70: 03c0e821 move sp,s8 -8002dd74: 8fbf0024 lw ra,36(sp) -8002dd78: 8fbe0020 lw s8,32(sp) -8002dd7c: 27bd0028 addiu sp,sp,40 -8002dd80: 03e00008 jr ra -8002dd84: 00000000 nop - -8002dd88 : - -void GsSortRectangle(GsRectangle *rectangle) -{ -8002dd88: 27bdffd8 addiu sp,sp,-40 -8002dd8c: afbf0024 sw ra,36(sp) -8002dd90: afbe0020 sw s8,32(sp) -8002dd94: 03a0f021 move s8,sp -8002dd98: afc40028 sw a0,40(s8) - unsigned int orig_pos = linked_list_pos; -8002dd9c: 3c028007 lui v0,0x8007 -8002dda0: 8c421cd8 lw v0,7384(v0) -8002dda4: 00000000 nop -8002dda8: afc20010 sw v0,16(s8) - unsigned char pkt = 0x60; -8002ddac: 24020060 li v0,96 -8002ddb0: a3c20018 sb v0,24(s8) - unsigned int md; - - md = setup_attribs(0, rectangle->attribute, &pkt); -8002ddb4: 8fc20028 lw v0,40(s8) -8002ddb8: 00000000 nop -8002ddbc: 8c42000c lw v0,12(v0) -8002ddc0: 27c30018 addiu v1,s8,24 -8002ddc4: 00603021 move a2,v1 -8002ddc8: 00402821 move a1,v0 -8002ddcc: 00002021 move a0,zero -8002ddd0: 0c00bbd0 jal 8002ef40 -8002ddd4: 00000000 nop -8002ddd8: afc20014 sw v0,20(s8) - - linked_list[linked_list_pos++] = 0x04000000; -8002dddc: 3c028007 lui v0,0x8007 -8002dde0: 8c431cd4 lw v1,7380(v0) -8002dde4: 3c028007 lui v0,0x8007 -8002dde8: 8c421cd8 lw v0,7384(v0) -8002ddec: 00000000 nop -8002ddf0: 24450001 addiu a1,v0,1 -8002ddf4: 3c048007 lui a0,0x8007 -8002ddf8: ac851cd8 sw a1,7384(a0) -8002ddfc: 00021080 sll v0,v0,0x2 -8002de00: 00621021 addu v0,v1,v0 -8002de04: 3c030400 lui v1,0x400 -8002de08: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = md; -8002de0c: 3c028007 lui v0,0x8007 -8002de10: 8c431cd4 lw v1,7380(v0) -8002de14: 3c028007 lui v0,0x8007 -8002de18: 8c421cd8 lw v0,7384(v0) -8002de1c: 00000000 nop -8002de20: 24450001 addiu a1,v0,1 -8002de24: 3c048007 lui a0,0x8007 -8002de28: ac851cd8 sw a1,7384(a0) -8002de2c: 00021080 sll v0,v0,0x2 -8002de30: 00621021 addu v0,v1,v0 -8002de34: 8fc30014 lw v1,20(s8) -8002de38: 00000000 nop -8002de3c: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (pkt<<24)|(rectangle->b<<16)|(rectangle->g<<8)|(rectangle->r); -8002de40: 3c028007 lui v0,0x8007 -8002de44: 8c431cd4 lw v1,7380(v0) -8002de48: 3c028007 lui v0,0x8007 -8002de4c: 8c421cd8 lw v0,7384(v0) -8002de50: 00000000 nop -8002de54: 24450001 addiu a1,v0,1 -8002de58: 3c048007 lui a0,0x8007 -8002de5c: ac851cd8 sw a1,7384(a0) -8002de60: 00021080 sll v0,v0,0x2 -8002de64: 00621021 addu v0,v1,v0 -8002de68: 93c30018 lbu v1,24(s8) -8002de6c: 00000000 nop -8002de70: 00032600 sll a0,v1,0x18 -8002de74: 8fc30028 lw v1,40(s8) -8002de78: 00000000 nop -8002de7c: 9063000a lbu v1,10(v1) -8002de80: 00000000 nop -8002de84: 00031c00 sll v1,v1,0x10 -8002de88: 00832025 or a0,a0,v1 -8002de8c: 8fc30028 lw v1,40(s8) -8002de90: 00000000 nop -8002de94: 90630009 lbu v1,9(v1) -8002de98: 00000000 nop -8002de9c: 00031a00 sll v1,v1,0x8 -8002dea0: 00831825 or v1,a0,v1 -8002dea4: 8fc40028 lw a0,40(s8) -8002dea8: 00000000 nop -8002deac: 90840008 lbu a0,8(a0) -8002deb0: 00000000 nop -8002deb4: 00641825 or v1,v1,a0 -8002deb8: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((rectangle->y&0x7ff)<<16)|(rectangle->x&0x7ff); -8002debc: 3c028007 lui v0,0x8007 -8002dec0: 8c431cd4 lw v1,7380(v0) -8002dec4: 3c028007 lui v0,0x8007 -8002dec8: 8c421cd8 lw v0,7384(v0) -8002decc: 00000000 nop -8002ded0: 24450001 addiu a1,v0,1 -8002ded4: 3c048007 lui a0,0x8007 -8002ded8: ac851cd8 sw a1,7384(a0) -8002dedc: 00021080 sll v0,v0,0x2 -8002dee0: 00621021 addu v0,v1,v0 -8002dee4: 8fc30028 lw v1,40(s8) -8002dee8: 00000000 nop -8002deec: 84630002 lh v1,2(v1) -8002def0: 00000000 nop -8002def4: 3063ffff andi v1,v1,0xffff -8002def8: 306307ff andi v1,v1,0x7ff -8002defc: 00032400 sll a0,v1,0x10 -8002df00: 8fc30028 lw v1,40(s8) -8002df04: 00000000 nop -8002df08: 84630000 lh v1,0(v1) -8002df0c: 00000000 nop -8002df10: 3063ffff andi v1,v1,0xffff -8002df14: 306307ff andi v1,v1,0x7ff -8002df18: 00831825 or v1,a0,v1 -8002df1c: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (rectangle->h<<16)|rectangle->w; -8002df20: 3c028007 lui v0,0x8007 -8002df24: 8c431cd4 lw v1,7380(v0) -8002df28: 3c028007 lui v0,0x8007 -8002df2c: 8c421cd8 lw v0,7384(v0) -8002df30: 00000000 nop -8002df34: 24450001 addiu a1,v0,1 -8002df38: 3c048007 lui a0,0x8007 -8002df3c: ac851cd8 sw a1,7384(a0) -8002df40: 00021080 sll v0,v0,0x2 -8002df44: 00621021 addu v0,v1,v0 -8002df48: 8fc30028 lw v1,40(s8) -8002df4c: 00000000 nop -8002df50: 84630006 lh v1,6(v1) -8002df54: 00000000 nop -8002df58: 00031c00 sll v1,v1,0x10 -8002df5c: 8fc40028 lw a0,40(s8) -8002df60: 00000000 nop -8002df64: 84840004 lh a0,4(a0) -8002df68: 00000000 nop -8002df6c: 00641825 or v1,v1,a0 -8002df70: ac430000 sw v1,0(v0) - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002df74: 3c028007 lui v0,0x8007 -8002df78: 8c431cd4 lw v1,7380(v0) -8002df7c: 8fc20010 lw v0,16(s8) -8002df80: 00000000 nop -8002df84: 00021080 sll v0,v0,0x2 -8002df88: 00621021 addu v0,v1,v0 -8002df8c: 3c038007 lui v1,0x8007 -8002df90: 8c641cd4 lw a0,7380(v1) -8002df94: 8fc30010 lw v1,16(s8) -8002df98: 00000000 nop -8002df9c: 00031880 sll v1,v1,0x2 -8002dfa0: 00831821 addu v1,a0,v1 -8002dfa4: 8c640000 lw a0,0(v1) -8002dfa8: 3c038007 lui v1,0x8007 -8002dfac: 8c651cd4 lw a1,7380(v1) -8002dfb0: 3c038007 lui v1,0x8007 -8002dfb4: 8c631cd8 lw v1,7384(v1) -8002dfb8: 00000000 nop -8002dfbc: 00031880 sll v1,v1,0x2 -8002dfc0: 00a31821 addu v1,a1,v1 -8002dfc4: 00602821 move a1,v1 -8002dfc8: 3c0300ff lui v1,0xff -8002dfcc: 3463ffff ori v1,v1,0xffff -8002dfd0: 00a31824 and v1,a1,v1 -8002dfd4: 00831825 or v1,a0,v1 -8002dfd8: ac430000 sw v1,0(v0) -} -8002dfdc: 00000000 nop -8002dfe0: 03c0e821 move sp,s8 -8002dfe4: 8fbf0024 lw ra,36(sp) -8002dfe8: 8fbe0020 lw s8,32(sp) -8002dfec: 27bd0028 addiu sp,sp,40 -8002dff0: 03e00008 jr ra -8002dff4: 00000000 nop - -8002dff8 : - -void GsSortTPoly4(GsTPoly4 *tpoly4) -{ -8002dff8: 27bdffd8 addiu sp,sp,-40 -8002dffc: afbf0024 sw ra,36(sp) -8002e000: afbe0020 sw s8,32(sp) -8002e004: 03a0f021 move s8,sp -8002e008: afc40028 sw a0,40(s8) - unsigned int orig_pos = linked_list_pos; -8002e00c: 3c028007 lui v0,0x8007 -8002e010: 8c421cd8 lw v0,7384(v0) -8002e014: 00000000 nop -8002e018: afc20010 sw v0,16(s8) - unsigned char pkt = 0x2c; -8002e01c: 2402002c li v0,44 -8002e020: a3c20018 sb v0,24(s8) - - /*md = setup_attribs(tpoly4->tpage, tpoly4->attribute, &pkt);*/ - - //printf("tpoly4->tpage = %d\n", tpoly4->tpage); - - md = setup_attribs(tpoly4->tpage, tpoly4->attribute, &pkt); -8002e024: 8fc20028 lw v0,40(s8) -8002e028: 00000000 nop -8002e02c: 90420018 lbu v0,24(v0) -8002e030: 00000000 nop -8002e034: 00402021 move a0,v0 -8002e038: 8fc20028 lw v0,40(s8) -8002e03c: 00000000 nop -8002e040: 8c420024 lw v0,36(v0) -8002e044: 27c30018 addiu v1,s8,24 -8002e048: 00603021 move a2,v1 -8002e04c: 00402821 move a1,v0 -8002e050: 0c00bbd0 jal 8002ef40 -8002e054: 00000000 nop -8002e058: afc20014 sw v0,20(s8) - - //printf("pkt = %x\n", pkt); - - linked_list[linked_list_pos++] = 0x09000000; -8002e05c: 3c028007 lui v0,0x8007 -8002e060: 8c431cd4 lw v1,7380(v0) -8002e064: 3c028007 lui v0,0x8007 -8002e068: 8c421cd8 lw v0,7384(v0) -8002e06c: 00000000 nop -8002e070: 24450001 addiu a1,v0,1 -8002e074: 3c048007 lui a0,0x8007 -8002e078: ac851cd8 sw a1,7384(a0) -8002e07c: 00021080 sll v0,v0,0x2 -8002e080: 00621021 addu v0,v1,v0 -8002e084: 3c030900 lui v1,0x900 -8002e088: ac430000 sw v1,0(v0) - //linked_list[linked_list_pos++] = md; - //linked_list[linked_list_pos++] = 0xe0000000; - //linked_list[linked_list_pos++] = 0xe1000105; - - //printf("tpoly4 md: %08x\n", md); - linked_list[linked_list_pos++] = (pkt<<24)|(tpoly4->b<<16)|(tpoly4->g<<8)|(tpoly4->r); -8002e08c: 3c028007 lui v0,0x8007 -8002e090: 8c431cd4 lw v1,7380(v0) -8002e094: 3c028007 lui v0,0x8007 -8002e098: 8c421cd8 lw v0,7384(v0) -8002e09c: 00000000 nop -8002e0a0: 24450001 addiu a1,v0,1 -8002e0a4: 3c048007 lui a0,0x8007 -8002e0a8: ac851cd8 sw a1,7384(a0) -8002e0ac: 00021080 sll v0,v0,0x2 -8002e0b0: 00621021 addu v0,v1,v0 -8002e0b4: 93c30018 lbu v1,24(s8) -8002e0b8: 00000000 nop -8002e0bc: 00032600 sll a0,v1,0x18 -8002e0c0: 8fc30028 lw v1,40(s8) -8002e0c4: 00000000 nop -8002e0c8: 90630012 lbu v1,18(v1) -8002e0cc: 00000000 nop -8002e0d0: 00031c00 sll v1,v1,0x10 -8002e0d4: 00832025 or a0,a0,v1 -8002e0d8: 8fc30028 lw v1,40(s8) -8002e0dc: 00000000 nop -8002e0e0: 90630011 lbu v1,17(v1) -8002e0e4: 00000000 nop -8002e0e8: 00031a00 sll v1,v1,0x8 -8002e0ec: 00831825 or v1,a0,v1 -8002e0f0: 8fc40028 lw a0,40(s8) -8002e0f4: 00000000 nop -8002e0f8: 90840010 lbu a0,16(a0) -8002e0fc: 00000000 nop -8002e100: 00641825 or v1,v1,a0 -8002e104: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((tpoly4->y[0]&0x7ff)<<16)|(tpoly4->x[0]&0x7ff); -8002e108: 3c028007 lui v0,0x8007 -8002e10c: 8c431cd4 lw v1,7380(v0) -8002e110: 3c028007 lui v0,0x8007 -8002e114: 8c421cd8 lw v0,7384(v0) -8002e118: 00000000 nop -8002e11c: 24450001 addiu a1,v0,1 -8002e120: 3c048007 lui a0,0x8007 -8002e124: ac851cd8 sw a1,7384(a0) -8002e128: 00021080 sll v0,v0,0x2 -8002e12c: 00621021 addu v0,v1,v0 -8002e130: 8fc30028 lw v1,40(s8) -8002e134: 00000000 nop -8002e138: 84630008 lh v1,8(v1) -8002e13c: 00000000 nop -8002e140: 3063ffff andi v1,v1,0xffff -8002e144: 306307ff andi v1,v1,0x7ff -8002e148: 00032400 sll a0,v1,0x10 -8002e14c: 8fc30028 lw v1,40(s8) -8002e150: 00000000 nop -8002e154: 84630000 lh v1,0(v1) -8002e158: 00000000 nop -8002e15c: 3063ffff andi v1,v1,0xffff -8002e160: 306307ff andi v1,v1,0x7ff -8002e164: 00831825 or v1,a0,v1 -8002e168: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (get_clutid(tpoly4->cx, tpoly4->cy)<<16)|(tpoly4->v[0]<<8)|tpoly4->u[0]; -8002e16c: 3c028007 lui v0,0x8007 -8002e170: 8c431cd4 lw v1,7380(v0) -8002e174: 3c028007 lui v0,0x8007 -8002e178: 8c421cd8 lw v0,7384(v0) -8002e17c: 00000000 nop -8002e180: 24450001 addiu a1,v0,1 -8002e184: 3c048007 lui a0,0x8007 -8002e188: ac851cd8 sw a1,7384(a0) -8002e18c: 00021080 sll v0,v0,0x2 -8002e190: 00621021 addu v0,v1,v0 -8002e194: 8fc30028 lw v1,40(s8) -8002e198: 00000000 nop -8002e19c: 84630014 lh v1,20(v1) -8002e1a0: 00000000 nop -8002e1a4: 3063ffff andi v1,v1,0xffff -8002e1a8: 306303ff andi v1,v1,0x3ff -8002e1ac: 00032103 sra a0,v1,0x4 -8002e1b0: 8fc30028 lw v1,40(s8) -8002e1b4: 00000000 nop -8002e1b8: 84630016 lh v1,22(v1) -8002e1bc: 00000000 nop -8002e1c0: 3063ffff andi v1,v1,0xffff -8002e1c4: 306301ff andi v1,v1,0x1ff -8002e1c8: 00031980 sll v1,v1,0x6 -8002e1cc: 00831825 or v1,a0,v1 -8002e1d0: 00032400 sll a0,v1,0x10 -8002e1d4: 8fc30028 lw v1,40(s8) -8002e1d8: 00000000 nop -8002e1dc: 9063001d lbu v1,29(v1) -8002e1e0: 00000000 nop -8002e1e4: 00031a00 sll v1,v1,0x8 -8002e1e8: 00831825 or v1,a0,v1 -8002e1ec: 8fc40028 lw a0,40(s8) -8002e1f0: 00000000 nop -8002e1f4: 90840019 lbu a0,25(a0) -8002e1f8: 00000000 nop -8002e1fc: 00641825 or v1,v1,a0 -8002e200: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((tpoly4->y[1]&0x7ff)<<16)|(tpoly4->x[1]&0x7ff); -8002e204: 3c028007 lui v0,0x8007 -8002e208: 8c431cd4 lw v1,7380(v0) -8002e20c: 3c028007 lui v0,0x8007 -8002e210: 8c421cd8 lw v0,7384(v0) -8002e214: 00000000 nop -8002e218: 24450001 addiu a1,v0,1 -8002e21c: 3c048007 lui a0,0x8007 -8002e220: ac851cd8 sw a1,7384(a0) -8002e224: 00021080 sll v0,v0,0x2 -8002e228: 00621021 addu v0,v1,v0 -8002e22c: 8fc30028 lw v1,40(s8) -8002e230: 00000000 nop -8002e234: 8463000a lh v1,10(v1) -8002e238: 00000000 nop -8002e23c: 3063ffff andi v1,v1,0xffff -8002e240: 306307ff andi v1,v1,0x7ff -8002e244: 00032400 sll a0,v1,0x10 -8002e248: 8fc30028 lw v1,40(s8) -8002e24c: 00000000 nop -8002e250: 84630002 lh v1,2(v1) -8002e254: 00000000 nop -8002e258: 3063ffff andi v1,v1,0xffff -8002e25c: 306307ff andi v1,v1,0x7ff -8002e260: 00831825 or v1,a0,v1 -8002e264: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (md << 16)|(tpoly4->v[1]<<8)|tpoly4->u[1]; -8002e268: 3c028007 lui v0,0x8007 -8002e26c: 8c431cd4 lw v1,7380(v0) -8002e270: 3c028007 lui v0,0x8007 -8002e274: 8c421cd8 lw v0,7384(v0) -8002e278: 00000000 nop -8002e27c: 24450001 addiu a1,v0,1 -8002e280: 3c048007 lui a0,0x8007 -8002e284: ac851cd8 sw a1,7384(a0) -8002e288: 00021080 sll v0,v0,0x2 -8002e28c: 00621021 addu v0,v1,v0 -8002e290: 8fc30014 lw v1,20(s8) -8002e294: 00000000 nop -8002e298: 00031c00 sll v1,v1,0x10 -8002e29c: 8fc40028 lw a0,40(s8) -8002e2a0: 00000000 nop -8002e2a4: 9084001e lbu a0,30(a0) -8002e2a8: 00000000 nop -8002e2ac: 00042200 sll a0,a0,0x8 -8002e2b0: 00641825 or v1,v1,a0 -8002e2b4: 8fc40028 lw a0,40(s8) -8002e2b8: 00000000 nop -8002e2bc: 9084001a lbu a0,26(a0) -8002e2c0: 00000000 nop -8002e2c4: 00641825 or v1,v1,a0 -8002e2c8: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((tpoly4->y[2]&0x7ff)<<16)|(tpoly4->x[2]&0x7ff); -8002e2cc: 3c028007 lui v0,0x8007 -8002e2d0: 8c431cd4 lw v1,7380(v0) -8002e2d4: 3c028007 lui v0,0x8007 -8002e2d8: 8c421cd8 lw v0,7384(v0) -8002e2dc: 00000000 nop -8002e2e0: 24450001 addiu a1,v0,1 -8002e2e4: 3c048007 lui a0,0x8007 -8002e2e8: ac851cd8 sw a1,7384(a0) -8002e2ec: 00021080 sll v0,v0,0x2 -8002e2f0: 00621021 addu v0,v1,v0 -8002e2f4: 8fc30028 lw v1,40(s8) -8002e2f8: 00000000 nop -8002e2fc: 8463000c lh v1,12(v1) -8002e300: 00000000 nop -8002e304: 3063ffff andi v1,v1,0xffff -8002e308: 306307ff andi v1,v1,0x7ff -8002e30c: 00032400 sll a0,v1,0x10 -8002e310: 8fc30028 lw v1,40(s8) -8002e314: 00000000 nop -8002e318: 84630004 lh v1,4(v1) -8002e31c: 00000000 nop -8002e320: 3063ffff andi v1,v1,0xffff -8002e324: 306307ff andi v1,v1,0x7ff -8002e328: 00831825 or v1,a0,v1 -8002e32c: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (tpoly4->v[2]<<8)|tpoly4->u[2]; -8002e330: 3c028007 lui v0,0x8007 -8002e334: 8c431cd4 lw v1,7380(v0) -8002e338: 3c028007 lui v0,0x8007 -8002e33c: 8c421cd8 lw v0,7384(v0) -8002e340: 00000000 nop -8002e344: 24450001 addiu a1,v0,1 -8002e348: 3c048007 lui a0,0x8007 -8002e34c: ac851cd8 sw a1,7384(a0) -8002e350: 00021080 sll v0,v0,0x2 -8002e354: 00621021 addu v0,v1,v0 -8002e358: 8fc30028 lw v1,40(s8) -8002e35c: 00000000 nop -8002e360: 9063001f lbu v1,31(v1) -8002e364: 00000000 nop -8002e368: 00031a00 sll v1,v1,0x8 -8002e36c: 8fc40028 lw a0,40(s8) -8002e370: 00000000 nop -8002e374: 9084001b lbu a0,27(a0) -8002e378: 00000000 nop -8002e37c: 00641825 or v1,v1,a0 -8002e380: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((tpoly4->y[3]&0x7ff)<<16)|(tpoly4->x[3]&0x7ff); -8002e384: 3c028007 lui v0,0x8007 -8002e388: 8c431cd4 lw v1,7380(v0) -8002e38c: 3c028007 lui v0,0x8007 -8002e390: 8c421cd8 lw v0,7384(v0) -8002e394: 00000000 nop -8002e398: 24450001 addiu a1,v0,1 -8002e39c: 3c048007 lui a0,0x8007 -8002e3a0: ac851cd8 sw a1,7384(a0) -8002e3a4: 00021080 sll v0,v0,0x2 -8002e3a8: 00621021 addu v0,v1,v0 -8002e3ac: 8fc30028 lw v1,40(s8) -8002e3b0: 00000000 nop -8002e3b4: 8463000e lh v1,14(v1) -8002e3b8: 00000000 nop -8002e3bc: 3063ffff andi v1,v1,0xffff -8002e3c0: 306307ff andi v1,v1,0x7ff -8002e3c4: 00032400 sll a0,v1,0x10 -8002e3c8: 8fc30028 lw v1,40(s8) -8002e3cc: 00000000 nop -8002e3d0: 84630006 lh v1,6(v1) -8002e3d4: 00000000 nop -8002e3d8: 3063ffff andi v1,v1,0xffff -8002e3dc: 306307ff andi v1,v1,0x7ff -8002e3e0: 00831825 or v1,a0,v1 -8002e3e4: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (tpoly4->v[3]<<8)|tpoly4->u[3]; -8002e3e8: 3c028007 lui v0,0x8007 -8002e3ec: 8c431cd4 lw v1,7380(v0) -8002e3f0: 3c028007 lui v0,0x8007 -8002e3f4: 8c421cd8 lw v0,7384(v0) -8002e3f8: 00000000 nop -8002e3fc: 24450001 addiu a1,v0,1 -8002e400: 3c048007 lui a0,0x8007 -8002e404: ac851cd8 sw a1,7384(a0) -8002e408: 00021080 sll v0,v0,0x2 -8002e40c: 00621021 addu v0,v1,v0 -8002e410: 8fc30028 lw v1,40(s8) -8002e414: 00000000 nop -8002e418: 90630020 lbu v1,32(v1) -8002e41c: 00000000 nop -8002e420: 00031a00 sll v1,v1,0x8 -8002e424: 8fc40028 lw a0,40(s8) -8002e428: 00000000 nop -8002e42c: 9084001c lbu a0,28(a0) -8002e430: 00000000 nop -8002e434: 00641825 or v1,v1,a0 -8002e438: ac430000 sw v1,0(v0) - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002e43c: 3c028007 lui v0,0x8007 -8002e440: 8c431cd4 lw v1,7380(v0) -8002e444: 8fc20010 lw v0,16(s8) -8002e448: 00000000 nop -8002e44c: 00021080 sll v0,v0,0x2 -8002e450: 00621021 addu v0,v1,v0 -8002e454: 3c038007 lui v1,0x8007 -8002e458: 8c641cd4 lw a0,7380(v1) -8002e45c: 8fc30010 lw v1,16(s8) -8002e460: 00000000 nop -8002e464: 00031880 sll v1,v1,0x2 -8002e468: 00831821 addu v1,a0,v1 -8002e46c: 8c640000 lw a0,0(v1) -8002e470: 3c038007 lui v1,0x8007 -8002e474: 8c651cd4 lw a1,7380(v1) -8002e478: 3c038007 lui v1,0x8007 -8002e47c: 8c631cd8 lw v1,7384(v1) -8002e480: 00000000 nop -8002e484: 00031880 sll v1,v1,0x2 -8002e488: 00a31821 addu v1,a1,v1 -8002e48c: 00602821 move a1,v1 -8002e490: 3c0300ff lui v1,0xff -8002e494: 3463ffff ori v1,v1,0xffff -8002e498: 00a31824 and v1,a1,v1 -8002e49c: 00831825 or v1,a0,v1 -8002e4a0: ac430000 sw v1,0(v0) -} -8002e4a4: 00000000 nop -8002e4a8: 03c0e821 move sp,s8 -8002e4ac: 8fbf0024 lw ra,36(sp) -8002e4b0: 8fbe0020 lw s8,32(sp) -8002e4b4: 27bd0028 addiu sp,sp,40 -8002e4b8: 03e00008 jr ra -8002e4bc: 00000000 nop - -8002e4c0 : - -void GsSortTPoly3(GsTPoly3 *tpoly3) -{ -8002e4c0: 27bdffd8 addiu sp,sp,-40 -8002e4c4: afbf0024 sw ra,36(sp) -8002e4c8: afbe0020 sw s8,32(sp) -8002e4cc: 03a0f021 move s8,sp -8002e4d0: afc40028 sw a0,40(s8) - int orig_pos = linked_list_pos; -8002e4d4: 3c028007 lui v0,0x8007 -8002e4d8: 8c421cd8 lw v0,7384(v0) -8002e4dc: 00000000 nop -8002e4e0: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x24; -8002e4e4: 24020024 li v0,36 -8002e4e8: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(tpoly3->tpage, tpoly3->attribute, &pkt); -8002e4ec: 8fc20028 lw v0,40(s8) -8002e4f0: 00000000 nop -8002e4f4: 90420020 lbu v0,32(v0) -8002e4f8: 00000000 nop -8002e4fc: 00402021 move a0,v0 -8002e500: 8fc20028 lw v0,40(s8) -8002e504: 00000000 nop -8002e508: 8c42001c lw v0,28(v0) -8002e50c: 27c3001c addiu v1,s8,28 -8002e510: 00603021 move a2,v1 -8002e514: 00402821 move a1,v0 -8002e518: 0c00bbd0 jal 8002ef40 -8002e51c: 00000000 nop -8002e520: afc20018 sw v0,24(s8) - - linked_list[linked_list_pos++] = 0x07000000; -8002e524: 3c028007 lui v0,0x8007 -8002e528: 8c431cd4 lw v1,7380(v0) -8002e52c: 3c028007 lui v0,0x8007 -8002e530: 8c421cd8 lw v0,7384(v0) -8002e534: 00000000 nop -8002e538: 24450001 addiu a1,v0,1 -8002e53c: 3c048007 lui a0,0x8007 -8002e540: ac851cd8 sw a1,7384(a0) -8002e544: 00021080 sll v0,v0,0x2 -8002e548: 00621021 addu v0,v1,v0 -8002e54c: 3c030700 lui v1,0x700 -8002e550: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = -8002e554: 3c028007 lui v0,0x8007 -8002e558: 8c431cd4 lw v1,7380(v0) -8002e55c: 3c028007 lui v0,0x8007 -8002e560: 8c421cd8 lw v0,7384(v0) -8002e564: 00000000 nop -8002e568: 24450001 addiu a1,v0,1 -8002e56c: 3c048007 lui a0,0x8007 -8002e570: ac851cd8 sw a1,7384(a0) -8002e574: 00021080 sll v0,v0,0x2 -8002e578: 00621021 addu v0,v1,v0 - (pkt<<24)|(tpoly3->b<<16)|(tpoly3->g<<8)|(tpoly3->r); -8002e57c: 93c3001c lbu v1,28(s8) -8002e580: 00000000 nop -8002e584: 00032600 sll a0,v1,0x18 -8002e588: 8fc30028 lw v1,40(s8) -8002e58c: 00000000 nop -8002e590: 90630002 lbu v1,2(v1) -8002e594: 00000000 nop -8002e598: 00031c00 sll v1,v1,0x10 -8002e59c: 00832025 or a0,a0,v1 -8002e5a0: 8fc30028 lw v1,40(s8) -8002e5a4: 00000000 nop -8002e5a8: 90630001 lbu v1,1(v1) -8002e5ac: 00000000 nop -8002e5b0: 00031a00 sll v1,v1,0x8 -8002e5b4: 00831825 or v1,a0,v1 -8002e5b8: 8fc40028 lw a0,40(s8) -8002e5bc: 00000000 nop -8002e5c0: 90840000 lbu a0,0(a0) -8002e5c4: 00000000 nop -8002e5c8: 00641825 or v1,v1,a0 - unsigned int md; - - md = setup_attribs(tpoly3->tpage, tpoly3->attribute, &pkt); - - linked_list[linked_list_pos++] = 0x07000000; - linked_list[linked_list_pos++] = -8002e5cc: ac430000 sw v1,0(v0) - (pkt<<24)|(tpoly3->b<<16)|(tpoly3->g<<8)|(tpoly3->r); - - for(x = 0; x < 3; x++) -8002e5d0: afc00010 sw zero,16(s8) -8002e5d4: 10000084 b 8002e7e8 -8002e5d8: 00000000 nop - { - linked_list[linked_list_pos++] = ((tpoly3->y[x]&0x7ff)<<16)|(tpoly3->x[x]&0x7ff); -8002e5dc: 3c028007 lui v0,0x8007 -8002e5e0: 8c431cd4 lw v1,7380(v0) -8002e5e4: 3c028007 lui v0,0x8007 -8002e5e8: 8c421cd8 lw v0,7384(v0) -8002e5ec: 00000000 nop -8002e5f0: 24450001 addiu a1,v0,1 -8002e5f4: 3c048007 lui a0,0x8007 -8002e5f8: ac851cd8 sw a1,7384(a0) -8002e5fc: 00021080 sll v0,v0,0x2 -8002e600: 00621821 addu v1,v1,v0 -8002e604: 8fc40028 lw a0,40(s8) -8002e608: 8fc20010 lw v0,16(s8) -8002e60c: 00000000 nop -8002e610: 24420004 addiu v0,v0,4 -8002e614: 00021040 sll v0,v0,0x1 -8002e618: 00821021 addu v0,a0,v0 -8002e61c: 84420002 lh v0,2(v0) -8002e620: 00000000 nop -8002e624: 3042ffff andi v0,v0,0xffff -8002e628: 304207ff andi v0,v0,0x7ff -8002e62c: 00022400 sll a0,v0,0x10 -8002e630: 8fc50028 lw a1,40(s8) -8002e634: 8fc20010 lw v0,16(s8) -8002e638: 00000000 nop -8002e63c: 00021040 sll v0,v0,0x1 -8002e640: 00a21021 addu v0,a1,v0 -8002e644: 84420004 lh v0,4(v0) -8002e648: 00000000 nop -8002e64c: 3042ffff andi v0,v0,0xffff -8002e650: 304207ff andi v0,v0,0x7ff -8002e654: 00821025 or v0,a0,v0 -8002e658: ac620000 sw v0,0(v1) - linked_list[linked_list_pos] = (tpoly3->u[x]<<8)|tpoly3->v[x]; -8002e65c: 3c028007 lui v0,0x8007 -8002e660: 8c431cd4 lw v1,7380(v0) -8002e664: 3c028007 lui v0,0x8007 -8002e668: 8c421cd8 lw v0,7384(v0) -8002e66c: 00000000 nop -8002e670: 00021080 sll v0,v0,0x2 -8002e674: 00621021 addu v0,v1,v0 -8002e678: 8fc40028 lw a0,40(s8) -8002e67c: 8fc30010 lw v1,16(s8) -8002e680: 00000000 nop -8002e684: 00831821 addu v1,a0,v1 -8002e688: 90630010 lbu v1,16(v1) -8002e68c: 00000000 nop -8002e690: 00031a00 sll v1,v1,0x8 -8002e694: 8fc50028 lw a1,40(s8) -8002e698: 8fc40010 lw a0,16(s8) -8002e69c: 00000000 nop -8002e6a0: 00a42021 addu a0,a1,a0 -8002e6a4: 90840013 lbu a0,19(a0) -8002e6a8: 00000000 nop -8002e6ac: 00641825 or v1,v1,a0 -8002e6b0: ac430000 sw v1,0(v0) - - switch(x) -8002e6b4: 8fc20010 lw v0,16(s8) -8002e6b8: 00000000 nop -8002e6bc: 10400006 beqz v0,8002e6d8 -8002e6c0: 00000000 nop -8002e6c4: 24030001 li v1,1 -8002e6c8: 10430026 beq v0,v1,8002e764 -8002e6cc: 00000000 nop -8002e6d0: 1000003a b 8002e7bc -8002e6d4: 00000000 nop - { - case 0: - linked_list[linked_list_pos++] |= -8002e6d8: 3c028007 lui v0,0x8007 -8002e6dc: 8c441cd4 lw a0,7380(v0) -8002e6e0: 3c028007 lui v0,0x8007 -8002e6e4: 8c421cd8 lw v0,7384(v0) -8002e6e8: 00000000 nop -8002e6ec: 24450001 addiu a1,v0,1 -8002e6f0: 3c038007 lui v1,0x8007 -8002e6f4: ac651cd8 sw a1,7384(v1) -8002e6f8: 00021880 sll v1,v0,0x2 -8002e6fc: 00831821 addu v1,a0,v1 -8002e700: 3c048007 lui a0,0x8007 -8002e704: 8c841cd4 lw a0,7380(a0) -8002e708: 00021080 sll v0,v0,0x2 -8002e70c: 00821021 addu v0,a0,v0 -8002e710: 8c420000 lw v0,0(v0) - get_clutid(tpoly3->cx, tpoly3->cy) << 16; -8002e714: 8fc40028 lw a0,40(s8) -8002e718: 00000000 nop -8002e71c: 84840016 lh a0,22(a0) -8002e720: 00000000 nop -8002e724: 3084ffff andi a0,a0,0xffff -8002e728: 308403ff andi a0,a0,0x3ff -8002e72c: 00042903 sra a1,a0,0x4 -8002e730: 8fc40028 lw a0,40(s8) -8002e734: 00000000 nop -8002e738: 84840018 lh a0,24(a0) -8002e73c: 00000000 nop -8002e740: 3084ffff andi a0,a0,0xffff -8002e744: 308401ff andi a0,a0,0x1ff -8002e748: 00042180 sll a0,a0,0x6 -8002e74c: 00a42025 or a0,a1,a0 -8002e750: 00042400 sll a0,a0,0x10 - linked_list[linked_list_pos] = (tpoly3->u[x]<<8)|tpoly3->v[x]; - - switch(x) - { - case 0: - linked_list[linked_list_pos++] |= -8002e754: 00441025 or v0,v0,a0 -8002e758: ac620000 sw v0,0(v1) - get_clutid(tpoly3->cx, tpoly3->cy) << 16; - break; -8002e75c: 1000001e b 8002e7d8 -8002e760: 00000000 nop - case 1: - linked_list[linked_list_pos++] |= -8002e764: 3c028007 lui v0,0x8007 -8002e768: 8c441cd4 lw a0,7380(v0) -8002e76c: 3c028007 lui v0,0x8007 -8002e770: 8c421cd8 lw v0,7384(v0) -8002e774: 00000000 nop -8002e778: 24450001 addiu a1,v0,1 -8002e77c: 3c038007 lui v1,0x8007 -8002e780: ac651cd8 sw a1,7384(v1) -8002e784: 00021880 sll v1,v0,0x2 -8002e788: 00831821 addu v1,a0,v1 -8002e78c: 3c048007 lui a0,0x8007 -8002e790: 8c841cd4 lw a0,7380(a0) -8002e794: 00021080 sll v0,v0,0x2 -8002e798: 00821021 addu v0,a0,v0 -8002e79c: 8c440000 lw a0,0(v0) - md << 16; -8002e7a0: 8fc20018 lw v0,24(s8) -8002e7a4: 00000000 nop -8002e7a8: 00021400 sll v0,v0,0x10 - case 0: - linked_list[linked_list_pos++] |= - get_clutid(tpoly3->cx, tpoly3->cy) << 16; - break; - case 1: - linked_list[linked_list_pos++] |= -8002e7ac: 00821025 or v0,a0,v0 -8002e7b0: ac620000 sw v0,0(v1) - md << 16; - break; -8002e7b4: 10000008 b 8002e7d8 -8002e7b8: 00000000 nop - default: - linked_list_pos++; -8002e7bc: 3c028007 lui v0,0x8007 -8002e7c0: 8c421cd8 lw v0,7384(v0) -8002e7c4: 00000000 nop -8002e7c8: 24430001 addiu v1,v0,1 -8002e7cc: 3c028007 lui v0,0x8007 -8002e7d0: ac431cd8 sw v1,7384(v0) - break; -8002e7d4: 00000000 nop - - linked_list[linked_list_pos++] = 0x07000000; - linked_list[linked_list_pos++] = - (pkt<<24)|(tpoly3->b<<16)|(tpoly3->g<<8)|(tpoly3->r); - - for(x = 0; x < 3; x++) -8002e7d8: 8fc20010 lw v0,16(s8) -8002e7dc: 00000000 nop -8002e7e0: 24420001 addiu v0,v0,1 -8002e7e4: afc20010 sw v0,16(s8) -8002e7e8: 8fc20010 lw v0,16(s8) -8002e7ec: 00000000 nop -8002e7f0: 28420003 slti v0,v0,3 -8002e7f4: 1440ff79 bnez v0,8002e5dc -8002e7f8: 00000000 nop - linked_list_pos++; - break; - } - } - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8002e7fc: 3c028007 lui v0,0x8007 -8002e800: 8c431cd4 lw v1,7380(v0) -8002e804: 8fc20014 lw v0,20(s8) -8002e808: 00000000 nop -8002e80c: 00021080 sll v0,v0,0x2 -8002e810: 00621021 addu v0,v1,v0 -8002e814: 3c038007 lui v1,0x8007 -8002e818: 8c641cd4 lw a0,7380(v1) -8002e81c: 8fc30014 lw v1,20(s8) -8002e820: 00000000 nop -8002e824: 00031880 sll v1,v1,0x2 -8002e828: 00831821 addu v1,a0,v1 -8002e82c: 8c640000 lw a0,0(v1) -8002e830: 3c038007 lui v1,0x8007 -8002e834: 8c651cd4 lw a1,7380(v1) -8002e838: 3c038007 lui v1,0x8007 -8002e83c: 8c631cd8 lw v1,7384(v1) -8002e840: 00000000 nop -8002e844: 00031880 sll v1,v1,0x2 -8002e848: 00a31821 addu v1,a1,v1 -8002e84c: 00602821 move a1,v1 -8002e850: 3c0300ff lui v1,0xff -8002e854: 3463ffff ori v1,v1,0xffff -8002e858: 00a31824 and v1,a1,v1 -8002e85c: 00831825 or v1,a0,v1 -8002e860: ac430000 sw v1,0(v0) -} -8002e864: 00000000 nop -8002e868: 03c0e821 move sp,s8 -8002e86c: 8fbf0024 lw ra,36(sp) -8002e870: 8fbe0020 lw s8,32(sp) -8002e874: 27bd0028 addiu sp,sp,40 -8002e878: 03e00008 jr ra -8002e87c: 00000000 nop - -8002e880 : - -void MoveImage(int src_x, int src_y, int dst_x, int dst_y, int w, int h) -{ -8002e880: 27bdfff8 addiu sp,sp,-8 -8002e884: afbe0004 sw s8,4(sp) -8002e888: 03a0f021 move s8,sp -8002e88c: afc40008 sw a0,8(s8) -8002e890: afc5000c sw a1,12(s8) -8002e894: afc60010 sw a2,16(s8) -8002e898: afc70014 sw a3,20(s8) - /* - * This seems more like "CopyImage"... - */ - - while(!(GPU_CONTROL_PORT & (1<<0x1c))); -8002e89c: 00000000 nop -8002e8a0: 3c021f80 lui v0,0x1f80 -8002e8a4: 34421814 ori v0,v0,0x1814 -8002e8a8: 8c430000 lw v1,0(v0) -8002e8ac: 3c021000 lui v0,0x1000 -8002e8b0: 00621024 and v0,v1,v0 -8002e8b4: 1040fffa beqz v0,8002e8a0 -8002e8b8: 00000000 nop - - GPU_CONTROL_PORT = 0x04000000; -8002e8bc: 3c021f80 lui v0,0x1f80 -8002e8c0: 34421814 ori v0,v0,0x1814 -8002e8c4: 3c030400 lui v1,0x400 -8002e8c8: ac430000 sw v1,0(v0) - GPU_DATA_PORT = 0x01000000; // Reset command buffer -8002e8cc: 3c021f80 lui v0,0x1f80 -8002e8d0: 34421810 ori v0,v0,0x1810 -8002e8d4: 3c030100 lui v1,0x100 -8002e8d8: ac430000 sw v1,0(v0) - GPU_DATA_PORT = 0xE6000000; -8002e8dc: 3c021f80 lui v0,0x1f80 -8002e8e0: 34421810 ori v0,v0,0x1810 -8002e8e4: 3c03e600 lui v1,0xe600 -8002e8e8: ac430000 sw v1,0(v0) - GPU_DATA_PORT = 0x80000000; -8002e8ec: 3c021f80 lui v0,0x1f80 -8002e8f0: 34421810 ori v0,v0,0x1810 -8002e8f4: 3c038000 lui v1,0x8000 -8002e8f8: ac430000 sw v1,0(v0) - GPU_DATA_PORT = (src_y<<16)|src_x; -8002e8fc: 3c021f80 lui v0,0x1f80 -8002e900: 34421810 ori v0,v0,0x1810 -8002e904: 8fc3000c lw v1,12(s8) -8002e908: 00000000 nop -8002e90c: 00032400 sll a0,v1,0x10 -8002e910: 8fc30008 lw v1,8(s8) -8002e914: 00000000 nop -8002e918: 00831825 or v1,a0,v1 -8002e91c: ac430000 sw v1,0(v0) - GPU_DATA_PORT = (dst_y<<16)|dst_x; -8002e920: 3c021f80 lui v0,0x1f80 -8002e924: 34421810 ori v0,v0,0x1810 -8002e928: 8fc30014 lw v1,20(s8) -8002e92c: 00000000 nop -8002e930: 00032400 sll a0,v1,0x10 -8002e934: 8fc30010 lw v1,16(s8) -8002e938: 00000000 nop -8002e93c: 00831825 or v1,a0,v1 -8002e940: ac430000 sw v1,0(v0) - GPU_DATA_PORT = (h<<16)|w; -8002e944: 3c021f80 lui v0,0x1f80 -8002e948: 34421810 ori v0,v0,0x1810 -8002e94c: 8fc3001c lw v1,28(s8) -8002e950: 00000000 nop -8002e954: 00032400 sll a0,v1,0x10 -8002e958: 8fc30018 lw v1,24(s8) -8002e95c: 00000000 nop -8002e960: 00831825 or v1,a0,v1 -8002e964: ac430000 sw v1,0(v0) -} -8002e968: 00000000 nop -8002e96c: 03c0e821 move sp,s8 -8002e970: 8fbe0004 lw s8,4(sp) -8002e974: 27bd0008 addiu sp,sp,8 -8002e978: 03e00008 jr ra -8002e97c: 00000000 nop - -8002e980 : -/* - * Add a method to add arbitrary data to the packet list - */ - -void LoadImage(void *img, int x, int y, int w, int h) -{ -8002e980: 27bdffd8 addiu sp,sp,-40 -8002e984: afbf0024 sw ra,36(sp) -8002e988: afbe0020 sw s8,32(sp) -8002e98c: 03a0f021 move s8,sp -8002e990: afc40028 sw a0,40(s8) -8002e994: afc5002c sw a1,44(s8) -8002e998: afc60030 sw a2,48(s8) -8002e99c: afc70034 sw a3,52(s8) - unsigned short *image = (unsigned short*)img; -8002e9a0: 8fc20028 lw v0,40(s8) -8002e9a4: 00000000 nop -8002e9a8: afc20018 sw v0,24(s8) - int a, l; - - while(GsIsDrawing() == true); -8002e9ac: 00000000 nop -8002e9b0: 0c00bf9f jal 8002fe7c -8002e9b4: 00000000 nop -8002e9b8: 00401821 move v1,v0 -8002e9bc: 24020001 li v0,1 -8002e9c0: 1062fffb beq v1,v0,8002e9b0 -8002e9c4: 00000000 nop - - //printf("LoadImage: %d, %d, %d, %d\n", x, y, w, h); - - while(!(GPU_CONTROL_PORT & (1<<0x1c))); -8002e9c8: 00000000 nop -8002e9cc: 3c021f80 lui v0,0x1f80 -8002e9d0: 34421814 ori v0,v0,0x1814 -8002e9d4: 8c430000 lw v1,0(v0) -8002e9d8: 3c021000 lui v0,0x1000 -8002e9dc: 00621024 and v0,v1,v0 -8002e9e0: 1040fffa beqz v0,8002e9cc -8002e9e4: 00000000 nop - - GPU_CONTROL_PORT = 0x04000000; // Disable DMA -8002e9e8: 3c021f80 lui v0,0x1f80 -8002e9ec: 34421814 ori v0,v0,0x1814 -8002e9f0: 3c030400 lui v1,0x400 -8002e9f4: ac430000 sw v1,0(v0) - -// Reset should be on data port ! otherwise we won't be able -// to write CLUTs for some time after they've been used! -// (why??) - - GPU_DATA_PORT = 0x01000000; -8002e9f8: 3c021f80 lui v0,0x1f80 -8002e9fc: 34421810 ori v0,v0,0x1810 -8002ea00: 3c030100 lui v1,0x100 -8002ea04: ac430000 sw v1,0(v0) - GPU_DATA_PORT = 0xE6000000; // disable masking stuff !! -8002ea08: 3c021f80 lui v0,0x1f80 -8002ea0c: 34421810 ori v0,v0,0x1810 -8002ea10: 3c03e600 lui v1,0xe600 -8002ea14: ac430000 sw v1,0(v0) - GPU_DATA_PORT = 0xA0000000; -8002ea18: 3c021f80 lui v0,0x1f80 -8002ea1c: 34421810 ori v0,v0,0x1810 -8002ea20: 3c03a000 lui v1,0xa000 -8002ea24: ac430000 sw v1,0(v0) - GPU_DATA_PORT = (y<<16)|x; -8002ea28: 3c021f80 lui v0,0x1f80 -8002ea2c: 34421810 ori v0,v0,0x1810 -8002ea30: 8fc30030 lw v1,48(s8) -8002ea34: 00000000 nop -8002ea38: 00032400 sll a0,v1,0x10 -8002ea3c: 8fc3002c lw v1,44(s8) -8002ea40: 00000000 nop -8002ea44: 00831825 or v1,a0,v1 -8002ea48: ac430000 sw v1,0(v0) - GPU_DATA_PORT = (h<<16)|w; -8002ea4c: 3c021f80 lui v0,0x1f80 -8002ea50: 34421810 ori v0,v0,0x1810 -8002ea54: 8fc30038 lw v1,56(s8) -8002ea58: 00000000 nop -8002ea5c: 00032400 sll a0,v1,0x10 -8002ea60: 8fc30034 lw v1,52(s8) -8002ea64: 00000000 nop -8002ea68: 00831825 or v1,a0,v1 -8002ea6c: ac430000 sw v1,0(v0) - - l = w*h; -8002ea70: 8fc30034 lw v1,52(s8) -8002ea74: 8fc20038 lw v0,56(s8) -8002ea78: 00000000 nop -8002ea7c: 00620018 mult v1,v0 -8002ea80: 00001012 mflo v0 -8002ea84: afc20014 sw v0,20(s8) - if(l&1)l++; -8002ea88: 8fc20014 lw v0,20(s8) -8002ea8c: 00000000 nop -8002ea90: 30420001 andi v0,v0,0x1 -8002ea94: 10400005 beqz v0,8002eaac -8002ea98: 00000000 nop -8002ea9c: 8fc20014 lw v0,20(s8) -8002eaa0: 00000000 nop -8002eaa4: 24420001 addiu v0,v0,1 -8002eaa8: afc20014 sw v0,20(s8) - - for(a = 0; a < l; a+=2) -8002eaac: afc00010 sw zero,16(s8) -8002eab0: 1000001c b 8002eb24 -8002eab4: 00000000 nop - GPU_DATA_PORT = image[a]|(image[a+1]<<16); -8002eab8: 3c021f80 lui v0,0x1f80 -8002eabc: 34421810 ori v0,v0,0x1810 -8002eac0: 8fc30010 lw v1,16(s8) -8002eac4: 00000000 nop -8002eac8: 00031840 sll v1,v1,0x1 -8002eacc: 8fc40018 lw a0,24(s8) -8002ead0: 00000000 nop -8002ead4: 00831821 addu v1,a0,v1 -8002ead8: 94630000 lhu v1,0(v1) -8002eadc: 00000000 nop -8002eae0: 00602821 move a1,v1 -8002eae4: 8fc30010 lw v1,16(s8) -8002eae8: 00000000 nop -8002eaec: 24630001 addiu v1,v1,1 -8002eaf0: 00031840 sll v1,v1,0x1 -8002eaf4: 8fc40018 lw a0,24(s8) -8002eaf8: 00000000 nop -8002eafc: 00831821 addu v1,a0,v1 -8002eb00: 94630000 lhu v1,0(v1) -8002eb04: 00000000 nop -8002eb08: 00031c00 sll v1,v1,0x10 -8002eb0c: 00a31825 or v1,a1,v1 -8002eb10: ac430000 sw v1,0(v0) - GPU_DATA_PORT = (h<<16)|w; - - l = w*h; - if(l&1)l++; - - for(a = 0; a < l; a+=2) -8002eb14: 8fc20010 lw v0,16(s8) -8002eb18: 00000000 nop -8002eb1c: 24420002 addiu v0,v0,2 -8002eb20: afc20010 sw v0,16(s8) -8002eb24: 8fc30010 lw v1,16(s8) -8002eb28: 8fc20014 lw v0,20(s8) -8002eb2c: 00000000 nop -8002eb30: 0062102a slt v0,v1,v0 -8002eb34: 1440ffe0 bnez v0,8002eab8 -8002eb38: 00000000 nop - GPU_DATA_PORT = image[a]|(image[a+1]<<16); - - GPU_CONTROL_PORT = 0x01000000; -8002eb3c: 3c021f80 lui v0,0x1f80 -8002eb40: 34421814 ori v0,v0,0x1814 -8002eb44: 3c030100 lui v1,0x100 -8002eb48: ac430000 sw v1,0(v0) -// while(!(GPU_CONTROL_PORT & (1<<0x1c))); -} -8002eb4c: 00000000 nop -8002eb50: 03c0e821 move sp,s8 -8002eb54: 8fbf0024 lw ra,36(sp) -8002eb58: 8fbe0020 lw s8,32(sp) -8002eb5c: 27bd0028 addiu sp,sp,40 -8002eb60: 03e00008 jr ra -8002eb64: 00000000 nop - -8002eb68 : - - while(D2_CHCR & (1<<0x18)); -//}*/ - -void GsSetDrawEnv(GsDrawEnv *drawenv) -{ -8002eb68: 27bdffd8 addiu sp,sp,-40 -8002eb6c: afbf0024 sw ra,36(sp) -8002eb70: afbe0020 sw s8,32(sp) -8002eb74: 03a0f021 move s8,sp -8002eb78: afc40028 sw a0,40(s8) - /* - * Store the 0xe1 packet - we need it because we have to - * modify drawing environment for sprites - */ - - draw_mode_packet = (0xe1<<24)|(drawenv->draw_on_display>=1)<<10| -8002eb7c: 8fc20028 lw v0,40(s8) -8002eb80: 00000000 nop -8002eb84: 90420001 lbu v0,1(v0) -8002eb88: 00000000 nop -8002eb8c: 10400005 beqz v0,8002eba4 -8002eb90: 00000000 nop -8002eb94: 3c02e100 lui v0,0xe100 -8002eb98: 34420400 ori v0,v0,0x400 -8002eb9c: 10000002 b 8002eba8 -8002eba0: 00000000 nop -8002eba4: 3c02e100 lui v0,0xe100 - (drawenv->dither>=1)<<9; -8002eba8: 8fc30028 lw v1,40(s8) -8002ebac: 00000000 nop -8002ebb0: 90630000 lbu v1,0(v1) -8002ebb4: 00000000 nop -8002ebb8: 10600004 beqz v1,8002ebcc -8002ebbc: 00000000 nop -8002ebc0: 24030200 li v1,512 -8002ebc4: 10000002 b 8002ebd0 -8002ebc8: 00000000 nop -8002ebcc: 00001821 move v1,zero - /* - * Store the 0xe1 packet - we need it because we have to - * modify drawing environment for sprites - */ - - draw_mode_packet = (0xe1<<24)|(drawenv->draw_on_display>=1)<<10| -8002ebd0: 00431025 or v0,v0,v1 -8002ebd4: 00401821 move v1,v0 -8002ebd8: 3c028007 lui v0,0x8007 -8002ebdc: ac431d5c sw v1,7516(v0) - (drawenv->dither>=1)<<9; - - gpu_data_ctrl(0xe1, draw_mode_packet); -8002ebe0: 3c028007 lui v0,0x8007 -8002ebe4: 8c421d5c lw v0,7516(v0) -8002ebe8: 00000000 nop -8002ebec: 00402821 move a1,v0 -8002ebf0: 240400e1 li a0,225 -8002ebf4: 0c00bbb5 jal 8002eed4 -8002ebf8: 00000000 nop - gpu_data_ctrl(0xe2, 0); -8002ebfc: 00002821 move a1,zero -8002ec00: 240400e2 li a0,226 -8002ec04: 0c00bbb5 jal 8002eed4 -8002ec08: 00000000 nop - gpu_data_ctrl(0xe3, (drawenv->y<<10)|drawenv->x); -8002ec0c: 8fc20028 lw v0,40(s8) -8002ec10: 00000000 nop -8002ec14: 84420004 lh v0,4(v0) -8002ec18: 00000000 nop -8002ec1c: 00021280 sll v0,v0,0xa -8002ec20: 8fc30028 lw v1,40(s8) -8002ec24: 00000000 nop -8002ec28: 84630002 lh v1,2(v1) -8002ec2c: 00000000 nop -8002ec30: 00431025 or v0,v0,v1 -8002ec34: 00402821 move a1,v0 -8002ec38: 240400e3 li a0,227 -8002ec3c: 0c00bbb5 jal 8002eed4 -8002ec40: 00000000 nop - - end_x = (drawenv->x + drawenv->w)-1; -8002ec44: 8fc20028 lw v0,40(s8) -8002ec48: 00000000 nop -8002ec4c: 84420002 lh v0,2(v0) -8002ec50: 00000000 nop -8002ec54: 00401821 move v1,v0 -8002ec58: 8fc20028 lw v0,40(s8) -8002ec5c: 00000000 nop -8002ec60: 84420006 lh v0,6(v0) -8002ec64: 00000000 nop -8002ec68: 00621021 addu v0,v1,v0 -8002ec6c: 2442ffff addiu v0,v0,-1 -8002ec70: afc20014 sw v0,20(s8) - end_y = (drawenv->y + drawenv->h)-1; -8002ec74: 8fc20028 lw v0,40(s8) -8002ec78: 00000000 nop -8002ec7c: 84420004 lh v0,4(v0) -8002ec80: 00000000 nop -8002ec84: 00401821 move v1,v0 -8002ec88: 8fc20028 lw v0,40(s8) -8002ec8c: 00000000 nop -8002ec90: 84420008 lh v0,8(v0) -8002ec94: 00000000 nop -8002ec98: 00621021 addu v0,v1,v0 -8002ec9c: 2442ffff addiu v0,v0,-1 -8002eca0: afc20018 sw v0,24(s8) - - gpu_data_ctrl(0xe4, (end_y<<10)|end_x); -8002eca4: 8fc20018 lw v0,24(s8) -8002eca8: 00000000 nop -8002ecac: 00021a80 sll v1,v0,0xa -8002ecb0: 8fc20014 lw v0,20(s8) -8002ecb4: 00000000 nop -8002ecb8: 00621025 or v0,v1,v0 -8002ecbc: 00402821 move a1,v0 -8002ecc0: 240400e4 li a0,228 -8002ecc4: 0c00bbb5 jal 8002eed4 -8002ecc8: 00000000 nop - - //#warning "Check drawing offset better." - gpu_data_ctrl(0xe5, (drawenv->y<<11)|drawenv->x); -8002eccc: 8fc20028 lw v0,40(s8) -8002ecd0: 00000000 nop -8002ecd4: 84420004 lh v0,4(v0) -8002ecd8: 00000000 nop -8002ecdc: 000212c0 sll v0,v0,0xb -8002ece0: 8fc30028 lw v1,40(s8) -8002ece4: 00000000 nop -8002ece8: 84630002 lh v1,2(v1) -8002ecec: 00000000 nop -8002ecf0: 00431025 or v0,v0,v1 -8002ecf4: 00402821 move a1,v0 -8002ecf8: 240400e5 li a0,229 -8002ecfc: 0c00bbb5 jal 8002eed4 -8002ed00: 00000000 nop - //gpu_data_ctrl(0xe5, 0); - - - mf = 0; -8002ed04: afc00010 sw zero,16(s8) - if(drawenv->set_mask) mf|=MASK_SET; -8002ed08: 8fc20028 lw v0,40(s8) -8002ed0c: 00000000 nop -8002ed10: 9042000b lbu v0,11(v0) -8002ed14: 00000000 nop -8002ed18: 10400005 beqz v0,8002ed30 -8002ed1c: 00000000 nop -8002ed20: 8fc20010 lw v0,16(s8) -8002ed24: 00000000 nop -8002ed28: 34420001 ori v0,v0,0x1 -8002ed2c: afc20010 sw v0,16(s8) - if(drawenv->ignore_mask) mf|=MASK_IGNORE; -8002ed30: 8fc20028 lw v0,40(s8) -8002ed34: 00000000 nop -8002ed38: 9042000a lbu v0,10(v0) -8002ed3c: 00000000 nop -8002ed40: 10400005 beqz v0,8002ed58 -8002ed44: 00000000 nop -8002ed48: 8fc20010 lw v0,16(s8) -8002ed4c: 00000000 nop -8002ed50: 34420002 ori v0,v0,0x2 -8002ed54: afc20010 sw v0,16(s8) - - GsSetMasking(mf); -8002ed58: 8fc20010 lw v0,16(s8) -8002ed5c: 00000000 nop -8002ed60: 304200ff andi v0,v0,0xff -8002ed64: 00402021 move a0,v0 -8002ed68: 0c00bf8c jal 8002fe30 -8002ed6c: 00000000 nop - - GsCurDrawEnvW = drawenv->w; -8002ed70: 8fc20028 lw v0,40(s8) -8002ed74: 00000000 nop -8002ed78: 84420006 lh v0,6(v0) -8002ed7c: 00000000 nop -8002ed80: 3043ffff andi v1,v0,0xffff -8002ed84: 3c028007 lui v0,0x8007 -8002ed88: a4431d40 sh v1,7488(v0) - GsCurDrawEnvH = drawenv->h; -8002ed8c: 8fc20028 lw v0,40(s8) -8002ed90: 00000000 nop -8002ed94: 84420008 lh v0,8(v0) -8002ed98: 00000000 nop -8002ed9c: 3043ffff andi v1,v0,0xffff -8002eda0: 3c028007 lui v0,0x8007 -8002eda4: a4431d58 sh v1,7512(v0) -} -8002eda8: 00000000 nop -8002edac: 03c0e821 move sp,s8 -8002edb0: 8fbf0024 lw ra,36(sp) -8002edb4: 8fbe0020 lw s8,32(sp) -8002edb8: 27bd0028 addiu sp,sp,40 -8002edbc: 03e00008 jr ra -8002edc0: 00000000 nop - -8002edc4 : - -void GsSetDispEnv(GsDispEnv *dispenv) -{ -8002edc4: 27bdffe8 addiu sp,sp,-24 -8002edc8: afbf0014 sw ra,20(sp) -8002edcc: afbe0010 sw s8,16(sp) -8002edd0: 03a0f021 move s8,sp -8002edd4: afc40018 sw a0,24(s8) - gpu_ctrl(5, (dispenv->y<<10)|dispenv->x); // Display offset -8002edd8: 8fc20018 lw v0,24(s8) -8002eddc: 00000000 nop -8002ede0: 84420002 lh v0,2(v0) -8002ede4: 00000000 nop -8002ede8: 00021280 sll v0,v0,0xa -8002edec: 8fc30018 lw v1,24(s8) -8002edf0: 00000000 nop -8002edf4: 84630000 lh v1,0(v1) -8002edf8: 00000000 nop -8002edfc: 00431025 or v0,v0,v1 -8002ee00: 00402821 move a1,v0 -8002ee04: 24040005 li a0,5 -8002ee08: 0c00bb8b jal 8002ee2c -8002ee0c: 00000000 nop -} -8002ee10: 00000000 nop -8002ee14: 03c0e821 move sp,s8 -8002ee18: 8fbf0014 lw ra,20(sp) -8002ee1c: 8fbe0010 lw s8,16(sp) -8002ee20: 27bd0018 addiu sp,sp,24 -8002ee24: 03e00008 jr ra -8002ee28: 00000000 nop - -8002ee2c : - -void gpu_ctrl(unsigned int command, unsigned int param) -{ -8002ee2c: 27bdfff0 addiu sp,sp,-16 -8002ee30: afbe000c sw s8,12(sp) -8002ee34: 03a0f021 move s8,sp -8002ee38: afc40010 sw a0,16(s8) -8002ee3c: afc50014 sw a1,20(s8) - unsigned int doubleword = (command << 0x18) | param; -8002ee40: 8fc20010 lw v0,16(s8) -8002ee44: 00000000 nop -8002ee48: 00021e00 sll v1,v0,0x18 -8002ee4c: 8fc20014 lw v0,20(s8) -8002ee50: 00000000 nop -8002ee54: 00621025 or v0,v1,v0 -8002ee58: afc20000 sw v0,0(s8) - - GPU_CONTROL_PORT = 0x01000000; -8002ee5c: 3c021f80 lui v0,0x1f80 -8002ee60: 34421814 ori v0,v0,0x1814 -8002ee64: 3c030100 lui v1,0x100 -8002ee68: ac430000 sw v1,0(v0) - GPU_CONTROL_PORT = doubleword; -8002ee6c: 3c021f80 lui v0,0x1f80 -8002ee70: 34421814 ori v0,v0,0x1814 -8002ee74: 8fc30000 lw v1,0(s8) -8002ee78: 00000000 nop -8002ee7c: ac430000 sw v1,0(v0) -} -8002ee80: 00000000 nop -8002ee84: 03c0e821 move sp,s8 -8002ee88: 8fbe000c lw s8,12(sp) -8002ee8c: 27bd0010 addiu sp,sp,16 -8002ee90: 03e00008 jr ra -8002ee94: 00000000 nop - -8002ee98 : - -void gpu_data(unsigned int data) -{ -8002ee98: 27bdfff8 addiu sp,sp,-8 -8002ee9c: afbe0004 sw s8,4(sp) -8002eea0: 03a0f021 move s8,sp -8002eea4: afc40008 sw a0,8(s8) - GPU_DATA_PORT = data; -8002eea8: 3c021f80 lui v0,0x1f80 -8002eeac: 34421810 ori v0,v0,0x1810 -8002eeb0: 8fc30008 lw v1,8(s8) -8002eeb4: 00000000 nop -8002eeb8: ac430000 sw v1,0(v0) -} -8002eebc: 00000000 nop -8002eec0: 03c0e821 move sp,s8 -8002eec4: 8fbe0004 lw s8,4(sp) -8002eec8: 27bd0008 addiu sp,sp,8 -8002eecc: 03e00008 jr ra -8002eed0: 00000000 nop - -8002eed4 : - -void gpu_data_ctrl(unsigned int command, unsigned int param) -{ -8002eed4: 27bdfff0 addiu sp,sp,-16 -8002eed8: afbe000c sw s8,12(sp) -8002eedc: 03a0f021 move s8,sp -8002eee0: afc40010 sw a0,16(s8) -8002eee4: afc50014 sw a1,20(s8) - unsigned int doubleword = (command << 0x18) | param; -8002eee8: 8fc20010 lw v0,16(s8) -8002eeec: 00000000 nop -8002eef0: 00021e00 sll v1,v0,0x18 -8002eef4: 8fc20014 lw v0,20(s8) -8002eef8: 00000000 nop -8002eefc: 00621025 or v0,v1,v0 -8002ef00: afc20000 sw v0,0(s8) - - GPU_CONTROL_PORT = 0x01000000; -8002ef04: 3c021f80 lui v0,0x1f80 -8002ef08: 34421814 ori v0,v0,0x1814 -8002ef0c: 3c030100 lui v1,0x100 -8002ef10: ac430000 sw v1,0(v0) - GPU_DATA_PORT = doubleword; -8002ef14: 3c021f80 lui v0,0x1f80 -8002ef18: 34421810 ori v0,v0,0x1810 -8002ef1c: 8fc30000 lw v1,0(s8) -8002ef20: 00000000 nop -8002ef24: ac430000 sw v1,0(v0) -} -8002ef28: 00000000 nop -8002ef2c: 03c0e821 move sp,s8 -8002ef30: 8fbe000c lw s8,12(sp) -8002ef34: 27bd0010 addiu sp,sp,16 -8002ef38: 03e00008 jr ra -8002ef3c: 00000000 nop - -8002ef40 : - -unsigned int setup_attribs(unsigned char tpage, unsigned int attribute, unsigned char *packet) -{ -8002ef40: 27bdfff0 addiu sp,sp,-16 -8002ef44: afbe000c sw s8,12(sp) -8002ef48: 03a0f021 move s8,sp -8002ef4c: 00801021 move v0,a0 -8002ef50: afc50014 sw a1,20(s8) -8002ef54: afc60018 sw a2,24(s8) -8002ef58: a3c20010 sb v0,16(s8) - -/* - * First, setup draw mode setting. - */ - - sprite_mode_packet = draw_mode_packet; -8002ef5c: 3c028007 lui v0,0x8007 -8002ef60: 8c421d5c lw v0,7516(v0) -8002ef64: 00000000 nop -8002ef68: afc20000 sw v0,0(s8) - sprite_mode_packet|= tpage & 0x1f; /* Texture page */ -8002ef6c: 93c20010 lbu v0,16(s8) -8002ef70: 00000000 nop -8002ef74: 3042001f andi v0,v0,0x1f -8002ef78: 8fc30000 lw v1,0(s8) -8002ef7c: 00000000 nop -8002ef80: 00621025 or v0,v1,v0 -8002ef84: afc20000 sw v0,0(s8) - sprite_mode_packet|= (attribute & 3) << 7; /* Color mode */ -8002ef88: 8fc20014 lw v0,20(s8) -8002ef8c: 00000000 nop -8002ef90: 30420003 andi v0,v0,0x3 -8002ef94: 000211c0 sll v0,v0,0x7 -8002ef98: 8fc30000 lw v1,0(s8) -8002ef9c: 00000000 nop -8002efa0: 00621025 or v0,v1,v0 -8002efa4: afc20000 sw v0,0(s8) - sprite_mode_packet|= ((attribute>>2)&3) << 5; /* Translucency mode */ -8002efa8: 8fc20014 lw v0,20(s8) -8002efac: 00000000 nop -8002efb0: 00021082 srl v0,v0,0x2 -8002efb4: 30420003 andi v0,v0,0x3 -8002efb8: 00021140 sll v0,v0,0x5 -8002efbc: 8fc30000 lw v1,0(s8) -8002efc0: 00000000 nop -8002efc4: 00621025 or v0,v1,v0 -8002efc8: afc20000 sw v0,0(s8) - -/* - * Check for STP bit flag in attribute, and modify packet byte accordingly - */ - if(attribute & 16) -8002efcc: 8fc20014 lw v0,20(s8) -8002efd0: 00000000 nop -8002efd4: 30420010 andi v0,v0,0x10 -8002efd8: 1040000a beqz v0,8002f004 -8002efdc: 00000000 nop - *packet|=2; -8002efe0: 8fc20018 lw v0,24(s8) -8002efe4: 00000000 nop -8002efe8: 90420000 lbu v0,0(v0) -8002efec: 00000000 nop -8002eff0: 34420002 ori v0,v0,0x2 -8002eff4: 304300ff andi v1,v0,0xff -8002eff8: 8fc20018 lw v0,24(s8) -8002effc: 00000000 nop -8002f000: a0430000 sb v1,0(v0) - - //printf("sprite_mode_packet = %08x\n", sprite_mode_packet); - - return sprite_mode_packet; -8002f004: 8fc20000 lw v0,0(s8) -} -8002f008: 03c0e821 move sp,s8 -8002f00c: 8fbe000c lw s8,12(sp) -8002f010: 27bd0010 addiu sp,sp,16 -8002f014: 03e00008 jr ra -8002f018: 00000000 nop - -8002f01c : - -unsigned int GsListPos() -{ -8002f01c: 27bdfff8 addiu sp,sp,-8 -8002f020: afbe0004 sw s8,4(sp) -8002f024: 03a0f021 move s8,sp - return linked_list_pos; -8002f028: 3c028007 lui v0,0x8007 -8002f02c: 8c421cd8 lw v0,7384(v0) -} -8002f030: 03c0e821 move sp,s8 -8002f034: 8fbe0004 lw s8,4(sp) -8002f038: 27bd0008 addiu sp,sp,8 -8002f03c: 03e00008 jr ra -8002f040: 00000000 nop - -8002f044 : - -void GsEnableDisplay(int enable) -{ -8002f044: 27bdffe8 addiu sp,sp,-24 -8002f048: afbf0014 sw ra,20(sp) -8002f04c: afbe0010 sw s8,16(sp) -8002f050: 03a0f021 move s8,sp -8002f054: afc40018 sw a0,24(s8) - gpu_ctrl(3, enable ? 0 : 1); -8002f058: 8fc20018 lw v0,24(s8) -8002f05c: 00000000 nop -8002f060: 2c420001 sltiu v0,v0,1 -8002f064: 304200ff andi v0,v0,0xff -8002f068: 00402821 move a1,v0 -8002f06c: 24040003 li a0,3 -8002f070: 0c00bb8b jal 8002ee2c -8002f074: 00000000 nop -} -8002f078: 00000000 nop -8002f07c: 03c0e821 move sp,s8 -8002f080: 8fbf0014 lw ra,20(sp) -8002f084: 8fbe0010 lw s8,16(sp) -8002f088: 27bd0018 addiu sp,sp,24 -8002f08c: 03e00008 jr ra -8002f090: 00000000 nop - -8002f094 : - -void GsReset() -{ -8002f094: 27bdffe8 addiu sp,sp,-24 -8002f098: afbf0014 sw ra,20(sp) -8002f09c: afbe0010 sw s8,16(sp) -8002f0a0: 03a0f021 move s8,sp - gpu_ctrl(0, 0); // Reset GPU -8002f0a4: 00002821 move a1,zero -8002f0a8: 00002021 move a0,zero -8002f0ac: 0c00bb8b jal 8002ee2c -8002f0b0: 00000000 nop -} -8002f0b4: 00000000 nop -8002f0b8: 03c0e821 move sp,s8 -8002f0bc: 8fbf0014 lw ra,20(sp) -8002f0c0: 8fbe0010 lw s8,16(sp) -8002f0c4: 27bd0018 addiu sp,sp,24 -8002f0c8: 03e00008 jr ra -8002f0cc: 00000000 nop - -8002f0d0 : - -void GsInitEx(unsigned int flags) -{ -8002f0d0: 27bdffe8 addiu sp,sp,-24 -8002f0d4: afbf0014 sw ra,20(sp) -8002f0d8: afbe0010 sw s8,16(sp) -8002f0dc: 03a0f021 move s8,sp -8002f0e0: afc40018 sw a0,24(s8) - //gpu_ctrl(0, 0); // Reset GPU - GsReset(); // Reset GPU -8002f0e4: 0c00bc25 jal 8002f094 -8002f0e8: 00000000 nop - - DPCR |= (1<<0xb); // Enable dma channel 2 -8002f0ec: 3c021f80 lui v0,0x1f80 -8002f0f0: 344210f0 ori v0,v0,0x10f0 -8002f0f4: 3c031f80 lui v1,0x1f80 -8002f0f8: 346310f0 ori v1,v1,0x10f0 -8002f0fc: 8c630000 lw v1,0(v1) -8002f100: 00000000 nop -8002f104: 34630800 ori v1,v1,0x800 -8002f108: ac430000 sw v1,0(v0) - gpu_ctrl(4, 2); // DMA CPU->GPU mode -8002f10c: 24050002 li a1,2 -8002f110: 24040004 li a0,4 -8002f114: 0c00bb8b jal 8002ee2c -8002f118: 00000000 nop - - //gpu_ctrl(3, 1); // Disable display - GsEnableDisplay(0); // Disable display -8002f11c: 00002021 move a0,zero -8002f120: 0c00bc11 jal 8002f044 -8002f124: 00000000 nop - - GPU_DATA_PORT = 0x01000000; // Reset data port -8002f128: 3c021f80 lui v0,0x1f80 -8002f12c: 34421810 ori v0,v0,0x1810 -8002f130: 3c030100 lui v1,0x100 -8002f134: ac430000 sw v1,0(v0) - - /*gpu_ctrl(6, 0xc40240); // Horizontal start end - gpu_ctrl(7, 0x049025); // Vertical start end*/ - //DrawFBRect(0, 0, 1023, 511, 0, 0, 0); -} -8002f138: 00000000 nop -8002f13c: 03c0e821 move sp,s8 -8002f140: 8fbf0014 lw ra,20(sp) -8002f144: 8fbe0010 lw s8,16(sp) -8002f148: 27bd0018 addiu sp,sp,24 -8002f14c: 03e00008 jr ra -8002f150: 00000000 nop - -8002f154 : - -void GsInit() -{ -8002f154: 27bdffe8 addiu sp,sp,-24 -8002f158: afbf0014 sw ra,20(sp) -8002f15c: afbe0010 sw s8,16(sp) -8002f160: 03a0f021 move s8,sp - GsInitEx(0); -8002f164: 00002021 move a0,zero -8002f168: 0c00bc34 jal 8002f0d0 -8002f16c: 00000000 nop -} -8002f170: 00000000 nop -8002f174: 03c0e821 move sp,s8 -8002f178: 8fbf0014 lw ra,20(sp) -8002f17c: 8fbe0010 lw s8,16(sp) -8002f180: 27bd0018 addiu sp,sp,24 -8002f184: 03e00008 jr ra -8002f188: 00000000 nop - -8002f18c : - - ExitCriticalSection(); -}*/ - -int GsSetVideoMode(int width, int height, int video_mode) -{ -8002f18c: 27bdffe0 addiu sp,sp,-32 -8002f190: afbf001c sw ra,28(sp) -8002f194: afbe0018 sw s8,24(sp) -8002f198: 03a0f021 move s8,sp -8002f19c: afc40020 sw a0,32(s8) -8002f1a0: afc50024 sw a1,36(s8) -8002f1a4: afc60028 sw a2,40(s8) - // Just a quick wrapper for GsSetVideoModeEx - return GsSetVideoModeEx(width, height, video_mode, 0, 0, 0); -8002f1a8: afa00014 sw zero,20(sp) -8002f1ac: afa00010 sw zero,16(sp) -8002f1b0: 00003821 move a3,zero -8002f1b4: 8fc60028 lw a2,40(s8) -8002f1b8: 8fc50024 lw a1,36(s8) -8002f1bc: 8fc40020 lw a0,32(s8) -8002f1c0: 0c00bc78 jal 8002f1e0 -8002f1c4: 00000000 nop -} -8002f1c8: 03c0e821 move sp,s8 -8002f1cc: 8fbf001c lw ra,28(sp) -8002f1d0: 8fbe0018 lw s8,24(sp) -8002f1d4: 27bd0020 addiu sp,sp,32 -8002f1d8: 03e00008 jr ra -8002f1dc: 00000000 nop - -8002f1e0 : - -int GsSetVideoModeEx(int width, int height, int video_mode, int rgb24, - int inter, int reverse) -{ -8002f1e0: 27bdffe0 addiu sp,sp,-32 -8002f1e4: afbf001c sw ra,28(sp) -8002f1e8: afbe0018 sw s8,24(sp) -8002f1ec: 03a0f021 move s8,sp -8002f1f0: afc40020 sw a0,32(s8) -8002f1f4: afc50024 sw a1,36(s8) -8002f1f8: afc60028 sw a2,40(s8) -8002f1fc: afc7002c sw a3,44(s8) - unsigned char mode = 0; -8002f200: a3c00010 sb zero,16(s8) - - GsEnableDisplay(0); -8002f204: 00002021 move a0,zero -8002f208: 0c00bc11 jal 8002f044 -8002f20c: 00000000 nop - - if(video_mode == VMODE_NTSC) -8002f210: 8fc20028 lw v0,40(s8) -8002f214: 00000000 nop -8002f218: 1440000d bnez v0,8002f250 -8002f21c: 00000000 nop - { - gpu_ctrl(6, 0xC4E24E); // Horizontal screen range -8002f220: 3c0200c4 lui v0,0xc4 -8002f224: 3445e24e ori a1,v0,0xe24e -8002f228: 24040006 li a0,6 -8002f22c: 0c00bb8b jal 8002ee2c -8002f230: 00000000 nop - gpu_ctrl(7, 0x040010); // Vertical screen range -8002f234: 3c020004 lui v0,0x4 -8002f238: 34450010 ori a1,v0,0x10 -8002f23c: 24040007 li a0,7 -8002f240: 0c00bb8b jal 8002ee2c -8002f244: 00000000 nop -8002f248: 1000000b b 8002f278 -8002f24c: 00000000 nop - } - else - { - gpu_ctrl(6, 0xC62262); // Horizontal screen range -8002f250: 3c0200c6 lui v0,0xc6 -8002f254: 34452262 ori a1,v0,0x2262 -8002f258: 24040006 li a0,6 -8002f25c: 0c00bb8b jal 8002ee2c -8002f260: 00000000 nop - gpu_ctrl(7, 0x04B42D); // Vertical screen range -8002f264: 3c020004 lui v0,0x4 -8002f268: 3445b42d ori a1,v0,0xb42d -8002f26c: 24040007 li a0,7 -8002f270: 0c00bb8b jal 8002ee2c -8002f274: 00000000 nop - } - - switch(height) -8002f278: 8fc20024 lw v0,36(s8) -8002f27c: 240300f0 li v1,240 -8002f280: 10430014 beq v0,v1,8002f2d4 -8002f284: 00000000 nop -8002f288: 240301e0 li v1,480 -8002f28c: 14430007 bne v0,v1,8002f2ac -8002f290: 00000000 nop - { - case 240: - break; - case 480: - mode|=4; -8002f294: 93c20010 lbu v0,16(s8) -8002f298: 00000000 nop -8002f29c: 34420004 ori v0,v0,0x4 -8002f2a0: a3c20010 sb v0,16(s8) - break; -8002f2a4: 1000000c b 8002f2d8 -8002f2a8: 00000000 nop - default: - printf("%s: error, unknown width %d!\n", __FUNCTION__, width); -8002f2ac: 8fc60020 lw a2,32(s8) -8002f2b0: 3c028004 lui v0,0x8004 -8002f2b4: 2445fd88 addiu a1,v0,-632 -8002f2b8: 3c028004 lui v0,0x8004 -8002f2bc: 2444fd48 addiu a0,v0,-696 -8002f2c0: 0c00ed8f jal 8003b63c -8002f2c4: 00000000 nop - return 0; -8002f2c8: 00001021 move v0,zero -8002f2cc: 10000075 b 8002f4a4 -8002f2d0: 00000000 nop - } - - switch(height) - { - case 240: - break; -8002f2d4: 00000000 nop - default: - printf("%s: error, unknown width %d!\n", __FUNCTION__, width); - return 0; - } - - switch(width) -8002f2d8: 8fc20020 lw v0,32(s8) -8002f2dc: 24030180 li v1,384 -8002f2e0: 10430026 beq v0,v1,8002f37c -8002f2e4: 00000000 nop -8002f2e8: 28430181 slti v1,v0,385 -8002f2ec: 10600009 beqz v1,8002f314 -8002f2f0: 00000000 nop -8002f2f4: 24030100 li v1,256 -8002f2f8: 10430030 beq v0,v1,8002f3bc -8002f2fc: 00000000 nop -8002f300: 24030140 li v1,320 -8002f304: 1043000b beq v0,v1,8002f334 -8002f308: 00000000 nop -8002f30c: 10000021 b 8002f394 -8002f310: 00000000 nop -8002f314: 24030200 li v1,512 -8002f318: 1043000c beq v0,v1,8002f34c -8002f31c: 00000000 nop -8002f320: 24030280 li v1,640 -8002f324: 1043000f beq v0,v1,8002f364 -8002f328: 00000000 nop -8002f32c: 10000019 b 8002f394 -8002f330: 00000000 nop - { - case 256: - break; - case 320: - mode|=1; -8002f334: 93c20010 lbu v0,16(s8) -8002f338: 00000000 nop -8002f33c: 34420001 ori v0,v0,0x1 -8002f340: a3c20010 sb v0,16(s8) - break; -8002f344: 1000001e b 8002f3c0 -8002f348: 00000000 nop - case 512: - mode|=2; -8002f34c: 93c20010 lbu v0,16(s8) -8002f350: 00000000 nop -8002f354: 34420002 ori v0,v0,0x2 -8002f358: a3c20010 sb v0,16(s8) - break; -8002f35c: 10000018 b 8002f3c0 -8002f360: 00000000 nop - case 640: - mode|=3; -8002f364: 93c20010 lbu v0,16(s8) -8002f368: 00000000 nop -8002f36c: 34420003 ori v0,v0,0x3 -8002f370: a3c20010 sb v0,16(s8) - break; -8002f374: 10000012 b 8002f3c0 -8002f378: 00000000 nop - case 384: - mode|=64; -8002f37c: 93c20010 lbu v0,16(s8) -8002f380: 00000000 nop -8002f384: 34420040 ori v0,v0,0x40 -8002f388: a3c20010 sb v0,16(s8) - break; -8002f38c: 1000000c b 8002f3c0 -8002f390: 00000000 nop - default: - printf("%s: error, unknown height %d!\n", __FUNCTION__, height); -8002f394: 8fc60024 lw a2,36(s8) -8002f398: 3c028004 lui v0,0x8004 -8002f39c: 2445fd88 addiu a1,v0,-632 -8002f3a0: 3c028004 lui v0,0x8004 -8002f3a4: 2444fd68 addiu a0,v0,-664 -8002f3a8: 0c00ed8f jal 8003b63c -8002f3ac: 00000000 nop - return 0; -8002f3b0: 00001021 move v0,zero -8002f3b4: 1000003b b 8002f4a4 -8002f3b8: 00000000 nop - } - - switch(width) - { - case 256: - break; -8002f3bc: 00000000 nop - default: - printf("%s: error, unknown height %d!\n", __FUNCTION__, height); - return 0; - } - - if(video_mode)mode|=8; // Set PAL -8002f3c0: 8fc20028 lw v0,40(s8) -8002f3c4: 00000000 nop -8002f3c8: 10400005 beqz v0,8002f3e0 -8002f3cc: 00000000 nop -8002f3d0: 93c20010 lbu v0,16(s8) -8002f3d4: 00000000 nop -8002f3d8: 34420008 ori v0,v0,0x8 -8002f3dc: a3c20010 sb v0,16(s8) - if(rgb24)mode|=16; // Set unaccellerated 24-bit mode -8002f3e0: 8fc2002c lw v0,44(s8) -8002f3e4: 00000000 nop -8002f3e8: 10400005 beqz v0,8002f400 -8002f3ec: 00000000 nop -8002f3f0: 93c20010 lbu v0,16(s8) -8002f3f4: 00000000 nop -8002f3f8: 34420010 ori v0,v0,0x10 -8002f3fc: a3c20010 sb v0,16(s8) - if(inter)mode|=32; // Set interlaced video mode -8002f400: 8fc20030 lw v0,48(s8) -8002f404: 00000000 nop -8002f408: 10400005 beqz v0,8002f420 -8002f40c: 00000000 nop -8002f410: 93c20010 lbu v0,16(s8) -8002f414: 00000000 nop -8002f418: 34420020 ori v0,v0,0x20 -8002f41c: a3c20010 sb v0,16(s8) - if(reverse)mode|=128; // Set reverse flag (?) -8002f420: 8fc20034 lw v0,52(s8) -8002f424: 00000000 nop -8002f428: 10400005 beqz v0,8002f440 -8002f42c: 00000000 nop -8002f430: 93c30010 lbu v1,16(s8) -8002f434: 2402ff80 li v0,-128 -8002f438: 00621025 or v0,v1,v0 -8002f43c: a3c20010 sb v0,16(s8) - - gpu_ctrl(8, mode); -8002f440: 93c20010 lbu v0,16(s8) -8002f444: 00000000 nop -8002f448: 00402821 move a1,v0 -8002f44c: 24040008 li a0,8 -8002f450: 0c00bb8b jal 8002ee2c -8002f454: 00000000 nop - GsEnableDisplay(1); -8002f458: 24040001 li a0,1 -8002f45c: 0c00bc11 jal 8002f044 -8002f460: 00000000 nop - - GsScreenW = width; -8002f464: 8fc20020 lw v0,32(s8) -8002f468: 00000000 nop -8002f46c: 3043ffff andi v1,v0,0xffff -8002f470: 3c028007 lui v0,0x8007 -8002f474: a4431d48 sh v1,7496(v0) - GsScreenH = height; -8002f478: 8fc20024 lw v0,36(s8) -8002f47c: 00000000 nop -8002f480: 3043ffff andi v1,v0,0xffff -8002f484: 3c028007 lui v0,0x8007 -8002f488: a4431d42 sh v1,7490(v0) - GsScreenM = video_mode; -8002f48c: 8fc20028 lw v0,40(s8) -8002f490: 00000000 nop -8002f494: 304300ff andi v1,v0,0xff -8002f498: 3c028007 lui v0,0x8007 -8002f49c: a0431d50 sb v1,7504(v0) - - return 1; -8002f4a0: 24020001 li v0,1 -} -8002f4a4: 03c0e821 move sp,s8 -8002f4a8: 8fbf001c lw ra,28(sp) -8002f4ac: 8fbe0018 lw s8,24(sp) -8002f4b0: 27bd0020 addiu sp,sp,32 -8002f4b4: 03e00008 jr ra -8002f4b8: 00000000 nop - -8002f4bc : - -void DrawFBRect(int x, int y, int w, int h, int r, int g, int b) -{ -8002f4bc: 27bdffe8 addiu sp,sp,-24 -8002f4c0: afbf0014 sw ra,20(sp) -8002f4c4: afbe0010 sw s8,16(sp) -8002f4c8: 03a0f021 move s8,sp -8002f4cc: afc40018 sw a0,24(s8) -8002f4d0: afc5001c sw a1,28(s8) -8002f4d4: afc60020 sw a2,32(s8) -8002f4d8: afc70024 sw a3,36(s8) - while(!(GPU_CONTROL_PORT & (1<<0x1c))); -8002f4dc: 00000000 nop -8002f4e0: 3c021f80 lui v0,0x1f80 -8002f4e4: 34421814 ori v0,v0,0x1814 -8002f4e8: 8c430000 lw v1,0(v0) -8002f4ec: 3c021000 lui v0,0x1000 -8002f4f0: 00621024 and v0,v1,v0 -8002f4f4: 1040fffa beqz v0,8002f4e0 -8002f4f8: 00000000 nop - - // Disable DMA - GPU_CONTROL_PORT = 0x04000000; -8002f4fc: 3c021f80 lui v0,0x1f80 -8002f500: 34421814 ori v0,v0,0x1814 -8002f504: 3c030400 lui v1,0x400 -8002f508: ac430000 sw v1,0(v0) - - GPU_DATA_PORT = 0x01000000; // Reset data port -8002f50c: 3c021f80 lui v0,0x1f80 -8002f510: 34421810 ori v0,v0,0x1810 -8002f514: 3c030100 lui v1,0x100 -8002f518: ac430000 sw v1,0(v0) - GPU_DATA_PORT = 0xE6000000; // Disable masking stuff -8002f51c: 3c021f80 lui v0,0x1f80 -8002f520: 34421810 ori v0,v0,0x1810 -8002f524: 3c03e600 lui v1,0xe600 -8002f528: ac430000 sw v1,0(v0) - gpu_data_ctrl(2, ((b&0xff)<<16)|((g&0xff)<<8)|r); -8002f52c: 8fc20030 lw v0,48(s8) -8002f530: 00000000 nop -8002f534: 304200ff andi v0,v0,0xff -8002f538: 00021c00 sll v1,v0,0x10 -8002f53c: 8fc2002c lw v0,44(s8) -8002f540: 00000000 nop -8002f544: 00021200 sll v0,v0,0x8 -8002f548: 3042ffff andi v0,v0,0xffff -8002f54c: 00621825 or v1,v1,v0 -8002f550: 8fc20028 lw v0,40(s8) -8002f554: 00000000 nop -8002f558: 00621025 or v0,v1,v0 -8002f55c: 00402821 move a1,v0 -8002f560: 24040002 li a0,2 -8002f564: 0c00bbb5 jal 8002eed4 -8002f568: 00000000 nop - GPU_DATA_PORT = (y<<16)|x; -8002f56c: 3c021f80 lui v0,0x1f80 -8002f570: 34421810 ori v0,v0,0x1810 -8002f574: 8fc3001c lw v1,28(s8) -8002f578: 00000000 nop -8002f57c: 00032400 sll a0,v1,0x10 -8002f580: 8fc30018 lw v1,24(s8) -8002f584: 00000000 nop -8002f588: 00831825 or v1,a0,v1 -8002f58c: ac430000 sw v1,0(v0) - GPU_DATA_PORT = (h<<16)|w; -8002f590: 3c021f80 lui v0,0x1f80 -8002f594: 34421810 ori v0,v0,0x1810 -8002f598: 8fc30024 lw v1,36(s8) -8002f59c: 00000000 nop -8002f5a0: 00032400 sll a0,v1,0x10 -8002f5a4: 8fc30020 lw v1,32(s8) -8002f5a8: 00000000 nop -8002f5ac: 00831825 or v1,a0,v1 -8002f5b0: ac430000 sw v1,0(v0) -} -8002f5b4: 00000000 nop -8002f5b8: 03c0e821 move sp,s8 -8002f5bc: 8fbf0014 lw ra,20(sp) -8002f5c0: 8fbe0010 lw s8,16(sp) -8002f5c4: 27bd0018 addiu sp,sp,24 -8002f5c8: 03e00008 jr ra -8002f5cc: 00000000 nop - -8002f5d0 : - -void GsClearMem() -{ -8002f5d0: 27bdffd8 addiu sp,sp,-40 -8002f5d4: afbf0024 sw ra,36(sp) -8002f5d8: afbe0020 sw s8,32(sp) -8002f5dc: 03a0f021 move s8,sp - // "Clears" the entire video memory by using DrawFBRect - // and waits that it has finished drawing... - - DrawFBRect(0,0,1023,511,0,0,0); -8002f5e0: afa00018 sw zero,24(sp) -8002f5e4: afa00014 sw zero,20(sp) -8002f5e8: afa00010 sw zero,16(sp) -8002f5ec: 240701ff li a3,511 -8002f5f0: 240603ff li a2,1023 -8002f5f4: 00002821 move a1,zero -8002f5f8: 00002021 move a0,zero -8002f5fc: 0c00bd2f jal 8002f4bc -8002f600: 00000000 nop - while(GsIsDrawing()); -8002f604: 00000000 nop -8002f608: 0c00bf9f jal 8002fe7c -8002f60c: 00000000 nop -8002f610: 1440fffd bnez v0,8002f608 -8002f614: 00000000 nop - DrawFBRect(0,511,1023,1,0,0,0); -8002f618: afa00018 sw zero,24(sp) -8002f61c: afa00014 sw zero,20(sp) -8002f620: afa00010 sw zero,16(sp) -8002f624: 24070001 li a3,1 -8002f628: 240603ff li a2,1023 -8002f62c: 240501ff li a1,511 -8002f630: 00002021 move a0,zero -8002f634: 0c00bd2f jal 8002f4bc -8002f638: 00000000 nop - while(GsIsDrawing()); -8002f63c: 00000000 nop -8002f640: 0c00bf9f jal 8002fe7c -8002f644: 00000000 nop -8002f648: 1440fffd bnez v0,8002f640 -8002f64c: 00000000 nop - DrawFBRect(1023,511,1,1,0,0,0); -8002f650: afa00018 sw zero,24(sp) -8002f654: afa00014 sw zero,20(sp) -8002f658: afa00010 sw zero,16(sp) -8002f65c: 24070001 li a3,1 -8002f660: 24060001 li a2,1 -8002f664: 240501ff li a1,511 -8002f668: 240403ff li a0,1023 -8002f66c: 0c00bd2f jal 8002f4bc -8002f670: 00000000 nop - while(GsIsDrawing()); -8002f674: 00000000 nop -8002f678: 0c00bf9f jal 8002fe7c -8002f67c: 00000000 nop -8002f680: 1440fffd bnez v0,8002f678 -8002f684: 00000000 nop -} -8002f688: 00000000 nop -8002f68c: 03c0e821 move sp,s8 -8002f690: 8fbf0024 lw ra,36(sp) -8002f694: 8fbe0020 lw s8,32(sp) -8002f698: 27bd0028 addiu sp,sp,40 -8002f69c: 03e00008 jr ra -8002f6a0: 00000000 nop - -8002f6a4 : - -int GsImageFromTim(GsImage *image, void *timdata) -{ -8002f6a4: 27bdffe8 addiu sp,sp,-24 -8002f6a8: afbe0014 sw s8,20(sp) -8002f6ac: 03a0f021 move s8,sp -8002f6b0: afc40018 sw a0,24(s8) -8002f6b4: afc5001c sw a1,28(s8) - unsigned int *timdata_i = (unsigned int*)timdata; -8002f6b8: 8fc2001c lw v0,28(s8) -8002f6bc: 00000000 nop -8002f6c0: afc20004 sw v0,4(s8) - unsigned short *timdata_s = (unsigned short*)timdata; -8002f6c4: 8fc2001c lw v0,28(s8) -8002f6c8: 00000000 nop -8002f6cc: afc20008 sw v0,8(s8) - unsigned int pdata_pos; - unsigned int pdata_pos_s; - - //printf("timdata_i[0] = %08x\n", timdata_i[0]); - - if(timdata_i[0] != 0x10) -8002f6d0: 8fc20004 lw v0,4(s8) -8002f6d4: 00000000 nop -8002f6d8: 8c430000 lw v1,0(v0) -8002f6dc: 24020010 li v0,16 -8002f6e0: 10620004 beq v1,v0,8002f6f4 -8002f6e4: 00000000 nop - { - //printf("timdata_i[0] = %08x\n", timdata_i[0]); - return 0; // Unknown version or ID -8002f6e8: 00001021 move v0,zero -8002f6ec: 10000094 b 8002f940 -8002f6f0: 00000000 nop - } - - image->pmode = timdata_i[1] & 7; -8002f6f4: 8fc20004 lw v0,4(s8) -8002f6f8: 00000000 nop -8002f6fc: 24420004 addiu v0,v0,4 -8002f700: 8c420000 lw v0,0(v0) -8002f704: 00000000 nop -8002f708: 30430007 andi v1,v0,0x7 -8002f70c: 8fc20018 lw v0,24(s8) -8002f710: 00000000 nop -8002f714: ac430000 sw v1,0(v0) - - //printf("image->pmode = %d\n", image->pmode); - - image->has_clut = (timdata_i[1] & 8) ? 1 : 0; -8002f718: 8fc20004 lw v0,4(s8) -8002f71c: 00000000 nop -8002f720: 24420004 addiu v0,v0,4 -8002f724: 8c420000 lw v0,0(v0) -8002f728: 00000000 nop -8002f72c: 30420008 andi v0,v0,0x8 -8002f730: 0002102b sltu v0,zero,v0 -8002f734: 304200ff andi v0,v0,0xff -8002f738: 00401821 move v1,v0 -8002f73c: 8fc20018 lw v0,24(s8) -8002f740: 00000000 nop -8002f744: ac430004 sw v1,4(v0) - - if(!image->has_clut) -8002f748: 8fc20018 lw v0,24(s8) -8002f74c: 00000000 nop -8002f750: 8c420004 lw v0,4(v0) -8002f754: 00000000 nop -8002f758: 14400005 bnez v0,8002f770 -8002f75c: 00000000 nop - pdata_pos = 8; -8002f760: 24020008 li v0,8 -8002f764: afc20000 sw v0,0(s8) -8002f768: 10000032 b 8002f834 -8002f76c: 00000000 nop - else - { - pdata_pos = 8 + timdata_i[2]; -8002f770: 8fc20004 lw v0,4(s8) -8002f774: 00000000 nop -8002f778: 24420008 addiu v0,v0,8 -8002f77c: 8c420000 lw v0,0(v0) -8002f780: 00000000 nop -8002f784: 24420008 addiu v0,v0,8 -8002f788: afc20000 sw v0,0(s8) - image->clut_x = timdata_s[6]; -8002f78c: 8fc20008 lw v0,8(s8) -8002f790: 00000000 nop -8002f794: 2442000c addiu v0,v0,12 -8002f798: 94420000 lhu v0,0(v0) -8002f79c: 00000000 nop -8002f7a0: 00401821 move v1,v0 -8002f7a4: 8fc20018 lw v0,24(s8) -8002f7a8: 00000000 nop -8002f7ac: ac430008 sw v1,8(v0) - image->clut_y = timdata_s[7]; -8002f7b0: 8fc20008 lw v0,8(s8) -8002f7b4: 00000000 nop -8002f7b8: 2442000e addiu v0,v0,14 -8002f7bc: 94420000 lhu v0,0(v0) -8002f7c0: 00000000 nop -8002f7c4: 00401821 move v1,v0 -8002f7c8: 8fc20018 lw v0,24(s8) -8002f7cc: 00000000 nop -8002f7d0: ac43000c sw v1,12(v0) - image->clut_w = timdata_s[8]; -8002f7d4: 8fc20008 lw v0,8(s8) -8002f7d8: 00000000 nop -8002f7dc: 24420010 addiu v0,v0,16 -8002f7e0: 94420000 lhu v0,0(v0) -8002f7e4: 00000000 nop -8002f7e8: 00401821 move v1,v0 -8002f7ec: 8fc20018 lw v0,24(s8) -8002f7f0: 00000000 nop -8002f7f4: ac430010 sw v1,16(v0) - image->clut_h = timdata_s[9]; -8002f7f8: 8fc20008 lw v0,8(s8) -8002f7fc: 00000000 nop -8002f800: 24420012 addiu v0,v0,18 -8002f804: 94420000 lhu v0,0(v0) -8002f808: 00000000 nop -8002f80c: 00401821 move v1,v0 -8002f810: 8fc20018 lw v0,24(s8) -8002f814: 00000000 nop -8002f818: ac430014 sw v1,20(v0) - image->clut_data = &timdata_s[10]; -8002f81c: 8fc20008 lw v0,8(s8) -8002f820: 00000000 nop -8002f824: 24430014 addiu v1,v0,20 -8002f828: 8fc20018 lw v0,24(s8) -8002f82c: 00000000 nop -8002f830: ac430028 sw v1,40(v0) - printf("image->clut_x = %d\n", image->clut_x); - printf("image->clut_h = %d\n", image->clut_h); - printf("image->clut_w = %d\n", image->clut_w);*/ - } - - pdata_pos_s = pdata_pos / 2; -8002f834: 8fc20000 lw v0,0(s8) -8002f838: 00000000 nop -8002f83c: 00021042 srl v0,v0,0x1 -8002f840: afc2000c sw v0,12(s8) - - image->x = timdata_s[pdata_pos_s + 2]; -8002f844: 8fc2000c lw v0,12(s8) -8002f848: 00000000 nop -8002f84c: 24420002 addiu v0,v0,2 -8002f850: 00021040 sll v0,v0,0x1 -8002f854: 8fc30008 lw v1,8(s8) -8002f858: 00000000 nop -8002f85c: 00621021 addu v0,v1,v0 -8002f860: 94420000 lhu v0,0(v0) -8002f864: 00000000 nop -8002f868: 00401821 move v1,v0 -8002f86c: 8fc20018 lw v0,24(s8) -8002f870: 00000000 nop -8002f874: ac430018 sw v1,24(v0) - image->y = timdata_s[pdata_pos_s + 3]; -8002f878: 8fc2000c lw v0,12(s8) -8002f87c: 00000000 nop -8002f880: 24420003 addiu v0,v0,3 -8002f884: 00021040 sll v0,v0,0x1 -8002f888: 8fc30008 lw v1,8(s8) -8002f88c: 00000000 nop -8002f890: 00621021 addu v0,v1,v0 -8002f894: 94420000 lhu v0,0(v0) -8002f898: 00000000 nop -8002f89c: 00401821 move v1,v0 -8002f8a0: 8fc20018 lw v0,24(s8) -8002f8a4: 00000000 nop -8002f8a8: ac43001c sw v1,28(v0) - image->w = timdata_s[pdata_pos_s + 4]; -8002f8ac: 8fc2000c lw v0,12(s8) -8002f8b0: 00000000 nop -8002f8b4: 24420004 addiu v0,v0,4 -8002f8b8: 00021040 sll v0,v0,0x1 -8002f8bc: 8fc30008 lw v1,8(s8) -8002f8c0: 00000000 nop -8002f8c4: 00621021 addu v0,v1,v0 -8002f8c8: 94420000 lhu v0,0(v0) -8002f8cc: 00000000 nop -8002f8d0: 00401821 move v1,v0 -8002f8d4: 8fc20018 lw v0,24(s8) -8002f8d8: 00000000 nop -8002f8dc: ac430020 sw v1,32(v0) - image->h = timdata_s[pdata_pos_s + 5]; -8002f8e0: 8fc2000c lw v0,12(s8) -8002f8e4: 00000000 nop -8002f8e8: 24420005 addiu v0,v0,5 -8002f8ec: 00021040 sll v0,v0,0x1 -8002f8f0: 8fc30008 lw v1,8(s8) -8002f8f4: 00000000 nop -8002f8f8: 00621021 addu v0,v1,v0 -8002f8fc: 94420000 lhu v0,0(v0) -8002f900: 00000000 nop -8002f904: 00401821 move v1,v0 -8002f908: 8fc20018 lw v0,24(s8) -8002f90c: 00000000 nop -8002f910: ac430024 sw v1,36(v0) - image->data = &timdata_s[pdata_pos_s + 6]; -8002f914: 8fc2000c lw v0,12(s8) -8002f918: 00000000 nop -8002f91c: 24420006 addiu v0,v0,6 -8002f920: 00021040 sll v0,v0,0x1 -8002f924: 8fc30008 lw v1,8(s8) -8002f928: 00000000 nop -8002f92c: 00621821 addu v1,v1,v0 -8002f930: 8fc20018 lw v0,24(s8) -8002f934: 00000000 nop -8002f938: ac43002c sw v1,44(v0) - /*printf("image->y = %d\n", image->y); - printf("image->x = %d\n", image->x); - printf("image->h = %d\n", image->h); - printf("image->w = %d\n", image->w);*/ - - return 1; -8002f93c: 24020001 li v0,1 -} -8002f940: 03c0e821 move sp,s8 -8002f944: 8fbe0014 lw s8,20(sp) -8002f948: 27bd0018 addiu sp,sp,24 -8002f94c: 03e00008 jr ra -8002f950: 00000000 nop - -8002f954 : - -void GsUploadImage(GsImage *image) -{ -8002f954: 27bdffe0 addiu sp,sp,-32 -8002f958: afbf001c sw ra,28(sp) -8002f95c: afbe0018 sw s8,24(sp) -8002f960: 03a0f021 move s8,sp -8002f964: afc40020 sw a0,32(s8) - if(image->has_clut) -8002f968: 8fc20020 lw v0,32(s8) -8002f96c: 00000000 nop -8002f970: 8c420004 lw v0,4(v0) -8002f974: 00000000 nop -8002f978: 10400004 beqz v0,8002f98c -8002f97c: 00000000 nop - { - GsUploadCLUT(image); -8002f980: 8fc40020 lw a0,32(s8) -8002f984: 0c00be81 jal 8002fa04 -8002f988: 00000000 nop - } - - LoadImage(image->data, image->x, image->y, image->w, image->h); -8002f98c: 8fc20020 lw v0,32(s8) -8002f990: 00000000 nop -8002f994: 8c43002c lw v1,44(v0) -8002f998: 8fc20020 lw v0,32(s8) -8002f99c: 00000000 nop -8002f9a0: 8c440018 lw a0,24(v0) -8002f9a4: 8fc20020 lw v0,32(s8) -8002f9a8: 00000000 nop -8002f9ac: 8c45001c lw a1,28(v0) -8002f9b0: 8fc20020 lw v0,32(s8) -8002f9b4: 00000000 nop -8002f9b8: 8c460020 lw a2,32(v0) -8002f9bc: 8fc20020 lw v0,32(s8) -8002f9c0: 00000000 nop -8002f9c4: 8c420024 lw v0,36(v0) -8002f9c8: 00000000 nop -8002f9cc: afa20010 sw v0,16(sp) -8002f9d0: 00c03821 move a3,a2 -8002f9d4: 00a03021 move a2,a1 -8002f9d8: 00802821 move a1,a0 -8002f9dc: 00602021 move a0,v1 -8002f9e0: 0c00ba60 jal 8002e980 -8002f9e4: 00000000 nop -} -8002f9e8: 00000000 nop -8002f9ec: 03c0e821 move sp,s8 -8002f9f0: 8fbf001c lw ra,28(sp) -8002f9f4: 8fbe0018 lw s8,24(sp) -8002f9f8: 27bd0020 addiu sp,sp,32 -8002f9fc: 03e00008 jr ra -8002fa00: 00000000 nop - -8002fa04 : - -void GsUploadCLUT(GsImage * image) -{ -8002fa04: 27bdffe0 addiu sp,sp,-32 -8002fa08: afbf001c sw ra,28(sp) -8002fa0c: afbe0018 sw s8,24(sp) -8002fa10: 03a0f021 move s8,sp -8002fa14: afc40020 sw a0,32(s8) - LoadImage( image->clut_data, image->clut_x, image->clut_y, -8002fa18: 8fc20020 lw v0,32(s8) -8002fa1c: 00000000 nop -8002fa20: 8c430028 lw v1,40(v0) -8002fa24: 8fc20020 lw v0,32(s8) -8002fa28: 00000000 nop -8002fa2c: 8c440008 lw a0,8(v0) -8002fa30: 8fc20020 lw v0,32(s8) -8002fa34: 00000000 nop -8002fa38: 8c45000c lw a1,12(v0) -8002fa3c: 8fc20020 lw v0,32(s8) -8002fa40: 00000000 nop -8002fa44: 8c460010 lw a2,16(v0) -8002fa48: 8fc20020 lw v0,32(s8) -8002fa4c: 00000000 nop -8002fa50: 8c420014 lw v0,20(v0) -8002fa54: 00000000 nop -8002fa58: afa20010 sw v0,16(sp) -8002fa5c: 00c03821 move a3,a2 -8002fa60: 00a03021 move a2,a1 -8002fa64: 00802821 move a1,a0 -8002fa68: 00602021 move a0,v1 -8002fa6c: 0c00ba60 jal 8002e980 -8002fa70: 00000000 nop - image->clut_w, image->clut_h ); -} -8002fa74: 00000000 nop -8002fa78: 03c0e821 move sp,s8 -8002fa7c: 8fbf001c lw ra,28(sp) -8002fa80: 8fbe0018 lw s8,24(sp) -8002fa84: 27bd0020 addiu sp,sp,32 -8002fa88: 03e00008 jr ra -8002fa8c: 00000000 nop - -8002fa90 : - -int GsSpriteFromImage(GsSprite *sprite, GsImage *image, int do_upload) -{ -8002fa90: 27bdffe8 addiu sp,sp,-24 -8002fa94: afbf0014 sw ra,20(sp) -8002fa98: afbe0010 sw s8,16(sp) -8002fa9c: 03a0f021 move s8,sp -8002faa0: afc40018 sw a0,24(s8) -8002faa4: afc5001c sw a1,28(s8) -8002faa8: afc60020 sw a2,32(s8) - if(do_upload) -8002faac: 8fc20020 lw v0,32(s8) -8002fab0: 00000000 nop -8002fab4: 10400004 beqz v0,8002fac8 -8002fab8: 00000000 nop - GsUploadImage(image); -8002fabc: 8fc4001c lw a0,28(s8) -8002fac0: 0c00be55 jal 8002f954 -8002fac4: 00000000 nop - - bzero(sprite, sizeof(GsSprite)); -8002fac8: 2406002c li a2,44 -8002facc: 00002821 move a1,zero -8002fad0: 8fc40018 lw a0,24(s8) -8002fad4: 0c00d7ab jal 80035eac -8002fad8: 00000000 nop - - sprite->tpage = (image->x / 64) + ((image->y/256)*16); -8002fadc: 8fc2001c lw v0,28(s8) -8002fae0: 00000000 nop -8002fae4: 8c420018 lw v0,24(v0) -8002fae8: 00000000 nop -8002faec: 04410002 bgez v0,8002faf8 -8002faf0: 00000000 nop -8002faf4: 2442003f addiu v0,v0,63 -8002faf8: 00021183 sra v0,v0,0x6 -8002fafc: 304300ff andi v1,v0,0xff -8002fb00: 8fc2001c lw v0,28(s8) -8002fb04: 00000000 nop -8002fb08: 8c42001c lw v0,28(v0) -8002fb0c: 00000000 nop -8002fb10: 04410002 bgez v0,8002fb1c -8002fb14: 00000000 nop -8002fb18: 244200ff addiu v0,v0,255 -8002fb1c: 00021203 sra v0,v0,0x8 -8002fb20: 304200ff andi v0,v0,0xff -8002fb24: 00021100 sll v0,v0,0x4 -8002fb28: 304200ff andi v0,v0,0xff -8002fb2c: 00621021 addu v0,v1,v0 -8002fb30: 304300ff andi v1,v0,0xff -8002fb34: 8fc20018 lw v0,24(s8) -8002fb38: 00000000 nop -8002fb3c: a0430011 sb v1,17(v0) - sprite->u = image->x & 0x3f; -8002fb40: 8fc2001c lw v0,28(s8) -8002fb44: 00000000 nop -8002fb48: 8c420018 lw v0,24(v0) -8002fb4c: 00000000 nop -8002fb50: 304200ff andi v0,v0,0xff -8002fb54: 3042003f andi v0,v0,0x3f -8002fb58: 304300ff andi v1,v0,0xff -8002fb5c: 8fc20018 lw v0,24(s8) -8002fb60: 00000000 nop -8002fb64: a0430004 sb v1,4(v0) - sprite->v = image->y & 0xff; -8002fb68: 8fc2001c lw v0,28(s8) -8002fb6c: 00000000 nop -8002fb70: 8c42001c lw v0,28(v0) -8002fb74: 00000000 nop -8002fb78: 304300ff andi v1,v0,0xff -8002fb7c: 8fc20018 lw v0,24(s8) -8002fb80: 00000000 nop -8002fb84: a0430005 sb v1,5(v0) - - sprite->cx = image->clut_x; -8002fb88: 8fc2001c lw v0,28(s8) -8002fb8c: 00000000 nop -8002fb90: 8c420008 lw v0,8(v0) -8002fb94: 00000000 nop -8002fb98: 00021c00 sll v1,v0,0x10 -8002fb9c: 00031c03 sra v1,v1,0x10 -8002fba0: 8fc20018 lw v0,24(s8) -8002fba4: 00000000 nop -8002fba8: a443000a sh v1,10(v0) - sprite->cy = image->clut_y; -8002fbac: 8fc2001c lw v0,28(s8) -8002fbb0: 00000000 nop -8002fbb4: 8c42000c lw v0,12(v0) -8002fbb8: 00000000 nop -8002fbbc: 00021c00 sll v1,v0,0x10 -8002fbc0: 00031c03 sra v1,v1,0x10 -8002fbc4: 8fc20018 lw v0,24(s8) -8002fbc8: 00000000 nop -8002fbcc: a443000c sh v1,12(v0) - - if(image->pmode == 0) // 4-bit pixel mode -8002fbd0: 8fc2001c lw v0,28(s8) -8002fbd4: 00000000 nop -8002fbd8: 8c420000 lw v0,0(v0) -8002fbdc: 00000000 nop -8002fbe0: 1440000c bnez v0,8002fc14 -8002fbe4: 00000000 nop - sprite->u*=4; -8002fbe8: 8fc20018 lw v0,24(s8) -8002fbec: 00000000 nop -8002fbf0: 90420004 lbu v0,4(v0) -8002fbf4: 00000000 nop -8002fbf8: 00021080 sll v0,v0,0x2 -8002fbfc: 304300ff andi v1,v0,0xff -8002fc00: 8fc20018 lw v0,24(s8) -8002fc04: 00000000 nop -8002fc08: a0430004 sb v1,4(v0) -8002fc0c: 10000010 b 8002fc50 -8002fc10: 00000000 nop - else if(image->pmode == 1) // 8-bit pixel mode -8002fc14: 8fc2001c lw v0,28(s8) -8002fc18: 00000000 nop -8002fc1c: 8c430000 lw v1,0(v0) -8002fc20: 24020001 li v0,1 -8002fc24: 1462000a bne v1,v0,8002fc50 -8002fc28: 00000000 nop - sprite->u*=2; -8002fc2c: 8fc20018 lw v0,24(s8) -8002fc30: 00000000 nop -8002fc34: 90420004 lbu v0,4(v0) -8002fc38: 00000000 nop -8002fc3c: 00021040 sll v0,v0,0x1 -8002fc40: 304300ff andi v1,v0,0xff -8002fc44: 8fc20018 lw v0,24(s8) -8002fc48: 00000000 nop -8002fc4c: a0430004 sb v1,4(v0) - - switch(image->pmode) -8002fc50: 8fc2001c lw v0,28(s8) -8002fc54: 00000000 nop -8002fc58: 8c420000 lw v0,0(v0) -8002fc5c: 24030001 li v1,1 -8002fc60: 1043001e beq v0,v1,8002fcdc -8002fc64: 00000000 nop -8002fc68: 28430002 slti v1,v0,2 -8002fc6c: 10600005 beqz v1,8002fc84 -8002fc70: 00000000 nop -8002fc74: 1040000b beqz v0,8002fca4 -8002fc78: 00000000 nop -8002fc7c: 10000045 b 8002fd94 -8002fc80: 00000000 nop -8002fc84: 24030002 li v1,2 -8002fc88: 10430022 beq v0,v1,8002fd14 -8002fc8c: 00000000 nop -8002fc90: 24030003 li v1,3 -8002fc94: 1043002a beq v0,v1,8002fd40 -8002fc98: 00000000 nop -8002fc9c: 1000003d b 8002fd94 -8002fca0: 00000000 nop - { - case 0: - sprite->w = image->w * 4; -8002fca4: 8fc2001c lw v0,28(s8) -8002fca8: 00000000 nop -8002fcac: 8c420020 lw v0,32(v0) -8002fcb0: 00000000 nop -8002fcb4: 3042ffff andi v0,v0,0xffff -8002fcb8: 00021080 sll v0,v0,0x2 -8002fcbc: 3042ffff andi v0,v0,0xffff -8002fcc0: 00021c00 sll v1,v0,0x10 -8002fcc4: 00031c03 sra v1,v1,0x10 -8002fcc8: 8fc20018 lw v0,24(s8) -8002fccc: 00000000 nop -8002fcd0: a4430006 sh v1,6(v0) - break; -8002fcd4: 1000002f b 8002fd94 -8002fcd8: 00000000 nop - case 1: - sprite->w = image->w * 2; -8002fcdc: 8fc2001c lw v0,28(s8) -8002fce0: 00000000 nop -8002fce4: 8c420020 lw v0,32(v0) -8002fce8: 00000000 nop -8002fcec: 3042ffff andi v0,v0,0xffff -8002fcf0: 00021040 sll v0,v0,0x1 -8002fcf4: 3042ffff andi v0,v0,0xffff -8002fcf8: 00021c00 sll v1,v0,0x10 -8002fcfc: 00031c03 sra v1,v1,0x10 -8002fd00: 8fc20018 lw v0,24(s8) -8002fd04: 00000000 nop -8002fd08: a4430006 sh v1,6(v0) - break; -8002fd0c: 10000021 b 8002fd94 -8002fd10: 00000000 nop - case 2: - sprite->w = image->w; -8002fd14: 8fc2001c lw v0,28(s8) -8002fd18: 00000000 nop -8002fd1c: 8c420020 lw v0,32(v0) -8002fd20: 00000000 nop -8002fd24: 00021c00 sll v1,v0,0x10 -8002fd28: 00031c03 sra v1,v1,0x10 -8002fd2c: 8fc20018 lw v0,24(s8) -8002fd30: 00000000 nop -8002fd34: a4430006 sh v1,6(v0) - break; -8002fd38: 10000016 b 8002fd94 -8002fd3c: 00000000 nop - case 3: - sprite->w = image->w + (image->w / 2); -8002fd40: 8fc2001c lw v0,28(s8) -8002fd44: 00000000 nop -8002fd48: 8c420020 lw v0,32(v0) -8002fd4c: 00000000 nop -8002fd50: 3043ffff andi v1,v0,0xffff -8002fd54: 8fc2001c lw v0,28(s8) -8002fd58: 00000000 nop -8002fd5c: 8c420020 lw v0,32(v0) -8002fd60: 00000000 nop -8002fd64: 000227c2 srl a0,v0,0x1f -8002fd68: 00821021 addu v0,a0,v0 -8002fd6c: 00021043 sra v0,v0,0x1 -8002fd70: 3042ffff andi v0,v0,0xffff -8002fd74: 00621021 addu v0,v1,v0 -8002fd78: 3042ffff andi v0,v0,0xffff -8002fd7c: 00021c00 sll v1,v0,0x10 -8002fd80: 00031c03 sra v1,v1,0x10 -8002fd84: 8fc20018 lw v0,24(s8) -8002fd88: 00000000 nop -8002fd8c: a4430006 sh v1,6(v0) - break; -8002fd90: 00000000 nop - } - - sprite->h = image->h; -8002fd94: 8fc2001c lw v0,28(s8) -8002fd98: 00000000 nop -8002fd9c: 8c420024 lw v0,36(v0) -8002fda0: 00000000 nop -8002fda4: 00021c00 sll v1,v0,0x10 -8002fda8: 00031c03 sra v1,v1,0x10 -8002fdac: 8fc20018 lw v0,24(s8) -8002fdb0: 00000000 nop -8002fdb4: a4430008 sh v1,8(v0) - sprite->attribute = COLORMODE(image->pmode); -8002fdb8: 8fc2001c lw v0,28(s8) -8002fdbc: 00000000 nop -8002fdc0: 8c420000 lw v0,0(v0) -8002fdc4: 00000000 nop -8002fdc8: 30430003 andi v1,v0,0x3 -8002fdcc: 8fc20018 lw v0,24(s8) -8002fdd0: 00000000 nop -8002fdd4: ac430014 sw v1,20(v0) - sprite->r = sprite->g = sprite->b = NORMAL_LUMINANCE; -8002fdd8: 8fc20018 lw v0,24(s8) -8002fddc: 2403ff80 li v1,-128 -8002fde0: a0430010 sb v1,16(v0) -8002fde4: 8fc20018 lw v0,24(s8) -8002fde8: 00000000 nop -8002fdec: 90430010 lbu v1,16(v0) -8002fdf0: 8fc20018 lw v0,24(s8) -8002fdf4: 00000000 nop -8002fdf8: a043000f sb v1,15(v0) -8002fdfc: 8fc20018 lw v0,24(s8) -8002fe00: 00000000 nop -8002fe04: 9043000f lbu v1,15(v0) -8002fe08: 8fc20018 lw v0,24(s8) -8002fe0c: 00000000 nop -8002fe10: a043000e sb v1,14(v0) - - return 1; -8002fe14: 24020001 li v0,1 -} -8002fe18: 03c0e821 move sp,s8 -8002fe1c: 8fbf0014 lw ra,20(sp) -8002fe20: 8fbe0010 lw s8,16(sp) -8002fe24: 27bd0018 addiu sp,sp,24 -8002fe28: 03e00008 jr ra -8002fe2c: 00000000 nop - -8002fe30 : - -void GsSetMasking(unsigned char flag) -{ -8002fe30: 27bdffe8 addiu sp,sp,-24 -8002fe34: afbf0014 sw ra,20(sp) -8002fe38: afbe0010 sw s8,16(sp) -8002fe3c: 03a0f021 move s8,sp -8002fe40: 00801021 move v0,a0 -8002fe44: a3c20018 sb v0,24(s8) - gpu_data_ctrl(0xe6, flag); -8002fe48: 93c20018 lbu v0,24(s8) -8002fe4c: 00000000 nop -8002fe50: 00402821 move a1,v0 -8002fe54: 240400e6 li a0,230 -8002fe58: 0c00bbb5 jal 8002eed4 -8002fe5c: 00000000 nop -} -8002fe60: 00000000 nop -8002fe64: 03c0e821 move sp,s8 -8002fe68: 8fbf0014 lw ra,20(sp) -8002fe6c: 8fbe0010 lw s8,16(sp) -8002fe70: 27bd0018 addiu sp,sp,24 -8002fe74: 03e00008 jr ra -8002fe78: 00000000 nop - -8002fe7c : - -int GsIsDrawing() -{ -8002fe7c: 27bdfff8 addiu sp,sp,-8 -8002fe80: afbe0004 sw s8,4(sp) -8002fe84: 03a0f021 move s8,sp - for(x = 0; x < 1000; x++); - - return r; - }*/ - - return !(GPU_CONTROL_PORT & (1<<0x1a)) ; -8002fe88: 3c021f80 lui v0,0x1f80 -8002fe8c: 34421814 ori v0,v0,0x1814 -8002fe90: 8c430000 lw v1,0(v0) -8002fe94: 3c020400 lui v0,0x400 -8002fe98: 00621024 and v0,v1,v0 -8002fe9c: 2c420001 sltiu v0,v0,1 -8002fea0: 304200ff andi v0,v0,0xff -} -8002fea4: 03c0e821 move sp,s8 -8002fea8: 8fbe0004 lw s8,4(sp) -8002feac: 27bd0008 addiu sp,sp,8 -8002feb0: 03e00008 jr ra -8002feb4: 00000000 nop - -8002feb8 : - -// Functions which use default values to use when you do not -// really need to fiddle with all the fields of the structure - -void GsSetDrawEnvSimple(int x, int y, int w, int h) -{ -8002feb8: 27bdffd8 addiu sp,sp,-40 -8002febc: afbf0024 sw ra,36(sp) -8002fec0: afbe0020 sw s8,32(sp) -8002fec4: 03a0f021 move s8,sp -8002fec8: afc40028 sw a0,40(s8) -8002fecc: afc5002c sw a1,44(s8) -8002fed0: afc60030 sw a2,48(s8) -8002fed4: afc70034 sw a3,52(s8) - GsDrawEnv env; - - env.dither = 0; -8002fed8: a3c00010 sb zero,16(s8) - env.draw_on_display = 1; -8002fedc: 24020001 li v0,1 -8002fee0: a3c20011 sb v0,17(s8) - env.x = x; -8002fee4: 8fc20028 lw v0,40(s8) -8002fee8: 00000000 nop -8002feec: 00021400 sll v0,v0,0x10 -8002fef0: 00021403 sra v0,v0,0x10 -8002fef4: a7c20012 sh v0,18(s8) - env.y = y; -8002fef8: 8fc2002c lw v0,44(s8) -8002fefc: 00000000 nop -8002ff00: 00021400 sll v0,v0,0x10 -8002ff04: 00021403 sra v0,v0,0x10 -8002ff08: a7c20014 sh v0,20(s8) - env.w = w; -8002ff0c: 8fc20030 lw v0,48(s8) -8002ff10: 00000000 nop -8002ff14: 00021400 sll v0,v0,0x10 -8002ff18: 00021403 sra v0,v0,0x10 -8002ff1c: a7c20016 sh v0,22(s8) - env.h = h; -8002ff20: 8fc20034 lw v0,52(s8) -8002ff24: 00000000 nop -8002ff28: 00021400 sll v0,v0,0x10 -8002ff2c: 00021403 sra v0,v0,0x10 -8002ff30: a7c20018 sh v0,24(s8) - env.ignore_mask = 0; -8002ff34: a3c0001a sb zero,26(s8) - env.set_mask = 0; -8002ff38: a3c0001b sb zero,27(s8) - - GsSetDrawEnv(&env); -8002ff3c: 27c20010 addiu v0,s8,16 -8002ff40: 00402021 move a0,v0 -8002ff44: 0c00bada jal 8002eb68 -8002ff48: 00000000 nop -} -8002ff4c: 00000000 nop -8002ff50: 03c0e821 move sp,s8 -8002ff54: 8fbf0024 lw ra,36(sp) -8002ff58: 8fbe0020 lw s8,32(sp) -8002ff5c: 27bd0028 addiu sp,sp,40 -8002ff60: 03e00008 jr ra -8002ff64: 00000000 nop - -8002ff68 : - -void GsSetDispEnvSimple(int x, int y) -{ -8002ff68: 27bdffe0 addiu sp,sp,-32 -8002ff6c: afbf001c sw ra,28(sp) -8002ff70: afbe0018 sw s8,24(sp) -8002ff74: 03a0f021 move s8,sp -8002ff78: afc40020 sw a0,32(s8) -8002ff7c: afc50024 sw a1,36(s8) - GsDispEnv env; - - env.x = x; -8002ff80: 8fc20020 lw v0,32(s8) -8002ff84: 00000000 nop -8002ff88: 00021400 sll v0,v0,0x10 -8002ff8c: 00021403 sra v0,v0,0x10 -8002ff90: a7c20010 sh v0,16(s8) - env.y = y; -8002ff94: 8fc20024 lw v0,36(s8) -8002ff98: 00000000 nop -8002ff9c: 00021400 sll v0,v0,0x10 -8002ffa0: 00021403 sra v0,v0,0x10 -8002ffa4: a7c20012 sh v0,18(s8) - - GsSetDispEnv(&env); -8002ffa8: 27c20010 addiu v0,s8,16 -8002ffac: 00402021 move a0,v0 -8002ffb0: 0c00bb71 jal 8002edc4 -8002ffb4: 00000000 nop -} -8002ffb8: 00000000 nop -8002ffbc: 03c0e821 move sp,s8 -8002ffc0: 8fbf001c lw ra,28(sp) -8002ffc4: 8fbe0018 lw s8,24(sp) -8002ffc8: 27bd0020 addiu sp,sp,32 -8002ffcc: 03e00008 jr ra -8002ffd0: 00000000 nop - -8002ffd4 : - -// Built-in font functions. - -void GsLoadFont(int fb_x, int fb_y, int cx, int cy) -{ -8002ffd4: 27bdffd8 addiu sp,sp,-40 -8002ffd8: afbf0024 sw ra,36(sp) -8002ffdc: afbe0020 sw s8,32(sp) -8002ffe0: 03a0f021 move s8,sp -8002ffe4: afc40028 sw a0,40(s8) -8002ffe8: afc5002c sw a1,44(s8) -8002ffec: afc60030 sw a2,48(s8) -8002fff0: afc70034 sw a3,52(s8) - unsigned short pal[2] = {0x0, 0x7fff}; -8002fff4: a7c00018 sh zero,24(s8) -8002fff8: 24027fff li v0,32767 -8002fffc: a7c2001a sh v0,26(s8) - - LoadImage(psxsdk_font_data, fb_x, fb_y, 16, 128); -80030000: 24020080 li v0,128 -80030004: afa20010 sw v0,16(sp) -80030008: 24070010 li a3,16 -8003000c: 8fc6002c lw a2,44(s8) -80030010: 8fc50028 lw a1,40(s8) -80030014: 3c028004 lui v0,0x8004 -80030018: 2444154c addiu a0,v0,5452 -8003001c: 0c00ba60 jal 8002e980 -80030020: 00000000 nop - while(GsIsDrawing()); -80030024: 00000000 nop -80030028: 0c00bf9f jal 8002fe7c -8003002c: 00000000 nop -80030030: 1440fffd bnez v0,80030028 -80030034: 00000000 nop - - if(cx != -1 && cy != -1) -80030038: 8fc30030 lw v1,48(s8) -8003003c: 2402ffff li v0,-1 -80030040: 1062001b beq v1,v0,800300b0 -80030044: 00000000 nop -80030048: 8fc30034 lw v1,52(s8) -8003004c: 2402ffff li v0,-1 -80030050: 10620017 beq v1,v0,800300b0 -80030054: 00000000 nop - { - LoadImage(pal, cx, cy, 16, 1); -80030058: 24020001 li v0,1 -8003005c: afa20010 sw v0,16(sp) -80030060: 24070010 li a3,16 -80030064: 8fc60034 lw a2,52(s8) -80030068: 8fc50030 lw a1,48(s8) -8003006c: 27c20018 addiu v0,s8,24 -80030070: 00402021 move a0,v0 -80030074: 0c00ba60 jal 8002e980 -80030078: 00000000 nop - - fb_font_cx = cx; -8003007c: 3c028007 lui v0,0x8007 -80030080: 8fc30030 lw v1,48(s8) -80030084: 00000000 nop -80030088: ac431d54 sw v1,7508(v0) - fb_font_cy = cy; -8003008c: 3c028007 lui v0,0x8007 -80030090: 8fc30034 lw v1,52(s8) -80030094: 00000000 nop -80030098: ac431d44 sw v1,7492(v0) - - while(GsIsDrawing()); -8003009c: 00000000 nop -800300a0: 0c00bf9f jal 8002fe7c -800300a4: 00000000 nop -800300a8: 1440fffd bnez v0,800300a0 -800300ac: 00000000 nop - } - - fb_font_x = fb_x; -800300b0: 3c028007 lui v0,0x8007 -800300b4: 8fc30028 lw v1,40(s8) -800300b8: 00000000 nop -800300bc: ac431d4c sw v1,7500(v0) - fb_font_y = fb_y; -800300c0: 3c028007 lui v0,0x8007 -800300c4: 8fc3002c lw v1,44(s8) -800300c8: 00000000 nop -800300cc: ac431d3c sw v1,7484(v0) -} -800300d0: 00000000 nop -800300d4: 03c0e821 move sp,s8 -800300d8: 8fbf0024 lw ra,36(sp) -800300dc: 8fbe0020 lw s8,32(sp) -800300e0: 27bd0028 addiu sp,sp,40 -800300e4: 03e00008 jr ra -800300e8: 00000000 nop - -800300ec : - -unsigned int GsPrintFont_Draw(int x, int y, int scalex, int scaley) -{ -800300ec: 27bdffb0 addiu sp,sp,-80 -800300f0: afbf004c sw ra,76(sp) -800300f4: afbe0048 sw s8,72(sp) -800300f8: 03a0f021 move s8,sp -800300fc: afc40050 sw a0,80(s8) -80030100: afc50054 sw a1,84(s8) -80030104: afc60058 sw a2,88(s8) -80030108: afc7005c sw a3,92(s8) - va_start(ap, fmt);*/ - -// r = vsnprintf(gpu_stringbuf, 512, fmt, ap); - -// va_end(ap); - fw = gs_calculate_scaled_size(8, scalex);//(8*scalex)/4096; -8003010c: 8fc50058 lw a1,88(s8) -80030110: 24040008 li a0,8 -80030114: 0c00ae07 jal 8002b81c -80030118: 00000000 nop -8003011c: afc20014 sw v0,20(s8) - fh = gs_calculate_scaled_size(8, scaley);//(8*scaley)/4096; -80030120: 8fc5005c lw a1,92(s8) -80030124: 24040008 li a0,8 -80030128: 0c00ae07 jal 8002b81c -8003012c: 00000000 nop -80030130: afc20018 sw v0,24(s8) - - spr.x = x; -80030134: 8fc20050 lw v0,80(s8) -80030138: 00000000 nop -8003013c: 00021400 sll v0,v0,0x10 -80030140: 00021403 sra v0,v0,0x10 -80030144: a7c2001c sh v0,28(s8) - spr.y = y; -80030148: 8fc20054 lw v0,84(s8) -8003014c: 00000000 nop -80030150: 00021400 sll v0,v0,0x10 -80030154: 00021403 sra v0,v0,0x10 -80030158: a7c2001e sh v0,30(s8) - spr.r = prfont_rl; -8003015c: 3c028004 lui v0,0x8004 -80030160: 9042255c lbu v0,9564(v0) -80030164: 00000000 nop -80030168: a3c2002a sb v0,42(s8) - spr.g = prfont_gl; -8003016c: 3c028004 lui v0,0x8004 -80030170: 9042255d lbu v0,9565(v0) -80030174: 00000000 nop -80030178: a3c2002b sb v0,43(s8) - spr.b = prfont_bl; -8003017c: 3c028004 lui v0,0x8004 -80030180: 9042255e lbu v0,9566(v0) -80030184: 00000000 nop -80030188: a3c2002c sb v0,44(s8) - spr.attribute = 0; -8003018c: afc00030 sw zero,48(s8) - spr.cx = fb_font_cx; -80030190: 3c028007 lui v0,0x8007 -80030194: 8c421d54 lw v0,7508(v0) -80030198: 00000000 nop -8003019c: 00021400 sll v0,v0,0x10 -800301a0: 00021403 sra v0,v0,0x10 -800301a4: a7c20026 sh v0,38(s8) - spr.cy = fb_font_cy; -800301a8: 3c028007 lui v0,0x8007 -800301ac: 8c421d44 lw v0,7492(v0) -800301b0: 00000000 nop -800301b4: 00021400 sll v0,v0,0x10 -800301b8: 00021403 sra v0,v0,0x10 -800301bc: a7c20028 sh v0,40(s8) - spr.tpage = (fb_font_x / 64) + ((fb_font_y / 256)*16); -800301c0: 3c028007 lui v0,0x8007 -800301c4: 8c421d4c lw v0,7500(v0) -800301c8: 00000000 nop -800301cc: 04410002 bgez v0,800301d8 -800301d0: 00000000 nop -800301d4: 2442003f addiu v0,v0,63 -800301d8: 00021183 sra v0,v0,0x6 -800301dc: 304300ff andi v1,v0,0xff -800301e0: 3c028007 lui v0,0x8007 -800301e4: 8c421d3c lw v0,7484(v0) -800301e8: 00000000 nop -800301ec: 04410002 bgez v0,800301f8 -800301f0: 00000000 nop -800301f4: 244200ff addiu v0,v0,255 -800301f8: 00021203 sra v0,v0,0x8 -800301fc: 304200ff andi v0,v0,0xff -80030200: 00021100 sll v0,v0,0x4 -80030204: 304200ff andi v0,v0,0xff -80030208: 00621021 addu v0,v1,v0 -8003020c: 304200ff andi v0,v0,0xff -80030210: a3c2002d sb v0,45(s8) - spr.w = 8; -80030214: 24020008 li v0,8 -80030218: a7c20022 sh v0,34(s8) - spr.h = 8; -8003021c: 24020008 li v0,8 -80030220: a7c20024 sh v0,36(s8) - spr.scalex = scalex; -80030224: 8fc20058 lw v0,88(s8) -80030228: 00000000 nop -8003022c: afc20034 sw v0,52(s8) - spr.scaley = scaley; -80030230: 8fc2005c lw v0,92(s8) -80030234: 00000000 nop -80030238: afc20038 sw v0,56(s8) - - string = gpu_stringbuf; -8003023c: 3c028007 lui v0,0x8007 -80030240: 24428960 addiu v0,v0,-30368 -80030244: afc20010 sw v0,16(s8) - - while(*string) -80030248: 100000da b 800305b4 -8003024c: 00000000 nop - { - if(prfont_flags & PRFONT_WRAP) -80030250: 3c028007 lui v0,0x8007 -80030254: 8c421cdc lw v0,7388(v0) -80030258: 00000000 nop -8003025c: 30420001 andi v0,v0,0x1 -80030260: 10400020 beqz v0,800302e4 -80030264: 00000000 nop - { - if(spr.x >= GsScreenW) -80030268: 87c2001c lh v0,28(s8) -8003026c: 00000000 nop -80030270: 00401821 move v1,v0 -80030274: 3c028007 lui v0,0x8007 -80030278: 94421d48 lhu v0,7496(v0) -8003027c: 00000000 nop -80030280: 0062102a slt v0,v1,v0 -80030284: 14400017 bnez v0,800302e4 -80030288: 00000000 nop - { - spr.x = spr.x - GsScreenW; -8003028c: 87c2001c lh v0,28(s8) -80030290: 00000000 nop -80030294: 3043ffff andi v1,v0,0xffff -80030298: 3c028007 lui v0,0x8007 -8003029c: 94421d48 lhu v0,7496(v0) -800302a0: 00000000 nop -800302a4: 00621023 subu v0,v1,v0 -800302a8: 3042ffff andi v0,v0,0xffff -800302ac: 00021400 sll v0,v0,0x10 -800302b0: 00021403 sra v0,v0,0x10 -800302b4: a7c2001c sh v0,28(s8) - spr.y += fh; -800302b8: 87c2001e lh v0,30(s8) -800302bc: 00000000 nop -800302c0: 3043ffff andi v1,v0,0xffff -800302c4: 8fc20018 lw v0,24(s8) -800302c8: 00000000 nop -800302cc: 3042ffff andi v0,v0,0xffff -800302d0: 00621021 addu v0,v1,v0 -800302d4: 3042ffff andi v0,v0,0xffff -800302d8: 00021400 sll v0,v0,0x10 -800302dc: 00021403 sra v0,v0,0x10 -800302e0: a7c2001e sh v0,30(s8) - } - } - - if(*string >= ' ' && *string <= '~') -800302e4: 8fc20010 lw v0,16(s8) -800302e8: 00000000 nop -800302ec: 80420000 lb v0,0(v0) -800302f0: 00000000 nop -800302f4: 28420020 slti v0,v0,32 -800302f8: 14400071 bnez v0,800304c0 -800302fc: 00000000 nop -80030300: 8fc20010 lw v0,16(s8) -80030304: 00000000 nop -80030308: 80430000 lb v1,0(v0) -8003030c: 2402007f li v0,127 -80030310: 1062006b beq v1,v0,800304c0 -80030314: 00000000 nop - { - spr.u = ((fb_font_x & 0x3f)*4)+((*string & 7) << 3); -80030318: 3c028007 lui v0,0x8007 -8003031c: 8c421d4c lw v0,7500(v0) -80030320: 00000000 nop -80030324: 304200ff andi v0,v0,0xff -80030328: 3042003f andi v0,v0,0x3f -8003032c: 304200ff andi v0,v0,0xff -80030330: 00021080 sll v0,v0,0x2 -80030334: 304300ff andi v1,v0,0xff -80030338: 8fc20010 lw v0,16(s8) -8003033c: 00000000 nop -80030340: 80420000 lb v0,0(v0) -80030344: 00000000 nop -80030348: 304200ff andi v0,v0,0xff -8003034c: 30420007 andi v0,v0,0x7 -80030350: 304200ff andi v0,v0,0xff -80030354: 000210c0 sll v0,v0,0x3 -80030358: 304200ff andi v0,v0,0xff -8003035c: 00621021 addu v0,v1,v0 -80030360: 304200ff andi v0,v0,0xff -80030364: a3c20020 sb v0,32(s8) - spr.v = (fb_font_y & 0xff)+(*string & 0xf8); -80030368: 3c028007 lui v0,0x8007 -8003036c: 8c421d3c lw v0,7484(v0) -80030370: 00000000 nop -80030374: 304300ff andi v1,v0,0xff -80030378: 8fc20010 lw v0,16(s8) -8003037c: 00000000 nop -80030380: 80420000 lb v0,0(v0) -80030384: 00000000 nop -80030388: 304400ff andi a0,v0,0xff -8003038c: 2402fff8 li v0,-8 -80030390: 00821024 and v0,a0,v0 -80030394: 304200ff andi v0,v0,0xff -80030398: 00621021 addu v0,v1,v0 -8003039c: 304200ff andi v0,v0,0xff -800303a0: a3c20021 sb v0,33(s8) - - if((spr.x < GsCurDrawEnvW && (spr.x+fw)>=0) && -800303a4: 87c2001c lh v0,28(s8) -800303a8: 00000000 nop -800303ac: 00401821 move v1,v0 -800303b0: 3c028007 lui v0,0x8007 -800303b4: 94421d40 lhu v0,7488(v0) -800303b8: 00000000 nop -800303bc: 0062102a slt v0,v1,v0 -800303c0: 10400034 beqz v0,80030494 -800303c4: 00000000 nop -800303c8: 87c2001c lh v0,28(s8) -800303cc: 00000000 nop -800303d0: 00401821 move v1,v0 -800303d4: 8fc20014 lw v0,20(s8) -800303d8: 00000000 nop -800303dc: 00621021 addu v0,v1,v0 -800303e0: 0440002c bltz v0,80030494 -800303e4: 00000000 nop - (spr.y < GsCurDrawEnvH && (spr.y+fh)>=0)) -800303e8: 87c2001e lh v0,30(s8) -800303ec: 00000000 nop -800303f0: 00401821 move v1,v0 -800303f4: 3c028007 lui v0,0x8007 -800303f8: 94421d58 lhu v0,7512(v0) -800303fc: 00000000 nop - if(*string >= ' ' && *string <= '~') - { - spr.u = ((fb_font_x & 0x3f)*4)+((*string & 7) << 3); - spr.v = (fb_font_y & 0xff)+(*string & 0xf8); - - if((spr.x < GsCurDrawEnvW && (spr.x+fw)>=0) && -80030400: 0062102a slt v0,v1,v0 -80030404: 10400023 beqz v0,80030494 -80030408: 00000000 nop - (spr.y < GsCurDrawEnvH && (spr.y+fh)>=0)) -8003040c: 87c2001e lh v0,30(s8) -80030410: 00000000 nop -80030414: 00401821 move v1,v0 -80030418: 8fc20018 lw v0,24(s8) -8003041c: 00000000 nop -80030420: 00621021 addu v0,v1,v0 -80030424: 0440001b bltz v0,80030494 -80030428: 00000000 nop - { - - if((scalex == 0 || scalex == 1) && (scaley == 0 || scaley == 1)) -8003042c: 8fc20058 lw v0,88(s8) -80030430: 00000000 nop -80030434: 10400005 beqz v0,8003044c -80030438: 00000000 nop -8003043c: 8fc30058 lw v1,88(s8) -80030440: 24020001 li v0,1 -80030444: 1462000f bne v1,v0,80030484 -80030448: 00000000 nop -8003044c: 8fc2005c lw v0,92(s8) -80030450: 00000000 nop -80030454: 10400005 beqz v0,8003046c -80030458: 00000000 nop -8003045c: 8fc3005c lw v1,92(s8) -80030460: 24020001 li v0,1 -80030464: 14620007 bne v1,v0,80030484 -80030468: 00000000 nop - GsSortSimpleSprite(&spr); -8003046c: 27c2001c addiu v0,s8,28 -80030470: 00402021 move a0,v0 -80030474: 0c00b69c jal 8002da70 -80030478: 00000000 nop -8003047c: 10000005 b 80030494 -80030480: 00000000 nop - else - GsSortSprite(&spr); -80030484: 27c2001c addiu v0,s8,28 -80030488: 00402021 move a0,v0 -8003048c: 0c00b356 jal 8002cd58 -80030490: 00000000 nop - } - - spr.x += fw; -80030494: 87c2001c lh v0,28(s8) -80030498: 00000000 nop -8003049c: 3043ffff andi v1,v0,0xffff -800304a0: 8fc20014 lw v0,20(s8) -800304a4: 00000000 nop -800304a8: 3042ffff andi v0,v0,0xffff -800304ac: 00621021 addu v0,v1,v0 -800304b0: 3042ffff andi v0,v0,0xffff -800304b4: 00021400 sll v0,v0,0x10 -800304b8: 00021403 sra v0,v0,0x10 -800304bc: a7c2001c sh v0,28(s8) - } - - if(*string == '\r') -800304c0: 8fc20010 lw v0,16(s8) -800304c4: 00000000 nop -800304c8: 80430000 lb v1,0(v0) -800304cc: 2402000d li v0,13 -800304d0: 14620002 bne v1,v0,800304dc -800304d4: 00000000 nop - spr.x = 0; -800304d8: a7c0001c sh zero,28(s8) - - if(*string == '\n') -800304dc: 8fc20010 lw v0,16(s8) -800304e0: 00000000 nop -800304e4: 80430000 lb v1,0(v0) -800304e8: 2402000a li v0,10 -800304ec: 1462001a bne v1,v0,80030558 -800304f0: 00000000 nop - { - spr.x = (prfont_flags & PRFONT_UNIXLF)? 0 : x; -800304f4: 3c028007 lui v0,0x8007 -800304f8: 8c421cdc lw v0,7388(v0) -800304fc: 00000000 nop -80030500: 30420010 andi v0,v0,0x10 -80030504: 14400007 bnez v0,80030524 -80030508: 00000000 nop -8003050c: 8fc20050 lw v0,80(s8) -80030510: 00000000 nop -80030514: 00021400 sll v0,v0,0x10 -80030518: 00021403 sra v0,v0,0x10 -8003051c: 10000002 b 80030528 -80030520: 00000000 nop -80030524: 00001021 move v0,zero -80030528: a7c2001c sh v0,28(s8) - spr.y += fh; -8003052c: 87c2001e lh v0,30(s8) -80030530: 00000000 nop -80030534: 3043ffff andi v1,v0,0xffff -80030538: 8fc20018 lw v0,24(s8) -8003053c: 00000000 nop -80030540: 3042ffff andi v0,v0,0xffff -80030544: 00621021 addu v0,v1,v0 -80030548: 3042ffff andi v0,v0,0xffff -8003054c: 00021400 sll v0,v0,0x10 -80030550: 00021403 sra v0,v0,0x10 -80030554: a7c2001e sh v0,30(s8) - } - - if(*string == '\t') -80030558: 8fc20010 lw v0,16(s8) -8003055c: 00000000 nop -80030560: 80430000 lb v1,0(v0) -80030564: 24020009 li v0,9 -80030568: 1462000e bne v1,v0,800305a4 -8003056c: 00000000 nop - spr.x += fw * 8; -80030570: 87c2001c lh v0,28(s8) -80030574: 00000000 nop -80030578: 3043ffff andi v1,v0,0xffff -8003057c: 8fc20014 lw v0,20(s8) -80030580: 00000000 nop -80030584: 3042ffff andi v0,v0,0xffff -80030588: 000210c0 sll v0,v0,0x3 -8003058c: 3042ffff andi v0,v0,0xffff -80030590: 00621021 addu v0,v1,v0 -80030594: 3042ffff andi v0,v0,0xffff -80030598: 00021400 sll v0,v0,0x10 -8003059c: 00021403 sra v0,v0,0x10 -800305a0: a7c2001c sh v0,28(s8) - - string++; -800305a4: 8fc20010 lw v0,16(s8) -800305a8: 00000000 nop -800305ac: 24420001 addiu v0,v0,1 -800305b0: afc20010 sw v0,16(s8) - spr.scalex = scalex; - spr.scaley = scaley; - - string = gpu_stringbuf; - - while(*string) -800305b4: 8fc20010 lw v0,16(s8) -800305b8: 00000000 nop -800305bc: 80420000 lb v0,0(v0) -800305c0: 00000000 nop -800305c4: 1440ff22 bnez v0,80030250 -800305c8: 00000000 nop - spr.x += fw * 8; - - string++; - } - - return (spr.y << 16) | spr.x; -800305cc: 87c2001e lh v0,30(s8) -800305d0: 00000000 nop -800305d4: 00021400 sll v0,v0,0x10 -800305d8: 87c3001c lh v1,28(s8) -800305dc: 00000000 nop -800305e0: 00431025 or v0,v0,v1 -} -800305e4: 03c0e821 move sp,s8 -800305e8: 8fbf004c lw ra,76(sp) -800305ec: 8fbe0048 lw s8,72(sp) -800305f0: 27bd0050 addiu sp,sp,80 -800305f4: 03e00008 jr ra -800305f8: 00000000 nop - -800305fc : - -unsigned int GsVPrintFont(int x, int y, const char *fmt, va_list ap) -{ -800305fc: 27bdffe0 addiu sp,sp,-32 -80030600: afbf001c sw ra,28(sp) -80030604: afbe0018 sw s8,24(sp) -80030608: 03a0f021 move s8,sp -8003060c: afc40020 sw a0,32(s8) -80030610: afc50024 sw a1,36(s8) -80030614: afc60028 sw a2,40(s8) -80030618: afc7002c sw a3,44(s8) - int r; - //GsSprite spr; - //char *string; - int fw = gs_calculate_scaled_size(8, prfont_scale_x); -8003061c: 3c028007 lui v0,0x8007 -80030620: 8c421ce0 lw v0,7392(v0) -80030624: 00000000 nop -80030628: 00402821 move a1,v0 -8003062c: 24040008 li a0,8 -80030630: 0c00ae07 jal 8002b81c -80030634: 00000000 nop -80030638: afc20014 sw v0,20(s8) - - r = vsnprintf(gpu_stringbuf, 512, fmt, ap); -8003063c: 8fc7002c lw a3,44(s8) -80030640: 8fc60028 lw a2,40(s8) -80030644: 24050200 li a1,512 -80030648: 3c028007 lui v0,0x8007 -8003064c: 24448960 addiu a0,v0,-30368 -80030650: 0c00ec5d jal 8003b174 -80030654: 00000000 nop -80030658: afc20010 sw v0,16(s8) - - if(prfont_flags & PRFONT_WRAP) -8003065c: 3c028007 lui v0,0x8007 -80030660: 8c421cdc lw v0,7388(v0) -80030664: 00000000 nop -80030668: 30420001 andi v0,v0,0x1 -8003066c: 1040000f beqz v0,800306ac -80030670: 00000000 nop - r = GsPrintFont_Draw(x, y, prfont_scale_x, prfont_scale_y); -80030674: 3c028007 lui v0,0x8007 -80030678: 8c431ce0 lw v1,7392(v0) -8003067c: 3c028007 lui v0,0x8007 -80030680: 8c421ce4 lw v0,7396(v0) -80030684: 00000000 nop -80030688: 00403821 move a3,v0 -8003068c: 00603021 move a2,v1 -80030690: 8fc50024 lw a1,36(s8) -80030694: 8fc40020 lw a0,32(s8) -80030698: 0c00c03b jal 800300ec -8003069c: 00000000 nop -800306a0: afc20010 sw v0,16(s8) -800306a4: 10000048 b 800307c8 -800306a8: 00000000 nop - else if(prfont_flags & PRFONT_CENTER) -800306ac: 3c028007 lui v0,0x8007 -800306b0: 8c421cdc lw v0,7388(v0) -800306b4: 00000000 nop -800306b8: 30420002 andi v0,v0,0x2 -800306bc: 1040001b beqz v0,8003072c -800306c0: 00000000 nop - r = GsPrintFont_Draw(x - ((r * fw)/2), y, prfont_scale_x, prfont_scale_y); -800306c4: 8fc30010 lw v1,16(s8) -800306c8: 8fc20014 lw v0,20(s8) -800306cc: 00000000 nop -800306d0: 00620018 mult v1,v0 -800306d4: 00001012 mflo v0 -800306d8: 00021fc2 srl v1,v0,0x1f -800306dc: 00621021 addu v0,v1,v0 -800306e0: 00021043 sra v0,v0,0x1 -800306e4: 00401821 move v1,v0 -800306e8: 8fc20020 lw v0,32(s8) -800306ec: 00000000 nop -800306f0: 00431823 subu v1,v0,v1 -800306f4: 3c028007 lui v0,0x8007 -800306f8: 8c441ce0 lw a0,7392(v0) -800306fc: 3c028007 lui v0,0x8007 -80030700: 8c421ce4 lw v0,7396(v0) -80030704: 00000000 nop -80030708: 00403821 move a3,v0 -8003070c: 00803021 move a2,a0 -80030710: 8fc50024 lw a1,36(s8) -80030714: 00602021 move a0,v1 -80030718: 0c00c03b jal 800300ec -8003071c: 00000000 nop -80030720: afc20010 sw v0,16(s8) -80030724: 10000028 b 800307c8 -80030728: 00000000 nop - else if(prfont_flags & PRFONT_RIGHT) -8003072c: 3c028007 lui v0,0x8007 -80030730: 8c421cdc lw v0,7388(v0) -80030734: 00000000 nop -80030738: 30420004 andi v0,v0,0x4 -8003073c: 10400016 beqz v0,80030798 -80030740: 00000000 nop - r = GsPrintFont_Draw(x - (r * fw), y, prfont_scale_x, prfont_scale_y); -80030744: 8fc30010 lw v1,16(s8) -80030748: 8fc20014 lw v0,20(s8) -8003074c: 00000000 nop -80030750: 00620018 mult v1,v0 -80030754: 8fc20020 lw v0,32(s8) -80030758: 00001812 mflo v1 -8003075c: 00431823 subu v1,v0,v1 -80030760: 3c028007 lui v0,0x8007 -80030764: 8c441ce0 lw a0,7392(v0) -80030768: 3c028007 lui v0,0x8007 -8003076c: 8c421ce4 lw v0,7396(v0) -80030770: 00000000 nop -80030774: 00403821 move a3,v0 -80030778: 00803021 move a2,a0 -8003077c: 8fc50024 lw a1,36(s8) -80030780: 00602021 move a0,v1 -80030784: 0c00c03b jal 800300ec -80030788: 00000000 nop -8003078c: afc20010 sw v0,16(s8) -80030790: 1000000d b 800307c8 -80030794: 00000000 nop - else - r = GsPrintFont_Draw(x, y, prfont_scale_x, prfont_scale_y); -80030798: 3c028007 lui v0,0x8007 -8003079c: 8c431ce0 lw v1,7392(v0) -800307a0: 3c028007 lui v0,0x8007 -800307a4: 8c421ce4 lw v0,7396(v0) -800307a8: 00000000 nop -800307ac: 00403821 move a3,v0 -800307b0: 00603021 move a2,v1 -800307b4: 8fc50024 lw a1,36(s8) -800307b8: 8fc40020 lw a0,32(s8) -800307bc: 0c00c03b jal 800300ec -800307c0: 00000000 nop -800307c4: afc20010 sw v0,16(s8) - - return r; -800307c8: 8fc20010 lw v0,16(s8) -} -800307cc: 03c0e821 move sp,s8 -800307d0: 8fbf001c lw ra,28(sp) -800307d4: 8fbe0018 lw s8,24(sp) -800307d8: 27bd0020 addiu sp,sp,32 -800307dc: 03e00008 jr ra -800307e0: 00000000 nop - -800307e4 : - -unsigned int GsPrintFont(int x, int y, const char *fmt, ...) -{ -800307e4: 27bdffe0 addiu sp,sp,-32 -800307e8: afbf001c sw ra,28(sp) -800307ec: afbe0018 sw s8,24(sp) -800307f0: 03a0f021 move s8,sp -800307f4: afc40020 sw a0,32(s8) -800307f8: afc50024 sw a1,36(s8) -800307fc: afc60028 sw a2,40(s8) -80030800: afc7002c sw a3,44(s8) - int r; - - va_list ap; - - va_start(ap, fmt); -80030804: 27c2002c addiu v0,s8,44 -80030808: afc20014 sw v0,20(s8) - - r = GsVPrintFont(x, y, fmt, ap); -8003080c: 8fc20014 lw v0,20(s8) -80030810: 00000000 nop -80030814: 00403821 move a3,v0 -80030818: 8fc60028 lw a2,40(s8) -8003081c: 8fc50024 lw a1,36(s8) -80030820: 8fc40020 lw a0,32(s8) -80030824: 0c00c17f jal 800305fc -80030828: 00000000 nop -8003082c: afc20010 sw v0,16(s8) - - va_end(ap); - - return r; -80030830: 8fc20010 lw v0,16(s8) -} -80030834: 03c0e821 move sp,s8 -80030838: 8fbf001c lw ra,28(sp) -8003083c: 8fbe0018 lw s8,24(sp) -80030840: 27bd0020 addiu sp,sp,32 -80030844: 03e00008 jr ra -80030848: 00000000 nop - -8003084c : - -void GsSetFont(int fb_x, int fb_y, int cx, int cy) -{ -8003084c: 27bdfff8 addiu sp,sp,-8 -80030850: afbe0004 sw s8,4(sp) -80030854: 03a0f021 move s8,sp -80030858: afc40008 sw a0,8(s8) -8003085c: afc5000c sw a1,12(s8) -80030860: afc60010 sw a2,16(s8) -80030864: afc70014 sw a3,20(s8) - if(fb_x != -1) -80030868: 8fc30008 lw v1,8(s8) -8003086c: 2402ffff li v0,-1 -80030870: 10620005 beq v1,v0,80030888 -80030874: 00000000 nop - fb_font_x = fb_x; -80030878: 3c028007 lui v0,0x8007 -8003087c: 8fc30008 lw v1,8(s8) -80030880: 00000000 nop -80030884: ac431d4c sw v1,7500(v0) - - if(fb_y != -1) -80030888: 8fc3000c lw v1,12(s8) -8003088c: 2402ffff li v0,-1 -80030890: 10620005 beq v1,v0,800308a8 -80030894: 00000000 nop - fb_font_y = fb_y; -80030898: 3c028007 lui v0,0x8007 -8003089c: 8fc3000c lw v1,12(s8) -800308a0: 00000000 nop -800308a4: ac431d3c sw v1,7484(v0) - - if(fb_font_cx != -1) -800308a8: 3c028007 lui v0,0x8007 -800308ac: 8c431d54 lw v1,7508(v0) -800308b0: 2402ffff li v0,-1 -800308b4: 10620005 beq v1,v0,800308cc -800308b8: 00000000 nop - fb_font_cx = cx; -800308bc: 3c028007 lui v0,0x8007 -800308c0: 8fc30010 lw v1,16(s8) -800308c4: 00000000 nop -800308c8: ac431d54 sw v1,7508(v0) - - if(fb_font_cy != -1) -800308cc: 3c028007 lui v0,0x8007 -800308d0: 8c431d44 lw v1,7492(v0) -800308d4: 2402ffff li v0,-1 -800308d8: 10620005 beq v1,v0,800308f0 -800308dc: 00000000 nop - fb_font_cy = cy; -800308e0: 3c028007 lui v0,0x8007 -800308e4: 8fc30014 lw v1,20(s8) -800308e8: 00000000 nop -800308ec: ac431d44 sw v1,7492(v0) -} -800308f0: 00000000 nop -800308f4: 03c0e821 move sp,s8 -800308f8: 8fbe0004 lw s8,4(sp) -800308fc: 27bd0008 addiu sp,sp,8 -80030900: 03e00008 jr ra -80030904: 00000000 nop - -80030908 : - -void GsSetFontAttrib(unsigned int flags) -{ -80030908: 27bdffe8 addiu sp,sp,-24 -8003090c: afbf0014 sw ra,20(sp) -80030910: afbe0010 sw s8,16(sp) -80030914: 03a0f021 move s8,sp -80030918: afc40018 sw a0,24(s8) - prfont_flags = flags; -8003091c: 3c028007 lui v0,0x8007 -80030920: 8fc30018 lw v1,24(s8) -80030924: 00000000 nop -80030928: ac431cdc sw v1,7388(v0) - - if(prfont_flags == 0) -8003092c: 3c028007 lui v0,0x8007 -80030930: 8c421cdc lw v0,7388(v0) -80030934: 00000000 nop -80030938: 14400010 bnez v0,8003097c -8003093c: 00000000 nop - { - PRFONT_SCALEX(0); -80030940: 00002021 move a0,zero -80030944: 0c00adbe jal 8002b6f8 -80030948: 00000000 nop - PRFONT_SCALEY(0); -8003094c: 00002021 move a0,zero -80030950: 0c00adcc jal 8002b730 -80030954: 00000000 nop - - PRFONT_RL(NORMAL_LUMINANCE); -80030958: 24040080 li a0,128 -8003095c: 0c00adda jal 8002b768 -80030960: 00000000 nop - PRFONT_GL(NORMAL_LUMINANCE); -80030964: 24040080 li a0,128 -80030968: 0c00ade9 jal 8002b7a4 -8003096c: 00000000 nop - PRFONT_BL(NORMAL_LUMINANCE); -80030970: 24040080 li a0,128 -80030974: 0c00adf8 jal 8002b7e0 -80030978: 00000000 nop - } -} -8003097c: 00000000 nop -80030980: 03c0e821 move sp,s8 -80030984: 8fbf0014 lw ra,20(sp) -80030988: 8fbe0010 lw s8,16(sp) -8003098c: 27bd0018 addiu sp,sp,24 -80030990: 03e00008 jr ra -80030994: 00000000 nop - -80030998 : - -static double gs_internal_cos(int a) -{ -80030998: 27bdfff0 addiu sp,sp,-16 -8003099c: afbe000c sw s8,12(sp) -800309a0: 03a0f021 move s8,sp -800309a4: afc40010 sw a0,16(s8) - int a_a = (a>>12)-(((a>>12)/360)*360); -800309a8: 8fc40010 lw a0,16(s8) -800309ac: 00000000 nop -800309b0: 00042b03 sra a1,a0,0xc -800309b4: 24040168 li a0,360 -800309b8: 14800002 bnez a0,800309c4 -800309bc: 00a4001a div zero,a1,a0 -800309c0: 0007000d break 0x7 -800309c4: 00002010 mfhi a0 -800309c8: afc40000 sw a0,0(s8) - - if(a_a>=0 && a_a<=90) -800309cc: 8fc40000 lw a0,0(s8) -800309d0: 00000000 nop -800309d4: 04800010 bltz a0,80030a18 -800309d8: 00000000 nop -800309dc: 8fc40000 lw a0,0(s8) -800309e0: 00000000 nop -800309e4: 2884005b slti a0,a0,91 -800309e8: 1080000b beqz a0,80030a18 -800309ec: 00000000 nop - return gs_rot_cos_tbl[a_a]; -800309f0: 3c028004 lui v0,0x8004 -800309f4: 8fc30000 lw v1,0(s8) -800309f8: 00000000 nop -800309fc: 000318c0 sll v1,v1,0x3 -80030a00: 2442fa70 addiu v0,v0,-1424 -80030a04: 00621021 addu v0,v1,v0 -80030a08: 8c430004 lw v1,4(v0) -80030a0c: 8c420000 lw v0,0(v0) -80030a10: 1000004c b 80030b44 -80030a14: 00000000 nop - else if(a_a>90 && a_a<=180) -80030a18: 8fc40000 lw a0,0(s8) -80030a1c: 00000000 nop -80030a20: 2884005b slti a0,a0,91 -80030a24: 14800016 bnez a0,80030a80 -80030a28: 00000000 nop -80030a2c: 8fc40000 lw a0,0(s8) -80030a30: 00000000 nop -80030a34: 288400b5 slti a0,a0,181 -80030a38: 10800011 beqz a0,80030a80 -80030a3c: 00000000 nop - return -gs_rot_cos_tbl[180 - a_a]; -80030a40: 240500b4 li a1,180 -80030a44: 8fc40000 lw a0,0(s8) -80030a48: 00000000 nop -80030a4c: 00a42823 subu a1,a1,a0 -80030a50: 3c048004 lui a0,0x8004 -80030a54: 000528c0 sll a1,a1,0x3 -80030a58: 2484fa70 addiu a0,a0,-1424 -80030a5c: 00a42021 addu a0,a1,a0 -80030a60: 8c850004 lw a1,4(a0) -80030a64: 8c840000 lw a0,0(a0) -80030a68: 00000000 nop -80030a6c: 00801021 move v0,a0 -80030a70: 3c068000 lui a2,0x8000 -80030a74: 00a61826 xor v1,a1,a2 -80030a78: 10000032 b 80030b44 -80030a7c: 00000000 nop - else if(a_a>180 && a_a<=270) -80030a80: 8fc40000 lw a0,0(s8) -80030a84: 00000000 nop -80030a88: 288400b5 slti a0,a0,181 -80030a8c: 14800015 bnez a0,80030ae4 -80030a90: 00000000 nop -80030a94: 8fc40000 lw a0,0(s8) -80030a98: 00000000 nop -80030a9c: 2884010f slti a0,a0,271 -80030aa0: 10800010 beqz a0,80030ae4 -80030aa4: 00000000 nop - return -gs_rot_cos_tbl[a_a - 180]; -80030aa8: 8fc40000 lw a0,0(s8) -80030aac: 00000000 nop -80030ab0: 2485ff4c addiu a1,a0,-180 -80030ab4: 3c048004 lui a0,0x8004 -80030ab8: 000528c0 sll a1,a1,0x3 -80030abc: 2484fa70 addiu a0,a0,-1424 -80030ac0: 00a42021 addu a0,a1,a0 -80030ac4: 8c850004 lw a1,4(a0) -80030ac8: 8c840000 lw a0,0(a0) -80030acc: 00000000 nop -80030ad0: 00801021 move v0,a0 -80030ad4: 3c068000 lui a2,0x8000 -80030ad8: 00a61826 xor v1,a1,a2 -80030adc: 10000019 b 80030b44 -80030ae0: 00000000 nop - else if(a_a>270 && a_a<=359) -80030ae4: 8fc20000 lw v0,0(s8) -80030ae8: 00000000 nop -80030aec: 2842010f slti v0,v0,271 -80030af0: 14400012 bnez v0,80030b3c -80030af4: 00000000 nop -80030af8: 8fc20000 lw v0,0(s8) -80030afc: 00000000 nop -80030b00: 28420168 slti v0,v0,360 -80030b04: 1040000d beqz v0,80030b3c -80030b08: 00000000 nop - return gs_rot_cos_tbl[360 - a_a]; -80030b0c: 24030168 li v1,360 -80030b10: 8fc20000 lw v0,0(s8) -80030b14: 00000000 nop -80030b18: 00621823 subu v1,v1,v0 -80030b1c: 3c028004 lui v0,0x8004 -80030b20: 000318c0 sll v1,v1,0x3 -80030b24: 2442fa70 addiu v0,v0,-1424 -80030b28: 00621021 addu v0,v1,v0 -80030b2c: 8c430004 lw v1,4(v0) -80030b30: 8c420000 lw v0,0(v0) -80030b34: 10000003 b 80030b44 -80030b38: 00000000 nop - - return 0; -80030b3c: 00001021 move v0,zero -80030b40: 00001821 move v1,zero -} -80030b44: 03c0e821 move sp,s8 -80030b48: 8fbe000c lw s8,12(sp) -80030b4c: 27bd0010 addiu sp,sp,16 -80030b50: 03e00008 jr ra -80030b54: 00000000 nop - -80030b58 : - -static double gs_internal_sin(int a) -{ -80030b58: 27bdfff0 addiu sp,sp,-16 -80030b5c: afbe000c sw s8,12(sp) -80030b60: 03a0f021 move s8,sp -80030b64: afc40010 sw a0,16(s8) - int a_a = (a>>12)-(((a>>12)/360)*360); -80030b68: 8fc40010 lw a0,16(s8) -80030b6c: 00000000 nop -80030b70: 00042b03 sra a1,a0,0xc -80030b74: 24040168 li a0,360 -80030b78: 14800002 bnez a0,80030b84 -80030b7c: 00a4001a div zero,a1,a0 -80030b80: 0007000d break 0x7 -80030b84: 00002010 mfhi a0 -80030b88: afc40000 sw a0,0(s8) - - if(a_a>=0 && a_a<=90) -80030b8c: 8fc40000 lw a0,0(s8) -80030b90: 00000000 nop -80030b94: 04800012 bltz a0,80030be0 -80030b98: 00000000 nop -80030b9c: 8fc40000 lw a0,0(s8) -80030ba0: 00000000 nop -80030ba4: 2884005b slti a0,a0,91 -80030ba8: 1080000d beqz a0,80030be0 -80030bac: 00000000 nop - return gs_rot_cos_tbl[90-a_a]; -80030bb0: 2403005a li v1,90 -80030bb4: 8fc20000 lw v0,0(s8) -80030bb8: 00000000 nop -80030bbc: 00621823 subu v1,v1,v0 -80030bc0: 3c028004 lui v0,0x8004 -80030bc4: 000318c0 sll v1,v1,0x3 -80030bc8: 2442fa70 addiu v0,v0,-1424 -80030bcc: 00621021 addu v0,v1,v0 -80030bd0: 8c430004 lw v1,4(v0) -80030bd4: 8c420000 lw v0,0(v0) -80030bd8: 1000004b b 80030d08 -80030bdc: 00000000 nop - else if(a_a>90 && a_a<=180) -80030be0: 8fc40000 lw a0,0(s8) -80030be4: 00000000 nop -80030be8: 2884005b slti a0,a0,91 -80030bec: 14800011 bnez a0,80030c34 -80030bf0: 00000000 nop -80030bf4: 8fc40000 lw a0,0(s8) -80030bf8: 00000000 nop -80030bfc: 288400b5 slti a0,a0,181 -80030c00: 1080000c beqz a0,80030c34 -80030c04: 00000000 nop - return gs_rot_cos_tbl[a_a-90]; -80030c08: 8fc20000 lw v0,0(s8) -80030c0c: 00000000 nop -80030c10: 2443ffa6 addiu v1,v0,-90 -80030c14: 3c028004 lui v0,0x8004 -80030c18: 000318c0 sll v1,v1,0x3 -80030c1c: 2442fa70 addiu v0,v0,-1424 -80030c20: 00621021 addu v0,v1,v0 -80030c24: 8c430004 lw v1,4(v0) -80030c28: 8c420000 lw v0,0(v0) -80030c2c: 10000036 b 80030d08 -80030c30: 00000000 nop - else if(a_a>180 && a_a<=270) -80030c34: 8fc40000 lw a0,0(s8) -80030c38: 00000000 nop -80030c3c: 288400b5 slti a0,a0,181 -80030c40: 14800016 bnez a0,80030c9c -80030c44: 00000000 nop -80030c48: 8fc40000 lw a0,0(s8) -80030c4c: 00000000 nop -80030c50: 2884010f slti a0,a0,271 -80030c54: 10800011 beqz a0,80030c9c -80030c58: 00000000 nop - return -gs_rot_cos_tbl[270-a_a]; -80030c5c: 2405010e li a1,270 -80030c60: 8fc40000 lw a0,0(s8) -80030c64: 00000000 nop -80030c68: 00a42823 subu a1,a1,a0 -80030c6c: 3c048004 lui a0,0x8004 -80030c70: 000528c0 sll a1,a1,0x3 -80030c74: 2484fa70 addiu a0,a0,-1424 -80030c78: 00a42021 addu a0,a1,a0 -80030c7c: 8c850004 lw a1,4(a0) -80030c80: 8c840000 lw a0,0(a0) -80030c84: 00000000 nop -80030c88: 00801021 move v0,a0 -80030c8c: 3c068000 lui a2,0x8000 -80030c90: 00a61826 xor v1,a1,a2 -80030c94: 1000001c b 80030d08 -80030c98: 00000000 nop - else if(a_a>270 && a_a<=359) -80030c9c: 8fc40000 lw a0,0(s8) -80030ca0: 00000000 nop -80030ca4: 2884010f slti a0,a0,271 -80030ca8: 14800015 bnez a0,80030d00 -80030cac: 00000000 nop -80030cb0: 8fc40000 lw a0,0(s8) -80030cb4: 00000000 nop -80030cb8: 28840168 slti a0,a0,360 -80030cbc: 10800010 beqz a0,80030d00 -80030cc0: 00000000 nop - return -gs_rot_cos_tbl[a_a-270]; -80030cc4: 8fc40000 lw a0,0(s8) -80030cc8: 00000000 nop -80030ccc: 2485fef2 addiu a1,a0,-270 -80030cd0: 3c048004 lui a0,0x8004 -80030cd4: 000528c0 sll a1,a1,0x3 -80030cd8: 2484fa70 addiu a0,a0,-1424 -80030cdc: 00a42021 addu a0,a1,a0 -80030ce0: 8c850004 lw a1,4(a0) -80030ce4: 8c840000 lw a0,0(a0) -80030ce8: 00000000 nop -80030cec: 00801021 move v0,a0 -80030cf0: 3c068000 lui a2,0x8000 -80030cf4: 00a61826 xor v1,a1,a2 -80030cf8: 10000003 b 80030d08 -80030cfc: 00000000 nop - - return 0; -80030d00: 00001021 move v0,zero -80030d04: 00001821 move v1,zero -} -80030d08: 03c0e821 move sp,s8 -80030d0c: 8fbe000c lw s8,12(sp) -80030d10: 27bd0010 addiu sp,sp,16 -80030d14: 03e00008 jr ra -80030d18: 00000000 nop - -80030d1c : - -static void gs_internal_vector_rotate(int x_a, int y_a, int z_a, double *v, double *n) -{ -80030d1c: 27bdff30 addiu sp,sp,-208 -80030d20: afbf00cc sw ra,204(sp) -80030d24: afbe00c8 sw s8,200(sp) -80030d28: afb700c4 sw s7,196(sp) -80030d2c: afb600c0 sw s6,192(sp) -80030d30: afb500bc sw s5,188(sp) -80030d34: afb400b8 sw s4,184(sp) -80030d38: afb300b4 sw s3,180(sp) -80030d3c: afb200b0 sw s2,176(sp) -80030d40: afb100ac sw s1,172(sp) -80030d44: afb000a8 sw s0,168(sp) -80030d48: 03a0f021 move s8,sp -80030d4c: afc400d0 sw a0,208(s8) -80030d50: afc500d4 sw a1,212(s8) -80030d54: afc600d8 sw a2,216(s8) -80030d58: afc700dc sw a3,220(s8) - double axis_m[3][3]; - double b[3]; - double k[3], s[3]; - int x; - - k[0] = gs_internal_cos(x_a); -80030d5c: 8fc400d0 lw a0,208(s8) -80030d60: 0c00c266 jal 80030998 -80030d64: 00000000 nop -80030d68: afc20078 sw v0,120(s8) -80030d6c: afc3007c sw v1,124(s8) - k[1] = gs_internal_cos(y_a); -80030d70: 8fc400d4 lw a0,212(s8) -80030d74: 0c00c266 jal 80030998 -80030d78: 00000000 nop -80030d7c: afc20080 sw v0,128(s8) -80030d80: afc30084 sw v1,132(s8) - k[2] = gs_internal_cos(z_a); -80030d84: 8fc400d8 lw a0,216(s8) -80030d88: 0c00c266 jal 80030998 -80030d8c: 00000000 nop -80030d90: afc20088 sw v0,136(s8) -80030d94: afc3008c sw v1,140(s8) - - s[0] = gs_internal_sin(x_a); -80030d98: 8fc400d0 lw a0,208(s8) -80030d9c: 0c00c2d6 jal 80030b58 -80030da0: 00000000 nop -80030da4: afc20090 sw v0,144(s8) -80030da8: afc30094 sw v1,148(s8) - s[1] = gs_internal_sin(y_a); -80030dac: 8fc400d4 lw a0,212(s8) -80030db0: 0c00c2d6 jal 80030b58 -80030db4: 00000000 nop -80030db8: afc20098 sw v0,152(s8) -80030dbc: afc3009c sw v1,156(s8) - s[2] = gs_internal_sin(z_a); -80030dc0: 8fc400d8 lw a0,216(s8) -80030dc4: 0c00c2d6 jal 80030b58 -80030dc8: 00000000 nop -80030dcc: afc200a0 sw v0,160(s8) -80030dd0: afc300a4 sw v1,164(s8) - - axis_m[0][0] = k[1] * k[2]; -80030dd4: 8fc20080 lw v0,128(s8) -80030dd8: 8fc30084 lw v1,132(s8) -80030ddc: 8fc40088 lw a0,136(s8) -80030de0: 8fc5008c lw a1,140(s8) -80030de4: 00803021 move a2,a0 -80030de8: 00a03821 move a3,a1 -80030dec: 00402021 move a0,v0 -80030df0: 00602821 move a1,v1 -80030df4: 0c00f853 jal 8003e14c <__muldf3> -80030df8: 00000000 nop -80030dfc: afc20018 sw v0,24(s8) -80030e00: afc3001c sw v1,28(s8) - axis_m[0][1] = (k[0] * s[2]) + (s[0]*s[1]*k[2]); -80030e04: 8fc20078 lw v0,120(s8) -80030e08: 8fc3007c lw v1,124(s8) -80030e0c: 8fc400a0 lw a0,160(s8) -80030e10: 8fc500a4 lw a1,164(s8) -80030e14: 00803021 move a2,a0 -80030e18: 00a03821 move a3,a1 -80030e1c: 00402021 move a0,v0 -80030e20: 00602821 move a1,v1 -80030e24: 0c00f853 jal 8003e14c <__muldf3> -80030e28: 00000000 nop -80030e2c: 0040b021 move s6,v0 -80030e30: 0060b821 move s7,v1 -80030e34: 8fc20090 lw v0,144(s8) -80030e38: 8fc30094 lw v1,148(s8) -80030e3c: 8fc40098 lw a0,152(s8) -80030e40: 8fc5009c lw a1,156(s8) -80030e44: 00803021 move a2,a0 -80030e48: 00a03821 move a3,a1 -80030e4c: 00402021 move a0,v0 -80030e50: 00602821 move a1,v1 -80030e54: 0c00f853 jal 8003e14c <__muldf3> -80030e58: 00000000 nop -80030e5c: 00402021 move a0,v0 -80030e60: 00602821 move a1,v1 -80030e64: 8fc20088 lw v0,136(s8) -80030e68: 8fc3008c lw v1,140(s8) -80030e6c: 00403021 move a2,v0 -80030e70: 00603821 move a3,v1 -80030e74: 0c00f853 jal 8003e14c <__muldf3> -80030e78: 00000000 nop -80030e7c: 00403021 move a2,v0 -80030e80: 00603821 move a3,v1 -80030e84: 02c02021 move a0,s6 -80030e88: 02e02821 move a1,s7 -80030e8c: 0c00f3d7 jal 8003cf5c <__adddf3> -80030e90: 00000000 nop -80030e94: afc20020 sw v0,32(s8) -80030e98: afc30024 sw v1,36(s8) - axis_m[0][2] = (s[0]*s[2]) - (k[0]*s[1]*k[2]); -80030e9c: 8fc20090 lw v0,144(s8) -80030ea0: 8fc30094 lw v1,148(s8) -80030ea4: 8fc400a0 lw a0,160(s8) -80030ea8: 8fc500a4 lw a1,164(s8) -80030eac: 00803021 move a2,a0 -80030eb0: 00a03821 move a3,a1 -80030eb4: 00402021 move a0,v0 -80030eb8: 00602821 move a1,v1 -80030ebc: 0c00f853 jal 8003e14c <__muldf3> -80030ec0: 00000000 nop -80030ec4: 0040b021 move s6,v0 -80030ec8: 0060b821 move s7,v1 -80030ecc: 8fc20078 lw v0,120(s8) -80030ed0: 8fc3007c lw v1,124(s8) -80030ed4: 8fc40098 lw a0,152(s8) -80030ed8: 8fc5009c lw a1,156(s8) -80030edc: 00803021 move a2,a0 -80030ee0: 00a03821 move a3,a1 -80030ee4: 00402021 move a0,v0 -80030ee8: 00602821 move a1,v1 -80030eec: 0c00f853 jal 8003e14c <__muldf3> -80030ef0: 00000000 nop -80030ef4: 00402021 move a0,v0 -80030ef8: 00602821 move a1,v1 -80030efc: 8fc20088 lw v0,136(s8) -80030f00: 8fc3008c lw v1,140(s8) -80030f04: 00403021 move a2,v0 -80030f08: 00603821 move a3,v1 -80030f0c: 0c00f853 jal 8003e14c <__muldf3> -80030f10: 00000000 nop -80030f14: 00403021 move a2,v0 -80030f18: 00603821 move a3,v1 -80030f1c: 02c02021 move a0,s6 -80030f20: 02e02821 move a1,s7 -80030f24: 0c00f9d7 jal 8003e75c <__subdf3> -80030f28: 00000000 nop -80030f2c: afc20028 sw v0,40(s8) -80030f30: afc3002c sw v1,44(s8) - axis_m[1][0] = -(k[1] * s[2]); -80030f34: 8fc20080 lw v0,128(s8) -80030f38: 8fc30084 lw v1,132(s8) -80030f3c: 8fc400a0 lw a0,160(s8) -80030f40: 8fc500a4 lw a1,164(s8) -80030f44: 00803021 move a2,a0 -80030f48: 00a03821 move a3,a1 -80030f4c: 00402021 move a0,v0 -80030f50: 00602821 move a1,v1 -80030f54: 0c00f853 jal 8003e14c <__muldf3> -80030f58: 00000000 nop -80030f5c: 0040a021 move s4,v0 -80030f60: 3c048000 lui a0,0x8000 -80030f64: 0064a826 xor s5,v1,a0 -80030f68: afd40030 sw s4,48(s8) -80030f6c: afd50034 sw s5,52(s8) - axis_m[1][1] = (k[0]*k[2]) - (s[0]*s[1]*s[2]); -80030f70: 8fc20078 lw v0,120(s8) -80030f74: 8fc3007c lw v1,124(s8) -80030f78: 8fc40088 lw a0,136(s8) -80030f7c: 8fc5008c lw a1,140(s8) -80030f80: 00803021 move a2,a0 -80030f84: 00a03821 move a3,a1 -80030f88: 00402021 move a0,v0 -80030f8c: 00602821 move a1,v1 -80030f90: 0c00f853 jal 8003e14c <__muldf3> -80030f94: 00000000 nop -80030f98: 0040a021 move s4,v0 -80030f9c: 0060a821 move s5,v1 -80030fa0: 8fc20090 lw v0,144(s8) -80030fa4: 8fc30094 lw v1,148(s8) -80030fa8: 8fc40098 lw a0,152(s8) -80030fac: 8fc5009c lw a1,156(s8) -80030fb0: 00803021 move a2,a0 -80030fb4: 00a03821 move a3,a1 -80030fb8: 00402021 move a0,v0 -80030fbc: 00602821 move a1,v1 -80030fc0: 0c00f853 jal 8003e14c <__muldf3> -80030fc4: 00000000 nop -80030fc8: 00402021 move a0,v0 -80030fcc: 00602821 move a1,v1 -80030fd0: 8fc200a0 lw v0,160(s8) -80030fd4: 8fc300a4 lw v1,164(s8) -80030fd8: 00403021 move a2,v0 -80030fdc: 00603821 move a3,v1 -80030fe0: 0c00f853 jal 8003e14c <__muldf3> -80030fe4: 00000000 nop -80030fe8: 00403021 move a2,v0 -80030fec: 00603821 move a3,v1 -80030ff0: 02802021 move a0,s4 -80030ff4: 02a02821 move a1,s5 -80030ff8: 0c00f9d7 jal 8003e75c <__subdf3> -80030ffc: 00000000 nop -80031000: afc20038 sw v0,56(s8) -80031004: afc3003c sw v1,60(s8) - axis_m[1][2] = (s[0]*k[2]) + (k[0]*s[1]*s[2]); -80031008: 8fc20090 lw v0,144(s8) -8003100c: 8fc30094 lw v1,148(s8) -80031010: 8fc40088 lw a0,136(s8) -80031014: 8fc5008c lw a1,140(s8) -80031018: 00803021 move a2,a0 -8003101c: 00a03821 move a3,a1 -80031020: 00402021 move a0,v0 -80031024: 00602821 move a1,v1 -80031028: 0c00f853 jal 8003e14c <__muldf3> -8003102c: 00000000 nop -80031030: 0040a021 move s4,v0 -80031034: 0060a821 move s5,v1 -80031038: 8fc20078 lw v0,120(s8) -8003103c: 8fc3007c lw v1,124(s8) -80031040: 8fc40098 lw a0,152(s8) -80031044: 8fc5009c lw a1,156(s8) -80031048: 00803021 move a2,a0 -8003104c: 00a03821 move a3,a1 -80031050: 00402021 move a0,v0 -80031054: 00602821 move a1,v1 -80031058: 0c00f853 jal 8003e14c <__muldf3> -8003105c: 00000000 nop -80031060: 00402021 move a0,v0 -80031064: 00602821 move a1,v1 -80031068: 8fc200a0 lw v0,160(s8) -8003106c: 8fc300a4 lw v1,164(s8) -80031070: 00403021 move a2,v0 -80031074: 00603821 move a3,v1 -80031078: 0c00f853 jal 8003e14c <__muldf3> -8003107c: 00000000 nop -80031080: 00403021 move a2,v0 -80031084: 00603821 move a3,v1 -80031088: 02802021 move a0,s4 -8003108c: 02a02821 move a1,s5 -80031090: 0c00f3d7 jal 8003cf5c <__adddf3> -80031094: 00000000 nop -80031098: afc20040 sw v0,64(s8) -8003109c: afc30044 sw v1,68(s8) - axis_m[2][0] = s[1]; -800310a0: 8fc20098 lw v0,152(s8) -800310a4: 8fc3009c lw v1,156(s8) -800310a8: afc20048 sw v0,72(s8) -800310ac: afc3004c sw v1,76(s8) - axis_m[2][1] = -(s[0]*k[1]); -800310b0: 8fc20090 lw v0,144(s8) -800310b4: 8fc30094 lw v1,148(s8) -800310b8: 8fc40080 lw a0,128(s8) -800310bc: 8fc50084 lw a1,132(s8) -800310c0: 00803021 move a2,a0 -800310c4: 00a03821 move a3,a1 -800310c8: 00402021 move a0,v0 -800310cc: 00602821 move a1,v1 -800310d0: 0c00f853 jal 8003e14c <__muldf3> -800310d4: 00000000 nop -800310d8: 00409021 move s2,v0 -800310dc: 3c048000 lui a0,0x8000 -800310e0: 00649826 xor s3,v1,a0 -800310e4: afd20050 sw s2,80(s8) -800310e8: afd30054 sw s3,84(s8) - axis_m[2][2] = k[0]*k[1]; -800310ec: 8fc20078 lw v0,120(s8) -800310f0: 8fc3007c lw v1,124(s8) -800310f4: 8fc40080 lw a0,128(s8) -800310f8: 8fc50084 lw a1,132(s8) -800310fc: 00803021 move a2,a0 -80031100: 00a03821 move a3,a1 -80031104: 00402021 move a0,v0 -80031108: 00602821 move a1,v1 -8003110c: 0c00f853 jal 8003e14c <__muldf3> -80031110: 00000000 nop -80031114: afc20058 sw v0,88(s8) -80031118: afc3005c sw v1,92(s8) - - for(x=0;x<3;x++) -8003111c: afc00010 sw zero,16(s8) -80031120: 1000005c b 80031294 -80031124: 00000000 nop - b[x] = (axis_m[x][0] * v[0]) + (axis_m[x][1] * v[1]) + (axis_m[x][2] * v[2]); -80031128: 8fc20010 lw v0,16(s8) -8003112c: 00000000 nop -80031130: 000210c0 sll v0,v0,0x3 -80031134: 00021880 sll v1,v0,0x2 -80031138: 00621023 subu v0,v1,v0 -8003113c: 27c30010 addiu v1,s8,16 -80031140: 00621021 addu v0,v1,v0 -80031144: 8c43000c lw v1,12(v0) -80031148: 8c420008 lw v0,8(v0) -8003114c: 8fc400dc lw a0,220(s8) -80031150: 00000000 nop -80031154: 8c850004 lw a1,4(a0) -80031158: 8c840000 lw a0,0(a0) -8003115c: 00000000 nop -80031160: 00803021 move a2,a0 -80031164: 00a03821 move a3,a1 -80031168: 00402021 move a0,v0 -8003116c: 00602821 move a1,v1 -80031170: 0c00f853 jal 8003e14c <__muldf3> -80031174: 00000000 nop -80031178: 00409021 move s2,v0 -8003117c: 00609821 move s3,v1 -80031180: 8fc20010 lw v0,16(s8) -80031184: 00000000 nop -80031188: 000210c0 sll v0,v0,0x3 -8003118c: 00021880 sll v1,v0,0x2 -80031190: 00621023 subu v0,v1,v0 -80031194: 27c30010 addiu v1,s8,16 -80031198: 00621021 addu v0,v1,v0 -8003119c: 8c430014 lw v1,20(v0) -800311a0: 8c420010 lw v0,16(v0) -800311a4: 8fc400dc lw a0,220(s8) -800311a8: 00000000 nop -800311ac: 24840008 addiu a0,a0,8 -800311b0: 8c850004 lw a1,4(a0) -800311b4: 8c840000 lw a0,0(a0) -800311b8: 00000000 nop -800311bc: 00803021 move a2,a0 -800311c0: 00a03821 move a3,a1 -800311c4: 00402021 move a0,v0 -800311c8: 00602821 move a1,v1 -800311cc: 0c00f853 jal 8003e14c <__muldf3> -800311d0: 00000000 nop -800311d4: 00403021 move a2,v0 -800311d8: 00603821 move a3,v1 -800311dc: 02402021 move a0,s2 -800311e0: 02602821 move a1,s3 -800311e4: 0c00f3d7 jal 8003cf5c <__adddf3> -800311e8: 00000000 nop -800311ec: 00409021 move s2,v0 -800311f0: 00609821 move s3,v1 -800311f4: 8fc20010 lw v0,16(s8) -800311f8: 00000000 nop -800311fc: 000210c0 sll v0,v0,0x3 -80031200: 00021880 sll v1,v0,0x2 -80031204: 00621023 subu v0,v1,v0 -80031208: 27c30010 addiu v1,s8,16 -8003120c: 00621021 addu v0,v1,v0 -80031210: 8c43001c lw v1,28(v0) -80031214: 8c420018 lw v0,24(v0) -80031218: 8fc400dc lw a0,220(s8) -8003121c: 00000000 nop -80031220: 24840010 addiu a0,a0,16 -80031224: 8c850004 lw a1,4(a0) -80031228: 8c840000 lw a0,0(a0) -8003122c: 00000000 nop -80031230: 00803021 move a2,a0 -80031234: 00a03821 move a3,a1 -80031238: 00402021 move a0,v0 -8003123c: 00602821 move a1,v1 -80031240: 0c00f853 jal 8003e14c <__muldf3> -80031244: 00000000 nop -80031248: 00403021 move a2,v0 -8003124c: 00603821 move a3,v1 -80031250: 02402021 move a0,s2 -80031254: 02602821 move a1,s3 -80031258: 0c00f3d7 jal 8003cf5c <__adddf3> -8003125c: 00000000 nop -80031260: 00402021 move a0,v0 -80031264: 00602821 move a1,v1 -80031268: 8fc20010 lw v0,16(s8) -8003126c: 00000000 nop -80031270: 000210c0 sll v0,v0,0x3 -80031274: 27c30010 addiu v1,s8,16 -80031278: 00621021 addu v0,v1,v0 -8003127c: ac440050 sw a0,80(v0) -80031280: ac450054 sw a1,84(v0) - axis_m[1][2] = (s[0]*k[2]) + (k[0]*s[1]*s[2]); - axis_m[2][0] = s[1]; - axis_m[2][1] = -(s[0]*k[1]); - axis_m[2][2] = k[0]*k[1]; - - for(x=0;x<3;x++) -80031284: 8fc20010 lw v0,16(s8) -80031288: 00000000 nop -8003128c: 24420001 addiu v0,v0,1 -80031290: afc20010 sw v0,16(s8) -80031294: 8fc20010 lw v0,16(s8) -80031298: 00000000 nop -8003129c: 28420003 slti v0,v0,3 -800312a0: 1440ffa1 bnez v0,80031128 -800312a4: 00000000 nop - b[x] = (axis_m[x][0] * v[0]) + (axis_m[x][1] * v[1]) + (axis_m[x][2] * v[2]); - - b[1]=-b[1]; -800312a8: 8fc20068 lw v0,104(s8) -800312ac: 8fc3006c lw v1,108(s8) -800312b0: 00408021 move s0,v0 -800312b4: 3c048000 lui a0,0x8000 -800312b8: 00648826 xor s1,v1,a0 -800312bc: afd00068 sw s0,104(s8) -800312c0: afd1006c sw s1,108(s8) - - for(x=0;x<3;x++) -800312c4: afc00010 sw zero,16(s8) -800312c8: 10000015 b 80031320 -800312cc: 00000000 nop - n[x]=b[x]; -800312d0: 8fc20010 lw v0,16(s8) -800312d4: 00000000 nop -800312d8: 000210c0 sll v0,v0,0x3 -800312dc: 8fc300e0 lw v1,224(s8) -800312e0: 00000000 nop -800312e4: 00622021 addu a0,v1,v0 -800312e8: 8fc20010 lw v0,16(s8) -800312ec: 00000000 nop -800312f0: 000210c0 sll v0,v0,0x3 -800312f4: 27c30010 addiu v1,s8,16 -800312f8: 00621021 addu v0,v1,v0 -800312fc: 8c430054 lw v1,84(v0) -80031300: 8c420050 lw v0,80(v0) -80031304: 00000000 nop -80031308: ac820000 sw v0,0(a0) -8003130c: ac830004 sw v1,4(a0) - for(x=0;x<3;x++) - b[x] = (axis_m[x][0] * v[0]) + (axis_m[x][1] * v[1]) + (axis_m[x][2] * v[2]); - - b[1]=-b[1]; - - for(x=0;x<3;x++) -80031310: 8fc20010 lw v0,16(s8) -80031314: 00000000 nop -80031318: 24420001 addiu v0,v0,1 -8003131c: afc20010 sw v0,16(s8) -80031320: 8fc20010 lw v0,16(s8) -80031324: 00000000 nop -80031328: 28420003 slti v0,v0,3 -8003132c: 1440ffe8 bnez v0,800312d0 -80031330: 00000000 nop - n[x]=b[x]; -} -80031334: 00000000 nop -80031338: 03c0e821 move sp,s8 -8003133c: 8fbf00cc lw ra,204(sp) -80031340: 8fbe00c8 lw s8,200(sp) -80031344: 8fb700c4 lw s7,196(sp) -80031348: 8fb600c0 lw s6,192(sp) -8003134c: 8fb500bc lw s5,188(sp) -80031350: 8fb400b8 lw s4,184(sp) -80031354: 8fb300b4 lw s3,180(sp) -80031358: 8fb200b0 lw s2,176(sp) -8003135c: 8fb100ac lw s1,172(sp) -80031360: 8fb000a8 lw s0,168(sp) -80031364: 27bd00d0 addiu sp,sp,208 -80031368: 03e00008 jr ra -8003136c: 00000000 nop - -80031370 : - -int GsIsWorking() -{ -80031370: 27bdffe8 addiu sp,sp,-24 -80031374: afbf0014 sw ra,20(sp) -80031378: afbe0010 sw s8,16(sp) -8003137c: 03a0f021 move s8,sp - return GsIsDrawing(); -80031380: 0c00bf9f jal 8002fe7c -80031384: 00000000 nop -} -80031388: 03c0e821 move sp,s8 -8003138c: 8fbf0014 lw ra,20(sp) -80031390: 8fbe0010 lw s8,16(sp) -80031394: 27bd0018 addiu sp,sp,24 -80031398: 03e00008 jr ra -8003139c: 00000000 nop - -800313a0 : - -void GsSortCls(int r, int g, int b) -{ -800313a0: 27bdffd8 addiu sp,sp,-40 -800313a4: afbf0024 sw ra,36(sp) -800313a8: afbe0020 sw s8,32(sp) -800313ac: 03a0f021 move s8,sp -800313b0: afc40028 sw a0,40(s8) -800313b4: afc5002c sw a1,44(s8) -800313b8: afc60030 sw a2,48(s8) - GsRectangle rect; - - rect.r = r; -800313bc: 8fc20028 lw v0,40(s8) -800313c0: 00000000 nop -800313c4: 304200ff andi v0,v0,0xff -800313c8: a3c20018 sb v0,24(s8) - rect.g = g; -800313cc: 8fc2002c lw v0,44(s8) -800313d0: 00000000 nop -800313d4: 304200ff andi v0,v0,0xff -800313d8: a3c20019 sb v0,25(s8) - rect.b = b; -800313dc: 8fc20030 lw v0,48(s8) -800313e0: 00000000 nop -800313e4: 304200ff andi v0,v0,0xff -800313e8: a3c2001a sb v0,26(s8) - rect.x = 0; -800313ec: a7c00010 sh zero,16(s8) - rect.y = 0; -800313f0: a7c00012 sh zero,18(s8) - rect.attribute = 0; -800313f4: afc0001c sw zero,28(s8) - rect.w = GsCurDrawEnvW; -800313f8: 3c028007 lui v0,0x8007 -800313fc: 94421d40 lhu v0,7488(v0) -80031400: 00000000 nop -80031404: 00021400 sll v0,v0,0x10 -80031408: 00021403 sra v0,v0,0x10 -8003140c: a7c20014 sh v0,20(s8) - rect.h = GsCurDrawEnvH; -80031410: 3c028007 lui v0,0x8007 -80031414: 94421d58 lhu v0,7512(v0) -80031418: 00000000 nop -8003141c: 00021400 sll v0,v0,0x10 -80031420: 00021403 sra v0,v0,0x10 -80031424: a7c20016 sh v0,22(s8) - - GsSortRectangle(&rect); -80031428: 27c20010 addiu v0,s8,16 -8003142c: 00402021 move a0,v0 -80031430: 0c00b762 jal 8002dd88 -80031434: 00000000 nop -} -80031438: 00000000 nop -8003143c: 03c0e821 move sp,s8 -80031440: 8fbf0024 lw ra,36(sp) -80031444: 8fbe0020 lw s8,32(sp) -80031448: 27bd0028 addiu sp,sp,40 -8003144c: 03e00008 jr ra -80031450: 00000000 nop - -80031454 : - -void GsSetAutoWait() -{ -80031454: 27bdfff8 addiu sp,sp,-8 -80031458: afbe0004 sw s8,4(sp) -8003145c: 03a0f021 move s8,sp - __gs_autowait = 1; -80031460: 3c028007 lui v0,0x8007 -80031464: 24030001 li v1,1 -80031468: ac431ce8 sw v1,7400(v0) -} -8003146c: 00000000 nop -80031470: 03c0e821 move sp,s8 -80031474: 8fbe0004 lw s8,4(sp) -80031478: 27bd0008 addiu sp,sp,8 -8003147c: 03e00008 jr ra -80031480: 00000000 nop - -80031484 : - -void GsRotateVector(int x_a, int y_a, int z_a, double *v, double *n) -{ -80031484: 27bdffe0 addiu sp,sp,-32 -80031488: afbf001c sw ra,28(sp) -8003148c: afbe0018 sw s8,24(sp) -80031490: 03a0f021 move s8,sp -80031494: afc40020 sw a0,32(s8) -80031498: afc50024 sw a1,36(s8) -8003149c: afc60028 sw a2,40(s8) -800314a0: afc7002c sw a3,44(s8) - gs_internal_vector_rotate(x_a, y_a, z_a, v, n); -800314a4: 8fc20030 lw v0,48(s8) -800314a8: 00000000 nop -800314ac: afa20010 sw v0,16(sp) -800314b0: 8fc7002c lw a3,44(s8) -800314b4: 8fc60028 lw a2,40(s8) -800314b8: 8fc50024 lw a1,36(s8) -800314bc: 8fc40020 lw a0,32(s8) -800314c0: 0c00c347 jal 80030d1c -800314c4: 00000000 nop -} -800314c8: 00000000 nop -800314cc: 03c0e821 move sp,s8 -800314d0: 8fbf001c lw ra,28(sp) -800314d4: 8fbe0018 lw s8,24(sp) -800314d8: 27bd0020 addiu sp,sp,32 -800314dc: 03e00008 jr ra -800314e0: 00000000 nop - -800314e4 : - if(curCount > 0) - linked_list[orig_pos] = (curCount << 24) | (((unsigned int)&linked_list[linked_list_pos]) & 0xffffff); -}*/ - -void GsSetListEx(unsigned int *listptr, unsigned int listpos) -{ -800314e4: 27bdfff8 addiu sp,sp,-8 -800314e8: afbe0004 sw s8,4(sp) -800314ec: 03a0f021 move s8,sp -800314f0: afc40008 sw a0,8(s8) -800314f4: afc5000c sw a1,12(s8) - linked_list = listptr; -800314f8: 3c028007 lui v0,0x8007 -800314fc: 8fc30008 lw v1,8(s8) -80031500: 00000000 nop -80031504: ac431cd4 sw v1,7380(v0) - linked_list_pos = listpos; -80031508: 3c028007 lui v0,0x8007 -8003150c: 8fc3000c lw v1,12(s8) -80031510: 00000000 nop -80031514: ac431cd8 sw v1,7384(v0) -} -80031518: 00000000 nop -8003151c: 03c0e821 move sp,s8 -80031520: 8fbe0004 lw s8,4(sp) -80031524: 27bd0008 addiu sp,sp,8 -80031528: 03e00008 jr ra -8003152c: 00000000 nop - -80031530 : - -void GsSortPolyLine(GsPolyLine *line) -{ -80031530: 27bdffd8 addiu sp,sp,-40 -80031534: afbf0024 sw ra,36(sp) -80031538: afbe0020 sw s8,32(sp) -8003153c: 03a0f021 move s8,sp -80031540: afc40028 sw a0,40(s8) - // PKT 0x48 - - int orig_pos = linked_list_pos; -80031544: 3c028007 lui v0,0x8007 -80031548: 8c421cd8 lw v0,7384(v0) -8003154c: 00000000 nop -80031550: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x48; -80031554: 24020048 li v0,72 -80031558: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(0, line->attribute, &pkt); -8003155c: 8fc20028 lw v0,40(s8) -80031560: 00000000 nop -80031564: 8c420010 lw v0,16(v0) -80031568: 27c3001c addiu v1,s8,28 -8003156c: 00603021 move a2,v1 -80031570: 00402821 move a1,v0 -80031574: 00002021 move a0,zero -80031578: 0c00bbd0 jal 8002ef40 -8003157c: 00000000 nop -80031580: afc20018 sw v0,24(s8) - - linked_list_pos++; // skip this word, we will replace it later -80031584: 3c028007 lui v0,0x8007 -80031588: 8c421cd8 lw v0,7384(v0) -8003158c: 00000000 nop -80031590: 24430001 addiu v1,v0,1 -80031594: 3c028007 lui v0,0x8007 -80031598: ac431cd8 sw v1,7384(v0) - linked_list[linked_list_pos++] = md; -8003159c: 3c028007 lui v0,0x8007 -800315a0: 8c431cd4 lw v1,7380(v0) -800315a4: 3c028007 lui v0,0x8007 -800315a8: 8c421cd8 lw v0,7384(v0) -800315ac: 00000000 nop -800315b0: 24450001 addiu a1,v0,1 -800315b4: 3c048007 lui a0,0x8007 -800315b8: ac851cd8 sw a1,7384(a0) -800315bc: 00021080 sll v0,v0,0x2 -800315c0: 00621021 addu v0,v1,v0 -800315c4: 8fc30018 lw v1,24(s8) -800315c8: 00000000 nop -800315cc: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (pkt<<24)|(line->b<<16)|(line->g<<8)|(line->r); -800315d0: 3c028007 lui v0,0x8007 -800315d4: 8c431cd4 lw v1,7380(v0) -800315d8: 3c028007 lui v0,0x8007 -800315dc: 8c421cd8 lw v0,7384(v0) -800315e0: 00000000 nop -800315e4: 24450001 addiu a1,v0,1 -800315e8: 3c048007 lui a0,0x8007 -800315ec: ac851cd8 sw a1,7384(a0) -800315f0: 00021080 sll v0,v0,0x2 -800315f4: 00621021 addu v0,v1,v0 -800315f8: 93c3001c lbu v1,28(s8) -800315fc: 00000000 nop -80031600: 00032600 sll a0,v1,0x18 -80031604: 8fc30028 lw v1,40(s8) -80031608: 00000000 nop -8003160c: 90630006 lbu v1,6(v1) -80031610: 00000000 nop -80031614: 00031c00 sll v1,v1,0x10 -80031618: 00832025 or a0,a0,v1 -8003161c: 8fc30028 lw v1,40(s8) -80031620: 00000000 nop -80031624: 90630005 lbu v1,5(v1) -80031628: 00000000 nop -8003162c: 00031a00 sll v1,v1,0x8 -80031630: 00831825 or v1,a0,v1 -80031634: 8fc40028 lw a0,40(s8) -80031638: 00000000 nop -8003163c: 90840004 lbu a0,4(a0) -80031640: 00000000 nop -80031644: 00641825 or v1,v1,a0 -80031648: ac430000 sw v1,0(v0) - - for(x = 0; x < line->npoints; x++) -8003164c: afc00010 sw zero,16(s8) -80031650: 10000028 b 800316f4 -80031654: 00000000 nop - linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x]&0x7ff); -80031658: 3c028007 lui v0,0x8007 -8003165c: 8c431cd4 lw v1,7380(v0) -80031660: 3c028007 lui v0,0x8007 -80031664: 8c421cd8 lw v0,7384(v0) -80031668: 00000000 nop -8003166c: 24450001 addiu a1,v0,1 -80031670: 3c048007 lui a0,0x8007 -80031674: ac851cd8 sw a1,7384(a0) -80031678: 00021080 sll v0,v0,0x2 -8003167c: 00621021 addu v0,v1,v0 -80031680: 8fc30028 lw v1,40(s8) -80031684: 00000000 nop -80031688: 8c64000c lw a0,12(v1) -8003168c: 8fc30010 lw v1,16(s8) -80031690: 00000000 nop -80031694: 00031840 sll v1,v1,0x1 -80031698: 00831821 addu v1,a0,v1 -8003169c: 84630000 lh v1,0(v1) -800316a0: 00000000 nop -800316a4: 3063ffff andi v1,v1,0xffff -800316a8: 306307ff andi v1,v1,0x7ff -800316ac: 00032400 sll a0,v1,0x10 -800316b0: 8fc30028 lw v1,40(s8) -800316b4: 00000000 nop -800316b8: 8c650008 lw a1,8(v1) -800316bc: 8fc30010 lw v1,16(s8) -800316c0: 00000000 nop -800316c4: 00031840 sll v1,v1,0x1 -800316c8: 00a31821 addu v1,a1,v1 -800316cc: 84630000 lh v1,0(v1) -800316d0: 00000000 nop -800316d4: 3063ffff andi v1,v1,0xffff -800316d8: 306307ff andi v1,v1,0x7ff -800316dc: 00831825 or v1,a0,v1 -800316e0: ac430000 sw v1,0(v0) - - linked_list_pos++; // skip this word, we will replace it later - linked_list[linked_list_pos++] = md; - linked_list[linked_list_pos++] = (pkt<<24)|(line->b<<16)|(line->g<<8)|(line->r); - - for(x = 0; x < line->npoints; x++) -800316e4: 8fc20010 lw v0,16(s8) -800316e8: 00000000 nop -800316ec: 24420001 addiu v0,v0,1 -800316f0: afc20010 sw v0,16(s8) -800316f4: 8fc20028 lw v0,40(s8) -800316f8: 00000000 nop -800316fc: 8c430000 lw v1,0(v0) -80031700: 8fc20010 lw v0,16(s8) -80031704: 00000000 nop -80031708: 0043102b sltu v0,v0,v1 -8003170c: 1440ffd2 bnez v0,80031658 -80031710: 00000000 nop - linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x]&0x7ff); - - linked_list[linked_list_pos++] = 0x55555555; // termination code -80031714: 3c028007 lui v0,0x8007 -80031718: 8c431cd4 lw v1,7380(v0) -8003171c: 3c028007 lui v0,0x8007 -80031720: 8c421cd8 lw v0,7384(v0) -80031724: 00000000 nop -80031728: 24450001 addiu a1,v0,1 -8003172c: 3c048007 lui a0,0x8007 -80031730: ac851cd8 sw a1,7384(a0) -80031734: 00021080 sll v0,v0,0x2 -80031738: 00621021 addu v0,v1,v0 -8003173c: 3c035555 lui v1,0x5555 -80031740: 34635555 ori v1,v1,0x5555 -80031744: ac430000 sw v1,0(v0) - - linked_list[orig_pos] = ((line->npoints+3) << 24) | (((unsigned int)&linked_list[linked_list_pos]) & 0xffffff); -80031748: 3c028007 lui v0,0x8007 -8003174c: 8c431cd4 lw v1,7380(v0) -80031750: 8fc20014 lw v0,20(s8) -80031754: 00000000 nop -80031758: 00021080 sll v0,v0,0x2 -8003175c: 00621021 addu v0,v1,v0 -80031760: 8fc30028 lw v1,40(s8) -80031764: 00000000 nop -80031768: 8c630000 lw v1,0(v1) -8003176c: 00000000 nop -80031770: 24630003 addiu v1,v1,3 -80031774: 00032600 sll a0,v1,0x18 -80031778: 3c038007 lui v1,0x8007 -8003177c: 8c651cd4 lw a1,7380(v1) -80031780: 3c038007 lui v1,0x8007 -80031784: 8c631cd8 lw v1,7384(v1) -80031788: 00000000 nop -8003178c: 00031880 sll v1,v1,0x2 -80031790: 00a31821 addu v1,a1,v1 -80031794: 00602821 move a1,v1 -80031798: 3c0300ff lui v1,0xff -8003179c: 3463ffff ori v1,v1,0xffff -800317a0: 00a31824 and v1,a1,v1 -800317a4: 00831825 or v1,a0,v1 -800317a8: ac430000 sw v1,0(v0) -} -800317ac: 00000000 nop -800317b0: 03c0e821 move sp,s8 -800317b4: 8fbf0024 lw ra,36(sp) -800317b8: 8fbe0020 lw s8,32(sp) -800317bc: 27bd0028 addiu sp,sp,40 -800317c0: 03e00008 jr ra -800317c4: 00000000 nop - -800317c8 : - -void GsSortGPolyLine(GsGPolyLine *line) -{ -800317c8: 27bdffd8 addiu sp,sp,-40 -800317cc: afbf0024 sw ra,36(sp) -800317d0: afbe0020 sw s8,32(sp) -800317d4: 03a0f021 move s8,sp -800317d8: afc40028 sw a0,40(s8) - // PKT 0x58 - - int orig_pos = linked_list_pos; -800317dc: 3c028007 lui v0,0x8007 -800317e0: 8c421cd8 lw v0,7384(v0) -800317e4: 00000000 nop -800317e8: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x58; -800317ec: 24020058 li v0,88 -800317f0: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(0, line->attribute, &pkt); -800317f4: 8fc20028 lw v0,40(s8) -800317f8: 00000000 nop -800317fc: 8c420018 lw v0,24(v0) -80031800: 27c3001c addiu v1,s8,28 -80031804: 00603021 move a2,v1 -80031808: 00402821 move a1,v0 -8003180c: 00002021 move a0,zero -80031810: 0c00bbd0 jal 8002ef40 -80031814: 00000000 nop -80031818: afc20018 sw v0,24(s8) - - linked_list_pos++; // skip this word, we will replace it later -8003181c: 3c028007 lui v0,0x8007 -80031820: 8c421cd8 lw v0,7384(v0) -80031824: 00000000 nop -80031828: 24430001 addiu v1,v0,1 -8003182c: 3c028007 lui v0,0x8007 -80031830: ac431cd8 sw v1,7384(v0) - linked_list[linked_list_pos++] = md; -80031834: 3c028007 lui v0,0x8007 -80031838: 8c431cd4 lw v1,7380(v0) -8003183c: 3c028007 lui v0,0x8007 -80031840: 8c421cd8 lw v0,7384(v0) -80031844: 00000000 nop -80031848: 24450001 addiu a1,v0,1 -8003184c: 3c048007 lui a0,0x8007 -80031850: ac851cd8 sw a1,7384(a0) -80031854: 00021080 sll v0,v0,0x2 -80031858: 00621021 addu v0,v1,v0 -8003185c: 8fc30018 lw v1,24(s8) -80031860: 00000000 nop -80031864: ac430000 sw v1,0(v0) - - for(x=0; x < line->npoints;x++) -80031868: afc00010 sw zero,16(s8) -8003186c: 1000005a b 800319d8 -80031870: 00000000 nop - { - linked_list[linked_list_pos++] = (line->b[x]<<16)|(line->g[x]<<8)|(line->r[x])|((x == 0)?(pkt<<24):0); -80031874: 3c028007 lui v0,0x8007 -80031878: 8c431cd4 lw v1,7380(v0) -8003187c: 3c028007 lui v0,0x8007 -80031880: 8c421cd8 lw v0,7384(v0) -80031884: 00000000 nop -80031888: 24450001 addiu a1,v0,1 -8003188c: 3c048007 lui a0,0x8007 -80031890: ac851cd8 sw a1,7384(a0) -80031894: 00021080 sll v0,v0,0x2 -80031898: 00621821 addu v1,v1,v0 -8003189c: 8fc20028 lw v0,40(s8) -800318a0: 00000000 nop -800318a4: 8c44000c lw a0,12(v0) -800318a8: 8fc20010 lw v0,16(s8) -800318ac: 00000000 nop -800318b0: 00821021 addu v0,a0,v0 -800318b4: 90420000 lbu v0,0(v0) -800318b8: 00000000 nop -800318bc: 00022400 sll a0,v0,0x10 -800318c0: 8fc20028 lw v0,40(s8) -800318c4: 00000000 nop -800318c8: 8c450008 lw a1,8(v0) -800318cc: 8fc20010 lw v0,16(s8) -800318d0: 00000000 nop -800318d4: 00a21021 addu v0,a1,v0 -800318d8: 90420000 lbu v0,0(v0) -800318dc: 00000000 nop -800318e0: 00021200 sll v0,v0,0x8 -800318e4: 00821025 or v0,a0,v0 -800318e8: 8fc40028 lw a0,40(s8) -800318ec: 00000000 nop -800318f0: 8c850004 lw a1,4(a0) -800318f4: 8fc40010 lw a0,16(s8) -800318f8: 00000000 nop -800318fc: 00a42021 addu a0,a1,a0 -80031900: 90840000 lbu a0,0(a0) -80031904: 00000000 nop -80031908: 00442025 or a0,v0,a0 -8003190c: 8fc20010 lw v0,16(s8) -80031910: 00000000 nop -80031914: 14400006 bnez v0,80031930 -80031918: 00000000 nop -8003191c: 93c2001c lbu v0,28(s8) -80031920: 00000000 nop -80031924: 00021600 sll v0,v0,0x18 -80031928: 10000002 b 80031934 -8003192c: 00000000 nop -80031930: 00001021 move v0,zero -80031934: 00821025 or v0,a0,v0 -80031938: ac620000 sw v0,0(v1) - linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x] & 0x7ff); -8003193c: 3c028007 lui v0,0x8007 -80031940: 8c431cd4 lw v1,7380(v0) -80031944: 3c028007 lui v0,0x8007 -80031948: 8c421cd8 lw v0,7384(v0) -8003194c: 00000000 nop -80031950: 24450001 addiu a1,v0,1 -80031954: 3c048007 lui a0,0x8007 -80031958: ac851cd8 sw a1,7384(a0) -8003195c: 00021080 sll v0,v0,0x2 -80031960: 00621021 addu v0,v1,v0 -80031964: 8fc30028 lw v1,40(s8) -80031968: 00000000 nop -8003196c: 8c640014 lw a0,20(v1) -80031970: 8fc30010 lw v1,16(s8) -80031974: 00000000 nop -80031978: 00031840 sll v1,v1,0x1 -8003197c: 00831821 addu v1,a0,v1 -80031980: 84630000 lh v1,0(v1) -80031984: 00000000 nop -80031988: 3063ffff andi v1,v1,0xffff -8003198c: 306307ff andi v1,v1,0x7ff -80031990: 00032400 sll a0,v1,0x10 -80031994: 8fc30028 lw v1,40(s8) -80031998: 00000000 nop -8003199c: 8c650010 lw a1,16(v1) -800319a0: 8fc30010 lw v1,16(s8) -800319a4: 00000000 nop -800319a8: 00031840 sll v1,v1,0x1 -800319ac: 00a31821 addu v1,a1,v1 -800319b0: 84630000 lh v1,0(v1) -800319b4: 00000000 nop -800319b8: 3063ffff andi v1,v1,0xffff -800319bc: 306307ff andi v1,v1,0x7ff -800319c0: 00831825 or v1,a0,v1 -800319c4: ac430000 sw v1,0(v0) - md = setup_attribs(0, line->attribute, &pkt); - - linked_list_pos++; // skip this word, we will replace it later - linked_list[linked_list_pos++] = md; - - for(x=0; x < line->npoints;x++) -800319c8: 8fc20010 lw v0,16(s8) -800319cc: 00000000 nop -800319d0: 24420001 addiu v0,v0,1 -800319d4: afc20010 sw v0,16(s8) -800319d8: 8fc20028 lw v0,40(s8) -800319dc: 00000000 nop -800319e0: 8c430000 lw v1,0(v0) -800319e4: 8fc20010 lw v0,16(s8) -800319e8: 00000000 nop -800319ec: 0043102b sltu v0,v0,v1 -800319f0: 1440ffa0 bnez v0,80031874 -800319f4: 00000000 nop - { - linked_list[linked_list_pos++] = (line->b[x]<<16)|(line->g[x]<<8)|(line->r[x])|((x == 0)?(pkt<<24):0); - linked_list[linked_list_pos++] = ((line->y[x]&0x7ff)<<16)|(line->x[x] & 0x7ff); - } - - linked_list[linked_list_pos++] = 0x55555555; // termination code -800319f8: 3c028007 lui v0,0x8007 -800319fc: 8c431cd4 lw v1,7380(v0) -80031a00: 3c028007 lui v0,0x8007 -80031a04: 8c421cd8 lw v0,7384(v0) -80031a08: 00000000 nop -80031a0c: 24450001 addiu a1,v0,1 -80031a10: 3c048007 lui a0,0x8007 -80031a14: ac851cd8 sw a1,7384(a0) -80031a18: 00021080 sll v0,v0,0x2 -80031a1c: 00621021 addu v0,v1,v0 -80031a20: 3c035555 lui v1,0x5555 -80031a24: 34635555 ori v1,v1,0x5555 -80031a28: ac430000 sw v1,0(v0) - - linked_list[orig_pos] = (((line->npoints*2)+2) << 24) | (((unsigned int)&linked_list[linked_list_pos]) & 0xffffff); -80031a2c: 3c028007 lui v0,0x8007 -80031a30: 8c431cd4 lw v1,7380(v0) -80031a34: 8fc20014 lw v0,20(s8) -80031a38: 00000000 nop -80031a3c: 00021080 sll v0,v0,0x2 -80031a40: 00621021 addu v0,v1,v0 -80031a44: 8fc30028 lw v1,40(s8) -80031a48: 00000000 nop -80031a4c: 8c630000 lw v1,0(v1) -80031a50: 00000000 nop -80031a54: 24630001 addiu v1,v1,1 -80031a58: 00031840 sll v1,v1,0x1 -80031a5c: 00032600 sll a0,v1,0x18 -80031a60: 3c038007 lui v1,0x8007 -80031a64: 8c651cd4 lw a1,7380(v1) -80031a68: 3c038007 lui v1,0x8007 -80031a6c: 8c631cd8 lw v1,7384(v1) -80031a70: 00000000 nop -80031a74: 00031880 sll v1,v1,0x2 -80031a78: 00a31821 addu v1,a1,v1 -80031a7c: 00602821 move a1,v1 -80031a80: 3c0300ff lui v1,0xff -80031a84: 3463ffff ori v1,v1,0xffff -80031a88: 00a31824 and v1,a1,v1 -80031a8c: 00831825 or v1,a0,v1 -80031a90: ac430000 sw v1,0(v0) -} -80031a94: 00000000 nop -80031a98: 03c0e821 move sp,s8 -80031a9c: 8fbf0024 lw ra,36(sp) -80031aa0: 8fbe0020 lw s8,32(sp) -80031aa4: 27bd0028 addiu sp,sp,40 -80031aa8: 03e00008 jr ra -80031aac: 00000000 nop - -80031ab0 : - -void GsSortGTPoly4(GsGTPoly4 *tpoly4) -{ -80031ab0: 27bdffd8 addiu sp,sp,-40 -80031ab4: afbf0024 sw ra,36(sp) -80031ab8: afbe0020 sw s8,32(sp) -80031abc: 03a0f021 move s8,sp -80031ac0: afc40028 sw a0,40(s8) - unsigned int orig_pos = linked_list_pos; -80031ac4: 3c028007 lui v0,0x8007 -80031ac8: 8c421cd8 lw v0,7384(v0) -80031acc: 00000000 nop -80031ad0: afc20010 sw v0,16(s8) - unsigned char pkt = 0x3c; -80031ad4: 2402003c li v0,60 -80031ad8: a3c20018 sb v0,24(s8) - - /*md = setup_attribs(tpoly4->tpage, tpoly4->attribute, &pkt);*/ - - //printf("tpoly4->tpage = %d\n", tpoly4->tpage); - - md = setup_attribs(tpoly4->tpage, tpoly4->attribute, &pkt); -80031adc: 8fc20028 lw v0,40(s8) -80031ae0: 00000000 nop -80031ae4: 90420020 lbu v0,32(v0) -80031ae8: 00000000 nop -80031aec: 00402021 move a0,v0 -80031af0: 8fc20028 lw v0,40(s8) -80031af4: 00000000 nop -80031af8: 8c42002c lw v0,44(v0) -80031afc: 27c30018 addiu v1,s8,24 -80031b00: 00603021 move a2,v1 -80031b04: 00402821 move a1,v0 -80031b08: 0c00bbd0 jal 8002ef40 -80031b0c: 00000000 nop -80031b10: afc20014 sw v0,20(s8) - - //printf("pkt = %x\n", pkt); - - linked_list[linked_list_pos++] = 0x0C000000; -80031b14: 3c028007 lui v0,0x8007 -80031b18: 8c431cd4 lw v1,7380(v0) -80031b1c: 3c028007 lui v0,0x8007 -80031b20: 8c421cd8 lw v0,7384(v0) -80031b24: 00000000 nop -80031b28: 24450001 addiu a1,v0,1 -80031b2c: 3c048007 lui a0,0x8007 -80031b30: ac851cd8 sw a1,7384(a0) -80031b34: 00021080 sll v0,v0,0x2 -80031b38: 00621021 addu v0,v1,v0 -80031b3c: 3c030c00 lui v1,0xc00 -80031b40: ac430000 sw v1,0(v0) - //linked_list[linked_list_pos++] = md; - //linked_list[linked_list_pos++] = 0xe0000000; - //linked_list[linked_list_pos++] = 0xe1000105; - - //printf("tpoly4 md: %08x\n", md); - linked_list[linked_list_pos++] = (pkt<<24)|(tpoly4->b[0]<<16)|(tpoly4->g[0]<<8)|(tpoly4->r[0]); -80031b44: 3c028007 lui v0,0x8007 -80031b48: 8c431cd4 lw v1,7380(v0) -80031b4c: 3c028007 lui v0,0x8007 -80031b50: 8c421cd8 lw v0,7384(v0) -80031b54: 00000000 nop -80031b58: 24450001 addiu a1,v0,1 -80031b5c: 3c048007 lui a0,0x8007 -80031b60: ac851cd8 sw a1,7384(a0) -80031b64: 00021080 sll v0,v0,0x2 -80031b68: 00621021 addu v0,v1,v0 -80031b6c: 93c30018 lbu v1,24(s8) -80031b70: 00000000 nop -80031b74: 00032600 sll a0,v1,0x18 -80031b78: 8fc30028 lw v1,40(s8) -80031b7c: 00000000 nop -80031b80: 90630008 lbu v1,8(v1) -80031b84: 00000000 nop -80031b88: 00031c00 sll v1,v1,0x10 -80031b8c: 00832025 or a0,a0,v1 -80031b90: 8fc30028 lw v1,40(s8) -80031b94: 00000000 nop -80031b98: 90630004 lbu v1,4(v1) -80031b9c: 00000000 nop -80031ba0: 00031a00 sll v1,v1,0x8 -80031ba4: 00831825 or v1,a0,v1 -80031ba8: 8fc40028 lw a0,40(s8) -80031bac: 00000000 nop -80031bb0: 90840000 lbu a0,0(a0) -80031bb4: 00000000 nop -80031bb8: 00641825 or v1,v1,a0 -80031bbc: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((tpoly4->y[0]&0x7ff)<<16)|(tpoly4->x[0]&0x7ff); -80031bc0: 3c028007 lui v0,0x8007 -80031bc4: 8c431cd4 lw v1,7380(v0) -80031bc8: 3c028007 lui v0,0x8007 -80031bcc: 8c421cd8 lw v0,7384(v0) -80031bd0: 00000000 nop -80031bd4: 24450001 addiu a1,v0,1 -80031bd8: 3c048007 lui a0,0x8007 -80031bdc: ac851cd8 sw a1,7384(a0) -80031be0: 00021080 sll v0,v0,0x2 -80031be4: 00621021 addu v0,v1,v0 -80031be8: 8fc30028 lw v1,40(s8) -80031bec: 00000000 nop -80031bf0: 84630014 lh v1,20(v1) -80031bf4: 00000000 nop -80031bf8: 3063ffff andi v1,v1,0xffff -80031bfc: 306307ff andi v1,v1,0x7ff -80031c00: 00032400 sll a0,v1,0x10 -80031c04: 8fc30028 lw v1,40(s8) -80031c08: 00000000 nop -80031c0c: 8463000c lh v1,12(v1) -80031c10: 00000000 nop -80031c14: 3063ffff andi v1,v1,0xffff -80031c18: 306307ff andi v1,v1,0x7ff -80031c1c: 00831825 or v1,a0,v1 -80031c20: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (get_clutid(tpoly4->cx, tpoly4->cy)<<16)|(tpoly4->v[0]<<8)|tpoly4->u[0]; -80031c24: 3c028007 lui v0,0x8007 -80031c28: 8c431cd4 lw v1,7380(v0) -80031c2c: 3c028007 lui v0,0x8007 -80031c30: 8c421cd8 lw v0,7384(v0) -80031c34: 00000000 nop -80031c38: 24450001 addiu a1,v0,1 -80031c3c: 3c048007 lui a0,0x8007 -80031c40: ac851cd8 sw a1,7384(a0) -80031c44: 00021080 sll v0,v0,0x2 -80031c48: 00621021 addu v0,v1,v0 -80031c4c: 8fc30028 lw v1,40(s8) -80031c50: 00000000 nop -80031c54: 8463001c lh v1,28(v1) -80031c58: 00000000 nop -80031c5c: 3063ffff andi v1,v1,0xffff -80031c60: 306303ff andi v1,v1,0x3ff -80031c64: 00032103 sra a0,v1,0x4 -80031c68: 8fc30028 lw v1,40(s8) -80031c6c: 00000000 nop -80031c70: 8463001e lh v1,30(v1) -80031c74: 00000000 nop -80031c78: 3063ffff andi v1,v1,0xffff -80031c7c: 306301ff andi v1,v1,0x1ff -80031c80: 00031980 sll v1,v1,0x6 -80031c84: 00831825 or v1,a0,v1 -80031c88: 00032400 sll a0,v1,0x10 -80031c8c: 8fc30028 lw v1,40(s8) -80031c90: 00000000 nop -80031c94: 90630025 lbu v1,37(v1) -80031c98: 00000000 nop -80031c9c: 00031a00 sll v1,v1,0x8 -80031ca0: 00831825 or v1,a0,v1 -80031ca4: 8fc40028 lw a0,40(s8) -80031ca8: 00000000 nop -80031cac: 90840021 lbu a0,33(a0) -80031cb0: 00000000 nop -80031cb4: 00641825 or v1,v1,a0 -80031cb8: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (tpoly4->b[1]<<16)|(tpoly4->g[1]<<8)|tpoly4->r[1]; -80031cbc: 3c028007 lui v0,0x8007 -80031cc0: 8c431cd4 lw v1,7380(v0) -80031cc4: 3c028007 lui v0,0x8007 -80031cc8: 8c421cd8 lw v0,7384(v0) -80031ccc: 00000000 nop -80031cd0: 24450001 addiu a1,v0,1 -80031cd4: 3c048007 lui a0,0x8007 -80031cd8: ac851cd8 sw a1,7384(a0) -80031cdc: 00021080 sll v0,v0,0x2 -80031ce0: 00621021 addu v0,v1,v0 -80031ce4: 8fc30028 lw v1,40(s8) -80031ce8: 00000000 nop -80031cec: 90630009 lbu v1,9(v1) -80031cf0: 00000000 nop -80031cf4: 00032400 sll a0,v1,0x10 -80031cf8: 8fc30028 lw v1,40(s8) -80031cfc: 00000000 nop -80031d00: 90630005 lbu v1,5(v1) -80031d04: 00000000 nop -80031d08: 00031a00 sll v1,v1,0x8 -80031d0c: 00831825 or v1,a0,v1 -80031d10: 8fc40028 lw a0,40(s8) -80031d14: 00000000 nop -80031d18: 90840001 lbu a0,1(a0) -80031d1c: 00000000 nop -80031d20: 00641825 or v1,v1,a0 -80031d24: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((tpoly4->y[1]&0x7ff)<<16)|(tpoly4->x[1]&0x7ff); -80031d28: 3c028007 lui v0,0x8007 -80031d2c: 8c431cd4 lw v1,7380(v0) -80031d30: 3c028007 lui v0,0x8007 -80031d34: 8c421cd8 lw v0,7384(v0) -80031d38: 00000000 nop -80031d3c: 24450001 addiu a1,v0,1 -80031d40: 3c048007 lui a0,0x8007 -80031d44: ac851cd8 sw a1,7384(a0) -80031d48: 00021080 sll v0,v0,0x2 -80031d4c: 00621021 addu v0,v1,v0 -80031d50: 8fc30028 lw v1,40(s8) -80031d54: 00000000 nop -80031d58: 84630016 lh v1,22(v1) -80031d5c: 00000000 nop -80031d60: 3063ffff andi v1,v1,0xffff -80031d64: 306307ff andi v1,v1,0x7ff -80031d68: 00032400 sll a0,v1,0x10 -80031d6c: 8fc30028 lw v1,40(s8) -80031d70: 00000000 nop -80031d74: 8463000e lh v1,14(v1) -80031d78: 00000000 nop -80031d7c: 3063ffff andi v1,v1,0xffff -80031d80: 306307ff andi v1,v1,0x7ff -80031d84: 00831825 or v1,a0,v1 -80031d88: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (md << 16)|(tpoly4->v[1]<<8)|tpoly4->u[1]; -80031d8c: 3c028007 lui v0,0x8007 -80031d90: 8c431cd4 lw v1,7380(v0) -80031d94: 3c028007 lui v0,0x8007 -80031d98: 8c421cd8 lw v0,7384(v0) -80031d9c: 00000000 nop -80031da0: 24450001 addiu a1,v0,1 -80031da4: 3c048007 lui a0,0x8007 -80031da8: ac851cd8 sw a1,7384(a0) -80031dac: 00021080 sll v0,v0,0x2 -80031db0: 00621021 addu v0,v1,v0 -80031db4: 8fc30014 lw v1,20(s8) -80031db8: 00000000 nop -80031dbc: 00031c00 sll v1,v1,0x10 -80031dc0: 8fc40028 lw a0,40(s8) -80031dc4: 00000000 nop -80031dc8: 90840026 lbu a0,38(a0) -80031dcc: 00000000 nop -80031dd0: 00042200 sll a0,a0,0x8 -80031dd4: 00641825 or v1,v1,a0 -80031dd8: 8fc40028 lw a0,40(s8) -80031ddc: 00000000 nop -80031de0: 90840022 lbu a0,34(a0) -80031de4: 00000000 nop -80031de8: 00641825 or v1,v1,a0 -80031dec: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (tpoly4->b[1]<<16)|(tpoly4->g[1]<<8)|tpoly4->r[1]; -80031df0: 3c028007 lui v0,0x8007 -80031df4: 8c431cd4 lw v1,7380(v0) -80031df8: 3c028007 lui v0,0x8007 -80031dfc: 8c421cd8 lw v0,7384(v0) -80031e00: 00000000 nop -80031e04: 24450001 addiu a1,v0,1 -80031e08: 3c048007 lui a0,0x8007 -80031e0c: ac851cd8 sw a1,7384(a0) -80031e10: 00021080 sll v0,v0,0x2 -80031e14: 00621021 addu v0,v1,v0 -80031e18: 8fc30028 lw v1,40(s8) -80031e1c: 00000000 nop -80031e20: 90630009 lbu v1,9(v1) -80031e24: 00000000 nop -80031e28: 00032400 sll a0,v1,0x10 -80031e2c: 8fc30028 lw v1,40(s8) -80031e30: 00000000 nop -80031e34: 90630005 lbu v1,5(v1) -80031e38: 00000000 nop -80031e3c: 00031a00 sll v1,v1,0x8 -80031e40: 00831825 or v1,a0,v1 -80031e44: 8fc40028 lw a0,40(s8) -80031e48: 00000000 nop -80031e4c: 90840001 lbu a0,1(a0) -80031e50: 00000000 nop -80031e54: 00641825 or v1,v1,a0 -80031e58: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((tpoly4->y[2]&0x7ff)<<16)|(tpoly4->x[2]&0x7ff); -80031e5c: 3c028007 lui v0,0x8007 -80031e60: 8c431cd4 lw v1,7380(v0) -80031e64: 3c028007 lui v0,0x8007 -80031e68: 8c421cd8 lw v0,7384(v0) -80031e6c: 00000000 nop -80031e70: 24450001 addiu a1,v0,1 -80031e74: 3c048007 lui a0,0x8007 -80031e78: ac851cd8 sw a1,7384(a0) -80031e7c: 00021080 sll v0,v0,0x2 -80031e80: 00621021 addu v0,v1,v0 -80031e84: 8fc30028 lw v1,40(s8) -80031e88: 00000000 nop -80031e8c: 84630018 lh v1,24(v1) -80031e90: 00000000 nop -80031e94: 3063ffff andi v1,v1,0xffff -80031e98: 306307ff andi v1,v1,0x7ff -80031e9c: 00032400 sll a0,v1,0x10 -80031ea0: 8fc30028 lw v1,40(s8) -80031ea4: 00000000 nop -80031ea8: 84630010 lh v1,16(v1) -80031eac: 00000000 nop -80031eb0: 3063ffff andi v1,v1,0xffff -80031eb4: 306307ff andi v1,v1,0x7ff -80031eb8: 00831825 or v1,a0,v1 -80031ebc: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (tpoly4->v[2]<<8)|tpoly4->u[2]; -80031ec0: 3c028007 lui v0,0x8007 -80031ec4: 8c431cd4 lw v1,7380(v0) -80031ec8: 3c028007 lui v0,0x8007 -80031ecc: 8c421cd8 lw v0,7384(v0) -80031ed0: 00000000 nop -80031ed4: 24450001 addiu a1,v0,1 -80031ed8: 3c048007 lui a0,0x8007 -80031edc: ac851cd8 sw a1,7384(a0) -80031ee0: 00021080 sll v0,v0,0x2 -80031ee4: 00621021 addu v0,v1,v0 -80031ee8: 8fc30028 lw v1,40(s8) -80031eec: 00000000 nop -80031ef0: 90630027 lbu v1,39(v1) -80031ef4: 00000000 nop -80031ef8: 00031a00 sll v1,v1,0x8 -80031efc: 8fc40028 lw a0,40(s8) -80031f00: 00000000 nop -80031f04: 90840023 lbu a0,35(a0) -80031f08: 00000000 nop -80031f0c: 00641825 or v1,v1,a0 -80031f10: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (tpoly4->b[2]<<16)|(tpoly4->g[2]<<8)|tpoly4->r[2]; -80031f14: 3c028007 lui v0,0x8007 -80031f18: 8c431cd4 lw v1,7380(v0) -80031f1c: 3c028007 lui v0,0x8007 -80031f20: 8c421cd8 lw v0,7384(v0) -80031f24: 00000000 nop -80031f28: 24450001 addiu a1,v0,1 -80031f2c: 3c048007 lui a0,0x8007 -80031f30: ac851cd8 sw a1,7384(a0) -80031f34: 00021080 sll v0,v0,0x2 -80031f38: 00621021 addu v0,v1,v0 -80031f3c: 8fc30028 lw v1,40(s8) -80031f40: 00000000 nop -80031f44: 9063000a lbu v1,10(v1) -80031f48: 00000000 nop -80031f4c: 00032400 sll a0,v1,0x10 -80031f50: 8fc30028 lw v1,40(s8) -80031f54: 00000000 nop -80031f58: 90630006 lbu v1,6(v1) -80031f5c: 00000000 nop -80031f60: 00031a00 sll v1,v1,0x8 -80031f64: 00831825 or v1,a0,v1 -80031f68: 8fc40028 lw a0,40(s8) -80031f6c: 00000000 nop -80031f70: 90840002 lbu a0,2(a0) -80031f74: 00000000 nop -80031f78: 00641825 or v1,v1,a0 -80031f7c: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = ((tpoly4->y[3]&0x7ff)<<16)|(tpoly4->x[3]&0x7ff); -80031f80: 3c028007 lui v0,0x8007 -80031f84: 8c431cd4 lw v1,7380(v0) -80031f88: 3c028007 lui v0,0x8007 -80031f8c: 8c421cd8 lw v0,7384(v0) -80031f90: 00000000 nop -80031f94: 24450001 addiu a1,v0,1 -80031f98: 3c048007 lui a0,0x8007 -80031f9c: ac851cd8 sw a1,7384(a0) -80031fa0: 00021080 sll v0,v0,0x2 -80031fa4: 00621021 addu v0,v1,v0 -80031fa8: 8fc30028 lw v1,40(s8) -80031fac: 00000000 nop -80031fb0: 8463001a lh v1,26(v1) -80031fb4: 00000000 nop -80031fb8: 3063ffff andi v1,v1,0xffff -80031fbc: 306307ff andi v1,v1,0x7ff -80031fc0: 00032400 sll a0,v1,0x10 -80031fc4: 8fc30028 lw v1,40(s8) -80031fc8: 00000000 nop -80031fcc: 84630012 lh v1,18(v1) -80031fd0: 00000000 nop -80031fd4: 3063ffff andi v1,v1,0xffff -80031fd8: 306307ff andi v1,v1,0x7ff -80031fdc: 00831825 or v1,a0,v1 -80031fe0: ac430000 sw v1,0(v0) - linked_list[linked_list_pos++] = (tpoly4->v[3]<<8)|tpoly4->u[3]; -80031fe4: 3c028007 lui v0,0x8007 -80031fe8: 8c431cd4 lw v1,7380(v0) -80031fec: 3c028007 lui v0,0x8007 -80031ff0: 8c421cd8 lw v0,7384(v0) -80031ff4: 00000000 nop -80031ff8: 24450001 addiu a1,v0,1 -80031ffc: 3c048007 lui a0,0x8007 -80032000: ac851cd8 sw a1,7384(a0) -80032004: 00021080 sll v0,v0,0x2 -80032008: 00621021 addu v0,v1,v0 -8003200c: 8fc30028 lw v1,40(s8) -80032010: 00000000 nop -80032014: 90630028 lbu v1,40(v1) -80032018: 00000000 nop -8003201c: 00031a00 sll v1,v1,0x8 -80032020: 8fc40028 lw a0,40(s8) -80032024: 00000000 nop -80032028: 90840024 lbu a0,36(a0) -8003202c: 00000000 nop -80032030: 00641825 or v1,v1,a0 -80032034: ac430000 sw v1,0(v0) - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -80032038: 3c028007 lui v0,0x8007 -8003203c: 8c431cd4 lw v1,7380(v0) -80032040: 8fc20010 lw v0,16(s8) -80032044: 00000000 nop -80032048: 00021080 sll v0,v0,0x2 -8003204c: 00621021 addu v0,v1,v0 -80032050: 3c038007 lui v1,0x8007 -80032054: 8c641cd4 lw a0,7380(v1) -80032058: 8fc30010 lw v1,16(s8) -8003205c: 00000000 nop -80032060: 00031880 sll v1,v1,0x2 -80032064: 00831821 addu v1,a0,v1 -80032068: 8c640000 lw a0,0(v1) -8003206c: 3c038007 lui v1,0x8007 -80032070: 8c651cd4 lw a1,7380(v1) -80032074: 3c038007 lui v1,0x8007 -80032078: 8c631cd8 lw v1,7384(v1) -8003207c: 00000000 nop -80032080: 00031880 sll v1,v1,0x2 -80032084: 00a31821 addu v1,a1,v1 -80032088: 00602821 move a1,v1 -8003208c: 3c0300ff lui v1,0xff -80032090: 3463ffff ori v1,v1,0xffff -80032094: 00a31824 and v1,a1,v1 -80032098: 00831825 or v1,a0,v1 -8003209c: ac430000 sw v1,0(v0) -} -800320a0: 00000000 nop -800320a4: 03c0e821 move sp,s8 -800320a8: 8fbf0024 lw ra,36(sp) -800320ac: 8fbe0020 lw s8,32(sp) -800320b0: 27bd0028 addiu sp,sp,40 -800320b4: 03e00008 jr ra -800320b8: 00000000 nop - -800320bc : - -void GsSortGTPoly3(GsGTPoly3 *tpoly3) -{ -800320bc: 27bdffd8 addiu sp,sp,-40 -800320c0: afbf0024 sw ra,36(sp) -800320c4: afbe0020 sw s8,32(sp) -800320c8: 03a0f021 move s8,sp -800320cc: afc40028 sw a0,40(s8) - int orig_pos = linked_list_pos; -800320d0: 3c028007 lui v0,0x8007 -800320d4: 8c421cd8 lw v0,7384(v0) -800320d8: 00000000 nop -800320dc: afc20014 sw v0,20(s8) - int x; - unsigned char pkt = 0x34; -800320e0: 24020034 li v0,52 -800320e4: a3c2001c sb v0,28(s8) - unsigned int md; - - md = setup_attribs(tpoly3->tpage, tpoly3->attribute, &pkt); -800320e8: 8fc20028 lw v0,40(s8) -800320ec: 00000000 nop -800320f0: 9042001a lbu v0,26(v0) -800320f4: 00000000 nop -800320f8: 00402021 move a0,v0 -800320fc: 8fc20028 lw v0,40(s8) -80032100: 00000000 nop -80032104: 8c420024 lw v0,36(v0) -80032108: 27c3001c addiu v1,s8,28 -8003210c: 00603021 move a2,v1 -80032110: 00402821 move a1,v0 -80032114: 0c00bbd0 jal 8002ef40 -80032118: 00000000 nop -8003211c: afc20018 sw v0,24(s8) - - linked_list[linked_list_pos++] = 0x09000000; -80032120: 3c028007 lui v0,0x8007 -80032124: 8c431cd4 lw v1,7380(v0) -80032128: 3c028007 lui v0,0x8007 -8003212c: 8c421cd8 lw v0,7384(v0) -80032130: 00000000 nop -80032134: 24450001 addiu a1,v0,1 -80032138: 3c048007 lui a0,0x8007 -8003213c: ac851cd8 sw a1,7384(a0) -80032140: 00021080 sll v0,v0,0x2 -80032144: 00621021 addu v0,v1,v0 -80032148: 3c030900 lui v1,0x900 -8003214c: ac430000 sw v1,0(v0) - - for(x = 0; x < 3; x++) -80032150: afc00010 sw zero,16(s8) -80032154: 100000b0 b 80032418 -80032158: 00000000 nop - { - linked_list[linked_list_pos++] = -8003215c: 3c028007 lui v0,0x8007 -80032160: 8c431cd4 lw v1,7380(v0) -80032164: 3c028007 lui v0,0x8007 -80032168: 8c421cd8 lw v0,7384(v0) -8003216c: 00000000 nop -80032170: 24450001 addiu a1,v0,1 -80032174: 3c048007 lui a0,0x8007 -80032178: ac851cd8 sw a1,7384(a0) -8003217c: 00021080 sll v0,v0,0x2 -80032180: 00621821 addu v1,v1,v0 - ((x==0)?(pkt<<24):0)|(tpoly3->b[x]<<16)|(tpoly3->g[x]<<8)|(tpoly3->r[x]); -80032184: 8fc20010 lw v0,16(s8) -80032188: 00000000 nop -8003218c: 14400006 bnez v0,800321a8 -80032190: 00000000 nop -80032194: 93c2001c lbu v0,28(s8) -80032198: 00000000 nop -8003219c: 00021600 sll v0,v0,0x18 -800321a0: 10000002 b 800321ac -800321a4: 00000000 nop -800321a8: 00001021 move v0,zero -800321ac: 8fc50028 lw a1,40(s8) -800321b0: 8fc40010 lw a0,16(s8) -800321b4: 00000000 nop -800321b8: 00a42021 addu a0,a1,a0 -800321bc: 90840006 lbu a0,6(a0) -800321c0: 00000000 nop -800321c4: 00042400 sll a0,a0,0x10 -800321c8: 00442025 or a0,v0,a0 -800321cc: 8fc50028 lw a1,40(s8) -800321d0: 8fc20010 lw v0,16(s8) -800321d4: 00000000 nop -800321d8: 00a21021 addu v0,a1,v0 -800321dc: 90420003 lbu v0,3(v0) -800321e0: 00000000 nop -800321e4: 00021200 sll v0,v0,0x8 -800321e8: 00821025 or v0,a0,v0 -800321ec: 8fc50028 lw a1,40(s8) -800321f0: 8fc40010 lw a0,16(s8) -800321f4: 00000000 nop -800321f8: 00a42021 addu a0,a1,a0 -800321fc: 90840000 lbu a0,0(a0) -80032200: 00000000 nop -80032204: 00441025 or v0,v0,a0 - - linked_list[linked_list_pos++] = 0x09000000; - - for(x = 0; x < 3; x++) - { - linked_list[linked_list_pos++] = -80032208: ac620000 sw v0,0(v1) - ((x==0)?(pkt<<24):0)|(tpoly3->b[x]<<16)|(tpoly3->g[x]<<8)|(tpoly3->r[x]); - linked_list[linked_list_pos++] = ((tpoly3->y[x]&0x7ff)<<16)|(tpoly3->x[x]&0x7ff); -8003220c: 3c028007 lui v0,0x8007 -80032210: 8c431cd4 lw v1,7380(v0) -80032214: 3c028007 lui v0,0x8007 -80032218: 8c421cd8 lw v0,7384(v0) -8003221c: 00000000 nop -80032220: 24450001 addiu a1,v0,1 -80032224: 3c048007 lui a0,0x8007 -80032228: ac851cd8 sw a1,7384(a0) -8003222c: 00021080 sll v0,v0,0x2 -80032230: 00621821 addu v1,v1,v0 -80032234: 8fc40028 lw a0,40(s8) -80032238: 8fc20010 lw v0,16(s8) -8003223c: 00000000 nop -80032240: 24420008 addiu v0,v0,8 -80032244: 00021040 sll v0,v0,0x1 -80032248: 00821021 addu v0,a0,v0 -8003224c: 84420000 lh v0,0(v0) -80032250: 00000000 nop -80032254: 3042ffff andi v0,v0,0xffff -80032258: 304207ff andi v0,v0,0x7ff -8003225c: 00022400 sll a0,v0,0x10 -80032260: 8fc50028 lw a1,40(s8) -80032264: 8fc20010 lw v0,16(s8) -80032268: 00000000 nop -8003226c: 24420004 addiu v0,v0,4 -80032270: 00021040 sll v0,v0,0x1 -80032274: 00a21021 addu v0,a1,v0 -80032278: 84420002 lh v0,2(v0) -8003227c: 00000000 nop -80032280: 3042ffff andi v0,v0,0xffff -80032284: 304207ff andi v0,v0,0x7ff -80032288: 00821025 or v0,a0,v0 -8003228c: ac620000 sw v0,0(v1) - linked_list[linked_list_pos] = (tpoly3->u[x]<<8)|tpoly3->v[x]; -80032290: 3c028007 lui v0,0x8007 -80032294: 8c431cd4 lw v1,7380(v0) -80032298: 3c028007 lui v0,0x8007 -8003229c: 8c421cd8 lw v0,7384(v0) -800322a0: 00000000 nop -800322a4: 00021080 sll v0,v0,0x2 -800322a8: 00621021 addu v0,v1,v0 -800322ac: 8fc40028 lw a0,40(s8) -800322b0: 8fc30010 lw v1,16(s8) -800322b4: 00000000 nop -800322b8: 00831821 addu v1,a0,v1 -800322bc: 9063001b lbu v1,27(v1) -800322c0: 00000000 nop -800322c4: 00031a00 sll v1,v1,0x8 -800322c8: 8fc50028 lw a1,40(s8) -800322cc: 8fc40010 lw a0,16(s8) -800322d0: 00000000 nop -800322d4: 00a42021 addu a0,a1,a0 -800322d8: 9084001e lbu a0,30(a0) -800322dc: 00000000 nop -800322e0: 00641825 or v1,v1,a0 -800322e4: ac430000 sw v1,0(v0) - - switch(x) -800322e8: 8fc20010 lw v0,16(s8) -800322ec: 00000000 nop -800322f0: 10400006 beqz v0,8003230c -800322f4: 00000000 nop -800322f8: 24030001 li v1,1 -800322fc: 10430026 beq v0,v1,80032398 -80032300: 00000000 nop -80032304: 1000003a b 800323f0 -80032308: 00000000 nop - { - case 0: - linked_list[linked_list_pos++] |= -8003230c: 3c028007 lui v0,0x8007 -80032310: 8c441cd4 lw a0,7380(v0) -80032314: 3c028007 lui v0,0x8007 -80032318: 8c421cd8 lw v0,7384(v0) -8003231c: 00000000 nop -80032320: 24450001 addiu a1,v0,1 -80032324: 3c038007 lui v1,0x8007 -80032328: ac651cd8 sw a1,7384(v1) -8003232c: 00021880 sll v1,v0,0x2 -80032330: 00831821 addu v1,a0,v1 -80032334: 3c048007 lui a0,0x8007 -80032338: 8c841cd4 lw a0,7380(a0) -8003233c: 00021080 sll v0,v0,0x2 -80032340: 00821021 addu v0,a0,v0 -80032344: 8c420000 lw v0,0(v0) - get_clutid(tpoly3->cx, tpoly3->cy) << 16; -80032348: 8fc40028 lw a0,40(s8) -8003234c: 00000000 nop -80032350: 84840016 lh a0,22(a0) -80032354: 00000000 nop -80032358: 3084ffff andi a0,a0,0xffff -8003235c: 308403ff andi a0,a0,0x3ff -80032360: 00042903 sra a1,a0,0x4 -80032364: 8fc40028 lw a0,40(s8) -80032368: 00000000 nop -8003236c: 84840018 lh a0,24(a0) -80032370: 00000000 nop -80032374: 3084ffff andi a0,a0,0xffff -80032378: 308401ff andi a0,a0,0x1ff -8003237c: 00042180 sll a0,a0,0x6 -80032380: 00a42025 or a0,a1,a0 -80032384: 00042400 sll a0,a0,0x10 - linked_list[linked_list_pos] = (tpoly3->u[x]<<8)|tpoly3->v[x]; - - switch(x) - { - case 0: - linked_list[linked_list_pos++] |= -80032388: 00441025 or v0,v0,a0 -8003238c: ac620000 sw v0,0(v1) - get_clutid(tpoly3->cx, tpoly3->cy) << 16; - break; -80032390: 1000001d b 80032408 -80032394: 00000000 nop - case 1: - linked_list[linked_list_pos++] |= -80032398: 3c028007 lui v0,0x8007 -8003239c: 8c441cd4 lw a0,7380(v0) -800323a0: 3c028007 lui v0,0x8007 -800323a4: 8c421cd8 lw v0,7384(v0) -800323a8: 00000000 nop -800323ac: 24450001 addiu a1,v0,1 -800323b0: 3c038007 lui v1,0x8007 -800323b4: ac651cd8 sw a1,7384(v1) -800323b8: 00021880 sll v1,v0,0x2 -800323bc: 00831821 addu v1,a0,v1 -800323c0: 3c048007 lui a0,0x8007 -800323c4: 8c841cd4 lw a0,7380(a0) -800323c8: 00021080 sll v0,v0,0x2 -800323cc: 00821021 addu v0,a0,v0 -800323d0: 8c440000 lw a0,0(v0) - md << 16; -800323d4: 8fc20018 lw v0,24(s8) -800323d8: 00000000 nop -800323dc: 00021400 sll v0,v0,0x10 - case 0: - linked_list[linked_list_pos++] |= - get_clutid(tpoly3->cx, tpoly3->cy) << 16; - break; - case 1: - linked_list[linked_list_pos++] |= -800323e0: 00821025 or v0,a0,v0 -800323e4: ac620000 sw v0,0(v1) - md << 16; - break; -800323e8: 10000007 b 80032408 -800323ec: 00000000 nop - default: - linked_list_pos++; -800323f0: 3c028007 lui v0,0x8007 -800323f4: 8c421cd8 lw v0,7384(v0) -800323f8: 00000000 nop -800323fc: 24430001 addiu v1,v0,1 -80032400: 3c028007 lui v0,0x8007 -80032404: ac431cd8 sw v1,7384(v0) - - md = setup_attribs(tpoly3->tpage, tpoly3->attribute, &pkt); - - linked_list[linked_list_pos++] = 0x09000000; - - for(x = 0; x < 3; x++) -80032408: 8fc20010 lw v0,16(s8) -8003240c: 00000000 nop -80032410: 24420001 addiu v0,v0,1 -80032414: afc20010 sw v0,16(s8) -80032418: 8fc20010 lw v0,16(s8) -8003241c: 00000000 nop -80032420: 28420003 slti v0,v0,3 -80032424: 1440ff4d bnez v0,8003215c -80032428: 00000000 nop - default: - linked_list_pos++; - } - } - - linked_list[orig_pos] |= ((unsigned int)&linked_list[linked_list_pos]) & 0xffffff; -8003242c: 3c028007 lui v0,0x8007 -80032430: 8c431cd4 lw v1,7380(v0) -80032434: 8fc20014 lw v0,20(s8) -80032438: 00000000 nop -8003243c: 00021080 sll v0,v0,0x2 -80032440: 00621021 addu v0,v1,v0 -80032444: 3c038007 lui v1,0x8007 -80032448: 8c641cd4 lw a0,7380(v1) -8003244c: 8fc30014 lw v1,20(s8) -80032450: 00000000 nop -80032454: 00031880 sll v1,v1,0x2 -80032458: 00831821 addu v1,a0,v1 -8003245c: 8c640000 lw a0,0(v1) -80032460: 3c038007 lui v1,0x8007 -80032464: 8c651cd4 lw a1,7380(v1) -80032468: 3c038007 lui v1,0x8007 -8003246c: 8c631cd8 lw v1,7384(v1) -80032470: 00000000 nop -80032474: 00031880 sll v1,v1,0x2 -80032478: 00a31821 addu v1,a1,v1 -8003247c: 00602821 move a1,v1 -80032480: 3c0300ff lui v1,0xff -80032484: 3463ffff ori v1,v1,0xffff -80032488: 00a31824 and v1,a1,v1 -8003248c: 00831825 or v1,a0,v1 -80032490: ac430000 sw v1,0(v0) -} -80032494: 00000000 nop -80032498: 03c0e821 move sp,s8 -8003249c: 8fbf0024 lw ra,36(sp) -800324a0: 8fbe0020 lw s8,32(sp) -800324a4: 27bd0028 addiu sp,sp,40 -800324a8: 03e00008 jr ra -800324ac: 00000000 nop - -800324b0 : - -unsigned char readpad_vibrations[4][2]; -int querypad_rxrdy = 1; - -void QueryPAD(int pad_n, unsigned char *in, unsigned char *out, int len) -{ -800324b0: 27bdffe0 addiu sp,sp,-32 -800324b4: afbe001c sw s8,28(sp) -800324b8: 03a0f021 move s8,sp -800324bc: afc40020 sw a0,32(s8) -800324c0: afc50024 sw a1,36(s8) -800324c4: afc60028 sw a2,40(s8) -800324c8: afc7002c sw a3,44(s8) - int x; - int y; - int i; - unsigned char TempData; - int EmuFlag = 0; -800324cc: afc0000c sw zero,12(s8) - - PADSIO_MODE(0) = 0xD; -800324d0: 3c021f80 lui v0,0x1f80 -800324d4: 34421048 ori v0,v0,0x1048 -800324d8: 2403000d li v1,13 -800324dc: a4430000 sh v1,0(v0) - PADSIO_BAUD(0) = 0x88; -800324e0: 3c021f80 lui v0,0x1f80 -800324e4: 3442104e ori v0,v0,0x104e -800324e8: 24030088 li v1,136 -800324ec: a4430000 sh v1,0(v0) - - if(pad_n == 1) PADSIO_CTRL(0) = 0x3003; else PADSIO_CTRL(0) = 0x1003; -800324f0: 8fc30020 lw v1,32(s8) -800324f4: 24020001 li v0,1 -800324f8: 14620007 bne v1,v0,80032518 -800324fc: 00000000 nop -80032500: 3c021f80 lui v0,0x1f80 -80032504: 3442104a ori v0,v0,0x104a -80032508: 24033003 li v1,12291 -8003250c: a4430000 sh v1,0(v0) -80032510: 10000005 b 80032528 -80032514: 00000000 nop -80032518: 3c021f80 lui v0,0x1f80 -8003251c: 3442104a ori v0,v0,0x104a -80032520: 24031003 li v1,4099 -80032524: a4430000 sh v1,0(v0) - - /*Get the initial command (usually 0x01 or 0x81)*/ - TempData = *in; -80032528: 8fc20024 lw v0,36(s8) -8003252c: 00000000 nop -80032530: 90420000 lbu v0,0(v0) -80032534: 00000000 nop -80032538: a3c20010 sb v0,16(s8) - - for(y=0;y<400;y++); /*Slight delay before first transmission*/ -8003253c: afc00004 sw zero,4(s8) -80032540: 10000005 b 80032558 -80032544: 00000000 nop -80032548: 8fc20004 lw v0,4(s8) -8003254c: 00000000 nop -80032550: 24420001 addiu v0,v0,1 -80032554: afc20004 sw v0,4(s8) -80032558: 8fc20004 lw v0,4(s8) -8003255c: 00000000 nop -80032560: 28420190 slti v0,v0,400 -80032564: 1440fff8 bnez v0,80032548 -80032568: 00000000 nop - - for(x = 0; x < len; x++) -8003256c: afc00000 sw zero,0(s8) -80032570: 1000007d b 80032768 -80032574: 00000000 nop - { - /*Must use timeouts or else program hangs on emulators*/ - if(!EmuFlag) -80032578: 8fc2000c lw v0,12(s8) -8003257c: 00000000 nop -80032580: 14400017 bnez v0,800325e0 -80032584: 00000000 nop - { - for(y=0;y<1000;y++) -80032588: afc00004 sw zero,4(s8) -8003258c: 1000000c b 800325c0 -80032590: 00000000 nop - { - /*Wait for TX ready*/ - if(PADSIO_STATUS(0) & 4)break; -80032594: 3c021f80 lui v0,0x1f80 -80032598: 34421044 ori v0,v0,0x1044 -8003259c: 94420000 lhu v0,0(v0) -800325a0: 00000000 nop -800325a4: 30420004 andi v0,v0,0x4 -800325a8: 1440000c bnez v0,800325dc -800325ac: 00000000 nop - for(x = 0; x < len; x++) - { - /*Must use timeouts or else program hangs on emulators*/ - if(!EmuFlag) - { - for(y=0;y<1000;y++) -800325b0: 8fc20004 lw v0,4(s8) -800325b4: 00000000 nop -800325b8: 24420001 addiu v0,v0,1 -800325bc: afc20004 sw v0,4(s8) -800325c0: 8fc20004 lw v0,4(s8) -800325c4: 00000000 nop -800325c8: 284203e8 slti v0,v0,1000 -800325cc: 1440fff1 bnez v0,80032594 -800325d0: 00000000 nop -800325d4: 10000002 b 800325e0 -800325d8: 00000000 nop - { - /*Wait for TX ready*/ - if(PADSIO_STATUS(0) & 4)break; -800325dc: 00000000 nop - } - } - - PADSIO_DATA(0) = *in; -800325e0: 3c021f80 lui v0,0x1f80 -800325e4: 34421040 ori v0,v0,0x1040 -800325e8: 8fc30024 lw v1,36(s8) -800325ec: 00000000 nop -800325f0: 90630000 lbu v1,0(v1) -800325f4: 00000000 nop -800325f8: a0430000 sb v1,0(v0) - in++; -800325fc: 8fc20024 lw v0,36(s8) -80032600: 00000000 nop -80032604: 24420001 addiu v0,v0,1 -80032608: afc20024 sw v0,36(s8) - - if(!EmuFlag) -8003260c: 8fc2000c lw v0,12(s8) -80032610: 00000000 nop -80032614: 14400035 bnez v0,800326ec -80032618: 00000000 nop - { - /*Check ACK only for Memory Cards*/ - if(TempData == 0x81 || x == 0) -8003261c: 93c30010 lbu v1,16(s8) -80032620: 24020081 li v0,129 -80032624: 10620005 beq v1,v0,8003263c -80032628: 00000000 nop -8003262c: 8fc20000 lw v0,0(s8) -80032630: 00000000 nop -80032634: 14400017 bnez v0,80032694 -80032638: 00000000 nop - { - for(y=0;y<2000;y++) -8003263c: afc00004 sw zero,4(s8) -80032640: 1000000c b 80032674 -80032644: 00000000 nop - { - /*Check for ACK signal*/ - if(PADSIO_STATUS(0) & 128)break; -80032648: 3c021f80 lui v0,0x1f80 -8003264c: 34421044 ori v0,v0,0x1044 -80032650: 94420000 lhu v0,0(v0) -80032654: 00000000 nop -80032658: 30420080 andi v0,v0,0x80 -8003265c: 1440000c bnez v0,80032690 -80032660: 00000000 nop - if(!EmuFlag) - { - /*Check ACK only for Memory Cards*/ - if(TempData == 0x81 || x == 0) - { - for(y=0;y<2000;y++) -80032664: 8fc20004 lw v0,4(s8) -80032668: 00000000 nop -8003266c: 24420001 addiu v0,v0,1 -80032670: afc20004 sw v0,4(s8) -80032674: 8fc20004 lw v0,4(s8) -80032678: 00000000 nop -8003267c: 284207d0 slti v0,v0,2000 -80032680: 1440fff1 bnez v0,80032648 -80032684: 00000000 nop -80032688: 10000002 b 80032694 -8003268c: 00000000 nop - { - /*Check for ACK signal*/ - if(PADSIO_STATUS(0) & 128)break; -80032690: 00000000 nop - } - } - - for(i=0;i<100;i++) -80032694: afc00008 sw zero,8(s8) -80032698: 1000000c b 800326cc -8003269c: 00000000 nop - { - /*Read RX status flag, required for Xebra*/ - if(PADSIO_STATUS(0) & 2)break; -800326a0: 3c021f80 lui v0,0x1f80 -800326a4: 34421044 ori v0,v0,0x1044 -800326a8: 94420000 lhu v0,0(v0) -800326ac: 00000000 nop -800326b0: 30420002 andi v0,v0,0x2 -800326b4: 1440000c bnez v0,800326e8 -800326b8: 00000000 nop - /*Check for ACK signal*/ - if(PADSIO_STATUS(0) & 128)break; - } - } - - for(i=0;i<100;i++) -800326bc: 8fc20008 lw v0,8(s8) -800326c0: 00000000 nop -800326c4: 24420001 addiu v0,v0,1 -800326c8: afc20008 sw v0,8(s8) -800326cc: 8fc20008 lw v0,8(s8) -800326d0: 00000000 nop -800326d4: 28420064 slti v0,v0,100 -800326d8: 1440fff1 bnez v0,800326a0 -800326dc: 00000000 nop -800326e0: 10000002 b 800326ec -800326e4: 00000000 nop - { - /*Read RX status flag, required for Xebra*/ - if(PADSIO_STATUS(0) & 2)break; -800326e8: 00000000 nop - } - } - - *out = PADSIO_DATA(0); -800326ec: 3c021f80 lui v0,0x1f80 -800326f0: 34421040 ori v0,v0,0x1040 -800326f4: 90430000 lbu v1,0(v0) -800326f8: 8fc20028 lw v0,40(s8) -800326fc: 00000000 nop -80032700: a0430000 sb v1,0(v0) - - /*This is emulator, valid data was received without ACK, ePSXe and PCSX*/ - if((x == 0) && (y > 1900) && (*out != 0xFF)) -80032704: 8fc20000 lw v0,0(s8) -80032708: 00000000 nop -8003270c: 1440000e bnez v0,80032748 -80032710: 00000000 nop -80032714: 8fc20004 lw v0,4(s8) -80032718: 00000000 nop -8003271c: 2842076d slti v0,v0,1901 -80032720: 14400009 bnez v0,80032748 -80032724: 00000000 nop -80032728: 8fc20028 lw v0,40(s8) -8003272c: 00000000 nop -80032730: 90430000 lbu v1,0(v0) -80032734: 240200ff li v0,255 -80032738: 10620003 beq v1,v0,80032748 -8003273c: 00000000 nop - { - EmuFlag = 1; -80032740: 24020001 li v0,1 -80032744: afc2000c sw v0,12(s8) - } - - out++; -80032748: 8fc20028 lw v0,40(s8) -8003274c: 00000000 nop -80032750: 24420001 addiu v0,v0,1 -80032754: afc20028 sw v0,40(s8) - /*Get the initial command (usually 0x01 or 0x81)*/ - TempData = *in; - - for(y=0;y<400;y++); /*Slight delay before first transmission*/ - - for(x = 0; x < len; x++) -80032758: 8fc20000 lw v0,0(s8) -8003275c: 00000000 nop -80032760: 24420001 addiu v0,v0,1 -80032764: afc20000 sw v0,0(s8) -80032768: 8fc30000 lw v1,0(s8) -8003276c: 8fc2002c lw v0,44(s8) -80032770: 00000000 nop -80032774: 0062102a slt v0,v1,v0 -80032778: 1440ff7f bnez v0,80032578 -8003277c: 00000000 nop - } - - out++; - } - - PADSIO_CTRL(0) = 0; -80032780: 3c021f80 lui v0,0x1f80 -80032784: 3442104a ori v0,v0,0x104a -80032788: a4400000 sh zero,0(v0) -} -8003278c: 00000000 nop -80032790: 03c0e821 move sp,s8 -80032794: 8fbe001c lw s8,28(sp) -80032798: 27bd0020 addiu sp,sp,32 -8003279c: 03e00008 jr ra -800327a0: 00000000 nop - -800327a4 : - -void pad_read_raw(int pad_n, unsigned char *arr) -{ -800327a4: 27bdffd0 addiu sp,sp,-48 -800327a8: afbf002c sw ra,44(sp) -800327ac: afbe0028 sw s8,40(sp) -800327b0: 03a0f021 move s8,sp -800327b4: afc40030 sw a0,48(s8) -800327b8: afc50034 sw a1,52(s8) - // arr must be at least 16 bytes long... - - unsigned char pad_cmd[PAD_READ_RAW_SIZE] = {1,0x42,0,0,0}; -800327bc: afc00010 sw zero,16(s8) -800327c0: afc00014 sw zero,20(s8) -800327c4: afc00018 sw zero,24(s8) -800327c8: afc0001c sw zero,28(s8) -800327cc: afc00020 sw zero,32(s8) -800327d0: a3c00024 sb zero,36(s8) -800327d4: 24020001 li v0,1 -800327d8: a3c20010 sb v0,16(s8) -800327dc: 24020042 li v0,66 -800327e0: a3c20011 sb v0,17(s8) - - pad_cmd[3] = readpad_vibrations[pad_n][0]; -800327e4: 3c028007 lui v0,0x8007 -800327e8: 8fc30030 lw v1,48(s8) -800327ec: 00000000 nop -800327f0: 00031840 sll v1,v1,0x1 -800327f4: 24421d60 addiu v0,v0,7520 -800327f8: 00621021 addu v0,v1,v0 -800327fc: 90420000 lbu v0,0(v0) -80032800: 00000000 nop -80032804: a3c20013 sb v0,19(s8) - pad_cmd[4] = readpad_vibrations[pad_n][1]; -80032808: 3c028007 lui v0,0x8007 -8003280c: 8fc30030 lw v1,48(s8) -80032810: 00000000 nop -80032814: 00031840 sll v1,v1,0x1 -80032818: 24421d60 addiu v0,v0,7520 -8003281c: 00621021 addu v0,v1,v0 -80032820: 90420001 lbu v0,1(v0) -80032824: 00000000 nop -80032828: a3c20014 sb v0,20(s8) - - QueryPAD(pad_n, pad_cmd, arr, sizeof(pad_cmd)); -8003282c: 24070015 li a3,21 -80032830: 8fc60034 lw a2,52(s8) -80032834: 27c20010 addiu v0,s8,16 -80032838: 00402821 move a1,v0 -8003283c: 8fc40030 lw a0,48(s8) -80032840: 0c00c92c jal 800324b0 -80032844: 00000000 nop -} -80032848: 00000000 nop -8003284c: 03c0e821 move sp,s8 -80032850: 8fbf002c lw ra,44(sp) -80032854: 8fbe0028 lw s8,40(sp) -80032858: 27bd0030 addiu sp,sp,48 -8003285c: 03e00008 jr ra -80032860: 00000000 nop - -80032864 : - -void pad_escape_mode(int pad_n, int enable) -{ -80032864: 27bdffe0 addiu sp,sp,-32 -80032868: afbf001c sw ra,28(sp) -8003286c: afbe0018 sw s8,24(sp) -80032870: 03a0f021 move s8,sp -80032874: afc40020 sw a0,32(s8) -80032878: afc50024 sw a1,36(s8) - unsigned char pad_cmd[] = {1,0x43,0,enable?1:0,0}; -8003287c: 24020001 li v0,1 -80032880: a3c20010 sb v0,16(s8) -80032884: 24020043 li v0,67 -80032888: a3c20011 sb v0,17(s8) -8003288c: a3c00012 sb zero,18(s8) -80032890: 8fc20024 lw v0,36(s8) -80032894: 00000000 nop -80032898: 0002102b sltu v0,zero,v0 -8003289c: 304200ff andi v0,v0,0xff -800328a0: a3c20013 sb v0,19(s8) -800328a4: a3c00014 sb zero,20(s8) - - QueryPAD(pad_n, pad_cmd, NULL, sizeof(pad_cmd)); -800328a8: 24070005 li a3,5 -800328ac: 00003021 move a2,zero -800328b0: 27c20010 addiu v0,s8,16 -800328b4: 00402821 move a1,v0 -800328b8: 8fc40020 lw a0,32(s8) -800328bc: 0c00c92c jal 800324b0 -800328c0: 00000000 nop -} -800328c4: 00000000 nop -800328c8: 03c0e821 move sp,s8 -800328cc: 8fbf001c lw ra,28(sp) -800328d0: 8fbe0018 lw s8,24(sp) -800328d4: 27bd0020 addiu sp,sp,32 -800328d8: 03e00008 jr ra -800328dc: 00000000 nop - -800328e0 : - -void pad_enable_vibration(int pad_n) -{ -800328e0: 27bdffd8 addiu sp,sp,-40 -800328e4: afbf0024 sw ra,36(sp) -800328e8: afbe0020 sw s8,32(sp) -800328ec: 03a0f021 move s8,sp -800328f0: afc40028 sw a0,40(s8) - unsigned char pad_cmd[] = {1, 0x4d, 0, 0, 1, 0xff, 0xff, 0xff, 0xff}; -800328f4: 3c028004 lui v0,0x8004 -800328f8: 2443fda0 addiu v1,v0,-608 -800328fc: 88630003 lwl v1,3(v1) -80032900: 00000000 nop -80032904: 9843fda0 lwr v1,-608(v0) -80032908: 00000000 nop -8003290c: 00602021 move a0,v1 -80032910: 2443fda0 addiu v1,v0,-608 -80032914: 88650007 lwl a1,7(v1) -80032918: 00000000 nop -8003291c: 98650004 lwr a1,4(v1) -80032920: 00000000 nop -80032924: 00a01821 move v1,a1 -80032928: afc40010 sw a0,16(s8) -8003292c: afc30014 sw v1,20(s8) -80032930: 2442fda0 addiu v0,v0,-608 -80032934: 90420008 lbu v0,8(v0) -80032938: 00000000 nop -8003293c: a3c20018 sb v0,24(s8) - - pad_escape_mode(pad_n, 1); // Enter escape / configuration mode -80032940: 24050001 li a1,1 -80032944: 8fc40028 lw a0,40(s8) -80032948: 0c00ca19 jal 80032864 -8003294c: 00000000 nop - QueryPAD(pad_n, pad_cmd, NULL, sizeof(pad_cmd)); -80032950: 24070009 li a3,9 -80032954: 00003021 move a2,zero -80032958: 27c20010 addiu v0,s8,16 -8003295c: 00402821 move a1,v0 -80032960: 8fc40028 lw a0,40(s8) -80032964: 0c00c92c jal 800324b0 -80032968: 00000000 nop - pad_escape_mode(pad_n, 0); // Exit escape / configuration mode -8003296c: 00002821 move a1,zero -80032970: 8fc40028 lw a0,40(s8) -80032974: 0c00ca19 jal 80032864 -80032978: 00000000 nop -} -8003297c: 00000000 nop -80032980: 03c0e821 move sp,s8 -80032984: 8fbf0024 lw ra,36(sp) -80032988: 8fbe0020 lw s8,32(sp) -8003298c: 27bd0028 addiu sp,sp,40 -80032990: 03e00008 jr ra -80032994: 00000000 nop - -80032998 : - -void pad_set_vibration(int pad_n, unsigned char small, unsigned char big) -{ -80032998: 27bdfff8 addiu sp,sp,-8 -8003299c: afbe0004 sw s8,4(sp) -800329a0: 03a0f021 move s8,sp -800329a4: afc40008 sw a0,8(s8) -800329a8: 00a01821 move v1,a1 -800329ac: 00c01021 move v0,a2 -800329b0: a3c3000c sb v1,12(s8) -800329b4: a3c20010 sb v0,16(s8) - if(pad_n >= 0 && pad_n <= 3) -800329b8: 8fc20008 lw v0,8(s8) -800329bc: 00000000 nop -800329c0: 04400018 bltz v0,80032a24 -800329c4: 00000000 nop -800329c8: 8fc20008 lw v0,8(s8) -800329cc: 00000000 nop -800329d0: 28420004 slti v0,v0,4 -800329d4: 10400013 beqz v0,80032a24 -800329d8: 00000000 nop - { - readpad_vibrations[pad_n][0] = small; -800329dc: 3c028007 lui v0,0x8007 -800329e0: 8fc30008 lw v1,8(s8) -800329e4: 00000000 nop -800329e8: 00031840 sll v1,v1,0x1 -800329ec: 24421d60 addiu v0,v0,7520 -800329f0: 00621021 addu v0,v1,v0 -800329f4: 93c3000c lbu v1,12(s8) -800329f8: 00000000 nop -800329fc: a0430000 sb v1,0(v0) - readpad_vibrations[pad_n][1] = big; -80032a00: 3c028007 lui v0,0x8007 -80032a04: 8fc30008 lw v1,8(s8) -80032a08: 00000000 nop -80032a0c: 00031840 sll v1,v1,0x1 -80032a10: 24421d60 addiu v0,v0,7520 -80032a14: 00621021 addu v0,v1,v0 -80032a18: 93c30010 lbu v1,16(s8) -80032a1c: 00000000 nop -80032a20: a0430001 sb v1,1(v0) - } -} -80032a24: 00000000 nop -80032a28: 03c0e821 move sp,s8 -80032a2c: 8fbe0004 lw s8,4(sp) -80032a30: 27bd0008 addiu sp,sp,8 -80032a34: 03e00008 jr ra -80032a38: 00000000 nop - -80032a3c : - MEMCARD_READ_CMD = 'R', - MEMCARD_WRITE_CMD = 'W' -}; - -unsigned char McReadSector(int card_slot, int sector, unsigned char *buffer) -{ -80032a3c: 27bdffe8 addiu sp,sp,-24 -80032a40: afbf0014 sw ra,20(sp) -80032a44: afbe0010 sw s8,16(sp) -80032a48: 03a0f021 move s8,sp -80032a4c: afc40018 sw a0,24(s8) -80032a50: afc5001c sw a1,28(s8) -80032a54: afc60020 sw a2,32(s8) - memset(&card_cmd[0], 0, 140); -80032a58: 2406008c li a2,140 -80032a5c: 00002821 move a1,zero -80032a60: 3c028007 lui v0,0x8007 -80032a64: 24448b60 addiu a0,v0,-29856 -80032a68: 0c00d7ab jal 80035eac -80032a6c: 00000000 nop - - card_cmd[0] = MEMCARD_ACCESS_CMD; /*MC access*/ -80032a70: 3c028007 lui v0,0x8007 -80032a74: 2403ff81 li v1,-127 -80032a78: a0438b60 sb v1,-29856(v0) - card_cmd[1] = MEMCARD_READ_CMD; /*Read command*/ -80032a7c: 3c028007 lui v0,0x8007 -80032a80: 24428b60 addiu v0,v0,-29856 -80032a84: 24030052 li v1,82 -80032a88: a0430001 sb v1,1(v0) - - /*Copy frame number to command*/ - card_cmd[4] = sector >> 8; /*Frame MSB*/ -80032a8c: 8fc2001c lw v0,28(s8) -80032a90: 00000000 nop -80032a94: 00021203 sra v0,v0,0x8 -80032a98: 304300ff andi v1,v0,0xff -80032a9c: 3c028007 lui v0,0x8007 -80032aa0: 24428b60 addiu v0,v0,-29856 -80032aa4: a0430004 sb v1,4(v0) - card_cmd[5] = sector & 0xFF; /*Frame LSB*/ -80032aa8: 8fc2001c lw v0,28(s8) -80032aac: 00000000 nop -80032ab0: 304300ff andi v1,v0,0xff -80032ab4: 3c028007 lui v0,0x8007 -80032ab8: 24428b60 addiu v0,v0,-29856 -80032abc: a0430005 sb v1,5(v0) - - memset(arr,0,140); -80032ac0: 2406008c li a2,140 -80032ac4: 00002821 move a1,zero -80032ac8: 3c028007 lui v0,0x8007 -80032acc: 24448bec addiu a0,v0,-29716 -80032ad0: 0c00d7ab jal 80035eac -80032ad4: 00000000 nop - QueryPAD(card_slot, card_cmd, arr, sizeof(card_cmd)); -80032ad8: 2407008c li a3,140 -80032adc: 3c028007 lui v0,0x8007 -80032ae0: 24468bec addiu a2,v0,-29716 -80032ae4: 3c028007 lui v0,0x8007 -80032ae8: 24458b60 addiu a1,v0,-29856 -80032aec: 8fc40018 lw a0,24(s8) -80032af0: 0c00c92c jal 800324b0 -80032af4: 00000000 nop - - /*Copy received frame data*/ - memcpy(buffer, &arr[10], 128); -80032af8: 24060080 li a2,128 -80032afc: 3c028007 lui v0,0x8007 -80032b00: 24458bf6 addiu a1,v0,-29706 -80032b04: 8fc40020 lw a0,32(s8) -80032b08: 0c00d75e jal 80035d78 -80032b0c: 00000000 nop - - // Positions 6 and 7 belong to ACK's - // They always should be 0x5C and 0x5D, respectively - // On the other hand, positions 8 and 9 return MSB and LSB sectors. - - if(arr[6] != 0x5C) -80032b10: 3c028007 lui v0,0x8007 -80032b14: 24428bec addiu v0,v0,-29716 -80032b18: 90430006 lbu v1,6(v0) -80032b1c: 2402005c li v0,92 -80032b20: 10620004 beq v1,v0,80032b34 -80032b24: 00000000 nop - { - dprintf("Error when writing from Memory Card!\n"); - dprintf("BAD ACK1! Expected 0x5C, got %d\n",arr[6]); - return '1'; -80032b28: 24020031 li v0,49 -80032b2c: 10000025 b 80032bc4 -80032b30: 00000000 nop - } - - if(arr[7] != 0x5D) -80032b34: 3c028007 lui v0,0x8007 -80032b38: 24428bec addiu v0,v0,-29716 -80032b3c: 90430007 lbu v1,7(v0) -80032b40: 2402005d li v0,93 -80032b44: 10620004 beq v1,v0,80032b58 -80032b48: 00000000 nop - { - dprintf("Error when writing from Memory Card!\n"); - dprintf("BAD ACK2! Expected 0x5D, got %d\n",arr[7]); - return '2'; -80032b4c: 24020032 li v0,50 -80032b50: 1000001c b 80032bc4 -80032b54: 00000000 nop - } - - if(arr[8] != card_cmd[4]) -80032b58: 3c028007 lui v0,0x8007 -80032b5c: 24428bec addiu v0,v0,-29716 -80032b60: 90430008 lbu v1,8(v0) -80032b64: 3c028007 lui v0,0x8007 -80032b68: 24428b60 addiu v0,v0,-29856 -80032b6c: 90420004 lbu v0,4(v0) -80032b70: 00000000 nop -80032b74: 10620004 beq v1,v0,80032b88 -80032b78: 00000000 nop - { - dprintf("Error when writing from Memory Card!\n"); - dprintf("BAD MSB sector! Expected %d, got %d\n",card_cmd[4],arr[8]); - return 'M'; -80032b7c: 2402004d li v0,77 -80032b80: 10000010 b 80032bc4 -80032b84: 00000000 nop - } - - if(arr[9] != card_cmd[5]) -80032b88: 3c028007 lui v0,0x8007 -80032b8c: 24428bec addiu v0,v0,-29716 -80032b90: 90430009 lbu v1,9(v0) -80032b94: 3c028007 lui v0,0x8007 -80032b98: 24428b60 addiu v0,v0,-29856 -80032b9c: 90420005 lbu v0,5(v0) -80032ba0: 00000000 nop -80032ba4: 10620004 beq v1,v0,80032bb8 -80032ba8: 00000000 nop - { - dprintf("Error when writing from Memory Card!\n"); - dprintf("BAD LSB sector! Expected %d, got %d\n",card_cmd[5],arr[9]); - return 'L'; -80032bac: 2402004c li v0,76 -80032bb0: 10000004 b 80032bc4 -80032bb4: 00000000 nop - } - - /*Return RW status*/ - return arr[139]; -80032bb8: 3c028007 lui v0,0x8007 -80032bbc: 24428bec addiu v0,v0,-29716 -80032bc0: 9042008b lbu v0,139(v0) -} -80032bc4: 03c0e821 move sp,s8 -80032bc8: 8fbf0014 lw ra,20(sp) -80032bcc: 8fbe0010 lw s8,16(sp) -80032bd0: 27bd0018 addiu sp,sp,24 -80032bd4: 03e00008 jr ra -80032bd8: 00000000 nop - -80032bdc : - * @return - * - */ - -unsigned char McWriteSector(int card_slot, int sector, unsigned char *buffer) -{ -80032bdc: 27bdffe0 addiu sp,sp,-32 -80032be0: afbf001c sw ra,28(sp) -80032be4: afbe0018 sw s8,24(sp) -80032be8: 03a0f021 move s8,sp -80032bec: afc40020 sw a0,32(s8) -80032bf0: afc50024 sw a1,36(s8) -80032bf4: afc60028 sw a2,40(s8) - int i; - - memset(&card_cmd[0], 0, 140); -80032bf8: 2406008c li a2,140 -80032bfc: 00002821 move a1,zero -80032c00: 3c028007 lui v0,0x8007 -80032c04: 24448b60 addiu a0,v0,-29856 -80032c08: 0c00d7ab jal 80035eac -80032c0c: 00000000 nop - - card_cmd[0] = MEMCARD_ACCESS_CMD; /*MC access*/ -80032c10: 3c028007 lui v0,0x8007 -80032c14: 2403ff81 li v1,-127 -80032c18: a0438b60 sb v1,-29856(v0) - card_cmd[1] = MEMCARD_WRITE_CMD; /*Write command*/ -80032c1c: 3c028007 lui v0,0x8007 -80032c20: 24428b60 addiu v0,v0,-29856 -80032c24: 24030057 li v1,87 -80032c28: a0430001 sb v1,1(v0) - - /*Copy frame number to command*/ - card_cmd[4] = sector >> 8; /*Frame MSB*/ -80032c2c: 8fc20024 lw v0,36(s8) -80032c30: 00000000 nop -80032c34: 00021203 sra v0,v0,0x8 -80032c38: 304300ff andi v1,v0,0xff -80032c3c: 3c028007 lui v0,0x8007 -80032c40: 24428b60 addiu v0,v0,-29856 -80032c44: a0430004 sb v1,4(v0) - card_cmd[5] = sector & 0xFF; /*Frame LSB*/ -80032c48: 8fc20024 lw v0,36(s8) -80032c4c: 00000000 nop -80032c50: 304300ff andi v1,v0,0xff -80032c54: 3c028007 lui v0,0x8007 -80032c58: 24428b60 addiu v0,v0,-29856 -80032c5c: a0430005 sb v1,5(v0) - - memcpy(&card_cmd[6], buffer, 128); -80032c60: 24060080 li a2,128 -80032c64: 8fc50028 lw a1,40(s8) -80032c68: 3c028007 lui v0,0x8007 -80032c6c: 24448b66 addiu a0,v0,-29850 -80032c70: 0c00d75e jal 80035d78 -80032c74: 00000000 nop - - /* Compute checksum */ - for(i = 4, card_cmd[134] = 0; i < 134; i++) -80032c78: 24020004 li v0,4 -80032c7c: afc20010 sw v0,16(s8) -80032c80: 3c028007 lui v0,0x8007 -80032c84: 24428b60 addiu v0,v0,-29856 -80032c88: a0400086 sb zero,134(v0) -80032c8c: 10000014 b 80032ce0 -80032c90: 00000000 nop - card_cmd[134] ^= card_cmd[i]; -80032c94: 3c028007 lui v0,0x8007 -80032c98: 24428b60 addiu v0,v0,-29856 -80032c9c: 90430086 lbu v1,134(v0) -80032ca0: 3c028007 lui v0,0x8007 -80032ca4: 24448b60 addiu a0,v0,-29856 -80032ca8: 8fc20010 lw v0,16(s8) -80032cac: 00000000 nop -80032cb0: 00821021 addu v0,a0,v0 -80032cb4: 90420000 lbu v0,0(v0) -80032cb8: 00000000 nop -80032cbc: 00621026 xor v0,v1,v0 -80032cc0: 304300ff andi v1,v0,0xff -80032cc4: 3c028007 lui v0,0x8007 -80032cc8: 24428b60 addiu v0,v0,-29856 -80032ccc: a0430086 sb v1,134(v0) - card_cmd[5] = sector & 0xFF; /*Frame LSB*/ - - memcpy(&card_cmd[6], buffer, 128); - - /* Compute checksum */ - for(i = 4, card_cmd[134] = 0; i < 134; i++) -80032cd0: 8fc20010 lw v0,16(s8) -80032cd4: 00000000 nop -80032cd8: 24420001 addiu v0,v0,1 -80032cdc: afc20010 sw v0,16(s8) -80032ce0: 8fc20010 lw v0,16(s8) -80032ce4: 00000000 nop -80032ce8: 28420086 slti v0,v0,134 -80032cec: 1440ffe9 bnez v0,80032c94 -80032cf0: 00000000 nop - card_cmd[134] ^= card_cmd[i]; - - memset(arr,0,140); -80032cf4: 2406008c li a2,140 -80032cf8: 00002821 move a1,zero -80032cfc: 3c028007 lui v0,0x8007 -80032d00: 24448bec addiu a0,v0,-29716 -80032d04: 0c00d7ab jal 80035eac -80032d08: 00000000 nop - QueryPAD(card_slot, card_cmd, arr, sizeof(card_cmd)); -80032d0c: 2407008c li a3,140 -80032d10: 3c028007 lui v0,0x8007 -80032d14: 24468bec addiu a2,v0,-29716 -80032d18: 3c028007 lui v0,0x8007 -80032d1c: 24458b60 addiu a1,v0,-29856 -80032d20: 8fc40020 lw a0,32(s8) -80032d24: 0c00c92c jal 800324b0 -80032d28: 00000000 nop - - if(arr[135] != 0x5C) -80032d2c: 3c028007 lui v0,0x8007 -80032d30: 24428bec addiu v0,v0,-29716 -80032d34: 90430087 lbu v1,135(v0) -80032d38: 2402005c li v0,92 -80032d3c: 10620004 beq v1,v0,80032d50 -80032d40: 00000000 nop - dprintf("Error when writing from Memory Card!\n"); - dprintf("BAD ACK1! Expected 0x5C, got %d\n",arr[135]); - // Positions 6 and 7 belong to ACK's - // They always should be 0x5C and 0x5D, respectively - // On the other hand, positions 8 and 9 return MSB and LSB sectors. - return '1'; -80032d44: 24020031 li v0,49 -80032d48: 1000000d b 80032d80 -80032d4c: 00000000 nop - } - - if(arr[136] != 0x5D) -80032d50: 3c028007 lui v0,0x8007 -80032d54: 24428bec addiu v0,v0,-29716 -80032d58: 90430088 lbu v1,136(v0) -80032d5c: 2402005d li v0,93 -80032d60: 10620004 beq v1,v0,80032d74 -80032d64: 00000000 nop - { - dprintf("Error when writing from Memory Card!\n"); - dprintf("BAD ACK1! Expected 0x5C, got %d\n",arr[136]); - return '2'; -80032d68: 24020032 li v0,50 -80032d6c: 10000004 b 80032d80 -80032d70: 00000000 nop - dprintf("BAD LSB Sector! Expected %d, got %d\n",card_cmd[5],arr[5]); - return 0; - } */ - - /*Return RW status*/ - return arr[137]; -80032d74: 3c028007 lui v0,0x8007 -80032d78: 24428bec addiu v0,v0,-29716 -80032d7c: 90420089 lbu v0,137(v0) -} -80032d80: 03c0e821 move sp,s8 -80032d84: 8fbf001c lw ra,28(sp) -80032d88: 8fbe0018 lw s8,24(sp) -80032d8c: 27bd0020 addiu sp,sp,32 -80032d90: 03e00008 jr ra -80032d94: 00000000 nop - -80032d98 : - -MEMCARD_STATUS McGetStatus(int card_slot) -{ -80032d98: 27bdffe0 addiu sp,sp,-32 -80032d9c: afbf001c sw ra,28(sp) -80032da0: afbe0018 sw s8,24(sp) -80032da4: 03a0f021 move s8,sp -80032da8: afc40020 sw a0,32(s8) - unsigned int status = MEMCARD_STATUS_UNKNOWN; -80032dac: afc00010 sw zero,16(s8) - - memset(&card_cmd[0], 0, 140); -80032db0: 2406008c li a2,140 -80032db4: 00002821 move a1,zero -80032db8: 3c028007 lui v0,0x8007 -80032dbc: 24448b60 addiu a0,v0,-29856 -80032dc0: 0c00d7ab jal 80035eac -80032dc4: 00000000 nop - - card_cmd[0] = 0x81; /*MC access*/ -80032dc8: 3c028007 lui v0,0x8007 -80032dcc: 2403ff81 li v1,-127 -80032dd0: a0438b60 sb v1,-29856(v0) - card_cmd[1] = 0x52; /*Read command*/ -80032dd4: 3c028007 lui v0,0x8007 -80032dd8: 24428b60 addiu v0,v0,-29856 -80032ddc: 24030052 li v1,82 -80032de0: a0430001 sb v1,1(v0) - - /*Copy frame number to command*/ - card_cmd[4] = 0;//sector >> 8; /*Frame MSB*/ -80032de4: 3c028007 lui v0,0x8007 -80032de8: 24428b60 addiu v0,v0,-29856 -80032dec: a0400004 sb zero,4(v0) - card_cmd[5] = 0;//sector & 0xFF; /*Frame LSB*/ -80032df0: 3c028007 lui v0,0x8007 -80032df4: 24428b60 addiu v0,v0,-29856 -80032df8: a0400005 sb zero,5(v0) - - QueryPAD(card_slot, card_cmd, arr, sizeof(card_cmd)); -80032dfc: 2407008c li a3,140 -80032e00: 3c028007 lui v0,0x8007 -80032e04: 24468bec addiu a2,v0,-29716 -80032e08: 3c028007 lui v0,0x8007 -80032e0c: 24458b60 addiu a1,v0,-29856 -80032e10: 8fc40020 lw a0,32(s8) -80032e14: 0c00c92c jal 800324b0 -80032e18: 00000000 nop - - if(arr[2] == 0x5a && arr[3] == 0x5d) -80032e1c: 3c028007 lui v0,0x8007 -80032e20: 24428bec addiu v0,v0,-29716 -80032e24: 90430002 lbu v1,2(v0) -80032e28: 2402005a li v0,90 -80032e2c: 1462000b bne v1,v0,80032e5c -80032e30: 00000000 nop -80032e34: 3c028007 lui v0,0x8007 -80032e38: 24428bec addiu v0,v0,-29716 -80032e3c: 90430003 lbu v1,3(v0) -80032e40: 2402005d li v0,93 -80032e44: 14620005 bne v1,v0,80032e5c -80032e48: 00000000 nop - { - status |= MEMCARD_CONNECTED; -80032e4c: 8fc20010 lw v0,16(s8) -80032e50: 00000000 nop -80032e54: 34420001 ori v0,v0,0x1 -80032e58: afc20010 sw v0,16(s8) - } - - if(arr[6] == 'M' && arr[7] == 'C') -80032e5c: 3c028007 lui v0,0x8007 -80032e60: 24428bec addiu v0,v0,-29716 -80032e64: 90430006 lbu v1,6(v0) -80032e68: 2402004d li v0,77 -80032e6c: 1462000b bne v1,v0,80032e9c -80032e70: 00000000 nop -80032e74: 3c028007 lui v0,0x8007 -80032e78: 24428bec addiu v0,v0,-29716 -80032e7c: 90430007 lbu v1,7(v0) -80032e80: 24020043 li v0,67 -80032e84: 14620005 bne v1,v0,80032e9c -80032e88: 00000000 nop - { - status |= MEMCARD_FORMATTED; -80032e8c: 8fc20010 lw v0,16(s8) -80032e90: 00000000 nop -80032e94: 34420002 ori v0,v0,0x2 -80032e98: afc20010 sw v0,16(s8) - } - - return status; -80032e9c: 8fc20010 lw v0,16(s8) -} -80032ea0: 03c0e821 move sp,s8 -80032ea4: 8fbf001c lw ra,28(sp) -80032ea8: 8fbe0018 lw s8,24(sp) -80032eac: 27bd0020 addiu sp,sp,32 -80032eb0: 03e00008 jr ra -80032eb4: 00000000 nop - -80032eb8 : -#define DPCR *((unsigned int*)0x1f8010f0) - -static unsigned int ss_vag_addr; - -void SsVoiceVol(int voice, unsigned short left, unsigned short right) -{ -80032eb8: 27bdfff0 addiu sp,sp,-16 -80032ebc: afbe000c sw s8,12(sp) -80032ec0: 03a0f021 move s8,sp -80032ec4: afc40010 sw a0,16(s8) -80032ec8: 00a01821 move v1,a1 -80032ecc: 00c01021 move v0,a2 -80032ed0: a7c30014 sh v1,20(s8) -80032ed4: a7c20018 sh v0,24(s8) - unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice); -80032ed8: 8fc20010 lw v0,16(s8) -80032edc: 00000000 nop -80032ee0: 00021900 sll v1,v0,0x4 -80032ee4: 3c021f80 lui v0,0x1f80 -80032ee8: 34421c00 ori v0,v0,0x1c00 -80032eec: 00621021 addu v0,v1,v0 -80032ef0: afc20000 sw v0,0(s8) - - a[0] = left; -80032ef4: 8fc20000 lw v0,0(s8) -80032ef8: 97c30014 lhu v1,20(s8) -80032efc: 00000000 nop -80032f00: a4430000 sh v1,0(v0) - a[1] = right; -80032f04: 8fc20000 lw v0,0(s8) -80032f08: 00000000 nop -80032f0c: 24420002 addiu v0,v0,2 -80032f10: 97c30018 lhu v1,24(s8) -80032f14: 00000000 nop -80032f18: a4430000 sh v1,0(v0) -} -80032f1c: 00000000 nop -80032f20: 03c0e821 move sp,s8 -80032f24: 8fbe000c lw s8,12(sp) -80032f28: 27bd0010 addiu sp,sp,16 -80032f2c: 03e00008 jr ra -80032f30: 00000000 nop - -80032f34 : - -void SsVoicePitch(int voice, unsigned short pitch) -{ -80032f34: 27bdfff0 addiu sp,sp,-16 -80032f38: afbe000c sw s8,12(sp) -80032f3c: 03a0f021 move s8,sp -80032f40: afc40010 sw a0,16(s8) -80032f44: 00a01021 move v0,a1 -80032f48: a7c20014 sh v0,20(s8) - unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice); -80032f4c: 8fc20010 lw v0,16(s8) -80032f50: 00000000 nop -80032f54: 00021900 sll v1,v0,0x4 -80032f58: 3c021f80 lui v0,0x1f80 -80032f5c: 34421c00 ori v0,v0,0x1c00 -80032f60: 00621021 addu v0,v1,v0 -80032f64: afc20000 sw v0,0(s8) - - a[2] = pitch; -80032f68: 8fc20000 lw v0,0(s8) -80032f6c: 00000000 nop -80032f70: 24420004 addiu v0,v0,4 -80032f74: 97c30014 lhu v1,20(s8) -80032f78: 00000000 nop -80032f7c: a4430000 sh v1,0(v0) -} -80032f80: 00000000 nop -80032f84: 03c0e821 move sp,s8 -80032f88: 8fbe000c lw s8,12(sp) -80032f8c: 27bd0010 addiu sp,sp,16 -80032f90: 03e00008 jr ra -80032f94: 00000000 nop - -80032f98 : - -void SsVoiceStartAddr(int voice, unsigned int addr) -{ -80032f98: 27bdfff0 addiu sp,sp,-16 -80032f9c: afbe000c sw s8,12(sp) -80032fa0: 03a0f021 move s8,sp -80032fa4: afc40010 sw a0,16(s8) -80032fa8: afc50014 sw a1,20(s8) -// address given is real address, then it is divided by eight when written to the register -// example: SSVoiceStartAddr(0, 0x1008) , writes 0x201 on the register which means 0x1008 - - unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice); -80032fac: 8fc20010 lw v0,16(s8) -80032fb0: 00000000 nop -80032fb4: 00021900 sll v1,v0,0x4 -80032fb8: 3c021f80 lui v0,0x1f80 -80032fbc: 34421c00 ori v0,v0,0x1c00 -80032fc0: 00621021 addu v0,v1,v0 -80032fc4: afc20000 sw v0,0(s8) - - a[3] = (addr >> 3); -80032fc8: 8fc20000 lw v0,0(s8) -80032fcc: 00000000 nop -80032fd0: 24420006 addiu v0,v0,6 -80032fd4: 8fc30014 lw v1,20(s8) -80032fd8: 00000000 nop -80032fdc: 000318c2 srl v1,v1,0x3 -80032fe0: 3063ffff andi v1,v1,0xffff -80032fe4: a4430000 sh v1,0(v0) -} -80032fe8: 00000000 nop -80032fec: 03c0e821 move sp,s8 -80032ff0: 8fbe000c lw s8,12(sp) -80032ff4: 27bd0010 addiu sp,sp,16 -80032ff8: 03e00008 jr ra -80032ffc: 00000000 nop - -80033000 : - -void SsVoiceADSRRaw(int voice, unsigned short level, unsigned short rate) -{ -80033000: 27bdfff0 addiu sp,sp,-16 -80033004: afbe000c sw s8,12(sp) -80033008: 03a0f021 move s8,sp -8003300c: afc40010 sw a0,16(s8) -80033010: 00a01821 move v1,a1 -80033014: 00c01021 move v0,a2 -80033018: a7c30014 sh v1,20(s8) -8003301c: a7c20018 sh v0,24(s8) - unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice); -80033020: 8fc20010 lw v0,16(s8) -80033024: 00000000 nop -80033028: 00021900 sll v1,v0,0x4 -8003302c: 3c021f80 lui v0,0x1f80 -80033030: 34421c00 ori v0,v0,0x1c00 -80033034: 00621021 addu v0,v1,v0 -80033038: afc20000 sw v0,0(s8) - - a[4] = level; -8003303c: 8fc20000 lw v0,0(s8) -80033040: 00000000 nop -80033044: 24420008 addiu v0,v0,8 -80033048: 97c30014 lhu v1,20(s8) -8003304c: 00000000 nop -80033050: a4430000 sh v1,0(v0) - a[5] = rate; -80033054: 8fc20000 lw v0,0(s8) -80033058: 00000000 nop -8003305c: 2442000a addiu v0,v0,10 -80033060: 97c30018 lhu v1,24(s8) -80033064: 00000000 nop -80033068: a4430000 sh v1,0(v0) -} -8003306c: 00000000 nop -80033070: 03c0e821 move sp,s8 -80033074: 8fbe000c lw s8,12(sp) -80033078: 27bd0010 addiu sp,sp,16 -8003307c: 03e00008 jr ra -80033080: 00000000 nop - -80033084 : - -void SsVoiceRepeatAddr(int voice, unsigned int addr) -{ -80033084: 27bdfff0 addiu sp,sp,-16 -80033088: afbe000c sw s8,12(sp) -8003308c: 03a0f021 move s8,sp -80033090: afc40010 sw a0,16(s8) -80033094: afc50014 sw a1,20(s8) -// only valid after KeyOn -// the explanation for SSVoiceStartAddr() is valid for this function as well - - unsigned short *a = (unsigned short*)SPU_VOICE_BASE_ADDR(voice); -80033098: 8fc20010 lw v0,16(s8) -8003309c: 00000000 nop -800330a0: 00021900 sll v1,v0,0x4 -800330a4: 3c021f80 lui v0,0x1f80 -800330a8: 34421c00 ori v0,v0,0x1c00 -800330ac: 00621021 addu v0,v1,v0 -800330b0: afc20000 sw v0,0(s8) - - a[7] = (addr >> 3); -800330b4: 8fc20000 lw v0,0(s8) -800330b8: 00000000 nop -800330bc: 2442000e addiu v0,v0,14 -800330c0: 8fc30014 lw v1,20(s8) -800330c4: 00000000 nop -800330c8: 000318c2 srl v1,v1,0x3 -800330cc: 3063ffff andi v1,v1,0xffff -800330d0: a4430000 sh v1,0(v0) -} -800330d4: 00000000 nop -800330d8: 03c0e821 move sp,s8 -800330dc: 8fbe000c lw s8,12(sp) -800330e0: 27bd0010 addiu sp,sp,16 -800330e4: 03e00008 jr ra -800330e8: 00000000 nop - -800330ec : - -void SsKeyOn(int voice) -{ -800330ec: 27bdfff0 addiu sp,sp,-16 -800330f0: afbe000c sw s8,12(sp) -800330f4: 03a0f021 move s8,sp -800330f8: afc40010 sw a0,16(s8) - unsigned int i = 1 << voice; -800330fc: 24030001 li v1,1 -80033100: 8fc20010 lw v0,16(s8) -80033104: 00000000 nop -80033108: 00431004 sllv v0,v1,v0 -8003310c: afc20000 sw v0,0(s8) - - SPU_KEY_ON1 = i & 0xffff; -80033110: 3c021f80 lui v0,0x1f80 -80033114: 34421d88 ori v0,v0,0x1d88 -80033118: 8fc30000 lw v1,0(s8) -8003311c: 00000000 nop -80033120: 3063ffff andi v1,v1,0xffff -80033124: a4430000 sh v1,0(v0) - SPU_KEY_ON2 = i >> 16; -80033128: 3c021f80 lui v0,0x1f80 -8003312c: 34421d8a ori v0,v0,0x1d8a -80033130: 8fc30000 lw v1,0(s8) -80033134: 00000000 nop -80033138: 00031c02 srl v1,v1,0x10 -8003313c: 3063ffff andi v1,v1,0xffff -80033140: a4430000 sh v1,0(v0) - -/* while(SPU_KEY_ON1 != (i & 0xffff)); - while(SPU_KEY_ON2 != (i >> 16)); -*/ -} -80033144: 00000000 nop -80033148: 03c0e821 move sp,s8 -8003314c: 8fbe000c lw s8,12(sp) -80033150: 27bd0010 addiu sp,sp,16 -80033154: 03e00008 jr ra -80033158: 00000000 nop - -8003315c : - -void SsKeyOff(int voice) -{ -8003315c: 27bdfff0 addiu sp,sp,-16 -80033160: afbe000c sw s8,12(sp) -80033164: 03a0f021 move s8,sp -80033168: afc40010 sw a0,16(s8) - unsigned int i = 1 << voice; -8003316c: 24030001 li v1,1 -80033170: 8fc20010 lw v0,16(s8) -80033174: 00000000 nop -80033178: 00431004 sllv v0,v1,v0 -8003317c: afc20000 sw v0,0(s8) - - SPU_KEY_OFF1 = i & 0xffff; -80033180: 3c021f80 lui v0,0x1f80 -80033184: 34421d8c ori v0,v0,0x1d8c -80033188: 8fc30000 lw v1,0(s8) -8003318c: 00000000 nop -80033190: 3063ffff andi v1,v1,0xffff -80033194: a4430000 sh v1,0(v0) - SPU_KEY_OFF2 = i >> 16; -80033198: 3c021f80 lui v0,0x1f80 -8003319c: 34421d8e ori v0,v0,0x1d8e -800331a0: 8fc30000 lw v1,0(s8) -800331a4: 00000000 nop -800331a8: 00031c02 srl v1,v1,0x10 -800331ac: 3063ffff andi v1,v1,0xffff -800331b0: a4430000 sh v1,0(v0) -} -800331b4: 00000000 nop -800331b8: 03c0e821 move sp,s8 -800331bc: 8fbe000c lw s8,12(sp) -800331c0: 27bd0010 addiu sp,sp,16 -800331c4: 03e00008 jr ra -800331c8: 00000000 nop - -800331cc : - - - -void SsKeyOnMask(int mask) -{ -800331cc: 27bdfff8 addiu sp,sp,-8 -800331d0: afbe0004 sw s8,4(sp) -800331d4: 03a0f021 move s8,sp -800331d8: afc40008 sw a0,8(s8) - SPU_KEY_ON1 = mask & 0xffff; -800331dc: 3c021f80 lui v0,0x1f80 -800331e0: 34421d88 ori v0,v0,0x1d88 -800331e4: 8fc30008 lw v1,8(s8) -800331e8: 00000000 nop -800331ec: 3063ffff andi v1,v1,0xffff -800331f0: a4430000 sh v1,0(v0) - SPU_KEY_ON2 = mask >> 16; -800331f4: 3c021f80 lui v0,0x1f80 -800331f8: 34421d8a ori v0,v0,0x1d8a -800331fc: 8fc30008 lw v1,8(s8) -80033200: 00000000 nop -80033204: 00031c03 sra v1,v1,0x10 -80033208: 3063ffff andi v1,v1,0xffff -8003320c: a4430000 sh v1,0(v0) -} -80033210: 00000000 nop -80033214: 03c0e821 move sp,s8 -80033218: 8fbe0004 lw s8,4(sp) -8003321c: 27bd0008 addiu sp,sp,8 -80033220: 03e00008 jr ra -80033224: 00000000 nop - -80033228 : - -void SsKeyOffMask(int mask) -{ -80033228: 27bdfff8 addiu sp,sp,-8 -8003322c: afbe0004 sw s8,4(sp) -80033230: 03a0f021 move s8,sp -80033234: afc40008 sw a0,8(s8) - SPU_KEY_OFF1 = mask & 0xffff; -80033238: 3c021f80 lui v0,0x1f80 -8003323c: 34421d8c ori v0,v0,0x1d8c -80033240: 8fc30008 lw v1,8(s8) -80033244: 00000000 nop -80033248: 3063ffff andi v1,v1,0xffff -8003324c: a4430000 sh v1,0(v0) - SPU_KEY_OFF2 = mask >> 16; -80033250: 3c021f80 lui v0,0x1f80 -80033254: 34421d8e ori v0,v0,0x1d8e -80033258: 8fc30008 lw v1,8(s8) -8003325c: 00000000 nop -80033260: 00031c03 sra v1,v1,0x10 -80033264: 3063ffff andi v1,v1,0xffff -80033268: a4430000 sh v1,0(v0) -} -8003326c: 00000000 nop -80033270: 03c0e821 move sp,s8 -80033274: 8fbe0004 lw s8,4(sp) -80033278: 27bd0008 addiu sp,sp,8 -8003327c: 03e00008 jr ra -80033280: 00000000 nop - -80033284 : - -void SsWait() -{ -80033284: 27bdfff8 addiu sp,sp,-8 -80033288: afbe0004 sw s8,4(sp) -8003328c: 03a0f021 move s8,sp - while(SPU_STATUS2 & 0x7ff); -80033290: 00000000 nop -80033294: 3c021f80 lui v0,0x1f80 -80033298: 34421dae ori v0,v0,0x1dae -8003329c: 94420000 lhu v0,0(v0) -800332a0: 00000000 nop -800332a4: 304207ff andi v0,v0,0x7ff -800332a8: 1440fffa bnez v0,80033294 -800332ac: 00000000 nop -} -800332b0: 00000000 nop -800332b4: 03c0e821 move sp,s8 -800332b8: 8fbe0004 lw s8,4(sp) -800332bc: 27bd0008 addiu sp,sp,8 -800332c0: 03e00008 jr ra -800332c4: 00000000 nop - -800332c8 : - -void SsInit() -{ -800332c8: 27bdffe0 addiu sp,sp,-32 -800332cc: afbf001c sw ra,28(sp) -800332d0: afbe0018 sw s8,24(sp) -800332d4: 03a0f021 move s8,sp - int x; - - printf("Initializing SPU (Sound Synthesizer)...\n"); -800332d8: 3c028004 lui v0,0x8004 -800332dc: 2444fdac addiu a0,v0,-596 -800332e0: 0c00ed8f jal 8003b63c -800332e4: 00000000 nop - - DPCR |= 0xB0000; -800332e8: 3c021f80 lui v0,0x1f80 -800332ec: 344210f0 ori v0,v0,0x10f0 -800332f0: 3c031f80 lui v1,0x1f80 -800332f4: 346310f0 ori v1,v1,0x10f0 -800332f8: 8c640000 lw a0,0(v1) -800332fc: 3c03000b lui v1,0xb -80033300: 00831825 or v1,a0,v1 -80033304: ac430000 sw v1,0(v0) - - SPU_MVOL_L = 0x3fff; -80033308: 3c021f80 lui v0,0x1f80 -8003330c: 34421d80 ori v0,v0,0x1d80 -80033310: 24033fff li v1,16383 -80033314: a4430000 sh v1,0(v0) - SPU_MVOL_R = 0x3fff; -80033318: 3c021f80 lui v0,0x1f80 -8003331c: 34421d82 ori v0,v0,0x1d82 -80033320: 24033fff li v1,16383 -80033324: a4430000 sh v1,0(v0) - - SPU_CONTROL = 0x0; -80033328: 3c021f80 lui v0,0x1f80 -8003332c: 34421daa ori v0,v0,0x1daa -80033330: a4400000 sh zero,0(v0) - SsWait(); -80033334: 0c00cca1 jal 80033284 -80033338: 00000000 nop - - SPU_STATUS = 0x4; // Must be done, but not totally understood -8003333c: 3c021f80 lui v0,0x1f80 -80033340: 34421dac ori v0,v0,0x1dac -80033344: 24030004 li v1,4 -80033348: a4430000 sh v1,0(v0) - - while(SPU_STATUS2 & 0x7ff); -8003334c: 00000000 nop -80033350: 3c021f80 lui v0,0x1f80 -80033354: 34421dae ori v0,v0,0x1dae -80033358: 94420000 lhu v0,0(v0) -8003335c: 00000000 nop -80033360: 304207ff andi v0,v0,0x7ff -80033364: 1440fffa bnez v0,80033350 -80033368: 00000000 nop - - SPU_REVERB_L = 0x0; -8003336c: 3c021f80 lui v0,0x1f80 -80033370: 34421d84 ori v0,v0,0x1d84 -80033374: a4400000 sh zero,0(v0) - SPU_REVERB_R = 0x0; -80033378: 3c021f80 lui v0,0x1f80 -8003337c: 34421d86 ori v0,v0,0x1d86 -80033380: a4400000 sh zero,0(v0) - - // All keys off - - SPU_KEY_OFF1 = 0xFFFF; -80033384: 3c021f80 lui v0,0x1f80 -80033388: 34421d8c ori v0,v0,0x1d8c -8003338c: 2403ffff li v1,-1 -80033390: a4430000 sh v1,0(v0) - SPU_KEY_OFF2 = 0xFFFF; -80033394: 3c021f80 lui v0,0x1f80 -80033398: 34421d8e ori v0,v0,0x1d8e -8003339c: 2403ffff li v1,-1 -800333a0: a4430000 sh v1,0(v0) - - // Switch FM, reverb and noise off - SPU_KEY_FM_MODE1 = 0x0; -800333a4: 3c021f80 lui v0,0x1f80 -800333a8: 34421d90 ori v0,v0,0x1d90 -800333ac: a4400000 sh zero,0(v0) - SPU_KEY_FM_MODE2 = 0x0; -800333b0: 3c021f80 lui v0,0x1f80 -800333b4: 34421d92 ori v0,v0,0x1d92 -800333b8: a4400000 sh zero,0(v0) - SPU_KEY_NOISE_MODE1 = 0x0; -800333bc: 3c021f80 lui v0,0x1f80 -800333c0: 34421d94 ori v0,v0,0x1d94 -800333c4: a4400000 sh zero,0(v0) - SPU_KEY_NOISE_MODE2 = 0x0; -800333c8: 3c021f80 lui v0,0x1f80 -800333cc: 34421d96 ori v0,v0,0x1d96 -800333d0: a4400000 sh zero,0(v0) - SPU_KEY_REVERB_MODE1 = 0x0; -800333d4: 3c021f80 lui v0,0x1f80 -800333d8: 34421d98 ori v0,v0,0x1d98 -800333dc: a4400000 sh zero,0(v0) - SPU_KEY_REVERB_MODE2 = 0x0; -800333e0: 3c021f80 lui v0,0x1f80 -800333e4: 34421d9a ori v0,v0,0x1d9a -800333e8: a4400000 sh zero,0(v0) - - // set CD master volume to 0 (mute it) - SPU_CD_MVOL_L = 0x0; -800333ec: 3c021f80 lui v0,0x1f80 -800333f0: 34421db0 ori v0,v0,0x1db0 -800333f4: a4400000 sh zero,0(v0) - SPU_CD_MVOL_R = 0x0; -800333f8: 3c021f80 lui v0,0x1f80 -800333fc: 34421db2 ori v0,v0,0x1db2 -80033400: a4400000 sh zero,0(v0) - - // set external input volume to 0 (mute it) - SPU_EXT_VOL_L = 0x0; -80033404: 3c021f80 lui v0,0x1f80 -80033408: 34421db4 ori v0,v0,0x1db4 -8003340c: a4400000 sh zero,0(v0) - SPU_EXT_VOL_R = 0x0; -80033410: 3c021f80 lui v0,0x1f80 -80033414: 34421db6 ori v0,v0,0x1db6 -80033418: a4400000 sh zero,0(v0) - - // set volume of all voices to 0 and adsr to 0,0 - - for(x = 0; x < 24; x++) -8003341c: afc00010 sw zero,16(s8) -80033420: 1000000f b 80033460 -80033424: 00000000 nop - { - SsVoiceVol(x, 0, 0); -80033428: 00003021 move a2,zero -8003342c: 00002821 move a1,zero -80033430: 8fc40010 lw a0,16(s8) -80033434: 0c00cbae jal 80032eb8 -80033438: 00000000 nop - SsVoiceADSRRaw(x, 0, 0); -8003343c: 00003021 move a2,zero -80033440: 00002821 move a1,zero -80033444: 8fc40010 lw a0,16(s8) -80033448: 0c00cc00 jal 80033000 -8003344c: 00000000 nop - SPU_EXT_VOL_L = 0x0; - SPU_EXT_VOL_R = 0x0; - - // set volume of all voices to 0 and adsr to 0,0 - - for(x = 0; x < 24; x++) -80033450: 8fc20010 lw v0,16(s8) -80033454: 00000000 nop -80033458: 24420001 addiu v0,v0,1 -8003345c: afc20010 sw v0,16(s8) -80033460: 8fc20010 lw v0,16(s8) -80033464: 00000000 nop -80033468: 28420018 slti v0,v0,24 -8003346c: 1440ffee bnez v0,80033428 -80033470: 00000000 nop - { - SsVoiceVol(x, 0, 0); - SsVoiceADSRRaw(x, 0, 0); - } - - SsWait(); -80033474: 0c00cca1 jal 80033284 -80033478: 00000000 nop - - SPU_CONTROL = 0xC000; // SPU is on -8003347c: 3c021f80 lui v0,0x1f80 -80033480: 34421daa ori v0,v0,0x1daa -80033484: 2403c000 li v1,-16384 -80033488: a4430000 sh v1,0(v0) - SPU_REVERB_WORK_ADDR = 0xFFFE; // Reverb work address in SPU memory, 0x1fff * 8 = 0xFFF8 -8003348c: 3c021f80 lui v0,0x1f80 -80033490: 34421da2 ori v0,v0,0x1da2 -80033494: 2403fffe li v1,-2 -80033498: a4430000 sh v1,0(v0) - - ss_vag_addr = SPU_DATA_BASE_ADDR; -8003349c: 3c028007 lui v0,0x8007 -800334a0: 24031010 li v1,4112 -800334a4: ac431cec sw v1,7404(v0) - - printf("SPU/SS Initialized.\n"); -800334a8: 3c028004 lui v0,0x8004 -800334ac: 2444fdd8 addiu a0,v0,-552 -800334b0: 0c00ed8f jal 8003b63c -800334b4: 00000000 nop -} -800334b8: 00000000 nop -800334bc: 03c0e821 move sp,s8 -800334c0: 8fbf001c lw ra,28(sp) -800334c4: 8fbe0018 lw s8,24(sp) -800334c8: 27bd0020 addiu sp,sp,32 -800334cc: 03e00008 jr ra -800334d0: 00000000 nop - -800334d4 : -// This implementation of SsUpload() was contributed by Shendo -// It waits either for a period of time or for the status flags to be raised, whichever comes first. -// This makes it work also on ePSXe, which never raises the status flags. - -void SsUpload(void *addr, int size, int spu_addr) -{ -800334d4: 27bdfff0 addiu sp,sp,-16 -800334d8: afbe000c sw s8,12(sp) -800334dc: 03a0f021 move s8,sp -800334e0: afc40010 sw a0,16(s8) -800334e4: afc50014 sw a1,20(s8) -800334e8: afc60018 sw a2,24(s8) - unsigned short *ptr = addr; -800334ec: 8fc20010 lw v0,16(s8) -800334f0: 00000000 nop -800334f4: afc20000 sw v0,0(s8) - int i; - - while(size > 0) -800334f8: 10000082 b 80033704 -800334fc: 00000000 nop - { - SPU_STATUS = 4; // Sound RAM Data Transfer Control -80033500: 3c021f80 lui v0,0x1f80 -80033504: 34421dac ori v0,v0,0x1dac -80033508: 24030004 li v1,4 -8003350c: a4430000 sh v1,0(v0) - SPU_CONTROL = SPU_CONTROL & ~0x30; // SPUCNT.transfer_mode = 0 (STOP) -80033510: 3c021f80 lui v0,0x1f80 -80033514: 34421daa ori v0,v0,0x1daa -80033518: 3c031f80 lui v1,0x1f80 -8003351c: 34631daa ori v1,v1,0x1daa -80033520: 94640000 lhu a0,0(v1) -80033524: 2403ffcf li v1,-49 -80033528: 00831824 and v1,a0,v1 -8003352c: 3063ffff andi v1,v1,0xffff -80033530: a4430000 sh v1,0(v0) - - - for(i = 0; i < 100; i++) -80033534: afc00004 sw zero,4(s8) -80033538: 1000000e b 80033574 -8003353c: 00000000 nop - if(((SPU_STATUS2 >> 4) & 3) == 0)break; // wait until SPUSTAT.transfer is 0 (STOP) -80033540: 3c021f80 lui v0,0x1f80 -80033544: 34421dae ori v0,v0,0x1dae -80033548: 94420000 lhu v0,0(v0) -8003354c: 00000000 nop -80033550: 00021102 srl v0,v0,0x4 -80033554: 3042ffff andi v0,v0,0xffff -80033558: 30420003 andi v0,v0,0x3 -8003355c: 1040000c beqz v0,80033590 -80033560: 00000000 nop - { - SPU_STATUS = 4; // Sound RAM Data Transfer Control - SPU_CONTROL = SPU_CONTROL & ~0x30; // SPUCNT.transfer_mode = 0 (STOP) - - - for(i = 0; i < 100; i++) -80033564: 8fc20004 lw v0,4(s8) -80033568: 00000000 nop -8003356c: 24420001 addiu v0,v0,1 -80033570: afc20004 sw v0,4(s8) -80033574: 8fc20004 lw v0,4(s8) -80033578: 00000000 nop -8003357c: 28420064 slti v0,v0,100 -80033580: 1440ffef bnez v0,80033540 -80033584: 00000000 nop -80033588: 10000002 b 80033594 -8003358c: 00000000 nop - if(((SPU_STATUS2 >> 4) & 3) == 0)break; // wait until SPUSTAT.transfer is 0 (STOP) -80033590: 00000000 nop - - SPU_ADDR = spu_addr >> 3; -80033594: 3c021f80 lui v0,0x1f80 -80033598: 34421da6 ori v0,v0,0x1da6 -8003359c: 8fc30018 lw v1,24(s8) -800335a0: 00000000 nop -800335a4: 000318c3 sra v1,v1,0x3 -800335a8: 3063ffff andi v1,v1,0xffff -800335ac: a4430000 sh v1,0(v0) - - for(i = 0; i < 32; i++) -800335b0: afc00004 sw zero,4(s8) -800335b4: 10000010 b 800335f8 -800335b8: 00000000 nop - SPU_DATA = ptr[i]; -800335bc: 3c021f80 lui v0,0x1f80 -800335c0: 34421da8 ori v0,v0,0x1da8 -800335c4: 8fc30004 lw v1,4(s8) -800335c8: 00000000 nop -800335cc: 00031840 sll v1,v1,0x1 -800335d0: 8fc40000 lw a0,0(s8) -800335d4: 00000000 nop -800335d8: 00831821 addu v1,a0,v1 -800335dc: 94630000 lhu v1,0(v1) -800335e0: 00000000 nop -800335e4: a4430000 sh v1,0(v0) - for(i = 0; i < 100; i++) - if(((SPU_STATUS2 >> 4) & 3) == 0)break; // wait until SPUSTAT.transfer is 0 (STOP) - - SPU_ADDR = spu_addr >> 3; - - for(i = 0; i < 32; i++) -800335e8: 8fc20004 lw v0,4(s8) -800335ec: 00000000 nop -800335f0: 24420001 addiu v0,v0,1 -800335f4: afc20004 sw v0,4(s8) -800335f8: 8fc20004 lw v0,4(s8) -800335fc: 00000000 nop -80033600: 28420020 slti v0,v0,32 -80033604: 1440ffed bnez v0,800335bc -80033608: 00000000 nop - SPU_DATA = ptr[i]; - - SPU_CONTROL = (SPU_CONTROL & ~0x30) | 16; // SPUCNT.transfer_mode = 1 (MANUAL) -8003360c: 3c021f80 lui v0,0x1f80 -80033610: 34421daa ori v0,v0,0x1daa -80033614: 3c031f80 lui v1,0x1f80 -80033618: 34631daa ori v1,v1,0x1daa -8003361c: 94630000 lhu v1,0(v1) -80033620: 00000000 nop -80033624: 00032400 sll a0,v1,0x10 -80033628: 00042403 sra a0,a0,0x10 -8003362c: 2403ffcf li v1,-49 -80033630: 00831824 and v1,a0,v1 -80033634: 00031c00 sll v1,v1,0x10 -80033638: 00031c03 sra v1,v1,0x10 -8003363c: 34630010 ori v1,v1,0x10 -80033640: 00031c00 sll v1,v1,0x10 -80033644: 00031c03 sra v1,v1,0x10 -80033648: 3063ffff andi v1,v1,0xffff -8003364c: a4430000 sh v1,0(v0) - - for(i = 0; i < 100; i++) -80033650: afc00004 sw zero,4(s8) -80033654: 1000000f b 80033694 -80033658: 00000000 nop - if(((SPU_STATUS2 >> 4) & 3) == 1)break; // wait until SPUSTAT.transfer is 1 (MANUAL) -8003365c: 3c021f80 lui v0,0x1f80 -80033660: 34421dae ori v0,v0,0x1dae -80033664: 94420000 lhu v0,0(v0) -80033668: 00000000 nop -8003366c: 00021102 srl v0,v0,0x4 -80033670: 3042ffff andi v0,v0,0xffff -80033674: 30430003 andi v1,v0,0x3 -80033678: 24020001 li v0,1 -8003367c: 1062000c beq v1,v0,800336b0 -80033680: 00000000 nop - for(i = 0; i < 32; i++) - SPU_DATA = ptr[i]; - - SPU_CONTROL = (SPU_CONTROL & ~0x30) | 16; // SPUCNT.transfer_mode = 1 (MANUAL) - - for(i = 0; i < 100; i++) -80033684: 8fc20004 lw v0,4(s8) -80033688: 00000000 nop -8003368c: 24420001 addiu v0,v0,1 -80033690: afc20004 sw v0,4(s8) -80033694: 8fc20004 lw v0,4(s8) -80033698: 00000000 nop -8003369c: 28420064 slti v0,v0,100 -800336a0: 1440ffee bnez v0,8003365c -800336a4: 00000000 nop -800336a8: 10000002 b 800336b4 -800336ac: 00000000 nop - ... - if(((SPU_STATUS2 >> 4) & 3) == 1)break; // wait until SPUSTAT.transfer is 1 (MANUAL) - - while(SPU_STATUS2 & 0x400); // wait for transfer busy bit to be cleared -800336b8: 3c021f80 lui v0,0x1f80 -800336bc: 34421dae ori v0,v0,0x1dae -800336c0: 94420000 lhu v0,0(v0) -800336c4: 00000000 nop -800336c8: 30420400 andi v0,v0,0x400 -800336cc: 1440fffa bnez v0,800336b8 -800336d0: 00000000 nop - - spu_addr += 64; -800336d4: 8fc20018 lw v0,24(s8) -800336d8: 00000000 nop -800336dc: 24420040 addiu v0,v0,64 -800336e0: afc20018 sw v0,24(s8) - ptr += 32; -800336e4: 8fc20000 lw v0,0(s8) -800336e8: 00000000 nop -800336ec: 24420040 addiu v0,v0,64 -800336f0: afc20000 sw v0,0(s8) - size-=64; -800336f4: 8fc20014 lw v0,20(s8) -800336f8: 00000000 nop -800336fc: 2442ffc0 addiu v0,v0,-64 -80033700: afc20014 sw v0,20(s8) -void SsUpload(void *addr, int size, int spu_addr) -{ - unsigned short *ptr = addr; - int i; - - while(size > 0) -80033704: 8fc20014 lw v0,20(s8) -80033708: 00000000 nop -8003370c: 1c40ff7c bgtz v0,80033500 -80033710: 00000000 nop - - spu_addr += 64; - ptr += 32; - size-=64; - } -} -80033714: 00000000 nop -80033718: 03c0e821 move sp,s8 -8003371c: 8fbe000c lw s8,12(sp) -80033720: 27bd0010 addiu sp,sp,16 -80033724: 03e00008 jr ra -80033728: 00000000 nop - -8003372c : - -unsigned short SsFreqToPitch(int hz) -{ -8003372c: 27bdfff8 addiu sp,sp,-8 -80033730: afbe0004 sw s8,4(sp) -80033734: 03a0f021 move s8,sp -80033738: afc40008 sw a0,8(s8) -// Converts a normal samples per second frequency value in Hz -// in a pitch value - -// i.e. 44100 -> 0x1000, 22050 -> 0x800 - - return (hz << 12) / 44100; -8003373c: 8fc20008 lw v0,8(s8) -80033740: 00000000 nop -80033744: 00021b00 sll v1,v0,0xc -80033748: 3402ac44 li v0,0xac44 -8003374c: 14400002 bnez v0,80033758 -80033750: 0062001a div zero,v1,v0 -80033754: 0007000d break 0x7 -80033758: 00001010 mfhi v0 -8003375c: 00001012 mflo v0 -80033760: 3042ffff andi v0,v0,0xffff -} -80033764: 03c0e821 move sp,s8 -80033768: 8fbe0004 lw s8,4(sp) -8003376c: 27bd0008 addiu sp,sp,8 -80033770: 03e00008 jr ra -80033774: 00000000 nop - -80033778 : - -int SsReadVag(SsVag *vag, void *data) -{ -80033778: 27bdffe0 addiu sp,sp,-32 -8003377c: afbf001c sw ra,28(sp) -80033780: afbe0018 sw s8,24(sp) -80033784: 03a0f021 move s8,sp -80033788: afc40020 sw a0,32(s8) -8003378c: afc50024 sw a1,36(s8) - unsigned char *i = data; -80033790: 8fc20024 lw v0,36(s8) -80033794: 00000000 nop -80033798: afc20010 sw v0,16(s8) - - if(strncmp(data, "VAGp", 4) != 0) -8003379c: 24060004 li a2,4 -800337a0: 3c028004 lui v0,0x8004 -800337a4: 2445fdf0 addiu a1,v0,-528 -800337a8: 8fc40024 lw a0,36(s8) -800337ac: 0c00d9dd jal 80036774 -800337b0: 00000000 nop -800337b4: 10400004 beqz v0,800337c8 -800337b8: 00000000 nop - return 0; -800337bc: 00001021 move v0,zero -800337c0: 1000006d b 80033978 -800337c4: 00000000 nop - - vag->version = (i[4]<<24)|(i[5]<<16)|(i[6]<<8)|i[7]; -800337c8: 8fc20010 lw v0,16(s8) -800337cc: 00000000 nop -800337d0: 24420004 addiu v0,v0,4 -800337d4: 90420000 lbu v0,0(v0) -800337d8: 00000000 nop -800337dc: 00021e00 sll v1,v0,0x18 -800337e0: 8fc20010 lw v0,16(s8) -800337e4: 00000000 nop -800337e8: 24420005 addiu v0,v0,5 -800337ec: 90420000 lbu v0,0(v0) -800337f0: 00000000 nop -800337f4: 00021400 sll v0,v0,0x10 -800337f8: 00621825 or v1,v1,v0 -800337fc: 8fc20010 lw v0,16(s8) -80033800: 00000000 nop -80033804: 24420006 addiu v0,v0,6 -80033808: 90420000 lbu v0,0(v0) -8003380c: 00000000 nop -80033810: 00021200 sll v0,v0,0x8 -80033814: 00621025 or v0,v1,v0 -80033818: 8fc30010 lw v1,16(s8) -8003381c: 00000000 nop -80033820: 24630007 addiu v1,v1,7 -80033824: 90630000 lbu v1,0(v1) -80033828: 00000000 nop -8003382c: 00431025 or v0,v0,v1 -80033830: 00401821 move v1,v0 -80033834: 8fc20020 lw v0,32(s8) -80033838: 00000000 nop -8003383c: ac430000 sw v1,0(v0) - vag->data_size = (i[12]<<24)|(i[13]<<16)|(i[14]<<8)|i[15]; -80033840: 8fc20010 lw v0,16(s8) -80033844: 00000000 nop -80033848: 2442000c addiu v0,v0,12 -8003384c: 90420000 lbu v0,0(v0) -80033850: 00000000 nop -80033854: 00021e00 sll v1,v0,0x18 -80033858: 8fc20010 lw v0,16(s8) -8003385c: 00000000 nop -80033860: 2442000d addiu v0,v0,13 -80033864: 90420000 lbu v0,0(v0) -80033868: 00000000 nop -8003386c: 00021400 sll v0,v0,0x10 -80033870: 00621825 or v1,v1,v0 -80033874: 8fc20010 lw v0,16(s8) -80033878: 00000000 nop -8003387c: 2442000e addiu v0,v0,14 -80033880: 90420000 lbu v0,0(v0) -80033884: 00000000 nop -80033888: 00021200 sll v0,v0,0x8 -8003388c: 00621025 or v0,v1,v0 -80033890: 8fc30010 lw v1,16(s8) -80033894: 00000000 nop -80033898: 2463000f addiu v1,v1,15 -8003389c: 90630000 lbu v1,0(v1) -800338a0: 00000000 nop -800338a4: 00431025 or v0,v0,v1 -800338a8: 00401821 move v1,v0 -800338ac: 8fc20020 lw v0,32(s8) -800338b0: 00000000 nop -800338b4: ac430004 sw v1,4(v0) - vag->sample_rate = (i[16]<<24)|(i[17]<<16)|(i[18]<<8)|i[19]; -800338b8: 8fc20010 lw v0,16(s8) -800338bc: 00000000 nop -800338c0: 24420010 addiu v0,v0,16 -800338c4: 90420000 lbu v0,0(v0) -800338c8: 00000000 nop -800338cc: 00021e00 sll v1,v0,0x18 -800338d0: 8fc20010 lw v0,16(s8) -800338d4: 00000000 nop -800338d8: 24420011 addiu v0,v0,17 -800338dc: 90420000 lbu v0,0(v0) -800338e0: 00000000 nop -800338e4: 00021400 sll v0,v0,0x10 -800338e8: 00621825 or v1,v1,v0 -800338ec: 8fc20010 lw v0,16(s8) -800338f0: 00000000 nop -800338f4: 24420012 addiu v0,v0,18 -800338f8: 90420000 lbu v0,0(v0) -800338fc: 00000000 nop -80033900: 00021200 sll v0,v0,0x8 -80033904: 00621025 or v0,v1,v0 -80033908: 8fc30010 lw v1,16(s8) -8003390c: 00000000 nop -80033910: 24630013 addiu v1,v1,19 -80033914: 90630000 lbu v1,0(v1) -80033918: 00000000 nop -8003391c: 00431025 or v0,v0,v1 -80033920: 00401821 move v1,v0 -80033924: 8fc20020 lw v0,32(s8) -80033928: 00000000 nop -8003392c: ac430008 sw v1,8(v0) - memcpy(vag->name, &i[32], 16); -80033930: 8fc20020 lw v0,32(s8) -80033934: 00000000 nop -80033938: 2443000c addiu v1,v0,12 -8003393c: 8fc20010 lw v0,16(s8) -80033940: 00000000 nop -80033944: 24420020 addiu v0,v0,32 -80033948: 24060010 li a2,16 -8003394c: 00402821 move a1,v0 -80033950: 00602021 move a0,v1 -80033954: 0c00d75e jal 80035d78 -80033958: 00000000 nop - vag->data = &i[48]; -8003395c: 8fc20010 lw v0,16(s8) -80033960: 00000000 nop -80033964: 24430030 addiu v1,v0,48 -80033968: 8fc20020 lw v0,32(s8) -8003396c: 00000000 nop -80033970: ac43001c sw v1,28(v0) - - return 1; -80033974: 24020001 li v0,1 -} -80033978: 03c0e821 move sp,s8 -8003397c: 8fbf001c lw ra,28(sp) -80033980: 8fbe0018 lw s8,24(sp) -80033984: 27bd0020 addiu sp,sp,32 -80033988: 03e00008 jr ra -8003398c: 00000000 nop - -80033990 : - -void SsUploadVagEx(SsVag *vag, int spu_addr) -{ -80033990: 27bdffe8 addiu sp,sp,-24 -80033994: afbf0014 sw ra,20(sp) -80033998: afbe0010 sw s8,16(sp) -8003399c: 03a0f021 move s8,sp -800339a0: afc40018 sw a0,24(s8) -800339a4: afc5001c sw a1,28(s8) - vag->spu_addr = spu_addr; -800339a8: 8fc3001c lw v1,28(s8) -800339ac: 8fc20018 lw v0,24(s8) -800339b0: 00000000 nop -800339b4: ac430020 sw v1,32(v0) - SsUpload(vag->data, vag->data_size, vag->spu_addr); -800339b8: 8fc20018 lw v0,24(s8) -800339bc: 00000000 nop -800339c0: 8c43001c lw v1,28(v0) -800339c4: 8fc20018 lw v0,24(s8) -800339c8: 00000000 nop -800339cc: 8c420004 lw v0,4(v0) -800339d0: 00000000 nop -800339d4: 00402021 move a0,v0 -800339d8: 8fc20018 lw v0,24(s8) -800339dc: 00000000 nop -800339e0: 8c420020 lw v0,32(v0) -800339e4: 00000000 nop -800339e8: 00403021 move a2,v0 -800339ec: 00802821 move a1,a0 -800339f0: 00602021 move a0,v1 -800339f4: 0c00cd35 jal 800334d4 -800339f8: 00000000 nop - //spu_addr += vag->data_size; -} -800339fc: 00000000 nop -80033a00: 03c0e821 move sp,s8 -80033a04: 8fbf0014 lw ra,20(sp) -80033a08: 8fbe0010 lw s8,16(sp) -80033a0c: 27bd0018 addiu sp,sp,24 -80033a10: 03e00008 jr ra -80033a14: 00000000 nop - -80033a18 : - -void SsUploadVag(SsVag *vag) -{ -80033a18: 27bdffe8 addiu sp,sp,-24 -80033a1c: afbf0014 sw ra,20(sp) -80033a20: afbe0010 sw s8,16(sp) -80033a24: 03a0f021 move s8,sp -80033a28: afc40018 sw a0,24(s8) - vag->spu_addr = ss_vag_addr; -80033a2c: 3c028007 lui v0,0x8007 -80033a30: 8c431cec lw v1,7404(v0) -80033a34: 8fc20018 lw v0,24(s8) -80033a38: 00000000 nop -80033a3c: ac430020 sw v1,32(v0) - SsUploadVagEx(vag, ss_vag_addr); -80033a40: 3c028007 lui v0,0x8007 -80033a44: 8c421cec lw v0,7404(v0) -80033a48: 00000000 nop -80033a4c: 00402821 move a1,v0 -80033a50: 8fc40018 lw a0,24(s8) -80033a54: 0c00ce64 jal 80033990 -80033a58: 00000000 nop - ss_vag_addr += vag->data_size; -80033a5c: 8fc20018 lw v0,24(s8) -80033a60: 00000000 nop -80033a64: 8c430004 lw v1,4(v0) -80033a68: 3c028007 lui v0,0x8007 -80033a6c: 8c421cec lw v0,7404(v0) -80033a70: 00000000 nop -80033a74: 00621821 addu v1,v1,v0 -80033a78: 3c028007 lui v0,0x8007 -80033a7c: ac431cec sw v1,7404(v0) -} -80033a80: 00000000 nop -80033a84: 03c0e821 move sp,s8 -80033a88: 8fbf0014 lw ra,20(sp) -80033a8c: 8fbe0010 lw s8,16(sp) -80033a90: 27bd0018 addiu sp,sp,24 -80033a94: 03e00008 jr ra -80033a98: 00000000 nop - -80033a9c : - -void SsPlayVag(SsVag *vag, unsigned char voice, unsigned short vl, - unsigned short vr) -{ -80033a9c: 27bdffe0 addiu sp,sp,-32 -80033aa0: afbf001c sw ra,28(sp) -80033aa4: afbe0018 sw s8,24(sp) -80033aa8: afb00014 sw s0,20(sp) -80033aac: 03a0f021 move s8,sp -80033ab0: afc40020 sw a0,32(s8) -80033ab4: 00a02021 move a0,a1 -80033ab8: 00c01821 move v1,a2 -80033abc: 00e01021 move v0,a3 -80033ac0: a3c40024 sb a0,36(s8) -80033ac4: a7c30028 sh v1,40(s8) -80033ac8: a7c2002c sh v0,44(s8) - SsVoicePitch(voice, SsFreqToPitch(vag->sample_rate)); -80033acc: 93d00024 lbu s0,36(s8) -80033ad0: 8fc20020 lw v0,32(s8) -80033ad4: 00000000 nop -80033ad8: 8c420008 lw v0,8(v0) -80033adc: 00000000 nop -80033ae0: 00402021 move a0,v0 -80033ae4: 0c00cdcb jal 8003372c -80033ae8: 00000000 nop -80033aec: 00402821 move a1,v0 -80033af0: 02002021 move a0,s0 -80033af4: 0c00cbcd jal 80032f34 -80033af8: 00000000 nop - SsVoiceStartAddr(voice, vag->spu_addr); -80033afc: 93c30024 lbu v1,36(s8) -80033b00: 8fc20020 lw v0,32(s8) -80033b04: 00000000 nop -80033b08: 8c420020 lw v0,32(v0) -80033b0c: 00000000 nop -80033b10: 00402821 move a1,v0 -80033b14: 00602021 move a0,v1 -80033b18: 0c00cbe6 jal 80032f98 -80033b1c: 00000000 nop - SsVoiceVol(voice, vl, vr); -80033b20: 93c20024 lbu v0,36(s8) -80033b24: 97c30028 lhu v1,40(s8) -80033b28: 97c4002c lhu a0,44(s8) -80033b2c: 00000000 nop -80033b30: 00803021 move a2,a0 -80033b34: 00602821 move a1,v1 -80033b38: 00402021 move a0,v0 -80033b3c: 0c00cbae jal 80032eb8 -80033b40: 00000000 nop - SsKeyOn(voice); -80033b44: 93c20024 lbu v0,36(s8) -80033b48: 00000000 nop -80033b4c: 00402021 move a0,v0 -80033b50: 0c00cc3b jal 800330ec -80033b54: 00000000 nop - - vag->cur_voice = voice; -80033b58: 83c30024 lb v1,36(s8) -80033b5c: 8fc20020 lw v0,32(s8) -80033b60: 00000000 nop -80033b64: a0430024 sb v1,36(v0) -} -80033b68: 00000000 nop -80033b6c: 03c0e821 move sp,s8 -80033b70: 8fbf001c lw ra,28(sp) -80033b74: 8fbe0018 lw s8,24(sp) -80033b78: 8fb00014 lw s0,20(sp) -80033b7c: 27bd0020 addiu sp,sp,32 -80033b80: 03e00008 jr ra -80033b84: 00000000 nop - -80033b88 : - -void SsStopVag(SsVag *vag) -{ -80033b88: 27bdffe8 addiu sp,sp,-24 -80033b8c: afbf0014 sw ra,20(sp) -80033b90: afbe0010 sw s8,16(sp) -80033b94: 03a0f021 move s8,sp -80033b98: afc40018 sw a0,24(s8) - SsKeyOff(vag->cur_voice); -80033b9c: 8fc20018 lw v0,24(s8) -80033ba0: 00000000 nop -80033ba4: 80420024 lb v0,36(v0) -80033ba8: 00000000 nop -80033bac: 00402021 move a0,v0 -80033bb0: 0c00cc57 jal 8003315c -80033bb4: 00000000 nop - vag->cur_voice = -1; -80033bb8: 8fc20018 lw v0,24(s8) -80033bbc: 2403ffff li v1,-1 -80033bc0: a0430024 sb v1,36(v0) -} -80033bc4: 00000000 nop -80033bc8: 03c0e821 move sp,s8 -80033bcc: 8fbf0014 lw ra,20(sp) -80033bd0: 8fbe0010 lw s8,16(sp) -80033bd4: 27bd0018 addiu sp,sp,24 -80033bd8: 03e00008 jr ra -80033bdc: 00000000 nop - -80033be0 : - -void SsResetVagAddr() -{ -80033be0: 27bdfff8 addiu sp,sp,-8 -80033be4: afbe0004 sw s8,4(sp) -80033be8: 03a0f021 move s8,sp - ss_vag_addr = SPU_DATA_BASE_ADDR; -80033bec: 3c028007 lui v0,0x8007 -80033bf0: 24031010 li v1,4112 -80033bf4: ac431cec sw v1,7404(v0) -} -80033bf8: 00000000 nop -80033bfc: 03c0e821 move sp,s8 -80033c00: 8fbe0004 lw s8,4(sp) -80033c04: 27bd0008 addiu sp,sp,8 -80033c08: 03e00008 jr ra -80033c0c: 00000000 nop - -80033c10 : - -void SsEnableCd() -{ -80033c10: 27bdffe8 addiu sp,sp,-24 -80033c14: afbf0014 sw ra,20(sp) -80033c18: afbe0010 sw s8,16(sp) -80033c1c: 03a0f021 move s8,sp - SPU_CONTROL |= 1; -80033c20: 3c021f80 lui v0,0x1f80 -80033c24: 34421daa ori v0,v0,0x1daa -80033c28: 3c031f80 lui v1,0x1f80 -80033c2c: 34631daa ori v1,v1,0x1daa -80033c30: 94630000 lhu v1,0(v1) -80033c34: 00000000 nop -80033c38: 34630001 ori v1,v1,0x1 -80033c3c: 3063ffff andi v1,v1,0xffff -80033c40: a4430000 sh v1,0(v0) - CdSendCommand(CdlDemute, 0); -80033c44: 00002821 move a1,zero -80033c48: 2404000c li a0,12 -80033c4c: 0c00aa46 jal 8002a918 -80033c50: 00000000 nop -} -80033c54: 00000000 nop -80033c58: 03c0e821 move sp,s8 -80033c5c: 8fbf0014 lw ra,20(sp) -80033c60: 8fbe0010 lw s8,16(sp) -80033c64: 27bd0018 addiu sp,sp,24 -80033c68: 03e00008 jr ra -80033c6c: 00000000 nop - -80033c70 : - -void SsEnableExt() -{ -80033c70: 27bdfff8 addiu sp,sp,-8 -80033c74: afbe0004 sw s8,4(sp) -80033c78: 03a0f021 move s8,sp - SPU_CONTROL |= 2; -80033c7c: 3c021f80 lui v0,0x1f80 -80033c80: 34421daa ori v0,v0,0x1daa -80033c84: 3c031f80 lui v1,0x1f80 -80033c88: 34631daa ori v1,v1,0x1daa -80033c8c: 94630000 lhu v1,0(v1) -80033c90: 00000000 nop -80033c94: 34630002 ori v1,v1,0x2 -80033c98: 3063ffff andi v1,v1,0xffff -80033c9c: a4430000 sh v1,0(v0) -} -80033ca0: 00000000 nop -80033ca4: 03c0e821 move sp,s8 -80033ca8: 8fbe0004 lw s8,4(sp) -80033cac: 27bd0008 addiu sp,sp,8 -80033cb0: 03e00008 jr ra -80033cb4: 00000000 nop - -80033cb8 : - -void SsCdVol(unsigned short left, unsigned short right) -{ -80033cb8: 27bdfff8 addiu sp,sp,-8 -80033cbc: afbe0004 sw s8,4(sp) -80033cc0: 03a0f021 move s8,sp -80033cc4: 00801821 move v1,a0 -80033cc8: 00a01021 move v0,a1 -80033ccc: a7c30008 sh v1,8(s8) -80033cd0: a7c2000c sh v0,12(s8) - SPU_CD_MVOL_L = left; -80033cd4: 3c021f80 lui v0,0x1f80 -80033cd8: 34421db0 ori v0,v0,0x1db0 -80033cdc: 97c30008 lhu v1,8(s8) -80033ce0: 00000000 nop -80033ce4: a4430000 sh v1,0(v0) - SPU_CD_MVOL_R = right; -80033ce8: 3c021f80 lui v0,0x1f80 -80033cec: 34421db2 ori v0,v0,0x1db2 -80033cf0: 97c3000c lhu v1,12(s8) -80033cf4: 00000000 nop -80033cf8: a4430000 sh v1,0(v0) -} -80033cfc: 00000000 nop -80033d00: 03c0e821 move sp,s8 -80033d04: 8fbe0004 lw s8,4(sp) -80033d08: 27bd0008 addiu sp,sp,8 -80033d0c: 03e00008 jr ra -80033d10: 00000000 nop - -80033d14 : -#include -#include -#include - -void SIOStart(int bitrate) -{ -80033d14: 27bdffe8 addiu sp,sp,-24 -80033d18: afbf0014 sw ra,20(sp) -80033d1c: afbe0010 sw s8,16(sp) -80033d20: 03a0f021 move s8,sp -80033d24: afc40018 sw a0,24(s8) - /*Set to 8N1 mode with desired bitrate*/ - SIOStartEx(bitrate, SIO_DATA_LEN_8, SIO_PARITY_NONE, SIO_STOP_BIT_1); -80033d28: 24070001 li a3,1 -80033d2c: 00003021 move a2,zero -80033d30: 24050003 li a1,3 -80033d34: 8fc40018 lw a0,24(s8) -80033d38: 0c00cf57 jal 80033d5c -80033d3c: 00000000 nop -} -80033d40: 00000000 nop -80033d44: 03c0e821 move sp,s8 -80033d48: 8fbf0014 lw ra,20(sp) -80033d4c: 8fbe0010 lw s8,16(sp) -80033d50: 27bd0018 addiu sp,sp,24 -80033d54: 03e00008 jr ra -80033d58: 00000000 nop - -80033d5c : - -void SIOStartEx(int bitrate, int datalength, int parity, int stopbit) -{ -80033d5c: 27bdfff8 addiu sp,sp,-8 -80033d60: afbe0004 sw s8,4(sp) -80033d64: 03a0f021 move s8,sp -80033d68: afc40008 sw a0,8(s8) -80033d6c: afc5000c sw a1,12(s8) -80033d70: afc60010 sw a2,16(s8) -80033d74: afc70014 sw a3,20(s8) - /*Set SIO_MODE register, bitrate reload factor set to MUL16 by default*/ - SIO_MODE = SIO_REL_MUL16 | (datalength << 2) | (parity << 4) | (stopbit << 6); -80033d78: 3c021f80 lui v0,0x1f80 -80033d7c: 34421058 ori v0,v0,0x1058 -80033d80: 8fc3000c lw v1,12(s8) -80033d84: 00000000 nop -80033d88: 00031880 sll v1,v1,0x2 -80033d8c: 00031c00 sll v1,v1,0x10 -80033d90: 00031c03 sra v1,v1,0x10 -80033d94: 34630002 ori v1,v1,0x2 -80033d98: 00032400 sll a0,v1,0x10 -80033d9c: 00042403 sra a0,a0,0x10 -80033da0: 8fc30010 lw v1,16(s8) -80033da4: 00000000 nop -80033da8: 00031900 sll v1,v1,0x4 -80033dac: 00031c00 sll v1,v1,0x10 -80033db0: 00031c03 sra v1,v1,0x10 -80033db4: 00831825 or v1,a0,v1 -80033db8: 00032400 sll a0,v1,0x10 -80033dbc: 00042403 sra a0,a0,0x10 -80033dc0: 8fc30014 lw v1,20(s8) -80033dc4: 00000000 nop -80033dc8: 00031980 sll v1,v1,0x6 -80033dcc: 00031c00 sll v1,v1,0x10 -80033dd0: 00031c03 sra v1,v1,0x10 -80033dd4: 00831825 or v1,a0,v1 -80033dd8: 00031c00 sll v1,v1,0x10 -80033ddc: 00031c03 sra v1,v1,0x10 -80033de0: 3063ffff andi v1,v1,0xffff -80033de4: a4430000 sh v1,0(v0) - - /*Reset SIO_CTRL register.*/ - SIO_CTRL = 0; -80033de8: 3c021f80 lui v0,0x1f80 -80033dec: 3442105a ori v0,v0,0x105a -80033df0: a4400000 sh zero,0(v0) - - /*Set TX and RT to enabled, no handshaking signals.*/ - SIO_CTRL = 1 | (1 << 2); -80033df4: 3c021f80 lui v0,0x1f80 -80033df8: 3442105a ori v0,v0,0x105a -80033dfc: 24030005 li v1,5 -80033e00: a4430000 sh v1,0(v0) - - /*Calculate bitrate reload value based on the given bitrate - * Reload = SystemClock (33 Mhz) / (Factor (MULI16) * bitrate)*/ - SIO_BPSV = 0x204CC00 / (16 * bitrate); -80033e04: 3c021f80 lui v0,0x1f80 -80033e08: 3442105e ori v0,v0,0x105e -80033e0c: 8fc30008 lw v1,8(s8) -80033e10: 00000000 nop -80033e14: 00031900 sll v1,v1,0x4 -80033e18: 3c040204 lui a0,0x204 -80033e1c: 3484cc00 ori a0,a0,0xcc00 -80033e20: 14600002 bnez v1,80033e2c -80033e24: 0083001a div zero,a0,v1 -80033e28: 0007000d break 0x7 -80033e2c: 00001810 mfhi v1 -80033e30: 00001812 mflo v1 -80033e34: 3063ffff andi v1,v1,0xffff -80033e38: a4430000 sh v1,0(v0) -} -80033e3c: 00000000 nop -80033e40: 03c0e821 move sp,s8 -80033e44: 8fbe0004 lw s8,4(sp) -80033e48: 27bd0008 addiu sp,sp,8 -80033e4c: 03e00008 jr ra -80033e50: 00000000 nop - -80033e54 : - -void SIOStop() -{ -80033e54: 27bdfff8 addiu sp,sp,-8 -80033e58: afbe0004 sw s8,4(sp) -80033e5c: 03a0f021 move s8,sp - /*Set all SIO related registers to zero*/ - SIO_MODE = 0; -80033e60: 3c021f80 lui v0,0x1f80 -80033e64: 34421058 ori v0,v0,0x1058 -80033e68: a4400000 sh zero,0(v0) - SIO_CTRL = 0; -80033e6c: 3c021f80 lui v0,0x1f80 -80033e70: 3442105a ori v0,v0,0x105a -80033e74: a4400000 sh zero,0(v0) - SIO_BPSV = 0; -80033e78: 3c021f80 lui v0,0x1f80 -80033e7c: 3442105e ori v0,v0,0x105e -80033e80: a4400000 sh zero,0(v0) -} -80033e84: 00000000 nop -80033e88: 03c0e821 move sp,s8 -80033e8c: 8fbe0004 lw s8,4(sp) -80033e90: 27bd0008 addiu sp,sp,8 -80033e94: 03e00008 jr ra -80033e98: 00000000 nop - -80033e9c : - -unsigned char SIOReadByte() -{ -80033e9c: 27bdfff8 addiu sp,sp,-8 -80033ea0: afbe0004 sw s8,4(sp) -80033ea4: 03a0f021 move s8,sp - return (unsigned char)SIO_TX_RX; -80033ea8: 3c021f80 lui v0,0x1f80 -80033eac: 34421050 ori v0,v0,0x1050 -80033eb0: 90420000 lbu v0,0(v0) -80033eb4: 00000000 nop -80033eb8: 304200ff andi v0,v0,0xff -} -80033ebc: 03c0e821 move sp,s8 -80033ec0: 8fbe0004 lw s8,4(sp) -80033ec4: 27bd0008 addiu sp,sp,8 -80033ec8: 03e00008 jr ra -80033ecc: 00000000 nop - -80033ed0 : - -void SIOSendByte(unsigned char data) -{ -80033ed0: 27bdfff8 addiu sp,sp,-8 -80033ed4: afbe0004 sw s8,4(sp) -80033ed8: 03a0f021 move s8,sp -80033edc: 00801021 move v0,a0 -80033ee0: a3c20008 sb v0,8(s8) - SIO_TX_RX = data; -80033ee4: 3c021f80 lui v0,0x1f80 -80033ee8: 34421050 ori v0,v0,0x1050 -80033eec: 93c30008 lbu v1,8(s8) -80033ef0: 00000000 nop -80033ef4: a0430000 sb v1,0(v0) -} -80033ef8: 00000000 nop -80033efc: 03c0e821 move sp,s8 -80033f00: 8fbe0004 lw s8,4(sp) -80033f04: 27bd0008 addiu sp,sp,8 -80033f08: 03e00008 jr ra -80033f0c: 00000000 nop - -80033f10 : - -int SIOCheckInBuffer() -{ -80033f10: 27bdfff8 addiu sp,sp,-8 -80033f14: afbe0004 sw s8,4(sp) -80033f18: 03a0f021 move s8,sp - /*Return status of RX FIFO*/ - return (SIO_STAT & 0x2)>0; -80033f1c: 3c021f80 lui v0,0x1f80 -80033f20: 34421054 ori v0,v0,0x1054 -80033f24: 94420000 lhu v0,0(v0) -80033f28: 00000000 nop -80033f2c: 3042ffff andi v0,v0,0xffff -80033f30: 30420002 andi v0,v0,0x2 -80033f34: 0002102a slt v0,zero,v0 -80033f38: 304200ff andi v0,v0,0xff -} -80033f3c: 03c0e821 move sp,s8 -80033f40: 8fbe0004 lw s8,4(sp) -80033f44: 27bd0008 addiu sp,sp,8 -80033f48: 03e00008 jr ra -80033f4c: 00000000 nop - -80033f50 : - -int SIOCheckOutBuffer() -{ -80033f50: 27bdfff8 addiu sp,sp,-8 -80033f54: afbe0004 sw s8,4(sp) -80033f58: 03a0f021 move s8,sp - /*Return status of TX Ready flag*/ - return (SIO_STAT & 0x4)>0; -80033f5c: 3c021f80 lui v0,0x1f80 -80033f60: 34421054 ori v0,v0,0x1054 -80033f64: 94420000 lhu v0,0(v0) -80033f68: 00000000 nop -80033f6c: 3042ffff andi v0,v0,0xffff -80033f70: 30420004 andi v0,v0,0x4 -80033f74: 0002102a slt v0,zero,v0 -80033f78: 304200ff andi v0,v0,0xff -} -80033f7c: 03c0e821 move sp,s8 -80033f80: 8fbe0004 lw s8,4(sp) -80033f84: 27bd0008 addiu sp,sp,8 -80033f88: 03e00008 jr ra -80033f8c: 00000000 nop - -80033f90 : - - -extern void SetCDROMHandler(void); - -void PSX_InitEx(unsigned int flags) -{ -80033f90: 27bdffe8 addiu sp,sp,-24 -80033f94: afbf0014 sw ra,20(sp) -80033f98: afbe0010 sw s8,16(sp) -80033f9c: 03a0f021 move s8,sp -80033fa0: afc40018 sw a0,24(s8) - if(flags & PSX_INIT_NOBIOS) -80033fa4: 8fc20018 lw v0,24(s8) -80033fa8: 00000000 nop -80033fac: 30420004 andi v0,v0,0x4 -80033fb0: 10400009 beqz v0,80033fd8 -80033fb4: 00000000 nop - { - printf("Entering No BIOS mode...\n"); -80033fb8: 3c028004 lui v0,0x8004 -80033fbc: 2444fe18 addiu a0,v0,-488 -80033fc0: 0c00ed8f jal 8003b63c -80033fc4: 00000000 nop - - __PSX_Init_NoBios(); -80033fc8: 0c00ef30 jal 8003bcc0 <__PSX_Init_NoBios> -80033fcc: 00000000 nop - goto _initex_end; -80033fd0: 10000033 b 800340a0 -80033fd4: 00000000 nop - } - - if(flags & PSX_INIT_SAVESTATE) -80033fd8: 8fc20018 lw v0,24(s8) -80033fdc: 00000000 nop -80033fe0: 30420002 andi v0,v0,0x2 -80033fe4: 10400012 beqz v0,80034030 -80033fe8: 00000000 nop - { -// Save BIOS state -// This simply copies the entire section of RAM used by the BIOS -// in a buffer. - EnterCriticalSection(); -80033fec: 0c00ee04 jal 8003b810 -80033ff0: 00000000 nop - psxBiosState = malloc(0x10000); -80033ff4: 3c040001 lui a0,0x1 -80033ff8: 0c00ac10 jal 8002b040 -80033ffc: 00000000 nop -80034000: 00401821 move v1,v0 -80034004: 3c028007 lui v0,0x8007 -80034008: ac431d04 sw v1,7428(v0) - memcpy(psxBiosState, (void*)0x80000000, 0x10000); -8003400c: 3c028007 lui v0,0x8007 -80034010: 8c421d04 lw v0,7428(v0) -80034014: 3c060001 lui a2,0x1 -80034018: 3c058000 lui a1,0x8000 -8003401c: 00402021 move a0,v0 -80034020: 0c00d75e jal 80035d78 -80034024: 00000000 nop - ExitCriticalSection(); -80034028: 0c00ee0a jal 8003b828 -8003402c: 00000000 nop - } - - /* Reinitialize ISO 9660 filesystem driver */ - - if(flags & PSX_INIT_CD) -80034030: 8fc20018 lw v0,24(s8) -80034034: 00000000 nop -80034038: 30420001 andi v0,v0,0x1 -8003403c: 1040000b beqz v0,8003406c -80034040: 00000000 nop - { - EnterCriticalSection(); -80034044: 0c00ee04 jal 8003b810 -80034048: 00000000 nop - _96_remove(); -8003404c: 0c00ee1c jal 8003b870 <_96_remove> -80034050: 00000000 nop - ExitCriticalSection(); -80034054: 0c00ee0a jal 8003b828 -80034058: 00000000 nop - - _96_init(); -8003405c: 0c00ee18 jal 8003b860 <_96_init> -80034060: 00000000 nop - - SetCDROMHandler(); -80034064: 0c00ee58 jal 8003b960 -80034068: 00000000 nop - /*This is needed, otherwise PSX will crash when VBlank handler is set*/ - /*InitCARD(1); - StartCARD(); - StopCARD();*/ - - if(flags & PSX_INIT_CD) -8003406c: 8fc20018 lw v0,24(s8) -80034070: 00000000 nop -80034074: 30420001 andi v0,v0,0x1 -80034078: 10400003 beqz v0,80034088 -8003407c: 00000000 nop - _internal_cdromlib_init(); -80034080: 0c00ab31 jal 8002acc4 <_internal_cdromlib_init> -80034084: 00000000 nop - - printf("PSXSDK testing version !!!\n"); -80034088: 3c028004 lui v0,0x8004 -8003408c: 2444fe34 addiu a0,v0,-460 -80034090: 0c00ed8f jal 8003b63c -80034094: 00000000 nop - - vblank_handler_set = 0; -80034098: 3c028007 lui v0,0x8007 -8003409c: ac401cf0 sw zero,7408(v0) -_initex_end: - psxSdkFlags = flags; -800340a0: 3c028007 lui v0,0x8007 -800340a4: 8fc30018 lw v1,24(s8) -800340a8: 00000000 nop -800340ac: ac431d00 sw v1,7424(v0) -} -800340b0: 00000000 nop -800340b4: 03c0e821 move sp,s8 -800340b8: 8fbf0014 lw ra,20(sp) -800340bc: 8fbe0010 lw s8,16(sp) -800340c0: 27bd0018 addiu sp,sp,24 -800340c4: 03e00008 jr ra -800340c8: 00000000 nop - -800340cc : - -void PSX_Init(void) -{ -800340cc: 27bdffe8 addiu sp,sp,-24 -800340d0: afbf0014 sw ra,20(sp) -800340d4: afbe0010 sw s8,16(sp) -800340d8: 03a0f021 move s8,sp - PSX_InitEx(PSX_INIT_CD); -800340dc: 24040001 li a0,1 -800340e0: 0c00cfe4 jal 80033f90 -800340e4: 00000000 nop -} -800340e8: 00000000 nop -800340ec: 03c0e821 move sp,s8 -800340f0: 8fbf0014 lw ra,20(sp) -800340f4: 8fbe0010 lw s8,16(sp) -800340f8: 27bd0018 addiu sp,sp,24 -800340fc: 03e00008 jr ra -80034100: 00000000 nop - -80034104 : - -void PSX_DeInit(void) -{ -80034104: 27bdffe8 addiu sp,sp,-24 -80034108: afbf0014 sw ra,20(sp) -8003410c: afbe0010 sw s8,16(sp) -80034110: 03a0f021 move s8,sp - if(psxSdkFlags & PSX_INIT_CD) -80034114: 3c028007 lui v0,0x8007 -80034118: 8c421d00 lw v0,7424(v0) -8003411c: 00000000 nop -80034120: 30420001 andi v0,v0,0x1 -80034124: 10400007 beqz v0,80034144 -80034128: 00000000 nop - { - EnterCriticalSection(); -8003412c: 0c00ee04 jal 8003b810 -80034130: 00000000 nop - _96_remove(); -80034134: 0c00ee1c jal 8003b870 <_96_remove> -80034138: 00000000 nop - ExitCriticalSection(); -8003413c: 0c00ee0a jal 8003b828 -80034140: 00000000 nop - } - - RemoveVBlankHandler(); -80034144: 0c00d3ad jal 80034eb4 -80034148: 00000000 nop - - if(psxSdkFlags & PSX_INIT_SAVESTATE)// This must always be the last to be called! -8003414c: 3c028007 lui v0,0x8007 -80034150: 8c421d00 lw v0,7424(v0) -80034154: 00000000 nop -80034158: 30420002 andi v0,v0,0x2 -8003415c: 10400003 beqz v0,8003416c -80034160: 00000000 nop - PSX_RestoreBiosState(); -80034164: 0c00d4a5 jal 80035294 -80034168: 00000000 nop -} -8003416c: 00000000 nop -80034170: 03c0e821 move sp,s8 -80034174: 8fbf0014 lw ra,20(sp) -80034178: 8fbe0010 lw s8,16(sp) -8003417c: 27bd0018 addiu sp,sp,24 -80034180: 03e00008 jr ra -80034184: 00000000 nop - -80034188 : - -void PSX_ReadPad(unsigned short *padbuf, unsigned short *padbuf2) -{ -80034188: 27bdffc0 addiu sp,sp,-64 -8003418c: afbf003c sw ra,60(sp) -80034190: afbe0038 sw s8,56(sp) -80034194: 03a0f021 move s8,sp -80034198: afc40040 sw a0,64(s8) -8003419c: afc50044 sw a1,68(s8) - int x; - unsigned char arr[PAD_READ_RAW_SIZE]; - unsigned short *padbuf_a[2]; - -// Now uses low level pad routines... - padbuf_a[0] = padbuf; -800341a0: 8fc20040 lw v0,64(s8) -800341a4: 00000000 nop -800341a8: afc2002c sw v0,44(s8) - padbuf_a[1] = padbuf2; -800341ac: 8fc20044 lw v0,68(s8) -800341b0: 00000000 nop -800341b4: afc20030 sw v0,48(s8) - - for(x = 0; x < 2; x++) -800341b8: afc00010 sw zero,16(s8) -800341bc: 1000003e b 800342b8 -800341c0: 00000000 nop - { - pad_read_raw(x, arr); -800341c4: 27c20014 addiu v0,s8,20 -800341c8: 00402821 move a1,v0 -800341cc: 8fc40010 lw a0,16(s8) -800341d0: 0c00c9e9 jal 800327a4 -800341d4: 00000000 nop - - if(arr[2] == 0x5a) -800341d8: 93c30016 lbu v1,22(s8) -800341dc: 2402005a li v0,90 -800341e0: 14620029 bne v1,v0,80034288 -800341e4: 00000000 nop - { - *padbuf_a[x] = (arr[3]<<8)|arr[4]; -800341e8: 8fc20010 lw v0,16(s8) -800341ec: 00000000 nop -800341f0: 00021080 sll v0,v0,0x2 -800341f4: 27c30010 addiu v1,s8,16 -800341f8: 00621021 addu v0,v1,v0 -800341fc: 8c42001c lw v0,28(v0) -80034200: 93c30017 lbu v1,23(s8) -80034204: 00000000 nop -80034208: 00031a00 sll v1,v1,0x8 -8003420c: 00032400 sll a0,v1,0x10 -80034210: 00042403 sra a0,a0,0x10 -80034214: 93c30018 lbu v1,24(s8) -80034218: 00000000 nop -8003421c: 00031c00 sll v1,v1,0x10 -80034220: 00031c03 sra v1,v1,0x10 -80034224: 00831825 or v1,a0,v1 -80034228: 00031c00 sll v1,v1,0x10 -8003422c: 00031c03 sra v1,v1,0x10 -80034230: 3063ffff andi v1,v1,0xffff -80034234: a4430000 sh v1,0(v0) - *padbuf_a[x] = ~*padbuf_a[x]; -80034238: 8fc20010 lw v0,16(s8) -8003423c: 00000000 nop -80034240: 00021080 sll v0,v0,0x2 -80034244: 27c30010 addiu v1,s8,16 -80034248: 00621021 addu v0,v1,v0 -8003424c: 8c43001c lw v1,28(v0) -80034250: 8fc20010 lw v0,16(s8) -80034254: 00000000 nop -80034258: 00021080 sll v0,v0,0x2 -8003425c: 27c40010 addiu a0,s8,16 -80034260: 00821021 addu v0,a0,v0 -80034264: 8c42001c lw v0,28(v0) -80034268: 00000000 nop -8003426c: 94420000 lhu v0,0(v0) -80034270: 00000000 nop -80034274: 00021027 nor v0,zero,v0 -80034278: 3042ffff andi v0,v0,0xffff -8003427c: a4620000 sh v0,0(v1) -80034280: 10000009 b 800342a8 -80034284: 00000000 nop - } - else - *padbuf_a[x] = 0; -80034288: 8fc20010 lw v0,16(s8) -8003428c: 00000000 nop -80034290: 00021080 sll v0,v0,0x2 -80034294: 27c30010 addiu v1,s8,16 -80034298: 00621021 addu v0,v1,v0 -8003429c: 8c42001c lw v0,28(v0) -800342a0: 00000000 nop -800342a4: a4400000 sh zero,0(v0) - -// Now uses low level pad routines... - padbuf_a[0] = padbuf; - padbuf_a[1] = padbuf2; - - for(x = 0; x < 2; x++) -800342a8: 8fc20010 lw v0,16(s8) -800342ac: 00000000 nop -800342b0: 24420001 addiu v0,v0,1 -800342b4: afc20010 sw v0,16(s8) -800342b8: 8fc20010 lw v0,16(s8) -800342bc: 00000000 nop -800342c0: 28420002 slti v0,v0,2 -800342c4: 1440ffbf bnez v0,800341c4 -800342c8: 00000000 nop - *padbuf_a[x] = ~*padbuf_a[x]; - } - else - *padbuf_a[x] = 0; - } -} -800342cc: 00000000 nop -800342d0: 03c0e821 move sp,s8 -800342d4: 8fbf003c lw ra,60(sp) -800342d8: 8fbe0038 lw s8,56(sp) -800342dc: 27bd0040 addiu sp,sp,64 -800342e0: 03e00008 jr ra -800342e4: 00000000 nop - -800342e8 : - -unsigned char psxsdkPadArr[PAD_READ_RAW_SIZE]; - -void PSX_PollPad_Fast(int pad_num, psx_pad_state *pad_state) -{ -800342e8: 27bdfff0 addiu sp,sp,-16 -800342ec: afbe000c sw s8,12(sp) -800342f0: 03a0f021 move s8,sp -800342f4: afc40010 sw a0,16(s8) -800342f8: afc50014 sw a1,20(s8) - pad_read_raw(pad_num, arr);*/ - - //Rely on pad_read_raw being called AFTER PSX_ReadPad(), - //so that pad_read_raw is only called once. - - unsigned char *arr = psxsdkPadArr; -800342fc: 3c028007 lui v0,0x8007 -80034300: 24421bd0 addiu v0,v0,7120 -80034304: afc20000 sw v0,0(s8) - - pad_state->status = arr[0]; -80034308: 8fc20000 lw v0,0(s8) -8003430c: 00000000 nop -80034310: 90430000 lbu v1,0(v0) -80034314: 8fc20014 lw v0,20(s8) -80034318: 00000000 nop -8003431c: a0430000 sb v1,0(v0) - pad_state->id = arr[1]; -80034320: 8fc20000 lw v0,0(s8) -80034324: 00000000 nop -80034328: 90430001 lbu v1,1(v0) -8003432c: 8fc20014 lw v0,20(s8) -80034330: 00000000 nop -80034334: a0430001 sb v1,1(v0) - - pad_state->buttons = (arr[3]<<8)|arr[4]; -80034338: 8fc20000 lw v0,0(s8) -8003433c: 00000000 nop -80034340: 24420003 addiu v0,v0,3 -80034344: 90420000 lbu v0,0(v0) -80034348: 00000000 nop -8003434c: 00021200 sll v0,v0,0x8 -80034350: 00021c00 sll v1,v0,0x10 -80034354: 00031c03 sra v1,v1,0x10 -80034358: 8fc20000 lw v0,0(s8) -8003435c: 00000000 nop -80034360: 24420004 addiu v0,v0,4 -80034364: 90420000 lbu v0,0(v0) -80034368: 00000000 nop -8003436c: 00021400 sll v0,v0,0x10 -80034370: 00021403 sra v0,v0,0x10 -80034374: 00621025 or v0,v1,v0 -80034378: 00021400 sll v0,v0,0x10 -8003437c: 00021403 sra v0,v0,0x10 -80034380: 3043ffff andi v1,v0,0xffff -80034384: 8fc20014 lw v0,20(s8) -80034388: 00000000 nop -8003438c: a4430004 sh v1,4(v0) - pad_state->buttons = ~pad_state->buttons; -80034390: 8fc20014 lw v0,20(s8) -80034394: 00000000 nop -80034398: 94420004 lhu v0,4(v0) -8003439c: 00000000 nop -800343a0: 00021027 nor v0,zero,v0 -800343a4: 3043ffff andi v1,v0,0xffff -800343a8: 8fc20014 lw v0,20(s8) -800343ac: 00000000 nop -800343b0: a4430004 sh v1,4(v0) - - //dprintf("Pad Status: 0x%.2X\n",pad_state->status); - - switch(pad_state->id) -800343b4: 8fc20014 lw v0,20(s8) -800343b8: 00000000 nop -800343bc: 90420001 lbu v0,1(v0) -800343c0: 24030041 li v1,65 -800343c4: 1043001f beq v0,v1,80034444 -800343c8: 00000000 nop -800343cc: 28430042 slti v1,v0,66 -800343d0: 1060000c beqz v1,80034404 -800343d4: 00000000 nop -800343d8: 24030023 li v1,35 -800343dc: 10430088 beq v0,v1,80034600 -800343e0: 00000000 nop -800343e4: 24030031 li v1,49 -800343e8: 104300a8 beq v0,v1,8003468c -800343ec: 00000000 nop -800343f0: 24030012 li v1,18 -800343f4: 104300aa beq v0,v1,800346a0 -800343f8: 00000000 nop -800343fc: 100000ad b 800346b4 -80034400: 00000000 nop -80034404: 24030073 li v1,115 -80034408: 10430048 beq v0,v1,8003452c -8003440c: 00000000 nop -80034410: 240300ff li v1,255 -80034414: 10430006 beq v0,v1,80034430 -80034418: 00000000 nop -8003441c: 24030053 li v1,83 -80034420: 1043000d beq v0,v1,80034458 -80034424: 00000000 nop -80034428: 100000a2 b 800346b4 -8003442c: 00000000 nop - { - case 0xFF: - pad_state->type = PADTYPE_NONE; -80034430: 8fc20014 lw v0,20(s8) -80034434: 00000000 nop -80034438: a0400002 sb zero,2(v0) - break; -8003443c: 100000a0 b 800346c0 -80034440: 00000000 nop - case 0x41: - pad_state->type = PADTYPE_NORMALPAD; -80034444: 8fc20014 lw v0,20(s8) -80034448: 24030001 li v1,1 -8003444c: a0430002 sb v1,2(v0) - break; -80034450: 1000009b b 800346c0 -80034454: 00000000 nop - case 0x53: - pad_state->type = PADTYPE_ANALOGJOY; -80034458: 8fc20014 lw v0,20(s8) -8003445c: 24030002 li v1,2 -80034460: a0430002 sb v1,2(v0) - pad_state->extra.analogJoy.x[0] = arr[5]-128; -80034464: 8fc20000 lw v0,0(s8) -80034468: 00000000 nop -8003446c: 24420005 addiu v0,v0,5 -80034470: 90420000 lbu v0,0(v0) -80034474: 00000000 nop -80034478: 2442ff80 addiu v0,v0,-128 -8003447c: 304200ff andi v0,v0,0xff -80034480: 00021e00 sll v1,v0,0x18 -80034484: 00031e03 sra v1,v1,0x18 -80034488: 8fc20014 lw v0,20(s8) -8003448c: 00000000 nop -80034490: a0430006 sb v1,6(v0) - pad_state->extra.analogJoy.y[0] = arr[6]-128; -80034494: 8fc20000 lw v0,0(s8) -80034498: 00000000 nop -8003449c: 24420006 addiu v0,v0,6 -800344a0: 90420000 lbu v0,0(v0) -800344a4: 00000000 nop -800344a8: 2442ff80 addiu v0,v0,-128 -800344ac: 304200ff andi v0,v0,0xff -800344b0: 00021e00 sll v1,v0,0x18 -800344b4: 00031e03 sra v1,v1,0x18 -800344b8: 8fc20014 lw v0,20(s8) -800344bc: 00000000 nop -800344c0: a0430008 sb v1,8(v0) - pad_state->extra.analogJoy.x[1] = arr[7]-128; -800344c4: 8fc20000 lw v0,0(s8) -800344c8: 00000000 nop -800344cc: 24420007 addiu v0,v0,7 -800344d0: 90420000 lbu v0,0(v0) -800344d4: 00000000 nop -800344d8: 2442ff80 addiu v0,v0,-128 -800344dc: 304200ff andi v0,v0,0xff -800344e0: 00021e00 sll v1,v0,0x18 -800344e4: 00031e03 sra v1,v1,0x18 -800344e8: 8fc20014 lw v0,20(s8) -800344ec: 00000000 nop -800344f0: a0430007 sb v1,7(v0) - pad_state->extra.analogJoy.y[1] = arr[8]-128; -800344f4: 8fc20000 lw v0,0(s8) -800344f8: 00000000 nop -800344fc: 24420008 addiu v0,v0,8 -80034500: 90420000 lbu v0,0(v0) -80034504: 00000000 nop -80034508: 2442ff80 addiu v0,v0,-128 -8003450c: 304200ff andi v0,v0,0xff -80034510: 00021e00 sll v1,v0,0x18 -80034514: 00031e03 sra v1,v1,0x18 -80034518: 8fc20014 lw v0,20(s8) -8003451c: 00000000 nop -80034520: a0430009 sb v1,9(v0) - break; -80034524: 10000066 b 800346c0 -80034528: 00000000 nop - case 0x73: - pad_state->type = PADTYPE_ANALOGPAD; -8003452c: 8fc20014 lw v0,20(s8) -80034530: 24030003 li v1,3 -80034534: a0430002 sb v1,2(v0) - pad_state->extra.analogPad.x[0] = arr[5]-128; -80034538: 8fc20000 lw v0,0(s8) -8003453c: 00000000 nop -80034540: 24420005 addiu v0,v0,5 -80034544: 90420000 lbu v0,0(v0) -80034548: 00000000 nop -8003454c: 2442ff80 addiu v0,v0,-128 -80034550: 304200ff andi v0,v0,0xff -80034554: 00021e00 sll v1,v0,0x18 -80034558: 00031e03 sra v1,v1,0x18 -8003455c: 8fc20014 lw v0,20(s8) -80034560: 00000000 nop -80034564: a0430006 sb v1,6(v0) - pad_state->extra.analogPad.y[0] = arr[6]-128; -80034568: 8fc20000 lw v0,0(s8) -8003456c: 00000000 nop -80034570: 24420006 addiu v0,v0,6 -80034574: 90420000 lbu v0,0(v0) -80034578: 00000000 nop -8003457c: 2442ff80 addiu v0,v0,-128 -80034580: 304200ff andi v0,v0,0xff -80034584: 00021e00 sll v1,v0,0x18 -80034588: 00031e03 sra v1,v1,0x18 -8003458c: 8fc20014 lw v0,20(s8) -80034590: 00000000 nop -80034594: a0430008 sb v1,8(v0) - pad_state->extra.analogPad.x[1] = arr[7]-128; -80034598: 8fc20000 lw v0,0(s8) -8003459c: 00000000 nop -800345a0: 24420007 addiu v0,v0,7 -800345a4: 90420000 lbu v0,0(v0) -800345a8: 00000000 nop -800345ac: 2442ff80 addiu v0,v0,-128 -800345b0: 304200ff andi v0,v0,0xff -800345b4: 00021e00 sll v1,v0,0x18 -800345b8: 00031e03 sra v1,v1,0x18 -800345bc: 8fc20014 lw v0,20(s8) -800345c0: 00000000 nop -800345c4: a0430007 sb v1,7(v0) - pad_state->extra.analogPad.y[1] = arr[8]-128; -800345c8: 8fc20000 lw v0,0(s8) -800345cc: 00000000 nop -800345d0: 24420008 addiu v0,v0,8 -800345d4: 90420000 lbu v0,0(v0) -800345d8: 00000000 nop -800345dc: 2442ff80 addiu v0,v0,-128 -800345e0: 304200ff andi v0,v0,0xff -800345e4: 00021e00 sll v1,v0,0x18 -800345e8: 00031e03 sra v1,v1,0x18 -800345ec: 8fc20014 lw v0,20(s8) -800345f0: 00000000 nop -800345f4: a0430009 sb v1,9(v0) - break; -800345f8: 10000031 b 800346c0 -800345fc: 00000000 nop - case 0x23: - pad_state->type = PADTYPE_NEGCON; -80034600: 8fc20014 lw v0,20(s8) -80034604: 24030004 li v1,4 -80034608: a0430002 sb v1,2(v0) - pad_state->extra.negCon.steering = arr[5]-128; -8003460c: 8fc20000 lw v0,0(s8) -80034610: 00000000 nop -80034614: 24420005 addiu v0,v0,5 -80034618: 90420000 lbu v0,0(v0) -8003461c: 00000000 nop -80034620: 2442ff80 addiu v0,v0,-128 -80034624: 304200ff andi v0,v0,0xff -80034628: 00021e00 sll v1,v0,0x18 -8003462c: 00031e03 sra v1,v1,0x18 -80034630: 8fc20014 lw v0,20(s8) -80034634: 00000000 nop -80034638: a0430006 sb v1,6(v0) - pad_state->extra.negCon.one = arr[6]; -8003463c: 8fc20000 lw v0,0(s8) -80034640: 00000000 nop -80034644: 90430006 lbu v1,6(v0) -80034648: 8fc20014 lw v0,20(s8) -8003464c: 00000000 nop -80034650: a0430007 sb v1,7(v0) - pad_state->extra.negCon.two = arr[7]; -80034654: 8fc20000 lw v0,0(s8) -80034658: 00000000 nop -8003465c: 90430007 lbu v1,7(v0) -80034660: 8fc20014 lw v0,20(s8) -80034664: 00000000 nop -80034668: a0430008 sb v1,8(v0) - pad_state->extra.negCon.shoulder = arr[8]; -8003466c: 8fc20000 lw v0,0(s8) -80034670: 00000000 nop -80034674: 90430008 lbu v1,8(v0) -80034678: 8fc20014 lw v0,20(s8) -8003467c: 00000000 nop -80034680: a0430009 sb v1,9(v0) - break; -80034684: 1000000e b 800346c0 -80034688: 00000000 nop - case 0x31: - pad_state->type = PADTYPE_KONAMIGUN; -8003468c: 8fc20014 lw v0,20(s8) -80034690: 24030005 li v1,5 -80034694: a0430002 sb v1,2(v0) - break; -80034698: 10000009 b 800346c0 -8003469c: 00000000 nop - case 0x12: - pad_state->type = PADTYPE_MOUSE; -800346a0: 8fc20014 lw v0,20(s8) -800346a4: 24030006 li v1,6 -800346a8: a0430002 sb v1,2(v0) - break; -800346ac: 10000004 b 800346c0 -800346b0: 00000000 nop - default: - pad_state->type = PADTYPE_UNKNOWN; -800346b4: 8fc20014 lw v0,20(s8) -800346b8: 24030007 li v1,7 -800346bc: a0430002 sb v1,2(v0) - } -} -800346c0: 00000000 nop -800346c4: 03c0e821 move sp,s8 -800346c8: 8fbe000c lw s8,12(sp) -800346cc: 27bd0010 addiu sp,sp,16 -800346d0: 03e00008 jr ra -800346d4: 00000000 nop - -800346d8 : - -void PSX_PollPad(int pad_num, psx_pad_state *pad_state) -{ -800346d8: 27bdffe0 addiu sp,sp,-32 -800346dc: afbf001c sw ra,28(sp) -800346e0: afbe0018 sw s8,24(sp) -800346e4: 03a0f021 move s8,sp -800346e8: afc40020 sw a0,32(s8) -800346ec: afc50024 sw a1,36(s8) - } - else - *padbuf_a[x] = 0; - }*/ - - unsigned char *arr = psxsdkPadArr; -800346f0: 3c028007 lui v0,0x8007 -800346f4: 24421bd0 addiu v0,v0,7120 -800346f8: afc20010 sw v0,16(s8) - - pad_read_raw(pad_num, arr); -800346fc: 8fc50010 lw a1,16(s8) -80034700: 8fc40020 lw a0,32(s8) -80034704: 0c00c9e9 jal 800327a4 -80034708: 00000000 nop - - PSX_PollPad_Fast(pad_num,pad_state); -8003470c: 8fc50024 lw a1,36(s8) -80034710: 8fc40020 lw a0,32(s8) -80034714: 0c00d0ba jal 800342e8 -80034718: 00000000 nop -} -8003471c: 00000000 nop -80034720: 03c0e821 move sp,s8 -80034724: 8fbf001c lw ra,28(sp) -80034728: 8fbe0018 lw s8,24(sp) -8003472c: 27bd0020 addiu sp,sp,32 -80034730: 03e00008 jr ra -80034734: 00000000 nop - -80034738 : - return PADTYPE_UNKNOWN; -}*/ - - -void PSX_GetSysInfo(struct psx_info *info) -{ -80034738: 27bdffe0 addiu sp,sp,-32 -8003473c: afbf001c sw ra,28(sp) -80034740: afbe0018 sw s8,24(sp) -80034744: 03a0f021 move s8,sp -80034748: afc40020 sw a0,32(s8) - unsigned long i,i2; - - info->kernel.version = GetKernelRomVersion(); -8003474c: 0c00edb6 jal 8003b6d8 -80034750: 00000000 nop -80034754: 00401821 move v1,v0 -80034758: 8fc20020 lw v0,32(s8) -8003475c: 00000000 nop -80034760: ac430000 sw v1,0(v0) - - i = GetKernelDate(); -80034764: 0c00edb1 jal 8003b6c4 -80034768: 00000000 nop -8003476c: afc20010 sw v0,16(s8) - -/* - * Convert year from BCD to decimal - */ - - i2 = i >> 16; -80034770: 8fc20010 lw v0,16(s8) -80034774: 00000000 nop -80034778: 00021402 srl v0,v0,0x10 -8003477c: afc20014 sw v0,20(s8) - - info->kernel.year = i2 & 0xf; -80034780: 8fc20014 lw v0,20(s8) -80034784: 00000000 nop -80034788: 3043000f andi v1,v0,0xf -8003478c: 8fc20020 lw v0,32(s8) -80034790: 00000000 nop -80034794: ac430004 sw v1,4(v0) - info->kernel.year+= ((i2>>4)&0xf)*10; -80034798: 8fc20020 lw v0,32(s8) -8003479c: 00000000 nop -800347a0: 8c420004 lw v0,4(v0) -800347a4: 00000000 nop -800347a8: 00402021 move a0,v0 -800347ac: 8fc20014 lw v0,20(s8) -800347b0: 00000000 nop -800347b4: 00021102 srl v0,v0,0x4 -800347b8: 3042000f andi v0,v0,0xf -800347bc: 00021040 sll v0,v0,0x1 -800347c0: 00021880 sll v1,v0,0x2 -800347c4: 00431021 addu v0,v0,v1 -800347c8: 00821021 addu v0,a0,v0 -800347cc: 00401821 move v1,v0 -800347d0: 8fc20020 lw v0,32(s8) -800347d4: 00000000 nop -800347d8: ac430004 sw v1,4(v0) - info->kernel.year+= ((i2>>8)&0xf)*100; -800347dc: 8fc20020 lw v0,32(s8) -800347e0: 00000000 nop -800347e4: 8c420004 lw v0,4(v0) -800347e8: 00000000 nop -800347ec: 00402021 move a0,v0 -800347f0: 8fc20014 lw v0,20(s8) -800347f4: 00000000 nop -800347f8: 00021202 srl v0,v0,0x8 -800347fc: 3042000f andi v0,v0,0xf -80034800: 00021080 sll v0,v0,0x2 -80034804: 00021880 sll v1,v0,0x2 -80034808: 00431021 addu v0,v0,v1 -8003480c: 00021880 sll v1,v0,0x2 -80034810: 00431021 addu v0,v0,v1 -80034814: 00821021 addu v0,a0,v0 -80034818: 00401821 move v1,v0 -8003481c: 8fc20020 lw v0,32(s8) -80034820: 00000000 nop -80034824: ac430004 sw v1,4(v0) - info->kernel.year+= ((i2>>12)&0xf)*1000; -80034828: 8fc20020 lw v0,32(s8) -8003482c: 00000000 nop -80034830: 8c420004 lw v0,4(v0) -80034834: 00000000 nop -80034838: 00402821 move a1,v0 -8003483c: 8fc20014 lw v0,20(s8) -80034840: 00000000 nop -80034844: 00021302 srl v0,v0,0xc -80034848: 3044000f andi a0,v0,0xf -8003484c: 00801821 move v1,a0 -80034850: 00031080 sll v0,v1,0x2 -80034854: 00401821 move v1,v0 -80034858: 00031140 sll v0,v1,0x5 -8003485c: 00431023 subu v0,v0,v1 -80034860: 00441021 addu v0,v0,a0 -80034864: 000210c0 sll v0,v0,0x3 -80034868: 00a21021 addu v0,a1,v0 -8003486c: 00401821 move v1,v0 -80034870: 8fc20020 lw v0,32(s8) -80034874: 00000000 nop -80034878: ac430004 sw v1,4(v0) - -/* - * Convert month from BCD to decimal - */ - i2 = (i >> 8) & 0xff; -8003487c: 8fc20010 lw v0,16(s8) -80034880: 00000000 nop -80034884: 00021202 srl v0,v0,0x8 -80034888: 304200ff andi v0,v0,0xff -8003488c: afc20014 sw v0,20(s8) - - info->kernel.month = i2 & 0xf; -80034890: 8fc20014 lw v0,20(s8) -80034894: 00000000 nop -80034898: 3043000f andi v1,v0,0xf -8003489c: 8fc20020 lw v0,32(s8) -800348a0: 00000000 nop -800348a4: ac430008 sw v1,8(v0) - info->kernel.month+= (i2>>4) * 10; -800348a8: 8fc20020 lw v0,32(s8) -800348ac: 00000000 nop -800348b0: 8c420008 lw v0,8(v0) -800348b4: 00000000 nop -800348b8: 00402021 move a0,v0 -800348bc: 8fc20014 lw v0,20(s8) -800348c0: 00000000 nop -800348c4: 00021102 srl v0,v0,0x4 -800348c8: 00021040 sll v0,v0,0x1 -800348cc: 00021880 sll v1,v0,0x2 -800348d0: 00431021 addu v0,v0,v1 -800348d4: 00821021 addu v0,a0,v0 -800348d8: 00401821 move v1,v0 -800348dc: 8fc20020 lw v0,32(s8) -800348e0: 00000000 nop -800348e4: ac430008 sw v1,8(v0) - -/* - * Convert day from BCD to decimal - */ - i2 = i & 0xff; -800348e8: 8fc20010 lw v0,16(s8) -800348ec: 00000000 nop -800348f0: 304200ff andi v0,v0,0xff -800348f4: afc20014 sw v0,20(s8) - - info->kernel.day = i2 & 0xf; -800348f8: 8fc20014 lw v0,20(s8) -800348fc: 00000000 nop -80034900: 3043000f andi v1,v0,0xf -80034904: 8fc20020 lw v0,32(s8) -80034908: 00000000 nop -8003490c: ac43000c sw v1,12(v0) - info->kernel.day+= (i2>>4) * 10; -80034910: 8fc20020 lw v0,32(s8) -80034914: 00000000 nop -80034918: 8c42000c lw v0,12(v0) -8003491c: 00000000 nop -80034920: 00402021 move a0,v0 -80034924: 8fc20014 lw v0,20(s8) -80034928: 00000000 nop -8003492c: 00021102 srl v0,v0,0x4 -80034930: 00021040 sll v0,v0,0x1 -80034934: 00021880 sll v1,v0,0x2 -80034938: 00431021 addu v0,v0,v1 -8003493c: 00821021 addu v0,a0,v0 -80034940: 00401821 move v1,v0 -80034944: 8fc20020 lw v0,32(s8) -80034948: 00000000 nop -8003494c: ac43000c sw v1,12(v0) -/* - * Unless we receive something in the range >= 1 && <= 16, - * RAM size will be reported as 2 Megabytes - */ - - i = GetRamSize(); -80034950: 0c00edbb jal 8003b6ec -80034954: 00000000 nop -80034958: afc20010 sw v0,16(s8) - - if(i == 0 || i > 16) -8003495c: 8fc20010 lw v0,16(s8) -80034960: 00000000 nop -80034964: 10400006 beqz v0,80034980 -80034968: 00000000 nop -8003496c: 8fc20010 lw v0,16(s8) -80034970: 00000000 nop -80034974: 2c420011 sltiu v0,v0,17 -80034978: 14400006 bnez v0,80034994 -8003497c: 00000000 nop - info->system.memory = 2<<20; /* 2 Megabytes */ -80034980: 8fc20020 lw v0,32(s8) -80034984: 3c030020 lui v1,0x20 -80034988: ac430010 sw v1,16(v0) -8003498c: 10000009 b 800349b4 -80034990: 00000000 nop - else - info->system.memory <<= 20; -80034994: 8fc20020 lw v0,32(s8) -80034998: 00000000 nop -8003499c: 8c420010 lw v0,16(v0) -800349a0: 00000000 nop -800349a4: 00021d00 sll v1,v0,0x14 -800349a8: 8fc20020 lw v0,32(s8) -800349ac: 00000000 nop -800349b0: ac430010 sw v1,16(v0) -} -800349b4: 00000000 nop -800349b8: 03c0e821 move sp,s8 -800349bc: 8fbf001c lw ra,28(sp) -800349c0: 8fbe0018 lw s8,24(sp) -800349c4: 27bd0020 addiu sp,sp,32 -800349c8: 03e00008 jr ra -800349cc: 00000000 nop - -800349d0 : - - - -int get_real_file_size(char *name) -{ -800349d0: 27bdffc0 addiu sp,sp,-64 -800349d4: afbf003c sw ra,60(sp) -800349d8: afbe0038 sw s8,56(sp) -800349dc: 03a0f021 move s8,sp -800349e0: afc40040 sw a0,64(s8) - struct DIRENTRY dirent_buf; - - if(firstfile(name, &dirent_buf) == &dirent_buf) -800349e4: 27c20010 addiu v0,s8,16 -800349e8: 00402821 move a1,v0 -800349ec: 8fc40040 lw a0,64(s8) -800349f0: 0c00edf4 jal 8003b7d0 -800349f4: 00000000 nop -800349f8: 00401821 move v1,v0 -800349fc: 27c20010 addiu v0,s8,16 -80034a00: 14620004 bne v1,v0,80034a14 -80034a04: 00000000 nop - return dirent_buf.size; -80034a08: 8fc20028 lw v0,40(s8) -80034a0c: 10000002 b 80034a18 -80034a10: 00000000 nop - else - return 0; -80034a14: 00001021 move v0,zero -} -80034a18: 03c0e821 move sp,s8 -80034a1c: 8fbf003c lw ra,60(sp) -80034a20: 8fbe0038 lw s8,56(sp) -80034a24: 27bd0040 addiu sp,sp,64 -80034a28: 03e00008 jr ra -80034a2c: 00000000 nop - -80034a30 : - -int get_file_size(char *name) -{ -80034a30: 27bdffe0 addiu sp,sp,-32 -80034a34: afbf001c sw ra,28(sp) -80034a38: afbe0018 sw s8,24(sp) -80034a3c: 03a0f021 move s8,sp -80034a40: afc40020 sw a0,32(s8) - int i = get_real_file_size(name); -80034a44: 8fc40020 lw a0,32(s8) -80034a48: 0c00d274 jal 800349d0 -80034a4c: 00000000 nop -80034a50: afc20010 sw v0,16(s8) - - if(strncmp(name, "cdrom:", 6) == 0) -80034a54: 24060006 li a2,6 -80034a58: 3c028004 lui v0,0x8004 -80034a5c: 2445fe50 addiu a1,v0,-432 -80034a60: 8fc40020 lw a0,32(s8) -80034a64: 0c00d9dd jal 80036774 -80034a68: 00000000 nop -80034a6c: 14400010 bnez v0,80034ab0 -80034a70: 00000000 nop - { - if(i & 0x7ff) -80034a74: 8fc20010 lw v0,16(s8) -80034a78: 00000000 nop -80034a7c: 304207ff andi v0,v0,0x7ff -80034a80: 10400020 beqz v0,80034b04 -80034a84: 00000000 nop - { - i += 0x800; -80034a88: 8fc20010 lw v0,16(s8) -80034a8c: 00000000 nop -80034a90: 24420800 addiu v0,v0,2048 -80034a94: afc20010 sw v0,16(s8) - i &= ~0x7ff; -80034a98: 8fc30010 lw v1,16(s8) -80034a9c: 2402f800 li v0,-2048 -80034aa0: 00621024 and v0,v1,v0 -80034aa4: afc20010 sw v0,16(s8) -80034aa8: 10000016 b 80034b04 -80034aac: 00000000 nop - } - }else if(strncmp(name, "bu", 2) == 0) -80034ab0: 24060002 li a2,2 -80034ab4: 3c028004 lui v0,0x8004 -80034ab8: 2445fe58 addiu a1,v0,-424 -80034abc: 8fc40020 lw a0,32(s8) -80034ac0: 0c00d9dd jal 80036774 -80034ac4: 00000000 nop -80034ac8: 1440000e bnez v0,80034b04 -80034acc: 00000000 nop - { - if(i & 0x7f) -80034ad0: 8fc20010 lw v0,16(s8) -80034ad4: 00000000 nop -80034ad8: 3042007f andi v0,v0,0x7f -80034adc: 10400009 beqz v0,80034b04 -80034ae0: 00000000 nop - { - i += 0x80; -80034ae4: 8fc20010 lw v0,16(s8) -80034ae8: 00000000 nop -80034aec: 24420080 addiu v0,v0,128 -80034af0: afc20010 sw v0,16(s8) - i &= ~0x7f; -80034af4: 8fc30010 lw v1,16(s8) -80034af8: 2402ff80 li v0,-128 -80034afc: 00621024 and v0,v1,v0 -80034b00: afc20010 sw v0,16(s8) - } - } - - return i; -80034b04: 8fc20010 lw v0,16(s8) -} -80034b08: 03c0e821 move sp,s8 -80034b0c: 8fbf001c lw ra,28(sp) -80034b10: 8fbe0018 lw s8,24(sp) -80034b14: 27bd0020 addiu sp,sp,32 -80034b18: 03e00008 jr ra -80034b1c: 00000000 nop - -80034b20 : - -int SetRCnt(int spec, unsigned short target, unsigned int mode) -{ -80034b20: 27bdfff8 addiu sp,sp,-8 -80034b24: afbe0004 sw s8,4(sp) -80034b28: 03a0f021 move s8,sp -80034b2c: afc40008 sw a0,8(s8) -80034b30: 00a01021 move v0,a1 -80034b34: afc60010 sw a2,16(s8) -80034b38: a7c2000c sh v0,12(s8) - spec &= 0xf; -80034b3c: 8fc20008 lw v0,8(s8) -80034b40: 00000000 nop -80034b44: 3042000f andi v0,v0,0xf -80034b48: afc20008 sw v0,8(s8) - - if(spec >= 3) -80034b4c: 8fc20008 lw v0,8(s8) -80034b50: 00000000 nop -80034b54: 28420003 slti v0,v0,3 -80034b58: 14400004 bnez v0,80034b6c -80034b5c: 00000000 nop - return 0; -80034b60: 00001021 move v0,zero -80034b64: 1000001d b 80034bdc -80034b68: 00000000 nop - - RCNT_MODE(spec)=0; -80034b6c: 8fc20008 lw v0,8(s8) -80034b70: 00000000 nop -80034b74: 00021900 sll v1,v0,0x4 -80034b78: 3c021f80 lui v0,0x1f80 -80034b7c: 34421104 ori v0,v0,0x1104 -80034b80: 00621021 addu v0,v1,v0 -80034b84: ac400000 sw zero,0(v0) - RCNT_TARGET(spec)=target; -80034b88: 8fc20008 lw v0,8(s8) -80034b8c: 00000000 nop -80034b90: 00021900 sll v1,v0,0x4 -80034b94: 3c021f80 lui v0,0x1f80 -80034b98: 34421108 ori v0,v0,0x1108 -80034b9c: 00621021 addu v0,v1,v0 -80034ba0: 00401821 move v1,v0 -80034ba4: 97c2000c lhu v0,12(s8) -80034ba8: 00000000 nop -80034bac: ac620000 sw v0,0(v1) - RCNT_MODE(spec)=mode; -80034bb0: 8fc20008 lw v0,8(s8) -80034bb4: 00000000 nop -80034bb8: 00021900 sll v1,v0,0x4 -80034bbc: 3c021f80 lui v0,0x1f80 -80034bc0: 34421104 ori v0,v0,0x1104 -80034bc4: 00621021 addu v0,v1,v0 -80034bc8: 00401821 move v1,v0 -80034bcc: 8fc20010 lw v0,16(s8) -80034bd0: 00000000 nop -80034bd4: ac620000 sw v0,0(v1) - - return 1; -80034bd8: 24020001 li v0,1 -} -80034bdc: 03c0e821 move sp,s8 -80034be0: 8fbe0004 lw s8,4(sp) -80034be4: 27bd0008 addiu sp,sp,8 -80034be8: 03e00008 jr ra -80034bec: 00000000 nop - -80034bf0 : - -int GetRCnt(int spec) -{ -80034bf0: 27bdfff8 addiu sp,sp,-8 -80034bf4: afbe0004 sw s8,4(sp) -80034bf8: 03a0f021 move s8,sp -80034bfc: afc40008 sw a0,8(s8) - spec &= 0xf; -80034c00: 8fc20008 lw v0,8(s8) -80034c04: 00000000 nop -80034c08: 3042000f andi v0,v0,0xf -80034c0c: afc20008 sw v0,8(s8) - - if(spec >= 4) -80034c10: 8fc20008 lw v0,8(s8) -80034c14: 00000000 nop -80034c18: 28420004 slti v0,v0,4 -80034c1c: 14400004 bnez v0,80034c30 -80034c20: 00000000 nop - return -1; -80034c24: 2402ffff li v0,-1 -80034c28: 1000000a b 80034c54 -80034c2c: 00000000 nop - - return (RCNT_COUNT(spec) & 0xffff); -80034c30: 8fc20008 lw v0,8(s8) -80034c34: 00000000 nop -80034c38: 00021900 sll v1,v0,0x4 -80034c3c: 3c021f80 lui v0,0x1f80 -80034c40: 34421100 ori v0,v0,0x1100 -80034c44: 00621021 addu v0,v1,v0 -80034c48: 8c420000 lw v0,0(v0) -80034c4c: 00000000 nop -80034c50: 3042ffff andi v0,v0,0xffff -} -80034c54: 03c0e821 move sp,s8 -80034c58: 8fbe0004 lw s8,4(sp) -80034c5c: 27bd0008 addiu sp,sp,8 -80034c60: 03e00008 jr ra -80034c64: 00000000 nop - -80034c68 : - -int StartRCnt(int spec) -{ -80034c68: 27bdfff8 addiu sp,sp,-8 -80034c6c: afbe0004 sw s8,4(sp) -80034c70: 03a0f021 move s8,sp -80034c74: afc40008 sw a0,8(s8) - spec &= 0xf; -80034c78: 8fc20008 lw v0,8(s8) -80034c7c: 00000000 nop -80034c80: 3042000f andi v0,v0,0xf -80034c84: afc20008 sw v0,8(s8) - - if(spec >= 3) -80034c88: 8fc20008 lw v0,8(s8) -80034c8c: 00000000 nop -80034c90: 28420003 slti v0,v0,3 -80034c94: 14400004 bnez v0,80034ca8 -80034c98: 00000000 nop - return 0; -80034c9c: 00001021 move v0,zero -80034ca0: 1000000e b 80034cdc -80034ca4: 00000000 nop - - IMASK |= 1 << (spec + 4); -80034ca8: 3c021f80 lui v0,0x1f80 -80034cac: 34421074 ori v0,v0,0x1074 -80034cb0: 3c031f80 lui v1,0x1f80 -80034cb4: 34631074 ori v1,v1,0x1074 -80034cb8: 8c630000 lw v1,0(v1) -80034cbc: 8fc40008 lw a0,8(s8) -80034cc0: 00000000 nop -80034cc4: 24840004 addiu a0,a0,4 -80034cc8: 24050001 li a1,1 -80034ccc: 00852004 sllv a0,a1,a0 -80034cd0: 00641825 or v1,v1,a0 -80034cd4: ac430000 sw v1,0(v0) - - return 1; -80034cd8: 24020001 li v0,1 -} -80034cdc: 03c0e821 move sp,s8 -80034ce0: 8fbe0004 lw s8,4(sp) -80034ce4: 27bd0008 addiu sp,sp,8 -80034ce8: 03e00008 jr ra -80034cec: 00000000 nop - -80034cf0 : - -int StopRCnt(int spec) -{ -80034cf0: 27bdfff8 addiu sp,sp,-8 -80034cf4: afbe0004 sw s8,4(sp) -80034cf8: 03a0f021 move s8,sp -80034cfc: afc40008 sw a0,8(s8) - spec &= 0xf; -80034d00: 8fc20008 lw v0,8(s8) -80034d04: 00000000 nop -80034d08: 3042000f andi v0,v0,0xf -80034d0c: afc20008 sw v0,8(s8) - - if(spec >= 3) -80034d10: 8fc20008 lw v0,8(s8) -80034d14: 00000000 nop -80034d18: 28420003 slti v0,v0,3 -80034d1c: 14400004 bnez v0,80034d30 -80034d20: 00000000 nop - return 0; -80034d24: 00001021 move v0,zero -80034d28: 1000000e b 80034d64 -80034d2c: 00000000 nop - - IMASK ^= 1 << (spec + 4); -80034d30: 3c021f80 lui v0,0x1f80 -80034d34: 34421074 ori v0,v0,0x1074 -80034d38: 3c031f80 lui v1,0x1f80 -80034d3c: 34631074 ori v1,v1,0x1074 -80034d40: 8c630000 lw v1,0(v1) -80034d44: 8fc40008 lw a0,8(s8) -80034d48: 00000000 nop -80034d4c: 24840004 addiu a0,a0,4 -80034d50: 24050001 li a1,1 -80034d54: 00852004 sllv a0,a1,a0 -80034d58: 00641826 xor v1,v1,a0 -80034d5c: ac430000 sw v1,0(v0) - - return 1; -80034d60: 24020001 li v0,1 -} -80034d64: 03c0e821 move sp,s8 -80034d68: 8fbe0004 lw s8,4(sp) -80034d6c: 27bd0008 addiu sp,sp,8 -80034d70: 03e00008 jr ra -80034d74: 00000000 nop - -80034d78 : - -void SetVBlankHandler(void (*callback)()) -{ -80034d78: 27bdffe8 addiu sp,sp,-24 -80034d7c: afbf0014 sw ra,20(sp) -80034d80: afbe0010 sw s8,16(sp) -80034d84: 03a0f021 move s8,sp -80034d88: afc40018 sw a0,24(s8) - if(psxSdkFlags & PSX_INIT_NOBIOS) -80034d8c: 3c028007 lui v0,0x8007 -80034d90: 8c421d00 lw v0,7424(v0) -80034d94: 00000000 nop -80034d98: 30420004 andi v0,v0,0x4 -80034d9c: 1040000c beqz v0,80034dd0 -80034da0: 00000000 nop - { - _EXC_vblank_handler_set = 0; -80034da4: 3c028007 lui v0,0x8007 -80034da8: ac401d74 sw zero,7540(v0) - _EXC_vblank_handler = callback; -80034dac: 3c028007 lui v0,0x8007 -80034db0: 8fc30018 lw v1,24(s8) -80034db4: 00000000 nop -80034db8: ac431d8c sw v1,7564(v0) - _EXC_vblank_handler_set = 1; -80034dbc: 3c028007 lui v0,0x8007 -80034dc0: 24030001 li v1,1 -80034dc4: ac431d74 sw v1,7540(v0) - return; -80034dc8: 10000034 b 80034e9c -80034dcc: 00000000 nop - } - - if(vblank_handler_set == 1) -80034dd0: 3c028007 lui v0,0x8007 -80034dd4: 8c431cf0 lw v1,7408(v0) -80034dd8: 24020001 li v0,1 -80034ddc: 1462000b bne v1,v0,80034e0c -80034de0: 00000000 nop - { - EnterCriticalSection(); -80034de4: 0c00ee04 jal 8003b810 -80034de8: 00000000 nop - - vblank_handler_callback = callback; -80034dec: 3c028007 lui v0,0x8007 -80034df0: 8fc30018 lw v1,24(s8) -80034df4: 00000000 nop -80034df8: ac431d70 sw v1,7536(v0) - - ExitCriticalSection(); -80034dfc: 0c00ee0a jal 8003b828 -80034e00: 00000000 nop - - return; -80034e04: 10000025 b 80034e9c -80034e08: 00000000 nop - } - -// Enter critical section - - EnterCriticalSection(); -80034e0c: 0c00ee04 jal 8003b810 -80034e10: 00000000 nop - - IMASK|=1; -80034e14: 3c021f80 lui v0,0x1f80 -80034e18: 34421074 ori v0,v0,0x1074 -80034e1c: 3c031f80 lui v1,0x1f80 -80034e20: 34631074 ori v1,v1,0x1074 -80034e24: 8c630000 lw v1,0(v1) -80034e28: 00000000 nop -80034e2c: 34630001 ori v1,v1,0x1 -80034e30: ac430000 sw v1,0(v0) - - vblank_handler_event_id = OpenEvent(RCntCNT3, 2, 0x1000, vblank_handler); -80034e34: 3c028001 lui v0,0x8001 -80034e38: 24470064 addiu a3,v0,100 -80034e3c: 24061000 li a2,4096 -80034e40: 24050002 li a1,2 -80034e44: 3c02f200 lui v0,0xf200 -80034e48: 34440003 ori a0,v0,0x3 -80034e4c: 0c00edc0 jal 8003b700 -80034e50: 00000000 nop -80034e54: 00401821 move v1,v0 -80034e58: 3c028007 lui v0,0x8007 -80034e5c: ac431cf4 sw v1,7412(v0) - EnableEvent(vblank_handler_event_id); -80034e60: 3c028007 lui v0,0x8007 -80034e64: 8c421cf4 lw v0,7412(v0) -80034e68: 00000000 nop -80034e6c: 00402021 move a0,v0 -80034e70: 0c00edc4 jal 8003b710 -80034e74: 00000000 nop - - vblank_handler_callback = callback; -80034e78: 3c028007 lui v0,0x8007 -80034e7c: 8fc30018 lw v1,24(s8) -80034e80: 00000000 nop -80034e84: ac431d70 sw v1,7536(v0) - vblank_handler_set = 1; -80034e88: 3c028007 lui v0,0x8007 -80034e8c: 24030001 li v1,1 -80034e90: ac431cf0 sw v1,7408(v0) - -// Exit critical section - - ExitCriticalSection(); -80034e94: 0c00ee0a jal 8003b828 -80034e98: 00000000 nop -} -80034e9c: 03c0e821 move sp,s8 -80034ea0: 8fbf0014 lw ra,20(sp) -80034ea4: 8fbe0010 lw s8,16(sp) -80034ea8: 27bd0018 addiu sp,sp,24 -80034eac: 03e00008 jr ra -80034eb0: 00000000 nop - -80034eb4 : - -void RemoveVBlankHandler(void) -{ -80034eb4: 27bdffe8 addiu sp,sp,-24 -80034eb8: afbf0014 sw ra,20(sp) -80034ebc: afbe0010 sw s8,16(sp) -80034ec0: 03a0f021 move s8,sp - if(psxSdkFlags & PSX_INIT_NOBIOS) -80034ec4: 3c028007 lui v0,0x8007 -80034ec8: 8c421d00 lw v0,7424(v0) -80034ecc: 00000000 nop -80034ed0: 30420004 andi v0,v0,0x4 -80034ed4: 10400007 beqz v0,80034ef4 -80034ed8: 00000000 nop - { - _EXC_vblank_handler_set = 0; -80034edc: 3c028007 lui v0,0x8007 -80034ee0: ac401d74 sw zero,7540(v0) - _EXC_vblank_handler = NULL; -80034ee4: 3c028007 lui v0,0x8007 -80034ee8: ac401d8c sw zero,7564(v0) - return; -80034eec: 10000018 b 80034f50 -80034ef0: 00000000 nop - } - - if(vblank_handler_set) -80034ef4: 3c028007 lui v0,0x8007 -80034ef8: 8c421cf0 lw v0,7408(v0) -80034efc: 00000000 nop -80034f00: 10400013 beqz v0,80034f50 -80034f04: 00000000 nop - { - EnterCriticalSection(); -80034f08: 0c00ee04 jal 8003b810 -80034f0c: 00000000 nop - - DisableEvent(vblank_handler_event_id); -80034f10: 3c028007 lui v0,0x8007 -80034f14: 8c421cf4 lw v0,7412(v0) -80034f18: 00000000 nop -80034f1c: 00402021 move a0,v0 -80034f20: 0c00edcc jal 8003b730 -80034f24: 00000000 nop - CloseEvent(vblank_handler_event_id); -80034f28: 3c028007 lui v0,0x8007 -80034f2c: 8c421cf4 lw v0,7412(v0) -80034f30: 00000000 nop -80034f34: 00402021 move a0,v0 -80034f38: 0c00edc8 jal 8003b720 -80034f3c: 00000000 nop - - //IMASK^=1; - // ^ commented because masking out vblank could give problems to other bios functions - - vblank_handler_set = 0; -80034f40: 3c028007 lui v0,0x8007 -80034f44: ac401cf0 sw zero,7408(v0) - - ExitCriticalSection(); -80034f48: 0c00ee0a jal 8003b828 -80034f4c: 00000000 nop - } -} -80034f50: 03c0e821 move sp,s8 -80034f54: 8fbf0014 lw ra,20(sp) -80034f58: 8fbe0010 lw s8,16(sp) -80034f5c: 27bd0018 addiu sp,sp,24 -80034f60: 03e00008 jr ra -80034f64: 00000000 nop - -80034f68 : - -void SetRCntHandler(void (*callback)(), int spec, unsigned short target) -{ -80034f68: 27bdffe8 addiu sp,sp,-24 -80034f6c: afbf0014 sw ra,20(sp) -80034f70: afbe0010 sw s8,16(sp) -80034f74: 03a0f021 move s8,sp -80034f78: afc40018 sw a0,24(s8) -80034f7c: afc5001c sw a1,28(s8) -80034f80: 00c01021 move v0,a2 -80034f84: a7c20020 sh v0,32(s8) - if(psxSdkFlags & PSX_INIT_NOBIOS) -80034f88: 3c028007 lui v0,0x8007 -80034f8c: 8c421d00 lw v0,7424(v0) -80034f90: 00000000 nop -80034f94: 30420004 andi v0,v0,0x4 -80034f98: 14400063 bnez v0,80035128 -80034f9c: 00000000 nop - return; // Not yet supported in No-Bios Mode - - if(rcnt_handler_set) -80034fa0: 3c028007 lui v0,0x8007 -80034fa4: 8c421cf8 lw v0,7416(v0) -80034fa8: 00000000 nop -80034fac: 1040000b beqz v0,80034fdc -80034fb0: 00000000 nop - { - EnterCriticalSection(); -80034fb4: 0c00ee04 jal 8003b810 -80034fb8: 00000000 nop - - rcnt_handler_callback = callback; -80034fbc: 3c028007 lui v0,0x8007 -80034fc0: 8fc30018 lw v1,24(s8) -80034fc4: 00000000 nop -80034fc8: ac431d6c sw v1,7532(v0) - - ExitCriticalSection(); -80034fcc: 0c00ee0a jal 8003b828 -80034fd0: 00000000 nop - - return; -80034fd4: 10000055 b 8003512c -80034fd8: 00000000 nop - } - -// Enter critical section - - SetRCnt(spec, target, RCntIntr | 0x08 | 0x10 | 0x40); -80034fdc: 97c20020 lhu v0,32(s8) -80034fe0: 24061058 li a2,4184 -80034fe4: 00402821 move a1,v0 -80034fe8: 8fc4001c lw a0,28(s8) -80034fec: 0c00d2c8 jal 80034b20 -80034ff0: 00000000 nop - StartRCnt(spec); -80034ff4: 8fc4001c lw a0,28(s8) -80034ff8: 0c00d31a jal 80034c68 -80034ffc: 00000000 nop - - EnterCriticalSection(); -80035000: 0c00ee04 jal 8003b810 -80035004: 00000000 nop - rcnt_handler_event_id = OpenEvent(spec, 2, 0x1000, rcnt_handler); -80035008: 3c028001 lui v0,0x8001 -8003500c: 244701bc addiu a3,v0,444 -80035010: 24061000 li a2,4096 -80035014: 24050002 li a1,2 -80035018: 8fc4001c lw a0,28(s8) -8003501c: 0c00edc0 jal 8003b700 -80035020: 00000000 nop -80035024: 00401821 move v1,v0 -80035028: 3c028007 lui v0,0x8007 -8003502c: ac431cfc sw v1,7420(v0) - EnableEvent(rcnt_handler_event_id); -80035030: 3c028007 lui v0,0x8007 -80035034: 8c421cfc lw v0,7420(v0) -80035038: 00000000 nop -8003503c: 00402021 move a0,v0 -80035040: 0c00edc4 jal 8003b710 -80035044: 00000000 nop - - rcnt_handler_callback = callback; -80035048: 3c028007 lui v0,0x8007 -8003504c: 8fc30018 lw v1,24(s8) -80035050: 00000000 nop -80035054: ac431d6c sw v1,7532(v0) - rcnt_handler_set = spec; -80035058: 3c028007 lui v0,0x8007 -8003505c: 8fc3001c lw v1,28(s8) -80035060: 00000000 nop -80035064: ac431cf8 sw v1,7416(v0) - - switch(spec) -80035068: 8fc2001c lw v0,28(s8) -8003506c: 3c03f200 lui v1,0xf200 -80035070: 34630001 ori v1,v1,0x1 -80035074: 1043001a beq v0,v1,800350e0 -80035078: 00000000 nop -8003507c: 3c03f200 lui v1,0xf200 -80035080: 34630002 ori v1,v1,0x2 -80035084: 0043182a slt v1,v0,v1 -80035088: 10600006 beqz v1,800350a4 -8003508c: 00000000 nop -80035090: 3c03f200 lui v1,0xf200 -80035094: 1043000d beq v0,v1,800350cc -80035098: 00000000 nop -8003509c: 1000001e b 80035118 -800350a0: 00000000 nop -800350a4: 3c03f200 lui v1,0xf200 -800350a8: 34630002 ori v1,v1,0x2 -800350ac: 10430011 beq v0,v1,800350f4 -800350b0: 00000000 nop -800350b4: 3c03f200 lui v1,0xf200 -800350b8: 34630003 ori v1,v1,0x3 -800350bc: 10430012 beq v0,v1,80035108 -800350c0: 00000000 nop -800350c4: 10000014 b 80035118 -800350c8: 00000000 nop - { - case RCntCNT0: rcnt_handler_evfield = 1 << 4; break; -800350cc: 3c028007 lui v0,0x8007 -800350d0: 24030010 li v1,16 -800350d4: ac431d68 sw v1,7528(v0) -800350d8: 1000000f b 80035118 -800350dc: 00000000 nop - case RCntCNT1: rcnt_handler_evfield = 1 << 5; break; -800350e0: 3c028007 lui v0,0x8007 -800350e4: 24030020 li v1,32 -800350e8: ac431d68 sw v1,7528(v0) -800350ec: 1000000a b 80035118 -800350f0: 00000000 nop - case RCntCNT2: rcnt_handler_evfield = 1 << 6; break; -800350f4: 3c028007 lui v0,0x8007 -800350f8: 24030040 li v1,64 -800350fc: ac431d68 sw v1,7528(v0) -80035100: 10000005 b 80035118 -80035104: 00000000 nop - case RCntCNT3: rcnt_handler_evfield = 1; break; -80035108: 3c028007 lui v0,0x8007 -8003510c: 24030001 li v1,1 -80035110: ac431d68 sw v1,7528(v0) -80035114: 00000000 nop - } - -// Exit critical section - - ExitCriticalSection(); -80035118: 0c00ee0a jal 8003b828 -8003511c: 00000000 nop -80035120: 10000002 b 8003512c -80035124: 00000000 nop -} - -void SetRCntHandler(void (*callback)(), int spec, unsigned short target) -{ - if(psxSdkFlags & PSX_INIT_NOBIOS) - return; // Not yet supported in No-Bios Mode -80035128: 00000000 nop - } - -// Exit critical section - - ExitCriticalSection(); -} -8003512c: 03c0e821 move sp,s8 -80035130: 8fbf0014 lw ra,20(sp) -80035134: 8fbe0010 lw s8,16(sp) -80035138: 27bd0018 addiu sp,sp,24 -8003513c: 03e00008 jr ra -80035140: 00000000 nop - -80035144 : - -void RemoveRCntHandler(int spec) -{ -80035144: 27bdffe8 addiu sp,sp,-24 -80035148: afbf0014 sw ra,20(sp) -8003514c: afbe0010 sw s8,16(sp) -80035150: 03a0f021 move s8,sp -80035154: afc40018 sw a0,24(s8) - if(psxSdkFlags & PSX_INIT_NOBIOS) -80035158: 3c028007 lui v0,0x8007 -8003515c: 8c421d00 lw v0,7424(v0) -80035160: 00000000 nop -80035164: 30420004 andi v0,v0,0x4 -80035168: 1440001a bnez v0,800351d4 -8003516c: 00000000 nop - return; // Not yet supported in No-Bios Mode - - if(rcnt_handler_set) -80035170: 3c028007 lui v0,0x8007 -80035174: 8c421cf8 lw v0,7416(v0) -80035178: 00000000 nop -8003517c: 10400016 beqz v0,800351d8 -80035180: 00000000 nop - { - EnterCriticalSection(); -80035184: 0c00ee04 jal 8003b810 -80035188: 00000000 nop - - DisableEvent(rcnt_handler_event_id); -8003518c: 3c028007 lui v0,0x8007 -80035190: 8c421cfc lw v0,7420(v0) -80035194: 00000000 nop -80035198: 00402021 move a0,v0 -8003519c: 0c00edcc jal 8003b730 -800351a0: 00000000 nop - CloseEvent(rcnt_handler_event_id); -800351a4: 3c028007 lui v0,0x8007 -800351a8: 8c421cfc lw v0,7420(v0) -800351ac: 00000000 nop -800351b0: 00402021 move a0,v0 -800351b4: 0c00edc8 jal 8003b720 -800351b8: 00000000 nop - - rcnt_handler_set = 0; -800351bc: 3c028007 lui v0,0x8007 -800351c0: ac401cf8 sw zero,7416(v0) - - ExitCriticalSection(); -800351c4: 0c00ee0a jal 8003b828 -800351c8: 00000000 nop -800351cc: 10000002 b 800351d8 -800351d0: 00000000 nop -} - -void RemoveRCntHandler(int spec) -{ - if(psxSdkFlags & PSX_INIT_NOBIOS) - return; // Not yet supported in No-Bios Mode -800351d4: 00000000 nop - - rcnt_handler_set = 0; - - ExitCriticalSection(); - } -} -800351d8: 03c0e821 move sp,s8 -800351dc: 8fbf0014 lw ra,20(sp) -800351e0: 8fbe0010 lw s8,16(sp) -800351e4: 27bd0018 addiu sp,sp,24 -800351e8: 03e00008 jr ra -800351ec: 00000000 nop - -800351f0 : - -const char *GetSystemRomVersion(void) -{ -800351f0: 27bdffe0 addiu sp,sp,-32 -800351f4: afbf001c sw ra,28(sp) -800351f8: afbe0018 sw s8,24(sp) -800351fc: 03a0f021 move s8,sp - -// If getting the pointer is not possible, a pointer to a string saying "System ROM Unavailable" is returned. - - int x; - - for(x = 0x7ffee; x >= 0; x--) -80035200: 3c020007 lui v0,0x7 -80035204: 3442ffee ori v0,v0,0xffee -80035208: afc20010 sw v0,16(s8) -8003520c: 10000015 b 80035264 -80035210: 00000000 nop - if(memcmp("System ROM Version", (void*)(0xbfc00000 + x), 18) == 0) -80035214: 8fc30010 lw v1,16(s8) -80035218: 3c02bfc0 lui v0,0xbfc0 -8003521c: 00621021 addu v0,v1,v0 -80035220: 24060012 li a2,18 -80035224: 00402821 move a1,v0 -80035228: 3c028004 lui v0,0x8004 -8003522c: 2444fe5c addiu a0,v0,-420 -80035230: 0c00d7cf jal 80035f3c -80035234: 00000000 nop -80035238: 14400006 bnez v0,80035254 -8003523c: 00000000 nop - return (char*)(0xbfc00000 + x); -80035240: 8fc30010 lw v1,16(s8) -80035244: 3c02bfc0 lui v0,0xbfc0 -80035248: 00621021 addu v0,v1,v0 -8003524c: 1000000b b 8003527c -80035250: 00000000 nop - -// If getting the pointer is not possible, a pointer to a string saying "System ROM Unavailable" is returned. - - int x; - - for(x = 0x7ffee; x >= 0; x--) -80035254: 8fc20010 lw v0,16(s8) -80035258: 00000000 nop -8003525c: 2442ffff addiu v0,v0,-1 -80035260: afc20010 sw v0,16(s8) -80035264: 8fc20010 lw v0,16(s8) -80035268: 00000000 nop -8003526c: 0441ffe9 bgez v0,80035214 -80035270: 00000000 nop - if(memcmp("System ROM Version", (void*)(0xbfc00000 + x), 18) == 0) - return (char*)(0xbfc00000 + x); - - return sysromver_unavail; -80035274: 3c028004 lui v0,0x8004 -80035278: 8c422570 lw v0,9584(v0) -} -8003527c: 03c0e821 move sp,s8 -80035280: 8fbf001c lw ra,28(sp) -80035284: 8fbe0018 lw s8,24(sp) -80035288: 27bd0020 addiu sp,sp,32 -8003528c: 03e00008 jr ra -80035290: 00000000 nop - -80035294 : - -int PSX_RestoreBiosState(void) -{ -80035294: 27bdffe8 addiu sp,sp,-24 -80035298: afbf0014 sw ra,20(sp) -8003529c: afbe0010 sw s8,16(sp) -800352a0: 03a0f021 move s8,sp - if(!(psxSdkFlags & PSX_INIT_SAVESTATE)) -800352a4: 3c028007 lui v0,0x8007 -800352a8: 8c421d00 lw v0,7424(v0) -800352ac: 00000000 nop -800352b0: 30420002 andi v0,v0,0x2 -800352b4: 14400004 bnez v0,800352c8 -800352b8: 00000000 nop - return 0; // can't restore BIOS state if it was not saved previously -800352bc: 00001021 move v0,zero -800352c0: 1000000d b 800352f8 -800352c4: 00000000 nop - - EnterCriticalSection(); -800352c8: 0c00ee04 jal 8003b810 -800352cc: 00000000 nop - memcpy((void*)0x80000000, psxBiosState, 0x10000); -800352d0: 3c028007 lui v0,0x8007 -800352d4: 8c421d04 lw v0,7428(v0) -800352d8: 3c060001 lui a2,0x1 -800352dc: 00402821 move a1,v0 -800352e0: 3c048000 lui a0,0x8000 -800352e4: 0c00d75e jal 80035d78 -800352e8: 00000000 nop - ExitCriticalSection(); -800352ec: 0c00ee0a jal 8003b828 -800352f0: 00000000 nop - - return 1; -800352f4: 24020001 li v0,1 -} -800352f8: 03c0e821 move sp,s8 -800352fc: 8fbf0014 lw ra,20(sp) -80035300: 8fbe0010 lw s8,16(sp) -80035304: 27bd0018 addiu sp,sp,24 -80035308: 03e00008 jr ra -8003530c: 00000000 nop - -80035310 : - -unsigned int PSX_GetInitFlags(void) -{ -80035310: 27bdfff8 addiu sp,sp,-8 -80035314: afbe0004 sw s8,4(sp) -80035318: 03a0f021 move s8,sp - return psxSdkFlags; -8003531c: 3c028007 lui v0,0x8007 -80035320: 8c421d00 lw v0,7424(v0) -} -80035324: 03c0e821 move sp,s8 -80035328: 8fbe0004 lw s8,4(sp) -8003532c: 27bd0008 addiu sp,sp,8 -80035330: 03e00008 jr ra -80035334: 00000000 nop - -80035338 : - -void PSX_WarmReboot(void) -{ -80035338: 27bdffe8 addiu sp,sp,-24 -8003533c: afbf0014 sw ra,20(sp) -80035340: afbe0010 sw s8,16(sp) -80035344: 03a0f021 move s8,sp - if(psxSdkFlags & PSX_INIT_NOBIOS) -80035348: 3c028007 lui v0,0x8007 -8003534c: 8c421d00 lw v0,7424(v0) -80035350: 00000000 nop -80035354: 30420004 andi v0,v0,0x4 -80035358: 1040000b beqz v0,80035388 -8003535c: 00000000 nop -80035360: 10000002 b 8003536c -80035364: 00000000 nop - __asm__("nop"); - } - else - { - if(!(psxSdkFlags & PSX_INIT_CD)) - goto psx_warmreboot_nobios; -80035368: 00000000 nop -void PSX_WarmReboot(void) -{ - if(psxSdkFlags & PSX_INIT_NOBIOS) - { -psx_warmreboot_nobios: - PSX_DeInit(); -8003536c: 0c00d041 jal 80034104 -80035370: 00000000 nop - __asm__("j _start"); -80035374: 08004000 j 80010000 <__text_start> -80035378: 00000000 nop - __asm__("nop"); -8003537c: 00000000 nop - if(!(psxSdkFlags & PSX_INIT_CD)) - goto psx_warmreboot_nobios; - - BIOSWarmReboot(); - } -} -80035380: 10000009 b 800353a8 -80035384: 00000000 nop - __asm__("j _start"); - __asm__("nop"); - } - else - { - if(!(psxSdkFlags & PSX_INIT_CD)) -80035388: 3c028007 lui v0,0x8007 -8003538c: 8c421d00 lw v0,7424(v0) -80035390: 00000000 nop -80035394: 30420001 andi v0,v0,0x1 -80035398: 1040fff3 beqz v0,80035368 -8003539c: 00000000 nop - goto psx_warmreboot_nobios; - - BIOSWarmReboot(); -800353a0: 0c00ee54 jal 8003b950 -800353a4: 00000000 nop - } -} -800353a8: 00000000 nop -800353ac: 03c0e821 move sp,s8 -800353b0: 8fbf0014 lw ra,20(sp) -800353b4: 8fbe0010 lw s8,16(sp) -800353b8: 27bd0018 addiu sp,sp,24 -800353bc: 03e00008 jr ra -800353c0: 00000000 nop - -800353c4 : - -static void *f_ptr[32]; -static int f_ptr_pos = 0; - -int atexit(void (*function)(void)) -{ -800353c4: 27bdfff8 addiu sp,sp,-8 -800353c8: afbe0004 sw s8,4(sp) -800353cc: 03a0f021 move s8,sp -800353d0: afc40008 sw a0,8(s8) - if(f_ptr_pos >= 32) -800353d4: 3c028007 lui v0,0x8007 -800353d8: 8c421d08 lw v0,7432(v0) -800353dc: 00000000 nop -800353e0: 28420020 slti v0,v0,32 -800353e4: 14400004 bnez v0,800353f8 -800353e8: 00000000 nop - return -1; -800353ec: 2402ffff li v0,-1 -800353f0: 1000000f b 80035430 -800353f4: 00000000 nop - - f_ptr[f_ptr_pos++] = function; -800353f8: 3c028007 lui v0,0x8007 -800353fc: 8c421d08 lw v0,7432(v0) -80035400: 00000000 nop -80035404: 24440001 addiu a0,v0,1 -80035408: 3c038007 lui v1,0x8007 -8003540c: ac641d08 sw a0,7432(v1) -80035410: 3c048007 lui a0,0x8007 -80035414: 00021880 sll v1,v0,0x2 -80035418: 24828c78 addiu v0,a0,-29576 -8003541c: 00621021 addu v0,v1,v0 -80035420: 8fc30008 lw v1,8(s8) -80035424: 00000000 nop -80035428: ac430000 sw v1,0(v0) - - return 0; -8003542c: 00001021 move v0,zero -} -80035430: 03c0e821 move sp,s8 -80035434: 8fbe0004 lw s8,4(sp) -80035438: 27bd0008 addiu sp,sp,8 -8003543c: 03e00008 jr ra -80035440: 00000000 nop - -80035444 : - -void call_atexit_callbacks(void) -{ -80035444: 27bdffe0 addiu sp,sp,-32 -80035448: afbf001c sw ra,28(sp) -8003544c: afbe0018 sw s8,24(sp) -80035450: 03a0f021 move s8,sp - int i; - void (*f)(void); - - for(i = (f_ptr_pos - 1); i >= 0; i--) -80035454: 3c028007 lui v0,0x8007 -80035458: 8c421d08 lw v0,7432(v0) -8003545c: 00000000 nop -80035460: 2442ffff addiu v0,v0,-1 -80035464: afc20010 sw v0,16(s8) -80035468: 10000012 b 800354b4 -8003546c: 00000000 nop - (f = f_ptr[i])(); -80035470: 3c028007 lui v0,0x8007 -80035474: 8fc30010 lw v1,16(s8) -80035478: 00000000 nop -8003547c: 00031880 sll v1,v1,0x2 -80035480: 24428c78 addiu v0,v0,-29576 -80035484: 00621021 addu v0,v1,v0 -80035488: 8c420000 lw v0,0(v0) -8003548c: 00000000 nop -80035490: afc20014 sw v0,20(s8) -80035494: 8fc20014 lw v0,20(s8) -80035498: 00000000 nop -8003549c: 0040f809 jalr v0 -800354a0: 00000000 nop -void call_atexit_callbacks(void) -{ - int i; - void (*f)(void); - - for(i = (f_ptr_pos - 1); i >= 0; i--) -800354a4: 8fc20010 lw v0,16(s8) -800354a8: 00000000 nop -800354ac: 2442ffff addiu v0,v0,-1 -800354b0: afc20010 sw v0,16(s8) -800354b4: 8fc20010 lw v0,16(s8) -800354b8: 00000000 nop -800354bc: 0441ffec bgez v0,80035470 -800354c0: 00000000 nop - (f = f_ptr[i])(); -} -800354c4: 00000000 nop -800354c8: 03c0e821 move sp,s8 -800354cc: 8fbf001c lw ra,28(sp) -800354d0: 8fbe0018 lw s8,24(sp) -800354d4: 27bd0020 addiu sp,sp,32 -800354d8: 03e00008 jr ra -800354dc: 00000000 nop - -800354e0 : -extern void *__ctor_list; -extern void *__ctor_end; - -// Function to call static constructors (for C++, etc.) -static void call_ctors(void) -{ -800354e0: 27bdffe0 addiu sp,sp,-32 -800354e4: afbf001c sw ra,28(sp) -800354e8: afbe0018 sw s8,24(sp) -800354ec: 03a0f021 move s8,sp - dprintf("Calling static constructors..\n"); - - void **p = &__ctor_list; -800354f0: 3c028004 lui v0,0x8004 -800354f4: 24422564 addiu v0,v0,9572 -800354f8: afc20010 sw v0,16(s8) - - for (++p; *p != NULL && p < &__ctor_end; p++) -800354fc: 8fc20010 lw v0,16(s8) -80035500: 00000000 nop -80035504: 24420004 addiu v0,v0,4 -80035508: afc20010 sw v0,16(s8) -8003550c: 1000000b b 8003553c -80035510: 00000000 nop - (*(void (**)())p)(); -80035514: 8fc20010 lw v0,16(s8) -80035518: 00000000 nop -8003551c: 8c420000 lw v0,0(v0) -80035520: 00000000 nop -80035524: 0040f809 jalr v0 -80035528: 00000000 nop -{ - dprintf("Calling static constructors..\n"); - - void **p = &__ctor_list; - - for (++p; *p != NULL && p < &__ctor_end; p++) -8003552c: 8fc20010 lw v0,16(s8) -80035530: 00000000 nop -80035534: 24420004 addiu v0,v0,4 -80035538: afc20010 sw v0,16(s8) -8003553c: 8fc20010 lw v0,16(s8) -80035540: 00000000 nop -80035544: 8c420000 lw v0,0(v0) -80035548: 00000000 nop -8003554c: 10400007 beqz v0,8003556c -80035550: 00000000 nop -80035554: 8fc30010 lw v1,16(s8) -80035558: 3c028004 lui v0,0x8004 -8003555c: 2442257c addiu v0,v0,9596 -80035560: 0062102b sltu v0,v1,v0 -80035564: 1440ffeb bnez v0,80035514 -80035568: 00000000 nop - (*(void (**)())p)(); - - dprintf("Finished calling static constructors\n"); - } -8003556c: 00000000 nop -80035570: 03c0e821 move sp,s8 -80035574: 8fbf001c lw ra,28(sp) -80035578: 8fbe0018 lw s8,24(sp) -8003557c: 27bd0020 addiu sp,sp,32 -80035580: 03e00008 jr ra -80035584: 00000000 nop - -80035588 : - -void psxsdk_setup() -{ -80035588: 27bdffe0 addiu sp,sp,-32 -8003558c: afbf001c sw ra,28(sp) -80035590: afbe0018 sw s8,24(sp) -80035594: 03a0f021 move s8,sp - unsigned int x; - - printf("Initializing PSXSDK... \n"); -80035598: 3c028004 lui v0,0x8004 -8003559c: 2444fe70 addiu a0,v0,-400 -800355a0: 0c00ed8f jal 8003b63c -800355a4: 00000000 nop - -// Clear BSS space - for(x = (unsigned int)__bss_start; x < (unsigned int)__bss_end; x++) -800355a8: 3c028004 lui v0,0x8004 -800355ac: 24422584 addiu v0,v0,9604 -800355b0: afc20010 sw v0,16(s8) -800355b4: 10000008 b 800355d8 -800355b8: 00000000 nop - *((unsigned char*)x) = 0; -800355bc: 8fc20010 lw v0,16(s8) -800355c0: 00000000 nop -800355c4: a0400000 sb zero,0(v0) - unsigned int x; - - printf("Initializing PSXSDK... \n"); - -// Clear BSS space - for(x = (unsigned int)__bss_start; x < (unsigned int)__bss_end; x++) -800355c8: 8fc20010 lw v0,16(s8) -800355cc: 00000000 nop -800355d0: 24420001 addiu v0,v0,1 -800355d4: afc20010 sw v0,16(s8) -800355d8: 3c028007 lui v0,0x8007 -800355dc: 24421bf8 addiu v0,v0,7160 -800355e0: 8fc30010 lw v1,16(s8) -800355e4: 00000000 nop -800355e8: 0062102b sltu v0,v1,v0 -800355ec: 1440fff3 bnez v0,800355bc -800355f0: 00000000 nop - *((unsigned char*)x) = 0; - -// Setup memory allocation functions - malloc_setup(); -800355f4: 0c00abb1 jal 8002aec4 -800355f8: 00000000 nop - -// Call static constructors - call_ctors(); -800355fc: 0c00d538 jal 800354e0 -80035600: 00000000 nop -} -80035604: 00000000 nop -80035608: 03c0e821 move sp,s8 -8003560c: 8fbf001c lw ra,28(sp) -80035610: 8fbe0018 lw s8,24(sp) -80035614: 27bd0020 addiu sp,sp,32 -80035618: 03e00008 jr ra -8003561c: 00000000 nop - -80035620 : - -static unsigned int rand_seed = 1; -//static unsigned int rand_next = 0; - -int abs(int x) -{ -80035620: 27bdfff8 addiu sp,sp,-8 -80035624: afbe0004 sw s8,4(sp) -80035628: 03a0f021 move s8,sp -8003562c: afc40008 sw a0,8(s8) - if(x<0)return -x; -80035630: 8fc20008 lw v0,8(s8) -80035634: 00000000 nop -80035638: 04410006 bgez v0,80035654 -8003563c: 00000000 nop -80035640: 8fc20008 lw v0,8(s8) -80035644: 00000000 nop -80035648: 00021023 negu v0,v0 -8003564c: 10000002 b 80035658 -80035650: 00000000 nop - - return x; -80035654: 8fc20008 lw v0,8(s8) -} -80035658: 03c0e821 move sp,s8 -8003565c: 8fbe0004 lw s8,4(sp) -80035660: 27bd0008 addiu sp,sp,8 -80035664: 03e00008 jr ra -80035668: 00000000 nop - -8003566c : - -void srand(unsigned int seed) -{ -8003566c: 27bdfff8 addiu sp,sp,-8 -80035670: afbe0004 sw s8,4(sp) -80035674: 03a0f021 move s8,sp -80035678: afc40008 sw a0,8(s8) - rand_seed = seed; -8003567c: 3c028004 lui v0,0x8004 -80035680: 8fc30008 lw v1,8(s8) -80035684: 00000000 nop -80035688: ac432560 sw v1,9568(v0) -} -8003568c: 00000000 nop -80035690: 03c0e821 move sp,s8 -80035694: 8fbe0004 lw s8,4(sp) -80035698: 27bd0008 addiu sp,sp,8 -8003569c: 03e00008 jr ra -800356a0: 00000000 nop - -800356a4 : - -int rand(void) /* RAND_MAX assumed to be 32767. */ -{ -800356a4: 27bdfff8 addiu sp,sp,-8 -800356a8: afbe0004 sw s8,4(sp) -800356ac: 03a0f021 move s8,sp - rand_seed = rand_seed * 1103515245 + 12345; -800356b0: 3c028004 lui v0,0x8004 -800356b4: 8c432560 lw v1,9568(v0) -800356b8: 3c0241c6 lui v0,0x41c6 -800356bc: 34424e6d ori v0,v0,0x4e6d -800356c0: 00620018 mult v1,v0 -800356c4: 00001012 mflo v0 -800356c8: 24433039 addiu v1,v0,12345 -800356cc: 3c028004 lui v0,0x8004 -800356d0: ac432560 sw v1,9568(v0) - return (unsigned)(rand_seed/65536) % 32768; -800356d4: 3c028004 lui v0,0x8004 -800356d8: 8c422560 lw v0,9568(v0) -800356dc: 00000000 nop -800356e0: 00021402 srl v0,v0,0x10 -800356e4: 30427fff andi v0,v0,0x7fff -} -800356e8: 03c0e821 move sp,s8 -800356ec: 8fbe0004 lw s8,4(sp) -800356f0: 27bd0008 addiu sp,sp,8 -800356f4: 03e00008 jr ra -800356f8: 00000000 nop - -800356fc <__ulltoa_internal__>: - -static char *__ulltoa_internal__(unsigned long long value, char *str, int base, int minus_sign, - unsigned long long maxp ) -{ -800356fc: 27bdffc0 addiu sp,sp,-64 -80035700: afbf003c sw ra,60(sp) -80035704: afbe0038 sw s8,56(sp) -80035708: afb30034 sw s3,52(sp) -8003570c: afb20030 sw s2,48(sp) -80035710: afb1002c sw s1,44(sp) -80035714: afb00028 sw s0,40(sp) -80035718: 03a0f021 move s8,sp -8003571c: afc40040 sw a0,64(s8) -80035720: afc50044 sw a1,68(s8) -80035724: afc60048 sw a2,72(s8) -80035728: afc7004c sw a3,76(s8) - unsigned long long p; - unsigned long long p3; - int c; - int a; - - p = 1; -8003572c: 24020001 li v0,1 -80035730: 00001821 move v1,zero -80035734: afc20010 sw v0,16(s8) -80035738: afc30014 sw v1,20(s8) - - do - { - p3 = p; -8003573c: 8fc20010 lw v0,16(s8) -80035740: 8fc30014 lw v1,20(s8) -80035744: afc20018 sw v0,24(s8) -80035748: afc3001c sw v1,28(s8) - p *= base; -8003574c: 8fc2004c lw v0,76(s8) -80035750: 00000000 nop -80035754: 00408021 move s0,v0 -80035758: 000217c3 sra v0,v0,0x1f -8003575c: 00408821 move s1,v0 -80035760: 8fc20014 lw v0,20(s8) -80035764: 00000000 nop -80035768: 00500018 mult v0,s0 -8003576c: 00001012 mflo v0 -80035770: 8fc30010 lw v1,16(s8) -80035774: 00000000 nop -80035778: 00710018 mult v1,s1 -8003577c: 00001812 mflo v1 -80035780: 00432021 addu a0,v0,v1 -80035784: 8fc20010 lw v0,16(s8) -80035788: 00000000 nop -8003578c: 00500019 multu v0,s0 -80035790: 00001012 mflo v0 -80035794: 00001810 mfhi v1 -80035798: 00832021 addu a0,a0,v1 -8003579c: 00801821 move v1,a0 -800357a0: afc20010 sw v0,16(s8) -800357a4: afc30014 sw v1,20(s8) -800357a8: afc20010 sw v0,16(s8) -800357ac: afc30014 sw v1,20(s8) - - if(maxp && p > maxp) -800357b0: 8fc20058 lw v0,88(s8) -800357b4: 8fc3005c lw v1,92(s8) -800357b8: 00000000 nop -800357bc: 00431025 or v0,v0,v1 -800357c0: 10400012 beqz v0,8003580c <__ulltoa_internal__+0x110> -800357c4: 00000000 nop -800357c8: 8fc30014 lw v1,20(s8) -800357cc: 8fc2005c lw v0,92(s8) -800357d0: 00000000 nop -800357d4: 0043102b sltu v0,v0,v1 -800357d8: 1440002d bnez v0,80035890 <__ulltoa_internal__+0x194> -800357dc: 00000000 nop -800357e0: 8fc30014 lw v1,20(s8) -800357e4: 8fc2005c lw v0,92(s8) -800357e8: 00000000 nop -800357ec: 14620007 bne v1,v0,8003580c <__ulltoa_internal__+0x110> -800357f0: 00000000 nop -800357f4: 8fc30010 lw v1,16(s8) -800357f8: 8fc20058 lw v0,88(s8) -800357fc: 00000000 nop -80035800: 0043102b sltu v0,v0,v1 -80035804: 14400022 bnez v0,80035890 <__ulltoa_internal__+0x194> -80035808: 00000000 nop - break; - }while((p >= p3) && !(p % p3)); -8003580c: 8fc3001c lw v1,28(s8) -80035810: 8fc20014 lw v0,20(s8) -80035814: 00000000 nop -80035818: 0043102b sltu v0,v0,v1 -8003581c: 1440001d bnez v0,80035894 <__ulltoa_internal__+0x198> -80035820: 00000000 nop -80035824: 8fc3001c lw v1,28(s8) -80035828: 8fc20014 lw v0,20(s8) -8003582c: 00000000 nop -80035830: 14620007 bne v1,v0,80035850 <__ulltoa_internal__+0x154> -80035834: 00000000 nop -80035838: 8fc30018 lw v1,24(s8) -8003583c: 8fc20010 lw v0,16(s8) -80035840: 00000000 nop -80035844: 0043102b sltu v0,v0,v1 -80035848: 14400012 bnez v0,80035894 <__ulltoa_internal__+0x198> -8003584c: 00000000 nop -80035850: 8fc20010 lw v0,16(s8) -80035854: 8fc30014 lw v1,20(s8) -80035858: 8fc60018 lw a2,24(s8) -8003585c: 8fc7001c lw a3,28(s8) -80035860: 00402021 move a0,v0 -80035864: 00602821 move a1,v1 -80035868: 0c00f245 jal 8003c914 <__umoddi3> -8003586c: 00000000 nop -80035870: 00402021 move a0,v0 -80035874: 00602821 move a1,v1 -80035878: 00801021 move v0,a0 -8003587c: 00451025 or v0,v0,a1 -80035880: 1040ffae beqz v0,8003573c <__ulltoa_internal__+0x40> -80035884: 00000000 nop -80035888: 10000002 b 80035894 <__ulltoa_internal__+0x198> -8003588c: 00000000 nop - { - p3 = p; - p *= base; - - if(maxp && p > maxp) - break; -80035890: 00000000 nop - }while((p >= p3) && !(p % p3)); - - if(minus_sign) -80035894: 8fc20050 lw v0,80(s8) -80035898: 00000000 nop -8003589c: 10400007 beqz v0,800358bc <__ulltoa_internal__+0x1c0> -800358a0: 00000000 nop - *(str++) = '-'; -800358a4: 8fc20048 lw v0,72(s8) -800358a8: 00000000 nop -800358ac: 24430001 addiu v1,v0,1 -800358b0: afc30048 sw v1,72(s8) -800358b4: 2403002d li v1,45 -800358b8: a0430000 sb v1,0(v0) - - for(a = 0;p3 > 0;p3/=base) -800358bc: afc00024 sw zero,36(s8) -800358c0: 10000041 b 800359c8 <__ulltoa_internal__+0x2cc> -800358c4: 00000000 nop - { - c = value / p3; -800358c8: 8fc60018 lw a2,24(s8) -800358cc: 8fc7001c lw a3,28(s8) -800358d0: 8fc40040 lw a0,64(s8) -800358d4: 8fc50044 lw a1,68(s8) -800358d8: 0c00f0ae jal 8003c2b8 <__udivdi3> -800358dc: 00000000 nop -800358e0: afc20020 sw v0,32(s8) - value %= p3; -800358e4: 8fc20040 lw v0,64(s8) -800358e8: 8fc30044 lw v1,68(s8) -800358ec: 8fc60018 lw a2,24(s8) -800358f0: 8fc7001c lw a3,28(s8) -800358f4: 00402021 move a0,v0 -800358f8: 00602821 move a1,v1 -800358fc: 0c00f245 jal 8003c914 <__umoddi3> -80035900: 00000000 nop -80035904: afc20040 sw v0,64(s8) -80035908: afc30044 sw v1,68(s8) - - if(c) -8003590c: 8fc20020 lw v0,32(s8) -80035910: 00000000 nop -80035914: 10400003 beqz v0,80035924 <__ulltoa_internal__+0x228> -80035918: 00000000 nop - a = 1; -8003591c: 24020001 li v0,1 -80035920: afc20024 sw v0,36(s8) - - if(a) -80035924: 8fc20024 lw v0,36(s8) -80035928: 00000000 nop -8003592c: 10400019 beqz v0,80035994 <__ulltoa_internal__+0x298> -80035930: 00000000 nop - { - if(c <= 9) -80035934: 8fc20020 lw v0,32(s8) -80035938: 00000000 nop -8003593c: 2842000a slti v0,v0,10 -80035940: 10400007 beqz v0,80035960 <__ulltoa_internal__+0x264> -80035944: 00000000 nop - c += '0'; -80035948: 8fc20020 lw v0,32(s8) -8003594c: 00000000 nop -80035950: 24420030 addiu v0,v0,48 -80035954: afc20020 sw v0,32(s8) -80035958: 10000005 b 80035970 <__ulltoa_internal__+0x274> -8003595c: 00000000 nop - else - c = (c - 10) + 'A'; -80035960: 8fc20020 lw v0,32(s8) -80035964: 00000000 nop -80035968: 24420037 addiu v0,v0,55 -8003596c: afc20020 sw v0,32(s8) - - *(str++) = c; -80035970: 8fc20048 lw v0,72(s8) -80035974: 00000000 nop -80035978: 24430001 addiu v1,v0,1 -8003597c: afc30048 sw v1,72(s8) -80035980: 8fc30020 lw v1,32(s8) -80035984: 00000000 nop -80035988: 00031e00 sll v1,v1,0x18 -8003598c: 00031e03 sra v1,v1,0x18 -80035990: a0430000 sb v1,0(v0) - }while((p >= p3) && !(p % p3)); - - if(minus_sign) - *(str++) = '-'; - - for(a = 0;p3 > 0;p3/=base) -80035994: 8fc2004c lw v0,76(s8) -80035998: 00000000 nop -8003599c: 00409021 move s2,v0 -800359a0: 000217c3 sra v0,v0,0x1f -800359a4: 00409821 move s3,v0 -800359a8: 02403021 move a2,s2 -800359ac: 02603821 move a3,s3 -800359b0: 8fc40018 lw a0,24(s8) -800359b4: 8fc5001c lw a1,28(s8) -800359b8: 0c00f0ae jal 8003c2b8 <__udivdi3> -800359bc: 00000000 nop -800359c0: afc20018 sw v0,24(s8) -800359c4: afc3001c sw v1,28(s8) -800359c8: 8fc20018 lw v0,24(s8) -800359cc: 8fc3001c lw v1,28(s8) -800359d0: 00000000 nop -800359d4: 00431025 or v0,v0,v1 -800359d8: 1440ffbb bnez v0,800358c8 <__ulltoa_internal__+0x1cc> -800359dc: 00000000 nop - - *(str++) = c; - } - } - - *str = '\0'; -800359e0: 8fc20048 lw v0,72(s8) -800359e4: 00000000 nop -800359e8: a0400000 sb zero,0(v0) - - return str; -800359ec: 8fc20048 lw v0,72(s8) -} -800359f0: 03c0e821 move sp,s8 -800359f4: 8fbf003c lw ra,60(sp) -800359f8: 8fbe0038 lw s8,56(sp) -800359fc: 8fb30034 lw s3,52(sp) -80035a00: 8fb20030 lw s2,48(sp) -80035a04: 8fb1002c lw s1,44(sp) -80035a08: 8fb00028 lw s0,40(sp) -80035a0c: 27bd0040 addiu sp,sp,64 -80035a10: 03e00008 jr ra -80035a14: 00000000 nop - -80035a18 : - -char *ulltoa(unsigned long long value, char *str, int base) -{ -80035a18: 27bdffd8 addiu sp,sp,-40 -80035a1c: afbf0024 sw ra,36(sp) -80035a20: afbe0020 sw s8,32(sp) -80035a24: 03a0f021 move s8,sp -80035a28: afc40028 sw a0,40(s8) -80035a2c: afc5002c sw a1,44(s8) -80035a30: afc60030 sw a2,48(s8) -80035a34: afc70034 sw a3,52(s8) - return __ulltoa_internal__(value, str, base, 0, 0); -80035a38: 00001021 move v0,zero -80035a3c: 00001821 move v1,zero -80035a40: afa20018 sw v0,24(sp) -80035a44: afa3001c sw v1,28(sp) -80035a48: afa00010 sw zero,16(sp) -80035a4c: 8fc70034 lw a3,52(s8) -80035a50: 8fc60030 lw a2,48(s8) -80035a54: 8fc40028 lw a0,40(s8) -80035a58: 8fc5002c lw a1,44(s8) -80035a5c: 0c00d5bf jal 800356fc <__ulltoa_internal__> -80035a60: 00000000 nop -} -80035a64: 03c0e821 move sp,s8 -80035a68: 8fbf0024 lw ra,36(sp) -80035a6c: 8fbe0020 lw s8,32(sp) -80035a70: 27bd0028 addiu sp,sp,40 -80035a74: 03e00008 jr ra -80035a78: 00000000 nop - -80035a7c : - -char *ultoa(unsigned long value, char *str, int base) -{ -80035a7c: 27bdffd8 addiu sp,sp,-40 -80035a80: afbf0024 sw ra,36(sp) -80035a84: afbe0020 sw s8,32(sp) -80035a88: 03a0f021 move s8,sp -80035a8c: afc40028 sw a0,40(s8) -80035a90: afc5002c sw a1,44(s8) -80035a94: afc60030 sw a2,48(s8) - return __ulltoa_internal__(value, str, base, 0, (sizeof(long)==8)?0:0xFFFFFFFF); -80035a98: 8fc20028 lw v0,40(s8) -80035a9c: 00000000 nop -80035aa0: 00404021 move t0,v0 -80035aa4: 00004821 move t1,zero -80035aa8: 2402ffff li v0,-1 -80035aac: 00001821 move v1,zero -80035ab0: afa20018 sw v0,24(sp) -80035ab4: afa3001c sw v1,28(sp) -80035ab8: afa00010 sw zero,16(sp) -80035abc: 8fc70030 lw a3,48(s8) -80035ac0: 8fc6002c lw a2,44(s8) -80035ac4: 01002021 move a0,t0 -80035ac8: 01202821 move a1,t1 -80035acc: 0c00d5bf jal 800356fc <__ulltoa_internal__> -80035ad0: 00000000 nop -} -80035ad4: 03c0e821 move sp,s8 -80035ad8: 8fbf0024 lw ra,36(sp) -80035adc: 8fbe0020 lw s8,32(sp) -80035ae0: 27bd0028 addiu sp,sp,40 -80035ae4: 03e00008 jr ra -80035ae8: 00000000 nop - -80035aec : - -char *utoa(unsigned int value, char *str, int base) -{ -80035aec: 27bdffd8 addiu sp,sp,-40 -80035af0: afbf0024 sw ra,36(sp) -80035af4: afbe0020 sw s8,32(sp) -80035af8: 03a0f021 move s8,sp -80035afc: afc40028 sw a0,40(s8) -80035b00: afc5002c sw a1,44(s8) -80035b04: afc60030 sw a2,48(s8) - return __ulltoa_internal__(value, str, base, 0, 0xFFFFFFFF); -80035b08: 8fc20028 lw v0,40(s8) -80035b0c: 00000000 nop -80035b10: 00404021 move t0,v0 -80035b14: 00004821 move t1,zero -80035b18: 2402ffff li v0,-1 -80035b1c: 00001821 move v1,zero -80035b20: afa20018 sw v0,24(sp) -80035b24: afa3001c sw v1,28(sp) -80035b28: afa00010 sw zero,16(sp) -80035b2c: 8fc70030 lw a3,48(s8) -80035b30: 8fc6002c lw a2,44(s8) -80035b34: 01002021 move a0,t0 -80035b38: 01202821 move a1,t1 -80035b3c: 0c00d5bf jal 800356fc <__ulltoa_internal__> -80035b40: 00000000 nop -} -80035b44: 03c0e821 move sp,s8 -80035b48: 8fbf0024 lw ra,36(sp) -80035b4c: 8fbe0020 lw s8,32(sp) -80035b50: 27bd0028 addiu sp,sp,40 -80035b54: 03e00008 jr ra -80035b58: 00000000 nop - -80035b5c : - -char *lltoa(long long value, char *str, int base) -{ -80035b5c: 27bdffd8 addiu sp,sp,-40 -80035b60: afbf0024 sw ra,36(sp) -80035b64: afbe0020 sw s8,32(sp) -80035b68: 03a0f021 move s8,sp -80035b6c: afc40028 sw a0,40(s8) -80035b70: afc5002c sw a1,44(s8) -80035b74: afc60030 sw a2,48(s8) -80035b78: afc70034 sw a3,52(s8) - return __ulltoa_internal__((value<0)?-value:value, str, base, value<0, 0); -80035b7c: 8fc20028 lw v0,40(s8) -80035b80: 8fc3002c lw v1,44(s8) -80035b84: 00000000 nop -80035b88: 0461000a bgez v1,80035bb4 -80035b8c: 00000000 nop -80035b90: 00003021 move a2,zero -80035b94: 00003821 move a3,zero -80035b98: 00c22023 subu a0,a2,v0 -80035b9c: 00c4402b sltu t0,a2,a0 -80035ba0: 00e32823 subu a1,a3,v1 -80035ba4: 00a81023 subu v0,a1,t0 -80035ba8: 00402821 move a1,v0 -80035bac: 00801021 move v0,a0 -80035bb0: 00a01821 move v1,a1 -80035bb4: 00402021 move a0,v0 -80035bb8: 00602821 move a1,v1 -80035bbc: 8fc2002c lw v0,44(s8) -80035bc0: 00000000 nop -80035bc4: 000217c2 srl v0,v0,0x1f -80035bc8: 304200ff andi v0,v0,0xff -80035bcc: 00003021 move a2,zero -80035bd0: 00003821 move a3,zero -80035bd4: afa60018 sw a2,24(sp) -80035bd8: afa7001c sw a3,28(sp) -80035bdc: afa20010 sw v0,16(sp) -80035be0: 8fc70034 lw a3,52(s8) -80035be4: 8fc60030 lw a2,48(s8) -80035be8: 0c00d5bf jal 800356fc <__ulltoa_internal__> -80035bec: 00000000 nop -} -80035bf0: 03c0e821 move sp,s8 -80035bf4: 8fbf0024 lw ra,36(sp) -80035bf8: 8fbe0020 lw s8,32(sp) -80035bfc: 27bd0028 addiu sp,sp,40 -80035c00: 03e00008 jr ra -80035c04: 00000000 nop - -80035c08 : - -char *ltoa(long value, char *str, int base) -{ -80035c08: 27bdffd8 addiu sp,sp,-40 -80035c0c: afbf0024 sw ra,36(sp) -80035c10: afbe0020 sw s8,32(sp) -80035c14: 03a0f021 move s8,sp -80035c18: afc40028 sw a0,40(s8) -80035c1c: afc5002c sw a1,44(s8) -80035c20: afc60030 sw a2,48(s8) - return __ulltoa_internal__((value<0)?-value:value, str, base, value<0, (sizeof(long)==8)?0:0xFFFFFFFF); -80035c24: 8fc20028 lw v0,40(s8) -80035c28: 00000000 nop -80035c2c: 04410002 bgez v0,80035c38 -80035c30: 00000000 nop -80035c34: 00021023 negu v0,v0 -80035c38: 00404021 move t0,v0 -80035c3c: 000217c3 sra v0,v0,0x1f -80035c40: 00404821 move t1,v0 -80035c44: 8fc20028 lw v0,40(s8) -80035c48: 00000000 nop -80035c4c: 000217c2 srl v0,v0,0x1f -80035c50: 304200ff andi v0,v0,0xff -80035c54: 00402021 move a0,v0 -80035c58: 2402ffff li v0,-1 -80035c5c: 00001821 move v1,zero -80035c60: afa20018 sw v0,24(sp) -80035c64: afa3001c sw v1,28(sp) -80035c68: afa40010 sw a0,16(sp) -80035c6c: 8fc70030 lw a3,48(s8) -80035c70: 8fc6002c lw a2,44(s8) -80035c74: 01002021 move a0,t0 -80035c78: 01202821 move a1,t1 -80035c7c: 0c00d5bf jal 800356fc <__ulltoa_internal__> -80035c80: 00000000 nop -} -80035c84: 03c0e821 move sp,s8 -80035c88: 8fbf0024 lw ra,36(sp) -80035c8c: 8fbe0020 lw s8,32(sp) -80035c90: 27bd0028 addiu sp,sp,40 -80035c94: 03e00008 jr ra -80035c98: 00000000 nop - -80035c9c : - -char *itoa(int value, char *str, int base) -{ -80035c9c: 27bdffd8 addiu sp,sp,-40 -80035ca0: afbf0024 sw ra,36(sp) -80035ca4: afbe0020 sw s8,32(sp) -80035ca8: 03a0f021 move s8,sp -80035cac: afc40028 sw a0,40(s8) -80035cb0: afc5002c sw a1,44(s8) -80035cb4: afc60030 sw a2,48(s8) - return __ulltoa_internal__((value<0)?-value:value, str, base, value<0, 0xFFFFFFFF); -80035cb8: 8fc20028 lw v0,40(s8) -80035cbc: 00000000 nop -80035cc0: 04410002 bgez v0,80035ccc -80035cc4: 00000000 nop -80035cc8: 00021023 negu v0,v0 -80035ccc: 00404021 move t0,v0 -80035cd0: 000217c3 sra v0,v0,0x1f -80035cd4: 00404821 move t1,v0 -80035cd8: 8fc20028 lw v0,40(s8) -80035cdc: 00000000 nop -80035ce0: 000217c2 srl v0,v0,0x1f -80035ce4: 304200ff andi v0,v0,0xff -80035ce8: 00402021 move a0,v0 -80035cec: 2402ffff li v0,-1 -80035cf0: 00001821 move v1,zero -80035cf4: afa20018 sw v0,24(sp) -80035cf8: afa3001c sw v1,28(sp) -80035cfc: afa40010 sw a0,16(sp) -80035d00: 8fc70030 lw a3,48(s8) -80035d04: 8fc6002c lw a2,44(s8) -80035d08: 01002021 move a0,t0 -80035d0c: 01202821 move a1,t1 -80035d10: 0c00d5bf jal 800356fc <__ulltoa_internal__> -80035d14: 00000000 nop -} -80035d18: 03c0e821 move sp,s8 -80035d1c: 8fbf0024 lw ra,36(sp) -80035d20: 8fbe0020 lw s8,32(sp) -80035d24: 27bd0028 addiu sp,sp,40 -80035d28: 03e00008 jr ra -80035d2c: 00000000 nop - -80035d30 : - -void abort(void) -{ -80035d30: 27bdffe8 addiu sp,sp,-24 -80035d34: afbf0014 sw ra,20(sp) -80035d38: afbe0010 sw s8,16(sp) -80035d3c: 03a0f021 move s8,sp - printf("abort(): Abnormal program termination\n"); -80035d40: 3c028004 lui v0,0x8004 -80035d44: 2444fe8c addiu a0,v0,-372 -80035d48: 0c00ed8f jal 8003b63c -80035d4c: 00000000 nop - exit(1); -80035d50: 24040001 li a0,1 -80035d54: 0c0040e7 jal 8001039c -80035d58: 00000000 nop -} -80035d5c: 00000000 nop -80035d60: 03c0e821 move sp,s8 -80035d64: 8fbf0014 lw ra,20(sp) -80035d68: 8fbe0010 lw s8,16(sp) -80035d6c: 27bd0018 addiu sp,sp,24 -80035d70: 03e00008 jr ra -80035d74: 00000000 nop - -80035d78 : -#include -#include -#include - -void *memcpy(void *dst, const void *src, size_t len) -{ -80035d78: 27bdfff0 addiu sp,sp,-16 -80035d7c: afbe000c sw s8,12(sp) -80035d80: 03a0f021 move s8,sp -80035d84: afc40010 sw a0,16(s8) -80035d88: afc50014 sw a1,20(s8) -80035d8c: afc60018 sw a2,24(s8) - void *dst2 = dst; -80035d90: 8fc20010 lw v0,16(s8) -80035d94: 00000000 nop -80035d98: afc20000 sw v0,0(s8) - - while(len--) -80035d9c: 1000000c b 80035dd0 -80035da0: 00000000 nop - *(((unsigned char*)dst++)) = *(((unsigned char*)src++)); -80035da4: 8fc20010 lw v0,16(s8) -80035da8: 00000000 nop -80035dac: 24430001 addiu v1,v0,1 -80035db0: afc30010 sw v1,16(s8) -80035db4: 8fc30014 lw v1,20(s8) -80035db8: 00000000 nop -80035dbc: 24640001 addiu a0,v1,1 -80035dc0: afc40014 sw a0,20(s8) -80035dc4: 90630000 lbu v1,0(v1) -80035dc8: 00000000 nop -80035dcc: a0430000 sb v1,0(v0) - -void *memcpy(void *dst, const void *src, size_t len) -{ - void *dst2 = dst; - - while(len--) -80035dd0: 8fc20018 lw v0,24(s8) -80035dd4: 00000000 nop -80035dd8: 2443ffff addiu v1,v0,-1 -80035ddc: afc30018 sw v1,24(s8) -80035de0: 1440fff0 bnez v0,80035da4 -80035de4: 00000000 nop - *(((unsigned char*)dst++)) = *(((unsigned char*)src++)); - - return dst2; -80035de8: 8fc20000 lw v0,0(s8) -} -80035dec: 03c0e821 move sp,s8 -80035df0: 8fbe000c lw s8,12(sp) -80035df4: 27bd0010 addiu sp,sp,16 -80035df8: 03e00008 jr ra -80035dfc: 00000000 nop - -80035e00 : - -void *memccpy(void *dst, const void *src, int c, size_t len) -{ -80035e00: 27bdfff0 addiu sp,sp,-16 -80035e04: afbe000c sw s8,12(sp) -80035e08: 03a0f021 move s8,sp -80035e0c: afc40010 sw a0,16(s8) -80035e10: afc50014 sw a1,20(s8) -80035e14: afc60018 sw a2,24(s8) -80035e18: afc7001c sw a3,28(s8) - unsigned char c2; - - while(len--) -80035e1c: 10000017 b 80035e7c -80035e20: 00000000 nop - { - *(((unsigned char*)dst++)) = ( c2 = *(((unsigned char*)src++)) ); -80035e24: 8fc20010 lw v0,16(s8) -80035e28: 00000000 nop -80035e2c: 24430001 addiu v1,v0,1 -80035e30: afc30010 sw v1,16(s8) -80035e34: 8fc30014 lw v1,20(s8) -80035e38: 00000000 nop -80035e3c: 24640001 addiu a0,v1,1 -80035e40: afc40014 sw a0,20(s8) -80035e44: 90630000 lbu v1,0(v1) -80035e48: 00000000 nop -80035e4c: a3c30000 sb v1,0(s8) -80035e50: 93c30000 lbu v1,0(s8) -80035e54: 00000000 nop -80035e58: a0430000 sb v1,0(v0) - - if(c2 == c) -80035e5c: 93c30000 lbu v1,0(s8) -80035e60: 8fc20018 lw v0,24(s8) -80035e64: 00000000 nop -80035e68: 14620004 bne v1,v0,80035e7c -80035e6c: 00000000 nop - return (void*)src; -80035e70: 8fc20014 lw v0,20(s8) -80035e74: 10000008 b 80035e98 -80035e78: 00000000 nop - -void *memccpy(void *dst, const void *src, int c, size_t len) -{ - unsigned char c2; - - while(len--) -80035e7c: 8fc2001c lw v0,28(s8) -80035e80: 00000000 nop -80035e84: 2443ffff addiu v1,v0,-1 -80035e88: afc3001c sw v1,28(s8) -80035e8c: 1440ffe5 bnez v0,80035e24 -80035e90: 00000000 nop - - if(c2 == c) - return (void*)src; - } - - return NULL; -80035e94: 00001021 move v0,zero -} -80035e98: 03c0e821 move sp,s8 -80035e9c: 8fbe000c lw s8,12(sp) -80035ea0: 27bd0010 addiu sp,sp,16 -80035ea4: 03e00008 jr ra -80035ea8: 00000000 nop - -80035eac : - -void *memset(void *dst , char c , size_t n) -{ -80035eac: 27bdfff0 addiu sp,sp,-16 -80035eb0: afbe000c sw s8,12(sp) -80035eb4: 03a0f021 move s8,sp -80035eb8: afc40010 sw a0,16(s8) -80035ebc: 00a01021 move v0,a1 -80035ec0: afc60018 sw a2,24(s8) -80035ec4: a3c20014 sb v0,20(s8) - unsigned char *dstc = (unsigned char*)dst; -80035ec8: 8fc20010 lw v0,16(s8) -80035ecc: 00000000 nop -80035ed0: afc20004 sw v0,4(s8) - int x; - - for(x = 0; x < n; x++) -80035ed4: afc00000 sw zero,0(s8) -80035ed8: 1000000c b 80035f0c -80035edc: 00000000 nop - dstc[x] = c; -80035ee0: 8fc20000 lw v0,0(s8) -80035ee4: 8fc30004 lw v1,4(s8) -80035ee8: 00000000 nop -80035eec: 00621021 addu v0,v1,v0 -80035ef0: 93c30014 lbu v1,20(s8) -80035ef4: 00000000 nop -80035ef8: a0430000 sb v1,0(v0) -void *memset(void *dst , char c , size_t n) -{ - unsigned char *dstc = (unsigned char*)dst; - int x; - - for(x = 0; x < n; x++) -80035efc: 8fc20000 lw v0,0(s8) -80035f00: 00000000 nop -80035f04: 24420001 addiu v0,v0,1 -80035f08: afc20000 sw v0,0(s8) -80035f0c: 8fc30000 lw v1,0(s8) -80035f10: 8fc20018 lw v0,24(s8) -80035f14: 00000000 nop -80035f18: 0062102b sltu v0,v1,v0 -80035f1c: 1440fff0 bnez v0,80035ee0 -80035f20: 00000000 nop - dstc[x] = c; - - return dst; -80035f24: 8fc20010 lw v0,16(s8) -} -80035f28: 03c0e821 move sp,s8 -80035f2c: 8fbe000c lw s8,12(sp) -80035f30: 27bd0010 addiu sp,sp,16 -80035f34: 03e00008 jr ra -80035f38: 00000000 nop - -80035f3c : - -int memcmp(const void *b1, const void *b2, size_t n) -{ -80035f3c: 27bdffe8 addiu sp,sp,-24 -80035f40: afbe0014 sw s8,20(sp) -80035f44: 03a0f021 move s8,sp -80035f48: afc40018 sw a0,24(s8) -80035f4c: afc5001c sw a1,28(s8) -80035f50: afc60020 sw a2,32(s8) - int x; - unsigned char *bp1 = (unsigned char*)b1; -80035f54: 8fc20018 lw v0,24(s8) -80035f58: 00000000 nop -80035f5c: afc20004 sw v0,4(s8) - unsigned char *bp2 = (unsigned char*)b2; -80035f60: 8fc2001c lw v0,28(s8) -80035f64: 00000000 nop -80035f68: afc20008 sw v0,8(s8) - - for(x = 0; x < n; x++) -80035f6c: afc00000 sw zero,0(s8) -80035f70: 10000022 b 80035ffc -80035f74: 00000000 nop - if(bp1[x] != bp2[x]) -80035f78: 8fc20000 lw v0,0(s8) -80035f7c: 8fc30004 lw v1,4(s8) -80035f80: 00000000 nop -80035f84: 00621021 addu v0,v1,v0 -80035f88: 90430000 lbu v1,0(v0) -80035f8c: 8fc20000 lw v0,0(s8) -80035f90: 8fc40008 lw a0,8(s8) -80035f94: 00000000 nop -80035f98: 00821021 addu v0,a0,v0 -80035f9c: 90420000 lbu v0,0(v0) -80035fa0: 00000000 nop -80035fa4: 10620011 beq v1,v0,80035fec -80035fa8: 00000000 nop - return (bp1[x] - bp2[x]); -80035fac: 8fc20000 lw v0,0(s8) -80035fb0: 8fc30004 lw v1,4(s8) -80035fb4: 00000000 nop -80035fb8: 00621021 addu v0,v1,v0 -80035fbc: 90420000 lbu v0,0(v0) -80035fc0: 00000000 nop -80035fc4: 00402021 move a0,v0 -80035fc8: 8fc20000 lw v0,0(s8) -80035fcc: 8fc30008 lw v1,8(s8) -80035fd0: 00000000 nop -80035fd4: 00621021 addu v0,v1,v0 -80035fd8: 90420000 lbu v0,0(v0) -80035fdc: 00000000 nop -80035fe0: 00821023 subu v0,a0,v0 -80035fe4: 1000000c b 80036018 -80035fe8: 00000000 nop -{ - int x; - unsigned char *bp1 = (unsigned char*)b1; - unsigned char *bp2 = (unsigned char*)b2; - - for(x = 0; x < n; x++) -80035fec: 8fc20000 lw v0,0(s8) -80035ff0: 00000000 nop -80035ff4: 24420001 addiu v0,v0,1 -80035ff8: afc20000 sw v0,0(s8) -80035ffc: 8fc30000 lw v1,0(s8) -80036000: 8fc20020 lw v0,32(s8) -80036004: 00000000 nop -80036008: 0062102b sltu v0,v1,v0 -8003600c: 1440ffda bnez v0,80035f78 -80036010: 00000000 nop - if(bp1[x] != bp2[x]) - return (bp1[x] - bp2[x]); - - return 0; -80036014: 00001021 move v0,zero -} -80036018: 03c0e821 move sp,s8 -8003601c: 8fbe0014 lw s8,20(sp) -80036020: 27bd0018 addiu sp,sp,24 -80036024: 03e00008 jr ra -80036028: 00000000 nop - -8003602c : - -void *memmove(void *dst, const void *src, size_t len) -{ -8003602c: 27bdfff0 addiu sp,sp,-16 -80036030: afbe000c sw s8,12(sp) -80036034: 03a0f021 move s8,sp -80036038: afc40010 sw a0,16(s8) -8003603c: afc50014 sw a1,20(s8) -80036040: afc60018 sw a2,24(s8) - void *dst2 = dst; -80036044: 8fc20010 lw v0,16(s8) -80036048: 00000000 nop -8003604c: afc20000 sw v0,0(s8) - - dst+=len-1; -80036050: 8fc20018 lw v0,24(s8) -80036054: 00000000 nop -80036058: 2442ffff addiu v0,v0,-1 -8003605c: 8fc30010 lw v1,16(s8) -80036060: 00000000 nop -80036064: 00621021 addu v0,v1,v0 -80036068: afc20010 sw v0,16(s8) - src+=len-1; -8003606c: 8fc20018 lw v0,24(s8) -80036070: 00000000 nop -80036074: 2442ffff addiu v0,v0,-1 -80036078: 8fc30014 lw v1,20(s8) -8003607c: 00000000 nop -80036080: 00621021 addu v0,v1,v0 -80036084: afc20014 sw v0,20(s8) - - while(len--) -80036088: 1000000c b 800360bc -8003608c: 00000000 nop - *(((unsigned char*)dst--)) = *(((unsigned char*)src--)); -80036090: 8fc20010 lw v0,16(s8) -80036094: 00000000 nop -80036098: 2443ffff addiu v1,v0,-1 -8003609c: afc30010 sw v1,16(s8) -800360a0: 8fc30014 lw v1,20(s8) -800360a4: 00000000 nop -800360a8: 2464ffff addiu a0,v1,-1 -800360ac: afc40014 sw a0,20(s8) -800360b0: 90630000 lbu v1,0(v1) -800360b4: 00000000 nop -800360b8: a0430000 sb v1,0(v0) - void *dst2 = dst; - - dst+=len-1; - src+=len-1; - - while(len--) -800360bc: 8fc20018 lw v0,24(s8) -800360c0: 00000000 nop -800360c4: 2443ffff addiu v1,v0,-1 -800360c8: afc30018 sw v1,24(s8) -800360cc: 1440fff0 bnez v0,80036090 -800360d0: 00000000 nop - *(((unsigned char*)dst--)) = *(((unsigned char*)src--)); - - return dst2; -800360d4: 8fc20000 lw v0,0(s8) -} -800360d8: 03c0e821 move sp,s8 -800360dc: 8fbe000c lw s8,12(sp) -800360e0: 27bd0010 addiu sp,sp,16 -800360e4: 03e00008 jr ra -800360e8: 00000000 nop - -800360ec : - -void *memchr(void *s , int c , size_t n) -{ -800360ec: 27bdfff8 addiu sp,sp,-8 -800360f0: afbe0004 sw s8,4(sp) -800360f4: 03a0f021 move s8,sp -800360f8: afc40008 sw a0,8(s8) -800360fc: afc5000c sw a1,12(s8) -80036100: afc60010 sw a2,16(s8) - while(n--) -80036104: 10000012 b 80036150 -80036108: 00000000 nop - { - if(*((unsigned char*)s) == (unsigned char)c) -8003610c: 8fc20008 lw v0,8(s8) -80036110: 00000000 nop -80036114: 90420000 lbu v0,0(v0) -80036118: 00000000 nop -8003611c: 00401821 move v1,v0 -80036120: 8fc2000c lw v0,12(s8) -80036124: 00000000 nop -80036128: 304200ff andi v0,v0,0xff -8003612c: 14620004 bne v1,v0,80036140 -80036130: 00000000 nop - return s; -80036134: 8fc20008 lw v0,8(s8) -80036138: 1000000c b 8003616c -8003613c: 00000000 nop - - s++; -80036140: 8fc20008 lw v0,8(s8) -80036144: 00000000 nop -80036148: 24420001 addiu v0,v0,1 -8003614c: afc20008 sw v0,8(s8) - return dst2; -} - -void *memchr(void *s , int c , size_t n) -{ - while(n--) -80036150: 8fc20010 lw v0,16(s8) -80036154: 00000000 nop -80036158: 2443ffff addiu v1,v0,-1 -8003615c: afc30010 sw v1,16(s8) -80036160: 1440ffea bnez v0,8003610c -80036164: 00000000 nop - return s; - - s++; - } - - return NULL; -80036168: 00001021 move v0,zero -} -8003616c: 03c0e821 move sp,s8 -80036170: 8fbe0004 lw s8,4(sp) -80036174: 27bd0008 addiu sp,sp,8 -80036178: 03e00008 jr ra -8003617c: 00000000 nop - -80036180 : - -char *strncpy(char *dst, const char *src, size_t len) -{ -80036180: 27bdfff0 addiu sp,sp,-16 -80036184: afbe000c sw s8,12(sp) -80036188: 03a0f021 move s8,sp -8003618c: afc40010 sw a0,16(s8) -80036190: afc50014 sw a1,20(s8) -80036194: afc60018 sw a2,24(s8) - char *odst=dst; -80036198: 8fc20010 lw v0,16(s8) -8003619c: 00000000 nop -800361a0: afc20000 sw v0,0(s8) - - while(*src && len) -800361a4: 10000010 b 800361e8 -800361a8: 00000000 nop - { - *(dst++) = *(src++); -800361ac: 8fc20010 lw v0,16(s8) -800361b0: 00000000 nop -800361b4: 24430001 addiu v1,v0,1 -800361b8: afc30010 sw v1,16(s8) -800361bc: 8fc30014 lw v1,20(s8) -800361c0: 00000000 nop -800361c4: 24640001 addiu a0,v1,1 -800361c8: afc40014 sw a0,20(s8) -800361cc: 80630000 lb v1,0(v1) -800361d0: 00000000 nop -800361d4: a0430000 sb v1,0(v0) - len--; -800361d8: 8fc20018 lw v0,24(s8) -800361dc: 00000000 nop -800361e0: 2442ffff addiu v0,v0,-1 -800361e4: afc20018 sw v0,24(s8) - -char *strncpy(char *dst, const char *src, size_t len) -{ - char *odst=dst; - - while(*src && len) -800361e8: 8fc20014 lw v0,20(s8) -800361ec: 00000000 nop -800361f0: 80420000 lb v0,0(v0) -800361f4: 00000000 nop -800361f8: 10400005 beqz v0,80036210 -800361fc: 00000000 nop -80036200: 8fc20018 lw v0,24(s8) -80036204: 00000000 nop -80036208: 1440ffe8 bnez v0,800361ac -8003620c: 00000000 nop - { - *(dst++) = *(src++); - len--; - } - - if(len)*dst = 0; -80036210: 8fc20018 lw v0,24(s8) -80036214: 00000000 nop -80036218: 10400004 beqz v0,8003622c -8003621c: 00000000 nop -80036220: 8fc20010 lw v0,16(s8) -80036224: 00000000 nop -80036228: a0400000 sb zero,0(v0) - - return odst; -8003622c: 8fc20000 lw v0,0(s8) -} -80036230: 03c0e821 move sp,s8 -80036234: 8fbe000c lw s8,12(sp) -80036238: 27bd0010 addiu sp,sp,16 -8003623c: 03e00008 jr ra -80036240: 00000000 nop - -80036244 : - -char *strcpy(char *dst, const char *src) -{ -80036244: 27bdfff0 addiu sp,sp,-16 -80036248: afbe000c sw s8,12(sp) -8003624c: 03a0f021 move s8,sp -80036250: afc40010 sw a0,16(s8) -80036254: afc50014 sw a1,20(s8) - char *odst = dst; -80036258: 8fc20010 lw v0,16(s8) -8003625c: 00000000 nop -80036260: afc20000 sw v0,0(s8) - - while((*(dst++) = *(src++))); -80036264: 00000000 nop -80036268: 8fc20010 lw v0,16(s8) -8003626c: 00000000 nop -80036270: 24430001 addiu v1,v0,1 -80036274: afc30010 sw v1,16(s8) -80036278: 8fc30014 lw v1,20(s8) -8003627c: 00000000 nop -80036280: 24640001 addiu a0,v1,1 -80036284: afc40014 sw a0,20(s8) -80036288: 80630000 lb v1,0(v1) -8003628c: 00000000 nop -80036290: a0430000 sb v1,0(v0) -80036294: 80420000 lb v0,0(v0) -80036298: 00000000 nop -8003629c: 1440fff2 bnez v0,80036268 -800362a0: 00000000 nop - return odst; -800362a4: 8fc20000 lw v0,0(s8) -} -800362a8: 03c0e821 move sp,s8 -800362ac: 8fbe000c lw s8,12(sp) -800362b0: 27bd0010 addiu sp,sp,16 -800362b4: 03e00008 jr ra -800362b8: 00000000 nop - -800362bc : - -int strlen(const char *str) -{ -800362bc: 27bdfff0 addiu sp,sp,-16 -800362c0: afbe000c sw s8,12(sp) -800362c4: 03a0f021 move s8,sp -800362c8: afc40010 sw a0,16(s8) - int i = 0; -800362cc: afc00000 sw zero,0(s8) - while(*(str++))i++; -800362d0: 10000005 b 800362e8 -800362d4: 00000000 nop -800362d8: 8fc20000 lw v0,0(s8) -800362dc: 00000000 nop -800362e0: 24420001 addiu v0,v0,1 -800362e4: afc20000 sw v0,0(s8) -800362e8: 8fc20010 lw v0,16(s8) -800362ec: 00000000 nop -800362f0: 24430001 addiu v1,v0,1 -800362f4: afc30010 sw v1,16(s8) -800362f8: 80420000 lb v0,0(v0) -800362fc: 00000000 nop -80036300: 1440fff5 bnez v0,800362d8 -80036304: 00000000 nop - return i; -80036308: 8fc20000 lw v0,0(s8) -} -8003630c: 03c0e821 move sp,s8 -80036310: 8fbe000c lw s8,12(sp) -80036314: 27bd0010 addiu sp,sp,16 -80036318: 03e00008 jr ra -8003631c: 00000000 nop - -80036320 : - -char *strchr(const char *s, int c) -{ -80036320: 27bdffe0 addiu sp,sp,-32 -80036324: afbf001c sw ra,28(sp) -80036328: afbe0018 sw s8,24(sp) -8003632c: 03a0f021 move s8,sp -80036330: afc40020 sw a0,32(s8) -80036334: afc50024 sw a1,36(s8) - int x; - int l = strlen(s); -80036338: 8fc40020 lw a0,32(s8) -8003633c: 0c00d8af jal 800362bc -80036340: 00000000 nop -80036344: afc20014 sw v0,20(s8) - - for(x = 0; x <= l; x++) -80036348: afc00010 sw zero,16(s8) -8003634c: 10000016 b 800363a8 -80036350: 00000000 nop - if(s[x] == c) return (char*)&s[x]; -80036354: 8fc20010 lw v0,16(s8) -80036358: 8fc30020 lw v1,32(s8) -8003635c: 00000000 nop -80036360: 00621021 addu v0,v1,v0 -80036364: 80420000 lb v0,0(v0) -80036368: 00000000 nop -8003636c: 00401821 move v1,v0 -80036370: 8fc20024 lw v0,36(s8) -80036374: 00000000 nop -80036378: 14620007 bne v1,v0,80036398 -8003637c: 00000000 nop -80036380: 8fc20010 lw v0,16(s8) -80036384: 8fc30020 lw v1,32(s8) -80036388: 00000000 nop -8003638c: 00621021 addu v0,v1,v0 -80036390: 1000000c b 800363c4 -80036394: 00000000 nop -char *strchr(const char *s, int c) -{ - int x; - int l = strlen(s); - - for(x = 0; x <= l; x++) -80036398: 8fc20010 lw v0,16(s8) -8003639c: 00000000 nop -800363a0: 24420001 addiu v0,v0,1 -800363a4: afc20010 sw v0,16(s8) -800363a8: 8fc30010 lw v1,16(s8) -800363ac: 8fc20014 lw v0,20(s8) -800363b0: 00000000 nop -800363b4: 0043102a slt v0,v0,v1 -800363b8: 1040ffe6 beqz v0,80036354 -800363bc: 00000000 nop - if(s[x] == c) return (char*)&s[x]; - - return NULL; -800363c0: 00001021 move v0,zero -} -800363c4: 03c0e821 move sp,s8 -800363c8: 8fbf001c lw ra,28(sp) -800363cc: 8fbe0018 lw s8,24(sp) -800363d0: 27bd0020 addiu sp,sp,32 -800363d4: 03e00008 jr ra -800363d8: 00000000 nop - -800363dc : - -char *strrchr(const char *s, int c) -{ -800363dc: 27bdffe0 addiu sp,sp,-32 -800363e0: afbf001c sw ra,28(sp) -800363e4: afbe0018 sw s8,24(sp) -800363e8: 03a0f021 move s8,sp -800363ec: afc40020 sw a0,32(s8) -800363f0: afc50024 sw a1,36(s8) - int x; - int l = strlen(s); -800363f4: 8fc40020 lw a0,32(s8) -800363f8: 0c00d8af jal 800362bc -800363fc: 00000000 nop -80036400: afc20014 sw v0,20(s8) - - for(x = l; x>=0; x--) -80036404: 8fc20014 lw v0,20(s8) -80036408: 00000000 nop -8003640c: afc20010 sw v0,16(s8) -80036410: 10000016 b 8003646c -80036414: 00000000 nop - if(s[x] == c) return (char*)&s[x]; -80036418: 8fc20010 lw v0,16(s8) -8003641c: 8fc30020 lw v1,32(s8) -80036420: 00000000 nop -80036424: 00621021 addu v0,v1,v0 -80036428: 80420000 lb v0,0(v0) -8003642c: 00000000 nop -80036430: 00401821 move v1,v0 -80036434: 8fc20024 lw v0,36(s8) -80036438: 00000000 nop -8003643c: 14620007 bne v1,v0,8003645c -80036440: 00000000 nop -80036444: 8fc20010 lw v0,16(s8) -80036448: 8fc30020 lw v1,32(s8) -8003644c: 00000000 nop -80036450: 00621021 addu v0,v1,v0 -80036454: 1000000a b 80036480 -80036458: 00000000 nop -char *strrchr(const char *s, int c) -{ - int x; - int l = strlen(s); - - for(x = l; x>=0; x--) -8003645c: 8fc20010 lw v0,16(s8) -80036460: 00000000 nop -80036464: 2442ffff addiu v0,v0,-1 -80036468: afc20010 sw v0,16(s8) -8003646c: 8fc20010 lw v0,16(s8) -80036470: 00000000 nop -80036474: 0441ffe8 bgez v0,80036418 -80036478: 00000000 nop - if(s[x] == c) return (char*)&s[x]; - - return NULL; -8003647c: 00001021 move v0,zero -} -80036480: 03c0e821 move sp,s8 -80036484: 8fbf001c lw ra,28(sp) -80036488: 8fbe0018 lw s8,24(sp) -8003648c: 27bd0020 addiu sp,sp,32 -80036490: 03e00008 jr ra -80036494: 00000000 nop - -80036498 : - -char *strpbrk(const char *s, const char *charset) -{ -80036498: 27bdfff0 addiu sp,sp,-16 -8003649c: afbe000c sw s8,12(sp) -800364a0: 03a0f021 move s8,sp -800364a4: afc40010 sw a0,16(s8) -800364a8: afc50014 sw a1,20(s8) - int x,y; - - for(x = 0; s[x] != 0; x++) -800364ac: afc00000 sw zero,0(s8) -800364b0: 10000027 b 80036550 -800364b4: 00000000 nop - for(y = 0; charset[y] != 0; y++) -800364b8: afc00004 sw zero,4(s8) -800364bc: 10000018 b 80036520 -800364c0: 00000000 nop - if(s[x] == charset[y]) return (char*)&s[x]; -800364c4: 8fc20000 lw v0,0(s8) -800364c8: 8fc30010 lw v1,16(s8) -800364cc: 00000000 nop -800364d0: 00621021 addu v0,v1,v0 -800364d4: 80430000 lb v1,0(v0) -800364d8: 8fc20004 lw v0,4(s8) -800364dc: 8fc40014 lw a0,20(s8) -800364e0: 00000000 nop -800364e4: 00821021 addu v0,a0,v0 -800364e8: 80420000 lb v0,0(v0) -800364ec: 00000000 nop -800364f0: 14620007 bne v1,v0,80036510 -800364f4: 00000000 nop -800364f8: 8fc20000 lw v0,0(s8) -800364fc: 8fc30010 lw v1,16(s8) -80036500: 00000000 nop -80036504: 00621021 addu v0,v1,v0 -80036508: 1000001a b 80036574 -8003650c: 00000000 nop -char *strpbrk(const char *s, const char *charset) -{ - int x,y; - - for(x = 0; s[x] != 0; x++) - for(y = 0; charset[y] != 0; y++) -80036510: 8fc20004 lw v0,4(s8) -80036514: 00000000 nop -80036518: 24420001 addiu v0,v0,1 -8003651c: afc20004 sw v0,4(s8) -80036520: 8fc20004 lw v0,4(s8) -80036524: 8fc30014 lw v1,20(s8) -80036528: 00000000 nop -8003652c: 00621021 addu v0,v1,v0 -80036530: 80420000 lb v0,0(v0) -80036534: 00000000 nop -80036538: 1440ffe2 bnez v0,800364c4 -8003653c: 00000000 nop - -char *strpbrk(const char *s, const char *charset) -{ - int x,y; - - for(x = 0; s[x] != 0; x++) -80036540: 8fc20000 lw v0,0(s8) -80036544: 00000000 nop -80036548: 24420001 addiu v0,v0,1 -8003654c: afc20000 sw v0,0(s8) -80036550: 8fc20000 lw v0,0(s8) -80036554: 8fc30010 lw v1,16(s8) -80036558: 00000000 nop -8003655c: 00621021 addu v0,v1,v0 -80036560: 80420000 lb v0,0(v0) -80036564: 00000000 nop -80036568: 1440ffd3 bnez v0,800364b8 -8003656c: 00000000 nop - for(y = 0; charset[y] != 0; y++) - if(s[x] == charset[y]) return (char*)&s[x]; - - return NULL; -80036570: 00001021 move v0,zero -} -80036574: 03c0e821 move sp,s8 -80036578: 8fbe000c lw s8,12(sp) -8003657c: 27bd0010 addiu sp,sp,16 -80036580: 03e00008 jr ra -80036584: 00000000 nop - -80036588 : - -char *strstr(const char *big, const char *little) -{ -80036588: 27bdffd8 addiu sp,sp,-40 -8003658c: afbf0024 sw ra,36(sp) -80036590: afbe0020 sw s8,32(sp) -80036594: 03a0f021 move s8,sp -80036598: afc40028 sw a0,40(s8) -8003659c: afc5002c sw a1,44(s8) - int ls = strlen(little); -800365a0: 8fc4002c lw a0,44(s8) -800365a4: 0c00d8af jal 800362bc -800365a8: 00000000 nop -800365ac: afc20014 sw v0,20(s8) - int bs = strlen(big); -800365b0: 8fc40028 lw a0,40(s8) -800365b4: 0c00d8af jal 800362bc -800365b8: 00000000 nop -800365bc: afc20018 sw v0,24(s8) - int x; - - if(ls == 0) -800365c0: 8fc20014 lw v0,20(s8) -800365c4: 00000000 nop -800365c8: 14400004 bnez v0,800365dc -800365cc: 00000000 nop - return (char*)big; -800365d0: 8fc20028 lw v0,40(s8) -800365d4: 1000002e b 80036690 -800365d8: 00000000 nop - - if(ls > bs) -800365dc: 8fc30014 lw v1,20(s8) -800365e0: 8fc20018 lw v0,24(s8) -800365e4: 00000000 nop -800365e8: 0043102a slt v0,v0,v1 -800365ec: 10400004 beqz v0,80036600 -800365f0: 00000000 nop - return NULL; -800365f4: 00001021 move v0,zero -800365f8: 10000025 b 80036690 -800365fc: 00000000 nop - - for(x = 0; x <= bs-ls; x++) -80036600: afc00010 sw zero,16(s8) -80036604: 10000018 b 80036668 -80036608: 00000000 nop - if(memcmp(little, &big[x], ls) == 0) -8003660c: 8fc20010 lw v0,16(s8) -80036610: 8fc30028 lw v1,40(s8) -80036614: 00000000 nop -80036618: 00621021 addu v0,v1,v0 -8003661c: 8fc30014 lw v1,20(s8) -80036620: 00000000 nop -80036624: 00603021 move a2,v1 -80036628: 00402821 move a1,v0 -8003662c: 8fc4002c lw a0,44(s8) -80036630: 0c00d7cf jal 80035f3c -80036634: 00000000 nop -80036638: 14400007 bnez v0,80036658 -8003663c: 00000000 nop - return (char*)&big[x]; -80036640: 8fc20010 lw v0,16(s8) -80036644: 8fc30028 lw v1,40(s8) -80036648: 00000000 nop -8003664c: 00621021 addu v0,v1,v0 -80036650: 1000000f b 80036690 -80036654: 00000000 nop - return (char*)big; - - if(ls > bs) - return NULL; - - for(x = 0; x <= bs-ls; x++) -80036658: 8fc20010 lw v0,16(s8) -8003665c: 00000000 nop -80036660: 24420001 addiu v0,v0,1 -80036664: afc20010 sw v0,16(s8) -80036668: 8fc30018 lw v1,24(s8) -8003666c: 8fc20014 lw v0,20(s8) -80036670: 00000000 nop -80036674: 00621823 subu v1,v1,v0 -80036678: 8fc20010 lw v0,16(s8) -8003667c: 00000000 nop -80036680: 0062102a slt v0,v1,v0 -80036684: 1040ffe1 beqz v0,8003660c -80036688: 00000000 nop - if(memcmp(little, &big[x], ls) == 0) - return (char*)&big[x]; - - return NULL; -8003668c: 00001021 move v0,zero -} -80036690: 03c0e821 move sp,s8 -80036694: 8fbf0024 lw ra,36(sp) -80036698: 8fbe0020 lw s8,32(sp) -8003669c: 27bd0028 addiu sp,sp,40 -800366a0: 03e00008 jr ra -800366a4: 00000000 nop - -800366a8 : - -int strcmp(const char *s1, const char *s2) -{ -800366a8: 27bdfff8 addiu sp,sp,-8 -800366ac: afbe0004 sw s8,4(sp) -800366b0: 03a0f021 move s8,sp -800366b4: afc40008 sw a0,8(s8) -800366b8: afc5000c sw a1,12(s8) - while(*s1 && *s2 && (*s1 == *s2)) -800366bc: 10000009 b 800366e4 -800366c0: 00000000 nop - { - s1++; -800366c4: 8fc20008 lw v0,8(s8) -800366c8: 00000000 nop -800366cc: 24420001 addiu v0,v0,1 -800366d0: afc20008 sw v0,8(s8) - s2++; -800366d4: 8fc2000c lw v0,12(s8) -800366d8: 00000000 nop -800366dc: 24420001 addiu v0,v0,1 -800366e0: afc2000c sw v0,12(s8) - return NULL; -} - -int strcmp(const char *s1, const char *s2) -{ - while(*s1 && *s2 && (*s1 == *s2)) -800366e4: 8fc20008 lw v0,8(s8) -800366e8: 00000000 nop -800366ec: 80420000 lb v0,0(v0) -800366f0: 00000000 nop -800366f4: 10400010 beqz v0,80036738 -800366f8: 00000000 nop -800366fc: 8fc2000c lw v0,12(s8) -80036700: 00000000 nop -80036704: 80420000 lb v0,0(v0) -80036708: 00000000 nop -8003670c: 1040000a beqz v0,80036738 -80036710: 00000000 nop -80036714: 8fc20008 lw v0,8(s8) -80036718: 00000000 nop -8003671c: 80430000 lb v1,0(v0) -80036720: 8fc2000c lw v0,12(s8) -80036724: 00000000 nop -80036728: 80420000 lb v0,0(v0) -8003672c: 00000000 nop -80036730: 1062ffe4 beq v1,v0,800366c4 -80036734: 00000000 nop - { - s1++; - s2++; - } - - return *s1-*s2; -80036738: 8fc20008 lw v0,8(s8) -8003673c: 00000000 nop -80036740: 80420000 lb v0,0(v0) -80036744: 00000000 nop -80036748: 00401821 move v1,v0 -8003674c: 8fc2000c lw v0,12(s8) -80036750: 00000000 nop -80036754: 80420000 lb v0,0(v0) -80036758: 00000000 nop -8003675c: 00621023 subu v0,v1,v0 -} -80036760: 03c0e821 move sp,s8 -80036764: 8fbe0004 lw s8,4(sp) -80036768: 27bd0008 addiu sp,sp,8 -8003676c: 03e00008 jr ra -80036770: 00000000 nop - -80036774 : - -int strncmp(const char *s1, const char *s2, size_t len) -{ -80036774: 27bdfff0 addiu sp,sp,-16 -80036778: afbe000c sw s8,12(sp) -8003677c: 03a0f021 move s8,sp -80036780: afc40010 sw a0,16(s8) -80036784: afc50014 sw a1,20(s8) -80036788: afc60018 sw a2,24(s8) - int p = 0; -8003678c: afc00000 sw zero,0(s8) - - while(*s1 && *s2 && (*s1 == *s2) && p -80036794: 00000000 nop - { - p++; -80036798: 8fc20000 lw v0,0(s8) -8003679c: 00000000 nop -800367a0: 24420001 addiu v0,v0,1 -800367a4: afc20000 sw v0,0(s8) - - if(p -800367bc: 00000000 nop - { - s1++; -800367c0: 8fc20010 lw v0,16(s8) -800367c4: 00000000 nop -800367c8: 24420001 addiu v0,v0,1 -800367cc: afc20010 sw v0,16(s8) - s2++; -800367d0: 8fc20014 lw v0,20(s8) -800367d4: 00000000 nop -800367d8: 24420001 addiu v0,v0,1 -800367dc: afc20014 sw v0,20(s8) - -int strncmp(const char *s1, const char *s2, size_t len) -{ - int p = 0; - - while(*s1 && *s2 && (*s1 == *s2) && p -800367f4: 00000000 nop -800367f8: 8fc20014 lw v0,20(s8) -800367fc: 00000000 nop -80036800: 80420000 lb v0,0(v0) -80036804: 00000000 nop -80036808: 10400010 beqz v0,8003684c -8003680c: 00000000 nop -80036810: 8fc20010 lw v0,16(s8) -80036814: 00000000 nop -80036818: 80430000 lb v1,0(v0) -8003681c: 8fc20014 lw v0,20(s8) -80036820: 00000000 nop -80036824: 80420000 lb v0,0(v0) -80036828: 00000000 nop -8003682c: 14620007 bne v1,v0,8003684c -80036830: 00000000 nop -80036834: 8fc30000 lw v1,0(s8) -80036838: 8fc20018 lw v0,24(s8) -8003683c: 00000000 nop -80036840: 0062102b sltu v0,v1,v0 -80036844: 1440ffd4 bnez v0,80036798 -80036848: 00000000 nop - s1++; - s2++; - } - } - - return *s1-*s2; -8003684c: 8fc20010 lw v0,16(s8) -80036850: 00000000 nop -80036854: 80420000 lb v0,0(v0) -80036858: 00000000 nop -8003685c: 00401821 move v1,v0 -80036860: 8fc20014 lw v0,20(s8) -80036864: 00000000 nop -80036868: 80420000 lb v0,0(v0) -8003686c: 00000000 nop -80036870: 00621023 subu v0,v1,v0 -} -80036874: 03c0e821 move sp,s8 -80036878: 8fbe000c lw s8,12(sp) -8003687c: 27bd0010 addiu sp,sp,16 -80036880: 03e00008 jr ra -80036884: 00000000 nop - -80036888 : - -char *strdup(const char *str) -{ -80036888: 27bdffe0 addiu sp,sp,-32 -8003688c: afbf001c sw ra,28(sp) -80036890: afbe0018 sw s8,24(sp) -80036894: 03a0f021 move s8,sp -80036898: afc40020 sw a0,32(s8) - char *ns = (void*)malloc(strlen(str) + 1); -8003689c: 8fc40020 lw a0,32(s8) -800368a0: 0c00d8af jal 800362bc -800368a4: 00000000 nop -800368a8: 24420001 addiu v0,v0,1 -800368ac: 00402021 move a0,v0 -800368b0: 0c00ac10 jal 8002b040 -800368b4: 00000000 nop -800368b8: afc20010 sw v0,16(s8) - - if(ns == NULL) -800368bc: 8fc20010 lw v0,16(s8) -800368c0: 00000000 nop -800368c4: 14400004 bnez v0,800368d8 -800368c8: 00000000 nop - return NULL; -800368cc: 00001021 move v0,zero -800368d0: 10000006 b 800368ec -800368d4: 00000000 nop - - strcpy(ns, str); -800368d8: 8fc50020 lw a1,32(s8) -800368dc: 8fc40010 lw a0,16(s8) -800368e0: 0c00d891 jal 80036244 -800368e4: 00000000 nop - return ns; -800368e8: 8fc20010 lw v0,16(s8) -} -800368ec: 03c0e821 move sp,s8 -800368f0: 8fbf001c lw ra,28(sp) -800368f4: 8fbe0018 lw s8,24(sp) -800368f8: 27bd0020 addiu sp,sp,32 -800368fc: 03e00008 jr ra -80036900: 00000000 nop - -80036904 : - -char *strndup(const char *str, size_t len) -{ -80036904: 27bdffe0 addiu sp,sp,-32 -80036908: afbf001c sw ra,28(sp) -8003690c: afbe0018 sw s8,24(sp) -80036910: 03a0f021 move s8,sp -80036914: afc40020 sw a0,32(s8) -80036918: afc50024 sw a1,36(s8) - int n=strlen(str); -8003691c: 8fc40020 lw a0,32(s8) -80036920: 0c00d8af jal 800362bc -80036924: 00000000 nop -80036928: afc20010 sw v0,16(s8) - char *ns = (void*)malloc((n+1)>len?len:(n+1)); -8003692c: 8fc20010 lw v0,16(s8) -80036930: 00000000 nop -80036934: 24420001 addiu v0,v0,1 -80036938: 8fc30024 lw v1,36(s8) -8003693c: 00000000 nop -80036940: 0062202b sltu a0,v1,v0 -80036944: 10800002 beqz a0,80036950 -80036948: 00000000 nop -8003694c: 00601021 move v0,v1 -80036950: 00402021 move a0,v0 -80036954: 0c00ac10 jal 8002b040 -80036958: 00000000 nop -8003695c: afc20014 sw v0,20(s8) - - if(ns == NULL) -80036960: 8fc20014 lw v0,20(s8) -80036964: 00000000 nop -80036968: 14400004 bnez v0,8003697c -8003696c: 00000000 nop - return NULL; -80036970: 00001021 move v0,zero -80036974: 10000010 b 800369b8 -80036978: 00000000 nop - - strncpy(ns, str, (n+1)>len?len:(n+1)); -8003697c: 8fc20010 lw v0,16(s8) -80036980: 00000000 nop -80036984: 24420001 addiu v0,v0,1 -80036988: 8fc30024 lw v1,36(s8) -8003698c: 00000000 nop -80036990: 0062202b sltu a0,v1,v0 -80036994: 10800002 beqz a0,800369a0 -80036998: 00000000 nop -8003699c: 00601021 move v0,v1 -800369a0: 00403021 move a2,v0 -800369a4: 8fc50020 lw a1,32(s8) -800369a8: 8fc40014 lw a0,20(s8) -800369ac: 0c00d860 jal 80036180 -800369b0: 00000000 nop - return ns; -800369b4: 8fc20014 lw v0,20(s8) -} -800369b8: 03c0e821 move sp,s8 -800369bc: 8fbf001c lw ra,28(sp) -800369c0: 8fbe0018 lw s8,24(sp) -800369c4: 27bd0020 addiu sp,sp,32 -800369c8: 03e00008 jr ra -800369cc: 00000000 nop - -800369d0 : - -long long strtoll(const char *nptr, char **endptr, int base) -{ -800369d0: 27bdffd0 addiu sp,sp,-48 -800369d4: afbf002c sw ra,44(sp) -800369d8: afbe0028 sw s8,40(sp) -800369dc: afb10024 sw s1,36(sp) -800369e0: afb00020 sw s0,32(sp) -800369e4: 03a0f021 move s8,sp -800369e8: afc40030 sw a0,48(s8) -800369ec: afc50034 sw a1,52(s8) -800369f0: afc60038 sw a2,56(s8) - int r = 0; -800369f4: afc00010 sw zero,16(s8) - int t = 0; -800369f8: afc00014 sw zero,20(s8) - int n = 0; -800369fc: afc00018 sw zero,24(s8) - - while(*nptr && isspace(*nptr)) -80036a00: 10000005 b 80036a18 -80036a04: 00000000 nop - nptr++; -80036a08: 8fc20030 lw v0,48(s8) -80036a0c: 00000000 nop -80036a10: 24420001 addiu v0,v0,1 -80036a14: afc20030 sw v0,48(s8) -{ - int r = 0; - int t = 0; - int n = 0; - - while(*nptr && isspace(*nptr)) -80036a18: 8fc20030 lw v0,48(s8) -80036a1c: 00000000 nop -80036a20: 80420000 lb v0,0(v0) -80036a24: 00000000 nop -80036a28: 1040000a beqz v0,80036a54 -80036a2c: 00000000 nop -80036a30: 8fc20030 lw v0,48(s8) -80036a34: 00000000 nop -80036a38: 80420000 lb v0,0(v0) -80036a3c: 00000000 nop -80036a40: 00402021 move a0,v0 -80036a44: 0c00a934 jal 8002a4d0 -80036a48: 00000000 nop -80036a4c: 1440ffee bnez v0,80036a08 -80036a50: 00000000 nop - nptr++; - - if(*nptr == '-') -80036a54: 8fc20030 lw v0,48(s8) -80036a58: 00000000 nop -80036a5c: 80430000 lb v1,0(v0) -80036a60: 2402002d li v0,45 -80036a64: 14620007 bne v1,v0,80036a84 -80036a68: 00000000 nop - { - nptr++; -80036a6c: 8fc20030 lw v0,48(s8) -80036a70: 00000000 nop -80036a74: 24420001 addiu v0,v0,1 -80036a78: afc20030 sw v0,48(s8) - n = 1; -80036a7c: 24020001 li v0,1 -80036a80: afc20018 sw v0,24(s8) - } - - if(base == 0) -80036a84: 8fc20038 lw v0,56(s8) -80036a88: 00000000 nop -80036a8c: 1440000d bnez v0,80036ac4 -80036a90: 00000000 nop - { - if(*nptr == '0') -80036a94: 8fc20030 lw v0,48(s8) -80036a98: 00000000 nop -80036a9c: 80430000 lb v1,0(v0) -80036aa0: 24020030 li v0,48 -80036aa4: 14620005 bne v1,v0,80036abc -80036aa8: 00000000 nop - base = 8; -80036aac: 24020008 li v0,8 -80036ab0: afc20038 sw v0,56(s8) -80036ab4: 10000003 b 80036ac4 -80036ab8: 00000000 nop - else - base = 10; -80036abc: 2402000a li v0,10 -80036ac0: afc20038 sw v0,56(s8) - } - - if(!(base >= 2 && base <= 36)) -80036ac4: 8fc20038 lw v0,56(s8) -80036ac8: 00000000 nop -80036acc: 28420002 slti v0,v0,2 -80036ad0: 14400006 bnez v0,80036aec -80036ad4: 00000000 nop -80036ad8: 8fc20038 lw v0,56(s8) -80036adc: 00000000 nop -80036ae0: 28420025 slti v0,v0,37 -80036ae4: 14400005 bnez v0,80036afc -80036ae8: 00000000 nop - return 0; -80036aec: 00008021 move s0,zero -80036af0: 00008821 move s1,zero -80036af4: 10000084 b 80036d08 -80036af8: 00000000 nop - - if(base == 16 && *nptr == '0') -80036afc: 8fc30038 lw v1,56(s8) -80036b00: 24020010 li v0,16 -80036b04: 14620061 bne v1,v0,80036c8c -80036b08: 00000000 nop -80036b0c: 8fc20030 lw v0,48(s8) -80036b10: 00000000 nop -80036b14: 80430000 lb v1,0(v0) -80036b18: 24020030 li v0,48 -80036b1c: 1462005b bne v1,v0,80036c8c -80036b20: 00000000 nop - { - if(*(nptr+1) == 'x' || *(nptr+1) == 'X') -80036b24: 8fc20030 lw v0,48(s8) -80036b28: 00000000 nop -80036b2c: 24420001 addiu v0,v0,1 -80036b30: 80430000 lb v1,0(v0) -80036b34: 24020078 li v0,120 -80036b38: 10620008 beq v1,v0,80036b5c -80036b3c: 00000000 nop -80036b40: 8fc20030 lw v0,48(s8) -80036b44: 00000000 nop -80036b48: 24420001 addiu v0,v0,1 -80036b4c: 80430000 lb v1,0(v0) -80036b50: 24020058 li v0,88 -80036b54: 1462004d bne v1,v0,80036c8c -80036b58: 00000000 nop - nptr+=2; -80036b5c: 8fc20030 lw v0,48(s8) -80036b60: 00000000 nop -80036b64: 24420002 addiu v0,v0,2 -80036b68: afc20030 sw v0,48(s8) - } - - while(*nptr) -80036b6c: 10000047 b 80036c8c -80036b70: 00000000 nop - { - switch(*nptr) -80036b74: 8fc20030 lw v0,48(s8) -80036b78: 00000000 nop -80036b7c: 80420000 lb v0,0(v0) -80036b80: 00000000 nop -80036b84: 2843005b slti v1,v0,91 -80036b88: 1060000a beqz v1,80036bb4 -80036b8c: 00000000 nop -80036b90: 28430041 slti v1,v0,65 -80036b94: 1060001d beqz v1,80036c0c -80036b98: 00000000 nop -80036b9c: 2442ffd0 addiu v0,v0,-48 -80036ba0: 2c42000a sltiu v0,v0,10 -80036ba4: 10400021 beqz v0,80036c2c -80036ba8: 00000000 nop -80036bac: 10000007 b 80036bcc -80036bb0: 00000000 nop -80036bb4: 2442ff9f addiu v0,v0,-97 -80036bb8: 2c42001a sltiu v0,v0,26 -80036bbc: 1040001b beqz v0,80036c2c -80036bc0: 00000000 nop -80036bc4: 10000009 b 80036bec -80036bc8: 00000000 nop - { - case '0'...'9': - t = *nptr - '0'; -80036bcc: 8fc20030 lw v0,48(s8) -80036bd0: 00000000 nop -80036bd4: 80420000 lb v0,0(v0) -80036bd8: 00000000 nop -80036bdc: 2442ffd0 addiu v0,v0,-48 -80036be0: afc20014 sw v0,20(s8) - break; -80036be4: 10000014 b 80036c38 -80036be8: 00000000 nop - case 'a' ... 'z': - t = (*nptr - 'a') + 10; -80036bec: 8fc20030 lw v0,48(s8) -80036bf0: 00000000 nop -80036bf4: 80420000 lb v0,0(v0) -80036bf8: 00000000 nop -80036bfc: 2442ffa9 addiu v0,v0,-87 -80036c00: afc20014 sw v0,20(s8) - break; -80036c04: 1000000c b 80036c38 -80036c08: 00000000 nop - case 'A' ... 'Z': - t = (*nptr - 'A') + 10; -80036c0c: 8fc20030 lw v0,48(s8) -80036c10: 00000000 nop -80036c14: 80420000 lb v0,0(v0) -80036c18: 00000000 nop -80036c1c: 2442ffc9 addiu v0,v0,-55 -80036c20: afc20014 sw v0,20(s8) - break; -80036c24: 10000004 b 80036c38 -80036c28: 00000000 nop - default: - t = 1000; -80036c2c: 240203e8 li v0,1000 -80036c30: afc20014 sw v0,20(s8) - break; -80036c34: 00000000 nop - } - - if(t>=base) -80036c38: 8fc30014 lw v1,20(s8) -80036c3c: 8fc20038 lw v0,56(s8) -80036c40: 00000000 nop -80036c44: 0062102a slt v0,v1,v0 -80036c48: 10400018 beqz v0,80036cac -80036c4c: 00000000 nop - break; - - r*=base; -80036c50: 8fc30010 lw v1,16(s8) -80036c54: 8fc20038 lw v0,56(s8) -80036c58: 00000000 nop -80036c5c: 00620018 mult v1,v0 -80036c60: 00001012 mflo v0 -80036c64: afc20010 sw v0,16(s8) - r+=t; -80036c68: 8fc30010 lw v1,16(s8) -80036c6c: 8fc20014 lw v0,20(s8) -80036c70: 00000000 nop -80036c74: 00621021 addu v0,v1,v0 -80036c78: afc20010 sw v0,16(s8) - nptr++; -80036c7c: 8fc20030 lw v0,48(s8) -80036c80: 00000000 nop -80036c84: 24420001 addiu v0,v0,1 -80036c88: afc20030 sw v0,48(s8) - { - if(*(nptr+1) == 'x' || *(nptr+1) == 'X') - nptr+=2; - } - - while(*nptr) -80036c8c: 8fc20030 lw v0,48(s8) -80036c90: 00000000 nop -80036c94: 80420000 lb v0,0(v0) -80036c98: 00000000 nop -80036c9c: 1440ffb5 bnez v0,80036b74 -80036ca0: 00000000 nop -80036ca4: 10000002 b 80036cb0 -80036ca8: 00000000 nop - t = 1000; - break; - } - - if(t>=base) - break; -80036cac: 00000000 nop - r*=base; - r+=t; - nptr++; - } - - if(endptr)*endptr = (char*)nptr; -80036cb0: 8fc20034 lw v0,52(s8) -80036cb4: 00000000 nop -80036cb8: 10400005 beqz v0,80036cd0 -80036cbc: 00000000 nop -80036cc0: 8fc20034 lw v0,52(s8) -80036cc4: 8fc30030 lw v1,48(s8) -80036cc8: 00000000 nop -80036ccc: ac430000 sw v1,0(v0) - return n?-r:r; -80036cd0: 8fc20018 lw v0,24(s8) -80036cd4: 00000000 nop -80036cd8: 10400006 beqz v0,80036cf4 -80036cdc: 00000000 nop -80036ce0: 8fc20010 lw v0,16(s8) -80036ce4: 00000000 nop -80036ce8: 00021023 negu v0,v0 -80036cec: 10000003 b 80036cfc -80036cf0: 00000000 nop -80036cf4: 8fc20010 lw v0,16(s8) -80036cf8: 00000000 nop -80036cfc: 00408021 move s0,v0 -80036d00: 000217c3 sra v0,v0,0x1f -80036d04: 00408821 move s1,v0 -80036d08: 02001021 move v0,s0 -80036d0c: 02201821 move v1,s1 -} -80036d10: 03c0e821 move sp,s8 -80036d14: 8fbf002c lw ra,44(sp) -80036d18: 8fbe0028 lw s8,40(sp) -80036d1c: 8fb10024 lw s1,36(sp) -80036d20: 8fb00020 lw s0,32(sp) -80036d24: 27bd0030 addiu sp,sp,48 -80036d28: 03e00008 jr ra -80036d2c: 00000000 nop - -80036d30 : - -long strtol(const char *nptr, char **endptr, int base) -{ -80036d30: 27bdffe8 addiu sp,sp,-24 -80036d34: afbf0014 sw ra,20(sp) -80036d38: afbe0010 sw s8,16(sp) -80036d3c: 03a0f021 move s8,sp -80036d40: afc40018 sw a0,24(s8) -80036d44: afc5001c sw a1,28(s8) -80036d48: afc60020 sw a2,32(s8) - return (long)strtoll(nptr, endptr, base); -80036d4c: 8fc60020 lw a2,32(s8) -80036d50: 8fc5001c lw a1,28(s8) -80036d54: 8fc40018 lw a0,24(s8) -80036d58: 0c00da74 jal 800369d0 -80036d5c: 00000000 nop -} -80036d60: 03c0e821 move sp,s8 -80036d64: 8fbf0014 lw ra,20(sp) -80036d68: 8fbe0010 lw s8,16(sp) -80036d6c: 27bd0018 addiu sp,sp,24 -80036d70: 03e00008 jr ra -80036d74: 00000000 nop - -80036d78 : - -double strtod(const char *nptr, char **endptr) -{ -80036d78: 27bdff80 addiu sp,sp,-128 -80036d7c: afbf007c sw ra,124(sp) -80036d80: afbe0078 sw s8,120(sp) -80036d84: afb10074 sw s1,116(sp) -80036d88: afb00070 sw s0,112(sp) -80036d8c: 03a0f021 move s8,sp -80036d90: afc40080 sw a0,128(s8) -80036d94: afc50084 sw a1,132(s8) - char strbuf[64]; - int x = 0; -80036d98: afc00010 sw zero,16(s8) - int y; - double i=0, d=0; -80036d9c: afc00028 sw zero,40(s8) -80036da0: afc0002c sw zero,44(s8) -80036da4: afc00018 sw zero,24(s8) -80036da8: afc0001c sw zero,28(s8) - int s=1; -80036dac: 24020001 li v0,1 -80036db0: afc20020 sw v0,32(s8) - - if(*nptr == '-') -80036db4: 8fc20080 lw v0,128(s8) -80036db8: 00000000 nop -80036dbc: 80430000 lb v1,0(v0) -80036dc0: 2402002d li v0,45 -80036dc4: 14620015 bne v1,v0,80036e1c -80036dc8: 00000000 nop - { - nptr++; -80036dcc: 8fc20080 lw v0,128(s8) -80036dd0: 00000000 nop -80036dd4: 24420001 addiu v0,v0,1 -80036dd8: afc20080 sw v0,128(s8) - s=-1; -80036ddc: 2402ffff li v0,-1 -80036de0: afc20020 sw v0,32(s8) - } - - while(*nptr >= '0' && *nptr <= '9' && x < 18) -80036de4: 1000000d b 80036e1c -80036de8: 00000000 nop - strbuf[x++] = *(nptr++); -80036dec: 8fc20010 lw v0,16(s8) -80036df0: 00000000 nop -80036df4: 24430001 addiu v1,v0,1 -80036df8: afc30010 sw v1,16(s8) -80036dfc: 8fc30080 lw v1,128(s8) -80036e00: 00000000 nop -80036e04: 24640001 addiu a0,v1,1 -80036e08: afc40080 sw a0,128(s8) -80036e0c: 80630000 lb v1,0(v1) -80036e10: 27c40010 addiu a0,s8,16 -80036e14: 00821021 addu v0,a0,v0 -80036e18: a0430020 sb v1,32(v0) - { - nptr++; - s=-1; - } - - while(*nptr >= '0' && *nptr <= '9' && x < 18) -80036e1c: 8fc20080 lw v0,128(s8) -80036e20: 00000000 nop -80036e24: 80420000 lb v0,0(v0) -80036e28: 00000000 nop -80036e2c: 28420030 slti v0,v0,48 -80036e30: 1440000d bnez v0,80036e68 -80036e34: 00000000 nop -80036e38: 8fc20080 lw v0,128(s8) -80036e3c: 00000000 nop -80036e40: 80420000 lb v0,0(v0) -80036e44: 00000000 nop -80036e48: 2842003a slti v0,v0,58 -80036e4c: 10400006 beqz v0,80036e68 -80036e50: 00000000 nop -80036e54: 8fc20010 lw v0,16(s8) -80036e58: 00000000 nop -80036e5c: 28420012 slti v0,v0,18 -80036e60: 1440ffe2 bnez v0,80036dec -80036e64: 00000000 nop - strbuf[x++] = *(nptr++); - - strbuf[x] = 0; -80036e68: 8fc20010 lw v0,16(s8) -80036e6c: 27c30010 addiu v1,s8,16 -80036e70: 00621021 addu v0,v1,v0 -80036e74: a0400020 sb zero,32(v0) - - i = (double)strtoll(strbuf, NULL, 10); -80036e78: 27c20030 addiu v0,s8,48 -80036e7c: 2406000a li a2,10 -80036e80: 00002821 move a1,zero -80036e84: 00402021 move a0,v0 -80036e88: 0c00da74 jal 800369d0 -80036e8c: 00000000 nop -80036e90: 00402021 move a0,v0 -80036e94: 00602821 move a1,v1 -80036e98: 0c00fc9b jal 8003f26c <__floatdidf> -80036e9c: 00000000 nop -80036ea0: afc20028 sw v0,40(s8) -80036ea4: afc3002c sw v1,44(s8) - - if(*nptr == '.') -80036ea8: 8fc20080 lw v0,128(s8) -80036eac: 00000000 nop -80036eb0: 80430000 lb v1,0(v0) -80036eb4: 2402002e li v0,46 -80036eb8: 14620062 bne v1,v0,80037044 -80036ebc: 00000000 nop - { - nptr++; -80036ec0: 8fc20080 lw v0,128(s8) -80036ec4: 00000000 nop -80036ec8: 24420001 addiu v0,v0,1 -80036ecc: afc20080 sw v0,128(s8) - x = 0; -80036ed0: afc00010 sw zero,16(s8) - - while(*nptr >= '0' && *nptr <= '9' && x < 7) -80036ed4: 1000000d b 80036f0c -80036ed8: 00000000 nop - strbuf[x++] = *(nptr++); -80036edc: 8fc20010 lw v0,16(s8) -80036ee0: 00000000 nop -80036ee4: 24430001 addiu v1,v0,1 -80036ee8: afc30010 sw v1,16(s8) -80036eec: 8fc30080 lw v1,128(s8) -80036ef0: 00000000 nop -80036ef4: 24640001 addiu a0,v1,1 -80036ef8: afc40080 sw a0,128(s8) -80036efc: 80630000 lb v1,0(v1) -80036f00: 27c40010 addiu a0,s8,16 -80036f04: 00821021 addu v0,a0,v0 -80036f08: a0430020 sb v1,32(v0) - if(*nptr == '.') - { - nptr++; - x = 0; - - while(*nptr >= '0' && *nptr <= '9' && x < 7) -80036f0c: 8fc20080 lw v0,128(s8) -80036f10: 00000000 nop -80036f14: 80420000 lb v0,0(v0) -80036f18: 00000000 nop -80036f1c: 28420030 slti v0,v0,48 -80036f20: 1440000d bnez v0,80036f58 -80036f24: 00000000 nop -80036f28: 8fc20080 lw v0,128(s8) -80036f2c: 00000000 nop -80036f30: 80420000 lb v0,0(v0) -80036f34: 00000000 nop -80036f38: 2842003a slti v0,v0,58 -80036f3c: 10400006 beqz v0,80036f58 -80036f40: 00000000 nop -80036f44: 8fc20010 lw v0,16(s8) -80036f48: 00000000 nop -80036f4c: 28420007 slti v0,v0,7 -80036f50: 1440ffe2 bnez v0,80036edc -80036f54: 00000000 nop - strbuf[x++] = *(nptr++); - - strbuf[x] = 0; -80036f58: 8fc20010 lw v0,16(s8) -80036f5c: 27c30010 addiu v1,s8,16 -80036f60: 00621021 addu v0,v1,v0 -80036f64: a0400020 sb zero,32(v0) - - if(endptr != NULL) *endptr = (char*)nptr; -80036f68: 8fc20084 lw v0,132(s8) -80036f6c: 00000000 nop -80036f70: 10400005 beqz v0,80036f88 -80036f74: 00000000 nop -80036f78: 8fc20084 lw v0,132(s8) -80036f7c: 8fc30080 lw v1,128(s8) -80036f80: 00000000 nop -80036f84: ac430000 sw v1,0(v0) - - y=1; -80036f88: 24020001 li v0,1 -80036f8c: afc20014 sw v0,20(s8) - - for(x=0;strbuf[x]!=0;x++) -80036f90: afc00010 sw zero,16(s8) -80036f94: 1000000b b 80036fc4 -80036f98: 00000000 nop - y*=10; -80036f9c: 8fc20014 lw v0,20(s8) -80036fa0: 00000000 nop -80036fa4: 00021040 sll v0,v0,0x1 -80036fa8: 00021880 sll v1,v0,0x2 -80036fac: 00431021 addu v0,v0,v1 -80036fb0: afc20014 sw v0,20(s8) - - if(endptr != NULL) *endptr = (char*)nptr; - - y=1; - - for(x=0;strbuf[x]!=0;x++) -80036fb4: 8fc20010 lw v0,16(s8) -80036fb8: 00000000 nop -80036fbc: 24420001 addiu v0,v0,1 -80036fc0: afc20010 sw v0,16(s8) -80036fc4: 8fc20010 lw v0,16(s8) -80036fc8: 27c30010 addiu v1,s8,16 -80036fcc: 00621021 addu v0,v1,v0 -80036fd0: 80420020 lb v0,32(v0) -80036fd4: 00000000 nop -80036fd8: 1440fff0 bnez v0,80036f9c -80036fdc: 00000000 nop - y*=10; - - d = (double)strtoll(strbuf, NULL, 10); -80036fe0: 27c20030 addiu v0,s8,48 -80036fe4: 2406000a li a2,10 -80036fe8: 00002821 move a1,zero -80036fec: 00402021 move a0,v0 -80036ff0: 0c00da74 jal 800369d0 -80036ff4: 00000000 nop -80036ff8: 00402021 move a0,v0 -80036ffc: 00602821 move a1,v1 -80037000: 0c00fc9b jal 8003f26c <__floatdidf> -80037004: 00000000 nop -80037008: afc20018 sw v0,24(s8) -8003700c: afc3001c sw v1,28(s8) - d /= y; -80037010: 8fc40014 lw a0,20(s8) -80037014: 0c00fc5c jal 8003f170 <__floatsidf> -80037018: 00000000 nop -8003701c: 00403021 move a2,v0 -80037020: 00603821 move a3,v1 -80037024: 8fc40018 lw a0,24(s8) -80037028: 8fc5001c lw a1,28(s8) -8003702c: 0c00f625 jal 8003d894 <__divdf3> -80037030: 00000000 nop -80037034: afc20018 sw v0,24(s8) -80037038: afc3001c sw v1,28(s8) -8003703c: 10000009 b 80037064 -80037040: 00000000 nop - } - else - { - if(endptr != NULL) -80037044: 8fc20084 lw v0,132(s8) -80037048: 00000000 nop -8003704c: 10400005 beqz v0,80037064 -80037050: 00000000 nop - *endptr = (char*)nptr; -80037054: 8fc20084 lw v0,132(s8) -80037058: 8fc30080 lw v1,128(s8) -8003705c: 00000000 nop -80037060: ac430000 sw v1,0(v0) - } - - return (i + d)*s; -80037064: 8fc60018 lw a2,24(s8) -80037068: 8fc7001c lw a3,28(s8) -8003706c: 8fc40028 lw a0,40(s8) -80037070: 8fc5002c lw a1,44(s8) -80037074: 0c00f3d7 jal 8003cf5c <__adddf3> -80037078: 00000000 nop -8003707c: 00408021 move s0,v0 -80037080: 00608821 move s1,v1 -80037084: 8fc40020 lw a0,32(s8) -80037088: 0c00fc5c jal 8003f170 <__floatsidf> -8003708c: 00000000 nop -80037090: 00403021 move a2,v0 -80037094: 00603821 move a3,v1 -80037098: 02002021 move a0,s0 -8003709c: 02202821 move a1,s1 -800370a0: 0c00f853 jal 8003e14c <__muldf3> -800370a4: 00000000 nop -} -800370a8: 03c0e821 move sp,s8 -800370ac: 8fbf007c lw ra,124(sp) -800370b0: 8fbe0078 lw s8,120(sp) -800370b4: 8fb10074 lw s1,116(sp) -800370b8: 8fb00070 lw s0,112(sp) -800370bc: 27bd0080 addiu sp,sp,128 -800370c0: 03e00008 jr ra -800370c4: 00000000 nop - -800370c8 : - -long double strtold(const char *nptr, char **endptr) -{ -800370c8: 27bdffe8 addiu sp,sp,-24 -800370cc: afbf0014 sw ra,20(sp) -800370d0: afbe0010 sw s8,16(sp) -800370d4: 03a0f021 move s8,sp -800370d8: afc40018 sw a0,24(s8) -800370dc: afc5001c sw a1,28(s8) - return (long double)strtod(nptr, endptr); -800370e0: 8fc5001c lw a1,28(s8) -800370e4: 8fc40018 lw a0,24(s8) -800370e8: 0c00db5e jal 80036d78 -800370ec: 00000000 nop -} -800370f0: 03c0e821 move sp,s8 -800370f4: 8fbf0014 lw ra,20(sp) -800370f8: 8fbe0010 lw s8,16(sp) -800370fc: 27bd0018 addiu sp,sp,24 -80037100: 03e00008 jr ra -80037104: 00000000 nop - -80037108 : - -float strtof(const char *nptr, char **endptr) -{ -80037108: 27bdffe8 addiu sp,sp,-24 -8003710c: afbf0014 sw ra,20(sp) -80037110: afbe0010 sw s8,16(sp) -80037114: 03a0f021 move s8,sp -80037118: afc40018 sw a0,24(s8) -8003711c: afc5001c sw a1,28(s8) - return (float)strtod(nptr, endptr); -80037120: 8fc5001c lw a1,28(s8) -80037124: 8fc40018 lw a0,24(s8) -80037128: 0c00db5e jal 80036d78 -8003712c: 00000000 nop -80037130: 00402021 move a0,v0 -80037134: 00602821 move a1,v1 -80037138: 0c00fd34 jal 8003f4d0 <__truncdfsf2> -8003713c: 00000000 nop -} -80037140: 03c0e821 move sp,s8 -80037144: 8fbf0014 lw ra,20(sp) -80037148: 8fbe0010 lw s8,16(sp) -8003714c: 27bd0018 addiu sp,sp,24 -80037150: 03e00008 jr ra -80037154: 00000000 nop - -80037158 : - -char *strcat(char *s, const char *append) -{ -80037158: 27bdffe8 addiu sp,sp,-24 -8003715c: afbf0014 sw ra,20(sp) -80037160: afbe0010 sw s8,16(sp) -80037164: 03a0f021 move s8,sp -80037168: afc40018 sw a0,24(s8) -8003716c: afc5001c sw a1,28(s8) - strcpy(&s[strlen(s)], append); -80037170: 8fc40018 lw a0,24(s8) -80037174: 0c00d8af jal 800362bc -80037178: 00000000 nop -8003717c: 00401821 move v1,v0 -80037180: 8fc20018 lw v0,24(s8) -80037184: 00000000 nop -80037188: 00431021 addu v0,v0,v1 -8003718c: 8fc5001c lw a1,28(s8) -80037190: 00402021 move a0,v0 -80037194: 0c00d891 jal 80036244 -80037198: 00000000 nop - - return s; -8003719c: 8fc20018 lw v0,24(s8) -} -800371a0: 03c0e821 move sp,s8 -800371a4: 8fbf0014 lw ra,20(sp) -800371a8: 8fbe0010 lw s8,16(sp) -800371ac: 27bd0018 addiu sp,sp,24 -800371b0: 03e00008 jr ra -800371b4: 00000000 nop - -800371b8 : - -char *strncat(char *s, const char *append, size_t count) -{ -800371b8: 27bdffe8 addiu sp,sp,-24 -800371bc: afbf0014 sw ra,20(sp) -800371c0: afbe0010 sw s8,16(sp) -800371c4: 03a0f021 move s8,sp -800371c8: afc40018 sw a0,24(s8) -800371cc: afc5001c sw a1,28(s8) -800371d0: afc60020 sw a2,32(s8) - strncpy(&s[strlen(s)], append, count); -800371d4: 8fc40018 lw a0,24(s8) -800371d8: 0c00d8af jal 800362bc -800371dc: 00000000 nop -800371e0: 00401821 move v1,v0 -800371e4: 8fc20018 lw v0,24(s8) -800371e8: 00000000 nop -800371ec: 00431021 addu v0,v0,v1 -800371f0: 8fc60020 lw a2,32(s8) -800371f4: 8fc5001c lw a1,28(s8) -800371f8: 00402021 move a0,v0 -800371fc: 0c00d860 jal 80036180 -80037200: 00000000 nop - - return s; -80037204: 8fc20018 lw v0,24(s8) -} -80037208: 03c0e821 move sp,s8 -8003720c: 8fbf0014 lw ra,20(sp) -80037210: 8fbe0010 lw s8,16(sp) -80037214: 27bd0018 addiu sp,sp,24 -80037218: 03e00008 jr ra -8003721c: 00000000 nop - -80037220 : - -int strcasecmp(const char *s1, const char *s2) -{ -80037220: 27bdffe0 addiu sp,sp,-32 -80037224: afbf001c sw ra,28(sp) -80037228: afbe0018 sw s8,24(sp) -8003722c: afb00014 sw s0,20(sp) -80037230: 03a0f021 move s8,sp -80037234: afc40020 sw a0,32(s8) -80037238: afc50024 sw a1,36(s8) - while(tolower(*s1) && tolower(*s2) && (tolower(*s1) == tolower(*s2))) -8003723c: 10000009 b 80037264 -80037240: 00000000 nop - { - s1++; -80037244: 8fc20020 lw v0,32(s8) -80037248: 00000000 nop -8003724c: 24420001 addiu v0,v0,1 -80037250: afc20020 sw v0,32(s8) - s2++; -80037254: 8fc20024 lw v0,36(s8) -80037258: 00000000 nop -8003725c: 24420001 addiu v0,v0,1 -80037260: afc20024 sw v0,36(s8) - return s; -} - -int strcasecmp(const char *s1, const char *s2) -{ - while(tolower(*s1) && tolower(*s2) && (tolower(*s1) == tolower(*s2))) -80037264: 8fc20020 lw v0,32(s8) -80037268: 00000000 nop -8003726c: 80420000 lb v0,0(v0) -80037270: 00000000 nop -80037274: 00402021 move a0,v0 -80037278: 0c00a5eb jal 800297ac -8003727c: 00000000 nop -80037280: 1040001b beqz v0,800372f0 -80037284: 00000000 nop -80037288: 8fc20024 lw v0,36(s8) -8003728c: 00000000 nop -80037290: 80420000 lb v0,0(v0) -80037294: 00000000 nop -80037298: 00402021 move a0,v0 -8003729c: 0c00a5eb jal 800297ac -800372a0: 00000000 nop -800372a4: 10400012 beqz v0,800372f0 -800372a8: 00000000 nop -800372ac: 8fc20020 lw v0,32(s8) -800372b0: 00000000 nop -800372b4: 80420000 lb v0,0(v0) -800372b8: 00000000 nop -800372bc: 00402021 move a0,v0 -800372c0: 0c00a5eb jal 800297ac -800372c4: 00000000 nop -800372c8: 00408021 move s0,v0 -800372cc: 8fc20024 lw v0,36(s8) -800372d0: 00000000 nop -800372d4: 80420000 lb v0,0(v0) -800372d8: 00000000 nop -800372dc: 00402021 move a0,v0 -800372e0: 0c00a5eb jal 800297ac -800372e4: 00000000 nop -800372e8: 1202ffd6 beq s0,v0,80037244 -800372ec: 00000000 nop - { - s1++; - s2++; - } - - return tolower(*s1)-tolower(*s2); -800372f0: 8fc20020 lw v0,32(s8) -800372f4: 00000000 nop -800372f8: 80420000 lb v0,0(v0) -800372fc: 00000000 nop -80037300: 00402021 move a0,v0 -80037304: 0c00a5eb jal 800297ac -80037308: 00000000 nop -8003730c: 00408021 move s0,v0 -80037310: 8fc20024 lw v0,36(s8) -80037314: 00000000 nop -80037318: 80420000 lb v0,0(v0) -8003731c: 00000000 nop -80037320: 00402021 move a0,v0 -80037324: 0c00a5eb jal 800297ac -80037328: 00000000 nop -8003732c: 02021023 subu v0,s0,v0 -} -80037330: 03c0e821 move sp,s8 -80037334: 8fbf001c lw ra,28(sp) -80037338: 8fbe0018 lw s8,24(sp) -8003733c: 8fb00014 lw s0,20(sp) -80037340: 27bd0020 addiu sp,sp,32 -80037344: 03e00008 jr ra -80037348: 00000000 nop - -8003734c : - -int strncasecmp(const char *s1, const char *s2, size_t len) -{ -8003734c: 27bdffd8 addiu sp,sp,-40 -80037350: afbf0024 sw ra,36(sp) -80037354: afbe0020 sw s8,32(sp) -80037358: afb0001c sw s0,28(sp) -8003735c: 03a0f021 move s8,sp -80037360: afc40028 sw a0,40(s8) -80037364: afc5002c sw a1,44(s8) -80037368: afc60030 sw a2,48(s8) - int p = 0; -8003736c: afc00010 sw zero,16(s8) - - while(tolower(*s1) && tolower(*s2) && (tolower(*s1) == tolower(*s2)) && p -80037374: 00000000 nop - { - p++; -80037378: 8fc20010 lw v0,16(s8) -8003737c: 00000000 nop -80037380: 24420001 addiu v0,v0,1 -80037384: afc20010 sw v0,16(s8) - - if(p -8003739c: 00000000 nop - { - s1++; -800373a0: 8fc20028 lw v0,40(s8) -800373a4: 00000000 nop -800373a8: 24420001 addiu v0,v0,1 -800373ac: afc20028 sw v0,40(s8) - s2++; -800373b0: 8fc2002c lw v0,44(s8) -800373b4: 00000000 nop -800373b8: 24420001 addiu v0,v0,1 -800373bc: afc2002c sw v0,44(s8) - -int strncasecmp(const char *s1, const char *s2, size_t len) -{ - int p = 0; - - while(tolower(*s1) && tolower(*s2) && (tolower(*s1) == tolower(*s2)) && p -800373d8: 00000000 nop -800373dc: 10400021 beqz v0,80037464 -800373e0: 00000000 nop -800373e4: 8fc2002c lw v0,44(s8) -800373e8: 00000000 nop -800373ec: 80420000 lb v0,0(v0) -800373f0: 00000000 nop -800373f4: 00402021 move a0,v0 -800373f8: 0c00a5eb jal 800297ac -800373fc: 00000000 nop -80037400: 10400018 beqz v0,80037464 -80037404: 00000000 nop -80037408: 8fc20028 lw v0,40(s8) -8003740c: 00000000 nop -80037410: 80420000 lb v0,0(v0) -80037414: 00000000 nop -80037418: 00402021 move a0,v0 -8003741c: 0c00a5eb jal 800297ac -80037420: 00000000 nop -80037424: 00408021 move s0,v0 -80037428: 8fc2002c lw v0,44(s8) -8003742c: 00000000 nop -80037430: 80420000 lb v0,0(v0) -80037434: 00000000 nop -80037438: 00402021 move a0,v0 -8003743c: 0c00a5eb jal 800297ac -80037440: 00000000 nop -80037444: 16020007 bne s0,v0,80037464 -80037448: 00000000 nop -8003744c: 8fc30010 lw v1,16(s8) -80037450: 8fc20030 lw v0,48(s8) -80037454: 00000000 nop -80037458: 0062102b sltu v0,v1,v0 -8003745c: 1440ffc6 bnez v0,80037378 -80037460: 00000000 nop - s1++; - s2++; - } - } - - return tolower(*s1)-tolower(*s2); -80037464: 8fc20028 lw v0,40(s8) -80037468: 00000000 nop -8003746c: 80420000 lb v0,0(v0) -80037470: 00000000 nop -80037474: 00402021 move a0,v0 -80037478: 0c00a5eb jal 800297ac -8003747c: 00000000 nop -80037480: 00408021 move s0,v0 -80037484: 8fc2002c lw v0,44(s8) -80037488: 00000000 nop -8003748c: 80420000 lb v0,0(v0) -80037490: 00000000 nop -80037494: 00402021 move a0,v0 -80037498: 0c00a5eb jal 800297ac -8003749c: 00000000 nop -800374a0: 02021023 subu v0,s0,v0 -} -800374a4: 03c0e821 move sp,s8 -800374a8: 8fbf0024 lw ra,36(sp) -800374ac: 8fbe0020 lw s8,32(sp) -800374b0: 8fb0001c lw s0,28(sp) -800374b4: 27bd0028 addiu sp,sp,40 -800374b8: 03e00008 jr ra -800374bc: 00000000 nop - -800374c0 : - -int stricmp(const char *s1, const char *s2) -{ -800374c0: 27bdffe8 addiu sp,sp,-24 -800374c4: afbf0014 sw ra,20(sp) -800374c8: afbe0010 sw s8,16(sp) -800374cc: 03a0f021 move s8,sp -800374d0: afc40018 sw a0,24(s8) -800374d4: afc5001c sw a1,28(s8) - return strcasecmp(s1,s2); -800374d8: 8fc5001c lw a1,28(s8) -800374dc: 8fc40018 lw a0,24(s8) -800374e0: 0c00dc88 jal 80037220 -800374e4: 00000000 nop -} -800374e8: 03c0e821 move sp,s8 -800374ec: 8fbf0014 lw ra,20(sp) -800374f0: 8fbe0010 lw s8,16(sp) -800374f4: 27bd0018 addiu sp,sp,24 -800374f8: 03e00008 jr ra -800374fc: 00000000 nop - -80037500 : - -int strnicmp(const char *s1, const char *s2, size_t len) -{ -80037500: 27bdffe8 addiu sp,sp,-24 -80037504: afbf0014 sw ra,20(sp) -80037508: afbe0010 sw s8,16(sp) -8003750c: 03a0f021 move s8,sp -80037510: afc40018 sw a0,24(s8) -80037514: afc5001c sw a1,28(s8) -80037518: afc60020 sw a2,32(s8) - return strncasecmp(s1, s2, len); -8003751c: 8fc60020 lw a2,32(s8) -80037520: 8fc5001c lw a1,28(s8) -80037524: 8fc40018 lw a0,24(s8) -80037528: 0c00dcd3 jal 8003734c -8003752c: 00000000 nop -} -80037530: 03c0e821 move sp,s8 -80037534: 8fbf0014 lw ra,20(sp) -80037538: 8fbe0010 lw s8,16(sp) -8003753c: 27bd0018 addiu sp,sp,24 -80037540: 03e00008 jr ra -80037544: 00000000 nop - -80037548 : - -//static char *strtok_string; - -char *strsep(char **stringp, const char *delim) -{ -80037548: 27bdffe8 addiu sp,sp,-24 -8003754c: afbe0014 sw s8,20(sp) -80037550: 03a0f021 move s8,sp -80037554: afc40018 sw a0,24(s8) -80037558: afc5001c sw a1,28(s8) - //int x,y; - char *old = *stringp; -8003755c: 8fc20018 lw v0,24(s8) -80037560: 00000000 nop -80037564: 8c420000 lw v0,0(v0) -80037568: 00000000 nop -8003756c: afc20004 sw v0,4(s8) - const char *s; - int ok = 0; -80037570: afc00000 sw zero,0(s8) - - while(**stringp && !ok) -80037574: 1000002f b 80037634 -80037578: 00000000 nop - { - s = delim; -8003757c: 8fc2001c lw v0,28(s8) -80037580: 00000000 nop -80037584: afc20008 sw v0,8(s8) - - while(*delim) -80037588: 10000019 b 800375f0 -8003758c: 00000000 nop - { - if(**stringp == *delim) -80037590: 8fc20018 lw v0,24(s8) -80037594: 00000000 nop -80037598: 8c420000 lw v0,0(v0) -8003759c: 00000000 nop -800375a0: 80430000 lb v1,0(v0) -800375a4: 8fc2001c lw v0,28(s8) -800375a8: 00000000 nop -800375ac: 80420000 lb v0,0(v0) -800375b0: 00000000 nop -800375b4: 1462000a bne v1,v0,800375e0 -800375b8: 00000000 nop - { - **stringp = 0; -800375bc: 8fc20018 lw v0,24(s8) -800375c0: 00000000 nop -800375c4: 8c420000 lw v0,0(v0) -800375c8: 00000000 nop -800375cc: a0400000 sb zero,0(v0) - ok = 1; -800375d0: 24020001 li v0,1 -800375d4: afc20000 sw v0,0(s8) - break; -800375d8: 1000000b b 80037608 -800375dc: 00000000 nop - } - - delim++; -800375e0: 8fc2001c lw v0,28(s8) -800375e4: 00000000 nop -800375e8: 24420001 addiu v0,v0,1 -800375ec: afc2001c sw v0,28(s8) - - while(**stringp && !ok) - { - s = delim; - - while(*delim) -800375f0: 8fc2001c lw v0,28(s8) -800375f4: 00000000 nop -800375f8: 80420000 lb v0,0(v0) -800375fc: 00000000 nop -80037600: 1440ffe3 bnez v0,80037590 -80037604: 00000000 nop - } - - delim++; - } - - delim = s; -80037608: 8fc20008 lw v0,8(s8) -8003760c: 00000000 nop -80037610: afc2001c sw v0,28(s8) - - *stringp+=1; -80037614: 8fc20018 lw v0,24(s8) -80037618: 00000000 nop -8003761c: 8c420000 lw v0,0(v0) -80037620: 00000000 nop -80037624: 24430001 addiu v1,v0,1 -80037628: 8fc20018 lw v0,24(s8) -8003762c: 00000000 nop -80037630: ac430000 sw v1,0(v0) - //int x,y; - char *old = *stringp; - const char *s; - int ok = 0; - - while(**stringp && !ok) -80037634: 8fc20018 lw v0,24(s8) -80037638: 00000000 nop -8003763c: 8c420000 lw v0,0(v0) -80037640: 00000000 nop -80037644: 80420000 lb v0,0(v0) -80037648: 00000000 nop -8003764c: 10400005 beqz v0,80037664 -80037650: 00000000 nop -80037654: 8fc20000 lw v0,0(s8) -80037658: 00000000 nop -8003765c: 1040ffc7 beqz v0,8003757c -80037660: 00000000 nop - delim = s; - - *stringp+=1; - } - - if(!ok)*stringp = NULL; -80037664: 8fc20000 lw v0,0(s8) -80037668: 00000000 nop -8003766c: 14400004 bnez v0,80037680 -80037670: 00000000 nop -80037674: 8fc20018 lw v0,24(s8) -80037678: 00000000 nop -8003767c: ac400000 sw zero,0(v0) - - return old; -80037680: 8fc20004 lw v0,4(s8) -} -80037684: 03c0e821 move sp,s8 -80037688: 8fbe0014 lw s8,20(sp) -8003768c: 27bd0018 addiu sp,sp,24 -80037690: 03e00008 jr ra -80037694: 00000000 nop - -80037698 : - -char* strtok_r( - char *str, - const char *delim, - char **nextp) -{ -80037698: 27bdffe0 addiu sp,sp,-32 -8003769c: afbf001c sw ra,28(sp) -800376a0: afbe0018 sw s8,24(sp) -800376a4: 03a0f021 move s8,sp -800376a8: afc40020 sw a0,32(s8) -800376ac: afc50024 sw a1,36(s8) -800376b0: afc60028 sw a2,40(s8) - char *ret; - - if (str == NULL) -800376b4: 8fc20020 lw v0,32(s8) -800376b8: 00000000 nop -800376bc: 14400006 bnez v0,800376d8 -800376c0: 00000000 nop - { - str = *nextp; -800376c4: 8fc20028 lw v0,40(s8) -800376c8: 00000000 nop -800376cc: 8c420000 lw v0,0(v0) -800376d0: 00000000 nop -800376d4: afc20020 sw v0,32(s8) - } - - str += strspn(str, delim); -800376d8: 8fc50024 lw a1,36(s8) -800376dc: 8fc40020 lw a0,32(s8) -800376e0: 0c00dea0 jal 80037a80 -800376e4: 00000000 nop -800376e8: 00401821 move v1,v0 -800376ec: 8fc20020 lw v0,32(s8) -800376f0: 00000000 nop -800376f4: 00431021 addu v0,v0,v1 -800376f8: afc20020 sw v0,32(s8) - - if (*str == '\0') -800376fc: 8fc20020 lw v0,32(s8) -80037700: 00000000 nop -80037704: 80420000 lb v0,0(v0) -80037708: 00000000 nop -8003770c: 14400004 bnez v0,80037720 -80037710: 00000000 nop - { - return NULL; -80037714: 00001021 move v0,zero -80037718: 1000001d b 80037790 -8003771c: 00000000 nop - } - - ret = str; -80037720: 8fc20020 lw v0,32(s8) -80037724: 00000000 nop -80037728: afc20010 sw v0,16(s8) - - str += strcspn(str, delim); -8003772c: 8fc50024 lw a1,36(s8) -80037730: 8fc40020 lw a0,32(s8) -80037734: 0c00dee2 jal 80037b88 -80037738: 00000000 nop -8003773c: 00401821 move v1,v0 -80037740: 8fc20020 lw v0,32(s8) -80037744: 00000000 nop -80037748: 00431021 addu v0,v0,v1 -8003774c: afc20020 sw v0,32(s8) - - if (*str) -80037750: 8fc20020 lw v0,32(s8) -80037754: 00000000 nop -80037758: 80420000 lb v0,0(v0) -8003775c: 00000000 nop -80037760: 10400006 beqz v0,8003777c -80037764: 00000000 nop - { - *str++ = '\0'; -80037768: 8fc20020 lw v0,32(s8) -8003776c: 00000000 nop -80037770: 24430001 addiu v1,v0,1 -80037774: afc30020 sw v1,32(s8) -80037778: a0400000 sb zero,0(v0) - } - - *nextp = str; -8003777c: 8fc20028 lw v0,40(s8) -80037780: 8fc30020 lw v1,32(s8) -80037784: 00000000 nop -80037788: ac430000 sw v1,0(v0) - - return ret; -8003778c: 8fc20010 lw v0,16(s8) -} -80037790: 03c0e821 move sp,s8 -80037794: 8fbf001c lw ra,28(sp) -80037798: 8fbe0018 lw s8,24(sp) -8003779c: 27bd0020 addiu sp,sp,32 -800377a0: 03e00008 jr ra -800377a4: 00000000 nop - -800377a8 : - -char *strtok(char *str, const char *sep) -{ -800377a8: 27bdffe0 addiu sp,sp,-32 -800377ac: afbf001c sw ra,28(sp) -800377b0: afbe0018 sw s8,24(sp) -800377b4: 03a0f021 move s8,sp -800377b8: afc40020 sw a0,32(s8) -800377bc: afc50024 sw a1,36(s8) - static char *strtok_string; - static int strtok_len; - static int strtok_pos; - //int strtok_oldpos = 0; - - if(str != NULL) -800377c0: 8fc20020 lw v0,32(s8) -800377c4: 00000000 nop -800377c8: 1040007c beqz v0,800379bc -800377cc: 00000000 nop - { - strtok_string = str; -800377d0: 3c028007 lui v0,0x8007 -800377d4: 8fc30020 lw v1,32(s8) -800377d8: 00000000 nop -800377dc: ac431d0c sw v1,7436(v0) - strtok_len = strlen(str); -800377e0: 8fc40020 lw a0,32(s8) -800377e4: 0c00d8af jal 800362bc -800377e8: 00000000 nop -800377ec: 00401821 move v1,v0 -800377f0: 3c028007 lui v0,0x8007 -800377f4: ac431d10 sw v1,7440(v0) - - for(x = 0; x < strtok_len; x++) -800377f8: afc00010 sw zero,16(s8) -800377fc: 1000002a b 800378a8 -80037800: 00000000 nop - { - for(y = 0; sep[y] != 0; y++) -80037804: afc00014 sw zero,20(s8) -80037808: 1000001b b 80037878 -8003780c: 00000000 nop - { - if(strtok_string[x] == sep[y]) -80037810: 3c028007 lui v0,0x8007 -80037814: 8c431d0c lw v1,7436(v0) -80037818: 8fc20010 lw v0,16(s8) -8003781c: 00000000 nop -80037820: 00621021 addu v0,v1,v0 -80037824: 80430000 lb v1,0(v0) -80037828: 8fc20014 lw v0,20(s8) -8003782c: 8fc40024 lw a0,36(s8) -80037830: 00000000 nop -80037834: 00821021 addu v0,a0,v0 -80037838: 80420000 lb v0,0(v0) -8003783c: 00000000 nop -80037840: 14620009 bne v1,v0,80037868 -80037844: 00000000 nop - { - strtok_string[x] = 0; -80037848: 3c028007 lui v0,0x8007 -8003784c: 8c431d0c lw v1,7436(v0) -80037850: 8fc20010 lw v0,16(s8) -80037854: 00000000 nop -80037858: 00621021 addu v0,v1,v0 -8003785c: a0400000 sb zero,0(v0) - break; -80037860: 1000000d b 80037898 -80037864: 00000000 nop - strtok_string = str; - strtok_len = strlen(str); - - for(x = 0; x < strtok_len; x++) - { - for(y = 0; sep[y] != 0; y++) -80037868: 8fc20014 lw v0,20(s8) -8003786c: 00000000 nop -80037870: 24420001 addiu v0,v0,1 -80037874: afc20014 sw v0,20(s8) -80037878: 8fc20014 lw v0,20(s8) -8003787c: 8fc30024 lw v1,36(s8) -80037880: 00000000 nop -80037884: 00621021 addu v0,v1,v0 -80037888: 80420000 lb v0,0(v0) -8003788c: 00000000 nop -80037890: 1440ffdf bnez v0,80037810 -80037894: 00000000 nop - if(str != NULL) - { - strtok_string = str; - strtok_len = strlen(str); - - for(x = 0; x < strtok_len; x++) -80037898: 8fc20010 lw v0,16(s8) -8003789c: 00000000 nop -800378a0: 24420001 addiu v0,v0,1 -800378a4: afc20010 sw v0,16(s8) -800378a8: 3c028007 lui v0,0x8007 -800378ac: 8c421d10 lw v0,7440(v0) -800378b0: 8fc30010 lw v1,16(s8) -800378b4: 00000000 nop -800378b8: 0062102a slt v0,v1,v0 -800378bc: 1440ffd1 bnez v0,80037804 -800378c0: 00000000 nop - break; - } - } - } - - strtok_pos = 0; -800378c4: 3c028007 lui v0,0x8007 -800378c8: ac401d14 sw zero,7444(v0) - - while(strtok_pos < strtok_len) -800378cc: 10000019 b 80037934 -800378d0: 00000000 nop - { - if(strtok_string[strtok_pos]) -800378d4: 3c028007 lui v0,0x8007 -800378d8: 8c421d0c lw v0,7436(v0) -800378dc: 3c038007 lui v1,0x8007 -800378e0: 8c631d14 lw v1,7444(v1) -800378e4: 00000000 nop -800378e8: 00431021 addu v0,v0,v1 -800378ec: 80420000 lb v0,0(v0) -800378f0: 00000000 nop -800378f4: 10400009 beqz v0,8003791c -800378f8: 00000000 nop - return &strtok_string[strtok_pos]; -800378fc: 3c028007 lui v0,0x8007 -80037900: 8c421d0c lw v0,7436(v0) -80037904: 3c038007 lui v1,0x8007 -80037908: 8c631d14 lw v1,7444(v1) -8003790c: 00000000 nop -80037910: 00431021 addu v0,v0,v1 -80037914: 10000054 b 80037a68 -80037918: 00000000 nop - - strtok_pos++; -8003791c: 3c028007 lui v0,0x8007 -80037920: 8c421d14 lw v0,7444(v0) -80037924: 00000000 nop -80037928: 24430001 addiu v1,v0,1 -8003792c: 3c028007 lui v0,0x8007 -80037930: ac431d14 sw v1,7444(v0) - } - } - - strtok_pos = 0; - - while(strtok_pos < strtok_len) -80037934: 3c028007 lui v0,0x8007 -80037938: 8c431d14 lw v1,7444(v0) -8003793c: 3c028007 lui v0,0x8007 -80037940: 8c421d10 lw v0,7440(v0) -80037944: 00000000 nop -80037948: 0062102a slt v0,v1,v0 -8003794c: 1440ffe1 bnez v0,800378d4 -80037950: 00000000 nop - - strtok_pos++; - } - } - - while(strtok_pos < strtok_len) -80037954: 10000019 b 800379bc -80037958: 00000000 nop - { - if(!strtok_string[strtok_pos]) -8003795c: 3c028007 lui v0,0x8007 -80037960: 8c421d0c lw v0,7436(v0) -80037964: 3c038007 lui v1,0x8007 -80037968: 8c631d14 lw v1,7444(v1) -8003796c: 00000000 nop -80037970: 00431021 addu v0,v0,v1 -80037974: 80420000 lb v0,0(v0) -80037978: 00000000 nop -8003797c: 14400009 bnez v0,800379a4 -80037980: 00000000 nop - { - strtok_pos++; -80037984: 3c028007 lui v0,0x8007 -80037988: 8c421d14 lw v0,7444(v0) -8003798c: 00000000 nop -80037990: 24430001 addiu v1,v0,1 -80037994: 3c028007 lui v0,0x8007 -80037998: ac431d14 sw v1,7444(v0) - break; -8003799c: 1000000f b 800379dc -800379a0: 00000000 nop - } - - strtok_pos++; -800379a4: 3c028007 lui v0,0x8007 -800379a8: 8c421d14 lw v0,7444(v0) -800379ac: 00000000 nop -800379b0: 24430001 addiu v1,v0,1 -800379b4: 3c028007 lui v0,0x8007 -800379b8: ac431d14 sw v1,7444(v0) - - strtok_pos++; - } - } - - while(strtok_pos < strtok_len) -800379bc: 3c028007 lui v0,0x8007 -800379c0: 8c431d14 lw v1,7444(v0) -800379c4: 3c028007 lui v0,0x8007 -800379c8: 8c421d10 lw v0,7440(v0) -800379cc: 00000000 nop -800379d0: 0062102a slt v0,v1,v0 -800379d4: 1440ffe1 bnez v0,8003795c -800379d8: 00000000 nop - } - - strtok_pos++; - } - - while(strtok_pos < strtok_len) -800379dc: 10000019 b 80037a44 -800379e0: 00000000 nop - { - - if(strtok_string[strtok_pos]) -800379e4: 3c028007 lui v0,0x8007 -800379e8: 8c421d0c lw v0,7436(v0) -800379ec: 3c038007 lui v1,0x8007 -800379f0: 8c631d14 lw v1,7444(v1) -800379f4: 00000000 nop -800379f8: 00431021 addu v0,v0,v1 -800379fc: 80420000 lb v0,0(v0) -80037a00: 00000000 nop -80037a04: 10400009 beqz v0,80037a2c -80037a08: 00000000 nop - return &strtok_string[strtok_pos]; -80037a0c: 3c028007 lui v0,0x8007 -80037a10: 8c421d0c lw v0,7436(v0) -80037a14: 3c038007 lui v1,0x8007 -80037a18: 8c631d14 lw v1,7444(v1) -80037a1c: 00000000 nop -80037a20: 00431021 addu v0,v0,v1 -80037a24: 10000010 b 80037a68 -80037a28: 00000000 nop - - strtok_pos++; -80037a2c: 3c028007 lui v0,0x8007 -80037a30: 8c421d14 lw v0,7444(v0) -80037a34: 00000000 nop -80037a38: 24430001 addiu v1,v0,1 -80037a3c: 3c028007 lui v0,0x8007 -80037a40: ac431d14 sw v1,7444(v0) - } - - strtok_pos++; - } - - while(strtok_pos < strtok_len) -80037a44: 3c028007 lui v0,0x8007 -80037a48: 8c431d14 lw v1,7444(v0) -80037a4c: 3c028007 lui v0,0x8007 -80037a50: 8c421d10 lw v0,7440(v0) -80037a54: 00000000 nop -80037a58: 0062102a slt v0,v1,v0 -80037a5c: 1440ffe1 bnez v0,800379e4 -80037a60: 00000000 nop - return &strtok_string[strtok_pos]; - - strtok_pos++; - } - - return NULL; -80037a64: 00001021 move v0,zero -} -80037a68: 03c0e821 move sp,s8 -80037a6c: 8fbf001c lw ra,28(sp) -80037a70: 8fbe0018 lw s8,24(sp) -80037a74: 27bd0020 addiu sp,sp,32 -80037a78: 03e00008 jr ra -80037a7c: 00000000 nop - -80037a80 : - -int strspn(const char *s, const char *charset) -{ -80037a80: 27bdffe8 addiu sp,sp,-24 -80037a84: afbe0014 sw s8,20(sp) -80037a88: 03a0f021 move s8,sp -80037a8c: afc40018 sw a0,24(s8) -80037a90: afc5001c sw a1,28(s8) - int x, y; - int appears; - - for(x = 0; s[x] != 0; x++) -80037a94: afc00000 sw zero,0(s8) -80037a98: 1000002a b 80037b44 -80037a9c: 00000000 nop - { - appears = 0; -80037aa0: afc00008 sw zero,8(s8) - - for(y = 0; charset[y] != 0; y++) -80037aa4: afc00004 sw zero,4(s8) -80037aa8: 10000016 b 80037b04 -80037aac: 00000000 nop - { - if(s[x] == charset[y]) -80037ab0: 8fc20000 lw v0,0(s8) -80037ab4: 8fc30018 lw v1,24(s8) -80037ab8: 00000000 nop -80037abc: 00621021 addu v0,v1,v0 -80037ac0: 80430000 lb v1,0(v0) -80037ac4: 8fc20004 lw v0,4(s8) -80037ac8: 8fc4001c lw a0,28(s8) -80037acc: 00000000 nop -80037ad0: 00821021 addu v0,a0,v0 -80037ad4: 80420000 lb v0,0(v0) -80037ad8: 00000000 nop -80037adc: 14620005 bne v1,v0,80037af4 -80037ae0: 00000000 nop - { - appears = 1; -80037ae4: 24020001 li v0,1 -80037ae8: afc20008 sw v0,8(s8) - break; -80037aec: 1000000d b 80037b24 -80037af0: 00000000 nop - - for(x = 0; s[x] != 0; x++) - { - appears = 0; - - for(y = 0; charset[y] != 0; y++) -80037af4: 8fc20004 lw v0,4(s8) -80037af8: 00000000 nop -80037afc: 24420001 addiu v0,v0,1 -80037b00: afc20004 sw v0,4(s8) -80037b04: 8fc20004 lw v0,4(s8) -80037b08: 8fc3001c lw v1,28(s8) -80037b0c: 00000000 nop -80037b10: 00621021 addu v0,v1,v0 -80037b14: 80420000 lb v0,0(v0) -80037b18: 00000000 nop -80037b1c: 1440ffe4 bnez v0,80037ab0 -80037b20: 00000000 nop - appears = 1; - break; - } - } - - if(!appears)break; -80037b24: 8fc20008 lw v0,8(s8) -80037b28: 00000000 nop -80037b2c: 1040000f beqz v0,80037b6c -80037b30: 00000000 nop -int strspn(const char *s, const char *charset) -{ - int x, y; - int appears; - - for(x = 0; s[x] != 0; x++) -80037b34: 8fc20000 lw v0,0(s8) -80037b38: 00000000 nop -80037b3c: 24420001 addiu v0,v0,1 -80037b40: afc20000 sw v0,0(s8) -80037b44: 8fc20000 lw v0,0(s8) -80037b48: 8fc30018 lw v1,24(s8) -80037b4c: 00000000 nop -80037b50: 00621021 addu v0,v1,v0 -80037b54: 80420000 lb v0,0(v0) -80037b58: 00000000 nop -80037b5c: 1440ffd0 bnez v0,80037aa0 -80037b60: 00000000 nop -80037b64: 10000002 b 80037b70 -80037b68: 00000000 nop - appears = 1; - break; - } - } - - if(!appears)break; -80037b6c: 00000000 nop - } - - return x; -80037b70: 8fc20000 lw v0,0(s8) -} -80037b74: 03c0e821 move sp,s8 -80037b78: 8fbe0014 lw s8,20(sp) -80037b7c: 27bd0018 addiu sp,sp,24 -80037b80: 03e00008 jr ra -80037b84: 00000000 nop - -80037b88 : - -int strcspn(const char *s, const char *charset) -{ -80037b88: 27bdffe8 addiu sp,sp,-24 -80037b8c: afbe0014 sw s8,20(sp) -80037b90: 03a0f021 move s8,sp -80037b94: afc40018 sw a0,24(s8) -80037b98: afc5001c sw a1,28(s8) - int x, y; - int appears; - - for(x = 0; s[x] != 0; x++) -80037b9c: afc00000 sw zero,0(s8) -80037ba0: 1000002a b 80037c4c -80037ba4: 00000000 nop - { - appears = 0; -80037ba8: afc00008 sw zero,8(s8) - - for(y = 0; charset[y] != 0; y++) -80037bac: afc00004 sw zero,4(s8) -80037bb0: 10000016 b 80037c0c -80037bb4: 00000000 nop - { - if(s[x] == charset[y]) -80037bb8: 8fc20000 lw v0,0(s8) -80037bbc: 8fc30018 lw v1,24(s8) -80037bc0: 00000000 nop -80037bc4: 00621021 addu v0,v1,v0 -80037bc8: 80430000 lb v1,0(v0) -80037bcc: 8fc20004 lw v0,4(s8) -80037bd0: 8fc4001c lw a0,28(s8) -80037bd4: 00000000 nop -80037bd8: 00821021 addu v0,a0,v0 -80037bdc: 80420000 lb v0,0(v0) -80037be0: 00000000 nop -80037be4: 14620005 bne v1,v0,80037bfc -80037be8: 00000000 nop - { - appears = 1; -80037bec: 24020001 li v0,1 -80037bf0: afc20008 sw v0,8(s8) - break; -80037bf4: 1000000d b 80037c2c -80037bf8: 00000000 nop - - for(x = 0; s[x] != 0; x++) - { - appears = 0; - - for(y = 0; charset[y] != 0; y++) -80037bfc: 8fc20004 lw v0,4(s8) -80037c00: 00000000 nop -80037c04: 24420001 addiu v0,v0,1 -80037c08: afc20004 sw v0,4(s8) -80037c0c: 8fc20004 lw v0,4(s8) -80037c10: 8fc3001c lw v1,28(s8) -80037c14: 00000000 nop -80037c18: 00621021 addu v0,v1,v0 -80037c1c: 80420000 lb v0,0(v0) -80037c20: 00000000 nop -80037c24: 1440ffe4 bnez v0,80037bb8 -80037c28: 00000000 nop - appears = 1; - break; - } - } - - if(appears)break; -80037c2c: 8fc20008 lw v0,8(s8) -80037c30: 00000000 nop -80037c34: 1440000f bnez v0,80037c74 -80037c38: 00000000 nop -int strcspn(const char *s, const char *charset) -{ - int x, y; - int appears; - - for(x = 0; s[x] != 0; x++) -80037c3c: 8fc20000 lw v0,0(s8) -80037c40: 00000000 nop -80037c44: 24420001 addiu v0,v0,1 -80037c48: afc20000 sw v0,0(s8) -80037c4c: 8fc20000 lw v0,0(s8) -80037c50: 8fc30018 lw v1,24(s8) -80037c54: 00000000 nop -80037c58: 00621021 addu v0,v1,v0 -80037c5c: 80420000 lb v0,0(v0) -80037c60: 00000000 nop -80037c64: 1440ffd0 bnez v0,80037ba8 -80037c68: 00000000 nop -80037c6c: 10000002 b 80037c78 -80037c70: 00000000 nop - appears = 1; - break; - } - } - - if(appears)break; -80037c74: 00000000 nop - } - - return x; -80037c78: 8fc20000 lw v0,0(s8) -} -80037c7c: 03c0e821 move sp,s8 -80037c80: 8fbe0014 lw s8,20(sp) -80037c84: 27bd0018 addiu sp,sp,24 -80037c88: 03e00008 jr ra -80037c8c: 00000000 nop - -80037c90 : - -char *strlwr(char *string) -{ -80037c90: 27bdffe0 addiu sp,sp,-32 -80037c94: afbf001c sw ra,28(sp) -80037c98: afbe0018 sw s8,24(sp) -80037c9c: 03a0f021 move s8,sp -80037ca0: afc40020 sw a0,32(s8) - char *old = string; -80037ca4: 8fc20020 lw v0,32(s8) -80037ca8: 00000000 nop -80037cac: afc20010 sw v0,16(s8) - - while(*string) -80037cb0: 10000011 b 80037cf8 -80037cb4: 00000000 nop - { - *string = tolower(*string); -80037cb8: 8fc20020 lw v0,32(s8) -80037cbc: 00000000 nop -80037cc0: 80420000 lb v0,0(v0) -80037cc4: 00000000 nop -80037cc8: 00402021 move a0,v0 -80037ccc: 0c00a5eb jal 800297ac -80037cd0: 00000000 nop -80037cd4: 00021e00 sll v1,v0,0x18 -80037cd8: 00031e03 sra v1,v1,0x18 -80037cdc: 8fc20020 lw v0,32(s8) -80037ce0: 00000000 nop -80037ce4: a0430000 sb v1,0(v0) - string++; -80037ce8: 8fc20020 lw v0,32(s8) -80037cec: 00000000 nop -80037cf0: 24420001 addiu v0,v0,1 -80037cf4: afc20020 sw v0,32(s8) - -char *strlwr(char *string) -{ - char *old = string; - - while(*string) -80037cf8: 8fc20020 lw v0,32(s8) -80037cfc: 00000000 nop -80037d00: 80420000 lb v0,0(v0) -80037d04: 00000000 nop -80037d08: 1440ffeb bnez v0,80037cb8 -80037d0c: 00000000 nop - { - *string = tolower(*string); - string++; - } - - return old; -80037d10: 8fc20010 lw v0,16(s8) -} -80037d14: 03c0e821 move sp,s8 -80037d18: 8fbf001c lw ra,28(sp) -80037d1c: 8fbe0018 lw s8,24(sp) -80037d20: 27bd0020 addiu sp,sp,32 -80037d24: 03e00008 jr ra -80037d28: 00000000 nop - -80037d2c : - -char *strupr(char *string) -{ -80037d2c: 27bdffe0 addiu sp,sp,-32 -80037d30: afbf001c sw ra,28(sp) -80037d34: afbe0018 sw s8,24(sp) -80037d38: 03a0f021 move s8,sp -80037d3c: afc40020 sw a0,32(s8) - char *old = string; -80037d40: 8fc20020 lw v0,32(s8) -80037d44: 00000000 nop -80037d48: afc20010 sw v0,16(s8) - - while(*string) -80037d4c: 10000011 b 80037d94 -80037d50: 00000000 nop - { - *string = toupper(*string); -80037d54: 8fc20020 lw v0,32(s8) -80037d58: 00000000 nop -80037d5c: 80420000 lb v0,0(v0) -80037d60: 00000000 nop -80037d64: 00402021 move a0,v0 -80037d68: 0c00a5d2 jal 80029748 -80037d6c: 00000000 nop -80037d70: 00021e00 sll v1,v0,0x18 -80037d74: 00031e03 sra v1,v1,0x18 -80037d78: 8fc20020 lw v0,32(s8) -80037d7c: 00000000 nop -80037d80: a0430000 sb v1,0(v0) - string++; -80037d84: 8fc20020 lw v0,32(s8) -80037d88: 00000000 nop -80037d8c: 24420001 addiu v0,v0,1 -80037d90: afc20020 sw v0,32(s8) - -char *strupr(char *string) -{ - char *old = string; - - while(*string) -80037d94: 8fc20020 lw v0,32(s8) -80037d98: 00000000 nop -80037d9c: 80420000 lb v0,0(v0) -80037da0: 00000000 nop -80037da4: 1440ffeb bnez v0,80037d54 -80037da8: 00000000 nop - { - *string = toupper(*string); - string++; - } - - return old; -80037dac: 8fc20010 lw v0,16(s8) -} -80037db0: 03c0e821 move sp,s8 -80037db4: 8fbf001c lw ra,28(sp) -80037db8: 8fbe0018 lw s8,24(sp) -80037dbc: 27bd0020 addiu sp,sp,32 -80037dc0: 03e00008 jr ra -80037dc4: 00000000 nop - -80037dc8 : - -int atoi(const char *string) -{ -80037dc8: 27bdffe8 addiu sp,sp,-24 -80037dcc: afbf0014 sw ra,20(sp) -80037dd0: afbe0010 sw s8,16(sp) -80037dd4: 03a0f021 move s8,sp -80037dd8: afc40018 sw a0,24(s8) - return (int)strtol(string, NULL, 10); -80037ddc: 2406000a li a2,10 -80037de0: 00002821 move a1,zero -80037de4: 8fc40018 lw a0,24(s8) -80037de8: 0c00db4c jal 80036d30 -80037dec: 00000000 nop -} -80037df0: 03c0e821 move sp,s8 -80037df4: 8fbf0014 lw ra,20(sp) -80037df8: 8fbe0010 lw s8,16(sp) -80037dfc: 27bd0018 addiu sp,sp,24 -80037e00: 03e00008 jr ra -80037e04: 00000000 nop - -80037e08 : - -long atol(const char *string) -{ -80037e08: 27bdffe8 addiu sp,sp,-24 -80037e0c: afbf0014 sw ra,20(sp) -80037e10: afbe0010 sw s8,16(sp) -80037e14: 03a0f021 move s8,sp -80037e18: afc40018 sw a0,24(s8) - return strtol(string, NULL, 10); -80037e1c: 2406000a li a2,10 -80037e20: 00002821 move a1,zero -80037e24: 8fc40018 lw a0,24(s8) -80037e28: 0c00db4c jal 80036d30 -80037e2c: 00000000 nop -} -80037e30: 03c0e821 move sp,s8 -80037e34: 8fbf0014 lw ra,20(sp) -80037e38: 8fbe0010 lw s8,16(sp) -80037e3c: 27bd0018 addiu sp,sp,24 -80037e40: 03e00008 jr ra -80037e44: 00000000 nop - -80037e48 : - -int strnlen(const char *s, size_t maxlen) -{ -80037e48: 27bdfff0 addiu sp,sp,-16 -80037e4c: afbe000c sw s8,12(sp) -80037e50: 03a0f021 move s8,sp -80037e54: afc40010 sw a0,16(s8) -80037e58: afc50014 sw a1,20(s8) - int l=0; -80037e5c: afc00000 sw zero,0(s8) - - while(*(s++) && l -80037e64: 00000000 nop - l++; -80037e68: 8fc20000 lw v0,0(s8) -80037e6c: 00000000 nop -80037e70: 24420001 addiu v0,v0,1 -80037e74: afc20000 sw v0,0(s8) - -int strnlen(const char *s, size_t maxlen) -{ - int l=0; - - while(*(s++) && l -80037e94: 00000000 nop -80037e98: 8fc30000 lw v1,0(s8) -80037e9c: 8fc20014 lw v0,20(s8) -80037ea0: 00000000 nop -80037ea4: 0062102b sltu v0,v1,v0 -80037ea8: 1440ffef bnez v0,80037e68 -80037eac: 00000000 nop - l++; - - return l; -80037eb0: 8fc20000 lw v0,0(s8) -} -80037eb4: 03c0e821 move sp,s8 -80037eb8: 8fbe000c lw s8,12(sp) -80037ebc: 27bd0010 addiu sp,sp,16 -80037ec0: 03e00008 jr ra -80037ec4: 00000000 nop - -80037ec8 : - -void *memrchr(void *b, int c, size_t len) -{ -80037ec8: 27bdfff0 addiu sp,sp,-16 -80037ecc: afbe000c sw s8,12(sp) -80037ed0: 03a0f021 move s8,sp -80037ed4: afc40010 sw a0,16(s8) -80037ed8: afc50014 sw a1,20(s8) -80037edc: afc60018 sw a2,24(s8) - int i = len - 1; -80037ee0: 8fc20018 lw v0,24(s8) -80037ee4: 00000000 nop -80037ee8: 2442ffff addiu v0,v0,-1 -80037eec: afc20000 sw v0,0(s8) - unsigned char *p = b; -80037ef0: 8fc20010 lw v0,16(s8) -80037ef4: 00000000 nop -80037ef8: afc20004 sw v0,4(s8) - - for(i = len - 1; p[i] != (unsigned char)c && i >= 0;i--); -80037efc: 8fc20018 lw v0,24(s8) -80037f00: 00000000 nop -80037f04: 2442ffff addiu v0,v0,-1 -80037f08: afc20000 sw v0,0(s8) -80037f0c: 10000005 b 80037f24 -80037f10: 00000000 nop -80037f14: 8fc20000 lw v0,0(s8) -80037f18: 00000000 nop -80037f1c: 2442ffff addiu v0,v0,-1 -80037f20: afc20000 sw v0,0(s8) -80037f24: 8fc20000 lw v0,0(s8) -80037f28: 8fc30004 lw v1,4(s8) -80037f2c: 00000000 nop -80037f30: 00621021 addu v0,v1,v0 -80037f34: 90420000 lbu v0,0(v0) -80037f38: 00000000 nop -80037f3c: 00401821 move v1,v0 -80037f40: 8fc20014 lw v0,20(s8) -80037f44: 00000000 nop -80037f48: 304200ff andi v0,v0,0xff -80037f4c: 10620005 beq v1,v0,80037f64 -80037f50: 00000000 nop -80037f54: 8fc20000 lw v0,0(s8) -80037f58: 00000000 nop -80037f5c: 0441ffed bgez v0,80037f14 -80037f60: 00000000 nop - - return (i>=0)?&p[i]:NULL; -80037f64: 8fc20000 lw v0,0(s8) -80037f68: 00000000 nop -80037f6c: 04400007 bltz v0,80037f8c -80037f70: 00000000 nop -80037f74: 8fc20000 lw v0,0(s8) -80037f78: 8fc30004 lw v1,4(s8) -80037f7c: 00000000 nop -80037f80: 00621021 addu v0,v1,v0 -80037f84: 10000002 b 80037f90 -80037f88: 00000000 nop -80037f8c: 00001021 move v0,zero -} -80037f90: 03c0e821 move sp,s8 -80037f94: 8fbe000c lw s8,12(sp) -80037f98: 27bd0010 addiu sp,sp,16 -80037f9c: 03e00008 jr ra -80037fa0: 00000000 nop - -80037fa4 : - -char *stpcpy(char *dst, const char *src) -{ -80037fa4: 27bdfff8 addiu sp,sp,-8 -80037fa8: afbe0004 sw s8,4(sp) -80037fac: 03a0f021 move s8,sp -80037fb0: afc40008 sw a0,8(s8) -80037fb4: afc5000c sw a1,12(s8) - do - { - *(dst++) = *src; -80037fb8: 8fc20008 lw v0,8(s8) -80037fbc: 00000000 nop -80037fc0: 24430001 addiu v1,v0,1 -80037fc4: afc30008 sw v1,8(s8) -80037fc8: 8fc3000c lw v1,12(s8) -80037fcc: 00000000 nop -80037fd0: 80630000 lb v1,0(v1) -80037fd4: 00000000 nop -80037fd8: a0430000 sb v1,0(v0) - }while(*(src++)); -80037fdc: 8fc2000c lw v0,12(s8) -80037fe0: 00000000 nop -80037fe4: 24430001 addiu v1,v0,1 -80037fe8: afc3000c sw v1,12(s8) -80037fec: 80420000 lb v0,0(v0) -80037ff0: 00000000 nop -80037ff4: 1440fff0 bnez v0,80037fb8 -80037ff8: 00000000 nop - - return dst-1; -80037ffc: 8fc20008 lw v0,8(s8) -80038000: 00000000 nop -80038004: 2442ffff addiu v0,v0,-1 -} -80038008: 03c0e821 move sp,s8 -8003800c: 8fbe0004 lw s8,4(sp) -80038010: 27bd0008 addiu sp,sp,8 -80038014: 03e00008 jr ra -80038018: 00000000 nop - -8003801c : - -char *stpncpy(char *dst, const char *src, int len) -{ -8003801c: 27bdfff0 addiu sp,sp,-16 -80038020: afbe000c sw s8,12(sp) -80038024: 03a0f021 move s8,sp -80038028: afc40010 sw a0,16(s8) -8003802c: afc50014 sw a1,20(s8) -80038030: afc60018 sw a2,24(s8) - int c = 0; -80038034: afc00000 sw zero,0(s8) - - do - { - if(c < len) -80038038: 8fc30000 lw v1,0(s8) -8003803c: 8fc20018 lw v0,24(s8) -80038040: 00000000 nop -80038044: 0062102a slt v0,v1,v0 -80038048: 1040000a beqz v0,80038074 -8003804c: 00000000 nop - *(dst++) = *src; -80038050: 8fc20010 lw v0,16(s8) -80038054: 00000000 nop -80038058: 24430001 addiu v1,v0,1 -8003805c: afc30010 sw v1,16(s8) -80038060: 8fc30014 lw v1,20(s8) -80038064: 00000000 nop -80038068: 80630000 lb v1,0(v1) -8003806c: 00000000 nop -80038070: a0430000 sb v1,0(v0) - - c++; -80038074: 8fc20000 lw v0,0(s8) -80038078: 00000000 nop -8003807c: 24420001 addiu v0,v0,1 -80038080: afc20000 sw v0,0(s8) - }while(*(src++) && c < len); -80038084: 8fc20014 lw v0,20(s8) -80038088: 00000000 nop -8003808c: 24430001 addiu v1,v0,1 -80038090: afc30014 sw v1,20(s8) -80038094: 80420000 lb v0,0(v0) -80038098: 00000000 nop -8003809c: 10400007 beqz v0,800380bc -800380a0: 00000000 nop -800380a4: 8fc30000 lw v1,0(s8) -800380a8: 8fc20018 lw v0,24(s8) -800380ac: 00000000 nop -800380b0: 0062102a slt v0,v1,v0 -800380b4: 1440ffe0 bnez v0,80038038 -800380b8: 00000000 nop - - return dst-1; -800380bc: 8fc20010 lw v0,16(s8) -800380c0: 00000000 nop -800380c4: 2442ffff addiu v0,v0,-1 -} -800380c8: 03c0e821 move sp,s8 -800380cc: 8fbe000c lw s8,12(sp) -800380d0: 27bd0010 addiu sp,sp,16 -800380d4: 03e00008 jr ra -800380d8: 00000000 nop - -800380dc : - -char *strcasestr(const char *big, const char *little) -{ -800380dc: 27bdffd0 addiu sp,sp,-48 -800380e0: afbf002c sw ra,44(sp) -800380e4: afbe0028 sw s8,40(sp) -800380e8: afb00024 sw s0,36(sp) -800380ec: 03a0f021 move s8,sp -800380f0: afc40030 sw a0,48(s8) -800380f4: afc50034 sw a1,52(s8) - while(*big) -800380f8: 10000038 b 800381dc -800380fc: 00000000 nop - { - const char *pbig = big; -80038100: 8fc20030 lw v0,48(s8) -80038104: 00000000 nop -80038108: afc20010 sw v0,16(s8) - const char *plittle = little; -8003810c: 8fc20034 lw v0,52(s8) -80038110: 00000000 nop -80038114: afc20014 sw v0,20(s8) - int ok = 1; -80038118: 24020001 li v0,1 -8003811c: afc20018 sw v0,24(s8) - - while(*pbig) -80038120: 1000001d b 80038198 -80038124: 00000000 nop - { - if(tolower(*pbig) != tolower(*plittle)) -80038128: 8fc20010 lw v0,16(s8) -8003812c: 00000000 nop -80038130: 80420000 lb v0,0(v0) -80038134: 00000000 nop -80038138: 00402021 move a0,v0 -8003813c: 0c00a5eb jal 800297ac -80038140: 00000000 nop -80038144: 00408021 move s0,v0 -80038148: 8fc20014 lw v0,20(s8) -8003814c: 00000000 nop -80038150: 80420000 lb v0,0(v0) -80038154: 00000000 nop -80038158: 00402021 move a0,v0 -8003815c: 0c00a5eb jal 800297ac -80038160: 00000000 nop -80038164: 12020004 beq s0,v0,80038178 -80038168: 00000000 nop - { - ok = 0; -8003816c: afc00018 sw zero,24(s8) - break; -80038170: 1000000f b 800381b0 -80038174: 00000000 nop - } - - pbig++; -80038178: 8fc20010 lw v0,16(s8) -8003817c: 00000000 nop -80038180: 24420001 addiu v0,v0,1 -80038184: afc20010 sw v0,16(s8) - plittle++; -80038188: 8fc20014 lw v0,20(s8) -8003818c: 00000000 nop -80038190: 24420001 addiu v0,v0,1 -80038194: afc20014 sw v0,20(s8) - { - const char *pbig = big; - const char *plittle = little; - int ok = 1; - - while(*pbig) -80038198: 8fc20010 lw v0,16(s8) -8003819c: 00000000 nop -800381a0: 80420000 lb v0,0(v0) -800381a4: 00000000 nop -800381a8: 1440ffdf bnez v0,80038128 -800381ac: 00000000 nop - - pbig++; - plittle++; - } - - if(ok) -800381b0: 8fc20018 lw v0,24(s8) -800381b4: 00000000 nop -800381b8: 10400004 beqz v0,800381cc -800381bc: 00000000 nop - return (char*)big; -800381c0: 8fc20030 lw v0,48(s8) -800381c4: 1000000c b 800381f8 -800381c8: 00000000 nop - - big++; -800381cc: 8fc20030 lw v0,48(s8) -800381d0: 00000000 nop -800381d4: 24420001 addiu v0,v0,1 -800381d8: afc20030 sw v0,48(s8) - return dst-1; -} - -char *strcasestr(const char *big, const char *little) -{ - while(*big) -800381dc: 8fc20030 lw v0,48(s8) -800381e0: 00000000 nop -800381e4: 80420000 lb v0,0(v0) -800381e8: 00000000 nop -800381ec: 1440ffc4 bnez v0,80038100 -800381f0: 00000000 nop - return (char*)big; - - big++; - } - - return NULL; -800381f4: 00001021 move v0,zero -} -800381f8: 03c0e821 move sp,s8 -800381fc: 8fbf002c lw ra,44(sp) -80038200: 8fbe0028 lw s8,40(sp) -80038204: 8fb00024 lw s0,36(sp) -80038208: 27bd0030 addiu sp,sp,48 -8003820c: 03e00008 jr ra -80038210: 00000000 nop - -80038214 : - -int strlcpy(char *dst, const char *src, size_t size) -{ -80038214: 27bdffe0 addiu sp,sp,-32 -80038218: afbf001c sw ra,28(sp) -8003821c: afbe0018 sw s8,24(sp) -80038220: 03a0f021 move s8,sp -80038224: afc40020 sw a0,32(s8) -80038228: afc50024 sw a1,36(s8) -8003822c: afc60028 sw a2,40(s8) - char *src_end = memchr((void*)src, '\0', size); -80038230: 8fc60028 lw a2,40(s8) -80038234: 00002821 move a1,zero -80038238: 8fc40024 lw a0,36(s8) -8003823c: 0c00d83b jal 800360ec -80038240: 00000000 nop -80038244: afc20010 sw v0,16(s8) - - if(src_end == NULL) -80038248: 8fc20010 lw v0,16(s8) -8003824c: 00000000 nop -80038250: 14400004 bnez v0,80038264 -80038254: 00000000 nop - return 0; -80038258: 00001021 move v0,zero -8003825c: 1000000e b 80038298 -80038260: 00000000 nop - - memcpy(dst, src, src_end - src); -80038264: 8fc30010 lw v1,16(s8) -80038268: 8fc20024 lw v0,36(s8) -8003826c: 00000000 nop -80038270: 00621023 subu v0,v1,v0 -80038274: 00403021 move a2,v0 -80038278: 8fc50024 lw a1,36(s8) -8003827c: 8fc40020 lw a0,32(s8) -80038280: 0c00d75e jal 80035d78 -80038284: 00000000 nop - - return (src_end - src); -80038288: 8fc30010 lw v1,16(s8) -8003828c: 8fc20024 lw v0,36(s8) -80038290: 00000000 nop -80038294: 00621023 subu v0,v1,v0 -} -80038298: 03c0e821 move sp,s8 -8003829c: 8fbf001c lw ra,28(sp) -800382a0: 8fbe0018 lw s8,24(sp) -800382a4: 27bd0020 addiu sp,sp,32 -800382a8: 03e00008 jr ra -800382ac: 00000000 nop - -800382b0 : - -int strlcat(char *dst, const char *src, size_t size) -{ -800382b0: 27bdffd8 addiu sp,sp,-40 -800382b4: afbf0024 sw ra,36(sp) -800382b8: afbe0020 sw s8,32(sp) -800382bc: 03a0f021 move s8,sp -800382c0: afc40028 sw a0,40(s8) -800382c4: afc5002c sw a1,44(s8) -800382c8: afc60030 sw a2,48(s8) - int dstl = strlen(dst); -800382cc: 8fc40028 lw a0,40(s8) -800382d0: 0c00d8af jal 800362bc -800382d4: 00000000 nop -800382d8: afc20014 sw v0,20(s8) - char *q = dst + dstl; -800382dc: 8fc20014 lw v0,20(s8) -800382e0: 8fc30028 lw v1,40(s8) -800382e4: 00000000 nop -800382e8: 00621021 addu v0,v1,v0 -800382ec: afc20018 sw v0,24(s8) - int real_size = size; -800382f0: 8fc20030 lw v0,48(s8) -800382f4: 00000000 nop -800382f8: afc20010 sw v0,16(s8) - - if(memchr((void*)src, '\0', size)) -800382fc: 8fc60030 lw a2,48(s8) -80038300: 00002821 move a1,zero -80038304: 8fc4002c lw a0,44(s8) -80038308: 0c00d83b jal 800360ec -8003830c: 00000000 nop -80038310: 10400005 beqz v0,80038328 -80038314: 00000000 nop - real_size = strlen(src); -80038318: 8fc4002c lw a0,44(s8) -8003831c: 0c00d8af jal 800362bc -80038320: 00000000 nop -80038324: afc20010 sw v0,16(s8) - - memcpy(q, src, real_size-dstl-1); -80038328: 8fc30010 lw v1,16(s8) -8003832c: 8fc20014 lw v0,20(s8) -80038330: 00000000 nop -80038334: 00621023 subu v0,v1,v0 -80038338: 2442ffff addiu v0,v0,-1 -8003833c: 00403021 move a2,v0 -80038340: 8fc5002c lw a1,44(s8) -80038344: 8fc40018 lw a0,24(s8) -80038348: 0c00d75e jal 80035d78 -8003834c: 00000000 nop - if(real_size != size) q[real_size-dstl-1] = '\0'; -80038350: 8fc30010 lw v1,16(s8) -80038354: 8fc20030 lw v0,48(s8) -80038358: 00000000 nop -8003835c: 1062000a beq v1,v0,80038388 -80038360: 00000000 nop -80038364: 8fc30010 lw v1,16(s8) -80038368: 8fc20014 lw v0,20(s8) -8003836c: 00000000 nop -80038370: 00621023 subu v0,v1,v0 -80038374: 2442ffff addiu v0,v0,-1 -80038378: 8fc30018 lw v1,24(s8) -8003837c: 00000000 nop -80038380: 00621021 addu v0,v1,v0 -80038384: a0400000 sb zero,0(v0) - - return size-dstl; -80038388: 8fc20014 lw v0,20(s8) -8003838c: 8fc30030 lw v1,48(s8) -80038390: 00000000 nop -80038394: 00621023 subu v0,v1,v0 -} -80038398: 03c0e821 move sp,s8 -8003839c: 8fbf0024 lw ra,36(sp) -800383a0: 8fbe0020 lw s8,32(sp) -800383a4: 27bd0028 addiu sp,sp,40 -800383a8: 03e00008 jr ra -800383ac: 00000000 nop - -800383b0 : - -void *memmem(const void *big, size_t big_len, const void *little, - size_t little_len) -{ -800383b0: 27bdffe0 addiu sp,sp,-32 -800383b4: afbe001c sw s8,28(sp) -800383b8: 03a0f021 move s8,sp -800383bc: afc40020 sw a0,32(s8) -800383c0: afc50024 sw a1,36(s8) -800383c4: afc60028 sw a2,40(s8) -800383c8: afc7002c sw a3,44(s8) - int i, j, l; - unsigned char *bigp = (unsigned char*)big; -800383cc: 8fc20020 lw v0,32(s8) -800383d0: 00000000 nop -800383d4: afc20008 sw v0,8(s8) - unsigned char *littlep = (unsigned char*)little; -800383d8: 8fc20028 lw v0,40(s8) -800383dc: 00000000 nop -800383e0: afc2000c sw v0,12(s8) - - for(i = 0, l = (int)(big_len - little_len); i <= l; i++, bigp++) -800383e4: afc00000 sw zero,0(s8) -800383e8: 8fc30024 lw v1,36(s8) -800383ec: 8fc2002c lw v0,44(s8) -800383f0: 00000000 nop -800383f4: 00621023 subu v0,v1,v0 -800383f8: afc20010 sw v0,16(s8) -800383fc: 1000002e b 800384b8 -80038400: 00000000 nop - { - for(j = 0; j < little_len; j++) -80038404: afc00004 sw zero,4(s8) -80038408: 10000012 b 80038454 -8003840c: 00000000 nop - { - if(littlep[j] != bigp[j]) -80038410: 8fc20004 lw v0,4(s8) -80038414: 8fc3000c lw v1,12(s8) -80038418: 00000000 nop -8003841c: 00621021 addu v0,v1,v0 -80038420: 90430000 lbu v1,0(v0) -80038424: 8fc20004 lw v0,4(s8) -80038428: 8fc40008 lw a0,8(s8) -8003842c: 00000000 nop -80038430: 00821021 addu v0,a0,v0 -80038434: 90420000 lbu v0,0(v0) -80038438: 00000000 nop -8003843c: 1462000d bne v1,v0,80038474 -80038440: 00000000 nop - unsigned char *bigp = (unsigned char*)big; - unsigned char *littlep = (unsigned char*)little; - - for(i = 0, l = (int)(big_len - little_len); i <= l; i++, bigp++) - { - for(j = 0; j < little_len; j++) -80038444: 8fc20004 lw v0,4(s8) -80038448: 00000000 nop -8003844c: 24420001 addiu v0,v0,1 -80038450: afc20004 sw v0,4(s8) -80038454: 8fc30004 lw v1,4(s8) -80038458: 8fc2002c lw v0,44(s8) -8003845c: 00000000 nop -80038460: 0062102b sltu v0,v1,v0 -80038464: 1440ffea bnez v0,80038410 -80038468: 00000000 nop -8003846c: 10000002 b 80038478 -80038470: 00000000 nop - { - if(littlep[j] != bigp[j]) - break; -80038474: 00000000 nop - } - - if(j == little_len) -80038478: 8fc30004 lw v1,4(s8) -8003847c: 8fc2002c lw v0,44(s8) -80038480: 00000000 nop -80038484: 14620004 bne v1,v0,80038498 -80038488: 00000000 nop - return bigp; -8003848c: 8fc20008 lw v0,8(s8) -80038490: 10000010 b 800384d4 -80038494: 00000000 nop -{ - int i, j, l; - unsigned char *bigp = (unsigned char*)big; - unsigned char *littlep = (unsigned char*)little; - - for(i = 0, l = (int)(big_len - little_len); i <= l; i++, bigp++) -80038498: 8fc20000 lw v0,0(s8) -8003849c: 00000000 nop -800384a0: 24420001 addiu v0,v0,1 -800384a4: afc20000 sw v0,0(s8) -800384a8: 8fc20008 lw v0,8(s8) -800384ac: 00000000 nop -800384b0: 24420001 addiu v0,v0,1 -800384b4: afc20008 sw v0,8(s8) -800384b8: 8fc30000 lw v1,0(s8) -800384bc: 8fc20010 lw v0,16(s8) -800384c0: 00000000 nop -800384c4: 0043102a slt v0,v0,v1 -800384c8: 1040ffce beqz v0,80038404 -800384cc: 00000000 nop - - if(j == little_len) - return bigp; - } - - return NULL; -800384d0: 00001021 move v0,zero -} -800384d4: 03c0e821 move sp,s8 -800384d8: 8fbe001c lw s8,28(sp) -800384dc: 27bd0020 addiu sp,sp,32 -800384e0: 03e00008 jr ra -800384e4: 00000000 nop - -800384e8 : - SPRINTF_SIZE_LONG, - SPRINTF_SIZE_LONG_LONG, -}; - -static unsigned int get_arg_in_size(int size, unsigned long long *arg, unsigned int check_sign) -{ -800384e8: 27bdffd8 addiu sp,sp,-40 -800384ec: afbe0024 sw s8,36(sp) -800384f0: afb50020 sw s5,32(sp) -800384f4: afb4001c sw s4,28(sp) -800384f8: afb30018 sw s3,24(sp) -800384fc: afb20014 sw s2,20(sp) -80038500: afb10010 sw s1,16(sp) -80038504: afb0000c sw s0,12(sp) -80038508: 03a0f021 move s8,sp -8003850c: afc40028 sw a0,40(s8) -80038510: afc5002c sw a1,44(s8) -80038514: afc60030 sw a2,48(s8) - int s = 0; -80038518: afc00000 sw zero,0(s8) - - switch(size) -8003851c: 8fc40028 lw a0,40(s8) -80038520: 00000000 nop -80038524: 2c840005 sltiu a0,a0,5 -80038528: 108000dc beqz a0,8003889c -8003852c: 00000000 nop -80038530: 8fc40028 lw a0,40(s8) -80038534: 00000000 nop -80038538: 00042880 sll a1,a0,0x2 -8003853c: 3c048004 lui a0,0x8004 -80038540: 2484feb4 addiu a0,a0,-332 -80038544: 00a42021 addu a0,a1,a0 -80038548: 8c840000 lw a0,0(a0) -8003854c: 00000000 nop -80038550: 00800008 jr a0 -80038554: 00000000 nop - { - case SPRINTF_SIZE_CHAR: - *arg &= 0xff; -80038558: 8fc2002c lw v0,44(s8) -8003855c: 00000000 nop -80038560: 8c430004 lw v1,4(v0) -80038564: 8c420000 lw v0,0(v0) -80038568: 00000000 nop -8003856c: 305400ff andi s4,v0,0xff -80038570: 30750000 andi s5,v1,0x0 -80038574: 8fc2002c lw v0,44(s8) -80038578: 00000000 nop -8003857c: ac540000 sw s4,0(v0) -80038580: ac550004 sw s5,4(v0) - - if(check_sign) -80038584: 8fc20030 lw v0,48(s8) -80038588: 00000000 nop -8003858c: 104000b9 beqz v0,80038874 -80038590: 00000000 nop - { - if(*arg & (1<<7)) -80038594: 8fc2002c lw v0,44(s8) -80038598: 00000000 nop -8003859c: 8c430004 lw v1,4(v0) -800385a0: 8c420000 lw v0,0(v0) -800385a4: 00000000 nop -800385a8: 304a0080 andi t2,v0,0x80 -800385ac: 306b0000 andi t3,v1,0x0 -800385b0: 01401021 move v0,t2 -800385b4: 004b1025 or v0,v0,t3 -800385b8: 104000ae beqz v0,80038874 -800385bc: 00000000 nop - { - *arg |= 0xffffff00; -800385c0: 8fc2002c lw v0,44(s8) -800385c4: 00000000 nop -800385c8: 8c430004 lw v1,4(v0) -800385cc: 8c420000 lw v0,0(v0) -800385d0: 2404ff00 li a0,-256 -800385d4: 00449025 or s2,v0,a0 -800385d8: 34730000 ori s3,v1,0x0 -800385dc: 8fc2002c lw v0,44(s8) -800385e0: 00000000 nop -800385e4: ac520000 sw s2,0(v0) -800385e8: ac530004 sw s3,4(v0) - *arg = ~(*arg - 1); -800385ec: 8fc2002c lw v0,44(s8) -800385f0: 00000000 nop -800385f4: 8c460000 lw a2,0(v0) -800385f8: 8c470004 lw a3,4(v0) -800385fc: 00002021 move a0,zero -80038600: 00002821 move a1,zero -80038604: 00861023 subu v0,a0,a2 -80038608: 0082402b sltu t0,a0,v0 -8003860c: 00a71823 subu v1,a1,a3 -80038610: 00682023 subu a0,v1,t0 -80038614: 00801821 move v1,a0 -80038618: 8fc4002c lw a0,44(s8) -8003861c: 00000000 nop -80038620: ac820000 sw v0,0(a0) -80038624: ac830004 sw v1,4(a0) - s = 1; -80038628: 24020001 li v0,1 -8003862c: afc20000 sw v0,0(s8) - } - } - break; -80038630: 10000090 b 80038874 -80038634: 00000000 nop - case SPRINTF_SIZE_SHORT: - *arg &= 0xffff; -80038638: 8fc2002c lw v0,44(s8) -8003863c: 00000000 nop -80038640: 8c430004 lw v1,4(v0) -80038644: 8c420000 lw v0,0(v0) -80038648: 00000000 nop -8003864c: 3050ffff andi s0,v0,0xffff -80038650: 30710000 andi s1,v1,0x0 -80038654: 8fc2002c lw v0,44(s8) -80038658: 00000000 nop -8003865c: ac500000 sw s0,0(v0) -80038660: ac510004 sw s1,4(v0) - - if(check_sign) -80038664: 8fc20030 lw v0,48(s8) -80038668: 00000000 nop -8003866c: 10400084 beqz v0,80038880 -80038670: 00000000 nop - { - if(*arg & (1<<15)) -80038674: 8fc2002c lw v0,44(s8) -80038678: 00000000 nop -8003867c: 8c430004 lw v1,4(v0) -80038680: 8c420000 lw v0,0(v0) -80038684: 00000000 nop -80038688: 30488000 andi t0,v0,0x8000 -8003868c: 30690000 andi t1,v1,0x0 -80038690: 01001021 move v0,t0 -80038694: 00491025 or v0,v0,t1 -80038698: 10400079 beqz v0,80038880 -8003869c: 00000000 nop - { - *arg |= 0xffff0000; -800386a0: 8fc2002c lw v0,44(s8) -800386a4: 00000000 nop -800386a8: 8c430004 lw v1,4(v0) -800386ac: 8c420000 lw v0,0(v0) -800386b0: 3c04ffff lui a0,0xffff -800386b4: 0044c025 or t8,v0,a0 -800386b8: 34790000 ori t9,v1,0x0 -800386bc: 8fc2002c lw v0,44(s8) -800386c0: 00000000 nop -800386c4: ac580000 sw t8,0(v0) -800386c8: ac590004 sw t9,4(v0) - *arg = ~(*arg - 1); -800386cc: 8fc2002c lw v0,44(s8) -800386d0: 00000000 nop -800386d4: 8c460000 lw a2,0(v0) -800386d8: 8c470004 lw a3,4(v0) -800386dc: 00002021 move a0,zero -800386e0: 00002821 move a1,zero -800386e4: 00861023 subu v0,a0,a2 -800386e8: 0082402b sltu t0,a0,v0 -800386ec: 00a71823 subu v1,a1,a3 -800386f0: 00682023 subu a0,v1,t0 -800386f4: 00801821 move v1,a0 -800386f8: 8fc4002c lw a0,44(s8) -800386fc: 00000000 nop -80038700: ac820000 sw v0,0(a0) -80038704: ac830004 sw v1,4(a0) - s = 1; -80038708: 24020001 li v0,1 -8003870c: afc20000 sw v0,0(s8) - } - } - break; -80038710: 1000005b b 80038880 -80038714: 00000000 nop - -// sizeof(long) == sizeof(int) on 32bit, so this will suffice for the psx - - case SPRINTF_SIZE_INT: - case SPRINTF_SIZE_LONG: - *arg &= 0xffffffff; -80038718: 8fc4002c lw a0,44(s8) -8003871c: 00000000 nop -80038720: 8c850004 lw a1,4(a0) -80038724: 8c840000 lw a0,0(a0) -80038728: 2406ffff li a2,-1 -8003872c: 00867024 and t6,a0,a2 -80038730: 30af0000 andi t7,a1,0x0 -80038734: 8fc4002c lw a0,44(s8) -80038738: 00000000 nop -8003873c: ac8e0000 sw t6,0(a0) -80038740: ac8f0004 sw t7,4(a0) - - if(check_sign) -80038744: 8fc40030 lw a0,48(s8) -80038748: 00000000 nop -8003874c: 1080004f beqz a0,8003888c -80038750: 00000000 nop - { - if(*arg & (1<<31)) -80038754: 8fc4002c lw a0,44(s8) -80038758: 00000000 nop -8003875c: 8c850004 lw a1,4(a0) -80038760: 8c840000 lw a0,0(a0) -80038764: 3c068000 lui a2,0x8000 -80038768: 00861024 and v0,a0,a2 -8003876c: 2406ffff li a2,-1 -80038770: 00a61824 and v1,a1,a2 -80038774: 00402021 move a0,v0 -80038778: 00832025 or a0,a0,v1 -8003877c: 10800043 beqz a0,8003888c -80038780: 00000000 nop - { - *arg |= (long long)0xffffffff00000000; -80038784: 8fc2002c lw v0,44(s8) -80038788: 00000000 nop -8003878c: 8c430004 lw v1,4(v0) -80038790: 8c420000 lw v0,0(v0) -80038794: 00000000 nop -80038798: 344c0000 ori t4,v0,0x0 -8003879c: 2404ffff li a0,-1 -800387a0: 00646825 or t5,v1,a0 -800387a4: 8fc2002c lw v0,44(s8) -800387a8: 00000000 nop -800387ac: ac4c0000 sw t4,0(v0) -800387b0: ac4d0004 sw t5,4(v0) - *arg = ~(*arg - 1); -800387b4: 8fc2002c lw v0,44(s8) -800387b8: 00000000 nop -800387bc: 8c460000 lw a2,0(v0) -800387c0: 8c470004 lw a3,4(v0) -800387c4: 00002021 move a0,zero -800387c8: 00002821 move a1,zero -800387cc: 00861023 subu v0,a0,a2 -800387d0: 0082402b sltu t0,a0,v0 -800387d4: 00a71823 subu v1,a1,a3 -800387d8: 00682023 subu a0,v1,t0 -800387dc: 00801821 move v1,a0 -800387e0: 8fc4002c lw a0,44(s8) -800387e4: 00000000 nop -800387e8: ac820000 sw v0,0(a0) -800387ec: ac830004 sw v1,4(a0) - s = 1; -800387f0: 24020001 li v0,1 -800387f4: afc20000 sw v0,0(s8) - } - } - break; -800387f8: 10000024 b 8003888c -800387fc: 00000000 nop - - case SPRINTF_SIZE_LONG_LONG: - if(check_sign) -80038800: 8fc20030 lw v0,48(s8) -80038804: 00000000 nop -80038808: 10400023 beqz v0,80038898 -8003880c: 00000000 nop - { - if(*arg & ((long long)1<<63)) -80038810: 8fc2002c lw v0,44(s8) -80038814: 00000000 nop -80038818: 8c430004 lw v1,4(v0) -8003881c: 8c420000 lw v0,0(v0) -80038820: 0461001d bgez v1,80038898 -80038824: 00000000 nop - { - *arg = ~(*arg - 1); -80038828: 8fc2002c lw v0,44(s8) -8003882c: 00000000 nop -80038830: 8c460000 lw a2,0(v0) -80038834: 8c470004 lw a3,4(v0) -80038838: 00002021 move a0,zero -8003883c: 00002821 move a1,zero -80038840: 00861023 subu v0,a0,a2 -80038844: 0082402b sltu t0,a0,v0 -80038848: 00a71823 subu v1,a1,a3 -8003884c: 00682023 subu a0,v1,t0 -80038850: 00801821 move v1,a0 -80038854: 8fc4002c lw a0,44(s8) -80038858: 00000000 nop -8003885c: ac820000 sw v0,0(a0) -80038860: ac830004 sw v1,4(a0) - s = 1; -80038864: 24020001 li v0,1 -80038868: afc20000 sw v0,0(s8) - } - } - break; -8003886c: 1000000a b 80038898 -80038870: 00000000 nop - *arg |= 0xffffff00; - *arg = ~(*arg - 1); - s = 1; - } - } - break; -80038874: 00000000 nop -80038878: 10000008 b 8003889c -8003887c: 00000000 nop - *arg |= 0xffff0000; - *arg = ~(*arg - 1); - s = 1; - } - } - break; -80038880: 00000000 nop -80038884: 10000005 b 8003889c -80038888: 00000000 nop - *arg |= (long long)0xffffffff00000000; - *arg = ~(*arg - 1); - s = 1; - } - } - break; -8003888c: 00000000 nop -80038890: 10000002 b 8003889c -80038894: 00000000 nop - { - *arg = ~(*arg - 1); - s = 1; - } - } - break; -80038898: 00000000 nop - } - - return s; -8003889c: 8fc20000 lw v0,0(s8) -} -800388a0: 03c0e821 move sp,s8 -800388a4: 8fbe0024 lw s8,36(sp) -800388a8: 8fb50020 lw s5,32(sp) -800388ac: 8fb4001c lw s4,28(sp) -800388b0: 8fb30018 lw s3,24(sp) -800388b4: 8fb20014 lw s2,20(sp) -800388b8: 8fb10010 lw s1,16(sp) -800388bc: 8fb0000c lw s0,12(sp) -800388c0: 27bd0028 addiu sp,sp,40 -800388c4: 03e00008 jr ra -800388c8: 00000000 nop - -800388cc : - -static int libc_ulltoa(unsigned long long i, char *dst, int n, int nopad) -{ -800388cc: 27bdffb0 addiu sp,sp,-80 -800388d0: afbf004c sw ra,76(sp) -800388d4: afbe0048 sw s8,72(sp) -800388d8: afb30044 sw s3,68(sp) -800388dc: afb20040 sw s2,64(sp) -800388e0: afb1003c sw s1,60(sp) -800388e4: afb00038 sw s0,56(sp) -800388e8: 03a0f021 move s8,sp -800388ec: afc40050 sw a0,80(s8) -800388f0: afc50054 sw a1,84(s8) -800388f4: afc60058 sw a2,88(s8) -800388f8: afc7005c sw a3,92(s8) - int x, y; - unsigned long long a, b; - int empty_digit = 1; -800388fc: 24020001 li v0,1 -80038900: afc20020 sw v0,32(s8) - int sp=0; -80038904: afc00024 sw zero,36(s8) - int n2=0; -80038908: afc00028 sw zero,40(s8) - - if(n<=0) -8003890c: 8fc2005c lw v0,92(s8) -80038910: 00000000 nop -80038914: 1c400004 bgtz v0,80038928 -80038918: 00000000 nop - return 0; -8003891c: 00001021 move v0,zero -80038920: 10000088 b 80038b44 -80038924: 00000000 nop - - for(x=18;x>=0;x--) -80038928: 24020012 li v0,18 -8003892c: afc20010 sw v0,16(s8) -80038930: 1000007a b 80038b1c -80038934: 00000000 nop - { - a = 1; -80038938: 24020001 li v0,1 -8003893c: 00001821 move v1,zero -80038940: afc20018 sw v0,24(s8) -80038944: afc3001c sw v1,28(s8) - for(y = 0; y -80038950: 00000000 nop - a *= 10; -80038954: 8fc20018 lw v0,24(s8) -80038958: 8fc3001c lw v1,28(s8) -8003895c: 000227c2 srl a0,v0,0x1f -80038960: 00039840 sll s3,v1,0x1 -80038964: 00939825 or s3,a0,s3 -80038968: 00029040 sll s2,v0,0x1 -8003896c: 02401021 move v0,s2 -80038970: 02601821 move v1,s3 -80038974: 00022782 srl a0,v0,0x1e -80038978: 00038880 sll s1,v1,0x2 -8003897c: 00918825 or s1,a0,s1 -80038980: 00028080 sll s0,v0,0x2 -80038984: 00502021 addu a0,v0,s0 -80038988: 0082302b sltu a2,a0,v0 -8003898c: 00712821 addu a1,v1,s1 -80038990: 00c51021 addu v0,a2,a1 -80038994: 00402821 move a1,v0 -80038998: afc40018 sw a0,24(s8) -8003899c: afc5001c sw a1,28(s8) - return 0; - - for(x=18;x>=0;x--) - { - a = 1; - for(y = 0; y -800389c4: 00000000 nop - a *= 10; - - b = (i/a); -800389c8: 8fc60018 lw a2,24(s8) -800389cc: 8fc7001c lw a3,28(s8) -800389d0: 8fc40050 lw a0,80(s8) -800389d4: 8fc50054 lw a1,84(s8) -800389d8: 0c00f0ae jal 8003c2b8 <__udivdi3> -800389dc: 00000000 nop -800389e0: afc20030 sw v0,48(s8) -800389e4: afc30034 sw v1,52(s8) - - if(b>=1) -800389e8: 8fc20030 lw v0,48(s8) -800389ec: 8fc30034 lw v1,52(s8) -800389f0: 00000000 nop -800389f4: 00431025 or v0,v0,v1 -800389f8: 10400002 beqz v0,80038a04 -800389fc: 00000000 nop - empty_digit = 0; -80038a00: afc00020 sw zero,32(s8) - - if(empty_digit == 0 || x == 0 || nopad == 1) -80038a04: 8fc20020 lw v0,32(s8) -80038a08: 00000000 nop -80038a0c: 10400009 beqz v0,80038a34 -80038a10: 00000000 nop -80038a14: 8fc20010 lw v0,16(s8) -80038a18: 00000000 nop -80038a1c: 10400005 beqz v0,80038a34 -80038a20: 00000000 nop -80038a24: 8fc30060 lw v1,96(s8) -80038a28: 24020001 li v0,1 -80038a2c: 14620037 bne v1,v0,80038b0c -80038a30: 00000000 nop - { - i -= b*a; -80038a34: 8fc30034 lw v1,52(s8) -80038a38: 8fc20018 lw v0,24(s8) -80038a3c: 00000000 nop -80038a40: 00620018 mult v1,v0 -80038a44: 00001012 mflo v0 -80038a48: 8fc4001c lw a0,28(s8) -80038a4c: 8fc30030 lw v1,48(s8) -80038a50: 00000000 nop -80038a54: 00830018 mult a0,v1 -80038a58: 00001812 mflo v1 -80038a5c: 00431021 addu v0,v0,v1 -80038a60: 8fc40030 lw a0,48(s8) -80038a64: 8fc30018 lw v1,24(s8) -80038a68: 00000000 nop -80038a6c: 00830019 multu a0,v1 -80038a70: 00002012 mflo a0 -80038a74: 00002810 mfhi a1 -80038a78: 00451021 addu v0,v0,a1 -80038a7c: 00402821 move a1,v0 -80038a80: 8fc60050 lw a2,80(s8) -80038a84: 8fc70054 lw a3,84(s8) -80038a88: 00c41023 subu v0,a2,a0 -80038a8c: 00c2402b sltu t0,a2,v0 -80038a90: 00e51823 subu v1,a3,a1 -80038a94: 00682023 subu a0,v1,t0 -80038a98: 00801821 move v1,a0 -80038a9c: afc20050 sw v0,80(s8) -80038aa0: afc30054 sw v1,84(s8) - - //put_in_string(string, ssz, b + '0', string_pos++); - if(n2!=(n-1)) -80038aa4: 8fc2005c lw v0,92(s8) -80038aa8: 00000000 nop -80038aac: 2443ffff addiu v1,v0,-1 -80038ab0: 8fc20028 lw v0,40(s8) -80038ab4: 00000000 nop -80038ab8: 10620014 beq v1,v0,80038b0c -80038abc: 00000000 nop - { - //printf("n2=%d\n",n2); - dst[sp++] = b + '0'; -80038ac0: 8fc20024 lw v0,36(s8) -80038ac4: 00000000 nop -80038ac8: 24430001 addiu v1,v0,1 -80038acc: afc30024 sw v1,36(s8) -80038ad0: 00401821 move v1,v0 -80038ad4: 8fc20058 lw v0,88(s8) -80038ad8: 00000000 nop -80038adc: 00431021 addu v0,v0,v1 -80038ae0: 93c30030 lbu v1,48(s8) -80038ae4: 00000000 nop -80038ae8: 24630030 addiu v1,v1,48 -80038aec: 306300ff andi v1,v1,0xff -80038af0: 00031e00 sll v1,v1,0x18 -80038af4: 00031e03 sra v1,v1,0x18 -80038af8: a0430000 sb v1,0(v0) - n2++; -80038afc: 8fc20028 lw v0,40(s8) -80038b00: 00000000 nop -80038b04: 24420001 addiu v0,v0,1 -80038b08: afc20028 sw v0,40(s8) - int n2=0; - - if(n<=0) - return 0; - - for(x=18;x>=0;x--) -80038b0c: 8fc20010 lw v0,16(s8) -80038b10: 00000000 nop -80038b14: 2442ffff addiu v0,v0,-1 -80038b18: afc20010 sw v0,16(s8) -80038b1c: 8fc20010 lw v0,16(s8) -80038b20: 00000000 nop -80038b24: 0441ff84 bgez v0,80038938 -80038b28: 00000000 nop - n2++; - } - } - } - - dst[sp] = 0; -80038b2c: 8fc20024 lw v0,36(s8) -80038b30: 8fc30058 lw v1,88(s8) -80038b34: 00000000 nop -80038b38: 00621021 addu v0,v1,v0 -80038b3c: a0400000 sb zero,0(v0) - - return n2; -80038b40: 8fc20028 lw v0,40(s8) -} -80038b44: 03c0e821 move sp,s8 -80038b48: 8fbf004c lw ra,76(sp) -80038b4c: 8fbe0048 lw s8,72(sp) -80038b50: 8fb30044 lw s3,68(sp) -80038b54: 8fb20040 lw s2,64(sp) -80038b58: 8fb1003c lw s1,60(sp) -80038b5c: 8fb00038 lw s0,56(sp) -80038b60: 27bd0050 addiu sp,sp,80 -80038b64: 03e00008 jr ra -80038b68: 00000000 nop - -80038b6c : - } - } -}*/ - -static void libc_double_to_string(double fl, char *dst, int n, int prec) -{ -80038b6c: 27bdff80 addiu sp,sp,-128 -80038b70: afbf007c sw ra,124(sp) -80038b74: afbe0078 sw s8,120(sp) -80038b78: afb70074 sw s7,116(sp) -80038b7c: afb60070 sw s6,112(sp) -80038b80: afb5006c sw s5,108(sp) -80038b84: afb40068 sw s4,104(sp) -80038b88: afb30064 sw s3,100(sp) -80038b8c: afb20060 sw s2,96(sp) -80038b90: afb1005c sw s1,92(sp) -80038b94: afb00058 sw s0,88(sp) -80038b98: 03a0f021 move s8,sp -80038b9c: afc40080 sw a0,128(s8) -80038ba0: afc50084 sw a1,132(s8) -80038ba4: afc60088 sw a2,136(s8) -80038ba8: afc7008c sw a3,140(s8) - unsigned long long *p = (unsigned long long *)&fl; -80038bac: 27c20080 addiu v0,s8,128 -80038bb0: afc20034 sw v0,52(s8) - unsigned long long i = 0; -80038bb4: 00001021 move v0,zero -80038bb8: 00001821 move v1,zero -80038bbc: afc20018 sw v0,24(s8) -80038bc0: afc3001c sw v1,28(s8) - unsigned long long f = 0; -80038bc4: 00001021 move v0,zero -80038bc8: 00001821 move v1,zero -80038bcc: afc20020 sw v0,32(s8) -80038bd0: afc30024 sw v1,36(s8) - unsigned long long m, s; - long long e; - int x; - unsigned long long z; - - s = *p >> 63; -80038bd4: 8fc20034 lw v0,52(s8) -80038bd8: 00000000 nop -80038bdc: 8c430004 lw v1,4(v0) -80038be0: 8c420000 lw v0,0(v0) -80038be4: 000317c2 srl v0,v1,0x1f -80038be8: afc20038 sw v0,56(s8) -80038bec: afc0003c sw zero,60(s8) - - e = (*p >> 52) & 0x7ff; -80038bf0: 8fc20034 lw v0,52(s8) -80038bf4: 00000000 nop -80038bf8: 8c430004 lw v1,4(v0) -80038bfc: 8c420000 lw v0,0(v0) -80038c00: 00034502 srl t0,v1,0x14 -80038c04: 00004821 move t1,zero -80038c08: 01001021 move v0,t0 -80038c0c: 01201821 move v1,t1 -80038c10: 304407ff andi a0,v0,0x7ff -80038c14: afc40028 sw a0,40(s8) -80038c18: 30620000 andi v0,v1,0x0 -80038c1c: afc2002c sw v0,44(s8) - //printf("%d\n", e); - - m = *p & 0xfffffffffffff; -80038c20: 8fc20034 lw v0,52(s8) -80038c24: 00000000 nop -80038c28: 8c430004 lw v1,4(v0) -80038c2c: 8c420000 lw v0,0(v0) -80038c30: 2404ffff li a0,-1 -80038c34: 00442024 and a0,v0,a0 -80038c38: afc40040 sw a0,64(s8) -80038c3c: 3c04000f lui a0,0xf -80038c40: 3484ffff ori a0,a0,0xffff -80038c44: 00641024 and v0,v1,a0 -80038c48: afc20044 sw v0,68(s8) - - for(x=0;x<52;x++) -80038c4c: afc00030 sw zero,48(s8) -80038c50: 10000032 b 80038d1c -80038c54: 00000000 nop - if(m&((unsigned long long)1<<(52-x))) putchar('1'); else putchar('0'); -80038c58: 24030034 li v1,52 -80038c5c: 8fc20030 lw v0,48(s8) -80038c60: 00000000 nop -80038c64: 00621023 subu v0,v1,v0 -80038c68: 30430020 andi v1,v0,0x20 -80038c6c: 10600007 beqz v1,80038c8c -80038c70: 00000000 nop -80038c74: 8fc30044 lw v1,68(s8) -80038c78: 00000000 nop -80038c7c: 00439006 srlv s2,v1,v0 -80038c80: 00009821 move s3,zero -80038c84: 1000000e b 80038cc0 -80038c88: 00000000 nop -80038c8c: 8fc30044 lw v1,68(s8) -80038c90: 00000000 nop -80038c94: 00032040 sll a0,v1,0x1 -80038c98: 2403ffff li v1,-1 -80038c9c: 00431826 xor v1,v0,v1 -80038ca0: 00641804 sllv v1,a0,v1 -80038ca4: 8fc40040 lw a0,64(s8) -80038ca8: 00000000 nop -80038cac: 00449006 srlv s2,a0,v0 -80038cb0: 00729025 or s2,v1,s2 -80038cb4: 8fc30044 lw v1,68(s8) -80038cb8: 00000000 nop -80038cbc: 00439806 srlv s3,v1,v0 -80038cc0: 32420001 andi v0,s2,0x1 -80038cc4: afc20050 sw v0,80(s8) -80038cc8: 32620000 andi v0,s3,0x0 -80038ccc: afc20054 sw v0,84(s8) -80038cd0: 8fc40050 lw a0,80(s8) -80038cd4: 8fc50054 lw a1,84(s8) -80038cd8: 00801021 move v0,a0 -80038cdc: 00a01821 move v1,a1 -80038ce0: 00431025 or v0,v0,v1 -80038ce4: 10400006 beqz v0,80038d00 -80038ce8: 00000000 nop -80038cec: 24040031 li a0,49 -80038cf0: 0c00aa06 jal 8002a818 -80038cf4: 00000000 nop -80038cf8: 10000004 b 80038d0c -80038cfc: 00000000 nop -80038d00: 24040030 li a0,48 -80038d04: 0c00aa06 jal 8002a818 -80038d08: 00000000 nop - e = (*p >> 52) & 0x7ff; - //printf("%d\n", e); - - m = *p & 0xfffffffffffff; - - for(x=0;x<52;x++) -80038d0c: 8fc20030 lw v0,48(s8) -80038d10: 00000000 nop -80038d14: 24420001 addiu v0,v0,1 -80038d18: afc20030 sw v0,48(s8) -80038d1c: 8fc20030 lw v0,48(s8) -80038d20: 00000000 nop -80038d24: 28420034 slti v0,v0,52 -80038d28: 1440ffcb bnez v0,80038c58 -80038d2c: 00000000 nop - if(m&((unsigned long long)1<<(52-x))) putchar('1'); else putchar('0'); - - if(e == 255 && m == 0) // Infinity -80038d30: 8fc30028 lw v1,40(s8) -80038d34: 240200ff li v0,255 -80038d38: 14620025 bne v1,v0,80038dd0 -80038d3c: 00000000 nop -80038d40: 8fc2002c lw v0,44(s8) -80038d44: 00000000 nop -80038d48: 14400021 bnez v0,80038dd0 -80038d4c: 00000000 nop -80038d50: 8fc20040 lw v0,64(s8) -80038d54: 8fc30044 lw v1,68(s8) -80038d58: 00000000 nop -80038d5c: 00431025 or v0,v0,v1 -80038d60: 1440001b bnez v0,80038dd0 -80038d64: 00000000 nop - { - if(s) strncpy(dst, "-inf", n); -80038d68: 8fc20038 lw v0,56(s8) -80038d6c: 8fc3003c lw v1,60(s8) -80038d70: 00000000 nop -80038d74: 00431025 or v0,v0,v1 -80038d78: 1040000b beqz v0,80038da8 -80038d7c: 00000000 nop -80038d80: 8fc2008c lw v0,140(s8) -80038d84: 00000000 nop -80038d88: 00403021 move a2,v0 -80038d8c: 3c028004 lui v0,0x8004 -80038d90: 2445fec8 addiu a1,v0,-312 -80038d94: 8fc40088 lw a0,136(s8) -80038d98: 0c00d860 jal 80036180 -80038d9c: 00000000 nop -80038da0: 1000010b b 800391d0 -80038da4: 00000000 nop - else strncpy(dst, "inf", n); -80038da8: 8fc2008c lw v0,140(s8) -80038dac: 00000000 nop -80038db0: 00403021 move a2,v0 -80038db4: 3c028004 lui v0,0x8004 -80038db8: 2445fed0 addiu a1,v0,-304 -80038dbc: 8fc40088 lw a0,136(s8) -80038dc0: 0c00d860 jal 80036180 -80038dc4: 00000000 nop - for(x=0;x<52;x++) - if(m&((unsigned long long)1<<(52-x))) putchar('1'); else putchar('0'); - - if(e == 255 && m == 0) // Infinity - { - if(s) strncpy(dst, "-inf", n); -80038dc8: 10000101 b 800391d0 -80038dcc: 00000000 nop - else strncpy(dst, "inf", n); - }else if(e == 255 && m != 0) // NaN -80038dd0: 8fc30028 lw v1,40(s8) -80038dd4: 240200ff li v0,255 -80038dd8: 14620015 bne v1,v0,80038e30 -80038ddc: 00000000 nop -80038de0: 8fc2002c lw v0,44(s8) -80038de4: 00000000 nop -80038de8: 14400011 bnez v0,80038e30 -80038dec: 00000000 nop -80038df0: 8fc20040 lw v0,64(s8) -80038df4: 8fc30044 lw v1,68(s8) -80038df8: 00000000 nop -80038dfc: 00431025 or v0,v0,v1 -80038e00: 1040000b beqz v0,80038e30 -80038e04: 00000000 nop - { - strncpy(dst, "nan", n); -80038e08: 8fc2008c lw v0,140(s8) -80038e0c: 00000000 nop -80038e10: 00403021 move a2,v0 -80038e14: 3c028004 lui v0,0x8004 -80038e18: 2445fed4 addiu a1,v0,-300 -80038e1c: 8fc40088 lw a0,136(s8) -80038e20: 0c00d860 jal 80036180 -80038e24: 00000000 nop -80038e28: 100000e9 b 800391d0 -80038e2c: 00000000 nop - } - else - { - e -= 1023; -80038e30: 8fc40028 lw a0,40(s8) -80038e34: 8fc5002c lw a1,44(s8) -80038e38: 2406fc01 li a2,-1023 -80038e3c: 2407ffff li a3,-1 -80038e40: 00861021 addu v0,a0,a2 -80038e44: 0044402b sltu t0,v0,a0 -80038e48: 00a71821 addu v1,a1,a3 -80038e4c: 01032021 addu a0,t0,v1 -80038e50: 00801821 move v1,a0 -80038e54: afc20028 sw v0,40(s8) -80038e58: afc3002c sw v1,44(s8) - m |= (unsigned long long)1<<52; -80038e5c: 8fc20040 lw v0,64(s8) -80038e60: 00000000 nop -80038e64: 34420000 ori v0,v0,0x0 -80038e68: afc20040 sw v0,64(s8) -80038e6c: 8fc30044 lw v1,68(s8) -80038e70: 3c020010 lui v0,0x10 -80038e74: 00621025 or v0,v1,v0 -80038e78: afc20044 sw v0,68(s8) - - for(x = 52; x >= 0; x--) -80038e7c: 24020034 li v0,52 -80038e80: afc20030 sw v0,48(s8) -80038e84: 10000085 b 8003909c -80038e88: 00000000 nop - { - if(m & ((unsigned long long)1< -80038e9c: 00000000 nop -80038ea0: 8fc30044 lw v1,68(s8) -80038ea4: 8fc20030 lw v0,48(s8) -80038ea8: 00000000 nop -80038eac: 00438006 srlv s0,v1,v0 -80038eb0: 00008821 move s1,zero -80038eb4: 10000011 b 80038efc -80038eb8: 00000000 nop -80038ebc: 8fc20044 lw v0,68(s8) -80038ec0: 00000000 nop -80038ec4: 00021840 sll v1,v0,0x1 -80038ec8: 8fc40030 lw a0,48(s8) -80038ecc: 2402ffff li v0,-1 -80038ed0: 00821026 xor v0,a0,v0 -80038ed4: 00431004 sllv v0,v1,v0 -80038ed8: 8fc40040 lw a0,64(s8) -80038edc: 8fc30030 lw v1,48(s8) -80038ee0: 00000000 nop -80038ee4: 00648006 srlv s0,a0,v1 -80038ee8: 00508025 or s0,v0,s0 -80038eec: 8fc30044 lw v1,68(s8) -80038ef0: 8fc20030 lw v0,48(s8) -80038ef4: 00000000 nop -80038ef8: 00438806 srlv s1,v1,v0 -80038efc: 32160001 andi s6,s0,0x1 -80038f00: 32370000 andi s7,s1,0x0 -80038f04: 02c01021 move v0,s6 -80038f08: 00571025 or v0,v0,s7 -80038f0c: 10400054 beqz v0,80039060 -80038f10: 00000000 nop - { - if(e >= 0) -80038f14: 8fc2002c lw v0,44(s8) -80038f18: 00000000 nop -80038f1c: 04400024 bltz v0,80038fb0 -80038f20: 00000000 nop - { - z = (long long)1< -80038f34: 00000000 nop -80038f38: 24030001 li v1,1 -80038f3c: 0043a804 sllv s5,v1,v0 -80038f40: 0000a021 move s4,zero -80038f44: 1000000b b 80038f74 -80038f48: 00000000 nop -80038f4c: 24030001 li v1,1 -80038f50: 00032042 srl a0,v1,0x1 -80038f54: 2403ffff li v1,-1 -80038f58: 00431826 xor v1,v0,v1 -80038f5c: 00641806 srlv v1,a0,v1 -80038f60: 00002021 move a0,zero -80038f64: 0044a804 sllv s5,a0,v0 -80038f68: 0075a825 or s5,v1,s5 -80038f6c: 24030001 li v1,1 -80038f70: 0043a004 sllv s4,v1,v0 -80038f74: afd40048 sw s4,72(s8) -80038f78: afd5004c sw s5,76(s8) - - i+=z; -80038f7c: 8fc40018 lw a0,24(s8) -80038f80: 8fc5001c lw a1,28(s8) -80038f84: 8fc60048 lw a2,72(s8) -80038f88: 8fc7004c lw a3,76(s8) -80038f8c: 00861021 addu v0,a0,a2 -80038f90: 0044402b sltu t0,v0,a0 -80038f94: 00a71821 addu v1,a1,a3 -80038f98: 01032021 addu a0,t0,v1 -80038f9c: 00801821 move v1,a0 -80038fa0: afc20018 sw v0,24(s8) -80038fa4: afc3001c sw v1,28(s8) -80038fa8: 1000002d b 80039060 -80038fac: 00000000 nop - } - else - { - z = 5000000000000000000; -80038fb0: 3c0244f4 lui v0,0x44f4 -80038fb4: 3c034563 lui v1,0x4563 -80038fb8: 34639182 ori v1,v1,0x9182 -80038fbc: afc20048 sw v0,72(s8) -80038fc0: afc3004c sw v1,76(s8) - z >>= -(e + 1); -80038fc4: 8fc20028 lw v0,40(s8) -80038fc8: 00000000 nop -80038fcc: 00021027 nor v0,zero,v0 -80038fd0: 30430020 andi v1,v0,0x20 -80038fd4: 10600008 beqz v1,80038ff8 -80038fd8: 00000000 nop -80038fdc: 8fc3004c lw v1,76(s8) -80038fe0: 00000000 nop -80038fe4: 00431006 srlv v0,v1,v0 -80038fe8: afc20048 sw v0,72(s8) -80038fec: afc0004c sw zero,76(s8) -80038ff0: 10000010 b 80039034 -80038ff4: 00000000 nop -80038ff8: 8fc3004c lw v1,76(s8) -80038ffc: 00000000 nop -80039000: 00032040 sll a0,v1,0x1 -80039004: 2403ffff li v1,-1 -80039008: 00431826 xor v1,v0,v1 -8003900c: 00641804 sllv v1,a0,v1 -80039010: 8fc40048 lw a0,72(s8) -80039014: 00000000 nop -80039018: 00442006 srlv a0,a0,v0 -8003901c: 00831825 or v1,a0,v1 -80039020: afc30048 sw v1,72(s8) -80039024: 8fc3004c lw v1,76(s8) -80039028: 00000000 nop -8003902c: 00431006 srlv v0,v1,v0 -80039030: afc2004c sw v0,76(s8) - - f+=z; -80039034: 8fc40020 lw a0,32(s8) -80039038: 8fc50024 lw a1,36(s8) -8003903c: 8fc60048 lw a2,72(s8) -80039040: 8fc7004c lw a3,76(s8) -80039044: 00861021 addu v0,a0,a2 -80039048: 0044402b sltu t0,v0,a0 -8003904c: 00a71821 addu v1,a1,a3 -80039050: 01032021 addu a0,t0,v1 -80039054: 00801821 move v1,a0 -80039058: afc20020 sw v0,32(s8) -8003905c: afc30024 sw v1,36(s8) - } - } - e--; -80039060: 8fc40028 lw a0,40(s8) -80039064: 8fc5002c lw a1,44(s8) -80039068: 2406ffff li a2,-1 -8003906c: 2407ffff li a3,-1 -80039070: 00861021 addu v0,a0,a2 -80039074: 0044402b sltu t0,v0,a0 -80039078: 00a71821 addu v1,a1,a3 -8003907c: 01032021 addu a0,t0,v1 -80039080: 00801821 move v1,a0 -80039084: afc20028 sw v0,40(s8) -80039088: afc3002c sw v1,44(s8) - else - { - e -= 1023; - m |= (unsigned long long)1<<52; - - for(x = 52; x >= 0; x--) -8003908c: 8fc20030 lw v0,48(s8) -80039090: 00000000 nop -80039094: 2442ffff addiu v0,v0,-1 -80039098: afc20030 sw v0,48(s8) -8003909c: 8fc20030 lw v0,48(s8) -800390a0: 00000000 nop -800390a4: 0441ff79 bgez v0,80038e8c -800390a8: 00000000 nop - } - } - e--; - } - - if(s && (n>0)) -800390ac: 8fc20038 lw v0,56(s8) -800390b0: 8fc3003c lw v1,60(s8) -800390b4: 00000000 nop -800390b8: 00431025 or v0,v0,v1 -800390bc: 1040000f beqz v0,800390fc -800390c0: 00000000 nop -800390c4: 8fc2008c lw v0,140(s8) -800390c8: 00000000 nop -800390cc: 1840000b blez v0,800390fc -800390d0: 00000000 nop - { - *(dst++) = '-'; -800390d4: 8fc20088 lw v0,136(s8) -800390d8: 00000000 nop -800390dc: 24430001 addiu v1,v0,1 -800390e0: afc30088 sw v1,136(s8) -800390e4: 2403002d li v1,45 -800390e8: a0430000 sb v1,0(v0) - n--; -800390ec: 8fc2008c lw v0,140(s8) -800390f0: 00000000 nop -800390f4: 2442ffff addiu v0,v0,-1 -800390f8: afc2008c sw v0,140(s8) - } - - x = libc_ulltoa(i, dst, n, 0); -800390fc: afa00010 sw zero,16(sp) -80039100: 8fc7008c lw a3,140(s8) -80039104: 8fc60088 lw a2,136(s8) -80039108: 8fc40018 lw a0,24(s8) -8003910c: 8fc5001c lw a1,28(s8) -80039110: 0c00e233 jal 800388cc -80039114: 00000000 nop -80039118: afc20030 sw v0,48(s8) - n-=x+1; -8003911c: 8fc20030 lw v0,48(s8) -80039120: 00000000 nop -80039124: 00021027 nor v0,zero,v0 -80039128: 8fc3008c lw v1,140(s8) -8003912c: 00000000 nop -80039130: 00621021 addu v0,v1,v0 -80039134: afc2008c sw v0,140(s8) - dst+=x; -80039138: 8fc20030 lw v0,48(s8) -8003913c: 8fc30088 lw v1,136(s8) -80039140: 00000000 nop -80039144: 00621021 addu v0,v1,v0 -80039148: afc20088 sw v0,136(s8) - - dprintf("N = %d\n", n); - - if(n>0) -8003914c: 8fc2008c lw v0,140(s8) -80039150: 00000000 nop -80039154: 1840001e blez v0,800391d0 -80039158: 00000000 nop - { - *(dst++) = '.'; -8003915c: 8fc20088 lw v0,136(s8) -80039160: 00000000 nop -80039164: 24430001 addiu v1,v0,1 -80039168: afc30088 sw v1,136(s8) -8003916c: 2403002e li v1,46 -80039170: a0430000 sb v1,0(v0) - - if(n>0) -80039174: 8fc2008c lw v0,140(s8) -80039178: 00000000 nop -8003917c: 18400014 blez v0,800391d0 -80039180: 00000000 nop - libc_ulltoa(f, dst, (n<(prec+1))?n:(prec+1), 1); -80039184: 8fc20090 lw v0,144(s8) -80039188: 00000000 nop -8003918c: 24420001 addiu v0,v0,1 -80039190: 8fc3008c lw v1,140(s8) -80039194: 00000000 nop -80039198: 0062202a slt a0,v1,v0 -8003919c: 10800002 beqz a0,800391a8 -800391a0: 00000000 nop -800391a4: 00601021 move v0,v1 -800391a8: 24030001 li v1,1 -800391ac: afa30010 sw v1,16(sp) -800391b0: 00403821 move a3,v0 -800391b4: 8fc60088 lw a2,136(s8) -800391b8: 8fc40020 lw a0,32(s8) -800391bc: 8fc50024 lw a1,36(s8) -800391c0: 0c00e233 jal 800388cc -800391c4: 00000000 nop - } - } -} -800391c8: 10000001 b 800391d0 -800391cc: 00000000 nop -800391d0: 00000000 nop -800391d4: 03c0e821 move sp,s8 -800391d8: 8fbf007c lw ra,124(sp) -800391dc: 8fbe0078 lw s8,120(sp) -800391e0: 8fb70074 lw s7,116(sp) -800391e4: 8fb60070 lw s6,112(sp) -800391e8: 8fb5006c lw s5,108(sp) -800391ec: 8fb40068 lw s4,104(sp) -800391f0: 8fb30064 lw s3,100(sp) -800391f4: 8fb20060 lw s2,96(sp) -800391f8: 8fb1005c lw s1,92(sp) -800391fc: 8fb00058 lw s0,88(sp) -80039200: 27bd0080 addiu sp,sp,128 -80039204: 03e00008 jr ra -80039208: 00000000 nop - -8003920c <__vsnprintf_internal>: - -static char libc_sprintf_floatbuf[64]; - -static int __vsnprintf_internal(char *string, size_t size, const char *fmt, va_list ap, int (put_in_string(char *string, unsigned int sz, char c, int pos))) -{ -8003920c: 27bdfef8 addiu sp,sp,-264 -80039210: afbf0104 sw ra,260(sp) -80039214: afbe0100 sw s8,256(sp) -80039218: afb700fc sw s7,252(sp) -8003921c: afb600f8 sw s6,248(sp) -80039220: afb500f4 sw s5,244(sp) -80039224: afb400f0 sw s4,240(sp) -80039228: afb300ec sw s3,236(sp) -8003922c: afb200e8 sw s2,232(sp) -80039230: afb100e4 sw s1,228(sp) -80039234: afb000e0 sw s0,224(sp) -80039238: 03a0f021 move s8,sp -8003923c: afc40108 sw a0,264(s8) -80039240: afc5010c sw a1,268(s8) -80039244: afc60110 sw a2,272(s8) -80039248: afc70114 sw a3,276(s8) - int string_pos,fmt_pos; - int l; - unsigned long long arg; - char *argcp; - char *argcp_tmp; - int directive_coming = 0; -8003924c: afc00028 sw zero,40(s8) - int flags = 0; -80039250: afc0002c sw zero,44(s8) - int argsize = 2; // int -80039254: 24020002 li v0,2 -80039258: afc20030 sw v0,48(s8) - int x, y; - unsigned long long a, b; - int empty_digit; - int ssz = size - 1; -8003925c: 8fc2010c lw v0,268(s8) -80039260: 00000000 nop -80039264: 2442ffff addiu v0,v0,-1 -80039268: afc2004c sw v0,76(s8) - int zero_flag_imp = 0; -8003926c: afc00050 sw zero,80(s8) - int pad_quantity = 0; -80039270: afc00054 sw zero,84(s8) - int pad_quantity_f = -1; -80039274: 2402ffff li v0,-1 -80039278: afc20058 sw v0,88(s8) - int last; - - if(size == 0) -8003927c: 8fc2010c lw v0,268(s8) -80039280: 00000000 nop -80039284: 14400002 bnez v0,80039290 <__vsnprintf_internal+0x84> -80039288: 00000000 nop - ssz = 0; -8003928c: afc0004c sw zero,76(s8) - - l = strlen(fmt); -80039290: 8fc40110 lw a0,272(s8) -80039294: 0c00d8af jal 800362bc -80039298: 00000000 nop -8003929c: afc20060 sw v0,96(s8) - - string_pos = 0; -800392a0: afc00018 sw zero,24(s8) - - for(fmt_pos=0;fmt_pos -800392ac: 00000000 nop - { - if(directive_coming) -800392b0: 8fc20028 lw v0,40(s8) -800392b4: 00000000 nop -800392b8: 10400743 beqz v0,8003afc8 <__vsnprintf_internal+0x1dbc> -800392bc: 00000000 nop - { - switch(fmt[fmt_pos]) -800392c0: 8fc3001c lw v1,28(s8) -800392c4: 8fc20110 lw v0,272(s8) -800392c8: 00000000 nop -800392cc: 00431021 addu v0,v0,v1 -800392d0: 80420000 lb v0,0(v0) -800392d4: 00000000 nop -800392d8: 2443ffe0 addiu v1,v0,-32 -800392dc: 2c62005b sltiu v0,v1,91 -800392e0: 10400723 beqz v0,8003af70 <__vsnprintf_internal+0x1d64> -800392e4: 00000000 nop -800392e8: 00031880 sll v1,v1,0x2 -800392ec: 3c028004 lui v0,0x8004 -800392f0: 2442fed8 addiu v0,v0,-296 -800392f4: 00621021 addu v0,v1,v0 -800392f8: 8c420000 lw v0,0(v0) -800392fc: 00000000 nop -80039300: 00400008 jr v0 -80039304: 00000000 nop - { - case '%': - put_in_string(string, ssz, '%', string_pos++); -80039308: 8fc4004c lw a0,76(s8) -8003930c: 8fc30018 lw v1,24(s8) -80039310: 00000000 nop -80039314: 24620001 addiu v0,v1,1 -80039318: afc20018 sw v0,24(s8) -8003931c: 8fc20118 lw v0,280(s8) -80039320: 00603821 move a3,v1 -80039324: 24060025 li a2,37 -80039328: 00802821 move a1,a0 -8003932c: 8fc40108 lw a0,264(s8) -80039330: 0040f809 jalr v0 -80039334: 00000000 nop - directive_coming = 0; -80039338: afc00028 sw zero,40(s8) - break; -8003933c: 1000074e b 8003b078 <__vsnprintf_internal+0x1e6c> -80039340: 00000000 nop - case ' ': - flags |= SPRINTF_SPACE_FLAG; -80039344: 8fc2002c lw v0,44(s8) -80039348: 00000000 nop -8003934c: 34420008 ori v0,v0,0x8 -80039350: afc2002c sw v0,44(s8) - break; -80039354: 10000748 b 8003b078 <__vsnprintf_internal+0x1e6c> -80039358: 00000000 nop - case '#': // Specify alternate form - flags |= SPRINTF_ALT_FLAG; -8003935c: 8fc2002c lw v0,44(s8) -80039360: 00000000 nop -80039364: 34420001 ori v0,v0,0x1 -80039368: afc2002c sw v0,44(s8) - break; -8003936c: 10000742 b 8003b078 <__vsnprintf_internal+0x1e6c> -80039370: 00000000 nop - case '+': // Specify sign in signed conversions - flags |= SPRINTF_SIGN_FLAG; -80039374: 8fc2002c lw v0,44(s8) -80039378: 00000000 nop -8003937c: 34420010 ori v0,v0,0x10 -80039380: afc2002c sw v0,44(s8) - break; -80039384: 1000073c b 8003b078 <__vsnprintf_internal+0x1e6c> -80039388: 00000000 nop - case '0': // Padding with zeros... - if(zero_flag_imp == 0) -8003938c: 8fc20050 lw v0,80(s8) -80039390: 00000000 nop -80039394: 14400009 bnez v0,800393bc <__vsnprintf_internal+0x1b0> -80039398: 00000000 nop - { - flags |= SPRINTF_ZERO_FLAG; -8003939c: 8fc2002c lw v0,44(s8) -800393a0: 00000000 nop -800393a4: 34420002 ori v0,v0,0x2 -800393a8: afc2002c sw v0,44(s8) - zero_flag_imp = 1; -800393ac: 24020001 li v0,1 -800393b0: afc20050 sw v0,80(s8) - else - { - pad_quantity *= 10; - //printf("pad_quantity = %d\n", pad_quantity); - } - break; -800393b4: 10000730 b 8003b078 <__vsnprintf_internal+0x1e6c> -800393b8: 00000000 nop - zero_flag_imp = 1; - //printf("Zero padding enabled!\n"); - } - else - { - pad_quantity *= 10; -800393bc: 8fc20054 lw v0,84(s8) -800393c0: 00000000 nop -800393c4: 00401821 move v1,v0 -800393c8: 00031040 sll v0,v1,0x1 -800393cc: 00401821 move v1,v0 -800393d0: 00031080 sll v0,v1,0x2 -800393d4: 00621021 addu v0,v1,v0 -800393d8: afc20054 sw v0,84(s8) - //printf("pad_quantity = %d\n", pad_quantity); - } - break; -800393dc: 10000726 b 8003b078 <__vsnprintf_internal+0x1e6c> -800393e0: 00000000 nop - case '1' ... '9': // '...' cases are a GNU extension, - // but they simplify a lot - - pad_quantity *= 10; -800393e4: 8fc20054 lw v0,84(s8) -800393e8: 00000000 nop -800393ec: 00401821 move v1,v0 -800393f0: 00031040 sll v0,v1,0x1 -800393f4: 00401821 move v1,v0 -800393f8: 00031080 sll v0,v1,0x2 -800393fc: 00621021 addu v0,v1,v0 -80039400: afc20054 sw v0,84(s8) - pad_quantity += fmt[fmt_pos] - '0'; -80039404: 8fc3001c lw v1,28(s8) -80039408: 8fc20110 lw v0,272(s8) -8003940c: 00000000 nop -80039410: 00431021 addu v0,v0,v1 -80039414: 80420000 lb v0,0(v0) -80039418: 00000000 nop -8003941c: 2443ffd0 addiu v1,v0,-48 -80039420: 8fc20054 lw v0,84(s8) -80039424: 00000000 nop -80039428: 00431021 addu v0,v0,v1 -8003942c: afc20054 sw v0,84(s8) - zero_flag_imp = 1; -80039430: 24020001 li v0,1 -80039434: afc20050 sw v0,80(s8) - - //printf("pad_quantity = %d\n", pad_quantity); - break; -80039438: 1000070f b 8003b078 <__vsnprintf_internal+0x1e6c> -8003943c: 00000000 nop - case '-': // Negative field flag - if(flags & SPRINTF_ZERO_FLAG) -80039440: 8fc2002c lw v0,44(s8) -80039444: 00000000 nop -80039448: 30420002 andi v0,v0,0x2 -8003944c: 10400005 beqz v0,80039464 <__vsnprintf_internal+0x258> -80039450: 00000000 nop - flags &= ~SPRINTF_ZERO_FLAG; -80039454: 8fc3002c lw v1,44(s8) -80039458: 2402fffd li v0,-3 -8003945c: 00621024 and v0,v1,v0 -80039460: afc2002c sw v0,44(s8) - - flags |= SPRINTF_NEGFIELD_FLAG; -80039464: 8fc2002c lw v0,44(s8) -80039468: 00000000 nop -8003946c: 34420004 ori v0,v0,0x4 -80039470: afc2002c sw v0,44(s8) - break; -80039474: 10000700 b 8003b078 <__vsnprintf_internal+0x1e6c> -80039478: 00000000 nop - case '.': // Floating point precision - pad_quantity_f = pad_quantity; -8003947c: 8fc20054 lw v0,84(s8) -80039480: 00000000 nop -80039484: afc20058 sw v0,88(s8) - pad_quantity = 0; -80039488: afc00054 sw zero,84(s8) - break; -8003948c: 100006fa b 8003b078 <__vsnprintf_internal+0x1e6c> -80039490: 00000000 nop - case 'h': // Half argument size - if(argsize) argsize--; -80039494: 8fc20030 lw v0,48(s8) -80039498: 00000000 nop -8003949c: 104006f2 beqz v0,8003b068 <__vsnprintf_internal+0x1e5c> -800394a0: 00000000 nop -800394a4: 8fc20030 lw v0,48(s8) -800394a8: 00000000 nop -800394ac: 2442ffff addiu v0,v0,-1 -800394b0: afc20030 sw v0,48(s8) - break; -800394b4: 100006ec b 8003b068 <__vsnprintf_internal+0x1e5c> -800394b8: 00000000 nop - case 'l': // Double argument size - if(argsize < 2) argsize = 2; -800394bc: 8fc20030 lw v0,48(s8) -800394c0: 00000000 nop -800394c4: 28420002 slti v0,v0,2 -800394c8: 10400005 beqz v0,800394e0 <__vsnprintf_internal+0x2d4> -800394cc: 00000000 nop -800394d0: 24020002 li v0,2 -800394d4: afc20030 sw v0,48(s8) - else if(argsize < SPRINTF_SIZE_LONG_LONG) argsize++; - break; -800394d8: 100006e6 b 8003b074 <__vsnprintf_internal+0x1e68> -800394dc: 00000000 nop - case 'h': // Half argument size - if(argsize) argsize--; - break; - case 'l': // Double argument size - if(argsize < 2) argsize = 2; - else if(argsize < SPRINTF_SIZE_LONG_LONG) argsize++; -800394e0: 8fc20030 lw v0,48(s8) -800394e4: 00000000 nop -800394e8: 28420004 slti v0,v0,4 -800394ec: 104006e1 beqz v0,8003b074 <__vsnprintf_internal+0x1e68> -800394f0: 00000000 nop -800394f4: 8fc20030 lw v0,48(s8) -800394f8: 00000000 nop -800394fc: 24420001 addiu v0,v0,1 -80039500: afc20030 sw v0,48(s8) - break; -80039504: 100006db b 8003b074 <__vsnprintf_internal+0x1e68> -80039508: 00000000 nop - -// 'j', 't', 'z', 'q' added 2013-10-26 by nextvolume - - case 'j': // Maximum integer size - argsize = SPRINTF_SIZE_LONG_LONG; -8003950c: 24020004 li v0,4 -80039510: afc20030 sw v0,48(s8) - break; -80039514: 100006d8 b 8003b078 <__vsnprintf_internal+0x1e6c> -80039518: 00000000 nop - - case 't': // Size of ptrdiff_t (i.e. long on 32-bit, long long on 64-bit) - argsize = (sizeof(void*)==8)? -8003951c: 24020003 li v0,3 -80039520: afc20030 sw v0,48(s8) - SPRINTF_SIZE_LONG_LONG:SPRINTF_SIZE_LONG; - break; -80039524: 100006d4 b 8003b078 <__vsnprintf_internal+0x1e6c> -80039528: 00000000 nop - - case 'z': // Size of size_t (int) - argsize = SPRINTF_SIZE_INT; -8003952c: 24020002 li v0,2 -80039530: afc20030 sw v0,48(s8) - break; -80039534: 100006d0 b 8003b078 <__vsnprintf_internal+0x1e6c> -80039538: 00000000 nop - - case 'q': // Size of quad_t - argsize = SPRINTF_SIZE_LONG_LONG; -8003953c: 24020004 li v0,4 -80039540: afc20030 sw v0,48(s8) - break; -80039544: 100006cc b 8003b078 <__vsnprintf_internal+0x1e6c> -80039548: 00000000 nop - - case 'd': // signed decimal - case 'i': - empty_digit = 1; -8003954c: 24020001 li v0,1 -80039550: afc20048 sw v0,72(s8) - - //printf("argsize = %d\n", argsize); - - if(argsize < SPRINTF_SIZE_LONG_LONG) -80039554: 8fc20030 lw v0,48(s8) -80039558: 00000000 nop -8003955c: 28420004 slti v0,v0,4 -80039560: 1040000f beqz v0,800395a0 <__vsnprintf_internal+0x394> -80039564: 00000000 nop - arg = (unsigned long long)va_arg(ap, unsigned int); -80039568: 8fc30114 lw v1,276(s8) -8003956c: 00000000 nop -80039570: 24620004 addiu v0,v1,4 -80039574: afc20114 sw v0,276(s8) -80039578: 8c620000 lw v0,0(v1) -8003957c: 00000000 nop -80039580: afc20098 sw v0,152(s8) -80039584: afc0009c sw zero,156(s8) -80039588: 8fc20098 lw v0,152(s8) -8003958c: 8fc3009c lw v1,156(s8) -80039590: afc20070 sw v0,112(s8) -80039594: afc30074 sw v1,116(s8) -80039598: 1000000c b 800395cc <__vsnprintf_internal+0x3c0> -8003959c: 00000000 nop - else - arg = va_arg(ap, unsigned long long); -800395a0: 8fc20114 lw v0,276(s8) -800395a4: 00000000 nop -800395a8: 24430007 addiu v1,v0,7 -800395ac: 2402fff8 li v0,-8 -800395b0: 00621824 and v1,v1,v0 -800395b4: 24620008 addiu v0,v1,8 -800395b8: afc20114 sw v0,276(s8) -800395bc: 8c620000 lw v0,0(v1) -800395c0: 8c630004 lw v1,4(v1) -800395c4: afc20070 sw v0,112(s8) -800395c8: afc30074 sw v1,116(s8) - - if(flags & SPRINTF_SPACE_FLAG) -800395cc: 8fc2002c lw v0,44(s8) -800395d0: 00000000 nop -800395d4: 30420008 andi v0,v0,0x8 -800395d8: 1040000d beqz v0,80039610 <__vsnprintf_internal+0x404> -800395dc: 00000000 nop - put_in_string(string, ssz, ' ', string_pos++); -800395e0: 8fc4004c lw a0,76(s8) -800395e4: 8fc30018 lw v1,24(s8) -800395e8: 00000000 nop -800395ec: 24620001 addiu v0,v1,1 -800395f0: afc20018 sw v0,24(s8) -800395f4: 8fc20118 lw v0,280(s8) -800395f8: 00603821 move a3,v1 -800395fc: 24060020 li a2,32 -80039600: 00802821 move a1,a0 -80039604: 8fc40108 lw a0,264(s8) -80039608: 0040f809 jalr v0 -8003960c: 00000000 nop - - if(get_arg_in_size(argsize, &arg, 1)) -80039610: 27c20070 addiu v0,s8,112 -80039614: 24060001 li a2,1 -80039618: 00402821 move a1,v0 -8003961c: 8fc40030 lw a0,48(s8) -80039620: 0c00e13a jal 800384e8 -80039624: 00000000 nop -80039628: 10400013 beqz v0,80039678 <__vsnprintf_internal+0x46c> -8003962c: 00000000 nop - { - put_in_string(string, ssz, '-', string_pos++); -80039630: 8fc4004c lw a0,76(s8) -80039634: 8fc30018 lw v1,24(s8) -80039638: 00000000 nop -8003963c: 24620001 addiu v0,v1,1 -80039640: afc20018 sw v0,24(s8) -80039644: 8fc20118 lw v0,280(s8) -80039648: 00603821 move a3,v1 -8003964c: 2406002d li a2,45 -80039650: 00802821 move a1,a0 -80039654: 8fc40108 lw a0,264(s8) -80039658: 0040f809 jalr v0 -8003965c: 00000000 nop - pad_quantity--; -80039660: 8fc20054 lw v0,84(s8) -80039664: 00000000 nop -80039668: 2442ffff addiu v0,v0,-1 -8003966c: afc20054 sw v0,84(s8) -80039670: 10000016 b 800396cc <__vsnprintf_internal+0x4c0> -80039674: 00000000 nop - } - else - { - if(flags & SPRINTF_SIGN_FLAG) -80039678: 8fc2002c lw v0,44(s8) -8003967c: 00000000 nop -80039680: 30420010 andi v0,v0,0x10 -80039684: 10400011 beqz v0,800396cc <__vsnprintf_internal+0x4c0> -80039688: 00000000 nop - { - put_in_string(string, ssz, '+', string_pos++); -8003968c: 8fc4004c lw a0,76(s8) -80039690: 8fc30018 lw v1,24(s8) -80039694: 00000000 nop -80039698: 24620001 addiu v0,v1,1 -8003969c: afc20018 sw v0,24(s8) -800396a0: 8fc20118 lw v0,280(s8) -800396a4: 00603821 move a3,v1 -800396a8: 2406002b li a2,43 -800396ac: 00802821 move a1,a0 -800396b0: 8fc40108 lw a0,264(s8) -800396b4: 0040f809 jalr v0 -800396b8: 00000000 nop - pad_quantity--; -800396bc: 8fc20054 lw v0,84(s8) -800396c0: 00000000 nop -800396c4: 2442ffff addiu v0,v0,-1 -800396c8: afc20054 sw v0,84(s8) - - y *= 10; - } - if(pad_quantity < 0) pad_quantity = 0;*/ - - calculate_real_padding(); -800396cc: 24020001 li v0,1 -800396d0: afc20038 sw v0,56(s8) -800396d4: afc00034 sw zero,52(s8) -800396d8: 1000002a b 80039784 <__vsnprintf_internal+0x578> -800396dc: 00000000 nop -800396e0: 8fc20034 lw v0,52(s8) -800396e4: 00000000 nop -800396e8: 14400007 bnez v0,80039708 <__vsnprintf_internal+0x4fc> -800396ec: 00000000 nop -800396f0: 8fc20054 lw v0,84(s8) -800396f4: 00000000 nop -800396f8: 2442ffff addiu v0,v0,-1 -800396fc: afc20054 sw v0,84(s8) -80039700: 10000014 b 80039754 <__vsnprintf_internal+0x548> -80039704: 00000000 nop -80039708: 8fc40070 lw a0,112(s8) -8003970c: 8fc50074 lw a1,116(s8) -80039710: 8fc20038 lw v0,56(s8) -80039714: 00000000 nop -80039718: afc200a0 sw v0,160(s8) -8003971c: 000217c3 sra v0,v0,0x1f -80039720: afc200a4 sw v0,164(s8) -80039724: 8fc600a0 lw a2,160(s8) -80039728: 8fc700a4 lw a3,164(s8) -8003972c: 0c00f0ae jal 8003c2b8 <__udivdi3> -80039730: 00000000 nop -80039734: 00402021 move a0,v0 -80039738: 00832025 or a0,a0,v1 -8003973c: 10800005 beqz a0,80039754 <__vsnprintf_internal+0x548> -80039740: 00000000 nop -80039744: 8fc20054 lw v0,84(s8) -80039748: 00000000 nop -8003974c: 2442ffff addiu v0,v0,-1 -80039750: afc20054 sw v0,84(s8) -80039754: 8fc20038 lw v0,56(s8) -80039758: 00000000 nop -8003975c: 00401821 move v1,v0 -80039760: 00031040 sll v0,v1,0x1 -80039764: 00401821 move v1,v0 -80039768: 00031080 sll v0,v1,0x2 -8003976c: 00621021 addu v0,v1,v0 -80039770: afc20038 sw v0,56(s8) -80039774: 8fc20034 lw v0,52(s8) -80039778: 00000000 nop -8003977c: 24420001 addiu v0,v0,1 -80039780: afc20034 sw v0,52(s8) -80039784: 8fc20034 lw v0,52(s8) -80039788: 00000000 nop -8003978c: 28420014 slti v0,v0,20 -80039790: 1440ffd3 bnez v0,800396e0 <__vsnprintf_internal+0x4d4> -80039794: 00000000 nop -80039798: 8fc20054 lw v0,84(s8) -8003979c: 00000000 nop -800397a0: 04410002 bgez v0,800397ac <__vsnprintf_internal+0x5a0> -800397a4: 00000000 nop -800397a8: afc00054 sw zero,84(s8) - else - put_in_string(string, ssz, ' ', string_pos++); - } - }*/ - - write_padding(); -800397ac: 8fc2002c lw v0,44(s8) -800397b0: 00000000 nop -800397b4: 30420004 andi v0,v0,0x4 -800397b8: 1440002d bnez v0,80039870 <__vsnprintf_internal+0x664> -800397bc: 00000000 nop -800397c0: afc00034 sw zero,52(s8) -800397c4: 10000024 b 80039858 <__vsnprintf_internal+0x64c> -800397c8: 00000000 nop -800397cc: 8fc2002c lw v0,44(s8) -800397d0: 00000000 nop -800397d4: 30420002 andi v0,v0,0x2 -800397d8: 1040000f beqz v0,80039818 <__vsnprintf_internal+0x60c> -800397dc: 00000000 nop -800397e0: 8fc4004c lw a0,76(s8) -800397e4: 8fc30018 lw v1,24(s8) -800397e8: 00000000 nop -800397ec: 24620001 addiu v0,v1,1 -800397f0: afc20018 sw v0,24(s8) -800397f4: 8fc20118 lw v0,280(s8) -800397f8: 00603821 move a3,v1 -800397fc: 24060030 li a2,48 -80039800: 00802821 move a1,a0 -80039804: 8fc40108 lw a0,264(s8) -80039808: 0040f809 jalr v0 -8003980c: 00000000 nop -80039810: 1000000d b 80039848 <__vsnprintf_internal+0x63c> -80039814: 00000000 nop -80039818: 8fc4004c lw a0,76(s8) -8003981c: 8fc30018 lw v1,24(s8) -80039820: 00000000 nop -80039824: 24620001 addiu v0,v1,1 -80039828: afc20018 sw v0,24(s8) -8003982c: 8fc20118 lw v0,280(s8) -80039830: 00603821 move a3,v1 -80039834: 24060020 li a2,32 -80039838: 00802821 move a1,a0 -8003983c: 8fc40108 lw a0,264(s8) -80039840: 0040f809 jalr v0 -80039844: 00000000 nop -80039848: 8fc20034 lw v0,52(s8) -8003984c: 00000000 nop -80039850: 24420001 addiu v0,v0,1 -80039854: afc20034 sw v0,52(s8) -80039858: 8fc30034 lw v1,52(s8) -8003985c: 8fc20054 lw v0,84(s8) -80039860: 00000000 nop -80039864: 0062102a slt v0,v1,v0 -80039868: 1440ffd8 bnez v0,800397cc <__vsnprintf_internal+0x5c0> -8003986c: 00000000 nop - - for(x=19;x>=0;x--) -80039870: 24020013 li v0,19 -80039874: afc20034 sw v0,52(s8) -80039878: 10000081 b 80039a80 <__vsnprintf_internal+0x874> -8003987c: 00000000 nop - { - a = 1; -80039880: 24020001 li v0,1 -80039884: 00001821 move v1,zero -80039888: afc20040 sw v0,64(s8) -8003988c: afc30044 sw v1,68(s8) - for(y = 0; y -80039898: 00000000 nop - a *= 10; -8003989c: 8fc20040 lw v0,64(s8) -800398a0: 8fc30044 lw v1,68(s8) -800398a4: 000227c2 srl a0,v0,0x1f -800398a8: 00032840 sll a1,v1,0x1 -800398ac: afc5007c sw a1,124(s8) -800398b0: 8fc5007c lw a1,124(s8) -800398b4: 00000000 nop -800398b8: 00852025 or a0,a0,a1 -800398bc: afc4007c sw a0,124(s8) -800398c0: 00021040 sll v0,v0,0x1 -800398c4: afc20078 sw v0,120(s8) -800398c8: 8fc20078 lw v0,120(s8) -800398cc: 8fc3007c lw v1,124(s8) -800398d0: 00022782 srl a0,v0,0x1e -800398d4: 00032880 sll a1,v1,0x2 -800398d8: afc50084 sw a1,132(s8) -800398dc: 8fc50084 lw a1,132(s8) -800398e0: 00000000 nop -800398e4: 00852025 or a0,a0,a1 -800398e8: afc40084 sw a0,132(s8) -800398ec: 00022080 sll a0,v0,0x2 -800398f0: afc40080 sw a0,128(s8) -800398f4: 8fc80080 lw t0,128(s8) -800398f8: 8fc90084 lw t1,132(s8) -800398fc: 01003021 move a2,t0 -80039900: 00462021 addu a0,v0,a2 -80039904: 0082302b sltu a2,a0,v0 -80039908: 01203821 move a3,t1 -8003990c: 00672821 addu a1,v1,a3 -80039910: 00c51021 addu v0,a2,a1 -80039914: 00402821 move a1,v0 -80039918: afc40040 sw a0,64(s8) -8003991c: afc50044 sw a1,68(s8) - write_padding(); - - for(x=19;x>=0;x--) - { - a = 1; - for(y = 0; y -80039944: 00000000 nop - a *= 10; - - b = (arg/a); -80039948: 8fc20070 lw v0,112(s8) -8003994c: 8fc30074 lw v1,116(s8) -80039950: 8fc60040 lw a2,64(s8) -80039954: 8fc70044 lw a3,68(s8) -80039958: 00402021 move a0,v0 -8003995c: 00602821 move a1,v1 -80039960: 0c00f0ae jal 8003c2b8 <__udivdi3> -80039964: 00000000 nop -80039968: afc20068 sw v0,104(s8) -8003996c: afc3006c sw v1,108(s8) - - if(b>=1) -80039970: 8fc30068 lw v1,104(s8) -80039974: 8fc2006c lw v0,108(s8) -80039978: 00000000 nop -8003997c: 00621825 or v1,v1,v0 -80039980: 10600002 beqz v1,8003998c <__vsnprintf_internal+0x780> -80039984: 00000000 nop - empty_digit = 0; -80039988: afc00048 sw zero,72(s8) - - if(empty_digit == 0 || x == 0) -8003998c: 8fc20048 lw v0,72(s8) -80039990: 00000000 nop -80039994: 10400005 beqz v0,800399ac <__vsnprintf_internal+0x7a0> -80039998: 00000000 nop -8003999c: 8fc20034 lw v0,52(s8) -800399a0: 00000000 nop -800399a4: 14400032 bnez v0,80039a70 <__vsnprintf_internal+0x864> -800399a8: 00000000 nop - { - arg -= b*a; -800399ac: 8fc80070 lw t0,112(s8) -800399b0: 8fc90074 lw t1,116(s8) -800399b4: 8fc3006c lw v1,108(s8) -800399b8: 8fc20040 lw v0,64(s8) -800399bc: 00000000 nop -800399c0: 00620018 mult v1,v0 -800399c4: 00002012 mflo a0 -800399c8: 8fc30044 lw v1,68(s8) -800399cc: 8fc20068 lw v0,104(s8) -800399d0: 00000000 nop -800399d4: 00620018 mult v1,v0 -800399d8: 00001012 mflo v0 -800399dc: 00822021 addu a0,a0,v0 -800399e0: 8fc30068 lw v1,104(s8) -800399e4: 8fc20040 lw v0,64(s8) -800399e8: 00000000 nop -800399ec: 00620019 multu v1,v0 -800399f0: 00001012 mflo v0 -800399f4: 00001810 mfhi v1 -800399f8: 00832021 addu a0,a0,v1 -800399fc: 00801821 move v1,a0 -80039a00: 01022023 subu a0,t0,v0 -80039a04: 0104302b sltu a2,t0,a0 -80039a08: 01232823 subu a1,t1,v1 -80039a0c: 00a61023 subu v0,a1,a2 -80039a10: 00402821 move a1,v0 -80039a14: 00801021 move v0,a0 -80039a18: 00a01821 move v1,a1 -80039a1c: afc20070 sw v0,112(s8) -80039a20: afc30074 sw v1,116(s8) - - put_in_string(string, ssz, b + '0', string_pos++); -80039a24: 8fc4004c lw a0,76(s8) -80039a28: 93c20068 lbu v0,104(s8) -80039a2c: 00000000 nop -80039a30: 24420030 addiu v0,v0,48 -80039a34: 304200ff andi v0,v0,0xff -80039a38: 00021600 sll v0,v0,0x18 -80039a3c: 00021603 sra v0,v0,0x18 -80039a40: 00402821 move a1,v0 -80039a44: 8fc30018 lw v1,24(s8) -80039a48: 00000000 nop -80039a4c: 24620001 addiu v0,v1,1 -80039a50: afc20018 sw v0,24(s8) -80039a54: 8fc20118 lw v0,280(s8) -80039a58: 00603821 move a3,v1 -80039a5c: 00a03021 move a2,a1 -80039a60: 00802821 move a1,a0 -80039a64: 8fc40108 lw a0,264(s8) -80039a68: 0040f809 jalr v0 -80039a6c: 00000000 nop - } - }*/ - - write_padding(); - - for(x=19;x>=0;x--) -80039a70: 8fc20034 lw v0,52(s8) -80039a74: 00000000 nop -80039a78: 2442ffff addiu v0,v0,-1 -80039a7c: afc20034 sw v0,52(s8) -80039a80: 8fc20034 lw v0,52(s8) -80039a84: 00000000 nop -80039a88: 0441ff7d bgez v0,80039880 <__vsnprintf_internal+0x674> -80039a8c: 00000000 nop - /*if(flags & SPRINTF_NEGFIELD_FLAG) - { - for(x = 0; x < pad_quantity; x++) - put_in_string(string, ssz, ' ', string_pos++); - }*/ - write_neg_padding(); -80039a90: 8fc2002c lw v0,44(s8) -80039a94: 00000000 nop -80039a98: 30420004 andi v0,v0,0x4 -80039a9c: 1040001a beqz v0,80039b08 <__vsnprintf_internal+0x8fc> -80039aa0: 00000000 nop -80039aa4: afc00034 sw zero,52(s8) -80039aa8: 10000011 b 80039af0 <__vsnprintf_internal+0x8e4> -80039aac: 00000000 nop -80039ab0: 8fc4004c lw a0,76(s8) -80039ab4: 8fc30018 lw v1,24(s8) -80039ab8: 00000000 nop -80039abc: 24620001 addiu v0,v1,1 -80039ac0: afc20018 sw v0,24(s8) -80039ac4: 8fc20118 lw v0,280(s8) -80039ac8: 00603821 move a3,v1 -80039acc: 24060020 li a2,32 -80039ad0: 00802821 move a1,a0 -80039ad4: 8fc40108 lw a0,264(s8) -80039ad8: 0040f809 jalr v0 -80039adc: 00000000 nop -80039ae0: 8fc20034 lw v0,52(s8) -80039ae4: 00000000 nop -80039ae8: 24420001 addiu v0,v0,1 -80039aec: afc20034 sw v0,52(s8) -80039af0: 8fc30034 lw v1,52(s8) -80039af4: 8fc20054 lw v0,84(s8) -80039af8: 00000000 nop -80039afc: 0062102a slt v0,v1,v0 -80039b00: 1440ffeb bnez v0,80039ab0 <__vsnprintf_internal+0x8a4> -80039b04: 00000000 nop - - directive_coming = 0; -80039b08: afc00028 sw zero,40(s8) - break; -80039b0c: 1000055a b 8003b078 <__vsnprintf_internal+0x1e6c> -80039b10: 00000000 nop - case 'u': // unsigned decimal - empty_digit = 1; -80039b14: 24020001 li v0,1 -80039b18: afc20048 sw v0,72(s8) - - if(argsize < SPRINTF_SIZE_LONG_LONG) -80039b1c: 8fc20030 lw v0,48(s8) -80039b20: 00000000 nop -80039b24: 28420004 slti v0,v0,4 -80039b28: 1040000f beqz v0,80039b68 <__vsnprintf_internal+0x95c> -80039b2c: 00000000 nop - arg = (unsigned long long)va_arg(ap, unsigned int); -80039b30: 8fc30114 lw v1,276(s8) -80039b34: 00000000 nop -80039b38: 24620004 addiu v0,v1,4 -80039b3c: afc20114 sw v0,276(s8) -80039b40: 8c620000 lw v0,0(v1) -80039b44: 00000000 nop -80039b48: afc200a8 sw v0,168(s8) -80039b4c: afc000ac sw zero,172(s8) -80039b50: 8fc200a8 lw v0,168(s8) -80039b54: 8fc300ac lw v1,172(s8) -80039b58: afc20070 sw v0,112(s8) -80039b5c: afc30074 sw v1,116(s8) -80039b60: 1000000c b 80039b94 <__vsnprintf_internal+0x988> -80039b64: 00000000 nop - else - arg = va_arg(ap, unsigned long long); -80039b68: 8fc20114 lw v0,276(s8) -80039b6c: 00000000 nop -80039b70: 24430007 addiu v1,v0,7 -80039b74: 2402fff8 li v0,-8 -80039b78: 00621824 and v1,v1,v0 -80039b7c: 24620008 addiu v0,v1,8 -80039b80: afc20114 sw v0,276(s8) -80039b84: 8c620000 lw v0,0(v1) -80039b88: 8c630004 lw v1,4(v1) -80039b8c: afc20070 sw v0,112(s8) -80039b90: afc30074 sw v1,116(s8) - - get_arg_in_size(argsize, &arg, 0); -80039b94: 27c20070 addiu v0,s8,112 -80039b98: 00003021 move a2,zero -80039b9c: 00402821 move a1,v0 -80039ba0: 8fc40030 lw a0,48(s8) -80039ba4: 0c00e13a jal 800384e8 -80039ba8: 00000000 nop - - calculate_real_padding(); -80039bac: 24020001 li v0,1 -80039bb0: afc20038 sw v0,56(s8) -80039bb4: afc00034 sw zero,52(s8) -80039bb8: 1000002a b 80039c64 <__vsnprintf_internal+0xa58> -80039bbc: 00000000 nop -80039bc0: 8fc20034 lw v0,52(s8) -80039bc4: 00000000 nop -80039bc8: 14400007 bnez v0,80039be8 <__vsnprintf_internal+0x9dc> -80039bcc: 00000000 nop -80039bd0: 8fc20054 lw v0,84(s8) -80039bd4: 00000000 nop -80039bd8: 2442ffff addiu v0,v0,-1 -80039bdc: afc20054 sw v0,84(s8) -80039be0: 10000014 b 80039c34 <__vsnprintf_internal+0xa28> -80039be4: 00000000 nop -80039be8: 8fc40070 lw a0,112(s8) -80039bec: 8fc50074 lw a1,116(s8) -80039bf0: 8fc20038 lw v0,56(s8) -80039bf4: 00000000 nop -80039bf8: afc200b0 sw v0,176(s8) -80039bfc: 000217c3 sra v0,v0,0x1f -80039c00: afc200b4 sw v0,180(s8) -80039c04: 8fc600b0 lw a2,176(s8) -80039c08: 8fc700b4 lw a3,180(s8) -80039c0c: 0c00f0ae jal 8003c2b8 <__udivdi3> -80039c10: 00000000 nop -80039c14: 00402021 move a0,v0 -80039c18: 00832025 or a0,a0,v1 -80039c1c: 10800005 beqz a0,80039c34 <__vsnprintf_internal+0xa28> -80039c20: 00000000 nop -80039c24: 8fc20054 lw v0,84(s8) -80039c28: 00000000 nop -80039c2c: 2442ffff addiu v0,v0,-1 -80039c30: afc20054 sw v0,84(s8) -80039c34: 8fc20038 lw v0,56(s8) -80039c38: 00000000 nop -80039c3c: 00401821 move v1,v0 -80039c40: 00031040 sll v0,v1,0x1 -80039c44: 00401821 move v1,v0 -80039c48: 00031080 sll v0,v1,0x2 -80039c4c: 00621021 addu v0,v1,v0 -80039c50: afc20038 sw v0,56(s8) -80039c54: 8fc20034 lw v0,52(s8) -80039c58: 00000000 nop -80039c5c: 24420001 addiu v0,v0,1 -80039c60: afc20034 sw v0,52(s8) -80039c64: 8fc20034 lw v0,52(s8) -80039c68: 00000000 nop -80039c6c: 28420014 slti v0,v0,20 -80039c70: 1440ffd3 bnez v0,80039bc0 <__vsnprintf_internal+0x9b4> -80039c74: 00000000 nop -80039c78: 8fc20054 lw v0,84(s8) -80039c7c: 00000000 nop -80039c80: 04410002 bgez v0,80039c8c <__vsnprintf_internal+0xa80> -80039c84: 00000000 nop -80039c88: afc00054 sw zero,84(s8) - write_padding(); -80039c8c: 8fc2002c lw v0,44(s8) -80039c90: 00000000 nop -80039c94: 30420004 andi v0,v0,0x4 -80039c98: 1440002d bnez v0,80039d50 <__vsnprintf_internal+0xb44> -80039c9c: 00000000 nop -80039ca0: afc00034 sw zero,52(s8) -80039ca4: 10000024 b 80039d38 <__vsnprintf_internal+0xb2c> -80039ca8: 00000000 nop -80039cac: 8fc2002c lw v0,44(s8) -80039cb0: 00000000 nop -80039cb4: 30420002 andi v0,v0,0x2 -80039cb8: 1040000f beqz v0,80039cf8 <__vsnprintf_internal+0xaec> -80039cbc: 00000000 nop -80039cc0: 8fc4004c lw a0,76(s8) -80039cc4: 8fc30018 lw v1,24(s8) -80039cc8: 00000000 nop -80039ccc: 24620001 addiu v0,v1,1 -80039cd0: afc20018 sw v0,24(s8) -80039cd4: 8fc20118 lw v0,280(s8) -80039cd8: 00603821 move a3,v1 -80039cdc: 24060030 li a2,48 -80039ce0: 00802821 move a1,a0 -80039ce4: 8fc40108 lw a0,264(s8) -80039ce8: 0040f809 jalr v0 -80039cec: 00000000 nop -80039cf0: 1000000d b 80039d28 <__vsnprintf_internal+0xb1c> -80039cf4: 00000000 nop -80039cf8: 8fc4004c lw a0,76(s8) -80039cfc: 8fc30018 lw v1,24(s8) -80039d00: 00000000 nop -80039d04: 24620001 addiu v0,v1,1 -80039d08: afc20018 sw v0,24(s8) -80039d0c: 8fc20118 lw v0,280(s8) -80039d10: 00603821 move a3,v1 -80039d14: 24060020 li a2,32 -80039d18: 00802821 move a1,a0 -80039d1c: 8fc40108 lw a0,264(s8) -80039d20: 0040f809 jalr v0 -80039d24: 00000000 nop -80039d28: 8fc20034 lw v0,52(s8) -80039d2c: 00000000 nop -80039d30: 24420001 addiu v0,v0,1 -80039d34: afc20034 sw v0,52(s8) -80039d38: 8fc30034 lw v1,52(s8) -80039d3c: 8fc20054 lw v0,84(s8) -80039d40: 00000000 nop -80039d44: 0062102a slt v0,v1,v0 -80039d48: 1440ffd8 bnez v0,80039cac <__vsnprintf_internal+0xaa0> -80039d4c: 00000000 nop - - for(x=19;x>=0;x--) -80039d50: 24020013 li v0,19 -80039d54: afc20034 sw v0,52(s8) -80039d58: 10000081 b 80039f60 <__vsnprintf_internal+0xd54> -80039d5c: 00000000 nop - { - a = 1; -80039d60: 24020001 li v0,1 -80039d64: 00001821 move v1,zero -80039d68: afc20040 sw v0,64(s8) -80039d6c: afc30044 sw v1,68(s8) - for(y = 0; y -80039d78: 00000000 nop - a *= 10; -80039d7c: 8fc20040 lw v0,64(s8) -80039d80: 8fc30044 lw v1,68(s8) -80039d84: 000227c2 srl a0,v0,0x1f -80039d88: 00032840 sll a1,v1,0x1 -80039d8c: afc5008c sw a1,140(s8) -80039d90: 8fc5008c lw a1,140(s8) -80039d94: 00000000 nop -80039d98: 00852025 or a0,a0,a1 -80039d9c: afc4008c sw a0,140(s8) -80039da0: 00021040 sll v0,v0,0x1 -80039da4: afc20088 sw v0,136(s8) -80039da8: 8fc20088 lw v0,136(s8) -80039dac: 8fc3008c lw v1,140(s8) -80039db0: 00022782 srl a0,v0,0x1e -80039db4: 00032880 sll a1,v1,0x2 -80039db8: afc50094 sw a1,148(s8) -80039dbc: 8fc50094 lw a1,148(s8) -80039dc0: 00000000 nop -80039dc4: 00852025 or a0,a0,a1 -80039dc8: afc40094 sw a0,148(s8) -80039dcc: 00022080 sll a0,v0,0x2 -80039dd0: afc40090 sw a0,144(s8) -80039dd4: 8fc80090 lw t0,144(s8) -80039dd8: 8fc90094 lw t1,148(s8) -80039ddc: 01003021 move a2,t0 -80039de0: 00462021 addu a0,v0,a2 -80039de4: 0082302b sltu a2,a0,v0 -80039de8: 01203821 move a3,t1 -80039dec: 00672821 addu a1,v1,a3 -80039df0: 00c51021 addu v0,a2,a1 -80039df4: 00402821 move a1,v0 -80039df8: afc40040 sw a0,64(s8) -80039dfc: afc50044 sw a1,68(s8) - write_padding(); - - for(x=19;x>=0;x--) - { - a = 1; - for(y = 0; y -80039e24: 00000000 nop - a *= 10; - - - - b = (arg/a); -80039e28: 8fc20070 lw v0,112(s8) -80039e2c: 8fc30074 lw v1,116(s8) -80039e30: 8fc60040 lw a2,64(s8) -80039e34: 8fc70044 lw a3,68(s8) -80039e38: 00402021 move a0,v0 -80039e3c: 00602821 move a1,v1 -80039e40: 0c00f0ae jal 8003c2b8 <__udivdi3> -80039e44: 00000000 nop -80039e48: afc20068 sw v0,104(s8) -80039e4c: afc3006c sw v1,108(s8) - - if(b>=1) -80039e50: 8fc30068 lw v1,104(s8) -80039e54: 8fc2006c lw v0,108(s8) -80039e58: 00000000 nop -80039e5c: 00621825 or v1,v1,v0 -80039e60: 10600002 beqz v1,80039e6c <__vsnprintf_internal+0xc60> -80039e64: 00000000 nop - empty_digit = 0; -80039e68: afc00048 sw zero,72(s8) - - if(empty_digit == 0 || x == 0) -80039e6c: 8fc20048 lw v0,72(s8) -80039e70: 00000000 nop -80039e74: 10400005 beqz v0,80039e8c <__vsnprintf_internal+0xc80> -80039e78: 00000000 nop -80039e7c: 8fc20034 lw v0,52(s8) -80039e80: 00000000 nop -80039e84: 14400032 bnez v0,80039f50 <__vsnprintf_internal+0xd44> -80039e88: 00000000 nop - { - arg -= b*a; -80039e8c: 8fc80070 lw t0,112(s8) -80039e90: 8fc90074 lw t1,116(s8) -80039e94: 8fc3006c lw v1,108(s8) -80039e98: 8fc20040 lw v0,64(s8) -80039e9c: 00000000 nop -80039ea0: 00620018 mult v1,v0 -80039ea4: 00002012 mflo a0 -80039ea8: 8fc30044 lw v1,68(s8) -80039eac: 8fc20068 lw v0,104(s8) -80039eb0: 00000000 nop -80039eb4: 00620018 mult v1,v0 -80039eb8: 00001012 mflo v0 -80039ebc: 00822021 addu a0,a0,v0 -80039ec0: 8fc30068 lw v1,104(s8) -80039ec4: 8fc20040 lw v0,64(s8) -80039ec8: 00000000 nop -80039ecc: 00620019 multu v1,v0 -80039ed0: 00001012 mflo v0 -80039ed4: 00001810 mfhi v1 -80039ed8: 00832021 addu a0,a0,v1 -80039edc: 00801821 move v1,a0 -80039ee0: 01022023 subu a0,t0,v0 -80039ee4: 0104302b sltu a2,t0,a0 -80039ee8: 01232823 subu a1,t1,v1 -80039eec: 00a61023 subu v0,a1,a2 -80039ef0: 00402821 move a1,v0 -80039ef4: 00801021 move v0,a0 -80039ef8: 00a01821 move v1,a1 -80039efc: afc20070 sw v0,112(s8) -80039f00: afc30074 sw v1,116(s8) - - put_in_string(string, ssz, b + '0', string_pos++); -80039f04: 8fc4004c lw a0,76(s8) -80039f08: 93c20068 lbu v0,104(s8) -80039f0c: 00000000 nop -80039f10: 24420030 addiu v0,v0,48 -80039f14: 304200ff andi v0,v0,0xff -80039f18: 00021600 sll v0,v0,0x18 -80039f1c: 00021603 sra v0,v0,0x18 -80039f20: 00402821 move a1,v0 -80039f24: 8fc30018 lw v1,24(s8) -80039f28: 00000000 nop -80039f2c: 24620001 addiu v0,v1,1 -80039f30: afc20018 sw v0,24(s8) -80039f34: 8fc20118 lw v0,280(s8) -80039f38: 00603821 move a3,v1 -80039f3c: 00a03021 move a2,a1 -80039f40: 00802821 move a1,a0 -80039f44: 8fc40108 lw a0,264(s8) -80039f48: 0040f809 jalr v0 -80039f4c: 00000000 nop - get_arg_in_size(argsize, &arg, 0); - - calculate_real_padding(); - write_padding(); - - for(x=19;x>=0;x--) -80039f50: 8fc20034 lw v0,52(s8) -80039f54: 00000000 nop -80039f58: 2442ffff addiu v0,v0,-1 -80039f5c: afc20034 sw v0,52(s8) -80039f60: 8fc20034 lw v0,52(s8) -80039f64: 00000000 nop -80039f68: 0441ff7d bgez v0,80039d60 <__vsnprintf_internal+0xb54> -80039f6c: 00000000 nop - - put_in_string(string, ssz, b + '0', string_pos++); - } - } - - write_neg_padding(); -80039f70: 8fc2002c lw v0,44(s8) -80039f74: 00000000 nop -80039f78: 30420004 andi v0,v0,0x4 -80039f7c: 1040001a beqz v0,80039fe8 <__vsnprintf_internal+0xddc> -80039f80: 00000000 nop -80039f84: afc00034 sw zero,52(s8) -80039f88: 10000011 b 80039fd0 <__vsnprintf_internal+0xdc4> -80039f8c: 00000000 nop -80039f90: 8fc4004c lw a0,76(s8) -80039f94: 8fc30018 lw v1,24(s8) -80039f98: 00000000 nop -80039f9c: 24620001 addiu v0,v1,1 -80039fa0: afc20018 sw v0,24(s8) -80039fa4: 8fc20118 lw v0,280(s8) -80039fa8: 00603821 move a3,v1 -80039fac: 24060020 li a2,32 -80039fb0: 00802821 move a1,a0 -80039fb4: 8fc40108 lw a0,264(s8) -80039fb8: 0040f809 jalr v0 -80039fbc: 00000000 nop -80039fc0: 8fc20034 lw v0,52(s8) -80039fc4: 00000000 nop -80039fc8: 24420001 addiu v0,v0,1 -80039fcc: afc20034 sw v0,52(s8) -80039fd0: 8fc30034 lw v1,52(s8) -80039fd4: 8fc20054 lw v0,84(s8) -80039fd8: 00000000 nop -80039fdc: 0062102a slt v0,v1,v0 -80039fe0: 1440ffeb bnez v0,80039f90 <__vsnprintf_internal+0xd84> -80039fe4: 00000000 nop - - directive_coming = 0; -80039fe8: afc00028 sw zero,40(s8) - break; -80039fec: 10000422 b 8003b078 <__vsnprintf_internal+0x1e6c> -80039ff0: 00000000 nop - case 'x': // Hexadecimal - case 'X': // Hexadecimal with big letters - case 'p': // Hexadecimal with small letters with '0x' prefix - empty_digit = 1; -80039ff4: 24020001 li v0,1 -80039ff8: afc20048 sw v0,72(s8) - - if(argsize < SPRINTF_SIZE_LONG_LONG) -80039ffc: 8fc20030 lw v0,48(s8) -8003a000: 00000000 nop -8003a004: 28420004 slti v0,v0,4 -8003a008: 1040000f beqz v0,8003a048 <__vsnprintf_internal+0xe3c> -8003a00c: 00000000 nop - arg = (unsigned long long)va_arg(ap, unsigned int); -8003a010: 8fc30114 lw v1,276(s8) -8003a014: 00000000 nop -8003a018: 24620004 addiu v0,v1,4 -8003a01c: afc20114 sw v0,276(s8) -8003a020: 8c620000 lw v0,0(v1) -8003a024: 00000000 nop -8003a028: afc200b8 sw v0,184(s8) -8003a02c: afc000bc sw zero,188(s8) -8003a030: 8fc200b8 lw v0,184(s8) -8003a034: 8fc300bc lw v1,188(s8) -8003a038: afc20070 sw v0,112(s8) -8003a03c: afc30074 sw v1,116(s8) -8003a040: 1000000c b 8003a074 <__vsnprintf_internal+0xe68> -8003a044: 00000000 nop - else - arg = va_arg(ap, unsigned long long int); -8003a048: 8fc20114 lw v0,276(s8) -8003a04c: 00000000 nop -8003a050: 24430007 addiu v1,v0,7 -8003a054: 2402fff8 li v0,-8 -8003a058: 00621824 and v1,v1,v0 -8003a05c: 24620008 addiu v0,v1,8 -8003a060: afc20114 sw v0,276(s8) -8003a064: 8c620000 lw v0,0(v1) -8003a068: 8c630004 lw v1,4(v1) -8003a06c: afc20070 sw v0,112(s8) -8003a070: afc30074 sw v1,116(s8) - - get_arg_in_size(argsize, &arg, 0); -8003a074: 27c20070 addiu v0,s8,112 -8003a078: 00003021 move a2,zero -8003a07c: 00402821 move a1,v0 -8003a080: 8fc40030 lw a0,48(s8) -8003a084: 0c00e13a jal 800384e8 -8003a088: 00000000 nop - - if(fmt_pos == 'p') -8003a08c: 8fc3001c lw v1,28(s8) -8003a090: 24020070 li v0,112 -8003a094: 14620005 bne v1,v0,8003a0ac <__vsnprintf_internal+0xea0> -8003a098: 00000000 nop - flags |= SPRINTF_ALT_FLAG; -8003a09c: 8fc2002c lw v0,44(s8) -8003a0a0: 00000000 nop -8003a0a4: 34420001 ori v0,v0,0x1 -8003a0a8: afc2002c sw v0,44(s8) - - if(flags & SPRINTF_ALT_FLAG) -8003a0ac: 8fc2002c lw v0,44(s8) -8003a0b0: 00000000 nop -8003a0b4: 30420001 andi v0,v0,0x1 -8003a0b8: 1040002f beqz v0,8003a178 <__vsnprintf_internal+0xf6c> -8003a0bc: 00000000 nop - { - put_in_string(string, ssz, '0', string_pos++); -8003a0c0: 8fc4004c lw a0,76(s8) -8003a0c4: 8fc30018 lw v1,24(s8) -8003a0c8: 00000000 nop -8003a0cc: 24620001 addiu v0,v1,1 -8003a0d0: afc20018 sw v0,24(s8) -8003a0d4: 8fc20118 lw v0,280(s8) -8003a0d8: 00603821 move a3,v1 -8003a0dc: 24060030 li a2,48 -8003a0e0: 00802821 move a1,a0 -8003a0e4: 8fc40108 lw a0,264(s8) -8003a0e8: 0040f809 jalr v0 -8003a0ec: 00000000 nop - - if(fmt[fmt_pos] == 'X') -8003a0f0: 8fc3001c lw v1,28(s8) -8003a0f4: 8fc20110 lw v0,272(s8) -8003a0f8: 00000000 nop -8003a0fc: 00431021 addu v0,v0,v1 -8003a100: 80430000 lb v1,0(v0) -8003a104: 24020058 li v0,88 -8003a108: 1462000f bne v1,v0,8003a148 <__vsnprintf_internal+0xf3c> -8003a10c: 00000000 nop - put_in_string(string, ssz, 'X', string_pos++); -8003a110: 8fc4004c lw a0,76(s8) -8003a114: 8fc30018 lw v1,24(s8) -8003a118: 00000000 nop -8003a11c: 24620001 addiu v0,v1,1 -8003a120: afc20018 sw v0,24(s8) -8003a124: 8fc20118 lw v0,280(s8) -8003a128: 00603821 move a3,v1 -8003a12c: 24060058 li a2,88 -8003a130: 00802821 move a1,a0 -8003a134: 8fc40108 lw a0,264(s8) -8003a138: 0040f809 jalr v0 -8003a13c: 00000000 nop -8003a140: 1000000d b 8003a178 <__vsnprintf_internal+0xf6c> -8003a144: 00000000 nop - else - put_in_string(string, ssz, 'x', string_pos++); -8003a148: 8fc4004c lw a0,76(s8) -8003a14c: 8fc30018 lw v1,24(s8) -8003a150: 00000000 nop -8003a154: 24620001 addiu v0,v1,1 -8003a158: afc20018 sw v0,24(s8) -8003a15c: 8fc20118 lw v0,280(s8) -8003a160: 00603821 move a3,v1 -8003a164: 24060078 li a2,120 -8003a168: 00802821 move a1,a0 -8003a16c: 8fc40108 lw a0,264(s8) -8003a170: 0040f809 jalr v0 -8003a174: 00000000 nop - } - - calculate_real_padding_hex(); -8003a178: afc0005c sw zero,92(s8) -8003a17c: afc00034 sw zero,52(s8) -8003a180: 10000026 b 8003a21c <__vsnprintf_internal+0x1010> -8003a184: 00000000 nop -8003a188: 8fc40070 lw a0,112(s8) -8003a18c: 8fc50074 lw a1,116(s8) -8003a190: 8fc20034 lw v0,52(s8) -8003a194: 00000000 nop -8003a198: 00021880 sll v1,v0,0x2 -8003a19c: 30620020 andi v0,v1,0x20 -8003a1a0: 10400005 beqz v0,8003a1b8 <__vsnprintf_internal+0xfac> -8003a1a4: 00000000 nop -8003a1a8: 00658006 srlv s0,a1,v1 -8003a1ac: 00008821 move s1,zero -8003a1b0: 10000008 b 8003a1d4 <__vsnprintf_internal+0xfc8> -8003a1b4: 00000000 nop -8003a1b8: 00053040 sll a2,a1,0x1 -8003a1bc: 2402ffff li v0,-1 -8003a1c0: 00621026 xor v0,v1,v0 -8003a1c4: 00461004 sllv v0,a2,v0 -8003a1c8: 00648006 srlv s0,a0,v1 -8003a1cc: 00508025 or s0,v0,s0 -8003a1d0: 00658806 srlv s1,a1,v1 -8003a1d4: 3202000f andi v0,s0,0xf -8003a1d8: afc200c0 sw v0,192(s8) -8003a1dc: 32220000 andi v0,s1,0x0 -8003a1e0: afc200c4 sw v0,196(s8) -8003a1e4: 8fc400c0 lw a0,192(s8) -8003a1e8: 8fc500c4 lw a1,196(s8) -8003a1ec: 00801021 move v0,a0 -8003a1f0: 00a01821 move v1,a1 -8003a1f4: 00431025 or v0,v0,v1 -8003a1f8: 10400004 beqz v0,8003a20c <__vsnprintf_internal+0x1000> -8003a1fc: 00000000 nop -8003a200: 8fc20034 lw v0,52(s8) -8003a204: 00000000 nop -8003a208: afc2005c sw v0,92(s8) -8003a20c: 8fc20034 lw v0,52(s8) -8003a210: 00000000 nop -8003a214: 24420001 addiu v0,v0,1 -8003a218: afc20034 sw v0,52(s8) -8003a21c: 8fc20034 lw v0,52(s8) -8003a220: 00000000 nop -8003a224: 28420010 slti v0,v0,16 -8003a228: 1440ffd7 bnez v0,8003a188 <__vsnprintf_internal+0xf7c> -8003a22c: 00000000 nop -8003a230: 8fc20054 lw v0,84(s8) -8003a234: 00000000 nop -8003a238: 2443ffff addiu v1,v0,-1 -8003a23c: 8fc2005c lw v0,92(s8) -8003a240: 00000000 nop -8003a244: 00621023 subu v0,v1,v0 -8003a248: afc20054 sw v0,84(s8) -8003a24c: 8fc20054 lw v0,84(s8) -8003a250: 00000000 nop -8003a254: 04410002 bgez v0,8003a260 <__vsnprintf_internal+0x1054> -8003a258: 00000000 nop -8003a25c: afc00054 sw zero,84(s8) - write_padding(); -8003a260: 8fc2002c lw v0,44(s8) -8003a264: 00000000 nop -8003a268: 30420004 andi v0,v0,0x4 -8003a26c: 1440002d bnez v0,8003a324 <__vsnprintf_internal+0x1118> -8003a270: 00000000 nop -8003a274: afc00034 sw zero,52(s8) -8003a278: 10000024 b 8003a30c <__vsnprintf_internal+0x1100> -8003a27c: 00000000 nop -8003a280: 8fc2002c lw v0,44(s8) -8003a284: 00000000 nop -8003a288: 30420002 andi v0,v0,0x2 -8003a28c: 1040000f beqz v0,8003a2cc <__vsnprintf_internal+0x10c0> -8003a290: 00000000 nop -8003a294: 8fc4004c lw a0,76(s8) -8003a298: 8fc30018 lw v1,24(s8) -8003a29c: 00000000 nop -8003a2a0: 24620001 addiu v0,v1,1 -8003a2a4: afc20018 sw v0,24(s8) -8003a2a8: 8fc20118 lw v0,280(s8) -8003a2ac: 00603821 move a3,v1 -8003a2b0: 24060030 li a2,48 -8003a2b4: 00802821 move a1,a0 -8003a2b8: 8fc40108 lw a0,264(s8) -8003a2bc: 0040f809 jalr v0 -8003a2c0: 00000000 nop -8003a2c4: 1000000d b 8003a2fc <__vsnprintf_internal+0x10f0> -8003a2c8: 00000000 nop -8003a2cc: 8fc4004c lw a0,76(s8) -8003a2d0: 8fc30018 lw v1,24(s8) -8003a2d4: 00000000 nop -8003a2d8: 24620001 addiu v0,v1,1 -8003a2dc: afc20018 sw v0,24(s8) -8003a2e0: 8fc20118 lw v0,280(s8) -8003a2e4: 00603821 move a3,v1 -8003a2e8: 24060020 li a2,32 -8003a2ec: 00802821 move a1,a0 -8003a2f0: 8fc40108 lw a0,264(s8) -8003a2f4: 0040f809 jalr v0 -8003a2f8: 00000000 nop -8003a2fc: 8fc20034 lw v0,52(s8) -8003a300: 00000000 nop -8003a304: 24420001 addiu v0,v0,1 -8003a308: afc20034 sw v0,52(s8) -8003a30c: 8fc30034 lw v1,52(s8) -8003a310: 8fc20054 lw v0,84(s8) -8003a314: 00000000 nop -8003a318: 0062102a slt v0,v1,v0 -8003a31c: 1440ffd8 bnez v0,8003a280 <__vsnprintf_internal+0x1074> -8003a320: 00000000 nop - - for(x=15;x>=0;x--) -8003a324: 2402000f li v0,15 -8003a328: afc20034 sw v0,52(s8) -8003a32c: 10000085 b 8003a544 <__vsnprintf_internal+0x1338> -8003a330: 00000000 nop - { - y = arg >> (x << 2); -8003a334: 8fc40070 lw a0,112(s8) -8003a338: 8fc50074 lw a1,116(s8) -8003a33c: 8fc20034 lw v0,52(s8) -8003a340: 00000000 nop -8003a344: 00021880 sll v1,v0,0x2 -8003a348: 30620020 andi v0,v1,0x20 -8003a34c: 10400005 beqz v0,8003a364 <__vsnprintf_internal+0x1158> -8003a350: 00000000 nop -8003a354: 00659006 srlv s2,a1,v1 -8003a358: 00009821 move s3,zero -8003a35c: 10000008 b 8003a380 <__vsnprintf_internal+0x1174> -8003a360: 00000000 nop -8003a364: 00053040 sll a2,a1,0x1 -8003a368: 2402ffff li v0,-1 -8003a36c: 00621026 xor v0,v1,v0 -8003a370: 00461004 sllv v0,a2,v0 -8003a374: 00649006 srlv s2,a0,v1 -8003a378: 00529025 or s2,v0,s2 -8003a37c: 00659806 srlv s3,a1,v1 -8003a380: afd20038 sw s2,56(s8) - y &= 0xf; -8003a384: 8fc20038 lw v0,56(s8) -8003a388: 00000000 nop -8003a38c: 3042000f andi v0,v0,0xf -8003a390: afc20038 sw v0,56(s8) - - if(y>=1) -8003a394: 8fc20038 lw v0,56(s8) -8003a398: 00000000 nop -8003a39c: 18400002 blez v0,8003a3a8 <__vsnprintf_internal+0x119c> -8003a3a0: 00000000 nop - empty_digit = 0; -8003a3a4: afc00048 sw zero,72(s8) - - if(empty_digit == 0 || x == 0) -8003a3a8: 8fc20048 lw v0,72(s8) -8003a3ac: 00000000 nop -8003a3b0: 10400005 beqz v0,8003a3c8 <__vsnprintf_internal+0x11bc> -8003a3b4: 00000000 nop -8003a3b8: 8fc20034 lw v0,52(s8) -8003a3bc: 00000000 nop -8003a3c0: 1440005c bnez v0,8003a534 <__vsnprintf_internal+0x1328> -8003a3c4: 00000000 nop - { - if(y>=0 && y<=9) -8003a3c8: 8fc20038 lw v0,56(s8) -8003a3cc: 00000000 nop -8003a3d0: 0440001c bltz v0,8003a444 <__vsnprintf_internal+0x1238> -8003a3d4: 00000000 nop -8003a3d8: 8fc20038 lw v0,56(s8) -8003a3dc: 00000000 nop -8003a3e0: 2842000a slti v0,v0,10 -8003a3e4: 10400017 beqz v0,8003a444 <__vsnprintf_internal+0x1238> -8003a3e8: 00000000 nop - put_in_string(string, ssz, y + '0', string_pos++); -8003a3ec: 8fc4004c lw a0,76(s8) -8003a3f0: 8fc20038 lw v0,56(s8) -8003a3f4: 00000000 nop -8003a3f8: 304200ff andi v0,v0,0xff -8003a3fc: 24420030 addiu v0,v0,48 -8003a400: 304200ff andi v0,v0,0xff -8003a404: 00021600 sll v0,v0,0x18 -8003a408: 00021603 sra v0,v0,0x18 -8003a40c: 00402821 move a1,v0 -8003a410: 8fc30018 lw v1,24(s8) -8003a414: 00000000 nop -8003a418: 24620001 addiu v0,v1,1 -8003a41c: afc20018 sw v0,24(s8) -8003a420: 8fc20118 lw v0,280(s8) -8003a424: 00603821 move a3,v1 -8003a428: 00a03021 move a2,a1 -8003a42c: 00802821 move a1,a0 -8003a430: 8fc40108 lw a0,264(s8) -8003a434: 0040f809 jalr v0 -8003a438: 00000000 nop -8003a43c: 1000003d b 8003a534 <__vsnprintf_internal+0x1328> -8003a440: 00000000 nop - else if(y>=0xA && y<=0xF) -8003a444: 8fc20038 lw v0,56(s8) -8003a448: 00000000 nop -8003a44c: 2842000a slti v0,v0,10 -8003a450: 14400038 bnez v0,8003a534 <__vsnprintf_internal+0x1328> -8003a454: 00000000 nop -8003a458: 8fc20038 lw v0,56(s8) -8003a45c: 00000000 nop -8003a460: 28420010 slti v0,v0,16 -8003a464: 10400033 beqz v0,8003a534 <__vsnprintf_internal+0x1328> -8003a468: 00000000 nop - { - if(fmt[fmt_pos] == 'X') -8003a46c: 8fc3001c lw v1,28(s8) -8003a470: 8fc20110 lw v0,272(s8) -8003a474: 00000000 nop -8003a478: 00431021 addu v0,v0,v1 -8003a47c: 80430000 lb v1,0(v0) -8003a480: 24020058 li v0,88 -8003a484: 14620017 bne v1,v0,8003a4e4 <__vsnprintf_internal+0x12d8> -8003a488: 00000000 nop - put_in_string(string, ssz, (y - 0xa) + 'A', string_pos++); -8003a48c: 8fc4004c lw a0,76(s8) -8003a490: 8fc20038 lw v0,56(s8) -8003a494: 00000000 nop -8003a498: 304200ff andi v0,v0,0xff -8003a49c: 24420037 addiu v0,v0,55 -8003a4a0: 304200ff andi v0,v0,0xff -8003a4a4: 00021600 sll v0,v0,0x18 -8003a4a8: 00021603 sra v0,v0,0x18 -8003a4ac: 00402821 move a1,v0 -8003a4b0: 8fc30018 lw v1,24(s8) -8003a4b4: 00000000 nop -8003a4b8: 24620001 addiu v0,v1,1 -8003a4bc: afc20018 sw v0,24(s8) -8003a4c0: 8fc20118 lw v0,280(s8) -8003a4c4: 00603821 move a3,v1 -8003a4c8: 00a03021 move a2,a1 -8003a4cc: 00802821 move a1,a0 -8003a4d0: 8fc40108 lw a0,264(s8) -8003a4d4: 0040f809 jalr v0 -8003a4d8: 00000000 nop -8003a4dc: 10000015 b 8003a534 <__vsnprintf_internal+0x1328> -8003a4e0: 00000000 nop - else - put_in_string(string, ssz, (y - 0xa) + 'a', string_pos++); -8003a4e4: 8fc4004c lw a0,76(s8) -8003a4e8: 8fc20038 lw v0,56(s8) -8003a4ec: 00000000 nop -8003a4f0: 304200ff andi v0,v0,0xff -8003a4f4: 24420057 addiu v0,v0,87 -8003a4f8: 304200ff andi v0,v0,0xff -8003a4fc: 00021600 sll v0,v0,0x18 -8003a500: 00021603 sra v0,v0,0x18 -8003a504: 00402821 move a1,v0 -8003a508: 8fc30018 lw v1,24(s8) -8003a50c: 00000000 nop -8003a510: 24620001 addiu v0,v1,1 -8003a514: afc20018 sw v0,24(s8) -8003a518: 8fc20118 lw v0,280(s8) -8003a51c: 00603821 move a3,v1 -8003a520: 00a03021 move a2,a1 -8003a524: 00802821 move a1,a0 -8003a528: 8fc40108 lw a0,264(s8) -8003a52c: 0040f809 jalr v0 -8003a530: 00000000 nop - } - - calculate_real_padding_hex(); - write_padding(); - - for(x=15;x>=0;x--) -8003a534: 8fc20034 lw v0,52(s8) -8003a538: 00000000 nop -8003a53c: 2442ffff addiu v0,v0,-1 -8003a540: afc20034 sw v0,52(s8) -8003a544: 8fc20034 lw v0,52(s8) -8003a548: 00000000 nop -8003a54c: 0441ff79 bgez v0,8003a334 <__vsnprintf_internal+0x1128> -8003a550: 00000000 nop - put_in_string(string, ssz, (y - 0xa) + 'a', string_pos++); - } - } - } - - write_neg_padding(); -8003a554: 8fc2002c lw v0,44(s8) -8003a558: 00000000 nop -8003a55c: 30420004 andi v0,v0,0x4 -8003a560: 1040001a beqz v0,8003a5cc <__vsnprintf_internal+0x13c0> -8003a564: 00000000 nop -8003a568: afc00034 sw zero,52(s8) -8003a56c: 10000011 b 8003a5b4 <__vsnprintf_internal+0x13a8> -8003a570: 00000000 nop -8003a574: 8fc4004c lw a0,76(s8) -8003a578: 8fc30018 lw v1,24(s8) -8003a57c: 00000000 nop -8003a580: 24620001 addiu v0,v1,1 -8003a584: afc20018 sw v0,24(s8) -8003a588: 8fc20118 lw v0,280(s8) -8003a58c: 00603821 move a3,v1 -8003a590: 24060020 li a2,32 -8003a594: 00802821 move a1,a0 -8003a598: 8fc40108 lw a0,264(s8) -8003a59c: 0040f809 jalr v0 -8003a5a0: 00000000 nop -8003a5a4: 8fc20034 lw v0,52(s8) -8003a5a8: 00000000 nop -8003a5ac: 24420001 addiu v0,v0,1 -8003a5b0: afc20034 sw v0,52(s8) -8003a5b4: 8fc30034 lw v1,52(s8) -8003a5b8: 8fc20054 lw v0,84(s8) -8003a5bc: 00000000 nop -8003a5c0: 0062102a slt v0,v1,v0 -8003a5c4: 1440ffeb bnez v0,8003a574 <__vsnprintf_internal+0x1368> -8003a5c8: 00000000 nop - - directive_coming = 0; -8003a5cc: afc00028 sw zero,40(s8) - break; -8003a5d0: 100002a9 b 8003b078 <__vsnprintf_internal+0x1e6c> -8003a5d4: 00000000 nop - case 'c': // character - arg = va_arg(ap, int); -8003a5d8: 8fc30114 lw v1,276(s8) -8003a5dc: 00000000 nop -8003a5e0: 24620004 addiu v0,v1,4 -8003a5e4: afc20114 sw v0,276(s8) -8003a5e8: 8c620000 lw v0,0(v1) -8003a5ec: 00000000 nop -8003a5f0: afc200c8 sw v0,200(s8) -8003a5f4: 000217c3 sra v0,v0,0x1f -8003a5f8: afc200cc sw v0,204(s8) -8003a5fc: 8fc200c8 lw v0,200(s8) -8003a600: 8fc300cc lw v1,204(s8) -8003a604: afc20070 sw v0,112(s8) -8003a608: afc30074 sw v1,116(s8) - - put_in_string(string, ssz, arg & 0xff, string_pos++); -8003a60c: 8fc4004c lw a0,76(s8) -8003a610: 8fc20070 lw v0,112(s8) -8003a614: 8fc30074 lw v1,116(s8) -8003a618: 00021600 sll v0,v0,0x18 -8003a61c: 00021603 sra v0,v0,0x18 -8003a620: 00402821 move a1,v0 -8003a624: 8fc30018 lw v1,24(s8) -8003a628: 00000000 nop -8003a62c: 24620001 addiu v0,v1,1 -8003a630: afc20018 sw v0,24(s8) -8003a634: 8fc20118 lw v0,280(s8) -8003a638: 00603821 move a3,v1 -8003a63c: 00a03021 move a2,a1 -8003a640: 00802821 move a1,a0 -8003a644: 8fc40108 lw a0,264(s8) -8003a648: 0040f809 jalr v0 -8003a64c: 00000000 nop - - directive_coming = 0; -8003a650: afc00028 sw zero,40(s8) - break; -8003a654: 10000288 b 8003b078 <__vsnprintf_internal+0x1e6c> -8003a658: 00000000 nop - case 's': // string - argcp = va_arg(ap, char *); -8003a65c: 8fc30114 lw v1,276(s8) -8003a660: 00000000 nop -8003a664: 24620004 addiu v0,v1,4 -8003a668: afc20114 sw v0,276(s8) -8003a66c: 8c620000 lw v0,0(v1) -8003a670: 00000000 nop -8003a674: afc20020 sw v0,32(s8) - argcp_tmp = argcp; -8003a678: 8fc20020 lw v0,32(s8) -8003a67c: 00000000 nop -8003a680: afc20024 sw v0,36(s8) - - if(argcp == NULL) -8003a684: 8fc20020 lw v0,32(s8) -8003a688: 00000000 nop -8003a68c: 14400058 bnez v0,8003a7f0 <__vsnprintf_internal+0x15e4> -8003a690: 00000000 nop - { - // Non standard extension, but supported by Linux and the BSDs. - - put_in_string(string, ssz, '(', string_pos++); -8003a694: 8fc4004c lw a0,76(s8) -8003a698: 8fc30018 lw v1,24(s8) -8003a69c: 00000000 nop -8003a6a0: 24620001 addiu v0,v1,1 -8003a6a4: afc20018 sw v0,24(s8) -8003a6a8: 8fc20118 lw v0,280(s8) -8003a6ac: 00603821 move a3,v1 -8003a6b0: 24060028 li a2,40 -8003a6b4: 00802821 move a1,a0 -8003a6b8: 8fc40108 lw a0,264(s8) -8003a6bc: 0040f809 jalr v0 -8003a6c0: 00000000 nop - put_in_string(string, ssz, 'n', string_pos++); -8003a6c4: 8fc4004c lw a0,76(s8) -8003a6c8: 8fc30018 lw v1,24(s8) -8003a6cc: 00000000 nop -8003a6d0: 24620001 addiu v0,v1,1 -8003a6d4: afc20018 sw v0,24(s8) -8003a6d8: 8fc20118 lw v0,280(s8) -8003a6dc: 00603821 move a3,v1 -8003a6e0: 2406006e li a2,110 -8003a6e4: 00802821 move a1,a0 -8003a6e8: 8fc40108 lw a0,264(s8) -8003a6ec: 0040f809 jalr v0 -8003a6f0: 00000000 nop - put_in_string(string, ssz, 'u', string_pos++); -8003a6f4: 8fc4004c lw a0,76(s8) -8003a6f8: 8fc30018 lw v1,24(s8) -8003a6fc: 00000000 nop -8003a700: 24620001 addiu v0,v1,1 -8003a704: afc20018 sw v0,24(s8) -8003a708: 8fc20118 lw v0,280(s8) -8003a70c: 00603821 move a3,v1 -8003a710: 24060075 li a2,117 -8003a714: 00802821 move a1,a0 -8003a718: 8fc40108 lw a0,264(s8) -8003a71c: 0040f809 jalr v0 -8003a720: 00000000 nop - put_in_string(string, ssz, 'l', string_pos++); -8003a724: 8fc4004c lw a0,76(s8) -8003a728: 8fc30018 lw v1,24(s8) -8003a72c: 00000000 nop -8003a730: 24620001 addiu v0,v1,1 -8003a734: afc20018 sw v0,24(s8) -8003a738: 8fc20118 lw v0,280(s8) -8003a73c: 00603821 move a3,v1 -8003a740: 2406006c li a2,108 -8003a744: 00802821 move a1,a0 -8003a748: 8fc40108 lw a0,264(s8) -8003a74c: 0040f809 jalr v0 -8003a750: 00000000 nop - put_in_string(string, ssz, 'l', string_pos++); -8003a754: 8fc4004c lw a0,76(s8) -8003a758: 8fc30018 lw v1,24(s8) -8003a75c: 00000000 nop -8003a760: 24620001 addiu v0,v1,1 -8003a764: afc20018 sw v0,24(s8) -8003a768: 8fc20118 lw v0,280(s8) -8003a76c: 00603821 move a3,v1 -8003a770: 2406006c li a2,108 -8003a774: 00802821 move a1,a0 -8003a778: 8fc40108 lw a0,264(s8) -8003a77c: 0040f809 jalr v0 -8003a780: 00000000 nop - put_in_string(string, ssz, ')', string_pos++); -8003a784: 8fc4004c lw a0,76(s8) -8003a788: 8fc30018 lw v1,24(s8) -8003a78c: 00000000 nop -8003a790: 24620001 addiu v0,v1,1 -8003a794: afc20018 sw v0,24(s8) -8003a798: 8fc20118 lw v0,280(s8) -8003a79c: 00603821 move a3,v1 -8003a7a0: 24060029 li a2,41 -8003a7a4: 00802821 move a1,a0 -8003a7a8: 8fc40108 lw a0,264(s8) -8003a7ac: 0040f809 jalr v0 -8003a7b0: 00000000 nop - - directive_coming = 0; -8003a7b4: afc00028 sw zero,40(s8) - break; -8003a7b8: 1000022f b 8003b078 <__vsnprintf_internal+0x1e6c> -8003a7bc: 00000000 nop - } - - while(*argcp_tmp) - { - if(pad_quantity > 0) pad_quantity--; -8003a7c0: 8fc20054 lw v0,84(s8) -8003a7c4: 00000000 nop -8003a7c8: 18400005 blez v0,8003a7e0 <__vsnprintf_internal+0x15d4> -8003a7cc: 00000000 nop -8003a7d0: 8fc20054 lw v0,84(s8) -8003a7d4: 00000000 nop -8003a7d8: 2442ffff addiu v0,v0,-1 -8003a7dc: afc20054 sw v0,84(s8) - argcp_tmp++; -8003a7e0: 8fc20024 lw v0,36(s8) -8003a7e4: 00000000 nop -8003a7e8: 24420001 addiu v0,v0,1 -8003a7ec: afc20024 sw v0,36(s8) - - directive_coming = 0; - break; - } - - while(*argcp_tmp) -8003a7f0: 8fc20024 lw v0,36(s8) -8003a7f4: 00000000 nop -8003a7f8: 80420000 lb v0,0(v0) -8003a7fc: 00000000 nop -8003a800: 1440ffef bnez v0,8003a7c0 <__vsnprintf_internal+0x15b4> -8003a804: 00000000 nop - { - if(pad_quantity > 0) pad_quantity--; - argcp_tmp++; - } - - if(!(flags & SPRINTF_NEGFIELD_FLAG)) -8003a808: 8fc2002c lw v0,44(s8) -8003a80c: 00000000 nop -8003a810: 30420004 andi v0,v0,0x4 -8003a814: 1440002e bnez v0,8003a8d0 <__vsnprintf_internal+0x16c4> -8003a818: 00000000 nop - { - while(pad_quantity > 0) -8003a81c: 10000011 b 8003a864 <__vsnprintf_internal+0x1658> -8003a820: 00000000 nop - { - put_in_string(string,ssz, ' ', string_pos++); -8003a824: 8fc4004c lw a0,76(s8) -8003a828: 8fc30018 lw v1,24(s8) -8003a82c: 00000000 nop -8003a830: 24620001 addiu v0,v1,1 -8003a834: afc20018 sw v0,24(s8) -8003a838: 8fc20118 lw v0,280(s8) -8003a83c: 00603821 move a3,v1 -8003a840: 24060020 li a2,32 -8003a844: 00802821 move a1,a0 -8003a848: 8fc40108 lw a0,264(s8) -8003a84c: 0040f809 jalr v0 -8003a850: 00000000 nop - pad_quantity--; -8003a854: 8fc20054 lw v0,84(s8) -8003a858: 00000000 nop -8003a85c: 2442ffff addiu v0,v0,-1 -8003a860: afc20054 sw v0,84(s8) - argcp_tmp++; - } - - if(!(flags & SPRINTF_NEGFIELD_FLAG)) - { - while(pad_quantity > 0) -8003a864: 8fc20054 lw v0,84(s8) -8003a868: 00000000 nop -8003a86c: 1c40ffed bgtz v0,8003a824 <__vsnprintf_internal+0x1618> -8003a870: 00000000 nop - put_in_string(string,ssz, ' ', string_pos++); - pad_quantity--; - } - } - - while(*argcp) -8003a874: 10000016 b 8003a8d0 <__vsnprintf_internal+0x16c4> -8003a878: 00000000 nop - { - put_in_string(string, ssz, *argcp, string_pos++); -8003a87c: 8fc4004c lw a0,76(s8) -8003a880: 8fc20020 lw v0,32(s8) -8003a884: 00000000 nop -8003a888: 80420000 lb v0,0(v0) -8003a88c: 00000000 nop -8003a890: 00402821 move a1,v0 -8003a894: 8fc30018 lw v1,24(s8) -8003a898: 00000000 nop -8003a89c: 24620001 addiu v0,v1,1 -8003a8a0: afc20018 sw v0,24(s8) -8003a8a4: 8fc20118 lw v0,280(s8) -8003a8a8: 00603821 move a3,v1 -8003a8ac: 00a03021 move a2,a1 -8003a8b0: 00802821 move a1,a0 -8003a8b4: 8fc40108 lw a0,264(s8) -8003a8b8: 0040f809 jalr v0 -8003a8bc: 00000000 nop - - argcp++; -8003a8c0: 8fc20020 lw v0,32(s8) -8003a8c4: 00000000 nop -8003a8c8: 24420001 addiu v0,v0,1 -8003a8cc: afc20020 sw v0,32(s8) - put_in_string(string,ssz, ' ', string_pos++); - pad_quantity--; - } - } - - while(*argcp) -8003a8d0: 8fc20020 lw v0,32(s8) -8003a8d4: 00000000 nop -8003a8d8: 80420000 lb v0,0(v0) -8003a8dc: 00000000 nop -8003a8e0: 1440ffe6 bnez v0,8003a87c <__vsnprintf_internal+0x1670> -8003a8e4: 00000000 nop - put_in_string(string, ssz, *argcp, string_pos++); - - argcp++; - } - - if(flags & SPRINTF_NEGFIELD_FLAG) -8003a8e8: 8fc2002c lw v0,44(s8) -8003a8ec: 00000000 nop -8003a8f0: 30420004 andi v0,v0,0x4 -8003a8f4: 10400017 beqz v0,8003a954 <__vsnprintf_internal+0x1748> -8003a8f8: 00000000 nop - { - while(pad_quantity > 0) -8003a8fc: 10000011 b 8003a944 <__vsnprintf_internal+0x1738> -8003a900: 00000000 nop - { - put_in_string(string,ssz, ' ', string_pos++); -8003a904: 8fc4004c lw a0,76(s8) -8003a908: 8fc30018 lw v1,24(s8) -8003a90c: 00000000 nop -8003a910: 24620001 addiu v0,v1,1 -8003a914: afc20018 sw v0,24(s8) -8003a918: 8fc20118 lw v0,280(s8) -8003a91c: 00603821 move a3,v1 -8003a920: 24060020 li a2,32 -8003a924: 00802821 move a1,a0 -8003a928: 8fc40108 lw a0,264(s8) -8003a92c: 0040f809 jalr v0 -8003a930: 00000000 nop - pad_quantity--; -8003a934: 8fc20054 lw v0,84(s8) -8003a938: 00000000 nop -8003a93c: 2442ffff addiu v0,v0,-1 -8003a940: afc20054 sw v0,84(s8) - argcp++; - } - - if(flags & SPRINTF_NEGFIELD_FLAG) - { - while(pad_quantity > 0) -8003a944: 8fc20054 lw v0,84(s8) -8003a948: 00000000 nop -8003a94c: 1c40ffed bgtz v0,8003a904 <__vsnprintf_internal+0x16f8> -8003a950: 00000000 nop - put_in_string(string,ssz, ' ', string_pos++); - pad_quantity--; - } - } - - directive_coming = 0; -8003a954: afc00028 sw zero,40(s8) - break; -8003a958: 100001c7 b 8003b078 <__vsnprintf_internal+0x1e6c> -8003a95c: 00000000 nop - case 'o': // Octal - empty_digit = 1; -8003a960: 24020001 li v0,1 -8003a964: afc20048 sw v0,72(s8) - - if(argsize < SPRINTF_SIZE_LONG_LONG) -8003a968: 8fc20030 lw v0,48(s8) -8003a96c: 00000000 nop -8003a970: 28420004 slti v0,v0,4 -8003a974: 1040000f beqz v0,8003a9b4 <__vsnprintf_internal+0x17a8> -8003a978: 00000000 nop - arg = (unsigned long long)va_arg(ap, unsigned int); -8003a97c: 8fc30114 lw v1,276(s8) -8003a980: 00000000 nop -8003a984: 24620004 addiu v0,v1,4 -8003a988: afc20114 sw v0,276(s8) -8003a98c: 8c620000 lw v0,0(v1) -8003a990: 00000000 nop -8003a994: afc200d0 sw v0,208(s8) -8003a998: afc000d4 sw zero,212(s8) -8003a99c: 8fc200d0 lw v0,208(s8) -8003a9a0: 8fc300d4 lw v1,212(s8) -8003a9a4: afc20070 sw v0,112(s8) -8003a9a8: afc30074 sw v1,116(s8) -8003a9ac: 1000000c b 8003a9e0 <__vsnprintf_internal+0x17d4> -8003a9b0: 00000000 nop - else - arg = va_arg(ap, unsigned long long); -8003a9b4: 8fc20114 lw v0,276(s8) -8003a9b8: 00000000 nop -8003a9bc: 24430007 addiu v1,v0,7 -8003a9c0: 2402fff8 li v0,-8 -8003a9c4: 00621824 and v1,v1,v0 -8003a9c8: 24620008 addiu v0,v1,8 -8003a9cc: afc20114 sw v0,276(s8) -8003a9d0: 8c620000 lw v0,0(v1) -8003a9d4: 8c630004 lw v1,4(v1) -8003a9d8: afc20070 sw v0,112(s8) -8003a9dc: afc30074 sw v1,116(s8) - - for(x=21;x>=0;x--) -8003a9e0: 24020015 li v0,21 -8003a9e4: afc20034 sw v0,52(s8) -8003a9e8: 10000040 b 8003aaec <__vsnprintf_internal+0x18e0> -8003a9ec: 00000000 nop - { - y = arg >> (x * 3); -8003a9f0: 8fc40070 lw a0,112(s8) -8003a9f4: 8fc50074 lw a1,116(s8) -8003a9f8: 8fc30034 lw v1,52(s8) -8003a9fc: 00000000 nop -8003aa00: 00601021 move v0,v1 -8003aa04: 00021040 sll v0,v0,0x1 -8003aa08: 00431821 addu v1,v0,v1 -8003aa0c: 30620020 andi v0,v1,0x20 -8003aa10: 10400005 beqz v0,8003aa28 <__vsnprintf_internal+0x181c> -8003aa14: 00000000 nop -8003aa18: 0065a006 srlv s4,a1,v1 -8003aa1c: 0000a821 move s5,zero -8003aa20: 10000008 b 8003aa44 <__vsnprintf_internal+0x1838> -8003aa24: 00000000 nop -8003aa28: 00053040 sll a2,a1,0x1 -8003aa2c: 2402ffff li v0,-1 -8003aa30: 00621026 xor v0,v1,v0 -8003aa34: 00461004 sllv v0,a2,v0 -8003aa38: 0064a006 srlv s4,a0,v1 -8003aa3c: 0054a025 or s4,v0,s4 -8003aa40: 0065a806 srlv s5,a1,v1 -8003aa44: afd40038 sw s4,56(s8) - y &= 0x7; -8003aa48: 8fc20038 lw v0,56(s8) -8003aa4c: 00000000 nop -8003aa50: 30420007 andi v0,v0,0x7 -8003aa54: afc20038 sw v0,56(s8) - - if(y>=1) -8003aa58: 8fc20038 lw v0,56(s8) -8003aa5c: 00000000 nop -8003aa60: 18400002 blez v0,8003aa6c <__vsnprintf_internal+0x1860> -8003aa64: 00000000 nop - empty_digit = 0; -8003aa68: afc00048 sw zero,72(s8) - - if(empty_digit == 0 || x == 0) -8003aa6c: 8fc20048 lw v0,72(s8) -8003aa70: 00000000 nop -8003aa74: 10400005 beqz v0,8003aa8c <__vsnprintf_internal+0x1880> -8003aa78: 00000000 nop -8003aa7c: 8fc20034 lw v0,52(s8) -8003aa80: 00000000 nop -8003aa84: 14400015 bnez v0,8003aadc <__vsnprintf_internal+0x18d0> -8003aa88: 00000000 nop - put_in_string(string, ssz, y + '0', string_pos++); -8003aa8c: 8fc4004c lw a0,76(s8) -8003aa90: 8fc20038 lw v0,56(s8) -8003aa94: 00000000 nop -8003aa98: 304200ff andi v0,v0,0xff -8003aa9c: 24420030 addiu v0,v0,48 -8003aaa0: 304200ff andi v0,v0,0xff -8003aaa4: 00021600 sll v0,v0,0x18 -8003aaa8: 00021603 sra v0,v0,0x18 -8003aaac: 00402821 move a1,v0 -8003aab0: 8fc30018 lw v1,24(s8) -8003aab4: 00000000 nop -8003aab8: 24620001 addiu v0,v1,1 -8003aabc: afc20018 sw v0,24(s8) -8003aac0: 8fc20118 lw v0,280(s8) -8003aac4: 00603821 move a3,v1 -8003aac8: 00a03021 move a2,a1 -8003aacc: 00802821 move a1,a0 -8003aad0: 8fc40108 lw a0,264(s8) -8003aad4: 0040f809 jalr v0 -8003aad8: 00000000 nop - if(argsize < SPRINTF_SIZE_LONG_LONG) - arg = (unsigned long long)va_arg(ap, unsigned int); - else - arg = va_arg(ap, unsigned long long); - - for(x=21;x>=0;x--) -8003aadc: 8fc20034 lw v0,52(s8) -8003aae0: 00000000 nop -8003aae4: 2442ffff addiu v0,v0,-1 -8003aae8: afc20034 sw v0,52(s8) -8003aaec: 8fc20034 lw v0,52(s8) -8003aaf0: 00000000 nop -8003aaf4: 0441ffbe bgez v0,8003a9f0 <__vsnprintf_internal+0x17e4> -8003aaf8: 00000000 nop - - if(empty_digit == 0 || x == 0) - put_in_string(string, ssz, y + '0', string_pos++); - } - - directive_coming = 0; -8003aafc: afc00028 sw zero,40(s8) - break; -8003ab00: 1000015d b 8003b078 <__vsnprintf_internal+0x1e6c> -8003ab04: 00000000 nop - case '@': // Binary - empty_digit = 1; -8003ab08: 24020001 li v0,1 -8003ab0c: afc20048 sw v0,72(s8) - - if(argsize < SPRINTF_SIZE_LONG_LONG) -8003ab10: 8fc20030 lw v0,48(s8) -8003ab14: 00000000 nop -8003ab18: 28420004 slti v0,v0,4 -8003ab1c: 1040000f beqz v0,8003ab5c <__vsnprintf_internal+0x1950> -8003ab20: 00000000 nop - arg = (unsigned long long)va_arg(ap, unsigned int); -8003ab24: 8fc30114 lw v1,276(s8) -8003ab28: 00000000 nop -8003ab2c: 24620004 addiu v0,v1,4 -8003ab30: afc20114 sw v0,276(s8) -8003ab34: 8c620000 lw v0,0(v1) -8003ab38: 00000000 nop -8003ab3c: afc200d8 sw v0,216(s8) -8003ab40: afc000dc sw zero,220(s8) -8003ab44: 8fc200d8 lw v0,216(s8) -8003ab48: 8fc300dc lw v1,220(s8) -8003ab4c: afc20070 sw v0,112(s8) -8003ab50: afc30074 sw v1,116(s8) -8003ab54: 1000000c b 8003ab88 <__vsnprintf_internal+0x197c> -8003ab58: 00000000 nop - else - arg = va_arg(ap, unsigned long long); -8003ab5c: 8fc20114 lw v0,276(s8) -8003ab60: 00000000 nop -8003ab64: 24430007 addiu v1,v0,7 -8003ab68: 2402fff8 li v0,-8 -8003ab6c: 00621824 and v1,v1,v0 -8003ab70: 24620008 addiu v0,v1,8 -8003ab74: afc20114 sw v0,276(s8) -8003ab78: 8c620000 lw v0,0(v1) -8003ab7c: 8c630004 lw v1,4(v1) -8003ab80: afc20070 sw v0,112(s8) -8003ab84: afc30074 sw v1,116(s8) - - for(x=63;x>=0;x--) -8003ab88: 2402003f li v0,63 -8003ab8c: afc20034 sw v0,52(s8) -8003ab90: 10000044 b 8003aca4 <__vsnprintf_internal+0x1a98> -8003ab94: 00000000 nop - { - y = (arg >> x); -8003ab98: 8fc40070 lw a0,112(s8) -8003ab9c: 8fc50074 lw a1,116(s8) -8003aba0: 8fc20034 lw v0,52(s8) -8003aba4: 00000000 nop -8003aba8: 30420020 andi v0,v0,0x20 -8003abac: 10400007 beqz v0,8003abcc <__vsnprintf_internal+0x19c0> -8003abb0: 00000000 nop -8003abb4: 8fc20034 lw v0,52(s8) -8003abb8: 00000000 nop -8003abbc: 0045b006 srlv s6,a1,v0 -8003abc0: 0000b821 move s7,zero -8003abc4: 1000000d b 8003abfc <__vsnprintf_internal+0x19f0> -8003abc8: 00000000 nop -8003abcc: 00053040 sll a2,a1,0x1 -8003abd0: 8fc30034 lw v1,52(s8) -8003abd4: 2402ffff li v0,-1 -8003abd8: 00621026 xor v0,v1,v0 -8003abdc: 00461804 sllv v1,a2,v0 -8003abe0: 8fc20034 lw v0,52(s8) -8003abe4: 00000000 nop -8003abe8: 0044b006 srlv s6,a0,v0 -8003abec: 0076b025 or s6,v1,s6 -8003abf0: 8fc20034 lw v0,52(s8) -8003abf4: 00000000 nop -8003abf8: 0045b806 srlv s7,a1,v0 -8003abfc: afd60038 sw s6,56(s8) - y &= 1; -8003ac00: 8fc20038 lw v0,56(s8) -8003ac04: 00000000 nop -8003ac08: 30420001 andi v0,v0,0x1 -8003ac0c: afc20038 sw v0,56(s8) - - if(y>=1) -8003ac10: 8fc20038 lw v0,56(s8) -8003ac14: 00000000 nop -8003ac18: 18400002 blez v0,8003ac24 <__vsnprintf_internal+0x1a18> -8003ac1c: 00000000 nop - empty_digit = 0; -8003ac20: afc00048 sw zero,72(s8) - - if(empty_digit == 0 || x == 0) -8003ac24: 8fc20048 lw v0,72(s8) -8003ac28: 00000000 nop -8003ac2c: 10400005 beqz v0,8003ac44 <__vsnprintf_internal+0x1a38> -8003ac30: 00000000 nop -8003ac34: 8fc20034 lw v0,52(s8) -8003ac38: 00000000 nop -8003ac3c: 14400015 bnez v0,8003ac94 <__vsnprintf_internal+0x1a88> -8003ac40: 00000000 nop - put_in_string(string, ssz, y + '0', string_pos++); -8003ac44: 8fc4004c lw a0,76(s8) -8003ac48: 8fc20038 lw v0,56(s8) -8003ac4c: 00000000 nop -8003ac50: 304200ff andi v0,v0,0xff -8003ac54: 24420030 addiu v0,v0,48 -8003ac58: 304200ff andi v0,v0,0xff -8003ac5c: 00021600 sll v0,v0,0x18 -8003ac60: 00021603 sra v0,v0,0x18 -8003ac64: 00402821 move a1,v0 -8003ac68: 8fc30018 lw v1,24(s8) -8003ac6c: 00000000 nop -8003ac70: 24620001 addiu v0,v1,1 -8003ac74: afc20018 sw v0,24(s8) -8003ac78: 8fc20118 lw v0,280(s8) -8003ac7c: 00603821 move a3,v1 -8003ac80: 00a03021 move a2,a1 -8003ac84: 00802821 move a1,a0 -8003ac88: 8fc40108 lw a0,264(s8) -8003ac8c: 0040f809 jalr v0 -8003ac90: 00000000 nop - if(argsize < SPRINTF_SIZE_LONG_LONG) - arg = (unsigned long long)va_arg(ap, unsigned int); - else - arg = va_arg(ap, unsigned long long); - - for(x=63;x>=0;x--) -8003ac94: 8fc20034 lw v0,52(s8) -8003ac98: 00000000 nop -8003ac9c: 2442ffff addiu v0,v0,-1 -8003aca0: afc20034 sw v0,52(s8) -8003aca4: 8fc20034 lw v0,52(s8) -8003aca8: 00000000 nop -8003acac: 0441ffba bgez v0,8003ab98 <__vsnprintf_internal+0x198c> -8003acb0: 00000000 nop - - if(empty_digit == 0 || x == 0) - put_in_string(string, ssz, y + '0', string_pos++); - } - - directive_coming = 0; -8003acb4: afc00028 sw zero,40(s8) - break; -8003acb8: 100000ef b 8003b078 <__vsnprintf_internal+0x1e6c> -8003acbc: 00000000 nop - - case 'f': - if(pad_quantity_f == -1) -8003acc0: 8fc30058 lw v1,88(s8) -8003acc4: 2402ffff li v0,-1 -8003acc8: 14620005 bne v1,v0,8003ace0 <__vsnprintf_internal+0x1ad4> -8003accc: 00000000 nop - pad_quantity_f = 6; -8003acd0: 24020006 li v0,6 -8003acd4: afc20058 sw v0,88(s8) -8003acd8: 1000000a b 8003ad04 <__vsnprintf_internal+0x1af8> -8003acdc: 00000000 nop - else - { - x = pad_quantity_f; -8003ace0: 8fc20058 lw v0,88(s8) -8003ace4: 00000000 nop -8003ace8: afc20034 sw v0,52(s8) - pad_quantity_f = pad_quantity; -8003acec: 8fc20054 lw v0,84(s8) -8003acf0: 00000000 nop -8003acf4: afc20058 sw v0,88(s8) - pad_quantity = x; -8003acf8: 8fc20034 lw v0,52(s8) -8003acfc: 00000000 nop -8003ad00: afc20054 sw v0,84(s8) - } - - dprintf("PRECISION = %d\n", pad_quantity_f); - - libc_double_to_string(va_arg(ap, double), libc_sprintf_floatbuf, 64, pad_quantity_f); -8003ad04: 8fc20114 lw v0,276(s8) -8003ad08: 00000000 nop -8003ad0c: 24430007 addiu v1,v0,7 -8003ad10: 2402fff8 li v0,-8 -8003ad14: 00621824 and v1,v1,v0 -8003ad18: 24620008 addiu v0,v1,8 -8003ad1c: afc20114 sw v0,276(s8) -8003ad20: 8c640000 lw a0,0(v1) -8003ad24: 8c650004 lw a1,4(v1) -8003ad28: 8fc20058 lw v0,88(s8) -8003ad2c: 00000000 nop -8003ad30: afa20010 sw v0,16(sp) -8003ad34: 24070040 li a3,64 -8003ad38: 3c028007 lui v0,0x8007 -8003ad3c: 24468cf8 addiu a2,v0,-29448 -8003ad40: 0c00e2db jal 80038b6c -8003ad44: 00000000 nop - - // calculate padding - pad_quantity -= strlen(libc_sprintf_floatbuf); -8003ad48: 3c028007 lui v0,0x8007 -8003ad4c: 24448cf8 addiu a0,v0,-29448 -8003ad50: 0c00d8af jal 800362bc -8003ad54: 00000000 nop -8003ad58: 00401821 move v1,v0 -8003ad5c: 8fc20054 lw v0,84(s8) -8003ad60: 00000000 nop -8003ad64: 00431023 subu v0,v0,v1 -8003ad68: afc20054 sw v0,84(s8) - - write_padding(); -8003ad6c: 8fc2002c lw v0,44(s8) -8003ad70: 00000000 nop -8003ad74: 30420004 andi v0,v0,0x4 -8003ad78: 1440002d bnez v0,8003ae30 <__vsnprintf_internal+0x1c24> -8003ad7c: 00000000 nop -8003ad80: afc00034 sw zero,52(s8) -8003ad84: 10000024 b 8003ae18 <__vsnprintf_internal+0x1c0c> -8003ad88: 00000000 nop -8003ad8c: 8fc2002c lw v0,44(s8) -8003ad90: 00000000 nop -8003ad94: 30420002 andi v0,v0,0x2 -8003ad98: 1040000f beqz v0,8003add8 <__vsnprintf_internal+0x1bcc> -8003ad9c: 00000000 nop -8003ada0: 8fc4004c lw a0,76(s8) -8003ada4: 8fc30018 lw v1,24(s8) -8003ada8: 00000000 nop -8003adac: 24620001 addiu v0,v1,1 -8003adb0: afc20018 sw v0,24(s8) -8003adb4: 8fc20118 lw v0,280(s8) -8003adb8: 00603821 move a3,v1 -8003adbc: 24060030 li a2,48 -8003adc0: 00802821 move a1,a0 -8003adc4: 8fc40108 lw a0,264(s8) -8003adc8: 0040f809 jalr v0 -8003adcc: 00000000 nop -8003add0: 1000000d b 8003ae08 <__vsnprintf_internal+0x1bfc> -8003add4: 00000000 nop -8003add8: 8fc4004c lw a0,76(s8) -8003addc: 8fc30018 lw v1,24(s8) -8003ade0: 00000000 nop -8003ade4: 24620001 addiu v0,v1,1 -8003ade8: afc20018 sw v0,24(s8) -8003adec: 8fc20118 lw v0,280(s8) -8003adf0: 00603821 move a3,v1 -8003adf4: 24060020 li a2,32 -8003adf8: 00802821 move a1,a0 -8003adfc: 8fc40108 lw a0,264(s8) -8003ae00: 0040f809 jalr v0 -8003ae04: 00000000 nop -8003ae08: 8fc20034 lw v0,52(s8) -8003ae0c: 00000000 nop -8003ae10: 24420001 addiu v0,v0,1 -8003ae14: afc20034 sw v0,52(s8) -8003ae18: 8fc30034 lw v1,52(s8) -8003ae1c: 8fc20054 lw v0,84(s8) -8003ae20: 00000000 nop -8003ae24: 0062102a slt v0,v1,v0 -8003ae28: 1440ffd8 bnez v0,8003ad8c <__vsnprintf_internal+0x1b80> -8003ae2c: 00000000 nop - - for(x=0;libc_sprintf_floatbuf[x]!=0;x++) -8003ae30: afc00034 sw zero,52(s8) -8003ae34: 10000019 b 8003ae9c <__vsnprintf_internal+0x1c90> -8003ae38: 00000000 nop - put_in_string(string, ssz, libc_sprintf_floatbuf[x], string_pos++); -8003ae3c: 8fc4004c lw a0,76(s8) -8003ae40: 3c028007 lui v0,0x8007 -8003ae44: 24438cf8 addiu v1,v0,-29448 -8003ae48: 8fc20034 lw v0,52(s8) -8003ae4c: 00000000 nop -8003ae50: 00621021 addu v0,v1,v0 -8003ae54: 80420000 lb v0,0(v0) -8003ae58: 00000000 nop -8003ae5c: 00402821 move a1,v0 -8003ae60: 8fc30018 lw v1,24(s8) -8003ae64: 00000000 nop -8003ae68: 24620001 addiu v0,v1,1 -8003ae6c: afc20018 sw v0,24(s8) -8003ae70: 8fc20118 lw v0,280(s8) -8003ae74: 00603821 move a3,v1 -8003ae78: 00a03021 move a2,a1 -8003ae7c: 00802821 move a1,a0 -8003ae80: 8fc40108 lw a0,264(s8) -8003ae84: 0040f809 jalr v0 -8003ae88: 00000000 nop - // calculate padding - pad_quantity -= strlen(libc_sprintf_floatbuf); - - write_padding(); - - for(x=0;libc_sprintf_floatbuf[x]!=0;x++) -8003ae8c: 8fc20034 lw v0,52(s8) -8003ae90: 00000000 nop -8003ae94: 24420001 addiu v0,v0,1 -8003ae98: afc20034 sw v0,52(s8) -8003ae9c: 3c028007 lui v0,0x8007 -8003aea0: 24438cf8 addiu v1,v0,-29448 -8003aea4: 8fc20034 lw v0,52(s8) -8003aea8: 00000000 nop -8003aeac: 00621021 addu v0,v1,v0 -8003aeb0: 80420000 lb v0,0(v0) -8003aeb4: 00000000 nop -8003aeb8: 1440ffe0 bnez v0,8003ae3c <__vsnprintf_internal+0x1c30> -8003aebc: 00000000 nop - put_in_string(string, ssz, libc_sprintf_floatbuf[x], string_pos++); - - write_neg_padding(); -8003aec0: 8fc2002c lw v0,44(s8) -8003aec4: 00000000 nop -8003aec8: 30420004 andi v0,v0,0x4 -8003aecc: 1040001a beqz v0,8003af38 <__vsnprintf_internal+0x1d2c> -8003aed0: 00000000 nop -8003aed4: afc00034 sw zero,52(s8) -8003aed8: 10000011 b 8003af20 <__vsnprintf_internal+0x1d14> -8003aedc: 00000000 nop -8003aee0: 8fc4004c lw a0,76(s8) -8003aee4: 8fc30018 lw v1,24(s8) -8003aee8: 00000000 nop -8003aeec: 24620001 addiu v0,v1,1 -8003aef0: afc20018 sw v0,24(s8) -8003aef4: 8fc20118 lw v0,280(s8) -8003aef8: 00603821 move a3,v1 -8003aefc: 24060020 li a2,32 -8003af00: 00802821 move a1,a0 -8003af04: 8fc40108 lw a0,264(s8) -8003af08: 0040f809 jalr v0 -8003af0c: 00000000 nop -8003af10: 8fc20034 lw v0,52(s8) -8003af14: 00000000 nop -8003af18: 24420001 addiu v0,v0,1 -8003af1c: afc20034 sw v0,52(s8) -8003af20: 8fc30034 lw v1,52(s8) -8003af24: 8fc20054 lw v0,84(s8) -8003af28: 00000000 nop -8003af2c: 0062102a slt v0,v1,v0 -8003af30: 1440ffeb bnez v0,8003aee0 <__vsnprintf_internal+0x1cd4> -8003af34: 00000000 nop - - directive_coming = 0; -8003af38: afc00028 sw zero,40(s8) - break; -8003af3c: 1000004e b 8003b078 <__vsnprintf_internal+0x1e6c> -8003af40: 00000000 nop - case 'n': // Number of characters written - *(va_arg(ap,unsigned int*)) = string_pos; -8003af44: 8fc30114 lw v1,276(s8) -8003af48: 00000000 nop -8003af4c: 24620004 addiu v0,v1,4 -8003af50: afc20114 sw v0,276(s8) -8003af54: 8c630000 lw v1,0(v1) -8003af58: 8fc20018 lw v0,24(s8) -8003af5c: 00000000 nop -8003af60: ac620000 sw v0,0(v1) - - directive_coming = 0; -8003af64: afc00028 sw zero,40(s8) - break; -8003af68: 10000043 b 8003b078 <__vsnprintf_internal+0x1e6c> -8003af6c: 00000000 nop - - default: - put_in_string(string, ssz, fmt[fmt_pos], string_pos++); -8003af70: 8fc4004c lw a0,76(s8) -8003af74: 8fc3001c lw v1,28(s8) -8003af78: 8fc20110 lw v0,272(s8) -8003af7c: 00000000 nop -8003af80: 00431021 addu v0,v0,v1 -8003af84: 80420000 lb v0,0(v0) -8003af88: 00000000 nop -8003af8c: 00402821 move a1,v0 -8003af90: 8fc30018 lw v1,24(s8) -8003af94: 00000000 nop -8003af98: 24620001 addiu v0,v1,1 -8003af9c: afc20018 sw v0,24(s8) -8003afa0: 8fc20118 lw v0,280(s8) -8003afa4: 00603821 move a3,v1 -8003afa8: 00a03021 move a2,a1 -8003afac: 00802821 move a1,a0 -8003afb0: 8fc40108 lw a0,264(s8) -8003afb4: 0040f809 jalr v0 -8003afb8: 00000000 nop - directive_coming = 0; -8003afbc: afc00028 sw zero,40(s8) -8003afc0: 1000002d b 8003b078 <__vsnprintf_internal+0x1e6c> -8003afc4: 00000000 nop - } - } - else - { - if(fmt[fmt_pos] == '%') -8003afc8: 8fc3001c lw v1,28(s8) -8003afcc: 8fc20110 lw v0,272(s8) -8003afd0: 00000000 nop -8003afd4: 00431021 addu v0,v0,v1 -8003afd8: 80430000 lb v1,0(v0) -8003afdc: 24020025 li v0,37 -8003afe0: 1462000c bne v1,v0,8003b014 <__vsnprintf_internal+0x1e08> -8003afe4: 00000000 nop - { - directive_coming = 1; -8003afe8: 24020001 li v0,1 -8003afec: afc20028 sw v0,40(s8) - flags = 0; -8003aff0: afc0002c sw zero,44(s8) - argsize = 2; -8003aff4: 24020002 li v0,2 -8003aff8: afc20030 sw v0,48(s8) - pad_quantity = 0; -8003affc: afc00054 sw zero,84(s8) - pad_quantity_f = -1; -8003b000: 2402ffff li v0,-1 -8003b004: afc20058 sw v0,88(s8) - zero_flag_imp = 0; -8003b008: afc00050 sw zero,80(s8) -8003b00c: 1000001a b 8003b078 <__vsnprintf_internal+0x1e6c> -8003b010: 00000000 nop - } - else - { - put_in_string(string, ssz, fmt[fmt_pos], string_pos++); -8003b014: 8fc4004c lw a0,76(s8) -8003b018: 8fc3001c lw v1,28(s8) -8003b01c: 8fc20110 lw v0,272(s8) -8003b020: 00000000 nop -8003b024: 00431021 addu v0,v0,v1 -8003b028: 80420000 lb v0,0(v0) -8003b02c: 00000000 nop -8003b030: 00402821 move a1,v0 -8003b034: 8fc30018 lw v1,24(s8) -8003b038: 00000000 nop -8003b03c: 24620001 addiu v0,v1,1 -8003b040: afc20018 sw v0,24(s8) -8003b044: 8fc20118 lw v0,280(s8) -8003b048: 00603821 move a3,v1 -8003b04c: 00a03021 move a2,a1 -8003b050: 00802821 move a1,a0 -8003b054: 8fc40108 lw a0,264(s8) -8003b058: 0040f809 jalr v0 -8003b05c: 00000000 nop -8003b060: 10000005 b 8003b078 <__vsnprintf_internal+0x1e6c> -8003b064: 00000000 nop - pad_quantity_f = pad_quantity; - pad_quantity = 0; - break; - case 'h': // Half argument size - if(argsize) argsize--; - break; -8003b068: 00000000 nop -8003b06c: 10000002 b 8003b078 <__vsnprintf_internal+0x1e6c> -8003b070: 00000000 nop - case 'l': // Double argument size - if(argsize < 2) argsize = 2; - else if(argsize < SPRINTF_SIZE_LONG_LONG) argsize++; - break; -8003b074: 00000000 nop - - l = strlen(fmt); - - string_pos = 0; - - for(fmt_pos=0;fmt_pos -8003b09c: 00000000 nop - - /*if(((size-1) < string_pos) && (size>0)) - string[size - 1] = 0; - else - string[string_pos] = 0;*/ - put_in_string(string, ssz, '\0', string_pos); -8003b0a0: 8fc3004c lw v1,76(s8) -8003b0a4: 8fc20118 lw v0,280(s8) -8003b0a8: 8fc70018 lw a3,24(s8) -8003b0ac: 00003021 move a2,zero -8003b0b0: 00602821 move a1,v1 -8003b0b4: 8fc40108 lw a0,264(s8) -8003b0b8: 0040f809 jalr v0 -8003b0bc: 00000000 nop - - return string_pos; -8003b0c0: 8fc20018 lw v0,24(s8) -} -8003b0c4: 03c0e821 move sp,s8 -8003b0c8: 8fbf0104 lw ra,260(sp) -8003b0cc: 8fbe0100 lw s8,256(sp) -8003b0d0: 8fb700fc lw s7,252(sp) -8003b0d4: 8fb600f8 lw s6,248(sp) -8003b0d8: 8fb500f4 lw s5,244(sp) -8003b0dc: 8fb400f0 lw s4,240(sp) -8003b0e0: 8fb300ec lw s3,236(sp) -8003b0e4: 8fb200e8 lw s2,232(sp) -8003b0e8: 8fb100e4 lw s1,228(sp) -8003b0ec: 8fb000e0 lw s0,224(sp) -8003b0f0: 27bd0108 addiu sp,sp,264 -8003b0f4: 03e00008 jr ra -8003b0f8: 00000000 nop - -8003b0fc : - -static int vsnprintf_put_in_string(char *string, unsigned int sz, char c, int pos) -{ -8003b0fc: 27bdfff8 addiu sp,sp,-8 -8003b100: afbe0004 sw s8,4(sp) -8003b104: 03a0f021 move s8,sp -8003b108: afc40008 sw a0,8(s8) -8003b10c: afc5000c sw a1,12(s8) -8003b110: 00c01021 move v0,a2 -8003b114: afc70014 sw a3,20(s8) -8003b118: a3c20010 sb v0,16(s8) - if(pos>=sz) -8003b11c: 8fc30014 lw v1,20(s8) -8003b120: 8fc2000c lw v0,12(s8) -8003b124: 00000000 nop -8003b128: 0062102b sltu v0,v1,v0 -8003b12c: 14400004 bnez v0,8003b140 -8003b130: 00000000 nop - return 0; -8003b134: 00001021 move v0,zero -8003b138: 10000009 b 8003b160 -8003b13c: 00000000 nop - else - string[pos] = c; -8003b140: 8fc20014 lw v0,20(s8) -8003b144: 8fc30008 lw v1,8(s8) -8003b148: 00000000 nop -8003b14c: 00621021 addu v0,v1,v0 -8003b150: 93c30010 lbu v1,16(s8) -8003b154: 00000000 nop -8003b158: a0430000 sb v1,0(v0) - - return 1; -8003b15c: 24020001 li v0,1 -} -8003b160: 03c0e821 move sp,s8 -8003b164: 8fbe0004 lw s8,4(sp) -8003b168: 27bd0008 addiu sp,sp,8 -8003b16c: 03e00008 jr ra -8003b170: 00000000 nop - -8003b174 : - -int vsnprintf(char *string, size_t size, const char *fmt, va_list ap) -{ -8003b174: 27bdffe0 addiu sp,sp,-32 -8003b178: afbf001c sw ra,28(sp) -8003b17c: afbe0018 sw s8,24(sp) -8003b180: 03a0f021 move s8,sp -8003b184: afc40020 sw a0,32(s8) -8003b188: afc50024 sw a1,36(s8) -8003b18c: afc60028 sw a2,40(s8) -8003b190: afc7002c sw a3,44(s8) - return __vsnprintf_internal(string, size, fmt, ap, vsnprintf_put_in_string); -8003b194: 3c028004 lui v0,0x8004 -8003b198: 2442b0fc addiu v0,v0,-20228 -8003b19c: afa20010 sw v0,16(sp) -8003b1a0: 8fc7002c lw a3,44(s8) -8003b1a4: 8fc60028 lw a2,40(s8) -8003b1a8: 8fc50024 lw a1,36(s8) -8003b1ac: 8fc40020 lw a0,32(s8) -8003b1b0: 0c00e483 jal 8003920c <__vsnprintf_internal> -8003b1b4: 00000000 nop -} -8003b1b8: 03c0e821 move sp,s8 -8003b1bc: 8fbf001c lw ra,28(sp) -8003b1c0: 8fbe0018 lw s8,24(sp) -8003b1c4: 27bd0020 addiu sp,sp,32 -8003b1c8: 03e00008 jr ra -8003b1cc: 00000000 nop - -8003b1d0 : - -static int sio_put_in_string(char *string, unsigned int sz, char c, int pos) -{ -8003b1d0: 27bdffe8 addiu sp,sp,-24 -8003b1d4: afbf0014 sw ra,20(sp) -8003b1d8: afbe0010 sw s8,16(sp) -8003b1dc: 03a0f021 move s8,sp -8003b1e0: afc40018 sw a0,24(s8) -8003b1e4: afc5001c sw a1,28(s8) -8003b1e8: 00c01021 move v0,a2 -8003b1ec: afc70024 sw a3,36(s8) -8003b1f0: a3c20020 sb v0,32(s8) - sio_putchar(c); -8003b1f4: 83c20020 lb v0,32(s8) -8003b1f8: 00000000 nop -8003b1fc: 00402021 move a0,v0 -8003b200: 0c00a9c3 jal 8002a70c -8003b204: 00000000 nop - - return 1; -8003b208: 24020001 li v0,1 -} -8003b20c: 03c0e821 move sp,s8 -8003b210: 8fbf0014 lw ra,20(sp) -8003b214: 8fbe0010 lw s8,16(sp) -8003b218: 27bd0018 addiu sp,sp,24 -8003b21c: 03e00008 jr ra -8003b220: 00000000 nop - -8003b224 : - -int sio_vprintf(const char *fmt, va_list ap) -{ -8003b224: 27bdffe0 addiu sp,sp,-32 -8003b228: afbf001c sw ra,28(sp) -8003b22c: afbe0018 sw s8,24(sp) -8003b230: 03a0f021 move s8,sp -8003b234: afc40020 sw a0,32(s8) -8003b238: afc50024 sw a1,36(s8) - return __vsnprintf_internal(NULL, -1, fmt, ap, sio_put_in_string); -8003b23c: 3c028004 lui v0,0x8004 -8003b240: 2442b1d0 addiu v0,v0,-20016 -8003b244: afa20010 sw v0,16(sp) -8003b248: 8fc70024 lw a3,36(s8) -8003b24c: 8fc60020 lw a2,32(s8) -8003b250: 2405ffff li a1,-1 -8003b254: 00002021 move a0,zero -8003b258: 0c00e483 jal 8003920c <__vsnprintf_internal> -8003b25c: 00000000 nop -} -8003b260: 03c0e821 move sp,s8 -8003b264: 8fbf001c lw ra,28(sp) -8003b268: 8fbe0018 lw s8,24(sp) -8003b26c: 27bd0020 addiu sp,sp,32 -8003b270: 03e00008 jr ra -8003b274: 00000000 nop - -8003b278 : - -static int out_put_in_string(char *string, unsigned int sz, char c, int pos) -{ -8003b278: 27bdffe8 addiu sp,sp,-24 -8003b27c: afbf0014 sw ra,20(sp) -8003b280: afbe0010 sw s8,16(sp) -8003b284: 03a0f021 move s8,sp -8003b288: afc40018 sw a0,24(s8) -8003b28c: afc5001c sw a1,28(s8) -8003b290: 00c01021 move v0,a2 -8003b294: afc70024 sw a3,36(s8) -8003b298: a3c20020 sb v0,32(s8) - putchar(c); -8003b29c: 83c20020 lb v0,32(s8) -8003b2a0: 00000000 nop -8003b2a4: 00402021 move a0,v0 -8003b2a8: 0c00aa06 jal 8002a818 -8003b2ac: 00000000 nop - - return 1; -8003b2b0: 24020001 li v0,1 -} -8003b2b4: 03c0e821 move sp,s8 -8003b2b8: 8fbf0014 lw ra,20(sp) -8003b2bc: 8fbe0010 lw s8,16(sp) -8003b2c0: 27bd0018 addiu sp,sp,24 -8003b2c4: 03e00008 jr ra -8003b2c8: 00000000 nop - -8003b2cc : - -int vprintf(char *fmt, va_list ap) -{ -8003b2cc: 27bdffe0 addiu sp,sp,-32 -8003b2d0: afbf001c sw ra,28(sp) -8003b2d4: afbe0018 sw s8,24(sp) -8003b2d8: 03a0f021 move s8,sp -8003b2dc: afc40020 sw a0,32(s8) -8003b2e0: afc50024 sw a1,36(s8) - return __vsnprintf_internal(NULL, -1, fmt, ap, out_put_in_string); -8003b2e4: 3c028004 lui v0,0x8004 -8003b2e8: 2442b278 addiu v0,v0,-19848 -8003b2ec: afa20010 sw v0,16(sp) -8003b2f0: 8fc70024 lw a3,36(s8) -8003b2f4: 8fc60020 lw a2,32(s8) -8003b2f8: 2405ffff li a1,-1 -8003b2fc: 00002021 move a0,zero -8003b300: 0c00e483 jal 8003920c <__vsnprintf_internal> -8003b304: 00000000 nop -} -8003b308: 03c0e821 move sp,s8 -8003b30c: 8fbf001c lw ra,28(sp) -8003b310: 8fbe0018 lw s8,24(sp) -8003b314: 27bd0020 addiu sp,sp,32 -8003b318: 03e00008 jr ra -8003b31c: 00000000 nop - -8003b320 : - -int vsprintf(char *string, const char *fmt, va_list ap) -{ -8003b320: 27bdffe8 addiu sp,sp,-24 -8003b324: afbf0014 sw ra,20(sp) -8003b328: afbe0010 sw s8,16(sp) -8003b32c: 03a0f021 move s8,sp -8003b330: afc40018 sw a0,24(s8) -8003b334: afc5001c sw a1,28(s8) -8003b338: afc60020 sw a2,32(s8) - return vsnprintf(string, 0xffffffff, fmt, ap); -8003b33c: 8fc70020 lw a3,32(s8) -8003b340: 8fc6001c lw a2,28(s8) -8003b344: 2405ffff li a1,-1 -8003b348: 8fc40018 lw a0,24(s8) -8003b34c: 0c00ec5d jal 8003b174 -8003b350: 00000000 nop -} -8003b354: 03c0e821 move sp,s8 -8003b358: 8fbf0014 lw ra,20(sp) -8003b35c: 8fbe0010 lw s8,16(sp) -8003b360: 27bd0018 addiu sp,sp,24 -8003b364: 03e00008 jr ra -8003b368: 00000000 nop - -8003b36c : - -int sprintf(char *string, const char *fmt, ...) -{ -8003b36c: 27bdffe0 addiu sp,sp,-32 -8003b370: afbf001c sw ra,28(sp) -8003b374: afbe0018 sw s8,24(sp) -8003b378: 03a0f021 move s8,sp -8003b37c: afc40020 sw a0,32(s8) -8003b380: afc50024 sw a1,36(s8) -8003b384: afc60028 sw a2,40(s8) -8003b388: afc7002c sw a3,44(s8) - int r; - - va_list ap; - - va_start(ap, fmt); -8003b38c: 27c20028 addiu v0,s8,40 -8003b390: afc20014 sw v0,20(s8) - - r = vsprintf(string, fmt, ap); -8003b394: 8fc20014 lw v0,20(s8) -8003b398: 00000000 nop -8003b39c: 00403021 move a2,v0 -8003b3a0: 8fc50024 lw a1,36(s8) -8003b3a4: 8fc40020 lw a0,32(s8) -8003b3a8: 0c00ecc8 jal 8003b320 -8003b3ac: 00000000 nop -8003b3b0: afc20010 sw v0,16(s8) - - va_end(ap); - - return r; -8003b3b4: 8fc20010 lw v0,16(s8) -} -8003b3b8: 03c0e821 move sp,s8 -8003b3bc: 8fbf001c lw ra,28(sp) -8003b3c0: 8fbe0018 lw s8,24(sp) -8003b3c4: 27bd0020 addiu sp,sp,32 -8003b3c8: 03e00008 jr ra -8003b3cc: 00000000 nop - -8003b3d0 : - -int snprintf(char *string, size_t size, const char *fmt, ...) -{ -8003b3d0: 27bdffe0 addiu sp,sp,-32 -8003b3d4: afbf001c sw ra,28(sp) -8003b3d8: afbe0018 sw s8,24(sp) -8003b3dc: 03a0f021 move s8,sp -8003b3e0: afc40020 sw a0,32(s8) -8003b3e4: afc50024 sw a1,36(s8) -8003b3e8: afc60028 sw a2,40(s8) -8003b3ec: afc7002c sw a3,44(s8) - int r; - - va_list ap; - - va_start(ap, fmt); -8003b3f0: 27c2002c addiu v0,s8,44 -8003b3f4: afc20014 sw v0,20(s8) - - r = vsnprintf(string, size, fmt, ap); -8003b3f8: 8fc20014 lw v0,20(s8) -8003b3fc: 00000000 nop -8003b400: 00403821 move a3,v0 -8003b404: 8fc60028 lw a2,40(s8) -8003b408: 8fc50024 lw a1,36(s8) -8003b40c: 8fc40020 lw a0,32(s8) -8003b410: 0c00ec5d jal 8003b174 -8003b414: 00000000 nop -8003b418: afc20010 sw v0,16(s8) - - va_end(ap); - - return r; -8003b41c: 8fc20010 lw v0,16(s8) -} -8003b420: 03c0e821 move sp,s8 -8003b424: 8fbf001c lw ra,28(sp) -8003b428: 8fbe0018 lw s8,24(sp) -8003b42c: 27bd0020 addiu sp,sp,32 -8003b430: 03e00008 jr ra -8003b434: 00000000 nop - -8003b438 : - -int sio_printf(const char *fmt, ...) -{ -8003b438: 27bdffe0 addiu sp,sp,-32 -8003b43c: afbf001c sw ra,28(sp) -8003b440: afbe0018 sw s8,24(sp) -8003b444: 03a0f021 move s8,sp -8003b448: afc40020 sw a0,32(s8) -8003b44c: afc50024 sw a1,36(s8) -8003b450: afc60028 sw a2,40(s8) -8003b454: afc7002c sw a3,44(s8) - int r; - - va_list ap; - - va_start(ap, fmt); -8003b458: 27c20024 addiu v0,s8,36 -8003b45c: afc20014 sw v0,20(s8) - - r = sio_vprintf(fmt, ap); -8003b460: 8fc20014 lw v0,20(s8) -8003b464: 00000000 nop -8003b468: 00402821 move a1,v0 -8003b46c: 8fc40020 lw a0,32(s8) -8003b470: 0c00ec89 jal 8003b224 -8003b474: 00000000 nop -8003b478: afc20010 sw v0,16(s8) - - va_end(ap); - - return r; -8003b47c: 8fc20010 lw v0,16(s8) -} -8003b480: 03c0e821 move sp,s8 -8003b484: 8fbf001c lw ra,28(sp) -8003b488: 8fbe0018 lw s8,24(sp) -8003b48c: 27bd0020 addiu sp,sp,32 -8003b490: 03e00008 jr ra -8003b494: 00000000 nop - -8003b498 <_internal_cdrom_handler>: -.global _internal_cdrom_handler -.set noat - - -_internal_cdrom_handler: - addi $sp, -112 -8003b498: 23bdff90 afa10000 afa20004 afa30008 ...#............ - sw $at, 0($sp) - sw $v0, 4($sp) - sw $v1, 8($sp) - sw $a0, 12($sp) -8003b4a8: afa4000c afa50010 afa60014 afa70018 ................ - sw $a1, 16($sp) - sw $a2, 20($sp) - sw $a3, 24($sp) - sw $t0, 28($sp) -8003b4b8: afa8001c afa90020 afaa0024 afab0028 .... ...$...(... - sw $t1, 32($sp) - sw $t2, 36($sp) - sw $t3, 40($sp) - sw $t4, 44($sp) -8003b4c8: afac002c afad0030 afae0034 afaf0038 ,...0...4...8... - sw $t5, 48($sp) - sw $t6, 52($sp) - sw $t7, 56($sp) - sw $s0, 60($sp) -8003b4d8: afb0003c afb10040 afb20044 afb30048 <...@...D...H... - sw $s1, 64($sp) - sw $s2, 68($sp) - sw $s3, 72($sp) - sw $s4, 76($sp) -8003b4e8: afb4004c afb50050 afb60054 afb70058 L...P...T...X... - sw $s5, 80($sp) - sw $s6, 84($sp) - sw $s7, 88($sp) - sw $t8, 92($sp) -8003b4f8: afb8005c afb90060 afbc0064 afbe0068 \...`...d...h... - sw $t9, 96($sp) - sw $gp, 100($sp) - sw $s8, 104($sp) - sw $ra, 108($sp) -8003b508: afbf006c 3c081f80 35081074 8d090000 l......: -# If the CDROM command isn't direct -# (direct = sent by us and not by the BIOS' ISO9660 routines) -# exit and let the BIOS do its work. - -cdrom_check_direct_cmd: - la $t0, cdrom_command_direct -8003b54c: 3c088007 lui t0,0x8007 -8003b550: 25081cc8 addiu t0,t0,7368 - lw $t1, 0($t0) -8003b554: 8d090000 lw t1,0(t0) -8003b558: 00000000 nop - beq $t1, $zero, cdrom_handler_end -8003b55c: 1120000f beqz t1,8003b59c -8003b560: 00000000 nop - nop -8003b564: 00000000 nop - -8003b568 : - -cdrom_fire_user_handler: - la $t0, cdrom_handler_callback -8003b568: 3c088007 lui t0,0x8007 -8003b56c: 25081d34 addiu t0,t0,7476 - lw $t1, 0($t0) -8003b570: 8d090000 lw t1,0(t0) -8003b574: 00000000 nop - - jalr $t1 -8003b578: 0120f809 jalr t1 -8003b57c: 00000000 nop - nop -8003b580: 00000000 nop - -8003b584 : - -# Remove bit for CDROM interrupt (bit 2) from pending interrupts mask. - -cdrom_handler_remove_pending: - li $t0, 0x1f801070 -8003b584: 3c081f80 lui t0,0x1f80 -8003b588: 35081070 ori t0,t0,0x1070 - lw $t1, 0($t0) -8003b58c: 8d090000 lw t1,0(t0) -8003b590: 00000000 nop - xori $t1, $t1, 4 -8003b594: 39290004 xori t1,t1,0x4 - sw $t1, 0($t0) -8003b598: ad090000 sw t1,0(t0) - -8003b59c : - -cdrom_handler_end: - - lw $at, 0($sp) -8003b59c: 8fa10000 lw at,0(sp) - lw $v0, 4($sp) -8003b5a0: 8fa20004 lw v0,4(sp) - lw $v1, 8($sp) -8003b5a4: 8fa30008 lw v1,8(sp) - lw $a0, 12($sp) -8003b5a8: 8fa4000c lw a0,12(sp) - lw $a1, 16($sp) -8003b5ac: 8fa50010 lw a1,16(sp) - lw $a2, 20($sp) -8003b5b0: 8fa60014 lw a2,20(sp) - lw $a3, 24($sp) -8003b5b4: 8fa70018 lw a3,24(sp) - lw $t0, 28($sp) -8003b5b8: 8fa8001c lw t0,28(sp) - lw $t1, 32($sp) -8003b5bc: 8fa90020 lw t1,32(sp) - lw $t2, 36($sp) -8003b5c0: 8faa0024 lw t2,36(sp) - lw $t3, 40($sp) -8003b5c4: 8fab0028 lw t3,40(sp) - lw $t4, 44($sp) -8003b5c8: 8fac002c lw t4,44(sp) - lw $t5, 48($sp) -8003b5cc: 8fad0030 lw t5,48(sp) - lw $t6, 52($sp) -8003b5d0: 8fae0034 lw t6,52(sp) - lw $t7, 56($sp) -8003b5d4: 8faf0038 lw t7,56(sp) - lw $s0, 60($sp) -8003b5d8: 8fb0003c lw s0,60(sp) - lw $s1, 64($sp) -8003b5dc: 8fb10040 lw s1,64(sp) - lw $s2, 68($sp) -8003b5e0: 8fb20044 lw s2,68(sp) - lw $s3, 72($sp) -8003b5e4: 8fb30048 lw s3,72(sp) - lw $s4, 76($sp) -8003b5e8: 8fb4004c lw s4,76(sp) - lw $s5, 80($sp) -8003b5ec: 8fb50050 lw s5,80(sp) - lw $s6, 84($sp) -8003b5f0: 8fb60054 lw s6,84(sp) - lw $s7, 88($sp) -8003b5f4: 8fb70058 lw s7,88(sp) - lw $t8, 92($sp) -8003b5f8: 8fb8005c lw t8,92(sp) - lw $t9, 96($sp) -8003b5fc: 8fb90060 lw t9,96(sp) - lw $gp, 100($sp) -8003b600: 8fbc0064 lw gp,100(sp) - lw $s8, 104($sp) -8003b604: 8fbe0068 lw s8,104(sp) - lw $ra, 108($sp) -8003b608: 8fbf006c lw ra,108(sp) - addi $sp, 112 -8003b60c: 23bd0070 addi sp,sp,112 - jr $ra -8003b610: 03e00008 jr ra -8003b614: 00000000 nop - nop -8003b618: 00000000 nop - -8003b61c : -.global printf -.extern __stdio_direction -.extern sio_printf - -bios_putchar: - li $9, 0x3c -8003b61c: 2409003c 08000028 00000000 00000000 <..$(........... - -8003b62c : - j 0xa0 - nop - -bios_puts: - li $9, 0x3e -8003b62c: 2409003e 08000028 00000000 00000000 >..$(........... - -8003b63c : - j 0xa0 - nop - -printf: - la $9, __stdio_direction -8003b63c: 3c098007 25291cc0 8d2a0000 00000000 ...<..)%..*..... - lw $10, 0($9) - beq $10, $0, use_bios_printf -8003b64c: 11400005 00000000 00000000 0800ed0e ..@............. - ... - -8003b664 : - nop - j sio_printf - nop -use_bios_printf: - li $9, 0x3f -8003b664: 2409003f li t1,63 - j 0xa0 -8003b668: 08000028 j 800000a0 <__scratchpad+0x608000a0> -8003b66c: 00000000 nop - nop -8003b670: 00000000 nop - -8003b674 : - -.global InitHeap -.global FlushCache - -InitHeap: - li $9, 0x39 -8003b674: 24090039 08000028 00000000 00000000 9..$(........... - -8003b684 : - j 0xa0 - nop - -FlushCache: - li $9, 0x44 -8003b684: 24090044 08000028 00000000 00000000 D..$(........... - -8003b694 : -.global GPU_cwb -.global SendPrimitive -.global GetGPUStatus - -GPU_dw: - li $9, 0x46 -8003b694: 24090046 08000028 00000000 00000000 F..$(........... - -8003b6a4 : - j 0xa0 - nop - -mem2vram: - li $9, 0x47 -8003b6a4: 24090047 08000028 00000000 00000000 G..$(........... - -8003b6b4 : - nop - -.global ResetEntryInt - -ResetEntryInt: - li $9, 0x18 -8003b6b4: 24090018 0800002c 00000000 00000000 ...$,........... - -8003b6c4 : -.global GetKernelDate -.global GetKernelRomVersion -.global GetRamSize - -GetKernelDate: - li $9, 0xb4 -8003b6c4: 240900b4 24040000 08000028 00000000 ...$...$(....... - li $4, 0 - j 0xa0 - nop -8003b6d4: 00000000 .... - -8003b6d8 : - -GetKernelRomVersion: - li $9, 0xb4 -8003b6d8: 240900b4 24040002 08000028 00000000 ...$...$(....... - li $4, 2 - j 0xa0 - nop -8003b6e8: 00000000 .... - -8003b6ec : - -GetRamSize: - li $9, 0xb4 -8003b6ec: 240900b4 24040005 08000028 00000000 ...$...$(....... - li $4, 5 - j 0xa0 - nop -8003b6fc: 00000000 .... - -8003b700 : -.global WaitEvent -.global TestEvent -.global DeliverEvent - -OpenEvent: - li $9, 0x08 -8003b700: 24090008 0800002c 00000000 00000000 ...$,........... - -8003b710 : - j 0xb0 - nop - -EnableEvent: - li $9, 0x0c -8003b710: 2409000c 0800002c 00000000 00000000 ...$,........... - -8003b720 : - j 0xb0 - nop - -CloseEvent: - li $9, 0x09 -8003b720: 24090009 0800002c 00000000 00000000 ...$,........... - -8003b730 : - j 0xb0 - nop - -DisableEvent: - li $9, 0x0d -8003b730: 2409000d 0800002c 00000000 00000000 ...$,........... - -8003b740 : - j 0xb0 - nop - -DeliverEvent: - li $9, 0x07 -8003b740: 24090007 0800002c 00000000 00000000 ...$,........... - -8003b750 : - j 0xb0 - nop - -WaitEvent: - li $9, 0x0a -8003b750: 2409000a 0800002c 00000000 00000000 ...$,........... - -8003b760 : - j 0xb0 - nop - -TestEvent: - li $9, 0x0b -8003b760: 2409000b 0800002c 00000000 00000000 ...$,........... - -8003b770 : -.global nextfile -.global rename -.global remove - -open: - li $9, 0x32 -8003b770: 24090032 0800002c 00000000 00000000 2..$,........... - -8003b780 : - j 0xb0 - nop - -lseek: - li $9, 0x33 -8003b780: 24090033 0800002c 00000000 00000000 3..$,........... - -8003b790 : - j 0xb0 - nop - -read: - li $9, 0x34 -8003b790: 24090034 0800002c 00000000 00000000 4..$,........... - -8003b7a0 : - j 0xb0 - nop - -write: - li $9, 0x35 -8003b7a0: 24090035 0800002c 00000000 00000000 5..$,........... - -8003b7b0 : - j 0xb0 - nop - -close: - li $9, 0x36 -8003b7b0: 24090036 0800002c 00000000 00000000 6..$,........... - -8003b7c0 : - j 0xb0 - nop - -cd: - li $9, 0x40 -8003b7c0: 24090040 0800002c 00000000 00000000 @..$,........... - -8003b7d0 : - j 0xb0 - nop - -firstfile: - li $9, 0x42 -8003b7d0: 24090042 0800002c 00000000 00000000 B..$,........... - -8003b7e0 : - j 0xb0 - nop - -nextfile: - li $9, 0x43 -8003b7e0: 24090043 0800002c 00000000 00000000 C..$,........... - -8003b7f0 : - j 0xb0 - nop - -rename: - li $9, 0x44 -8003b7f0: 24090044 0800002c 00000000 00000000 D..$,........... - -8003b800 : - j 0xb0 - nop - -remove: - li $9, 0x45 -8003b800: 24090045 0800002c 00000000 00000000 E..$,........... - -8003b810 : -.global ExitCriticalSection -.global SysEnqIntRP -.global SysDeqIntRP - -EnterCriticalSection: - li $a0, 1 -8003b810: 24040001 0000000c 00000000 03e00008 ...$............ - ... - -8003b828 : - nop - jr $ra - nop - -ExitCriticalSection: - li $a0, 2 -8003b828: 24040002 0000000c 00000000 03e00008 ...$............ - ... - -8003b840 : - nop - jr $ra - nop - -SysEnqIntRP: - li $9, 0x02 -8003b840: 24090002 08000030 00000000 00000000 ...$0........... - -8003b850 : - j 0xc0 - nop - -SysDeqIntRP: - li $9, 0x03 -8003b850: 24090003 08000030 00000000 00000000 ...$0........... - -8003b860 <_96_init>: -.global _96_init -.global _96_remove -.global _bu_init - -_96_init: - li $9, 0x71 -8003b860: 24090071 08000028 00000000 00000000 q..$(........... - -8003b870 <_96_remove>: - j 0xa0 - nop - -_96_remove: - li $9, 0x72 -8003b870: 24090072 08000028 00000000 00000000 r..$(........... - -8003b880 <_bu_init>: - j 0xa0 - nop - -_bu_init: - li $9, 0x70 -8003b880: 24090070 08000028 00000000 00000000 p..$(........... - -8003b890 : -# Executable loading functions - -.global LoadExec - -LoadExec: - li $9, 0x51 -8003b890: 24090051 08000028 00000000 00000000 Q..$(........... - -8003b8a0 : -.global _card_read -.global _card_status -.global _new_card - -InitCARD: - li $9, 0x4a -8003b8a0: 2409004a 0800002c 00000000 00000000 J..$,........... - -8003b8b0 : - j 0xb0 - nop - -StartCARD: - li $9, 0x4b -8003b8b0: 2409004b 0800002c 00000000 00000000 K..$,........... - -8003b8c0 : - j 0xb0 - nop - -StopCARD: - li $9, 0x4c -8003b8c0: 2409004c 0800002c 00000000 00000000 L..$,........... - -8003b8d0 <_card_info>: - j 0xb0 - nop - -_card_info: - li $9, 0xab -8003b8d0: 240900ab 08000028 00000000 00000000 ...$(........... - -8003b8e0 <_card_load>: - j 0xa0 - nop - -_card_load: - li $9, 0xac -8003b8e0: 240900ac 08000028 00000000 00000000 ...$(........... - -8003b8f0 <_card_auto>: - j 0xa0 - nop - -_card_auto: - li $9, 0xad -8003b8f0: 240900ad 08000028 00000000 00000000 ...$(........... - -8003b900 <_card_write>: - j 0xa0 - nop - -_card_write: - li $9, 0x4e -8003b900: 2409004e 0800002c 00000000 00000000 N..$,........... - -8003b910 <_card_read>: - j 0xb0 - nop - -_card_read: - li $9, 0x4f -8003b910: 2409004f 0800002c 00000000 00000000 O..$,........... - -8003b920 <_new_card>: - j 0xb0 - nop - -_new_card: - li $9, 0x50 -8003b920: 24090050 0800002c 00000000 00000000 P..$,........... - -8003b930 <_card_status>: - j 0xb0 - nop - -_card_status: - li $9, 0x5c -8003b930: 2409005c 0800002c 00000000 00000000 \..$,........... - -8003b940 : -# Device functions - -.global PrintInstalledDevices - -PrintInstalledDevices: - li $9, 0x49 -8003b940: 24090049 0800002c 00000000 00000000 I..$,........... - -8003b950 : - nop - -.global BIOSWarmReboot - -BIOSWarmReboot: - li $9, 0xa0 -8003b950: 240900a0 00000000 08000028 00000000 ...$....(....... - -8003b960 : -volatile int __psxsdk_gpu_dma_finished; - -extern void _internal_cdromlib_callback(); - -void SetCDROMHandler(void) -{ -8003b960: 27bdffe8 addiu sp,sp,-24 -8003b964: afbf0014 sw ra,20(sp) -8003b968: afbe0010 sw s8,16(sp) -8003b96c: 03a0f021 move s8,sp - _EXC_cdrom_handler_set = 1; -8003b970: 3c028007 lui v0,0x8007 -8003b974: 24030001 li v1,1 -8003b978: ac431d84 sw v1,7556(v0) - _EXC_cdrom_handler = _internal_cdromlib_callback; -8003b97c: 3c028007 lui v0,0x8007 -8003b980: 3c038003 lui v1,0x8003 -8003b984: 2463ac44 addiu v1,v1,-21436 -8003b988: ac431d80 sw v1,7552(v0) - IMASK = /* VBLANK */ 1 | /* CDROM */ 4 | /* DMA */8; -8003b98c: 3c021f80 lui v0,0x1f80 -8003b990: 34421074 ori v0,v0,0x1074 -8003b994: 2403000d li v1,13 -8003b998: ac430000 sw v1,0(v0) - printf("SetCDROMHandler\n"); -8003b99c: 3c028004 lui v0,0x8004 -8003b9a0: 24440044 addiu a0,v0,68 -8003b9a4: 0c00ed8f jal 8003b63c -8003b9a8: 00000000 nop -} -8003b9ac: 00000000 nop -8003b9b0: 03c0e821 move sp,s8 -8003b9b4: 8fbf0014 lw ra,20(sp) -8003b9b8: 8fbe0010 lw s8,16(sp) -8003b9bc: 27bd0018 addiu sp,sp,24 -8003b9c0: 03e00008 jr ra -8003b9c4: 00000000 nop - -8003b9c8 <__psxsdk_real_exception_handler>: - -void __psxsdk_real_exception_handler() -{ -8003b9c8: 27bdffd0 addiu sp,sp,-48 -8003b9cc: afbf002c sw ra,44(sp) -8003b9d0: afbe0028 sw s8,40(sp) -8003b9d4: 03a0f021 move s8,sp - unsigned int Cause = get_cop0_register(COP0_CAUSE); -8003b9d8: 2404000d li a0,13 -8003b9dc: 0c00f00c jal 8003c030 -8003b9e0: 00000000 nop -8003b9e4: afc20014 sw v0,20(s8) - unsigned int Cause_excCode = (Cause >> 2) & 31; -8003b9e8: 8fc20014 lw v0,20(s8) -8003b9ec: 00000000 nop -8003b9f0: 00021082 srl v0,v0,0x2 -8003b9f4: 3042001f andi v0,v0,0x1f -8003b9f8: afc20018 sw v0,24(s8) - unsigned int Cause_IP = (Cause >> 8) & 255; -8003b9fc: 8fc20014 lw v0,20(s8) -8003ba00: 00000000 nop -8003ba04: 00021202 srl v0,v0,0x8 -8003ba08: 304200ff andi v0,v0,0xff -8003ba0c: afc2001c sw v0,28(s8) - unsigned int SR = get_cop0_register(COP0_SR); -8003ba10: 2404000c li a0,12 -8003ba14: 0c00f00c jal 8003c030 -8003ba18: 00000000 nop -8003ba1c: afc20020 sw v0,32(s8) - unsigned int SR_IM = (SR >> 8) & 255; -8003ba20: 8fc20020 lw v0,32(s8) -8003ba24: 00000000 nop -8003ba28: 00021202 srl v0,v0,0x8 -8003ba2c: 304200ff andi v0,v0,0xff -8003ba30: afc20024 sw v0,36(s8) -/* unsigned int oldSR = SR; - unsigned int psxIP = IPENDING; - unsigned int psxIM = IMASK; - unsigned int sio_data;*/ - - if(Cause_excCode == 0) // interrupt generated the exception -8003ba34: 8fc20018 lw v0,24(s8) -8003ba38: 00000000 nop -8003ba3c: 14400078 bnez v0,8003bc20 <__psxsdk_real_exception_handler+0x258> -8003ba40: 00000000 nop - break; - } - } - }*/ - - if((Cause_IP & (1<<2)) && (SR_IM & (1<<2))) -8003ba44: 8fc2001c lw v0,28(s8) -8003ba48: 00000000 nop -8003ba4c: 30420004 andi v0,v0,0x4 -8003ba50: 10400073 beqz v0,8003bc20 <__psxsdk_real_exception_handler+0x258> -8003ba54: 00000000 nop -8003ba58: 8fc20024 lw v0,36(s8) -8003ba5c: 00000000 nop -8003ba60: 30420004 andi v0,v0,0x4 -8003ba64: 1040006e beqz v0,8003bc20 <__psxsdk_real_exception_handler+0x258> -8003ba68: 00000000 nop - { - Cause ^= 1<<10; -8003ba6c: 8fc20014 lw v0,20(s8) -8003ba70: 00000000 nop -8003ba74: 38420400 xori v0,v0,0x400 -8003ba78: afc20014 sw v0,20(s8) - set_cop0_register(COP0_CAUSE, Cause); -8003ba7c: 8fc50014 lw a1,20(s8) -8003ba80: 2404000d li a0,13 -8003ba84: 0c00f072 jal 8003c1c8 -8003ba88: 00000000 nop - //SR ^= 1<<10; - //set_cop0_register(COP0_SR, SR); - - //while(IPENDING != 0) - { - for(i = 0; i < 11; i++) -8003ba8c: afc00010 sw zero,16(s8) -8003ba90: 1000005e b 8003bc0c <__psxsdk_real_exception_handler+0x244> -8003ba94: 00000000 nop - { - if(IPENDING & (1< -8003babc: 00000000 nop -// Very interesting, when reading joypad status the PCSXR emulator sets in IPENDING that IRQ7 is pending even -// if it is not enabled in IMASK! That is insane, but it can be easily worked around. -// So we are going to disable pending bits for IRQs in IPENDING in any case, even if the in IRQ at hand was -// not enabled in IMASK. - - IPENDING ^= 1 << i; -8003bac0: 3c021f80 lui v0,0x1f80 -8003bac4: 34421070 ori v0,v0,0x1070 -8003bac8: 3c031f80 lui v1,0x1f80 -8003bacc: 34631070 ori v1,v1,0x1070 -8003bad0: 8c630000 lw v1,0(v1) -8003bad4: 24050001 li a1,1 -8003bad8: 8fc40010 lw a0,16(s8) -8003badc: 00000000 nop -8003bae0: 00852004 sllv a0,a1,a0 -8003bae4: 00641826 xor v1,v1,a0 -8003bae8: ac430000 sw v1,0(v0) - - if(IMASK & (1< -8003bb10: 00000000 nop - { - // printf("IM = %x\n", IMASK); - - switch(i) -8003bb14: 8fc20010 lw v0,16(s8) -8003bb18: 00000000 nop -8003bb1c: 2c420009 sltiu v0,v0,9 -8003bb20: 10400036 beqz v0,8003bbfc <__psxsdk_real_exception_handler+0x234> -8003bb24: 00000000 nop -8003bb28: 8fc20010 lw v0,16(s8) -8003bb2c: 00000000 nop -8003bb30: 00021880 sll v1,v0,0x2 -8003bb34: 3c028004 lui v0,0x8004 -8003bb38: 24420058 addiu v0,v0,88 -8003bb3c: 00621021 addu v0,v1,v0 -8003bb40: 8c420000 lw v0,0(v0) -8003bb44: 00000000 nop -8003bb48: 00400008 jr v0 -8003bb4c: 00000000 nop - case 0: // VBLANK - // if(!(GPU_CONTROL_PORT & (1<<0x1c))) - // GPU_CONTROL_PORT = 0x02000000; - - // Execute the user-supplied VBlank handler. - if(_EXC_vblank_handler_set) -8003bb50: 3c028007 lui v0,0x8007 -8003bb54: 8c421d74 lw v0,7540(v0) -8003bb58: 00000000 nop -8003bb5c: 10400020 beqz v0,8003bbe0 <__psxsdk_real_exception_handler+0x218> -8003bb60: 00000000 nop - _EXC_vblank_handler(); -8003bb64: 3c028007 lui v0,0x8007 -8003bb68: 8c421d8c lw v0,7564(v0) -8003bb6c: 00000000 nop -8003bb70: 0040f809 jalr v0 -8003bb74: 00000000 nop - break; -8003bb78: 10000019 b 8003bbe0 <__psxsdk_real_exception_handler+0x218> -8003bb7c: 00000000 nop - case 2: - dprintf("case 2: CDROM?\n"); - if(_EXC_cdrom_handler_set) -8003bb80: 3c028007 lui v0,0x8007 -8003bb84: 8c421d84 lw v0,7556(v0) -8003bb88: 00000000 nop -8003bb8c: 10400017 beqz v0,8003bbec <__psxsdk_real_exception_handler+0x224> -8003bb90: 00000000 nop - _EXC_cdrom_handler(); -8003bb94: 3c028007 lui v0,0x8007 -8003bb98: 8c421d80 lw v0,7552(v0) -8003bb9c: 00000000 nop -8003bba0: 0040f809 jalr v0 -8003bba4: 00000000 nop - break; -8003bba8: 10000010 b 8003bbec <__psxsdk_real_exception_handler+0x224> -8003bbac: 00000000 nop - case 3: // DMA - // Execute the user-supplied DMA handler. - dprintf("INT3\n"); - if(_EXC_dma_handler_set) -8003bbb0: 3c028007 lui v0,0x8007 -8003bbb4: 8c421d78 lw v0,7544(v0) -8003bbb8: 00000000 nop -8003bbbc: 1040000e beqz v0,8003bbf8 <__psxsdk_real_exception_handler+0x230> -8003bbc0: 00000000 nop - _EXC_dma_handler(); -8003bbc4: 3c028007 lui v0,0x8007 -8003bbc8: 8c421d94 lw v0,7572(v0) -8003bbcc: 00000000 nop -8003bbd0: 0040f809 jalr v0 -8003bbd4: 00000000 nop - break; -8003bbd8: 10000007 b 8003bbf8 <__psxsdk_real_exception_handler+0x230> -8003bbdc: 00000000 nop - // GPU_CONTROL_PORT = 0x02000000; - - // Execute the user-supplied VBlank handler. - if(_EXC_vblank_handler_set) - _EXC_vblank_handler(); - break; -8003bbe0: 00000000 nop -8003bbe4: 10000005 b 8003bbfc <__psxsdk_real_exception_handler+0x234> -8003bbe8: 00000000 nop - case 2: - dprintf("case 2: CDROM?\n"); - if(_EXC_cdrom_handler_set) - _EXC_cdrom_handler(); - break; -8003bbec: 00000000 nop -8003bbf0: 10000002 b 8003bbfc <__psxsdk_real_exception_handler+0x234> -8003bbf4: 00000000 nop - case 3: // DMA - // Execute the user-supplied DMA handler. - dprintf("INT3\n"); - if(_EXC_dma_handler_set) - _EXC_dma_handler(); - break; -8003bbf8: 00000000 nop - //SR ^= 1<<10; - //set_cop0_register(COP0_SR, SR); - - //while(IPENDING != 0) - { - for(i = 0; i < 11; i++) -8003bbfc: 8fc20010 lw v0,16(s8) -8003bc00: 00000000 nop -8003bc04: 24420001 addiu v0,v0,1 -8003bc08: afc20010 sw v0,16(s8) -8003bc0c: 8fc20010 lw v0,16(s8) -8003bc10: 00000000 nop -8003bc14: 2842000b slti v0,v0,11 -8003bc18: 1440ff9f bnez v0,8003ba98 <__psxsdk_real_exception_handler+0xd0> -8003bc1c: 00000000 nop - } - } - } - } - } -} -8003bc20: 00000000 nop -8003bc24: 03c0e821 move sp,s8 -8003bc28: 8fbf002c lw ra,44(sp) -8003bc2c: 8fbe0028 lw s8,40(sp) -8003bc30: 27bd0030 addiu sp,sp,48 -8003bc34: 03e00008 jr ra -8003bc38: 00000000 nop - -8003bc3c <__psxsdk_dma_handler>: - -static void __psxsdk_dma_handler() -{ -8003bc3c: 27bdfff0 addiu sp,sp,-16 -8003bc40: afbe000c sw s8,12(sp) -8003bc44: 03a0f021 move s8,sp - unsigned int s_dicr = DICR; -8003bc48: 3c021f80 lui v0,0x1f80 -8003bc4c: 344210f4 ori v0,v0,0x10f4 -8003bc50: 8c420000 lw v0,0(v0) -8003bc54: 00000000 nop -8003bc58: afc20000 sw v0,0(s8) - unsigned char irq = (s_dicr >> 24) & 127; -8003bc5c: 8fc20000 lw v0,0(s8) -8003bc60: 00000000 nop -8003bc64: 00021602 srl v0,v0,0x18 -8003bc68: 304200ff andi v0,v0,0xff -8003bc6c: 3042007f andi v0,v0,0x7f -8003bc70: a3c20004 sb v0,4(s8) - - if(irq & (1<<2)) // GPU -8003bc74: 93c20004 lbu v0,4(s8) -8003bc78: 00000000 nop -8003bc7c: 30420004 andi v0,v0,0x4 -8003bc80: 10400004 beqz v0,8003bc94 <__psxsdk_dma_handler+0x58> -8003bc84: 00000000 nop - __psxsdk_gpu_dma_finished = 1; -8003bc88: 3c028007 lui v0,0x8007 -8003bc8c: 24030001 li v1,1 -8003bc90: ac431d90 sw v1,7568(v0) - - // Acknowledge - DICR = s_dicr; -8003bc94: 3c021f80 lui v0,0x1f80 -8003bc98: 344210f4 ori v0,v0,0x10f4 -8003bc9c: 8fc30000 lw v1,0(s8) -8003bca0: 00000000 nop -8003bca4: ac430000 sw v1,0(v0) - - // Waste some cycles, so that the acknowledgement is reported -// int x; - -// for(x = 0; x < 1000; x++); -} -8003bca8: 00000000 nop -8003bcac: 03c0e821 move sp,s8 -8003bcb0: 8fbe000c lw s8,12(sp) -8003bcb4: 27bd0010 addiu sp,sp,16 -8003bcb8: 03e00008 jr ra -8003bcbc: 00000000 nop - -8003bcc0 <__PSX_Init_NoBios>: - -extern void _internal_cdromlib_callback(); - - void __PSX_Init_NoBios() - { -8003bcc0: 27bdffe8 addiu sp,sp,-24 -8003bcc4: afbf0014 sw ra,20(sp) -8003bcc8: afbe0010 sw s8,16(sp) -8003bccc: 03a0f021 move s8,sp - _EXC_vblank_handler = NULL; -8003bcd0: 3c028007 lui v0,0x8007 -8003bcd4: ac401d8c sw zero,7564(v0) - _EXC_cdrom_handler = _internal_cdromlib_callback; -8003bcd8: 3c028007 lui v0,0x8007 -8003bcdc: 3c038003 lui v1,0x8003 -8003bce0: 2463ac44 addiu v1,v1,-21436 -8003bce4: ac431d80 sw v1,7552(v0) - _EXC_dma_handler = __psxsdk_dma_handler; -8003bce8: 3c028007 lui v0,0x8007 -8003bcec: 3c038004 lui v1,0x8004 -8003bcf0: 2463bc3c addiu v1,v1,-17348 -8003bcf4: ac431d94 sw v1,7572(v0) - _EXC_sio_handler = NULL; -8003bcf8: 3c028007 lui v0,0x8007 -8003bcfc: ac401d88 sw zero,7560(v0) - - _EXC_vblank_handler_set = 0; -8003bd00: 3c028007 lui v0,0x8007 -8003bd04: ac401d74 sw zero,7540(v0) - _EXC_cdrom_handler_set = 1; -8003bd08: 3c028007 lui v0,0x8007 -8003bd0c: 24030001 li v1,1 -8003bd10: ac431d84 sw v1,7556(v0) - _EXC_dma_handler_set = 1; -8003bd14: 3c028007 lui v0,0x8007 -8003bd18: 24030001 li v1,1 -8003bd1c: ac431d78 sw v1,7544(v0) - _EXC_sio_handler_set = 0; -8003bd20: 3c028007 lui v0,0x8007 -8003bd24: ac401d7c sw zero,7548(v0) - - IMASK = 0; // Clear Mask -8003bd28: 3c021f80 lui v0,0x1f80 -8003bd2c: 34421074 ori v0,v0,0x1074 -8003bd30: ac400000 sw zero,0(v0) - IPENDING = 0; // Clear pending interrupts -8003bd34: 3c021f80 lui v0,0x1f80 -8003bd38: 34421070 ori v0,v0,0x1070 -8003bd3c: ac400000 sw zero,0(v0) - -// Disable interrupts - - set_cop0_register(COP0_SR, 0); -8003bd40: 00002821 move a1,zero -8003bd44: 2404000c li a0,12 -8003bd48: 0c00f072 jal 8003c1c8 -8003bd4c: 00000000 nop - -// Change exception vector to point to our exception manager - - *((unsigned int*)0x80000080) = 0x08000000 | ((((unsigned int)__psxsdk_exception_manager)>>2) & 0x3FFFFFF); -8003bd50: 3c028000 lui v0,0x8000 -8003bd54: 34420080 ori v0,v0,0x80 -8003bd58: 3c038004 lui v1,0x8004 -8003bd5c: 2463bdf4 addiu v1,v1,-16908 -8003bd60: 00032082 srl a0,v1,0x2 -8003bd64: 3c0303ff lui v1,0x3ff -8003bd68: 3463ffff ori v1,v1,0xffff -8003bd6c: 00832024 and a0,a0,v1 -8003bd70: 3c030800 lui v1,0x800 -8003bd74: 00831825 or v1,a0,v1 -8003bd78: ac430000 sw v1,0(v0) - *((unsigned int*)0x80000084) = 0; -8003bd7c: 3c028000 lui v0,0x8000 -8003bd80: 34420084 ori v0,v0,0x84 -8003bd84: ac400000 sw zero,0(v0) - - -// Enable interrupt generation, and interrupt 2 (PlayStation Interrupt Controller) - set_cop0_register(COP0_SR, (1<<10) | 1); -8003bd88: 24050401 li a1,1025 -8003bd8c: 2404000c li a0,12 -8003bd90: 0c00f072 jal 8003c1c8 -8003bd94: 00000000 nop - -// Enable VBlank, CDROM and DMA IRQs (on PlayStation Interrupt Controller) - IMASK = 1 | /* CDROM */ 4 | 8; -8003bd98: 3c021f80 lui v0,0x1f80 -8003bd9c: 34421074 ori v0,v0,0x1074 -8003bda0: 2403000d li v1,13 -8003bda4: ac430000 sw v1,0(v0) - -// Set DMA channel priority - DPCR = 0x07654321; -8003bda8: 3c021f80 lui v0,0x1f80 -8003bdac: 344210f0 ori v0,v0,0x10f0 -8003bdb0: 3c030765 lui v1,0x765 -8003bdb4: 34634321 ori v1,v1,0x4321 -8003bdb8: ac430000 sw v1,0(v0) - -// Enable DMA IRQ master, and IRQ generation for DMA channel 2 (GPU) - DICR = (1<<23) | (1<<(16+2)); -8003bdbc: 3c021f80 lui v0,0x1f80 -8003bdc0: 344210f4 ori v0,v0,0x10f4 -8003bdc4: 3c030084 lui v1,0x84 -8003bdc8: ac430000 sw v1,0(v0) - -// Setup variables - __psxsdk_gpu_dma_finished = 1; -8003bdcc: 3c028007 lui v0,0x8007 -8003bdd0: 24030001 li v1,1 -8003bdd4: ac431d90 sw v1,7568(v0) -} -8003bdd8: 00000000 nop -8003bddc: 03c0e821 move sp,s8 -8003bde0: 8fbf0014 lw ra,20(sp) -8003bde4: 8fbe0010 lw s8,16(sp) -8003bde8: 27bd0018 addiu sp,sp,24 -8003bdec: 03e00008 jr ra -8003bdf0: 00000000 nop - -8003bdf4 <__psxsdk_exception_manager>: -__psxsdk_exception_manager: - -# Save registers on stack - -.set noat - addiu $sp, $sp, -112 -8003bdf4: 27bdff90 afa10000 afa20004 afa30008 ...'............ - sw $at, 0($sp) - sw $v0, 4($sp) - sw $v1, 8($sp) - sw $a0, 12($sp) -8003be04: afa4000c afa50010 afa60014 afa70018 ................ - sw $a1, 16($sp) - sw $a2, 20($sp) - sw $a3, 24($sp) - sw $t0, 28($sp) -8003be14: afa8001c afa90020 afaa0024 afab0028 .... ...$...(... - sw $t1, 32($sp) - sw $t2, 36($sp) - sw $t3, 40($sp) - sw $t4, 44($sp) -8003be24: afac002c afad0030 afae0034 afaf0038 ,...0...4...8... - sw $t5, 48($sp) - sw $t6, 52($sp) - sw $t7, 56($sp) - sw $s0, 60($sp) -8003be34: afb0003c afb10040 afb20044 afb30048 <...@...D...H... - sw $s1, 64($sp) - sw $s2, 68($sp) - sw $s3, 72($sp) - sw $s4, 76($sp) -8003be44: afb4004c afb50050 afb60054 afb70058 L...P...T...X... - sw $s5, 80($sp) - sw $s6, 84($sp) - sw $s7, 88($sp) - sw $t8, 92($sp) -8003be54: afb8005c afb90060 afbc0064 afbe0068 \...`...d...h... - sw $t9, 96($sp) - sw $gp, 100($sp) - sw $fp, 104($sp) - sw $ra, 108($sp) -8003be64: afbf006c 0c00ee72 00000000 00000000 l...r........... - nop - -# Load registers from stack - -.set noat - lw $at, 0($sp) -8003be74: 8fa10000 8fa20004 8fa30008 8fa4000c ................ - lw $v0, 4($sp) - lw $v1, 8($sp) - lw $a0, 12($sp) - lw $a1, 16($sp) -8003be84: 8fa50010 8fa60014 8fa70018 8fa8001c ................ - lw $a2, 20($sp) - lw $a3, 24($sp) - lw $t0, 28($sp) - lw $t1, 32($sp) -8003be94: 8fa90020 8faa0024 8fab0028 8fac002c ...$...(...,... - lw $t2, 36($sp) - lw $t3, 40($sp) - lw $t4, 44($sp) - lw $t5, 48($sp) -8003bea4: 8fad0030 8fae0034 8faf0038 8fb0003c 0...4...8...<... - lw $t6, 52($sp) - lw $t7, 56($sp) - lw $s0, 60($sp) - lw $s1, 64($sp) -8003beb4: 8fb10040 8fb20044 8fb30048 8fb4004c @...D...H...L... - lw $s2, 68($sp) - lw $s3, 72($sp) - lw $s4, 76($sp) - lw $s5, 80($sp) -8003bec4: 8fb50050 8fb60054 8fb70058 8fb8005c P...T...X...\... - lw $s6, 84($sp) - lw $s7, 88($sp) - lw $t8, 92($sp) - lw $t9, 96($sp) -8003bed4: 8fb90060 8fbc0064 8fbe0068 8fbf006c `...d...h...l... - lw $gp, 100($sp) - lw $fp, 104($sp) - lw $ra, 108($sp) - addiu $sp, $sp, 112 -8003bee4: 27bd0070 401a7000 00000000 03400008 p..'.p.@......@. -# Get exception return address.. - mfc0 $k0, $14 -# Exit from exception handler -.set noreorder # Do not let the assembler fill the delay slot! - jr $k0 - rfe -8003bef4: 42000010 ...B - -8003bef8 : -#include - -unsigned int get_cop_register(unsigned char cop_num, - unsigned char register_num) -{ -8003bef8: 27bdffd0 addiu sp,sp,-48 -8003befc: afbf002c sw ra,44(sp) -8003bf00: afbe0028 sw s8,40(sp) -8003bf04: 03a0f021 move s8,sp -8003bf08: 00801821 move v1,a0 -8003bf0c: 00a01021 move v0,a1 -8003bf10: a3c30030 sb v1,48(s8) -8003bf14: a3c20034 sb v0,52(s8) -// Workaround for MIPS' simplicistic instruction set... - - unsigned int instr[] = -8003bf18: 3c024002 lui v0,0x4002 -8003bf1c: afc20014 sw v0,20(s8) -8003bf20: 3c0203e0 lui v0,0x3e0 -8003bf24: 34420008 ori v0,v0,0x8 -8003bf28: afc20018 sw v0,24(s8) -8003bf2c: afc0001c sw zero,28(s8) -8003bf30: afc00020 sw zero,32(s8) - {0x40020000, // cfc $v0, 0 - 0x03E00008, // jr $ra - 0x00000000, // nop - 0x00000000}; // nop - - int (*rawFunc)() = (void*)instr; -8003bf34: 27c20014 addiu v0,s8,20 -8003bf38: afc20010 sw v0,16(s8) - -// Write coprocessor register number inside instruction - instr[0] |= ( (cop_num & 3) << 26 ) | ( (register_num & 31) << 11 ); -8003bf3c: 8fc20014 lw v0,20(s8) -8003bf40: 93c30030 lbu v1,48(s8) -8003bf44: 00000000 nop -8003bf48: 30630003 andi v1,v1,0x3 -8003bf4c: 00032680 sll a0,v1,0x1a -8003bf50: 93c30034 lbu v1,52(s8) -8003bf54: 00000000 nop -8003bf58: 00031ac0 sll v1,v1,0xb -8003bf5c: 3063ffff andi v1,v1,0xffff -8003bf60: 00831825 or v1,a0,v1 -8003bf64: 00431025 or v0,v0,v1 -8003bf68: afc20014 sw v0,20(s8) - -// Execute modified instruction - return rawFunc(); -8003bf6c: 8fc20010 lw v0,16(s8) -8003bf70: 00000000 nop -8003bf74: 0040f809 jalr v0 -8003bf78: 00000000 nop -} -8003bf7c: 03c0e821 move sp,s8 -8003bf80: 8fbf002c lw ra,44(sp) -8003bf84: 8fbe0028 lw s8,40(sp) -8003bf88: 27bd0030 addiu sp,sp,48 -8003bf8c: 03e00008 jr ra -8003bf90: 00000000 nop - -8003bf94 : - -unsigned int get_cop_ctrl_register(unsigned char cop_num, - unsigned char register_num) -{ -8003bf94: 27bdffd0 addiu sp,sp,-48 -8003bf98: afbf002c sw ra,44(sp) -8003bf9c: afbe0028 sw s8,40(sp) -8003bfa0: 03a0f021 move s8,sp -8003bfa4: 00801821 move v1,a0 -8003bfa8: 00a01021 move v0,a1 -8003bfac: a3c30030 sb v1,48(s8) -8003bfb0: a3c20034 sb v0,52(s8) -// Workaround for MIPS' simplicistic instruction set... - unsigned int instr[] = -8003bfb4: 3c024042 lui v0,0x4042 -8003bfb8: afc20014 sw v0,20(s8) -8003bfbc: 3c0203e0 lui v0,0x3e0 -8003bfc0: 34420008 ori v0,v0,0x8 -8003bfc4: afc20018 sw v0,24(s8) -8003bfc8: afc0001c sw zero,28(s8) -8003bfcc: afc00020 sw zero,32(s8) - {0x40420000, // mfc $v0, 0 - 0x03E00008, // jr $ra - 0x00000000, // nop - 0x00000000}; // nop - - int (*rawFunc)() = (void*)instr; -8003bfd0: 27c20014 addiu v0,s8,20 -8003bfd4: afc20010 sw v0,16(s8) - -// Write coprocessor register number inside instruction - instr[0] |= ( (cop_num & 3) << 26 ) | ( (register_num & 31) << 11 ); -8003bfd8: 8fc20014 lw v0,20(s8) -8003bfdc: 93c30030 lbu v1,48(s8) -8003bfe0: 00000000 nop -8003bfe4: 30630003 andi v1,v1,0x3 -8003bfe8: 00032680 sll a0,v1,0x1a -8003bfec: 93c30034 lbu v1,52(s8) -8003bff0: 00000000 nop -8003bff4: 00031ac0 sll v1,v1,0xb -8003bff8: 3063ffff andi v1,v1,0xffff -8003bffc: 00831825 or v1,a0,v1 -8003c000: 00431025 or v0,v0,v1 -8003c004: afc20014 sw v0,20(s8) - -// Execute modified instruction - return rawFunc(); -8003c008: 8fc20010 lw v0,16(s8) -8003c00c: 00000000 nop -8003c010: 0040f809 jalr v0 -8003c014: 00000000 nop -} -8003c018: 03c0e821 move sp,s8 -8003c01c: 8fbf002c lw ra,44(sp) -8003c020: 8fbe0028 lw s8,40(sp) -8003c024: 27bd0030 addiu sp,sp,48 -8003c028: 03e00008 jr ra -8003c02c: 00000000 nop - -8003c030 : - -unsigned int get_cop0_register(unsigned char register_num) -{ -8003c030: 27bdffe8 addiu sp,sp,-24 -8003c034: afbf0014 sw ra,20(sp) -8003c038: afbe0010 sw s8,16(sp) -8003c03c: 03a0f021 move s8,sp -8003c040: 00801021 move v0,a0 -8003c044: a3c20018 sb v0,24(s8) - return get_cop_register(0, register_num); -8003c048: 93c20018 lbu v0,24(s8) -8003c04c: 00000000 nop -8003c050: 00402821 move a1,v0 -8003c054: 00002021 move a0,zero -8003c058: 0c00efbe jal 8003bef8 -8003c05c: 00000000 nop -} -8003c060: 03c0e821 move sp,s8 -8003c064: 8fbf0014 lw ra,20(sp) -8003c068: 8fbe0010 lw s8,16(sp) -8003c06c: 27bd0018 addiu sp,sp,24 -8003c070: 03e00008 jr ra -8003c074: 00000000 nop - -8003c078 : - -void set_cop_register(unsigned char cop_num, - unsigned char register_num, - unsigned int value) -{ -8003c078: 27bdffd0 addiu sp,sp,-48 -8003c07c: afbf002c sw ra,44(sp) -8003c080: afbe0028 sw s8,40(sp) -8003c084: 03a0f021 move s8,sp -8003c088: 00801821 move v1,a0 -8003c08c: 00a01021 move v0,a1 -8003c090: afc60038 sw a2,56(s8) -8003c094: a3c30030 sb v1,48(s8) -8003c098: a3c20034 sb v0,52(s8) -// Workaround for MIPS' simplicistic instruction set... - unsigned int instr[] = -8003c09c: 3c024084 lui v0,0x4084 -8003c0a0: afc20014 sw v0,20(s8) -8003c0a4: 3c0203e0 lui v0,0x3e0 -8003c0a8: 34420008 ori v0,v0,0x8 -8003c0ac: afc20018 sw v0,24(s8) -8003c0b0: afc0001c sw zero,28(s8) -8003c0b4: afc00020 sw zero,32(s8) - {0x40840000, // mtc $a0, 0 - 0x03E00008, // jr $ra - 0x00000000, // nop - 0x00000000}; // nop - - void (*rawFunc)(int value) = (void*)instr; -8003c0b8: 27c20014 addiu v0,s8,20 -8003c0bc: afc20010 sw v0,16(s8) - -// Write coprocessor register number inside instruction - instr[0] |= ( (cop_num & 3) << 26 ) | ( (register_num & 31) << 11 ); -8003c0c0: 8fc20014 lw v0,20(s8) -8003c0c4: 93c30030 lbu v1,48(s8) -8003c0c8: 00000000 nop -8003c0cc: 30630003 andi v1,v1,0x3 -8003c0d0: 00032680 sll a0,v1,0x1a -8003c0d4: 93c30034 lbu v1,52(s8) -8003c0d8: 00000000 nop -8003c0dc: 00031ac0 sll v1,v1,0xb -8003c0e0: 3063ffff andi v1,v1,0xffff -8003c0e4: 00831825 or v1,a0,v1 -8003c0e8: 00431025 or v0,v0,v1 -8003c0ec: afc20014 sw v0,20(s8) - -// Execute modified instruction - rawFunc(value); -8003c0f0: 8fc30038 lw v1,56(s8) -8003c0f4: 8fc20010 lw v0,16(s8) -8003c0f8: 00602021 move a0,v1 -8003c0fc: 0040f809 jalr v0 -8003c100: 00000000 nop -} -8003c104: 00000000 nop -8003c108: 03c0e821 move sp,s8 -8003c10c: 8fbf002c lw ra,44(sp) -8003c110: 8fbe0028 lw s8,40(sp) -8003c114: 27bd0030 addiu sp,sp,48 -8003c118: 03e00008 jr ra -8003c11c: 00000000 nop - -8003c120 : - -void set_cop_ctrl_register(unsigned char cop_num, - unsigned char register_num, - unsigned int value) -{ -8003c120: 27bdffd0 addiu sp,sp,-48 -8003c124: afbf002c sw ra,44(sp) -8003c128: afbe0028 sw s8,40(sp) -8003c12c: 03a0f021 move s8,sp -8003c130: 00801821 move v1,a0 -8003c134: 00a01021 move v0,a1 -8003c138: afc60038 sw a2,56(s8) -8003c13c: a3c30030 sb v1,48(s8) -8003c140: a3c20034 sb v0,52(s8) -// Workaround for MIPS' simplicistic instruction set... - unsigned int instr[] = -8003c144: 3c0240c4 lui v0,0x40c4 -8003c148: afc20014 sw v0,20(s8) -8003c14c: 3c0203e0 lui v0,0x3e0 -8003c150: 34420008 ori v0,v0,0x8 -8003c154: afc20018 sw v0,24(s8) -8003c158: afc0001c sw zero,28(s8) -8003c15c: afc00020 sw zero,32(s8) - {0x40C40000, // ctc $a0, 0 - 0x03E00008, // jr $ra - 0x00000000, // nop - 0x00000000}; // nop - - void (*rawFunc)(int value) = (void*)instr; -8003c160: 27c20014 addiu v0,s8,20 -8003c164: afc20010 sw v0,16(s8) - -// Write coprocessor register number inside instruction - instr[0] |= ( (cop_num & 3) << 26 ) | ( (register_num & 31) << 11 ); -8003c168: 8fc20014 lw v0,20(s8) -8003c16c: 93c30030 lbu v1,48(s8) -8003c170: 00000000 nop -8003c174: 30630003 andi v1,v1,0x3 -8003c178: 00032680 sll a0,v1,0x1a -8003c17c: 93c30034 lbu v1,52(s8) -8003c180: 00000000 nop -8003c184: 00031ac0 sll v1,v1,0xb -8003c188: 3063ffff andi v1,v1,0xffff -8003c18c: 00831825 or v1,a0,v1 -8003c190: 00431025 or v0,v0,v1 -8003c194: afc20014 sw v0,20(s8) - -// Execute modified instruction - rawFunc(value); -8003c198: 8fc30038 lw v1,56(s8) -8003c19c: 8fc20010 lw v0,16(s8) -8003c1a0: 00602021 move a0,v1 -8003c1a4: 0040f809 jalr v0 -8003c1a8: 00000000 nop -} -8003c1ac: 00000000 nop -8003c1b0: 03c0e821 move sp,s8 -8003c1b4: 8fbf002c lw ra,44(sp) -8003c1b8: 8fbe0028 lw s8,40(sp) -8003c1bc: 27bd0030 addiu sp,sp,48 -8003c1c0: 03e00008 jr ra -8003c1c4: 00000000 nop - -8003c1c8 : - -void set_cop0_register(unsigned char register_num, - unsigned int value) -{ -8003c1c8: 27bdffe8 addiu sp,sp,-24 -8003c1cc: afbf0014 sw ra,20(sp) -8003c1d0: afbe0010 sw s8,16(sp) -8003c1d4: 03a0f021 move s8,sp -8003c1d8: 00801021 move v0,a0 -8003c1dc: afc5001c sw a1,28(s8) -8003c1e0: a3c20018 sb v0,24(s8) - set_cop_register(0, register_num, value); -8003c1e4: 93c20018 lbu v0,24(s8) -8003c1e8: 8fc6001c lw a2,28(s8) -8003c1ec: 00402821 move a1,v0 -8003c1f0: 00002021 move a0,zero -8003c1f4: 0c00f01e jal 8003c078 -8003c1f8: 00000000 nop -} -8003c1fc: 00000000 nop -8003c200: 03c0e821 move sp,s8 -8003c204: 8fbf0014 lw ra,20(sp) -8003c208: 8fbe0010 lw s8,16(sp) -8003c20c: 27bd0018 addiu sp,sp,24 -8003c210: 03e00008 jr ra -8003c214: 00000000 nop - -8003c218 : - -void run_cop_instruction(unsigned char cop_num, - unsigned int operation) -{ -8003c218: 27bdffd0 addiu sp,sp,-48 -8003c21c: afbf002c sw ra,44(sp) -8003c220: afbe0028 sw s8,40(sp) -8003c224: 03a0f021 move s8,sp -8003c228: 00801021 move v0,a0 -8003c22c: afc50034 sw a1,52(s8) -8003c230: a3c20030 sb v0,48(s8) -// Workaround for MIPS' simplicistic instruction set... - unsigned int instr[] = -8003c234: 3c024200 lui v0,0x4200 -8003c238: afc20014 sw v0,20(s8) -8003c23c: 3c0203e0 lui v0,0x3e0 -8003c240: 34420008 ori v0,v0,0x8 -8003c244: afc20018 sw v0,24(s8) -8003c248: afc0001c sw zero,28(s8) -8003c24c: afc00020 sw zero,32(s8) - {0x42000000, // cop 0 - 0x03E00008, // jr $ra - 0x00000000, // nop - 0x00000000}; // nop - - void (*rawFunc)(void) = (void*)instr; -8003c250: 27c20014 addiu v0,s8,20 -8003c254: afc20010 sw v0,16(s8) - -// Write coprocessor register number inside instruction - instr[0] |= ( (cop_num & 3) << 26 ) | (operation & 0x1ffffff); -8003c258: 8fc30014 lw v1,20(s8) -8003c25c: 93c20030 lbu v0,48(s8) -8003c260: 00000000 nop -8003c264: 30420003 andi v0,v0,0x3 -8003c268: 00021680 sll v0,v0,0x1a -8003c26c: 00402821 move a1,v0 -8003c270: 8fc40034 lw a0,52(s8) -8003c274: 3c0201ff lui v0,0x1ff -8003c278: 3442ffff ori v0,v0,0xffff -8003c27c: 00821024 and v0,a0,v0 -8003c280: 00a21025 or v0,a1,v0 -8003c284: 00621025 or v0,v1,v0 -8003c288: afc20014 sw v0,20(s8) - -// Execute modified instruction - rawFunc(); -8003c28c: 8fc20010 lw v0,16(s8) -8003c290: 00000000 nop -8003c294: 0040f809 jalr v0 -8003c298: 00000000 nop -} -8003c29c: 00000000 nop -8003c2a0: 03c0e821 move sp,s8 -8003c2a4: 8fbf002c lw ra,44(sp) -8003c2a8: 8fbe0028 lw s8,40(sp) -8003c2ac: 27bd0030 addiu sp,sp,48 -8003c2b0: 03e00008 jr ra -8003c2b4: 00000000 nop - -8003c2b8 <__udivdi3>: -8003c2b8: 00c04021 move t0,a2 -8003c2bc: 00804821 move t1,a0 -8003c2c0: 14e00053 bnez a3,8003c410 <__udivdi3+0x158> -8003c2c4: 00a05021 move t2,a1 -8003c2c8: 00a6102b sltu v0,a1,a2 -8003c2cc: 1040006e beqz v0,8003c488 <__udivdi3+0x1d0> -8003c2d0: 3c020001 lui v0,0x1 -8003c2d4: 00c2102b sltu v0,a2,v0 -8003c2d8: 10400162 beqz v0,8003c864 <__udivdi3+0x5ac> -8003c2dc: 3c020100 lui v0,0x100 -8003c2e0: 2cc30100 sltiu v1,a2,256 -8003c2e4: 2c630001 sltiu v1,v1,1 -8003c2e8: 000318c0 sll v1,v1,0x3 -8003c2ec: 3c028004 lui v0,0x8004 -8003c2f0: 00663806 srlv a3,a2,v1 -8003c2f4: 2442f818 addiu v0,v0,-2024 -8003c2f8: 00e21021 addu v0,a3,v0 -8003c2fc: 90420000 lbu v0,0(v0) -8003c300: 00000000 nop -8003c304: 00431821 addu v1,v0,v1 -8003c308: 24020020 li v0,32 -8003c30c: 00431023 subu v0,v0,v1 -8003c310: 10400007 beqz v0,8003c330 <__udivdi3+0x78> -8003c314: 00085c02 srl t3,t0,0x10 -8003c318: 00453804 sllv a3,a1,v0 -8003c31c: 00641806 srlv v1,a0,v1 -8003c320: 00464004 sllv t0,a2,v0 -8003c324: 00675025 or t2,v1,a3 -8003c328: 00444804 sllv t1,a0,v0 -8003c32c: 00085c02 srl t3,t0,0x10 -8003c330: 15600002 bnez t3,8003c33c <__udivdi3+0x84> -8003c334: 014b001b divu zero,t2,t3 -8003c338: 0007000d break 0x7 -8003c33c: 3104ffff andi a0,t0,0xffff -8003c340: 00091402 srl v0,t1,0x10 -8003c344: 00001812 mflo v1 -8003c348: 00003010 mfhi a2 -8003c34c: 00063400 sll a2,a2,0x10 -8003c350: 00461025 or v0,v0,a2 -8003c354: 00830018 mult a0,v1 -8003c358: 00002812 mflo a1 -8003c35c: 0045302b sltu a2,v0,a1 -8003c360: 00000000 nop -8003c364: 15600002 bnez t3,8003c370 <__udivdi3+0xb8> -8003c368: 014b001b divu zero,t2,t3 -8003c36c: 0007000d break 0x7 -8003c370: 10c00009 beqz a2,8003c398 <__udivdi3+0xe0> -8003c374: 00000000 nop -8003c378: 00481021 addu v0,v0,t0 -8003c37c: 0048302b sltu a2,v0,t0 -8003c380: 14c00004 bnez a2,8003c394 <__udivdi3+0xdc> -8003c384: 2467ffff addiu a3,v1,-1 -8003c388: 0045302b sltu a2,v0,a1 -8003c38c: 14c0015f bnez a2,8003c90c <__udivdi3+0x654> -8003c390: 2463fffe addiu v1,v1,-2 -8003c394: 00e01821 move v1,a3 -8003c398: 00452823 subu a1,v0,a1 -8003c39c: 3129ffff andi t1,t1,0xffff -8003c3a0: 15600002 bnez t3,8003c3ac <__udivdi3+0xf4> -8003c3a4: 00ab001b divu zero,a1,t3 -8003c3a8: 0007000d break 0x7 -8003c3ac: 00001012 mflo v0 -8003c3b0: 00003010 mfhi a2 -8003c3b4: 00063400 sll a2,a2,0x10 -8003c3b8: 01264825 or t1,t1,a2 -8003c3bc: 00820018 mult a0,v0 -8003c3c0: 00002012 mflo a0 -8003c3c4: 0124302b sltu a2,t1,a0 -8003c3c8: 00000000 nop -8003c3cc: 15600002 bnez t3,8003c3d8 <__udivdi3+0x120> -8003c3d0: 00ab001b divu zero,a1,t3 -8003c3d4: 0007000d break 0x7 -8003c3d8: 10c00008 beqz a2,8003c3fc <__udivdi3+0x144> -8003c3dc: 01094821 addu t1,t0,t1 -8003c3e0: 0128402b sltu t0,t1,t0 -8003c3e4: 15000128 bnez t0,8003c888 <__udivdi3+0x5d0> -8003c3e8: 2445ffff addiu a1,v0,-1 -8003c3ec: 0124482b sltu t1,t1,a0 -8003c3f0: 11200125 beqz t1,8003c888 <__udivdi3+0x5d0> -8003c3f4: 00000000 nop -8003c3f8: 2442fffe addiu v0,v0,-2 -8003c3fc: 00031c00 sll v1,v1,0x10 -8003c400: 00621025 or v0,v1,v0 -8003c404: 00001821 move v1,zero -8003c408: 03e00008 jr ra -8003c40c: 00000000 nop -8003c410: 00a7102b sltu v0,a1,a3 -8003c414: 14400070 bnez v0,8003c5d8 <__udivdi3+0x320> -8003c418: 00001821 move v1,zero -8003c41c: 3c020001 lui v0,0x1 -8003c420: 00e2102b sltu v0,a3,v0 -8003c424: 1440006f bnez v0,8003c5e4 <__udivdi3+0x32c> -8003c428: 2ce80100 sltiu t0,a3,256 -8003c42c: 3c020100 lui v0,0x100 -8003c430: 00e2102b sltu v0,a3,v0 -8003c434: 10400002 beqz v0,8003c440 <__udivdi3+0x188> -8003c438: 24080018 li t0,24 -8003c43c: 24080010 li t0,16 -8003c440: 3c028004 lui v0,0x8004 -8003c444: 01071806 srlv v1,a3,t0 -8003c448: 2442f818 addiu v0,v0,-2024 -8003c44c: 00621021 addu v0,v1,v0 -8003c450: 90430000 lbu v1,0(v0) -8003c454: 240b0020 li t3,32 -8003c458: 00684021 addu t0,v1,t0 -8003c45c: 01685823 subu t3,t3,t0 -8003c460: 1560006c bnez t3,8003c614 <__udivdi3+0x35c> -8003c464: 01061006 srlv v0,a2,t0 -8003c468: 00e5382b sltu a3,a3,a1 -8003c46c: 14e00113 bnez a3,8003c8bc <__udivdi3+0x604> -8003c470: 00000000 nop -8003c474: 0086102b sltu v0,a0,a2 -8003c478: 38420001 xori v0,v0,0x1 -8003c47c: 00001821 move v1,zero -8003c480: 03e00008 jr ra -8003c484: 00000000 nop -8003c488: 14c00008 bnez a2,8003c4ac <__udivdi3+0x1f4> -8003c48c: 0102102b sltu v0,t0,v0 -8003c490: 24020001 li v0,1 -8003c494: 14c00002 bnez a2,8003c4a0 <__udivdi3+0x1e8> -8003c498: 0046001b divu zero,v0,a2 -8003c49c: 0007000d break 0x7 -8003c4a0: 00004012 mflo t0 -8003c4a4: 3c020001 lui v0,0x1 -8003c4a8: 0102102b sltu v0,t0,v0 -8003c4ac: 1440009c bnez v0,8003c720 <__udivdi3+0x468> -8003c4b0: 2d060100 sltiu a2,t0,256 -8003c4b4: 3c020100 lui v0,0x100 -8003c4b8: 0102102b sltu v0,t0,v0 -8003c4bc: 10400002 beqz v0,8003c4c8 <__udivdi3+0x210> -8003c4c0: 24060018 li a2,24 -8003c4c4: 24060010 li a2,16 -8003c4c8: 3c028004 lui v0,0x8004 -8003c4cc: 00c81806 srlv v1,t0,a2 -8003c4d0: 2442f818 addiu v0,v0,-2024 -8003c4d4: 00621021 addu v0,v1,v0 -8003c4d8: 90430000 lbu v1,0(v0) -8003c4dc: 240c0020 li t4,32 -8003c4e0: 00663021 addu a2,v1,a2 -8003c4e4: 01866023 subu t4,t4,a2 -8003c4e8: 15800099 bnez t4,8003c750 <__udivdi3+0x498> -8003c4ec: 00000000 nop -8003c4f0: 00a82823 subu a1,a1,t0 -8003c4f4: 00085402 srl t2,t0,0x10 -8003c4f8: 3104ffff andi a0,t0,0xffff -8003c4fc: 24030001 li v1,1 -8003c500: 15400002 bnez t2,8003c50c <__udivdi3+0x254> -8003c504: 00aa001b divu zero,a1,t2 -8003c508: 0007000d break 0x7 -8003c50c: 00091402 srl v0,t1,0x10 -8003c510: 00003812 mflo a3 -8003c514: 00003010 mfhi a2 -8003c518: 00063400 sll a2,a2,0x10 -8003c51c: 00461025 or v0,v0,a2 -8003c520: 00e40018 mult a3,a0 -8003c524: 00005812 mflo t3 -8003c528: 004b302b sltu a2,v0,t3 -8003c52c: 00000000 nop -8003c530: 15400002 bnez t2,8003c53c <__udivdi3+0x284> -8003c534: 00aa001b divu zero,a1,t2 -8003c538: 0007000d break 0x7 -8003c53c: 10c0000a beqz a2,8003c568 <__udivdi3+0x2b0> -8003c540: 004b2823 subu a1,v0,t3 -8003c544: 00481021 addu v0,v0,t0 -8003c548: 0048282b sltu a1,v0,t0 -8003c54c: 14a00004 bnez a1,8003c560 <__udivdi3+0x2a8> -8003c550: 24e6ffff addiu a2,a3,-1 -8003c554: 004b282b sltu a1,v0,t3 -8003c558: 14a000ea bnez a1,8003c904 <__udivdi3+0x64c> -8003c55c: 24e7fffe addiu a3,a3,-2 -8003c560: 00c03821 move a3,a2 -8003c564: 004b2823 subu a1,v0,t3 -8003c568: 3129ffff andi t1,t1,0xffff -8003c56c: 15400002 bnez t2,8003c578 <__udivdi3+0x2c0> -8003c570: 00aa001b divu zero,a1,t2 -8003c574: 0007000d break 0x7 -8003c578: 00001012 mflo v0 -8003c57c: 00003010 mfhi a2 -8003c580: 00063400 sll a2,a2,0x10 -8003c584: 01264825 or t1,t1,a2 -8003c588: 00440018 mult v0,a0 -8003c58c: 00002012 mflo a0 -8003c590: 0124302b sltu a2,t1,a0 -8003c594: 00000000 nop -8003c598: 15400002 bnez t2,8003c5a4 <__udivdi3+0x2ec> -8003c59c: 00aa001b divu zero,a1,t2 -8003c5a0: 0007000d break 0x7 -8003c5a4: 10c00008 beqz a2,8003c5c8 <__udivdi3+0x310> -8003c5a8: 01094821 addu t1,t0,t1 -8003c5ac: 0128402b sltu t0,t1,t0 -8003c5b0: 150000b1 bnez t0,8003c878 <__udivdi3+0x5c0> -8003c5b4: 2445ffff addiu a1,v0,-1 -8003c5b8: 0124482b sltu t1,t1,a0 -8003c5bc: 112000ae beqz t1,8003c878 <__udivdi3+0x5c0> -8003c5c0: 00000000 nop -8003c5c4: 2442fffe addiu v0,v0,-2 -8003c5c8: 00073c00 sll a3,a3,0x10 -8003c5cc: 00e21025 or v0,a3,v0 -8003c5d0: 03e00008 jr ra -8003c5d4: 00000000 nop -8003c5d8: 00001021 move v0,zero -8003c5dc: 03e00008 jr ra -8003c5e0: 00000000 nop -8003c5e4: 2d080001 sltiu t0,t0,1 -8003c5e8: 000840c0 sll t0,t0,0x3 -8003c5ec: 3c028004 lui v0,0x8004 -8003c5f0: 01071806 srlv v1,a3,t0 -8003c5f4: 2442f818 addiu v0,v0,-2024 -8003c5f8: 00621021 addu v0,v1,v0 -8003c5fc: 90430000 lbu v1,0(v0) -8003c600: 240b0020 li t3,32 -8003c604: 00684021 addu t0,v1,t0 -8003c608: 01685823 subu t3,t3,t0 -8003c60c: 1160ff96 beqz t3,8003c468 <__udivdi3+0x1b0> -8003c610: 01061006 srlv v0,a2,t0 -8003c614: 01673804 sllv a3,a3,t3 -8003c618: 00e23825 or a3,a3,v0 -8003c61c: 01056806 srlv t5,a1,t0 -8003c620: 00076402 srl t4,a3,0x10 -8003c624: 15800002 bnez t4,8003c630 <__udivdi3+0x378> -8003c628: 01ac001b divu zero,t5,t4 -8003c62c: 0007000d break 0x7 -8003c630: 30eeffff andi t6,a3,0xffff -8003c634: 01044006 srlv t0,a0,t0 -8003c638: 01652804 sllv a1,a1,t3 -8003c63c: 01052825 or a1,t0,a1 -8003c640: 00055402 srl t2,a1,0x10 -8003c644: 00001812 mflo v1 -8003c648: 00007810 mfhi t7 -8003c64c: 000f4400 sll t0,t7,0x10 -8003c650: 01484025 or t0,t2,t0 -8003c654: 01c30018 mult t6,v1 -8003c658: 00004812 mflo t1 -8003c65c: 0109102b sltu v0,t0,t1 -8003c660: 00000000 nop -8003c664: 15800002 bnez t4,8003c670 <__udivdi3+0x3b8> -8003c668: 01ac001b divu zero,t5,t4 -8003c66c: 0007000d break 0x7 -8003c670: 10400006 beqz v0,8003c68c <__udivdi3+0x3d4> -8003c674: 01663004 sllv a2,a2,t3 -8003c678: 01074021 addu t0,t0,a3 -8003c67c: 0107102b sltu v0,t0,a3 -8003c680: 10400097 beqz v0,8003c8e0 <__udivdi3+0x628> -8003c684: 246affff addiu t2,v1,-1 -8003c688: 01401821 move v1,t2 -8003c68c: 01094823 subu t1,t0,t1 -8003c690: 30a8ffff andi t0,a1,0xffff -8003c694: 15800002 bnez t4,8003c6a0 <__udivdi3+0x3e8> -8003c698: 012c001b divu zero,t1,t4 -8003c69c: 0007000d break 0x7 -8003c6a0: 00001012 mflo v0 -8003c6a4: 00006810 mfhi t5 -8003c6a8: 000d2c00 sll a1,t5,0x10 -8003c6ac: 01052825 or a1,t0,a1 -8003c6b0: 01c20018 mult t6,v0 -8003c6b4: 00005012 mflo t2 -8003c6b8: 00aa402b sltu t0,a1,t2 -8003c6bc: 00000000 nop -8003c6c0: 15800002 bnez t4,8003c6cc <__udivdi3+0x414> -8003c6c4: 012c001b divu zero,t1,t4 -8003c6c8: 0007000d break 0x7 -8003c6cc: 11000006 beqz t0,8003c6e8 <__udivdi3+0x430> -8003c6d0: 00000000 nop -8003c6d4: 00a72821 addu a1,a1,a3 -8003c6d8: 00a7402b sltu t0,a1,a3 -8003c6dc: 1100007b beqz t0,8003c8cc <__udivdi3+0x614> -8003c6e0: 2449ffff addiu t1,v0,-1 -8003c6e4: 01201021 move v0,t1 -8003c6e8: 00031c00 sll v1,v1,0x10 -8003c6ec: 00621025 or v0,v1,v0 -8003c6f0: 00aa2823 subu a1,a1,t2 -8003c6f4: 00460019 multu v0,a2 -8003c6f8: 00003810 mfhi a3 -8003c6fc: 00a7182b sltu v1,a1,a3 -8003c700: 00003012 mflo a2 -8003c704: 14600066 bnez v1,8003c8a0 <__udivdi3+0x5e8> -8003c708: 00000000 nop -8003c70c: 10a70060 beq a1,a3,8003c890 <__udivdi3+0x5d8> -8003c710: 00000000 nop -8003c714: 00001821 move v1,zero -8003c718: 03e00008 jr ra -8003c71c: 00000000 nop -8003c720: 2cc60001 sltiu a2,a2,1 -8003c724: 000630c0 sll a2,a2,0x3 -8003c728: 3c028004 lui v0,0x8004 -8003c72c: 00c81806 srlv v1,t0,a2 -8003c730: 2442f818 addiu v0,v0,-2024 -8003c734: 00621021 addu v0,v1,v0 -8003c738: 90430000 lbu v1,0(v0) -8003c73c: 240c0020 li t4,32 -8003c740: 00663021 addu a2,v1,a2 -8003c744: 01866023 subu t4,t4,a2 -8003c748: 1180ff69 beqz t4,8003c4f0 <__udivdi3+0x238> -8003c74c: 00000000 nop -8003c750: 01884004 sllv t0,t0,t4 -8003c754: 00c56806 srlv t5,a1,a2 -8003c758: 00085402 srl t2,t0,0x10 -8003c75c: 15400002 bnez t2,8003c768 <__udivdi3+0x4b0> -8003c760: 01aa001b divu zero,t5,t2 -8003c764: 0007000d break 0x7 -8003c768: 310bffff andi t3,t0,0xffff -8003c76c: 01853804 sllv a3,a1,t4 -8003c770: 01844804 sllv t1,a0,t4 -8003c774: 00c43006 srlv a2,a0,a2 -8003c778: 00c73825 or a3,a2,a3 -8003c77c: 00072c02 srl a1,a3,0x10 -8003c780: 00001812 mflo v1 -8003c784: 00001010 mfhi v0 -8003c788: 00021400 sll v0,v0,0x10 -8003c78c: 00a21025 or v0,a1,v0 -8003c790: 00006012 mflo t4 - ... -8003c79c: 01630018 mult t3,v1 -8003c7a0: 00002012 mflo a0 -8003c7a4: 0044182b sltu v1,v0,a0 -8003c7a8: 00000000 nop -8003c7ac: 15400002 bnez t2,8003c7b8 <__udivdi3+0x500> -8003c7b0: 01aa001b divu zero,t5,t2 -8003c7b4: 0007000d break 0x7 -8003c7b8: 1060000a beqz v1,8003c7e4 <__udivdi3+0x52c> -8003c7bc: 00000000 nop -8003c7c0: 00481021 addu v0,v0,t0 -8003c7c4: 0048182b sltu v1,v0,t0 -8003c7c8: 1460004c bnez v1,8003c8fc <__udivdi3+0x644> -8003c7cc: 2585ffff addiu a1,t4,-1 -8003c7d0: 0044182b sltu v1,v0,a0 -8003c7d4: 10600049 beqz v1,8003c8fc <__udivdi3+0x644> -8003c7d8: 00000000 nop -8003c7dc: 258cfffe addiu t4,t4,-2 -8003c7e0: 00481021 addu v0,v0,t0 -8003c7e4: 00442023 subu a0,v0,a0 -8003c7e8: 30e6ffff andi a2,a3,0xffff -8003c7ec: 15400002 bnez t2,8003c7f8 <__udivdi3+0x540> -8003c7f0: 008a001b divu zero,a0,t2 -8003c7f4: 0007000d break 0x7 -8003c7f8: 00001812 mflo v1 -8003c7fc: 00001010 mfhi v0 -8003c800: 00021400 sll v0,v0,0x10 -8003c804: 00c21025 or v0,a2,v0 -8003c808: 01630018 mult t3,v1 -8003c80c: 00002812 mflo a1 -8003c810: 0045302b sltu a2,v0,a1 -8003c814: 00000000 nop -8003c818: 15400002 bnez t2,8003c824 <__udivdi3+0x56c> -8003c81c: 008a001b divu zero,a0,t2 -8003c820: 0007000d break 0x7 -8003c824: 10c0000a beqz a2,8003c850 <__udivdi3+0x598> -8003c828: 00000000 nop -8003c82c: 00481021 addu v0,v0,t0 -8003c830: 0048202b sltu a0,v0,t0 -8003c834: 1480002f bnez a0,8003c8f4 <__udivdi3+0x63c> -8003c838: 2466ffff addiu a2,v1,-1 -8003c83c: 0045202b sltu a0,v0,a1 -8003c840: 1080002c beqz a0,8003c8f4 <__udivdi3+0x63c> -8003c844: 00000000 nop -8003c848: 2463fffe addiu v1,v1,-2 -8003c84c: 00481021 addu v0,v0,t0 -8003c850: 000c6400 sll t4,t4,0x10 -8003c854: 00452823 subu a1,v0,a1 -8003c858: 01831825 or v1,t4,v1 -8003c85c: 1000ff28 b 8003c500 <__udivdi3+0x248> -8003c860: 01602021 move a0,t3 -8003c864: 00c2102b sltu v0,a2,v0 -8003c868: 10400012 beqz v0,8003c8b4 <__udivdi3+0x5fc> -8003c86c: 00000000 nop -8003c870: 1000fe9e b 8003c2ec <__udivdi3+0x34> -8003c874: 24030010 li v1,16 -8003c878: 00a01021 move v0,a1 -8003c87c: 00073c00 sll a3,a3,0x10 -8003c880: 1000ff53 b 8003c5d0 <__udivdi3+0x318> -8003c884: 00e21025 or v0,a3,v0 -8003c888: 1000fedc b 8003c3fc <__udivdi3+0x144> -8003c88c: 00a01021 move v0,a1 -8003c890: 01642004 sllv a0,a0,t3 -8003c894: 0086202b sltu a0,a0,a2 -8003c898: 1080ff9e beqz a0,8003c714 <__udivdi3+0x45c> -8003c89c: 00000000 nop -8003c8a0: 2442ffff addiu v0,v0,-1 -8003c8a4: 1000ff9c b 8003c718 <__udivdi3+0x460> -8003c8a8: 00001821 move v1,zero -8003c8ac: 1000ff06 b 8003c4c8 <__udivdi3+0x210> -8003c8b0: 24060018 li a2,24 -8003c8b4: 1000fe8d b 8003c2ec <__udivdi3+0x34> -8003c8b8: 24030018 li v1,24 -8003c8bc: 00001821 move v1,zero -8003c8c0: 24020001 li v0,1 -8003c8c4: 03e00008 jr ra -8003c8c8: 00000000 nop -8003c8cc: 00aa402b sltu t0,a1,t2 -8003c8d0: 1100ff84 beqz t0,8003c6e4 <__udivdi3+0x42c> -8003c8d4: 2442fffe addiu v0,v0,-2 -8003c8d8: 1000ff83 b 8003c6e8 <__udivdi3+0x430> -8003c8dc: 00a72821 addu a1,a1,a3 -8003c8e0: 0109102b sltu v0,t0,t1 -8003c8e4: 1040ff68 beqz v0,8003c688 <__udivdi3+0x3d0> -8003c8e8: 2463fffe addiu v1,v1,-2 -8003c8ec: 1000ff67 b 8003c68c <__udivdi3+0x3d4> -8003c8f0: 01074021 addu t0,t0,a3 -8003c8f4: 1000ffd6 b 8003c850 <__udivdi3+0x598> -8003c8f8: 00c01821 move v1,a2 -8003c8fc: 1000ffb9 b 8003c7e4 <__udivdi3+0x52c> -8003c900: 00a06021 move t4,a1 -8003c904: 1000ff17 b 8003c564 <__udivdi3+0x2ac> -8003c908: 00481021 addu v0,v0,t0 -8003c90c: 1000fea2 b 8003c398 <__udivdi3+0xe0> -8003c910: 00481021 addu v0,v0,t0 - -8003c914 <__umoddi3>: -8003c914: 00c04021 move t0,a2 -8003c918: 00806821 move t5,a0 -8003c91c: 14e00052 bnez a3,8003ca68 <__umoddi3+0x154> -8003c920: 00a01821 move v1,a1 -8003c924: 00a6102b sltu v0,a1,a2 -8003c928: 10400071 beqz v0,8003caf0 <__umoddi3+0x1dc> -8003c92c: 3c020001 lui v0,0x1 -8003c930: 00c2102b sltu v0,a2,v0 -8003c934: 10400163 beqz v0,8003cec4 <__umoddi3+0x5b0> -8003c938: 3c020100 lui v0,0x100 -8003c93c: 2ccb0100 sltiu t3,a2,256 -8003c940: 2d6b0001 sltiu t3,t3,1 -8003c944: 000b58c0 sll t3,t3,0x3 -8003c948: 3c028004 lui v0,0x8004 -8003c94c: 01663806 srlv a3,a2,t3 -8003c950: 2442f818 addiu v0,v0,-2024 -8003c954: 00e21021 addu v0,a3,v0 -8003c958: 904a0000 lbu t2,0(v0) -8003c95c: 24020020 li v0,32 -8003c960: 014b4821 addu t1,t2,t3 -8003c964: 00495823 subu t3,v0,t1 -8003c968: 11600007 beqz t3,8003c988 <__umoddi3+0x74> -8003c96c: 00086402 srl t4,t0,0x10 -8003c970: 01652804 sllv a1,a1,t3 -8003c974: 01244806 srlv t1,a0,t1 -8003c978: 01664004 sllv t0,a2,t3 -8003c97c: 01251825 or v1,t1,a1 -8003c980: 01646804 sllv t5,a0,t3 -8003c984: 00086402 srl t4,t0,0x10 -8003c988: 15800002 bnez t4,8003c994 <__umoddi3+0x80> -8003c98c: 006c001b divu zero,v1,t4 -8003c990: 0007000d break 0x7 -8003c994: 3106ffff andi a2,t0,0xffff -8003c998: 000d5402 srl t2,t5,0x10 -8003c99c: 00007012 mflo t6 -8003c9a0: 00004810 mfhi t1 -8003c9a4: 00094c00 sll t1,t1,0x10 -8003c9a8: 01495025 or t2,t2,t1 -8003c9ac: 00ce0018 mult a2,t6 -8003c9b0: 00007012 mflo t6 -8003c9b4: 014e782b sltu t7,t2,t6 -8003c9b8: 00000000 nop -8003c9bc: 15800002 bnez t4,8003c9c8 <__umoddi3+0xb4> -8003c9c0: 006c001b divu zero,v1,t4 -8003c9c4: 0007000d break 0x7 -8003c9c8: 11e00009 beqz t7,8003c9f0 <__umoddi3+0xdc> -8003c9cc: 014e4823 subu t1,t2,t6 -8003c9d0: 01485021 addu t2,t2,t0 -8003c9d4: 0148102b sltu v0,t2,t0 -8003c9d8: 14400005 bnez v0,8003c9f0 <__umoddi3+0xdc> -8003c9dc: 014e4823 subu t1,t2,t6 -8003c9e0: 014e102b sltu v0,t2,t6 -8003c9e4: 14400152 bnez v0,8003cf30 <__umoddi3+0x61c> -8003c9e8: 00000000 nop -8003c9ec: 014e4823 subu t1,t2,t6 -8003c9f0: 31a7ffff andi a3,t5,0xffff -8003c9f4: 15800002 bnez t4,8003ca00 <__umoddi3+0xec> -8003c9f8: 012c001b divu zero,t1,t4 -8003c9fc: 0007000d break 0x7 -8003ca00: 00001812 mflo v1 -8003ca04: 00002810 mfhi a1 -8003ca08: 00052c00 sll a1,a1,0x10 -8003ca0c: 00e52825 or a1,a3,a1 -8003ca10: 00c30018 mult a2,v1 -8003ca14: 00001812 mflo v1 -8003ca18: 00a3102b sltu v0,a1,v1 -8003ca1c: 00000000 nop -8003ca20: 15800002 bnez t4,8003ca2c <__umoddi3+0x118> -8003ca24: 012c001b divu zero,t1,t4 -8003ca28: 0007000d break 0x7 -8003ca2c: 10400009 beqz v0,8003ca54 <__umoddi3+0x140> -8003ca30: 00000000 nop -8003ca34: 00a82821 addu a1,a1,t0 -8003ca38: 00a8102b sltu v0,a1,t0 -8003ca3c: 14400005 bnez v0,8003ca54 <__umoddi3+0x140> -8003ca40: 00000000 nop -8003ca44: 00a3102b sltu v0,a1,v1 -8003ca48: 10400002 beqz v0,8003ca54 <__umoddi3+0x140> -8003ca4c: 00000000 nop -8003ca50: 00a82821 addu a1,a1,t0 -8003ca54: 00a31823 subu v1,a1,v1 -8003ca58: 01631006 srlv v0,v1,t3 -8003ca5c: 00001821 move v1,zero -8003ca60: 03e00008 jr ra -8003ca64: 00000000 nop -8003ca68: 00a7102b sltu v0,a1,a3 -8003ca6c: 14400073 bnez v0,8003cc3c <__umoddi3+0x328> -8003ca70: 00801021 move v0,a0 -8003ca74: 3c020001 lui v0,0x1 -8003ca78: 00e2102b sltu v0,a3,v0 -8003ca7c: 14400072 bnez v0,8003cc48 <__umoddi3+0x334> -8003ca80: 2ce80100 sltiu t0,a3,256 -8003ca84: 3c020100 lui v0,0x100 -8003ca88: 00e2102b sltu v0,a3,v0 -8003ca8c: 10400002 beqz v0,8003ca98 <__umoddi3+0x184> -8003ca90: 24080018 li t0,24 -8003ca94: 24080010 li t0,16 -8003ca98: 3c028004 lui v0,0x8004 -8003ca9c: 01074806 srlv t1,a3,t0 -8003caa0: 2442f818 addiu v0,v0,-2024 -8003caa4: 01221021 addu v0,t1,v0 -8003caa8: 90420000 lbu v0,0(v0) -8003caac: 240f0020 li t7,32 -8003cab0: 00481021 addu v0,v0,t0 -8003cab4: 01e27823 subu t7,t7,v0 -8003cab8: 15e0006f bnez t7,8003cc78 <__umoddi3+0x364> -8003cabc: 00000000 nop -8003cac0: 00e5102b sltu v0,a3,a1 -8003cac4: 14400005 bnez v0,8003cadc <__umoddi3+0x1c8> -8003cac8: 00861023 subu v0,a0,a2 -8003cacc: 0086102b sltu v0,a0,a2 -8003cad0: 14400119 bnez v0,8003cf38 <__umoddi3+0x624> -8003cad4: 00000000 nop -8003cad8: 00861023 subu v0,a0,a2 -8003cadc: 00a72823 subu a1,a1,a3 -8003cae0: 0082182b sltu v1,a0,v0 -8003cae4: 00a31823 subu v1,a1,v1 -8003cae8: 03e00008 jr ra -8003caec: 00000000 nop -8003caf0: 14c00008 bnez a2,8003cb14 <__umoddi3+0x200> -8003caf4: 0102102b sltu v0,t0,v0 -8003caf8: 24020001 li v0,1 -8003cafc: 14c00002 bnez a2,8003cb08 <__umoddi3+0x1f4> -8003cb00: 0046001b divu zero,v0,a2 -8003cb04: 0007000d break 0x7 -8003cb08: 00004012 mflo t0 -8003cb0c: 3c020001 lui v0,0x1 -8003cb10: 0102102b sltu v0,t0,v0 -8003cb14: 144000a5 bnez v0,8003cdac <__umoddi3+0x498> -8003cb18: 2d090100 sltiu t1,t0,256 -8003cb1c: 3c020100 lui v0,0x100 -8003cb20: 0102102b sltu v0,t0,v0 -8003cb24: 10400002 beqz v0,8003cb30 <__umoddi3+0x21c> -8003cb28: 24090018 li t1,24 -8003cb2c: 24090010 li t1,16 -8003cb30: 3c028004 lui v0,0x8004 -8003cb34: 01281806 srlv v1,t0,t1 -8003cb38: 2442f818 addiu v0,v0,-2024 -8003cb3c: 00621021 addu v0,v1,v0 -8003cb40: 90460000 lbu a2,0(v0) -8003cb44: 24020020 li v0,32 -8003cb48: 00c94821 addu t1,a2,t1 -8003cb4c: 00495823 subu t3,v0,t1 -8003cb50: 156000a2 bnez t3,8003cddc <__umoddi3+0x4c8> -8003cb54: 00000000 nop -8003cb58: 00a84823 subu t1,a1,t0 -8003cb5c: 00086402 srl t4,t0,0x10 -8003cb60: 3102ffff andi v0,t0,0xffff -8003cb64: 15800002 bnez t4,8003cb70 <__umoddi3+0x25c> -8003cb68: 012c001b divu zero,t1,t4 -8003cb6c: 0007000d break 0x7 -8003cb70: 000d5402 srl t2,t5,0x10 -8003cb74: 00003012 mflo a2 -8003cb78: 00001810 mfhi v1 -8003cb7c: 00031c00 sll v1,v1,0x10 -8003cb80: 01435025 or t2,t2,v1 -8003cb84: 00c20018 mult a2,v0 -8003cb88: 00003012 mflo a2 -8003cb8c: 0146202b sltu a0,t2,a2 -8003cb90: 00000000 nop -8003cb94: 15800002 bnez t4,8003cba0 <__umoddi3+0x28c> -8003cb98: 012c001b divu zero,t1,t4 -8003cb9c: 0007000d break 0x7 -8003cba0: 10800009 beqz a0,8003cbc8 <__umoddi3+0x2b4> -8003cba4: 01464823 subu t1,t2,a2 -8003cba8: 01485021 addu t2,t2,t0 -8003cbac: 0148182b sltu v1,t2,t0 -8003cbb0: 14600005 bnez v1,8003cbc8 <__umoddi3+0x2b4> -8003cbb4: 01464823 subu t1,t2,a2 -8003cbb8: 0146182b sltu v1,t2,a2 -8003cbbc: 146000da bnez v1,8003cf28 <__umoddi3+0x614> -8003cbc0: 00000000 nop -8003cbc4: 01464823 subu t1,t2,a2 -8003cbc8: 31aaffff andi t2,t5,0xffff -8003cbcc: 15800002 bnez t4,8003cbd8 <__umoddi3+0x2c4> -8003cbd0: 012c001b divu zero,t1,t4 -8003cbd4: 0007000d break 0x7 -8003cbd8: 00001812 mflo v1 -8003cbdc: 00003810 mfhi a3 -8003cbe0: 00073c00 sll a3,a3,0x10 -8003cbe4: 00000000 nop -8003cbe8: 00620018 mult v1,v0 -8003cbec: 01471825 or v1,t2,a3 -8003cbf0: 00001012 mflo v0 -8003cbf4: 0062202b sltu a0,v1,v0 -8003cbf8: 00000000 nop -8003cbfc: 15800002 bnez t4,8003cc08 <__umoddi3+0x2f4> -8003cc00: 012c001b divu zero,t1,t4 -8003cc04: 0007000d break 0x7 -8003cc08: 10800008 beqz a0,8003cc2c <__umoddi3+0x318> -8003cc0c: 00000000 nop -8003cc10: 00681821 addu v1,v1,t0 -8003cc14: 0068202b sltu a0,v1,t0 -8003cc18: 14800004 bnez a0,8003cc2c <__umoddi3+0x318> -8003cc1c: 0062202b sltu a0,v1,v0 -8003cc20: 10800002 beqz a0,8003cc2c <__umoddi3+0x318> -8003cc24: 00000000 nop -8003cc28: 00681821 addu v1,v1,t0 -8003cc2c: 00621823 subu v1,v1,v0 -8003cc30: 01631006 srlv v0,v1,t3 -8003cc34: 1000ff8a b 8003ca60 <__umoddi3+0x14c> -8003cc38: 00001821 move v1,zero -8003cc3c: 00a01821 move v1,a1 -8003cc40: 03e00008 jr ra -8003cc44: 00000000 nop -8003cc48: 2d080001 sltiu t0,t0,1 -8003cc4c: 000840c0 sll t0,t0,0x3 -8003cc50: 3c028004 lui v0,0x8004 -8003cc54: 01074806 srlv t1,a3,t0 -8003cc58: 2442f818 addiu v0,v0,-2024 -8003cc5c: 01221021 addu v0,t1,v0 -8003cc60: 90420000 lbu v0,0(v0) -8003cc64: 240f0020 li t7,32 -8003cc68: 00481021 addu v0,v0,t0 -8003cc6c: 01e27823 subu t7,t7,v0 -8003cc70: 11e0ff93 beqz t7,8003cac0 <__umoddi3+0x1ac> -8003cc74: 00000000 nop -8003cc78: 01e73804 sllv a3,a3,t7 -8003cc7c: 00465006 srlv t2,a2,v0 -8003cc80: 00ea5025 or t2,a3,t2 -8003cc84: 0045c806 srlv t9,a1,v0 -8003cc88: 000ac402 srl t8,t2,0x10 -8003cc8c: 17000002 bnez t8,8003cc98 <__umoddi3+0x384> -8003cc90: 0338001b divu zero,t9,t8 -8003cc94: 0007000d break 0x7 -8003cc98: 3143ffff andi v1,t2,0xffff -8003cc9c: 01e53804 sllv a3,a1,t7 -8003cca0: 00444806 srlv t1,a0,v0 -8003cca4: 01274825 or t1,t1,a3 -8003cca8: 00097402 srl t6,t1,0x10 -8003ccac: 01e63804 sllv a3,a2,t7 -8003ccb0: 00005812 mflo t3 -8003ccb4: 00006810 mfhi t5 -8003ccb8: 000d6c00 sll t5,t5,0x10 -8003ccbc: 01cd6825 or t5,t6,t5 -8003ccc0: 006b0018 mult v1,t3 -8003ccc4: 00006012 mflo t4 -8003ccc8: 01ac282b sltu a1,t5,t4 -8003cccc: 00000000 nop -8003ccd0: 17000002 bnez t8,8003ccdc <__umoddi3+0x3c8> -8003ccd4: 0338001b divu zero,t9,t8 -8003ccd8: 0007000d break 0x7 -8003ccdc: 10a00006 beqz a1,8003ccf8 <__umoddi3+0x3e4> -8003cce0: 01e42004 sllv a0,a0,t7 -8003cce4: 01aa6821 addu t5,t5,t2 -8003cce8: 01aa282b sltu a1,t5,t2 -8003ccec: 10a00089 beqz a1,8003cf14 <__umoddi3+0x600> -8003ccf0: 2566ffff addiu a2,t3,-1 -8003ccf4: 00c05821 move t3,a2 -8003ccf8: 01ac6023 subu t4,t5,t4 -8003ccfc: 3129ffff andi t1,t1,0xffff -8003cd00: 17000002 bnez t8,8003cd0c <__umoddi3+0x3f8> -8003cd04: 0198001b divu zero,t4,t8 -8003cd08: 0007000d break 0x7 -8003cd0c: 00002812 mflo a1 -8003cd10: 00004010 mfhi t0 -8003cd14: 00084400 sll t0,t0,0x10 -8003cd18: 01284025 or t0,t1,t0 -8003cd1c: 00650018 mult v1,a1 -8003cd20: 00001812 mflo v1 -8003cd24: 0103302b sltu a2,t0,v1 -8003cd28: 00000000 nop -8003cd2c: 17000002 bnez t8,8003cd38 <__umoddi3+0x424> -8003cd30: 0198001b divu zero,t4,t8 -8003cd34: 0007000d break 0x7 -8003cd38: 10c00006 beqz a2,8003cd54 <__umoddi3+0x440> -8003cd3c: 00000000 nop -8003cd40: 010a4021 addu t0,t0,t2 -8003cd44: 010a302b sltu a2,t0,t2 -8003cd48: 10c0006d beqz a2,8003cf00 <__umoddi3+0x5ec> -8003cd4c: 24a9ffff addiu t1,a1,-1 -8003cd50: 01202821 move a1,t1 -8003cd54: 000b4c00 sll t1,t3,0x10 -8003cd58: 01255825 or t3,t1,a1 -8003cd5c: 01034023 subu t0,t0,v1 -8003cd60: 01670019 multu t3,a3 -8003cd64: 00006810 mfhi t5 -8003cd68: 010d282b sltu a1,t0,t5 -8003cd6c: 00006012 mflo t4 -8003cd70: 14a00059 bnez a1,8003ced8 <__umoddi3+0x5c4> -8003cd74: 00000000 nop -8003cd78: 110d0072 beq t0,t5,8003cf44 <__umoddi3+0x630> -8003cd7c: 00000000 nop -8003cd80: 010d4023 subu t0,t0,t5 -8003cd84: 00003812 mflo a3 -8003cd88: 00873823 subu a3,a0,a3 -8003cd8c: 0087202b sltu a0,a0,a3 -8003cd90: 01044023 subu t0,t0,a0 -8003cd94: 00482004 sllv a0,t0,v0 -8003cd98: 01e73806 srlv a3,a3,t7 -8003cd9c: 00871025 or v0,a0,a3 -8003cda0: 01e81806 srlv v1,t0,t7 -8003cda4: 03e00008 jr ra -8003cda8: 00000000 nop -8003cdac: 2d290001 sltiu t1,t1,1 -8003cdb0: 000948c0 sll t1,t1,0x3 -8003cdb4: 3c028004 lui v0,0x8004 -8003cdb8: 01281806 srlv v1,t0,t1 -8003cdbc: 2442f818 addiu v0,v0,-2024 -8003cdc0: 00621021 addu v0,v1,v0 -8003cdc4: 90460000 lbu a2,0(v0) -8003cdc8: 24020020 li v0,32 -8003cdcc: 00c94821 addu t1,a2,t1 -8003cdd0: 00495823 subu t3,v0,t1 -8003cdd4: 1160ff60 beqz t3,8003cb58 <__umoddi3+0x244> -8003cdd8: 00000000 nop -8003cddc: 01684004 sllv t0,t0,t3 -8003cde0: 01257006 srlv t6,a1,t1 -8003cde4: 00086402 srl t4,t0,0x10 -8003cde8: 15800002 bnez t4,8003cdf4 <__umoddi3+0x4e0> -8003cdec: 01cc001b divu zero,t6,t4 -8003cdf0: 0007000d break 0x7 -8003cdf4: 3102ffff andi v0,t0,0xffff -8003cdf8: 01652804 sllv a1,a1,t3 -8003cdfc: 01244806 srlv t1,a0,t1 -8003ce00: 01254825 or t1,t1,a1 -8003ce04: 00095402 srl t2,t1,0x10 -8003ce08: 00003012 mflo a2 -8003ce0c: 00003810 mfhi a3 -8003ce10: 00073c00 sll a3,a3,0x10 -8003ce14: 01473825 or a3,t2,a3 -8003ce18: 00460018 mult v0,a2 -8003ce1c: 00003012 mflo a2 -8003ce20: 00e6182b sltu v1,a3,a2 -8003ce24: 00000000 nop -8003ce28: 15800002 bnez t4,8003ce34 <__umoddi3+0x520> -8003ce2c: 01cc001b divu zero,t6,t4 -8003ce30: 0007000d break 0x7 -8003ce34: 10600008 beqz v1,8003ce58 <__umoddi3+0x544> -8003ce38: 01646804 sllv t5,a0,t3 -8003ce3c: 00e83821 addu a3,a3,t0 -8003ce40: 00e8182b sltu v1,a3,t0 -8003ce44: 14600004 bnez v1,8003ce58 <__umoddi3+0x544> -8003ce48: 00e6182b sltu v1,a3,a2 -8003ce4c: 10600002 beqz v1,8003ce58 <__umoddi3+0x544> -8003ce50: 00000000 nop -8003ce54: 00e83821 addu a3,a3,t0 -8003ce58: 00e63023 subu a2,a3,a2 -8003ce5c: 312affff andi t2,t1,0xffff -8003ce60: 15800002 bnez t4,8003ce6c <__umoddi3+0x558> -8003ce64: 00cc001b divu zero,a2,t4 -8003ce68: 0007000d break 0x7 -8003ce6c: 00002812 mflo a1 -8003ce70: 00004810 mfhi t1 -8003ce74: 00094c00 sll t1,t1,0x10 -8003ce78: 01495025 or t2,t2,t1 -8003ce7c: 00450018 mult v0,a1 -8003ce80: 00002812 mflo a1 -8003ce84: 0145182b sltu v1,t2,a1 -8003ce88: 00000000 nop -8003ce8c: 15800002 bnez t4,8003ce98 <__umoddi3+0x584> -8003ce90: 00cc001b divu zero,a2,t4 -8003ce94: 0007000d break 0x7 -8003ce98: 10600008 beqz v1,8003cebc <__umoddi3+0x5a8> -8003ce9c: 00000000 nop -8003cea0: 01485021 addu t2,t2,t0 -8003cea4: 0148182b sltu v1,t2,t0 -8003cea8: 14600004 bnez v1,8003cebc <__umoddi3+0x5a8> -8003ceac: 0145182b sltu v1,t2,a1 -8003ceb0: 10600002 beqz v1,8003cebc <__umoddi3+0x5a8> -8003ceb4: 00000000 nop -8003ceb8: 01485021 addu t2,t2,t0 -8003cebc: 1000ff29 b 8003cb64 <__umoddi3+0x250> -8003cec0: 01454823 subu t1,t2,a1 -8003cec4: 00c2102b sltu v0,a2,v0 -8003cec8: 1040000b beqz v0,8003cef8 <__umoddi3+0x5e4> -8003cecc: 00000000 nop -8003ced0: 1000fe9d b 8003c948 <__umoddi3+0x34> -8003ced4: 240b0010 li t3,16 -8003ced8: 01873823 subu a3,t4,a3 -8003cedc: 01aa5023 subu t2,t5,t2 -8003cee0: 0187182b sltu v1,t4,a3 -8003cee4: 01431823 subu v1,t2,v1 -8003cee8: 1000ffa7 b 8003cd88 <__umoddi3+0x474> -8003ceec: 01034023 subu t0,t0,v1 -8003cef0: 1000ff0f b 8003cb30 <__umoddi3+0x21c> -8003cef4: 24090018 li t1,24 -8003cef8: 1000fe93 b 8003c948 <__umoddi3+0x34> -8003cefc: 240b0018 li t3,24 -8003cf00: 0103302b sltu a2,t0,v1 -8003cf04: 10c0ff92 beqz a2,8003cd50 <__umoddi3+0x43c> -8003cf08: 24a5fffe addiu a1,a1,-2 -8003cf0c: 1000ff91 b 8003cd54 <__umoddi3+0x440> -8003cf10: 010a4021 addu t0,t0,t2 -8003cf14: 01ac282b sltu a1,t5,t4 -8003cf18: 10a0ff76 beqz a1,8003ccf4 <__umoddi3+0x3e0> -8003cf1c: 256bfffe addiu t3,t3,-2 -8003cf20: 1000ff75 b 8003ccf8 <__umoddi3+0x3e4> -8003cf24: 01aa6821 addu t5,t5,t2 -8003cf28: 1000ff26 b 8003cbc4 <__umoddi3+0x2b0> -8003cf2c: 01485021 addu t2,t2,t0 -8003cf30: 1000feae b 8003c9ec <__umoddi3+0xd8> -8003cf34: 01485021 addu t2,t2,t0 -8003cf38: 00801021 move v0,a0 -8003cf3c: 03e00008 jr ra -8003cf40: 00000000 nop -8003cf44: 008c182b sltu v1,a0,t4 -8003cf48: 1460ffe3 bnez v1,8003ced8 <__umoddi3+0x5c4> -8003cf4c: 00000000 nop -8003cf50: 00003812 mflo a3 -8003cf54: 1000ff8c b 8003cd88 <__umoddi3+0x474> -8003cf58: 00004021 move t0,zero - -8003cf5c <__adddf3>: -8003cf5c: 3c08000f lui t0,0xf -8003cf60: 3508ffff ori t0,t0,0xffff -8003cf64: 27bdffd8 addiu sp,sp,-40 -8003cf68: 01054824 and t1,t0,a1 -8003cf6c: 01074024 and t0,t0,a3 -8003cf70: 00051502 srl v0,a1,0x14 -8003cf74: 00046742 srl t4,a0,0x1d -8003cf78: 00065f42 srl t3,a2,0x1d -8003cf7c: afb10018 sw s1,24(sp) -8003cf80: 000948c0 sll t1,t1,0x3 -8003cf84: 00075502 srl t2,a3,0x14 -8003cf88: 000840c0 sll t0,t0,0x3 -8003cf8c: 00058fc2 srl s1,a1,0x1f -8003cf90: 00072fc2 srl a1,a3,0x1f -8003cf94: afb00014 sw s0,20(sp) -8003cf98: afbf0024 sw ra,36(sp) -8003cf9c: 305007ff andi s0,v0,0x7ff -8003cfa0: afb30020 sw s3,32(sp) -8003cfa4: afb2001c sw s2,28(sp) -8003cfa8: 012c1025 or v0,t1,t4 -8003cfac: 000420c0 sll a0,a0,0x3 -8003cfb0: 314a07ff andi t2,t2,0x7ff -8003cfb4: 010b4025 or t0,t0,t3 -8003cfb8: 12250071 beq s1,a1,8003d180 <__adddf3+0x224> -8003cfbc: 000630c0 sll a2,a2,0x3 -8003cfc0: 020a4823 subu t1,s0,t2 -8003cfc4: 192000c9 blez t1,8003d2ec <__adddf3+0x390> -8003cfc8: 00000000 nop -8003cfcc: 1540000b bnez t2,8003cffc <__adddf3+0xa0> -8003cfd0: 240307ff li v1,2047 -8003cfd4: 01061825 or v1,t0,a2 -8003cfd8: 1060008e beqz v1,8003d214 <__adddf3+0x2b8> -8003cfdc: 240307ff li v1,2047 -8003cfe0: 2529ffff addiu t1,t1,-1 -8003cfe4: 15200105 bnez t1,8003d3fc <__adddf3+0x4a0> -8003cfe8: 00869023 subu s2,a0,a2 -8003cfec: 00481023 subu v0,v0,t0 -8003cff0: 0092202b sltu a0,a0,s2 -8003cff4: 10000015 b 8003d04c <__adddf3+0xf0> -8003cff8: 00441023 subu v0,v0,a0 -8003cffc: 12030087 beq s0,v1,8003d21c <__adddf3+0x2c0> -8003d000: 3c030080 lui v1,0x80 -8003d004: 01034025 or t0,t0,v1 -8003d008: 29230039 slti v1,t1,57 -8003d00c: 106000e0 beqz v1,8003d390 <__adddf3+0x434> -8003d010: 29230020 slti v1,t1,32 -8003d014: 10600108 beqz v1,8003d438 <__adddf3+0x4dc> -8003d018: 24050020 li a1,32 -8003d01c: 00a92823 subu a1,a1,t1 -8003d020: 01263806 srlv a3,a2,t1 -8003d024: 00a81804 sllv v1,t0,a1 -8003d028: 00a63004 sllv a2,a2,a1 -8003d02c: 00671825 or v1,v1,a3 -8003d030: 0006382b sltu a3,zero,a2 -8003d034: 00673825 or a3,v1,a3 -8003d038: 01284006 srlv t0,t0,t1 -8003d03c: 00879023 subu s2,a0,a3 -8003d040: 00484023 subu t0,v0,t0 -8003d044: 0092202b sltu a0,a0,s2 -8003d048: 01041023 subu v0,t0,a0 -8003d04c: 3c130080 lui s3,0x80 -8003d050: 00531824 and v1,v0,s3 -8003d054: 106000a1 beqz v1,8003d2dc <__adddf3+0x380> -8003d058: 32430007 andi v1,s2,0x7 -8003d05c: 2673ffff addiu s3,s3,-1 -8003d060: 00539824 and s3,v0,s3 -8003d064: 126000b4 beqz s3,8003d338 <__adddf3+0x3dc> -8003d068: 00000000 nop -8003d06c: 0c00a2d8 jal 80028b60 <__clzsi2> -8003d070: 02602021 move a0,s3 -8003d074: 2446fff8 addiu a2,v0,-8 -8003d078: 28c30020 slti v1,a2,32 -8003d07c: 106000b6 beqz v1,8003d358 <__adddf3+0x3fc> -8003d080: 2442ffd8 addiu v0,v0,-40 -8003d084: 00061823 negu v1,a2 -8003d088: 00721806 srlv v1,s2,v1 -8003d08c: 00d31004 sllv v0,s3,a2 -8003d090: 00629825 or s3,v1,v0 -8003d094: 00d0102a slt v0,a2,s0 -8003d098: 144000b3 bnez v0,8003d368 <__adddf3+0x40c> -8003d09c: 00d29004 sllv s2,s2,a2 -8003d0a0: 00d03023 subu a2,a2,s0 -8003d0a4: 24c20001 addiu v0,a2,1 -8003d0a8: 28430020 slti v1,v0,32 -8003d0ac: 106000d7 beqz v1,8003d40c <__adddf3+0x4b0> -8003d0b0: 24030020 li v1,32 -8003d0b4: 24040020 li a0,32 -8003d0b8: 00822023 subu a0,a0,v0 -8003d0bc: 00521806 srlv v1,s2,v0 -8003d0c0: 00923804 sllv a3,s2,a0 -8003d0c4: 00932004 sllv a0,s3,a0 -8003d0c8: 00832025 or a0,a0,v1 -8003d0cc: 0007382b sltu a3,zero,a3 -8003d0d0: 00879025 or s2,a0,a3 -8003d0d4: 00531006 srlv v0,s3,v0 -8003d0d8: 32430007 andi v1,s2,0x7 -8003d0dc: 00008021 move s0,zero -8003d0e0: 10600009 beqz v1,8003d108 <__adddf3+0x1ac> -8003d0e4: 3c030080 lui v1,0x80 -8003d0e8: 3243000f andi v1,s2,0xf -8003d0ec: 24040004 li a0,4 -8003d0f0: 10640004 beq v1,a0,8003d104 <__adddf3+0x1a8> -8003d0f4: 26440004 addiu a0,s2,4 -8003d0f8: 0092382b sltu a3,a0,s2 -8003d0fc: 00471021 addu v0,v0,a3 -8003d100: 00809021 move s2,a0 -8003d104: 3c030080 lui v1,0x80 -8003d108: 00431824 and v1,v0,v1 -8003d10c: 10600062 beqz v1,8003d298 <__adddf3+0x33c> -8003d110: 26060001 addiu a2,s0,1 -8003d114: 240307ff li v1,2047 -8003d118: 10c30099 beq a2,v1,8003d380 <__adddf3+0x424> -8003d11c: 00000000 nop -8003d120: 3c04ff7f lui a0,0xff7f -8003d124: 3484ffff ori a0,a0,0xffff -8003d128: 00441024 and v0,v0,a0 -8003d12c: 00022740 sll a0,v0,0x1d -8003d130: 001238c2 srl a3,s2,0x3 -8003d134: 00021240 sll v0,v0,0x9 -8003d138: 00873825 or a3,a0,a3 -8003d13c: 00022302 srl a0,v0,0xc -8003d140: 30c207ff andi v0,a2,0x7ff -8003d144: 00023500 sll a2,v0,0x14 -8003d148: 3c02000f lui v0,0xf -8003d14c: 3442ffff ori v0,v0,0xffff -8003d150: 8fbf0024 lw ra,36(sp) -8003d154: 00821024 and v0,a0,v0 -8003d158: 00111fc0 sll v1,s1,0x1f -8003d15c: 00461025 or v0,v0,a2 -8003d160: 00431825 or v1,v0,v1 -8003d164: 8fb30020 lw s3,32(sp) -8003d168: 8fb2001c lw s2,28(sp) -8003d16c: 8fb10018 lw s1,24(sp) -8003d170: 8fb00014 lw s0,20(sp) -8003d174: 00e01021 move v0,a3 -8003d178: 03e00008 jr ra -8003d17c: 27bd0028 addiu sp,sp,40 -8003d180: 020a2823 subu a1,s0,t2 -8003d184: 18a00089 blez a1,8003d3ac <__adddf3+0x450> -8003d188: 00000000 nop -8003d18c: 11400034 beqz t2,8003d260 <__adddf3+0x304> -8003d190: 01061825 or v1,t0,a2 -8003d194: 240307ff li v1,2047 -8003d198: 12030020 beq s0,v1,8003d21c <__adddf3+0x2c0> -8003d19c: 3c030080 lui v1,0x80 -8003d1a0: 01034025 or t0,t0,v1 -8003d1a4: 28a30039 slti v1,a1,57 -8003d1a8: 146000cd bnez v1,8003d4e0 <__adddf3+0x584> -8003d1ac: 28a30020 slti v1,a1,32 -8003d1b0: 01063025 or a2,t0,a2 -8003d1b4: 0006382b sltu a3,zero,a2 -8003d1b8: 00004021 move t0,zero -8003d1bc: 00e49021 addu s2,a3,a0 -8003d1c0: 01024021 addu t0,t0,v0 -8003d1c4: 0244202b sltu a0,s2,a0 -8003d1c8: 00881021 addu v0,a0,t0 -8003d1cc: 3c030080 lui v1,0x80 -8003d1d0: 00431824 and v1,v0,v1 -8003d1d4: 10600041 beqz v1,8003d2dc <__adddf3+0x380> -8003d1d8: 32430007 andi v1,s2,0x7 -8003d1dc: 26100001 addiu s0,s0,1 -8003d1e0: 240307ff li v1,2047 -8003d1e4: 120300eb beq s0,v1,8003d594 <__adddf3+0x638> -8003d1e8: 00122042 srl a0,s2,0x1 -8003d1ec: 3c03ff7f lui v1,0xff7f -8003d1f0: 3463ffff ori v1,v1,0xffff -8003d1f4: 00431024 and v0,v0,v1 -8003d1f8: 32470001 andi a3,s2,0x1 -8003d1fc: 00879025 or s2,a0,a3 -8003d200: 00023fc0 sll a3,v0,0x1f -8003d204: 00f29025 or s2,a3,s2 -8003d208: 00021042 srl v0,v0,0x1 -8003d20c: 1000ffb4 b 8003d0e0 <__adddf3+0x184> -8003d210: 32430007 andi v1,s2,0x7 -8003d214: 1603ffbb bne s0,v1,8003d104 <__adddf3+0x1a8> -8003d218: 00809021 move s2,a0 -8003d21c: 00441825 or v1,v0,a0 -8003d220: 1460ffb8 bnez v1,8003d104 <__adddf3+0x1a8> -8003d224: 00809021 move s2,a0 -8003d228: 00003821 move a3,zero -8003d22c: 00671025 or v0,v1,a3 -8003d230: 10400054 beqz v0,8003d384 <__adddf3+0x428> -8003d234: 240207ff li v0,2047 -8003d238: 3c040007 lui a0,0x7 -8003d23c: 3484ffff ori a0,a0,0xffff -8003d240: 00641024 and v0,v1,a0 -8003d244: 00471825 or v1,v0,a3 -8003d248: 14600055 bnez v1,8003d3a0 <__adddf3+0x444> -8003d24c: 00000000 nop -8003d250: 00008821 move s1,zero -8003d254: 240207ff li v0,2047 -8003d258: 1000ffba b 8003d144 <__adddf3+0x1e8> -8003d25c: 2407ffff li a3,-1 -8003d260: 1060ffec beqz v1,8003d214 <__adddf3+0x2b8> -8003d264: 240307ff li v1,2047 -8003d268: 24a5ffff addiu a1,a1,-1 -8003d26c: 14a000b0 bnez a1,8003d530 <__adddf3+0x5d4> -8003d270: 00869021 addu s2,a0,a2 -8003d274: 00481021 addu v0,v0,t0 -8003d278: 0244202b sltu a0,s2,a0 -8003d27c: 1000ffd3 b 8003d1cc <__adddf3+0x270> -8003d280: 00821021 addu v0,a0,v0 -8003d284: 3c02003f lui v0,0x3f -8003d288: 00008821 move s1,zero -8003d28c: 241007ff li s0,2047 -8003d290: 3442ffff ori v0,v0,0xffff -8003d294: 2412fff8 li s2,-8 -8003d298: 00021f40 sll v1,v0,0x1d -8003d29c: 001238c2 srl a3,s2,0x3 -8003d2a0: 00e33825 or a3,a3,v1 -8003d2a4: 000218c2 srl v1,v0,0x3 -8003d2a8: 240207ff li v0,2047 -8003d2ac: 1202ffdf beq s0,v0,8003d22c <__adddf3+0x2d0> -8003d2b0: 00000000 nop -8003d2b4: 3c06000f lui a2,0xf -8003d2b8: 34c6ffff ori a2,a2,0xffff -8003d2bc: 00662024 and a0,v1,a2 -8003d2c0: 1000ffa0 b 8003d144 <__adddf3+0x1e8> -8003d2c4: 320207ff andi v0,s0,0x7ff -8003d2c8: 02471825 or v1,s2,a3 -8003d2cc: 1060012f beqz v1,8003d78c <__adddf3+0x830> -8003d2d0: 00000000 nop -8003d2d4: 00e01021 move v0,a3 -8003d2d8: 32430007 andi v1,s2,0x7 -8003d2dc: 1460ff82 bnez v1,8003d0e8 <__adddf3+0x18c> -8003d2e0: 00021f40 sll v1,v0,0x1d -8003d2e4: 1000ffee b 8003d2a0 <__adddf3+0x344> -8003d2e8: 001238c2 srl a3,s2,0x3 -8003d2ec: 1520005b bnez t1,8003d45c <__adddf3+0x500> -8003d2f0: 26030001 addiu v1,s0,1 -8003d2f4: 306307ff andi v1,v1,0x7ff -8003d2f8: 28630002 slti v1,v1,2 -8003d2fc: 1460009b bnez v1,8003d56c <__adddf3+0x610> -8003d300: 00869023 subu s2,a0,a2 -8003d304: 0092182b sltu v1,a0,s2 -8003d308: 00489823 subu s3,v0,t0 -8003d30c: 02639823 subu s3,s3,v1 -8003d310: 3c030080 lui v1,0x80 -8003d314: 02631824 and v1,s3,v1 -8003d318: 1060006c beqz v1,8003d4cc <__adddf3+0x570> -8003d31c: 02531825 or v1,s2,s3 -8003d320: 00c49023 subu s2,a2,a0 -8003d324: 01021023 subu v0,t0,v0 -8003d328: 00d2302b sltu a2,a2,s2 -8003d32c: 00469823 subu s3,v0,a2 -8003d330: 1660ff4e bnez s3,8003d06c <__adddf3+0x110> -8003d334: 00a08821 move s1,a1 -8003d338: 0c00a2d8 jal 80028b60 <__clzsi2> -8003d33c: 02402021 move a0,s2 -8003d340: 24420020 addiu v0,v0,32 -8003d344: 2446fff8 addiu a2,v0,-8 -8003d348: 28c30020 slti v1,a2,32 -8003d34c: 1460ff4e bnez v1,8003d088 <__adddf3+0x12c> -8003d350: 00061823 negu v1,a2 -8003d354: 2442ffd8 addiu v0,v0,-40 -8003d358: 00529804 sllv s3,s2,v0 -8003d35c: 00d0102a slt v0,a2,s0 -8003d360: 1040ff4f beqz v0,8003d0a0 <__adddf3+0x144> -8003d364: 00009021 move s2,zero -8003d368: 3c02ff7f lui v0,0xff7f -8003d36c: 3442ffff ori v0,v0,0xffff -8003d370: 02068023 subu s0,s0,a2 -8003d374: 02621024 and v0,s3,v0 -8003d378: 1000ff59 b 8003d0e0 <__adddf3+0x184> -8003d37c: 32430007 andi v1,s2,0x7 -8003d380: 240207ff li v0,2047 -8003d384: 00002021 move a0,zero -8003d388: 1000ff6e b 8003d144 <__adddf3+0x1e8> -8003d38c: 00003821 move a3,zero -8003d390: 01063025 or a2,t0,a2 -8003d394: 0006382b sltu a3,zero,a2 -8003d398: 1000ff28 b 8003d03c <__adddf3+0xe0> -8003d39c: 00004021 move t0,zero -8003d3a0: 00402021 move a0,v0 -8003d3a4: 1000ff67 b 8003d144 <__adddf3+0x1e8> -8003d3a8: 240207ff li v0,2047 -8003d3ac: 14a00086 bnez a1,8003d5c8 <__adddf3+0x66c> -8003d3b0: 00000000 nop -8003d3b4: 26050001 addiu a1,s0,1 -8003d3b8: 30a307ff andi v1,a1,0x7ff -8003d3bc: 28630002 slti v1,v1,2 -8003d3c0: 14600063 bnez v1,8003d550 <__adddf3+0x5f4> -8003d3c4: 00000000 nop -8003d3c8: 240307ff li v1,2047 -8003d3cc: 10a30071 beq a1,v1,8003d594 <__adddf3+0x638> -8003d3d0: 00863021 addu a2,a0,a2 -8003d3d4: 00c4202b sltu a0,a2,a0 -8003d3d8: 00481021 addu v0,v0,t0 -8003d3dc: 00821021 addu v0,a0,v0 -8003d3e0: 00023fc0 sll a3,v0,0x1f -8003d3e4: 00063042 srl a2,a2,0x1 -8003d3e8: 00e69025 or s2,a3,a2 -8003d3ec: 00021042 srl v0,v0,0x1 -8003d3f0: 32430007 andi v1,s2,0x7 -8003d3f4: 1000ff3a b 8003d0e0 <__adddf3+0x184> -8003d3f8: 00a08021 move s0,a1 -8003d3fc: 1603ff02 bne s0,v1,8003d008 <__adddf3+0xac> -8003d400: 00441825 or v1,v0,a0 -8003d404: 1000ff86 b 8003d220 <__adddf3+0x2c4> -8003d408: 00000000 nop -8003d40c: 24c6ffe1 addiu a2,a2,-31 -8003d410: 1043004b beq v0,v1,8003d540 <__adddf3+0x5e4> -8003d414: 00d33006 srlv a2,s3,a2 -8003d418: 00023823 negu a3,v0 -8003d41c: 00f33804 sllv a3,s3,a3 -8003d420: 02473825 or a3,s2,a3 -8003d424: 0007382b sltu a3,zero,a3 -8003d428: 00c79025 or s2,a2,a3 -8003d42c: 00001021 move v0,zero -8003d430: 1000ffa9 b 8003d2d8 <__adddf3+0x37c> -8003d434: 00008021 move s0,zero -8003d438: 11250043 beq t1,a1,8003d548 <__adddf3+0x5ec> -8003d43c: 01281806 srlv v1,t0,t1 -8003d440: 00093823 negu a3,t1 -8003d444: 00e83804 sllv a3,t0,a3 -8003d448: 00e63025 or a2,a3,a2 -8003d44c: 0006382b sltu a3,zero,a2 -8003d450: 00673825 or a3,v1,a3 -8003d454: 1000fef9 b 8003d03c <__adddf3+0xe0> -8003d458: 00004021 move t0,zero -8003d45c: 1200002b beqz s0,8003d50c <__adddf3+0x5b0> -8003d460: 00441825 or v1,v0,a0 -8003d464: 240307ff li v1,2047 -8003d468: 114300be beq t2,v1,8003d764 <__adddf3+0x808> -8003d46c: 3c030080 lui v1,0x80 -8003d470: 00094823 negu t1,t1 -8003d474: 00431025 or v0,v0,v1 -8003d478: 29230039 slti v1,t1,57 -8003d47c: 10600077 beqz v1,8003d65c <__adddf3+0x700> -8003d480: 29230020 slti v1,t1,32 -8003d484: 106000c4 beqz v1,8003d798 <__adddf3+0x83c> -8003d488: 24030020 li v1,32 -8003d48c: 240b0020 li t3,32 -8003d490: 01695823 subu t3,t3,t1 -8003d494: 01243806 srlv a3,a0,t1 -8003d498: 01621804 sllv v1,v0,t3 -8003d49c: 01642004 sllv a0,a0,t3 -8003d4a0: 00671825 or v1,v1,a3 -8003d4a4: 0004382b sltu a3,zero,a0 -8003d4a8: 00673825 or a3,v1,a3 -8003d4ac: 01224806 srlv t1,v0,t1 -8003d4b0: 00c79023 subu s2,a2,a3 -8003d4b4: 01094823 subu t1,t0,t1 -8003d4b8: 00d2302b sltu a2,a2,s2 -8003d4bc: 01261023 subu v0,t1,a2 -8003d4c0: 01408021 move s0,t2 -8003d4c4: 1000fee1 b 8003d04c <__adddf3+0xf0> -8003d4c8: 00a08821 move s1,a1 -8003d4cc: 1460fee5 bnez v1,8003d064 <__adddf3+0x108> -8003d4d0: 00003821 move a3,zero -8003d4d4: 00008821 move s1,zero -8003d4d8: 1000ff76 b 8003d2b4 <__adddf3+0x358> -8003d4dc: 00008021 move s0,zero -8003d4e0: 1060002f beqz v1,8003d5a0 <__adddf3+0x644> -8003d4e4: 24090020 li t1,32 -8003d4e8: 01254823 subu t1,t1,a1 -8003d4ec: 00a63806 srlv a3,a2,a1 -8003d4f0: 01281804 sllv v1,t0,t1 -8003d4f4: 01263004 sllv a2,a2,t1 -8003d4f8: 00671825 or v1,v1,a3 -8003d4fc: 0006382b sltu a3,zero,a2 -8003d500: 00673825 or a3,v1,a3 -8003d504: 1000ff2d b 8003d1bc <__adddf3+0x260> -8003d508: 00a84006 srlv t0,t0,a1 -8003d50c: 14600049 bnez v1,8003d634 <__adddf3+0x6d8> -8003d510: 00000000 nop -8003d514: 240207ff li v0,2047 -8003d518: 11420092 beq t2,v0,8003d764 <__adddf3+0x808> -8003d51c: 01001021 move v0,t0 -8003d520: 00c09021 move s2,a2 -8003d524: 01408021 move s0,t2 -8003d528: 1000fef6 b 8003d104 <__adddf3+0x1a8> -8003d52c: 00a08821 move s1,a1 -8003d530: 1603ff1c bne s0,v1,8003d1a4 <__adddf3+0x248> -8003d534: 00441825 or v1,v0,a0 -8003d538: 1000ff39 b 8003d220 <__adddf3+0x2c4> -8003d53c: 00000000 nop -8003d540: 1000ffb7 b 8003d420 <__adddf3+0x4c4> -8003d544: 00003821 move a3,zero -8003d548: 1000ffbf b 8003d448 <__adddf3+0x4ec> -8003d54c: 00003821 move a3,zero -8003d550: 1600006e bnez s0,8003d70c <__adddf3+0x7b0> -8003d554: 00441825 or v1,v0,a0 -8003d558: 146000a9 bnez v1,8003d800 <__adddf3+0x8a4> -8003d55c: 01061825 or v1,t0,a2 -8003d560: 01001021 move v0,t0 -8003d564: 1000fee7 b 8003d104 <__adddf3+0x1a8> -8003d568: 00c09021 move s2,a2 -8003d56c: 16000021 bnez s0,8003d5f4 <__adddf3+0x698> -8003d570: 00441825 or v1,v0,a0 -8003d574: 14600055 bnez v1,8003d6cc <__adddf3+0x770> -8003d578: 01061825 or v1,t0,a2 -8003d57c: 10600084 beqz v1,8003d790 <__adddf3+0x834> -8003d580: 00003821 move a3,zero -8003d584: 01001021 move v0,t0 -8003d588: 00c09021 move s2,a2 -8003d58c: 1000fedd b 8003d104 <__adddf3+0x1a8> -8003d590: 00a08821 move s1,a1 -8003d594: 00001821 move v1,zero -8003d598: 1000ff24 b 8003d22c <__adddf3+0x2d0> -8003d59c: 00003821 move a3,zero -8003d5a0: 24070020 li a3,32 -8003d5a4: 10a70077 beq a1,a3,8003d784 <__adddf3+0x828> -8003d5a8: 00a81806 srlv v1,t0,a1 -8003d5ac: 00053823 negu a3,a1 -8003d5b0: 00e83804 sllv a3,t0,a3 -8003d5b4: 00e63025 or a2,a3,a2 -8003d5b8: 0006382b sltu a3,zero,a2 -8003d5bc: 00673825 or a3,v1,a3 -8003d5c0: 1000fefe b 8003d1bc <__adddf3+0x260> -8003d5c4: 00004021 move t0,zero -8003d5c8: 16000028 bnez s0,8003d66c <__adddf3+0x710> -8003d5cc: 240307ff li v1,2047 -8003d5d0: 00441825 or v1,v0,a0 -8003d5d4: 14600079 bnez v1,8003d7bc <__adddf3+0x860> -8003d5d8: 00000000 nop -8003d5dc: 240207ff li v0,2047 -8003d5e0: 1142009a beq t2,v0,8003d84c <__adddf3+0x8f0> -8003d5e4: 01001021 move v0,t0 -8003d5e8: 00c09021 move s2,a2 -8003d5ec: 1000fec5 b 8003d104 <__adddf3+0x1a8> -8003d5f0: 01408021 move s0,t2 -8003d5f4: 14600009 bnez v1,8003d61c <__adddf3+0x6c0> -8003d5f8: 00000000 nop -8003d5fc: 01061025 or v0,t0,a2 -8003d600: 10400077 beqz v0,8003d7e0 <__adddf3+0x884> -8003d604: 3c030007 lui v1,0x7 -8003d608: 01001021 move v0,t0 -8003d60c: 00c09021 move s2,a2 -8003d610: 00a08821 move s1,a1 -8003d614: 1000febb b 8003d104 <__adddf3+0x1a8> -8003d618: 241007ff li s0,2047 -8003d61c: 01063025 or a2,t0,a2 -8003d620: 14c00040 bnez a2,8003d724 <__adddf3+0x7c8> -8003d624: 000228c2 srl a1,v0,0x3 -8003d628: 00809021 move s2,a0 -8003d62c: 1000feb5 b 8003d104 <__adddf3+0x1a8> -8003d630: 241007ff li s0,2047 -8003d634: 00094827 nor t1,zero,t1 -8003d638: 15200048 bnez t1,8003d75c <__adddf3+0x800> -8003d63c: 240307ff li v1,2047 -8003d640: 00c49023 subu s2,a2,a0 -8003d644: 01021023 subu v0,t0,v0 -8003d648: 00d2302b sltu a2,a2,s2 -8003d64c: 00461023 subu v0,v0,a2 -8003d650: 01408021 move s0,t2 -8003d654: 1000fe7d b 8003d04c <__adddf3+0xf0> -8003d658: 00a08821 move s1,a1 -8003d65c: 00442025 or a0,v0,a0 -8003d660: 0004382b sltu a3,zero,a0 -8003d664: 1000ff92 b 8003d4b0 <__adddf3+0x554> -8003d668: 00004821 move t1,zero -8003d66c: 11430077 beq t2,v1,8003d84c <__adddf3+0x8f0> -8003d670: 3c030080 lui v1,0x80 -8003d674: 00052823 negu a1,a1 -8003d678: 00431025 or v0,v0,v1 -8003d67c: 28a30039 slti v1,a1,57 -8003d680: 1060005b beqz v1,8003d7f0 <__adddf3+0x894> -8003d684: 28a30020 slti v1,a1,32 -8003d688: 10600075 beqz v1,8003d860 <__adddf3+0x904> -8003d68c: 24030020 li v1,32 -8003d690: 24090020 li t1,32 -8003d694: 01254823 subu t1,t1,a1 -8003d698: 00a43806 srlv a3,a0,a1 -8003d69c: 01221804 sllv v1,v0,t1 -8003d6a0: 01242004 sllv a0,a0,t1 -8003d6a4: 00671825 or v1,v1,a3 -8003d6a8: 0004382b sltu a3,zero,a0 -8003d6ac: 00673825 or a3,v1,a3 -8003d6b0: 00a21006 srlv v0,v0,a1 -8003d6b4: 00e69021 addu s2,a3,a2 -8003d6b8: 00484021 addu t0,v0,t0 -8003d6bc: 0246302b sltu a2,s2,a2 -8003d6c0: 00c81021 addu v0,a2,t0 -8003d6c4: 1000fec1 b 8003d1cc <__adddf3+0x270> -8003d6c8: 01408021 move s0,t2 -8003d6cc: 1060fe8d beqz v1,8003d104 <__adddf3+0x1a8> -8003d6d0: 00809021 move s2,a0 -8003d6d4: 00869023 subu s2,a0,a2 -8003d6d8: 00481823 subu v1,v0,t0 -8003d6dc: 0092382b sltu a3,a0,s2 -8003d6e0: 00673823 subu a3,v1,a3 -8003d6e4: 3c030080 lui v1,0x80 -8003d6e8: 00e31824 and v1,a3,v1 -8003d6ec: 1060fef6 beqz v1,8003d2c8 <__adddf3+0x36c> -8003d6f0: 01021023 subu v0,t0,v0 -8003d6f4: 00c49023 subu s2,a2,a0 -8003d6f8: 00d2302b sltu a2,a2,s2 -8003d6fc: 00461023 subu v0,v0,a2 -8003d700: 32430007 andi v1,s2,0x7 -8003d704: 1000fe76 b 8003d0e0 <__adddf3+0x184> -8003d708: 00a08821 move s1,a1 -8003d70c: 1460ffc3 bnez v1,8003d61c <__adddf3+0x6c0> -8003d710: 00000000 nop -8003d714: 01001021 move v0,t0 -8003d718: 00c09021 move s2,a2 -8003d71c: 1000fe79 b 8003d104 <__adddf3+0x1a8> -8003d720: 241007ff li s0,2047 -8003d724: 000818c2 srl v1,t0,0x3 -8003d728: 00651825 or v1,v1,a1 -8003d72c: 3c060008 lui a2,0x8 -8003d730: 00661824 and v1,v1,a2 -8003d734: 1460fed3 bnez v1,8003d284 <__adddf3+0x328> -8003d738: 00021740 sll v0,v0,0x1d -8003d73c: 000420c2 srl a0,a0,0x3 -8003d740: 00443825 or a3,v0,a0 -8003d744: 000528c0 sll a1,a1,0x3 -8003d748: 00071742 srl v0,a3,0x1d -8003d74c: 00451025 or v0,v0,a1 -8003d750: 000790c0 sll s2,a3,0x3 -8003d754: 1000fe6b b 8003d104 <__adddf3+0x1a8> -8003d758: 241007ff li s0,2047 -8003d75c: 1543ff47 bne t2,v1,8003d47c <__adddf3+0x520> -8003d760: 29230039 slti v1,t1,57 -8003d764: 01061825 or v1,t0,a2 -8003d768: 10600034 beqz v1,8003d83c <__adddf3+0x8e0> -8003d76c: 00003821 move a3,zero -8003d770: 01001021 move v0,t0 -8003d774: 00c09021 move s2,a2 -8003d778: 241007ff li s0,2047 -8003d77c: 1000fe61 b 8003d104 <__adddf3+0x1a8> -8003d780: 00a08821 move s1,a1 -8003d784: 1000ff8b b 8003d5b4 <__adddf3+0x658> -8003d788: 00003821 move a3,zero -8003d78c: 00003821 move a3,zero -8003d790: 1000fec8 b 8003d2b4 <__adddf3+0x358> -8003d794: 00008821 move s1,zero -8003d798: 1123003a beq t1,v1,8003d884 <__adddf3+0x928> -8003d79c: 01223806 srlv a3,v0,t1 -8003d7a0: 00094823 negu t1,t1 -8003d7a4: 01221804 sllv v1,v0,t1 -8003d7a8: 00642025 or a0,v1,a0 -8003d7ac: 0004182b sltu v1,zero,a0 -8003d7b0: 00e33825 or a3,a3,v1 -8003d7b4: 1000ff3e b 8003d4b0 <__adddf3+0x554> -8003d7b8: 00004821 move t1,zero -8003d7bc: 00052827 nor a1,zero,a1 -8003d7c0: 14a00020 bnez a1,8003d844 <__adddf3+0x8e8> -8003d7c4: 240307ff li v1,2047 -8003d7c8: 00869021 addu s2,a0,a2 -8003d7cc: 00481021 addu v0,v0,t0 -8003d7d0: 0246302b sltu a2,s2,a2 -8003d7d4: 00c21021 addu v0,a2,v0 -8003d7d8: 1000fe7c b 8003d1cc <__adddf3+0x270> -8003d7dc: 01408021 move s0,t2 -8003d7e0: 3463ffff ori v1,v1,0xffff -8003d7e4: 2407ffff li a3,-1 -8003d7e8: 1000fe90 b 8003d22c <__adddf3+0x2d0> -8003d7ec: 00008821 move s1,zero -8003d7f0: 00441025 or v0,v0,a0 -8003d7f4: 0002382b sltu a3,zero,v0 -8003d7f8: 1000ffae b 8003d6b4 <__adddf3+0x758> -8003d7fc: 00001021 move v0,zero -8003d800: 1060fe40 beqz v1,8003d104 <__adddf3+0x1a8> -8003d804: 00809021 move s2,a0 -8003d808: 00869021 addu s2,a0,a2 -8003d80c: 00481021 addu v0,v0,t0 -8003d810: 0244202b sltu a0,s2,a0 -8003d814: 00821021 addu v0,a0,v0 -8003d818: 3c030080 lui v1,0x80 -8003d81c: 00431824 and v1,v0,v1 -8003d820: 1060fead beqz v1,8003d2d8 <__adddf3+0x37c> -8003d824: 3c03ff7f lui v1,0xff7f -8003d828: 3463ffff ori v1,v1,0xffff -8003d82c: 00431024 and v0,v0,v1 -8003d830: 24100001 li s0,1 -8003d834: 1000fe2a b 8003d0e0 <__adddf3+0x184> -8003d838: 32430007 andi v1,s2,0x7 -8003d83c: 1000fe7b b 8003d22c <__adddf3+0x2d0> -8003d840: 00a08821 move s1,a1 -8003d844: 1543ff8e bne t2,v1,8003d680 <__adddf3+0x724> -8003d848: 28a30039 slti v1,a1,57 -8003d84c: 01061825 or v1,t0,a2 -8003d850: 1460ffb1 bnez v1,8003d718 <__adddf3+0x7bc> -8003d854: 01001021 move v0,t0 -8003d858: 1000fe74 b 8003d22c <__adddf3+0x2d0> -8003d85c: 00003821 move a3,zero -8003d860: 10a3000a beq a1,v1,8003d88c <__adddf3+0x930> -8003d864: 00a23806 srlv a3,v0,a1 -8003d868: 00052823 negu a1,a1 -8003d86c: 00a21004 sllv v0,v0,a1 -8003d870: 00442025 or a0,v0,a0 -8003d874: 0004102b sltu v0,zero,a0 -8003d878: 00e23825 or a3,a3,v0 -8003d87c: 1000ff8d b 8003d6b4 <__adddf3+0x758> -8003d880: 00001021 move v0,zero -8003d884: 1000ffc8 b 8003d7a8 <__adddf3+0x84c> -8003d888: 00001821 move v1,zero -8003d88c: 1000fff8 b 8003d870 <__adddf3+0x914> -8003d890: 00001021 move v0,zero - -8003d894 <__divdf3>: -8003d894: 27bdffc0 addiu sp,sp,-64 -8003d898: afb5002c sw s5,44(sp) -8003d89c: afb00018 sw s0,24(sp) -8003d8a0: 0005ad02 srl s5,a1,0x14 -8003d8a4: 3c10000f lui s0,0xf -8003d8a8: afb40028 sw s4,40(sp) -8003d8ac: 3610ffff ori s0,s0,0xffff -8003d8b0: 0005a7c2 srl s4,a1,0x1f -8003d8b4: 32b507ff andi s5,s5,0x7ff -8003d8b8: afb70034 sw s7,52(sp) -8003d8bc: afb1001c sw s1,28(sp) -8003d8c0: afbf003c sw ra,60(sp) -8003d8c4: afbe0038 sw s8,56(sp) -8003d8c8: afb60030 sw s6,48(sp) -8003d8cc: afb30024 sw s3,36(sp) -8003d8d0: afb20020 sw s2,32(sp) -8003d8d4: 00808821 move s1,a0 -8003d8d8: 02058024 and s0,s0,a1 -8003d8dc: 12a00078 beqz s5,8003dac0 <__divdf3+0x22c> -8003d8e0: 0280b821 move s7,s4 -8003d8e4: 240207ff li v0,2047 -8003d8e8: 12a20026 beq s5,v0,8003d984 <__divdf3+0xf0> -8003d8ec: 02048825 or s1,s0,a0 -8003d8f0: 3c050010 lui a1,0x10 -8003d8f4: 02058025 or s0,s0,a1 -8003d8f8: 001080c0 sll s0,s0,0x3 -8003d8fc: 00042f42 srl a1,a0,0x1d -8003d900: 00b08025 or s0,a1,s0 -8003d904: 000490c0 sll s2,a0,0x3 -8003d908: 26b5fc01 addiu s5,s5,-1023 -8003d90c: 00009821 move s3,zero -8003d910: 0000f021 move s8,zero -8003d914: 00072d02 srl a1,a3,0x14 -8003d918: 3c11000f lui s1,0xf -8003d91c: 3631ffff ori s1,s1,0xffff -8003d920: 30a507ff andi a1,a1,0x7ff -8003d924: 00c01821 move v1,a2 -8003d928: 02278824 and s1,s1,a3 -8003d92c: 10a00023 beqz a1,8003d9bc <__divdf3+0x128> -8003d930: 0007b7c2 srl s6,a3,0x1f -8003d934: 240207ff li v0,2047 -8003d938: 10a2007a beq a1,v0,8003db24 <__divdf3+0x290> -8003d93c: 3c020010 lui v0,0x10 -8003d940: 02228825 or s1,s1,v0 -8003d944: 001188c0 sll s1,s1,0x3 -8003d948: 00061742 srl v0,a2,0x1d -8003d94c: 00518825 or s1,v0,s1 -8003d950: 000618c0 sll v1,a2,0x3 -8003d954: 24a5fc01 addiu a1,a1,-1023 -8003d958: 00001021 move v0,zero -8003d95c: 00532025 or a0,v0,s3 -8003d960: 00043080 sll a2,a0,0x2 -8003d964: 3c048004 lui a0,0x8004 -8003d968: 2484007c addiu a0,a0,124 -8003d96c: 00862021 addu a0,a0,a2 -8003d970: 8c860000 lw a2,0(a0) -8003d974: 02962026 xor a0,s4,s6 -8003d978: 00803821 move a3,a0 -8003d97c: 00c00008 jr a2 -8003d980: 02a52823 subu a1,s5,a1 -8003d984: 16200077 bnez s1,8003db64 <__divdf3+0x2d0> -8003d988: 00809021 move s2,a0 -8003d98c: 00072d02 srl a1,a3,0x14 -8003d990: 3c11000f lui s1,0xf -8003d994: 3631ffff ori s1,s1,0xffff -8003d998: 30a507ff andi a1,a1,0x7ff -8003d99c: 24130008 li s3,8 -8003d9a0: 00008021 move s0,zero -8003d9a4: 00009021 move s2,zero -8003d9a8: 241e0002 li s8,2 -8003d9ac: 00c01821 move v1,a2 -8003d9b0: 02278824 and s1,s1,a3 -8003d9b4: 14a0ffdf bnez a1,8003d934 <__divdf3+0xa0> -8003d9b8: 0007b7c2 srl s6,a3,0x1f -8003d9bc: 02261025 or v0,s1,a2 -8003d9c0: 1040005f beqz v0,8003db40 <__divdf3+0x2ac> -8003d9c4: 00001821 move v1,zero -8003d9c8: 12200090 beqz s1,8003dc0c <__divdf3+0x378> -8003d9cc: 00c02021 move a0,a2 -8003d9d0: 02202021 move a0,s1 -8003d9d4: 0c00a2d8 jal 80028b60 <__clzsi2> -8003d9d8: afa60010 sw a2,16(sp) -8003d9dc: 8fa60010 lw a2,16(sp) -8003d9e0: 2444fff5 addiu a0,v0,-11 -8003d9e4: 2883001d slti v1,a0,29 -8003d9e8: 10600084 beqz v1,8003dbfc <__divdf3+0x368> -8003d9ec: 00000000 nop -8003d9f0: 2405001d li a1,29 -8003d9f4: 2443fff8 addiu v1,v0,-8 -8003d9f8: 00a42823 subu a1,a1,a0 -8003d9fc: 00718804 sllv s1,s1,v1 -8003da00: 00a62806 srlv a1,a2,a1 -8003da04: 00b18825 or s1,a1,s1 -8003da08: 00661804 sllv v1,a2,v1 -8003da0c: 2405fc02 li a1,-1022 -8003da10: 00a42823 subu a1,a1,a0 -8003da14: 1000ffd1 b 8003d95c <__divdf3+0xc8> -8003da18: 00001021 move v0,zero -8003da1c: 02e03821 move a3,s7 -8003da20: 30e40001 andi a0,a3,0x1 -8003da24: 240307ff li v1,2047 -8003da28: 00002821 move a1,zero -8003da2c: 00009021 move s2,zero -8003da30: 3c10000f lui s0,0xf -8003da34: 3610ffff ori s0,s0,0xffff -8003da38: 00031d00 sll v1,v1,0x14 -8003da3c: 8fbf003c lw ra,60(sp) -8003da40: 00b08024 and s0,a1,s0 -8003da44: 02038025 or s0,s0,v1 -8003da48: 000427c0 sll a0,a0,0x1f -8003da4c: 02041825 or v1,s0,a0 -8003da50: 02401021 move v0,s2 -8003da54: 8fbe0038 lw s8,56(sp) -8003da58: 8fb70034 lw s7,52(sp) -8003da5c: 8fb60030 lw s6,48(sp) -8003da60: 8fb5002c lw s5,44(sp) -8003da64: 8fb40028 lw s4,40(sp) -8003da68: 8fb30024 lw s3,36(sp) -8003da6c: 8fb20020 lw s2,32(sp) -8003da70: 8fb1001c lw s1,28(sp) -8003da74: 8fb00018 lw s0,24(sp) -8003da78: 03e00008 jr ra -8003da7c: 27bd0040 addiu sp,sp,64 -8003da80: 02c0b821 move s7,s6 -8003da84: 02208021 move s0,s1 -8003da88: 00609021 move s2,v1 -8003da8c: 0040f021 move s8,v0 -8003da90: 24020002 li v0,2 -8003da94: 13c2ffe1 beq s8,v0,8003da1c <__divdf3+0x188> -8003da98: 24020003 li v0,3 -8003da9c: 13c201a6 beq s8,v0,8003e138 <__divdf3+0x8a4> -8003daa0: 00000000 nop -8003daa4: 24020001 li v0,1 -8003daa8: 17c20104 bne s8,v0,8003debc <__divdf3+0x628> -8003daac: 02e02021 move a0,s7 -8003dab0: 00001821 move v1,zero -8003dab4: 00002821 move a1,zero -8003dab8: 1000ffdd b 8003da30 <__divdf3+0x19c> -8003dabc: 00009021 move s2,zero -8003dac0: 02041025 or v0,s0,a0 -8003dac4: 10400023 beqz v0,8003db54 <__divdf3+0x2c0> -8003dac8: 24130004 li s3,4 -8003dacc: afa70014 sw a3,20(sp) -8003dad0: 12000057 beqz s0,8003dc30 <__divdf3+0x39c> -8003dad4: afa60010 sw a2,16(sp) -8003dad8: 0c00a2d8 jal 80028b60 <__clzsi2> -8003dadc: 02002021 move a0,s0 -8003dae0: 8fa60010 lw a2,16(sp) -8003dae4: 8fa70014 lw a3,20(sp) -8003dae8: 2443fff5 addiu v1,v0,-11 -8003daec: 2864001d slti a0,v1,29 -8003daf0: 1080004b beqz a0,8003dc20 <__divdf3+0x38c> -8003daf4: 2404001d li a0,29 -8003daf8: 2452fff8 addiu s2,v0,-8 -8003dafc: 00832023 subu a0,a0,v1 -8003db00: 02508004 sllv s0,s0,s2 -8003db04: 00912006 srlv a0,s1,a0 -8003db08: 00908025 or s0,a0,s0 -8003db0c: 02519004 sllv s2,s1,s2 -8003db10: 2405fc02 li a1,-1022 -8003db14: 00a3a823 subu s5,a1,v1 -8003db18: 00009821 move s3,zero -8003db1c: 1000ff7d b 8003d914 <__divdf3+0x80> -8003db20: 0000f021 move s8,zero -8003db24: 02263025 or a2,s1,a2 -8003db28: 14c00008 bnez a2,8003db4c <__divdf3+0x2b8> -8003db2c: 00000000 nop -8003db30: 00008821 move s1,zero -8003db34: 00001821 move v1,zero -8003db38: 1000ff88 b 8003d95c <__divdf3+0xc8> -8003db3c: 24020002 li v0,2 -8003db40: 00008821 move s1,zero -8003db44: 1000ff85 b 8003d95c <__divdf3+0xc8> -8003db48: 24020001 li v0,1 -8003db4c: 1000ff83 b 8003d95c <__divdf3+0xc8> -8003db50: 24020003 li v0,3 -8003db54: 00008021 move s0,zero -8003db58: 00009021 move s2,zero -8003db5c: 1000ff6d b 8003d914 <__divdf3+0x80> -8003db60: 241e0001 li s8,1 -8003db64: 2413000c li s3,12 -8003db68: 1000ff6a b 8003d914 <__divdf3+0x80> -8003db6c: 241e0003 li s8,3 -8003db70: 3c100007 lui s0,0x7 -8003db74: 3610ffff ori s0,s0,0xffff -8003db78: 2412ffff li s2,-1 -8003db7c: 0000b821 move s7,zero -8003db80: 3c05000f lui a1,0xf -8003db84: 34a5ffff ori a1,a1,0xffff -8003db88: 02052824 and a1,s0,a1 -8003db8c: 02e02021 move a0,s7 -8003db90: 1000ffa7 b 8003da30 <__divdf3+0x19c> -8003db94: 240307ff li v1,2047 -8003db98: 0230102b sltu v0,s1,s0 -8003db9c: 1440002d bnez v0,8003dc54 <__divdf3+0x3c0> -8003dba0: 00121042 srl v0,s2,0x1 -8003dba4: 12110028 beq s0,s1,8003dc48 <__divdf3+0x3b4> -8003dba8: 0243102b sltu v0,s2,v1 -8003dbac: 02403021 move a2,s2 -8003dbb0: 24a5ffff addiu a1,a1,-1 -8003dbb4: 1000002b b 8003dc64 <__divdf3+0x3d0> -8003dbb8: 00009021 move s2,zero -8003dbbc: 02118825 or s1,s0,s1 -8003dbc0: 3c050008 lui a1,0x8 -8003dbc4: 02258824 and s1,s1,a1 -8003dbc8: 162000b8 bnez s1,8003deac <__divdf3+0x618> -8003dbcc: 00000000 nop -8003dbd0: 24a5ffff addiu a1,a1,-1 -8003dbd4: 02058024 and s0,s0,a1 -8003dbd8: 02501025 or v0,s2,s0 -8003dbdc: 1440ffe8 bnez v0,8003db80 <__divdf3+0x2ec> -8003dbe0: 00000000 nop -8003dbe4: 3c050007 lui a1,0x7 -8003dbe8: 00002021 move a0,zero -8003dbec: 240307ff li v1,2047 -8003dbf0: 34a5ffff ori a1,a1,0xffff -8003dbf4: 1000ff8e b 8003da30 <__divdf3+0x19c> -8003dbf8: 2412ffff li s2,-1 -8003dbfc: 2442ffd8 addiu v0,v0,-40 -8003dc00: 00468804 sllv s1,a2,v0 -8003dc04: 1000ff81 b 8003da0c <__divdf3+0x178> -8003dc08: 00001821 move v1,zero -8003dc0c: 0c00a2d8 jal 80028b60 <__clzsi2> -8003dc10: afa60010 sw a2,16(sp) -8003dc14: 8fa60010 lw a2,16(sp) -8003dc18: 1000ff71 b 8003d9e0 <__divdf3+0x14c> -8003dc1c: 24420020 addiu v0,v0,32 -8003dc20: 2442ffd8 addiu v0,v0,-40 -8003dc24: 00518004 sllv s0,s1,v0 -8003dc28: 1000ffb9 b 8003db10 <__divdf3+0x27c> -8003dc2c: 00009021 move s2,zero -8003dc30: 0c00a2d8 jal 80028b60 <__clzsi2> -8003dc34: 00000000 nop -8003dc38: 8fa70014 lw a3,20(sp) -8003dc3c: 8fa60010 lw a2,16(sp) -8003dc40: 1000ffa9 b 8003dae8 <__divdf3+0x254> -8003dc44: 24420020 addiu v0,v0,32 -8003dc48: 1440ffd9 bnez v0,8003dbb0 <__divdf3+0x31c> -8003dc4c: 02403021 move a2,s2 -8003dc50: 00121042 srl v0,s2,0x1 -8003dc54: 001037c0 sll a2,s0,0x1f -8003dc58: 00c23025 or a2,a2,v0 -8003dc5c: 00108042 srl s0,s0,0x1 -8003dc60: 001297c0 sll s2,s2,0x1f -8003dc64: 00032602 srl a0,v1,0x18 -8003dc68: 00118a00 sll s1,s1,0x8 -8003dc6c: 02248825 or s1,s1,a0 -8003dc70: 00115402 srl t2,s1,0x10 -8003dc74: 15400002 bnez t2,8003dc80 <__divdf3+0x3ec> -8003dc78: 020a001b divu zero,s0,t2 -8003dc7c: 0007000d break 0x7 -8003dc80: 322bffff andi t3,s1,0xffff -8003dc84: 00064c02 srl t1,a2,0x10 -8003dc88: 00001012 mflo v0 -8003dc8c: 00006010 mfhi t4 -8003dc90: 000c6400 sll t4,t4,0x10 -8003dc94: 012c4025 or t0,t1,t4 -8003dc98: 01620018 mult t3,v0 -8003dc9c: 00008012 mflo s0 -8003dca0: 0110202b sltu a0,t0,s0 -8003dca4: 1080000a beqz a0,8003dcd0 <__divdf3+0x43c> -8003dca8: 00031a00 sll v1,v1,0x8 -8003dcac: 01114021 addu t0,t0,s1 -8003dcb0: 0111202b sltu a0,t0,s1 -8003dcb4: 148000b0 bnez a0,8003df78 <__divdf3+0x6e4> -8003dcb8: 2449ffff addiu t1,v0,-1 -8003dcbc: 0110202b sltu a0,t0,s0 -8003dcc0: 108000ad beqz a0,8003df78 <__divdf3+0x6e4> -8003dcc4: 00000000 nop -8003dcc8: 2442fffe addiu v0,v0,-2 -8003dccc: 01114021 addu t0,t0,s1 -8003dcd0: 01104023 subu t0,t0,s0 -8003dcd4: 15400002 bnez t2,8003dce0 <__divdf3+0x44c> -8003dcd8: 010a001b divu zero,t0,t2 -8003dcdc: 0007000d break 0x7 -8003dce0: 30c6ffff andi a2,a2,0xffff -8003dce4: 00008012 mflo s0 -8003dce8: 00004010 mfhi t0 -8003dcec: 00084400 sll t0,t0,0x10 -8003dcf0: 00c82025 or a0,a2,t0 -8003dcf4: 01700018 mult t3,s0 -8003dcf8: 00006012 mflo t4 -8003dcfc: 008c302b sltu a2,a0,t4 -8003dd00: 10c0000a beqz a2,8003dd2c <__divdf3+0x498> -8003dd04: 00000000 nop -8003dd08: 00912021 addu a0,a0,s1 -8003dd0c: 0091302b sltu a2,a0,s1 -8003dd10: 14c00097 bnez a2,8003df70 <__divdf3+0x6dc> -8003dd14: 2608ffff addiu t0,s0,-1 -8003dd18: 008c302b sltu a2,a0,t4 -8003dd1c: 10c00094 beqz a2,8003df70 <__divdf3+0x6dc> -8003dd20: 00000000 nop -8003dd24: 2610fffe addiu s0,s0,-2 -8003dd28: 00912021 addu a0,a0,s1 -8003dd2c: 00021400 sll v0,v0,0x10 -8003dd30: 00508025 or s0,v0,s0 -8003dd34: 02030019 multu s0,v1 -8003dd38: 008c2023 subu a0,a0,t4 -8003dd3c: 00004810 mfhi t1 -8003dd40: 0089102b sltu v0,a0,t1 -8003dd44: 00004012 mflo t0 -8003dd48: 14400049 bnez v0,8003de70 <__divdf3+0x5dc> -8003dd4c: 01206021 move t4,t1 -8003dd50: 10890045 beq a0,t1,8003de68 <__divdf3+0x5d4> -8003dd54: 0248102b sltu v0,s2,t0 -8003dd58: 00892023 subu a0,a0,t1 -8003dd5c: 02484023 subu t0,s2,t0 -8003dd60: 0248902b sltu s2,s2,t0 -8003dd64: 00922023 subu a0,a0,s2 -8003dd68: 122400af beq s1,a0,8003e028 <__divdf3+0x794> -8003dd6c: 00081402 srl v0,t0,0x10 -8003dd70: 15400002 bnez t2,8003dd7c <__divdf3+0x4e8> -8003dd74: 008a001b divu zero,a0,t2 -8003dd78: 0007000d break 0x7 -8003dd7c: 00002012 mflo a0 -8003dd80: 00003010 mfhi a2 -8003dd84: 00063400 sll a2,a2,0x10 -8003dd88: 00463025 or a2,v0,a2 -8003dd8c: 01640018 mult t3,a0 -8003dd90: 00009012 mflo s2 -8003dd94: 00d2102b sltu v0,a2,s2 -8003dd98: 1040000a beqz v0,8003ddc4 <__divdf3+0x530> -8003dd9c: 00000000 nop -8003dda0: 00d13021 addu a2,a2,s1 -8003dda4: 00d1102b sltu v0,a2,s1 -8003dda8: 144000a1 bnez v0,8003e030 <__divdf3+0x79c> -8003ddac: 2489ffff addiu t1,a0,-1 -8003ddb0: 00d2102b sltu v0,a2,s2 -8003ddb4: 1040009e beqz v0,8003e030 <__divdf3+0x79c> -8003ddb8: 00000000 nop -8003ddbc: 2484fffe addiu a0,a0,-2 -8003ddc0: 00d13021 addu a2,a2,s1 -8003ddc4: 00d23023 subu a2,a2,s2 -8003ddc8: 15400002 bnez t2,8003ddd4 <__divdf3+0x540> -8003ddcc: 00ca001b divu zero,a2,t2 -8003ddd0: 0007000d break 0x7 -8003ddd4: 3109ffff andi t1,t0,0xffff -8003ddd8: 00005012 mflo t2 -8003dddc: 00003010 mfhi a2 -8003dde0: 00063400 sll a2,a2,0x10 -8003dde4: 01264025 or t0,t1,a2 -8003dde8: 016a0018 mult t3,t2 -8003ddec: 00005812 mflo t3 -8003ddf0: 010b102b sltu v0,t0,t3 -8003ddf4: 1040000a beqz v0,8003de20 <__divdf3+0x58c> -8003ddf8: 00000000 nop -8003ddfc: 01114021 addu t0,t0,s1 -8003de00: 0111102b sltu v0,t0,s1 -8003de04: 1440008c bnez v0,8003e038 <__divdf3+0x7a4> -8003de08: 2546ffff addiu a2,t2,-1 -8003de0c: 010b102b sltu v0,t0,t3 -8003de10: 10400089 beqz v0,8003e038 <__divdf3+0x7a4> -8003de14: 00000000 nop -8003de18: 254afffe addiu t2,t2,-2 -8003de1c: 01114021 addu t0,t0,s1 -8003de20: 00042400 sll a0,a0,0x10 -8003de24: 008a9025 or s2,a0,t2 -8003de28: 00720019 multu v1,s2 -8003de2c: 010b4023 subu t0,t0,t3 -8003de30: 00006810 mfhi t5 -8003de34: 010d202b sltu a0,t0,t5 -8003de38: 00006012 mflo t4 -8003de3c: 00003012 mflo a2 -8003de40: 1080003e beqz a0,8003df3c <__divdf3+0x6a8> -8003de44: 01a01021 move v0,t5 -8003de48: 02284021 addu t0,s1,t0 -8003de4c: 0111482b sltu t1,t0,s1 -8003de50: 1120007b beqz t1,8003e040 <__divdf3+0x7ac> -8003de54: 2644ffff addiu a0,s2,-1 -8003de58: 1102004d beq t0,v0,8003df90 <__divdf3+0x6fc> -8003de5c: 00809021 move s2,a0 -8003de60: 10000017 b 8003dec0 <__divdf3+0x62c> -8003de64: 36520001 ori s2,s2,0x1 -8003de68: 10400050 beqz v0,8003dfac <__divdf3+0x718> -8003de6c: 00000000 nop -8003de70: 02439021 addu s2,s2,v1 -8003de74: 0243302b sltu a2,s2,v1 -8003de78: 00d11021 addu v0,a2,s1 -8003de7c: 00442021 addu a0,v0,a0 -8003de80: 0224102b sltu v0,s1,a0 -8003de84: 10400033 beqz v0,8003df54 <__divdf3+0x6c0> -8003de88: 260dffff addiu t5,s0,-1 -8003de8c: 0089102b sltu v0,a0,t1 -8003de90: 1440007b bnez v0,8003e080 <__divdf3+0x7ec> -8003de94: 00000000 nop -8003de98: 11840041 beq t4,a0,8003dfa0 <__divdf3+0x70c> -8003de9c: 0248102b sltu v0,s2,t0 -8003dea0: 00892023 subu a0,a0,t1 -8003dea4: 1000ffad b 8003dd5c <__divdf3+0x4c8> -8003dea8: 01a08021 move s0,t5 -8003deac: 24b0ffff addiu s0,a1,-1 -8003deb0: 2412ffff li s2,-1 -8003deb4: 1000ff32 b 8003db80 <__divdf3+0x2ec> -8003deb8: 0000b821 move s7,zero -8003debc: 02e03821 move a3,s7 -8003dec0: 24a303ff addiu v1,a1,1023 -8003dec4: 1860003b blez v1,8003dfb4 <__divdf3+0x720> -8003dec8: 00000000 nop -8003decc: 32420007 andi v0,s2,0x7 -8003ded0: 10400009 beqz v0,8003def8 <__divdf3+0x664> -8003ded4: 3c020100 lui v0,0x100 -8003ded8: 3242000f andi v0,s2,0xf -8003dedc: 24040004 li a0,4 -8003dee0: 10440004 beq v0,a0,8003def4 <__divdf3+0x660> -8003dee4: 26420004 addiu v0,s2,4 -8003dee8: 0052902b sltu s2,v0,s2 -8003deec: 02128021 addu s0,s0,s2 -8003def0: 00409021 move s2,v0 -8003def4: 3c020100 lui v0,0x100 -8003def8: 02021024 and v0,s0,v0 -8003defc: 10400006 beqz v0,8003df18 <__divdf3+0x684> -8003df00: 286207ff slti v0,v1,2047 -8003df04: 3c02feff lui v0,0xfeff -8003df08: 3442ffff ori v0,v0,0xffff -8003df0c: 02028024 and s0,s0,v0 -8003df10: 24a30400 addiu v1,a1,1024 -8003df14: 286207ff slti v0,v1,2047 -8003df18: 1040fec1 beqz v0,8003da20 <__divdf3+0x18c> -8003df1c: 00101740 sll v0,s0,0x1d -8003df20: 001290c2 srl s2,s2,0x3 -8003df24: 00108240 sll s0,s0,0x9 -8003df28: 00529025 or s2,v0,s2 -8003df2c: 00102b02 srl a1,s0,0xc -8003df30: 306307ff andi v1,v1,0x7ff -8003df34: 1000febe b 8003da30 <__divdf3+0x19c> -8003df38: 30e40001 andi a0,a3,0x1 -8003df3c: 150dffc8 bne t0,t5,8003de60 <__divdf3+0x5cc> -8003df40: 00000000 nop -8003df44: 1180ffde beqz t4,8003dec0 <__divdf3+0x62c> -8003df48: 02284021 addu t0,s1,t0 -8003df4c: 1000ffc0 b 8003de50 <__divdf3+0x5bc> -8003df50: 0111482b sltu t1,t0,s1 -8003df54: 1624ffd2 bne s1,a0,8003dea0 <__divdf3+0x60c> -8003df58: 00000000 nop -8003df5c: 10c0ffcc beqz a2,8003de90 <__divdf3+0x5fc> -8003df60: 0089102b sltu v0,a0,t1 -8003df64: 02292023 subu a0,s1,t1 -8003df68: 1000ff7c b 8003dd5c <__divdf3+0x4c8> -8003df6c: 01a08021 move s0,t5 -8003df70: 1000ff6e b 8003dd2c <__divdf3+0x498> -8003df74: 01008021 move s0,t0 -8003df78: 1000ff55 b 8003dcd0 <__divdf3+0x43c> -8003df7c: 01201021 move v0,t1 -8003df80: 006c602b sltu t4,v1,t4 -8003df84: 15800045 bnez t4,8003e09c <__divdf3+0x808> -8003df88: 00034840 sll t1,v1,0x1 -8003df8c: 00809021 move s2,a0 -8003df90: 1066ffcc beq v1,a2,8003dec4 <__divdf3+0x630> -8003df94: 24a303ff addiu v1,a1,1023 -8003df98: 1000ffca b 8003dec4 <__divdf3+0x630> -8003df9c: 36520001 ori s2,s2,0x1 -8003dfa0: 14400037 bnez v0,8003e080 <__divdf3+0x7ec> -8003dfa4: 00000000 nop -8003dfa8: 01a08021 move s0,t5 -8003dfac: 1000ff6b b 8003dd5c <__divdf3+0x4c8> -8003dfb0: 00002021 move a0,zero -8003dfb4: 1460002a bnez v1,8003e060 <__divdf3+0x7cc> -8003dfb8: 24020001 li v0,1 -8003dfbc: 24030020 li v1,32 -8003dfc0: 00621823 subu v1,v1,v0 -8003dfc4: 00702004 sllv a0,s0,v1 -8003dfc8: 00522806 srlv a1,s2,v0 -8003dfcc: 00721804 sllv v1,s2,v1 -8003dfd0: 0003182b sltu v1,zero,v1 -8003dfd4: 00852025 or a0,a0,a1 -8003dfd8: 00832025 or a0,a0,v1 -8003dfdc: 30830007 andi v1,a0,0x7 -8003dfe0: 10600008 beqz v1,8003e004 <__divdf3+0x770> -8003dfe4: 00501006 srlv v0,s0,v0 -8003dfe8: 3083000f andi v1,a0,0xf -8003dfec: 24050004 li a1,4 -8003dff0: 10650004 beq v1,a1,8003e004 <__divdf3+0x770> -8003dff4: 00801821 move v1,a0 -8003dff8: 24640004 addiu a0,v1,4 -8003dffc: 0083182b sltu v1,a0,v1 -8003e000: 00431021 addu v0,v0,v1 -8003e004: 3c030080 lui v1,0x80 -8003e008: 00431824 and v1,v0,v1 -8003e00c: 1060002a beqz v1,8003e0b8 <__divdf3+0x824> -8003e010: 00000000 nop -8003e014: 24030001 li v1,1 -8003e018: 00002821 move a1,zero -8003e01c: 00009021 move s2,zero -8003e020: 1000fe83 b 8003da30 <__divdf3+0x19c> -8003e024: 30e40001 andi a0,a3,0x1 -8003e028: 1000ffa5 b 8003dec0 <__divdf3+0x62c> -8003e02c: 2412ffff li s2,-1 -8003e030: 1000ff64 b 8003ddc4 <__divdf3+0x530> -8003e034: 01202021 move a0,t1 -8003e038: 1000ff79 b 8003de20 <__divdf3+0x58c> -8003e03c: 00c05021 move t2,a2 -8003e040: 010d482b sltu t1,t0,t5 -8003e044: 15200014 bnez t1,8003e098 <__divdf3+0x804> -8003e048: 00000000 nop -8003e04c: 1048ffcc beq v0,t0,8003df80 <__divdf3+0x6ec> -8003e050: 00000000 nop -8003e054: 00809021 move s2,a0 -8003e058: 1000ff99 b 8003dec0 <__divdf3+0x62c> -8003e05c: 36520001 ori s2,s2,0x1 -8003e060: 00431023 subu v0,v0,v1 -8003e064: 28440039 slti a0,v0,57 -8003e068: 1480001c bnez a0,8003e0dc <__divdf3+0x848> -8003e06c: 30e40001 andi a0,a3,0x1 -8003e070: 00001821 move v1,zero -8003e074: 00002821 move a1,zero -8003e078: 1000fe6d b 8003da30 <__divdf3+0x19c> -8003e07c: 00009021 move s2,zero -8003e080: 02439021 addu s2,s2,v1 -8003e084: 0243302b sltu a2,s2,v1 -8003e088: 00d13021 addu a2,a2,s1 -8003e08c: 00c42021 addu a0,a2,a0 -8003e090: 1000ff31 b 8003dd58 <__divdf3+0x4c4> -8003e094: 2610fffe addiu s0,s0,-2 -8003e098: 00034840 sll t1,v1,0x1 -8003e09c: 0123182b sltu v1,t1,v1 -8003e0a0: 00718821 addu s1,v1,s1 -8003e0a4: 2644fffe addiu a0,s2,-2 -8003e0a8: 01114021 addu t0,t0,s1 -8003e0ac: 1000ff6a b 8003de58 <__divdf3+0x5c4> -8003e0b0: 01201821 move v1,t1 -8003e0b4: 00602021 move a0,v1 -8003e0b8: 00022a40 sll a1,v0,0x9 -8003e0bc: 00052b02 srl a1,a1,0xc -8003e0c0: 00021740 sll v0,v0,0x1d -8003e0c4: 00801821 move v1,a0 -8003e0c8: 000318c2 srl v1,v1,0x3 -8003e0cc: 00629025 or s2,v1,v0 -8003e0d0: 30e40001 andi a0,a3,0x1 -8003e0d4: 1000fe56 b 8003da30 <__divdf3+0x19c> -8003e0d8: 00001821 move v1,zero -8003e0dc: 28440020 slti a0,v0,32 -8003e0e0: 1480ffb6 bnez a0,8003dfbc <__divdf3+0x728> -8003e0e4: 2404ffe1 li a0,-31 -8003e0e8: 00831823 subu v1,a0,v1 -8003e0ec: 24040020 li a0,32 -8003e0f0: 1044000f beq v0,a0,8003e130 <__divdf3+0x89c> -8003e0f4: 00701806 srlv v1,s0,v1 -8003e0f8: 00021023 negu v0,v0 -8003e0fc: 00501004 sllv v0,s0,v0 -8003e100: 00521025 or v0,v0,s2 -8003e104: 0002102b sltu v0,zero,v0 -8003e108: 00621825 or v1,v1,v0 -8003e10c: 30620007 andi v0,v1,0x7 -8003e110: 1040ffed beqz v0,8003e0c8 <__divdf3+0x834> -8003e114: 00002821 move a1,zero -8003e118: 3062000f andi v0,v1,0xf -8003e11c: 24040004 li a0,4 -8003e120: 1044ffe4 beq v0,a0,8003e0b4 <__divdf3+0x820> -8003e124: 00001021 move v0,zero -8003e128: 1000ffb4 b 8003dffc <__divdf3+0x768> -8003e12c: 24640004 addiu a0,v1,4 -8003e130: 1000fff3 b 8003e100 <__divdf3+0x86c> -8003e134: 00001021 move v0,zero -8003e138: 3c050007 lui a1,0x7 -8003e13c: 34a5ffff ori a1,a1,0xffff -8003e140: 02058024 and s0,s0,a1 -8003e144: 1000fea5 b 8003dbdc <__divdf3+0x348> -8003e148: 02501025 or v0,s2,s0 - -8003e14c <__muldf3>: -8003e14c: 27bdffc0 addiu sp,sp,-64 -8003e150: 00054502 srl t0,a1,0x14 -8003e154: afb20020 sw s2,32(sp) -8003e158: afb1001c sw s1,28(sp) -8003e15c: 00809021 move s2,a0 -8003e160: 00808821 move s1,a0 -8003e164: 3c04000f lui a0,0xf -8003e168: afb70034 sw s7,52(sp) -8003e16c: afb40028 sw s4,40(sp) -8003e170: 3484ffff ori a0,a0,0xffff -8003e174: 0005a7c2 srl s4,a1,0x1f -8003e178: 311707ff andi s7,t0,0x7ff -8003e17c: afb60030 sw s6,48(sp) -8003e180: afb5002c sw s5,44(sp) -8003e184: afbf003c sw ra,60(sp) -8003e188: afbe0038 sw s8,56(sp) -8003e18c: afb30024 sw s3,36(sp) -8003e190: afb00018 sw s0,24(sp) -8003e194: 0085b024 and s6,a0,a1 -8003e198: 12e00072 beqz s7,8003e364 <__muldf3+0x218> -8003e19c: 0280a821 move s5,s4 -8003e1a0: 240207ff li v0,2047 -8003e1a4: 12e20029 beq s7,v0,8003e24c <__muldf3+0x100> -8003e1a8: 3c040010 lui a0,0x10 -8003e1ac: 02c42825 or a1,s6,a0 -8003e1b0: 000520c0 sll a0,a1,0x3 -8003e1b4: 00122f42 srl a1,s2,0x1d -8003e1b8: 001288c0 sll s1,s2,0x3 -8003e1bc: 00a4b025 or s6,a1,a0 -8003e1c0: 26f7fc01 addiu s7,s7,-1023 -8003e1c4: 00009021 move s2,zero -8003e1c8: 0000f021 move s8,zero -8003e1cc: 00074d02 srl t1,a3,0x14 -8003e1d0: 3c10000f lui s0,0xf -8003e1d4: 3610ffff ori s0,s0,0xffff -8003e1d8: 312807ff andi t0,t1,0x7ff -8003e1dc: 00c02021 move a0,a2 -8003e1e0: 02078024 and s0,s0,a3 -8003e1e4: 11000028 beqz t0,8003e288 <__muldf3+0x13c> -8003e1e8: 00079fc2 srl s3,a3,0x1f -8003e1ec: 240207ff li v0,2047 -8003e1f0: 11020076 beq t0,v0,8003e3cc <__muldf3+0x280> -8003e1f4: 3c020010 lui v0,0x10 -8003e1f8: 02028025 or s0,s0,v0 -8003e1fc: 001080c0 sll s0,s0,0x3 -8003e200: 00061742 srl v0,a2,0x1d -8003e204: 00508025 or s0,v0,s0 -8003e208: 000620c0 sll a0,a2,0x3 -8003e20c: 2508fc01 addiu t0,t0,-1023 -8003e210: 00001021 move v0,zero -8003e214: 00523025 or a2,v0,s2 -8003e218: 02e84021 addu t0,s7,t0 -8003e21c: 2cc50010 sltiu a1,a2,16 -8003e220: 02931826 xor v1,s4,s3 -8003e224: 10a00092 beqz a1,8003e470 <__muldf3+0x324> -8003e228: 25070001 addiu a3,t0,1 -8003e22c: 3c098004 lui t1,0x8004 -8003e230: 00063080 sll a2,a2,0x2 -8003e234: 252900bc addiu t1,t1,188 -8003e238: 01263021 addu a2,t1,a2 -8003e23c: 8cc50000 lw a1,0(a2) -8003e240: 00000000 nop -8003e244: 00a00008 jr a1 -8003e248: 00000000 nop -8003e24c: 02d29025 or s2,s6,s2 -8003e250: 16400072 bnez s2,8003e41c <__muldf3+0x2d0> -8003e254: 2412000c li s2,12 -8003e258: 00074d02 srl t1,a3,0x14 -8003e25c: 3c10000f lui s0,0xf -8003e260: 3610ffff ori s0,s0,0xffff -8003e264: 312807ff andi t0,t1,0x7ff -8003e268: 24120008 li s2,8 -8003e26c: 0000b021 move s6,zero -8003e270: 00008821 move s1,zero -8003e274: 241e0002 li s8,2 -8003e278: 00c02021 move a0,a2 -8003e27c: 02078024 and s0,s0,a3 -8003e280: 1500ffda bnez t0,8003e1ec <__muldf3+0xa0> -8003e284: 00079fc2 srl s3,a3,0x1f -8003e288: 02061025 or v0,s0,a2 -8003e28c: 1040005a beqz v0,8003e3f8 <__muldf3+0x2ac> -8003e290: 00002021 move a0,zero -8003e294: 120000db beqz s0,8003e604 <__muldf3+0x4b8> -8003e298: 00c02021 move a0,a2 -8003e29c: 02002021 move a0,s0 -8003e2a0: 0c00a2d8 jal 80028b60 <__clzsi2> -8003e2a4: afa60010 sw a2,16(sp) -8003e2a8: 8fa60010 lw a2,16(sp) -8003e2ac: 2448fff5 addiu t0,v0,-11 -8003e2b0: 2903001d slti v1,t0,29 -8003e2b4: 106000cf beqz v1,8003e5f4 <__muldf3+0x4a8> -8003e2b8: 2403001d li v1,29 -8003e2bc: 2444fff8 addiu a0,v0,-8 -8003e2c0: 00681823 subu v1,v1,t0 -8003e2c4: 00908004 sllv s0,s0,a0 -8003e2c8: 00661806 srlv v1,a2,v1 -8003e2cc: 00708025 or s0,v1,s0 -8003e2d0: 00862004 sllv a0,a2,a0 -8003e2d4: 2406fc02 li a2,-1022 -8003e2d8: 00c84023 subu t0,a2,t0 -8003e2dc: 1000ffcd b 8003e214 <__muldf3+0xc8> -8003e2e0: 00001021 move v0,zero -8003e2e4: 02601821 move v1,s3 -8003e2e8: 24050002 li a1,2 -8003e2ec: 1045003e beq v0,a1,8003e3e8 <__muldf3+0x29c> -8003e2f0: 24050003 li a1,3 -8003e2f4: 10450113 beq v0,a1,8003e744 <__muldf3+0x5f8> -8003e2f8: 3c050007 lui a1,0x7 -8003e2fc: 24050001 li a1,1 -8003e300: 1445008d bne v0,a1,8003e538 <__muldf3+0x3ec> -8003e304: 00e04021 move t0,a3 -8003e308: 00008021 move s0,zero -8003e30c: 00002021 move a0,zero -8003e310: 00008821 move s1,zero -8003e314: 00101500 sll v0,s0,0x14 -8003e318: 3c10000f lui s0,0xf -8003e31c: 3610ffff ori s0,s0,0xffff -8003e320: 8fbf003c lw ra,60(sp) -8003e324: 00908024 and s0,a0,s0 -8003e328: 02028025 or s0,s0,v0 -8003e32c: 00031fc0 sll v1,v1,0x1f -8003e330: 02031825 or v1,s0,v1 -8003e334: 02201021 move v0,s1 -8003e338: 8fbe0038 lw s8,56(sp) -8003e33c: 8fb70034 lw s7,52(sp) -8003e340: 8fb60030 lw s6,48(sp) -8003e344: 8fb5002c lw s5,44(sp) -8003e348: 8fb40028 lw s4,40(sp) -8003e34c: 8fb30024 lw s3,36(sp) -8003e350: 8fb20020 lw s2,32(sp) -8003e354: 8fb1001c lw s1,28(sp) -8003e358: 8fb00018 lw s0,24(sp) -8003e35c: 03e00008 jr ra -8003e360: 27bd0040 addiu sp,sp,64 -8003e364: 02d21025 or v0,s6,s2 -8003e368: 10400028 beqz v0,8003e40c <__muldf3+0x2c0> -8003e36c: 00008821 move s1,zero -8003e370: afa70014 sw a3,20(sp) -8003e374: 12c000ab beqz s6,8003e624 <__muldf3+0x4d8> -8003e378: afa60010 sw a2,16(sp) -8003e37c: 0c00a2d8 jal 80028b60 <__clzsi2> -8003e380: 02c02021 move a0,s6 -8003e384: 8fa60010 lw a2,16(sp) -8003e388: 8fa70014 lw a3,20(sp) -8003e38c: 2443fff5 addiu v1,v0,-11 -8003e390: 2864001d slti a0,v1,29 -8003e394: 108000a0 beqz a0,8003e618 <__muldf3+0x4cc> -8003e398: 2445ffd8 addiu a1,v0,-40 -8003e39c: 2408001d li t0,29 -8003e3a0: 2451fff8 addiu s1,v0,-8 -8003e3a4: 01034023 subu t0,t0,v1 -8003e3a8: 02362804 sllv a1,s6,s1 -8003e3ac: 01124006 srlv t0,s2,t0 -8003e3b0: 0105b025 or s6,t0,a1 -8003e3b4: 02328804 sllv s1,s2,s1 -8003e3b8: 2408fc02 li t0,-1022 -8003e3bc: 0103b823 subu s7,t0,v1 -8003e3c0: 00009021 move s2,zero -8003e3c4: 1000ff81 b 8003e1cc <__muldf3+0x80> -8003e3c8: 0000f021 move s8,zero -8003e3cc: 02063025 or a2,s0,a2 -8003e3d0: 14c0000c bnez a2,8003e404 <__muldf3+0x2b8> -8003e3d4: 00000000 nop -8003e3d8: 00008021 move s0,zero -8003e3dc: 00002021 move a0,zero -8003e3e0: 1000ff8c b 8003e214 <__muldf3+0xc8> -8003e3e4: 24020002 li v0,2 -8003e3e8: 241007ff li s0,2047 -8003e3ec: 00002021 move a0,zero -8003e3f0: 1000ffc8 b 8003e314 <__muldf3+0x1c8> -8003e3f4: 00008821 move s1,zero -8003e3f8: 00008021 move s0,zero -8003e3fc: 1000ff85 b 8003e214 <__muldf3+0xc8> -8003e400: 24020001 li v0,1 -8003e404: 1000ff83 b 8003e214 <__muldf3+0xc8> -8003e408: 24020003 li v0,3 -8003e40c: 24120004 li s2,4 -8003e410: 0000b021 move s6,zero -8003e414: 1000ff6d b 8003e1cc <__muldf3+0x80> -8003e418: 241e0001 li s8,1 -8003e41c: 1000ff6b b 8003e1cc <__muldf3+0x80> -8003e420: 241e0003 li s8,3 -8003e424: 3c100007 lui s0,0x7 -8003e428: 3605ffff ori a1,s0,0xffff -8003e42c: 2411ffff li s1,-1 -8003e430: 0000a821 move s5,zero -8003e434: 3c10000f lui s0,0xf -8003e438: 3610ffff ori s0,s0,0xffff -8003e43c: 00b02024 and a0,a1,s0 -8003e440: 32a30001 andi v1,s5,0x1 -8003e444: 1000ffb3 b 8003e314 <__muldf3+0x1c8> -8003e448: 241007ff li s0,2047 -8003e44c: 02c08021 move s0,s6 -8003e450: 02202021 move a0,s1 -8003e454: 1000ffa4 b 8003e2e8 <__muldf3+0x19c> -8003e458: 03c01021 move v0,s8 -8003e45c: 02c08021 move s0,s6 -8003e460: 02202021 move a0,s1 -8003e464: 02801821 move v1,s4 -8003e468: 1000ff9f b 8003e2e8 <__muldf3+0x19c> -8003e46c: 03c01021 move v0,s8 -8003e470: 02300019 multu s1,s0 -8003e474: 00007012 mflo t6 -8003e478: 00007810 mfhi t7 - ... -8003e484: 02240019 multu s1,a0 -8003e488: 00006012 mflo t4 -8003e48c: 00006810 mfhi t5 -8003e490: 01ae5021 addu t2,t5,t6 -8003e494: 014e102b sltu v0,t2,t6 -8003e498: 02160019 multu s0,s6 -8003e49c: 00008012 mflo s0 -8003e4a0: 01f03021 addu a2,t7,s0 -8003e4a4: 00464821 addu t1,v0,a2 -8003e4a8: 00008810 mfhi s1 -8003e4ac: 0122102b sltu v0,t1,v0 -8003e4b0: 00cf302b sltu a2,a2,t7 -8003e4b4: 00960019 multu a0,s6 -8003e4b8: 00c23025 or a2,a2,v0 -8003e4bc: 00d13021 addu a2,a2,s1 -8003e4c0: 3c020100 lui v0,0x100 -8003e4c4: 00002012 mflo a0 -8003e4c8: 01445021 addu t2,t2,a0 -8003e4cc: 0144802b sltu s0,t2,a0 -8003e4d0: 00002810 mfhi a1 -8003e4d4: 01254821 addu t1,t1,a1 -8003e4d8: 0209b021 addu s6,s0,t1 -8003e4dc: 02d0802b sltu s0,s6,s0 -8003e4e0: 0125482b sltu t1,t1,a1 -8003e4e4: 01308025 or s0,t1,s0 -8003e4e8: 00d08021 addu s0,a2,s0 -8003e4ec: 000a8a40 sll s1,t2,0x9 -8003e4f0: 00102a40 sll a1,s0,0x9 -8003e4f4: 022c8825 or s1,s1,t4 -8003e4f8: 001685c2 srl s0,s6,0x17 -8003e4fc: 0011202b sltu a0,zero,s1 -8003e500: 00b08025 or s0,a1,s0 -8003e504: 000a55c2 srl t2,t2,0x17 -8003e508: 008a5025 or t2,a0,t2 -8003e50c: 02021024 and v0,s0,v0 -8003e510: 00162240 sll a0,s6,0x9 -8003e514: 10400008 beqz v0,8003e538 <__muldf3+0x3ec> -8003e518: 01442025 or a0,t2,a0 -8003e51c: 00041042 srl v0,a0,0x1 -8003e520: 30840001 andi a0,a0,0x1 -8003e524: 00102fc0 sll a1,s0,0x1f -8003e528: 00442025 or a0,v0,a0 -8003e52c: 00a42025 or a0,a1,a0 -8003e530: 00108042 srl s0,s0,0x1 -8003e534: 00e04021 move t0,a3 -8003e538: 250203ff addiu v0,t0,1023 -8003e53c: 18400042 blez v0,8003e648 <__muldf3+0x4fc> -8003e540: 00000000 nop -8003e544: 30850007 andi a1,a0,0x7 -8003e548: 10a00009 beqz a1,8003e570 <__muldf3+0x424> -8003e54c: 3c050100 lui a1,0x100 -8003e550: 3085000f andi a1,a0,0xf -8003e554: 24060004 li a2,4 -8003e558: 10a60004 beq a1,a2,8003e56c <__muldf3+0x420> -8003e55c: 24850004 addiu a1,a0,4 -8003e560: 00a4202b sltu a0,a1,a0 -8003e564: 02048021 addu s0,s0,a0 -8003e568: 00a02021 move a0,a1 -8003e56c: 3c050100 lui a1,0x100 -8003e570: 02052824 and a1,s0,a1 -8003e574: 10a00006 beqz a1,8003e590 <__muldf3+0x444> -8003e578: 284507ff slti a1,v0,2047 -8003e57c: 3c02feff lui v0,0xfeff -8003e580: 3442ffff ori v0,v0,0xffff -8003e584: 02028024 and s0,s0,v0 -8003e588: 25020400 addiu v0,t0,1024 -8003e58c: 284507ff slti a1,v0,2047 -8003e590: 10a0ff95 beqz a1,8003e3e8 <__muldf3+0x29c> -8003e594: 00000000 nop -8003e598: 000420c2 srl a0,a0,0x3 -8003e59c: 00108f40 sll s1,s0,0x1d -8003e5a0: 00108240 sll s0,s0,0x9 -8003e5a4: 02248825 or s1,s1,a0 -8003e5a8: 00102302 srl a0,s0,0xc -8003e5ac: 1000ff59 b 8003e314 <__muldf3+0x1c8> -8003e5b0: 305007ff andi s0,v0,0x7ff -8003e5b4: 02d08025 or s0,s6,s0 -8003e5b8: 3c040008 lui a0,0x8 -8003e5bc: 02048024 and s0,s0,a0 -8003e5c0: 1600001e bnez s0,8003e63c <__muldf3+0x4f0> -8003e5c4: 2485ffff addiu a1,a0,-1 -8003e5c8: 2484ffff addiu a0,a0,-1 -8003e5cc: 02c42824 and a1,s6,a0 -8003e5d0: 02251025 or v0,s1,a1 -8003e5d4: 1440ff97 bnez v0,8003e434 <__muldf3+0x2e8> -8003e5d8: 00000000 nop -8003e5dc: 3c040007 lui a0,0x7 -8003e5e0: 00001821 move v1,zero -8003e5e4: 241007ff li s0,2047 -8003e5e8: 3484ffff ori a0,a0,0xffff -8003e5ec: 1000ff49 b 8003e314 <__muldf3+0x1c8> -8003e5f0: 2411ffff li s1,-1 -8003e5f4: 2442ffd8 addiu v0,v0,-40 -8003e5f8: 00468004 sllv s0,a2,v0 -8003e5fc: 1000ff35 b 8003e2d4 <__muldf3+0x188> -8003e600: 00002021 move a0,zero -8003e604: 0c00a2d8 jal 80028b60 <__clzsi2> -8003e608: afa60010 sw a2,16(sp) -8003e60c: 8fa60010 lw a2,16(sp) -8003e610: 1000ff26 b 8003e2ac <__muldf3+0x160> -8003e614: 24420020 addiu v0,v0,32 -8003e618: 00b2b004 sllv s6,s2,a1 -8003e61c: 1000ff66 b 8003e3b8 <__muldf3+0x26c> -8003e620: 00008821 move s1,zero -8003e624: 0c00a2d8 jal 80028b60 <__clzsi2> -8003e628: 02402021 move a0,s2 -8003e62c: 8fa70014 lw a3,20(sp) -8003e630: 8fa60010 lw a2,16(sp) -8003e634: 1000ff55 b 8003e38c <__muldf3+0x240> -8003e638: 24420020 addiu v0,v0,32 -8003e63c: 2411ffff li s1,-1 -8003e640: 1000ff7c b 8003e434 <__muldf3+0x2e8> -8003e644: 0000a821 move s5,zero -8003e648: 1440001b bnez v0,8003e6b8 <__muldf3+0x56c> -8003e64c: 24050001 li a1,1 -8003e650: 24020020 li v0,32 -8003e654: 00451023 subu v0,v0,a1 -8003e658: 00503004 sllv a2,s0,v0 -8003e65c: 00a43806 srlv a3,a0,a1 -8003e660: 00441004 sllv v0,a0,v0 -8003e664: 0002102b sltu v0,zero,v0 -8003e668: 00c73025 or a2,a2,a3 -8003e66c: 00c23025 or a2,a2,v0 -8003e670: 30c20007 andi v0,a2,0x7 -8003e674: 10400008 beqz v0,8003e698 <__muldf3+0x54c> -8003e678: 00b02806 srlv a1,s0,a1 -8003e67c: 30c2000f andi v0,a2,0xf -8003e680: 24040004 li a0,4 -8003e684: 10440004 beq v0,a0,8003e698 <__muldf3+0x54c> -8003e688: 00c01021 move v0,a2 -8003e68c: 24460004 addiu a2,v0,4 -8003e690: 00c2102b sltu v0,a2,v0 -8003e694: 00a22821 addu a1,a1,v0 -8003e698: 3c020080 lui v0,0x80 -8003e69c: 00a21024 and v0,a1,v0 -8003e6a0: 1040001d beqz v0,8003e718 <__muldf3+0x5cc> -8003e6a4: 00000000 nop -8003e6a8: 24100001 li s0,1 -8003e6ac: 00002021 move a0,zero -8003e6b0: 1000ff18 b 8003e314 <__muldf3+0x1c8> -8003e6b4: 00008821 move s1,zero -8003e6b8: 00a22823 subu a1,a1,v0 -8003e6bc: 28a60039 slti a2,a1,57 -8003e6c0: 10c0ff11 beqz a2,8003e308 <__muldf3+0x1bc> -8003e6c4: 28a60020 slti a2,a1,32 -8003e6c8: 14c0ffe1 bnez a2,8003e650 <__muldf3+0x504> -8003e6cc: 2406ffe1 li a2,-31 -8003e6d0: 00c21023 subu v0,a2,v0 -8003e6d4: 00503006 srlv a2,s0,v0 -8003e6d8: 24020020 li v0,32 -8003e6dc: 10a20003 beq a1,v0,8003e6ec <__muldf3+0x5a0> -8003e6e0: 00001021 move v0,zero -8003e6e4: 00051023 negu v0,a1 -8003e6e8: 00501004 sllv v0,s0,v0 -8003e6ec: 00441025 or v0,v0,a0 -8003e6f0: 0002102b sltu v0,zero,v0 -8003e6f4: 00c21025 or v0,a2,v0 -8003e6f8: 30450007 andi a1,v0,0x7 -8003e6fc: 14a0000b bnez a1,8003e72c <__muldf3+0x5e0> -8003e700: 00002021 move a0,zero -8003e704: 000210c2 srl v0,v0,0x3 -8003e708: 00a28825 or s1,a1,v0 -8003e70c: 1000ff01 b 8003e314 <__muldf3+0x1c8> -8003e710: 00008021 move s0,zero -8003e714: 00002821 move a1,zero -8003e718: 00052240 sll a0,a1,0x9 -8003e71c: 00042302 srl a0,a0,0xc -8003e720: 00052f40 sll a1,a1,0x1d -8003e724: 1000fff7 b 8003e704 <__muldf3+0x5b8> -8003e728: 00c01021 move v0,a2 -8003e72c: 3044000f andi a0,v0,0xf -8003e730: 24050004 li a1,4 -8003e734: 1085fff7 beq a0,a1,8003e714 <__muldf3+0x5c8> -8003e738: 00403021 move a2,v0 -8003e73c: 1000ffd3 b 8003e68c <__muldf3+0x540> -8003e740: 00002821 move a1,zero -8003e744: 34a5ffff ori a1,a1,0xffff -8003e748: 02052824 and a1,s0,a1 -8003e74c: 00851025 or v0,a0,a1 -8003e750: 00808821 move s1,a0 -8003e754: 1000ff9f b 8003e5d4 <__muldf3+0x488> -8003e758: 0060a821 move s5,v1 - -8003e75c <__subdf3>: -8003e75c: 3c08000f lui t0,0xf -8003e760: 3508ffff ori t0,t0,0xffff -8003e764: 01054824 and t1,t0,a1 -8003e768: 00075502 srl t2,a3,0x14 -8003e76c: 01074024 and t0,t0,a3 -8003e770: 27bdffd8 addiu sp,sp,-40 -8003e774: 00051502 srl v0,a1,0x14 -8003e778: 00046742 srl t4,a0,0x1d -8003e77c: 00065f42 srl t3,a2,0x1d -8003e780: 000948c0 sll t1,t1,0x3 -8003e784: 000840c0 sll t0,t0,0x3 -8003e788: 314a07ff andi t2,t2,0x7ff -8003e78c: 240307ff li v1,2047 -8003e790: 000420c0 sll a0,a0,0x3 -8003e794: afb10018 sw s1,24(sp) -8003e798: afb00014 sw s0,20(sp) -8003e79c: 305107ff andi s1,v0,0x7ff -8003e7a0: afbf0024 sw ra,36(sp) -8003e7a4: afb30020 sw s3,32(sp) -8003e7a8: afb2001c sw s2,28(sp) -8003e7ac: 000587c2 srl s0,a1,0x1f -8003e7b0: 012c1025 or v0,t1,t4 -8003e7b4: 00073fc2 srl a3,a3,0x1f -8003e7b8: 010b4025 or t0,t0,t3 -8003e7bc: 11430012 beq t2,v1,8003e808 <__subdf3+0xac> -8003e7c0: 000630c0 sll a2,a2,0x3 -8003e7c4: 38e70001 xori a3,a3,0x1 -8003e7c8: 10f00066 beq a3,s0,8003e964 <__subdf3+0x208> -8003e7cc: 022a2823 subu a1,s1,t2 -8003e7d0: 18a000d3 blez a1,8003eb20 <__subdf3+0x3c4> -8003e7d4: 00000000 nop -8003e7d8: 15400010 bnez t2,8003e81c <__subdf3+0xc0> -8003e7dc: 240307ff li v1,2047 -8003e7e0: 01061825 or v1,t0,a2 -8003e7e4: 10600085 beqz v1,8003e9fc <__subdf3+0x2a0> -8003e7e8: 240307ff li v1,2047 -8003e7ec: 24a5ffff addiu a1,a1,-1 -8003e7f0: 14a000ad bnez a1,8003eaa8 <__subdf3+0x34c> -8003e7f4: 00869023 subu s2,a0,a2 -8003e7f8: 00481023 subu v0,v0,t0 -8003e7fc: 0092202b sltu a0,a0,s2 -8003e800: 1000001a b 8003e86c <__subdf3+0x110> -8003e804: 00441023 subu v0,v0,a0 -8003e808: 01061825 or v1,t0,a2 -8003e80c: 1460ffee bnez v1,8003e7c8 <__subdf3+0x6c> -8003e810: 00000000 nop -8003e814: 1000ffec b 8003e7c8 <__subdf3+0x6c> -8003e818: 38e70001 xori a3,a3,0x1 -8003e81c: 122300a4 beq s1,v1,8003eab0 <__subdf3+0x354> -8003e820: 3c030080 lui v1,0x80 -8003e824: 01034025 or t0,t0,v1 -8003e828: 28a30039 slti v1,a1,57 -8003e82c: 106000e6 beqz v1,8003ebc8 <__subdf3+0x46c> -8003e830: 28a30020 slti v1,a1,32 -8003e834: 1060010a beqz v1,8003ec60 <__subdf3+0x504> -8003e838: 24070020 li a3,32 -8003e83c: 00e53823 subu a3,a3,a1 -8003e840: 00a69006 srlv s2,a2,a1 -8003e844: 00e81804 sllv v1,t0,a3 -8003e848: 00e63004 sllv a2,a2,a3 -8003e84c: 00721825 or v1,v1,s2 -8003e850: 0006902b sltu s2,zero,a2 -8003e854: 00729025 or s2,v1,s2 -8003e858: 00a84006 srlv t0,t0,a1 -8003e85c: 00929023 subu s2,a0,s2 -8003e860: 00484023 subu t0,v0,t0 -8003e864: 0092202b sltu a0,a0,s2 -8003e868: 01041023 subu v0,t0,a0 -8003e86c: 3c130080 lui s3,0x80 -8003e870: 00531824 and v1,v0,s3 -8003e874: 106000a6 beqz v1,8003eb10 <__subdf3+0x3b4> -8003e878: 32430007 andi v1,s2,0x7 -8003e87c: 2673ffff addiu s3,s3,-1 -8003e880: 00539824 and s3,v0,s3 -8003e884: 126000b9 beqz s3,8003eb6c <__subdf3+0x410> -8003e888: 00000000 nop -8003e88c: 0c00a2d8 jal 80028b60 <__clzsi2> -8003e890: 02602021 move a0,s3 -8003e894: 2446fff8 addiu a2,v0,-8 -8003e898: 28c30020 slti v1,a2,32 -8003e89c: 106000bb beqz v1,8003eb8c <__subdf3+0x430> -8003e8a0: 2442ffd8 addiu v0,v0,-40 -8003e8a4: 00061823 negu v1,a2 -8003e8a8: 00721806 srlv v1,s2,v1 -8003e8ac: 00d31004 sllv v0,s3,a2 -8003e8b0: 00629825 or s3,v1,v0 -8003e8b4: 00d1102a slt v0,a2,s1 -8003e8b8: 144000b8 bnez v0,8003eb9c <__subdf3+0x440> -8003e8bc: 00d29004 sllv s2,s2,a2 -8003e8c0: 00d13023 subu a2,a2,s1 -8003e8c4: 24c20001 addiu v0,a2,1 -8003e8c8: 28430020 slti v1,v0,32 -8003e8cc: 106000d9 beqz v1,8003ec34 <__subdf3+0x4d8> -8003e8d0: 24030020 li v1,32 -8003e8d4: 00621823 subu v1,v1,v0 -8003e8d8: 00522006 srlv a0,s2,v0 -8003e8dc: 00724004 sllv t0,s2,v1 -8003e8e0: 00731804 sllv v1,s3,v1 -8003e8e4: 00641825 or v1,v1,a0 -8003e8e8: 0008402b sltu t0,zero,t0 -8003e8ec: 00689025 or s2,v1,t0 -8003e8f0: 00531006 srlv v0,s3,v0 -8003e8f4: 32430007 andi v1,s2,0x7 -8003e8f8: 00008821 move s1,zero -8003e8fc: 10600043 beqz v1,8003ea0c <__subdf3+0x2b0> -8003e900: 3c030080 lui v1,0x80 -8003e904: 3243000f andi v1,s2,0xf -8003e908: 24040004 li a0,4 -8003e90c: 1064003e beq v1,a0,8003ea08 <__subdf3+0x2ac> -8003e910: 26430004 addiu v1,s2,4 -8003e914: 0072402b sltu t0,v1,s2 -8003e918: 00481021 addu v0,v0,t0 -8003e91c: 00609021 move s2,v1 -8003e920: 3c030080 lui v1,0x80 -8003e924: 00431824 and v1,v0,v1 -8003e928: 1460003b bnez v1,8003ea18 <__subdf3+0x2bc> -8003e92c: 00000000 nop -8003e930: 00021f40 sll v1,v0,0x1d -8003e934: 001240c2 srl t0,s2,0x3 -8003e938: 01034025 or t0,t0,v1 -8003e93c: 000218c2 srl v1,v0,0x3 -8003e940: 240207ff li v0,2047 -8003e944: 12220060 beq s1,v0,8003eac8 <__subdf3+0x36c> -8003e948: 00000000 nop -8003e94c: 3c06000f lui a2,0xf -8003e950: 34c6ffff ori a2,a2,0xffff -8003e954: 00662024 and a0,v1,a2 -8003e958: 322207ff andi v0,s1,0x7ff -8003e95c: 1000003c b 8003ea50 <__subdf3+0x2f4> -8003e960: 32030001 andi v1,s0,0x1 -8003e964: 022a1823 subu v1,s1,t2 -8003e968: 1860009f blez v1,8003ebe8 <__subdf3+0x48c> -8003e96c: 00000000 nop -8003e970: 11400046 beqz t2,8003ea8c <__subdf3+0x330> -8003e974: 01062825 or a1,t0,a2 -8003e978: 240507ff li a1,2047 -8003e97c: 122500e7 beq s1,a1,8003ed1c <__subdf3+0x5c0> -8003e980: 3c050080 lui a1,0x80 -8003e984: 01054025 or t0,t0,a1 -8003e988: 28650039 slti a1,v1,57 -8003e98c: 14a000e9 bnez a1,8003ed34 <__subdf3+0x5d8> -8003e990: 28650020 slti a1,v1,32 -8003e994: 01063025 or a2,t0,a2 -8003e998: 0006902b sltu s2,zero,a2 -8003e99c: 00004021 move t0,zero -8003e9a0: 02449021 addu s2,s2,a0 -8003e9a4: 01024021 addu t0,t0,v0 -8003e9a8: 0244202b sltu a0,s2,a0 -8003e9ac: 00881021 addu v0,a0,t0 -8003e9b0: 3c030080 lui v1,0x80 -8003e9b4: 00431824 and v1,v0,v1 -8003e9b8: 10600101 beqz v1,8003edc0 <__subdf3+0x664> -8003e9bc: 240307ff li v1,2047 -8003e9c0: 26310001 addiu s1,s1,1 -8003e9c4: 12230109 beq s1,v1,8003edec <__subdf3+0x690> -8003e9c8: 00000000 nop -8003e9cc: 3c03ff7f lui v1,0xff7f -8003e9d0: 3463ffff ori v1,v1,0xffff -8003e9d4: 00431024 and v0,v0,v1 -8003e9d8: 32480001 andi t0,s2,0x1 -8003e9dc: 00121842 srl v1,s2,0x1 -8003e9e0: 00684025 or t0,v1,t0 -8003e9e4: 000297c0 sll s2,v0,0x1f -8003e9e8: 02489025 or s2,s2,t0 -8003e9ec: 00021042 srl v0,v0,0x1 -8003e9f0: 32430007 andi v1,s2,0x7 -8003e9f4: 1000ffc1 b 8003e8fc <__subdf3+0x1a0> -8003e9f8: 00e08021 move s0,a3 -8003e9fc: 1223002d beq s1,v1,8003eab4 <__subdf3+0x358> -8003ea00: 00441825 or v1,v0,a0 -8003ea04: 00809021 move s2,a0 -8003ea08: 3c030080 lui v1,0x80 -8003ea0c: 00431824 and v1,v0,v1 -8003ea10: 1060ffc8 beqz v1,8003e934 <__subdf3+0x1d8> -8003ea14: 00021f40 sll v1,v0,0x1d -8003ea18: 26260001 addiu a2,s1,1 -8003ea1c: 240307ff li v1,2047 -8003ea20: 10c30065 beq a2,v1,8003ebb8 <__subdf3+0x45c> -8003ea24: 32030001 andi v1,s0,0x1 -8003ea28: 3c04ff7f lui a0,0xff7f -8003ea2c: 3484ffff ori a0,a0,0xffff -8003ea30: 00441024 and v0,v0,a0 -8003ea34: 00021f40 sll v1,v0,0x1d -8003ea38: 001240c2 srl t0,s2,0x3 -8003ea3c: 00021240 sll v0,v0,0x9 -8003ea40: 00684025 or t0,v1,t0 -8003ea44: 00022302 srl a0,v0,0xc -8003ea48: 32030001 andi v1,s0,0x1 -8003ea4c: 30c207ff andi v0,a2,0x7ff -8003ea50: 00023500 sll a2,v0,0x14 -8003ea54: 3c02000f lui v0,0xf -8003ea58: 3442ffff ori v0,v0,0xffff -8003ea5c: 8fbf0024 lw ra,36(sp) -8003ea60: 00821024 and v0,a0,v0 -8003ea64: 00461025 or v0,v0,a2 -8003ea68: 00031fc0 sll v1,v1,0x1f -8003ea6c: 00431825 or v1,v0,v1 -8003ea70: 8fb30020 lw s3,32(sp) -8003ea74: 8fb2001c lw s2,28(sp) -8003ea78: 8fb10018 lw s1,24(sp) -8003ea7c: 8fb00014 lw s0,20(sp) -8003ea80: 01001021 move v0,t0 -8003ea84: 03e00008 jr ra -8003ea88: 27bd0028 addiu sp,sp,40 -8003ea8c: 14a0009e bnez a1,8003ed08 <__subdf3+0x5ac> -8003ea90: 2463ffff addiu v1,v1,-1 -8003ea94: 240307ff li v1,2047 -8003ea98: 1623ffdb bne s1,v1,8003ea08 <__subdf3+0x2ac> -8003ea9c: 00809021 move s2,a0 -8003eaa0: 1000009f b 8003ed20 <__subdf3+0x5c4> -8003eaa4: 00441825 or v1,v0,a0 -8003eaa8: 1623ff60 bne s1,v1,8003e82c <__subdf3+0xd0> -8003eaac: 28a30039 slti v1,a1,57 -8003eab0: 00441825 or v1,v0,a0 -8003eab4: 1460ffd4 bnez v1,8003ea08 <__subdf3+0x2ac> -8003eab8: 00809021 move s2,a0 -8003eabc: 02003821 move a3,s0 -8003eac0: 00004021 move t0,zero -8003eac4: 00e08021 move s0,a3 -8003eac8: 00681025 or v0,v1,t0 -8003eacc: 10400039 beqz v0,8003ebb4 <__subdf3+0x458> -8003ead0: 00000000 nop -8003ead4: 3c040007 lui a0,0x7 -8003ead8: 3484ffff ori a0,a0,0xffff -8003eadc: 00641024 and v0,v1,a0 -8003eae0: 00481825 or v1,v0,t0 -8003eae4: 1460003c bnez v1,8003ebd8 <__subdf3+0x47c> -8003eae8: 00000000 nop -8003eaec: 00001821 move v1,zero -8003eaf0: 240207ff li v0,2047 -8003eaf4: 1000ffd6 b 8003ea50 <__subdf3+0x2f4> -8003eaf8: 2408ffff li t0,-1 -8003eafc: 02451825 or v1,s2,a1 -8003eb00: 10600133 beqz v1,8003efd0 <__subdf3+0x874> -8003eb04: 00004021 move t0,zero -8003eb08: 00a01021 move v0,a1 -8003eb0c: 32430007 andi v1,s2,0x7 -8003eb10: 1460ff7c bnez v1,8003e904 <__subdf3+0x1a8> -8003eb14: 00021f40 sll v1,v0,0x1d -8003eb18: 1000ff87 b 8003e938 <__subdf3+0x1dc> -8003eb1c: 001240c2 srl t0,s2,0x3 -8003eb20: 14a00058 bnez a1,8003ec84 <__subdf3+0x528> -8003eb24: 26230001 addiu v1,s1,1 -8003eb28: 306307ff andi v1,v1,0x7ff -8003eb2c: 28630002 slti v1,v1,2 -8003eb30: 146000a5 bnez v1,8003edc8 <__subdf3+0x66c> -8003eb34: 00869023 subu s2,a0,a2 -8003eb38: 0092182b sltu v1,a0,s2 -8003eb3c: 00489823 subu s3,v0,t0 -8003eb40: 02639823 subu s3,s3,v1 -8003eb44: 3c030080 lui v1,0x80 -8003eb48: 02631824 and v1,s3,v1 -8003eb4c: 10600069 beqz v1,8003ecf4 <__subdf3+0x598> -8003eb50: 02531825 or v1,s2,s3 -8003eb54: 00c49023 subu s2,a2,a0 -8003eb58: 01021023 subu v0,t0,v0 -8003eb5c: 00d2302b sltu a2,a2,s2 -8003eb60: 00469823 subu s3,v0,a2 -8003eb64: 1660ff49 bnez s3,8003e88c <__subdf3+0x130> -8003eb68: 00e08021 move s0,a3 -8003eb6c: 0c00a2d8 jal 80028b60 <__clzsi2> -8003eb70: 02402021 move a0,s2 -8003eb74: 24420020 addiu v0,v0,32 -8003eb78: 2446fff8 addiu a2,v0,-8 -8003eb7c: 28c30020 slti v1,a2,32 -8003eb80: 1460ff49 bnez v1,8003e8a8 <__subdf3+0x14c> -8003eb84: 00061823 negu v1,a2 -8003eb88: 2442ffd8 addiu v0,v0,-40 -8003eb8c: 00529804 sllv s3,s2,v0 -8003eb90: 00d1102a slt v0,a2,s1 -8003eb94: 1040ff4a beqz v0,8003e8c0 <__subdf3+0x164> -8003eb98: 00009021 move s2,zero -8003eb9c: 3c02ff7f lui v0,0xff7f -8003eba0: 3442ffff ori v0,v0,0xffff -8003eba4: 02268823 subu s1,s1,a2 -8003eba8: 02621024 and v0,s3,v0 -8003ebac: 1000ff53 b 8003e8fc <__subdf3+0x1a0> -8003ebb0: 32430007 andi v1,s2,0x7 -8003ebb4: 32030001 andi v1,s0,0x1 -8003ebb8: 240207ff li v0,2047 -8003ebbc: 00002021 move a0,zero -8003ebc0: 1000ffa3 b 8003ea50 <__subdf3+0x2f4> -8003ebc4: 00004021 move t0,zero -8003ebc8: 01064025 or t0,t0,a2 -8003ebcc: 0008902b sltu s2,zero,t0 -8003ebd0: 1000ff22 b 8003e85c <__subdf3+0x100> -8003ebd4: 00004021 move t0,zero -8003ebd8: 00402021 move a0,v0 -8003ebdc: 32030001 andi v1,s0,0x1 -8003ebe0: 1000ff9b b 8003ea50 <__subdf3+0x2f4> -8003ebe4: 240207ff li v0,2047 -8003ebe8: 1460008d bnez v1,8003ee20 <__subdf3+0x6c4> -8003ebec: 26250001 addiu a1,s1,1 -8003ebf0: 30a307ff andi v1,a1,0x7ff -8003ebf4: 28630002 slti v1,v1,2 -8003ebf8: 1460006a bnez v1,8003eda4 <__subdf3+0x648> -8003ebfc: 00000000 nop -8003ec00: 240307ff li v1,2047 -8003ec04: 10a30079 beq a1,v1,8003edec <__subdf3+0x690> -8003ec08: 00481021 addu v0,v0,t0 -8003ec0c: 00863021 addu a2,a0,a2 -8003ec10: 00c4202b sltu a0,a2,a0 -8003ec14: 00821021 addu v0,a0,v0 -8003ec18: 000247c0 sll t0,v0,0x1f -8003ec1c: 00063042 srl a2,a2,0x1 -8003ec20: 01069025 or s2,t0,a2 -8003ec24: 00021042 srl v0,v0,0x1 -8003ec28: 32430007 andi v1,s2,0x7 -8003ec2c: 1000ff33 b 8003e8fc <__subdf3+0x1a0> -8003ec30: 00a08821 move s1,a1 -8003ec34: 24c6ffe1 addiu a2,a2,-31 -8003ec38: 10430056 beq v0,v1,8003ed94 <__subdf3+0x638> -8003ec3c: 00d33006 srlv a2,s3,a2 -8003ec40: 00024023 negu t0,v0 -8003ec44: 01134004 sllv t0,s3,t0 -8003ec48: 02484025 or t0,s2,t0 -8003ec4c: 0008402b sltu t0,zero,t0 -8003ec50: 00c89025 or s2,a2,t0 -8003ec54: 00001021 move v0,zero -8003ec58: 1000ffac b 8003eb0c <__subdf3+0x3b0> -8003ec5c: 00008821 move s1,zero -8003ec60: 10a7004e beq a1,a3,8003ed9c <__subdf3+0x640> -8003ec64: 00a81806 srlv v1,t0,a1 -8003ec68: 00059023 negu s2,a1 -8003ec6c: 02489004 sllv s2,t0,s2 -8003ec70: 02463025 or a2,s2,a2 -8003ec74: 0006902b sltu s2,zero,a2 -8003ec78: 00729025 or s2,v1,s2 -8003ec7c: 1000fef7 b 8003e85c <__subdf3+0x100> -8003ec80: 00004021 move t0,zero -8003ec84: 12200036 beqz s1,8003ed60 <__subdf3+0x604> -8003ec88: 00441825 or v1,v0,a0 -8003ec8c: 240307ff li v1,2047 -8003ec90: 114300c5 beq t2,v1,8003efa8 <__subdf3+0x84c> -8003ec94: 3c030080 lui v1,0x80 -8003ec98: 00052823 negu a1,a1 -8003ec9c: 00431025 or v0,v0,v1 -8003eca0: 28a30039 slti v1,a1,57 -8003eca4: 1060007e beqz v1,8003eea0 <__subdf3+0x744> -8003eca8: 28a30020 slti v1,a1,32 -8003ecac: 106000ca beqz v1,8003efd8 <__subdf3+0x87c> -8003ecb0: 24030020 li v1,32 -8003ecb4: 24090020 li t1,32 -8003ecb8: 01254823 subu t1,t1,a1 -8003ecbc: 00a49006 srlv s2,a0,a1 -8003ecc0: 01221804 sllv v1,v0,t1 -8003ecc4: 01242004 sllv a0,a0,t1 -8003ecc8: 00721825 or v1,v1,s2 -8003eccc: 0004902b sltu s2,zero,a0 -8003ecd0: 00729025 or s2,v1,s2 -8003ecd4: 00a21006 srlv v0,v0,a1 -8003ecd8: 00d29023 subu s2,a2,s2 -8003ecdc: 01021023 subu v0,t0,v0 -8003ece0: 00d2302b sltu a2,a2,s2 -8003ece4: 00461023 subu v0,v0,a2 -8003ece8: 01408821 move s1,t2 -8003ecec: 1000fedf b 8003e86c <__subdf3+0x110> -8003ecf0: 00e08021 move s0,a3 -8003ecf4: 1460fee3 bnez v1,8003e884 <__subdf3+0x128> -8003ecf8: 00004021 move t0,zero -8003ecfc: 00008021 move s0,zero -8003ed00: 1000ff12 b 8003e94c <__subdf3+0x1f0> -8003ed04: 00008821 move s1,zero -8003ed08: 1060001e beqz v1,8003ed84 <__subdf3+0x628> -8003ed0c: 00869021 addu s2,a0,a2 -8003ed10: 240507ff li a1,2047 -8003ed14: 1625ff1d bne s1,a1,8003e98c <__subdf3+0x230> -8003ed18: 28650039 slti a1,v1,57 -8003ed1c: 00441825 or v1,v0,a0 -8003ed20: 1460ff39 bnez v1,8003ea08 <__subdf3+0x2ac> -8003ed24: 00809021 move s2,a0 -8003ed28: 00004021 move t0,zero -8003ed2c: 1000ff66 b 8003eac8 <__subdf3+0x36c> -8003ed30: 00e08021 move s0,a3 -8003ed34: 10a00031 beqz a1,8003edfc <__subdf3+0x6a0> -8003ed38: 24090020 li t1,32 -8003ed3c: 01234823 subu t1,t1,v1 -8003ed40: 00669006 srlv s2,a2,v1 -8003ed44: 01282804 sllv a1,t0,t1 -8003ed48: 01263004 sllv a2,a2,t1 -8003ed4c: 00b22825 or a1,a1,s2 -8003ed50: 0006902b sltu s2,zero,a2 -8003ed54: 00b29025 or s2,a1,s2 -8003ed58: 1000ff11 b 8003e9a0 <__subdf3+0x244> -8003ed5c: 00684006 srlv t0,t0,v1 -8003ed60: 1460004a bnez v1,8003ee8c <__subdf3+0x730> -8003ed64: 00000000 nop -8003ed68: 240207ff li v0,2047 -8003ed6c: 1142008e beq t2,v0,8003efa8 <__subdf3+0x84c> -8003ed70: 01001021 move v0,t0 -8003ed74: 00c09021 move s2,a2 -8003ed78: 01408821 move s1,t2 -8003ed7c: 1000ff22 b 8003ea08 <__subdf3+0x2ac> -8003ed80: 00e08021 move s0,a3 -8003ed84: 00481021 addu v0,v0,t0 -8003ed88: 0244202b sltu a0,s2,a0 -8003ed8c: 1000ff08 b 8003e9b0 <__subdf3+0x254> -8003ed90: 00821021 addu v0,a0,v0 -8003ed94: 1000ffac b 8003ec48 <__subdf3+0x4ec> -8003ed98: 00004021 move t0,zero -8003ed9c: 1000ffb4 b 8003ec70 <__subdf3+0x514> -8003eda0: 00009021 move s2,zero -8003eda4: 1620006a bnez s1,8003ef50 <__subdf3+0x7f4> -8003eda8: 00441825 or v1,v0,a0 -8003edac: 146000a4 bnez v1,8003f040 <__subdf3+0x8e4> -8003edb0: 01061825 or v1,t0,a2 -8003edb4: 01001021 move v0,t0 -8003edb8: 1000ff13 b 8003ea08 <__subdf3+0x2ac> -8003edbc: 00c09021 move s2,a2 -8003edc0: 1000ff52 b 8003eb0c <__subdf3+0x3b0> -8003edc4: 00e08021 move s0,a3 -8003edc8: 16200020 bnez s1,8003ee4c <__subdf3+0x6f0> -8003edcc: 00441825 or v1,v0,a0 -8003edd0: 1460004f bnez v1,8003ef10 <__subdf3+0x7b4> -8003edd4: 01061825 or v1,t0,a2 -8003edd8: 1060007c beqz v1,8003efcc <__subdf3+0x870> -8003eddc: 00c09021 move s2,a2 -8003ede0: 01001021 move v0,t0 -8003ede4: 1000ff08 b 8003ea08 <__subdf3+0x2ac> -8003ede8: 00e08021 move s0,a3 -8003edec: 00001821 move v1,zero -8003edf0: 00004021 move t0,zero -8003edf4: 1000ff34 b 8003eac8 <__subdf3+0x36c> -8003edf8: 00e08021 move s0,a3 -8003edfc: 10690071 beq v1,t1,8003efc4 <__subdf3+0x868> -8003ee00: 00682806 srlv a1,t0,v1 -8003ee04: 00039023 negu s2,v1 -8003ee08: 02489004 sllv s2,t0,s2 -8003ee0c: 02463025 or a2,s2,a2 -8003ee10: 0006902b sltu s2,zero,a2 -8003ee14: 00b29025 or s2,a1,s2 -8003ee18: 1000fee1 b 8003e9a0 <__subdf3+0x244> -8003ee1c: 00004021 move t0,zero -8003ee20: 16200023 bnez s1,8003eeb0 <__subdf3+0x754> -8003ee24: 240507ff li a1,2047 -8003ee28: 00442825 or a1,v0,a0 -8003ee2c: 14a00073 bnez a1,8003effc <__subdf3+0x8a0> -8003ee30: 00031827 nor v1,zero,v1 -8003ee34: 240207ff li v0,2047 -8003ee38: 11420098 beq t2,v0,8003f09c <__subdf3+0x940> -8003ee3c: 01001021 move v0,t0 -8003ee40: 00c09021 move s2,a2 -8003ee44: 1000fef0 b 8003ea08 <__subdf3+0x2ac> -8003ee48: 01408821 move s1,t2 -8003ee4c: 14600009 bnez v1,8003ee74 <__subdf3+0x718> -8003ee50: 00000000 nop -8003ee54: 01061025 or v0,t0,a2 -8003ee58: 10400070 beqz v0,8003f01c <__subdf3+0x8c0> -8003ee5c: 3c030007 lui v1,0x7 -8003ee60: 01001021 move v0,t0 -8003ee64: 00c09021 move s2,a2 -8003ee68: 00e08021 move s0,a3 -8003ee6c: 1000fee6 b 8003ea08 <__subdf3+0x2ac> -8003ee70: 241107ff li s1,2047 -8003ee74: 01063025 or a2,t0,a2 -8003ee78: 14c0003b bnez a2,8003ef68 <__subdf3+0x80c> -8003ee7c: 000228c2 srl a1,v0,0x3 -8003ee80: 00809021 move s2,a0 -8003ee84: 1000fee0 b 8003ea08 <__subdf3+0x2ac> -8003ee88: 241107ff li s1,2047 -8003ee8c: 00052827 nor a1,zero,a1 -8003ee90: 14a00043 bnez a1,8003efa0 <__subdf3+0x844> -8003ee94: 240307ff li v1,2047 -8003ee98: 1000ff90 b 8003ecdc <__subdf3+0x580> -8003ee9c: 00c49023 subu s2,a2,a0 -8003eea0: 00441025 or v0,v0,a0 -8003eea4: 0002902b sltu s2,zero,v0 -8003eea8: 1000ff8b b 8003ecd8 <__subdf3+0x57c> -8003eeac: 00001021 move v0,zero -8003eeb0: 1145007a beq t2,a1,8003f09c <__subdf3+0x940> -8003eeb4: 3c050080 lui a1,0x80 -8003eeb8: 00031823 negu v1,v1 -8003eebc: 00451025 or v0,v0,a1 -8003eec0: 28650039 slti a1,v1,57 -8003eec4: 10a0005a beqz a1,8003f030 <__subdf3+0x8d4> -8003eec8: 28650020 slti a1,v1,32 -8003eecc: 10a00078 beqz a1,8003f0b0 <__subdf3+0x954> -8003eed0: 24050020 li a1,32 -8003eed4: 24090020 li t1,32 -8003eed8: 01234823 subu t1,t1,v1 -8003eedc: 00649006 srlv s2,a0,v1 -8003eee0: 01222804 sllv a1,v0,t1 -8003eee4: 01242004 sllv a0,a0,t1 -8003eee8: 00b22825 or a1,a1,s2 -8003eeec: 0004902b sltu s2,zero,a0 -8003eef0: 00b29025 or s2,a1,s2 -8003eef4: 00621006 srlv v0,v0,v1 -8003eef8: 02469021 addu s2,s2,a2 -8003eefc: 00484021 addu t0,v0,t0 -8003ef00: 0246302b sltu a2,s2,a2 -8003ef04: 00c81021 addu v0,a2,t0 -8003ef08: 1000fea9 b 8003e9b0 <__subdf3+0x254> -8003ef0c: 01408821 move s1,t2 -8003ef10: 1060febd beqz v1,8003ea08 <__subdf3+0x2ac> -8003ef14: 00809021 move s2,a0 -8003ef18: 00869023 subu s2,a0,a2 -8003ef1c: 00481823 subu v1,v0,t0 -8003ef20: 0092282b sltu a1,a0,s2 -8003ef24: 00652823 subu a1,v1,a1 -8003ef28: 3c030080 lui v1,0x80 -8003ef2c: 00a31824 and v1,a1,v1 -8003ef30: 1060fef2 beqz v1,8003eafc <__subdf3+0x3a0> -8003ef34: 01021023 subu v0,t0,v0 -8003ef38: 00c49023 subu s2,a2,a0 -8003ef3c: 00d2302b sltu a2,a2,s2 -8003ef40: 00461023 subu v0,v0,a2 -8003ef44: 32430007 andi v1,s2,0x7 -8003ef48: 1000fe6c b 8003e8fc <__subdf3+0x1a0> -8003ef4c: 00e08021 move s0,a3 -8003ef50: 1460ffc8 bnez v1,8003ee74 <__subdf3+0x718> -8003ef54: 00000000 nop -8003ef58: 01001021 move v0,t0 -8003ef5c: 00c09021 move s2,a2 -8003ef60: 1000fea9 b 8003ea08 <__subdf3+0x2ac> -8003ef64: 241107ff li s1,2047 -8003ef68: 000818c2 srl v1,t0,0x3 -8003ef6c: 00651825 or v1,v1,a1 -8003ef70: 3c060008 lui a2,0x8 -8003ef74: 00661824 and v1,v1,a2 -8003ef78: 14600040 bnez v1,8003f07c <__subdf3+0x920> -8003ef7c: 000420c2 srl a0,a0,0x3 -8003ef80: 00021740 sll v0,v0,0x1d -8003ef84: 00444025 or t0,v0,a0 -8003ef88: 000528c0 sll a1,a1,0x3 -8003ef8c: 00081742 srl v0,t0,0x1d -8003ef90: 00451025 or v0,v0,a1 -8003ef94: 000890c0 sll s2,t0,0x3 -8003ef98: 1000fe9b b 8003ea08 <__subdf3+0x2ac> -8003ef9c: 241107ff li s1,2047 -8003efa0: 1543ff40 bne t2,v1,8003eca4 <__subdf3+0x548> -8003efa4: 28a30039 slti v1,a1,57 -8003efa8: 01061825 or v1,t0,a2 -8003efac: 1060ff5e beqz v1,8003ed28 <__subdf3+0x5cc> -8003efb0: 01001021 move v0,t0 -8003efb4: 00c09021 move s2,a2 -8003efb8: 241107ff li s1,2047 -8003efbc: 1000fe92 b 8003ea08 <__subdf3+0x2ac> -8003efc0: 00e08021 move s0,a3 -8003efc4: 1000ff91 b 8003ee0c <__subdf3+0x6b0> -8003efc8: 00009021 move s2,zero -8003efcc: 00004021 move t0,zero -8003efd0: 1000fe5e b 8003e94c <__subdf3+0x1f0> -8003efd4: 00008021 move s0,zero -8003efd8: 10a3003e beq a1,v1,8003f0d4 <__subdf3+0x978> -8003efdc: 00a29006 srlv s2,v0,a1 -8003efe0: 00052823 negu a1,a1 -8003efe4: 00a21004 sllv v0,v0,a1 -8003efe8: 00442025 or a0,v0,a0 -8003efec: 0004102b sltu v0,zero,a0 -8003eff0: 02429025 or s2,s2,v0 -8003eff4: 1000ff38 b 8003ecd8 <__subdf3+0x57c> -8003eff8: 00001021 move v0,zero -8003effc: 14600025 bnez v1,8003f094 <__subdf3+0x938> -8003f000: 240507ff li a1,2047 -8003f004: 00869021 addu s2,a0,a2 -8003f008: 00481021 addu v0,v0,t0 -8003f00c: 0246302b sltu a2,s2,a2 -8003f010: 00c21021 addu v0,a2,v0 -8003f014: 1000fe66 b 8003e9b0 <__subdf3+0x254> -8003f018: 01408821 move s1,t2 -8003f01c: 00003821 move a3,zero -8003f020: 3463ffff ori v1,v1,0xffff -8003f024: 2408ffff li t0,-1 -8003f028: 1000fea7 b 8003eac8 <__subdf3+0x36c> -8003f02c: 00e08021 move s0,a3 -8003f030: 00441025 or v0,v0,a0 -8003f034: 0002902b sltu s2,zero,v0 -8003f038: 1000ffaf b 8003eef8 <__subdf3+0x79c> -8003f03c: 00001021 move v0,zero -8003f040: 1060fe71 beqz v1,8003ea08 <__subdf3+0x2ac> -8003f044: 00809021 move s2,a0 -8003f048: 00869021 addu s2,a0,a2 -8003f04c: 00481021 addu v0,v0,t0 -8003f050: 0244202b sltu a0,s2,a0 -8003f054: 00821021 addu v0,a0,v0 -8003f058: 3c030080 lui v1,0x80 -8003f05c: 00431824 and v1,v0,v1 -8003f060: 1060feaa beqz v1,8003eb0c <__subdf3+0x3b0> -8003f064: 3c03ff7f lui v1,0xff7f -8003f068: 3463ffff ori v1,v1,0xffff -8003f06c: 00431024 and v0,v0,v1 -8003f070: 24110001 li s1,1 -8003f074: 1000fe21 b 8003e8fc <__subdf3+0x1a0> -8003f078: 32430007 andi v1,s2,0x7 -8003f07c: 3c02003f lui v0,0x3f -8003f080: 00008021 move s0,zero -8003f084: 241107ff li s1,2047 -8003f088: 3442ffff ori v0,v0,0xffff -8003f08c: 1000fe28 b 8003e930 <__subdf3+0x1d4> -8003f090: 2412fff8 li s2,-8 -8003f094: 1545ff8b bne t2,a1,8003eec4 <__subdf3+0x768> -8003f098: 28650039 slti a1,v1,57 -8003f09c: 01061825 or v1,t0,a2 -8003f0a0: 1460ffae bnez v1,8003ef5c <__subdf3+0x800> -8003f0a4: 01001021 move v0,t0 -8003f0a8: 1000ff20 b 8003ed2c <__subdf3+0x5d0> -8003f0ac: 00004021 move t0,zero -8003f0b0: 1065000a beq v1,a1,8003f0dc <__subdf3+0x980> -8003f0b4: 00629006 srlv s2,v0,v1 -8003f0b8: 00031823 negu v1,v1 -8003f0bc: 00621004 sllv v0,v0,v1 -8003f0c0: 00442025 or a0,v0,a0 -8003f0c4: 0004102b sltu v0,zero,a0 -8003f0c8: 02429025 or s2,s2,v0 -8003f0cc: 1000ff8a b 8003eef8 <__subdf3+0x79c> -8003f0d0: 00001021 move v0,zero -8003f0d4: 1000ffc4 b 8003efe8 <__subdf3+0x88c> -8003f0d8: 00001021 move v0,zero -8003f0dc: 1000fff8 b 8003f0c0 <__subdf3+0x964> -8003f0e0: 00001021 move v0,zero - -8003f0e4 <__fixdfsi>: -8003f0e4: 00053502 srl a2,a1,0x14 -8003f0e8: 30c607ff andi a2,a2,0x7ff -8003f0ec: 3c03000f lui v1,0xf -8003f0f0: 3463ffff ori v1,v1,0xffff -8003f0f4: 28c703ff slti a3,a2,1023 -8003f0f8: 00651824 and v1,v1,a1 -8003f0fc: 14e00015 bnez a3,8003f154 <__fixdfsi+0x70> -8003f100: 00052fc2 srl a1,a1,0x1f -8003f104: 28c2041e slti v0,a2,1054 -8003f108: 1040000e beqz v0,8003f144 <__fixdfsi+0x60> -8003f10c: 24070433 li a3,1075 -8003f110: 00e63823 subu a3,a3,a2 -8003f114: 3c020010 lui v0,0x10 -8003f118: 28e80020 slti t0,a3,32 -8003f11c: 11000010 beqz t0,8003f160 <__fixdfsi+0x7c> -8003f120: 00621825 or v1,v1,v0 -8003f124: 24c6fbed addiu a2,a2,-1043 -8003f128: 00e41006 srlv v0,a0,a3 -8003f12c: 00c31804 sllv v1,v1,a2 -8003f130: 00621025 or v0,v1,v0 -8003f134: 10a00008 beqz a1,8003f158 <__fixdfsi+0x74> -8003f138: 00000000 nop -8003f13c: 03e00008 jr ra -8003f140: 00021023 negu v0,v0 -8003f144: 3c027fff lui v0,0x7fff -8003f148: 3442ffff ori v0,v0,0xffff -8003f14c: 03e00008 jr ra -8003f150: 00a21021 addu v0,a1,v0 -8003f154: 00001021 move v0,zero -8003f158: 03e00008 jr ra -8003f15c: 00000000 nop -8003f160: 24020413 li v0,1043 -8003f164: 00461023 subu v0,v0,a2 -8003f168: 1000fff2 b 8003f134 <__fixdfsi+0x50> -8003f16c: 00431006 srlv v0,v1,v0 - -8003f170 <__floatsidf>: -8003f170: 27bdffe0 addiu sp,sp,-32 -8003f174: afbf001c sw ra,28(sp) -8003f178: afb10018 sw s1,24(sp) -8003f17c: 1080002a beqz a0,8003f228 <__floatsidf+0xb8> -8003f180: afb00014 sw s0,20(sp) -8003f184: 00808021 move s0,a0 -8003f188: 0480002c bltz a0,8003f23c <__floatsidf+0xcc> -8003f18c: 00048fc2 srl s1,a0,0x1f -8003f190: 0c00a2d8 jal 80028b60 <__clzsi2> -8003f194: 02002021 move a0,s0 -8003f198: 2403041e li v1,1054 -8003f19c: 00621823 subu v1,v1,v0 -8003f1a0: 24050433 li a1,1075 -8003f1a4: 00a32823 subu a1,a1,v1 -8003f1a8: 28a40020 slti a0,a1,32 -8003f1ac: 14800016 bnez a0,8003f208 <__floatsidf+0x98> -8003f1b0: 2404000b li a0,11 -8003f1b4: 24020413 li v0,1043 -8003f1b8: 00431023 subu v0,v0,v1 -8003f1bc: 3c04000f lui a0,0xf -8003f1c0: 00501004 sllv v0,s0,v0 -8003f1c4: 3484ffff ori a0,a0,0xffff -8003f1c8: 00441024 and v0,v0,a0 -8003f1cc: 00008021 move s0,zero -8003f1d0: 306407ff andi a0,v1,0x7ff -8003f1d4: 3c03000f lui v1,0xf -8003f1d8: 3463ffff ori v1,v1,0xffff -8003f1dc: 00431024 and v0,v0,v1 -8003f1e0: 8fbf001c lw ra,28(sp) -8003f1e4: 00042500 sll a0,a0,0x14 -8003f1e8: 00111fc0 sll v1,s1,0x1f -8003f1ec: 00441025 or v0,v0,a0 -8003f1f0: 00431825 or v1,v0,v1 -8003f1f4: 8fb10018 lw s1,24(sp) -8003f1f8: 02001021 move v0,s0 -8003f1fc: 8fb00014 lw s0,20(sp) -8003f200: 03e00008 jr ra -8003f204: 27bd0020 addiu sp,sp,32 -8003f208: 00821023 subu v0,a0,v0 -8003f20c: 3c04000f lui a0,0xf -8003f210: 00501006 srlv v0,s0,v0 -8003f214: 3484ffff ori a0,a0,0xffff -8003f218: 00441024 and v0,v0,a0 -8003f21c: 00b08004 sllv s0,s0,a1 -8003f220: 1000ffec b 8003f1d4 <__floatsidf+0x64> -8003f224: 306407ff andi a0,v1,0x7ff -8003f228: 00008821 move s1,zero -8003f22c: 00002021 move a0,zero -8003f230: 00001021 move v0,zero -8003f234: 1000ffe7 b 8003f1d4 <__floatsidf+0x64> -8003f238: 00008021 move s0,zero -8003f23c: 00048023 negu s0,a0 -8003f240: 0c00a2d8 jal 80028b60 <__clzsi2> -8003f244: 02002021 move a0,s0 -8003f248: 2403041e li v1,1054 -8003f24c: 00621823 subu v1,v1,v0 -8003f250: 24050433 li a1,1075 -8003f254: 00a32823 subu a1,a1,v1 -8003f258: 28a40020 slti a0,a1,32 -8003f25c: 1080ffd5 beqz a0,8003f1b4 <__floatsidf+0x44> -8003f260: 2404000b li a0,11 -8003f264: 1000ffe9 b 8003f20c <__floatsidf+0x9c> -8003f268: 00821023 subu v0,a0,v0 - -8003f26c <__floatdidf>: -8003f26c: 27bdffd8 addiu sp,sp,-40 -8003f270: 00851025 or v0,a0,a1 -8003f274: afbf0024 sw ra,36(sp) -8003f278: afb30020 sw s3,32(sp) -8003f27c: afb2001c sw s2,28(sp) -8003f280: afb10018 sw s1,24(sp) -8003f284: 10400051 beqz v0,8003f3cc <__floatdidf+0x160> -8003f288: afb00014 sw s0,20(sp) -8003f28c: 00808821 move s1,a0 -8003f290: 00a09021 move s2,a1 -8003f294: 04a10005 bgez a1,8003f2ac <__floatdidf+0x40> -8003f298: 000587c2 srl s0,a1,0x1f -8003f29c: 00048823 negu s1,a0 -8003f2a0: 0011302b sltu a2,zero,s1 -8003f2a4: 00052823 negu a1,a1 -8003f2a8: 00a69023 subu s2,a1,a2 -8003f2ac: 12400019 beqz s2,8003f314 <__floatdidf+0xa8> -8003f2b0: 02409821 move s3,s2 -8003f2b4: 0c00a2d8 jal 80028b60 <__clzsi2> -8003f2b8: 02402021 move a0,s2 -8003f2bc: 2403043e li v1,1086 -8003f2c0: 00624023 subu t0,v1,v0 -8003f2c4: 29030434 slti v1,t0,1076 -8003f2c8: 1060001b beqz v1,8003f338 <__floatdidf+0xcc> -8003f2cc: 29030437 slti v1,t0,1079 -8003f2d0: 24070433 li a3,1075 -8003f2d4: 00e83823 subu a3,a3,t0 -8003f2d8: 10e00078 beqz a3,8003f4bc <__floatdidf+0x250> -8003f2dc: 00000000 nop -8003f2e0: 28e30020 slti v1,a3,32 -8003f2e4: 10600060 beqz v1,8003f468 <__floatdidf+0x1fc> -8003f2e8: 2406002b li a2,43 -8003f2ec: 00c21023 subu v0,a2,v0 -8003f2f0: 00511006 srlv v0,s1,v0 -8003f2f4: 00f22804 sllv a1,s2,a3 -8003f2f8: 00451025 or v0,v0,a1 -8003f2fc: 3c05000f lui a1,0xf -8003f300: 34a5ffff ori a1,a1,0xffff -8003f304: 00f18804 sllv s1,s1,a3 -8003f308: 00452824 and a1,v0,a1 -8003f30c: 10000033 b 8003f3dc <__floatdidf+0x170> -8003f310: 310307ff andi v1,t0,0x7ff -8003f314: 0c00a2d8 jal 80028b60 <__clzsi2> -8003f318: 02202021 move a0,s1 -8003f31c: 24420020 addiu v0,v0,32 -8003f320: 2403043e li v1,1086 -8003f324: 00624023 subu t0,v1,v0 -8003f328: 29030434 slti v1,t0,1076 -8003f32c: 1460ffe9 bnez v1,8003f2d4 <__floatdidf+0x68> -8003f330: 24070433 li a3,1075 -8003f334: 29030437 slti v1,t0,1079 -8003f338: 10600038 beqz v1,8003f41c <__floatdidf+0x1b0> -8003f33c: 24060436 li a2,1078 -8003f340: 00c83023 subu a2,a2,t0 -8003f344: 10c00006 beqz a2,8003f360 <__floatdidf+0xf4> -8003f348: 00d22804 sllv a1,s2,a2 -8003f34c: 24130028 li s3,40 -8003f350: 02629823 subu s3,s3,v0 -8003f354: 02713806 srlv a3,s1,s3 -8003f358: 00e59825 or s3,a3,a1 -8003f35c: 00d18804 sllv s1,s1,a2 -8003f360: 3c03ff7f lui v1,0xff7f -8003f364: 3463ffff ori v1,v1,0xffff -8003f368: 32240007 andi a0,s1,0x7 -8003f36c: 10800008 beqz a0,8003f390 <__floatdidf+0x124> -8003f370: 02631824 and v1,s3,v1 -8003f374: 3224000f andi a0,s1,0xf -8003f378: 24050004 li a1,4 -8003f37c: 10850004 beq a0,a1,8003f390 <__floatdidf+0x124> -8003f380: 26240004 addiu a0,s1,4 -8003f384: 0091882b sltu s1,a0,s1 -8003f388: 00711821 addu v1,v1,s1 -8003f38c: 00808821 move s1,a0 -8003f390: 3c040080 lui a0,0x80 -8003f394: 00642024 and a0,v1,a0 -8003f398: 10800005 beqz a0,8003f3b0 <__floatdidf+0x144> -8003f39c: 3c04ff7f lui a0,0xff7f -8003f3a0: 3484ffff ori a0,a0,0xffff -8003f3a4: 2408043f li t0,1087 -8003f3a8: 00641824 and v1,v1,a0 -8003f3ac: 01024023 subu t0,t0,v0 -8003f3b0: 00031740 sll v0,v1,0x1d -8003f3b4: 00032a40 sll a1,v1,0x9 -8003f3b8: 001188c2 srl s1,s1,0x3 -8003f3bc: 00518825 or s1,v0,s1 -8003f3c0: 00052b02 srl a1,a1,0xc -8003f3c4: 10000005 b 8003f3dc <__floatdidf+0x170> -8003f3c8: 310307ff andi v1,t0,0x7ff -8003f3cc: 00008021 move s0,zero -8003f3d0: 00001821 move v1,zero -8003f3d4: 00002821 move a1,zero -8003f3d8: 00008821 move s1,zero -8003f3dc: 3c02000f lui v0,0xf -8003f3e0: 3442ffff ori v0,v0,0xffff -8003f3e4: 00031d00 sll v1,v1,0x14 -8003f3e8: 00a21024 and v0,a1,v0 -8003f3ec: 00432825 or a1,v0,v1 -8003f3f0: 001087c0 sll s0,s0,0x1f -8003f3f4: 8fbf0024 lw ra,36(sp) -8003f3f8: 00b02825 or a1,a1,s0 -8003f3fc: 02201021 move v0,s1 -8003f400: 8fb30020 lw s3,32(sp) -8003f404: 8fb2001c lw s2,28(sp) -8003f408: 8fb10018 lw s1,24(sp) -8003f40c: 8fb00014 lw s0,20(sp) -8003f410: 00a01821 move v1,a1 -8003f414: 03e00008 jr ra -8003f418: 27bd0028 addiu sp,sp,40 -8003f41c: 24130008 li s3,8 -8003f420: 02629823 subu s3,s3,v0 -8003f424: 32630020 andi v1,s3,0x20 -8003f428: 1060001e beqz v1,8003f4a4 <__floatdidf+0x238> -8003f42c: 00121840 sll v1,s2,0x1 -8003f430: 02723006 srlv a2,s2,s3 -8003f434: 00001821 move v1,zero -8003f438: 24040476 li a0,1142 -8003f43c: 00882023 subu a0,a0,t0 -8003f440: 30850020 andi a1,a0,0x20 -8003f444: 10a00011 beqz a1,8003f48c <__floatdidf+0x220> -8003f448: 00112842 srl a1,s1,0x1 -8003f44c: 00912804 sllv a1,s1,a0 -8003f450: 00002021 move a0,zero -8003f454: 00852025 or a0,a0,a1 -8003f458: 0004202b sltu a0,zero,a0 -8003f45c: 00c48825 or s1,a2,a0 -8003f460: 1000ffbf b 8003f360 <__floatdidf+0xf4> -8003f464: 00609821 move s3,v1 -8003f468: 24050413 li a1,1043 -8003f46c: 00a82823 subu a1,a1,t0 -8003f470: 3c02000f lui v0,0xf -8003f474: 00b12804 sllv a1,s1,a1 -8003f478: 3442ffff ori v0,v0,0xffff -8003f47c: 00a22824 and a1,a1,v0 -8003f480: 310307ff andi v1,t0,0x7ff -8003f484: 1000ffd5 b 8003f3dc <__floatdidf+0x170> -8003f488: 00008821 move s1,zero -8003f48c: 00043827 nor a3,zero,a0 -8003f490: 00e53806 srlv a3,a1,a3 -8003f494: 00922804 sllv a1,s2,a0 -8003f498: 00e52825 or a1,a3,a1 -8003f49c: 1000ffed b 8003f454 <__floatdidf+0x1e8> -8003f4a0: 00912004 sllv a0,s1,a0 -8003f4a4: 00132027 nor a0,zero,s3 -8003f4a8: 00831804 sllv v1,v1,a0 -8003f4ac: 02713006 srlv a2,s1,s3 -8003f4b0: 00663025 or a2,v1,a2 -8003f4b4: 1000ffe0 b 8003f438 <__floatdidf+0x1cc> -8003f4b8: 02721806 srlv v1,s2,s3 -8003f4bc: 3c02000f lui v0,0xf -8003f4c0: 3442ffff ori v0,v0,0xffff -8003f4c4: 02422824 and a1,s2,v0 -8003f4c8: 1000ffc4 b 8003f3dc <__floatdidf+0x170> -8003f4cc: 310307ff andi v1,t0,0x7ff - -8003f4d0 <__truncdfsf2>: -8003f4d0: 00053d02 srl a3,a1,0x14 -8003f4d4: 30e707ff andi a3,a3,0x7ff -8003f4d8: 3c02000f lui v0,0xf -8003f4dc: 24e60001 addiu a2,a3,1 -8003f4e0: 3442ffff ori v0,v0,0xffff -8003f4e4: 00451024 and v0,v0,a1 -8003f4e8: 30c607ff andi a2,a2,0x7ff -8003f4ec: 00052fc2 srl a1,a1,0x1f -8003f4f0: 000210c0 sll v0,v0,0x3 -8003f4f4: 00041f42 srl v1,a0,0x1d -8003f4f8: 28c60002 slti a2,a2,2 -8003f4fc: 00a04021 move t0,a1 -8003f500: 00621825 or v1,v1,v0 -8003f504: 14c0003d bnez a2,8003f5fc <__truncdfsf2+0x12c> -8003f508: 000448c0 sll t1,a0,0x3 -8003f50c: 24e2fc80 addiu v0,a3,-896 -8003f510: 284600ff slti a2,v0,255 -8003f514: 10c00049 beqz a2,8003f63c <__truncdfsf2+0x16c> -8003f518: 00000000 nop -8003f51c: 1840001e blez v0,8003f598 <__truncdfsf2+0xc8> -8003f520: 00043180 sll a2,a0,0x6 -8003f524: 0006302b sltu a2,zero,a2 -8003f528: 000318c0 sll v1,v1,0x3 -8003f52c: 00c31825 or v1,a2,v1 -8003f530: 00092742 srl a0,t1,0x1d -8003f534: 00642025 or a0,v1,a0 -8003f538: 30830007 andi v1,a0,0x7 -8003f53c: 10600005 beqz v1,8003f554 <__truncdfsf2+0x84> -8003f540: 3083000f andi v1,a0,0xf -8003f544: 24060004 li a2,4 -8003f548: 10660003 beq v1,a2,8003f558 <__truncdfsf2+0x88> -8003f54c: 3c030400 lui v1,0x400 -8003f550: 24840004 addiu a0,a0,4 -8003f554: 3c030400 lui v1,0x400 -8003f558: 00831824 and v1,a0,v1 -8003f55c: 10600013 beqz v1,8003f5ac <__truncdfsf2+0xdc> -8003f560: 240300ff li v1,255 -8003f564: 24420001 addiu v0,v0,1 -8003f568: 10430034 beq v0,v1,8003f63c <__truncdfsf2+0x16c> -8003f56c: 00042180 sll a0,a0,0x6 -8003f570: 00042242 srl a0,a0,0x9 -8003f574: 304200ff andi v0,v0,0xff -8003f578: 00021dc0 sll v1,v0,0x17 -8003f57c: 3c02007f lui v0,0x7f -8003f580: 3442ffff ori v0,v0,0xffff -8003f584: 00822024 and a0,a0,v0 -8003f588: 00832025 or a0,a0,v1 -8003f58c: 000517c0 sll v0,a1,0x1f -8003f590: 03e00008 jr ra -8003f594: 00821025 or v0,a0,v0 -8003f598: 2844ffe9 slti a0,v0,-23 -8003f59c: 10800041 beqz a0,8003f6a4 <__truncdfsf2+0x1d4> -8003f5a0: 240a001e li t2,30 -8003f5a4: 00001021 move v0,zero -8003f5a8: 24040005 li a0,5 -8003f5ac: 240300ff li v1,255 -8003f5b0: 14430016 bne v0,v1,8003f60c <__truncdfsf2+0x13c> -8003f5b4: 000420c2 srl a0,a0,0x3 -8003f5b8: 10800020 beqz a0,8003f63c <__truncdfsf2+0x16c> -8003f5bc: 3c03003f lui v1,0x3f -8003f5c0: 3463ffff ori v1,v1,0xffff -8003f5c4: 00832024 and a0,a0,v1 -8003f5c8: 14800034 bnez a0,8003f69c <__truncdfsf2+0x1cc> -8003f5cc: 01002821 move a1,t0 -8003f5d0: 240200ff li v0,255 -8003f5d4: 00602021 move a0,v1 -8003f5d8: 00021dc0 sll v1,v0,0x17 -8003f5dc: 3c02007f lui v0,0x7f -8003f5e0: 3442ffff ori v0,v0,0xffff -8003f5e4: 00002821 move a1,zero -8003f5e8: 00822024 and a0,a0,v0 -8003f5ec: 00832025 or a0,a0,v1 -8003f5f0: 000517c0 sll v0,a1,0x1f -8003f5f4: 03e00008 jr ra -8003f5f8: 00821025 or v0,a0,v0 -8003f5fc: 14e00019 bnez a3,8003f664 <__truncdfsf2+0x194> -8003f600: 00692025 or a0,v1,t1 -8003f604: 1480ffe8 bnez a0,8003f5a8 <__truncdfsf2+0xd8> -8003f608: 00001021 move v0,zero -8003f60c: 3c03007f lui v1,0x7f -8003f610: 3463ffff ori v1,v1,0xffff -8003f614: 304200ff andi v0,v0,0xff -8003f618: 00832024 and a0,a0,v1 -8003f61c: 00021dc0 sll v1,v0,0x17 -8003f620: 3c02007f lui v0,0x7f -8003f624: 3442ffff ori v0,v0,0xffff -8003f628: 00822024 and a0,a0,v0 -8003f62c: 00832025 or a0,a0,v1 -8003f630: 000517c0 sll v0,a1,0x1f -8003f634: 03e00008 jr ra -8003f638: 00821025 or v0,a0,v0 -8003f63c: 240200ff li v0,255 -8003f640: 00021dc0 sll v1,v0,0x17 -8003f644: 3c02007f lui v0,0x7f -8003f648: 3442ffff ori v0,v0,0xffff -8003f64c: 00002021 move a0,zero -8003f650: 00822024 and a0,a0,v0 -8003f654: 00832025 or a0,a0,v1 -8003f658: 000517c0 sll v0,a1,0x1f -8003f65c: 03e00008 jr ra -8003f660: 00821025 or v0,a0,v0 -8003f664: 00691025 or v0,v1,t1 -8003f668: 1040fff4 beqz v0,8003f63c <__truncdfsf2+0x16c> -8003f66c: 000318c0 sll v1,v1,0x3 -8003f670: 00092742 srl a0,t1,0x1d -8003f674: 00832025 or a0,a0,v1 -8003f678: 3c0301ff lui v1,0x1ff -8003f67c: 3463fff8 ori v1,v1,0xfff8 -8003f680: 00832024 and a0,a0,v1 -8003f684: 14800015 bnez a0,8003f6dc <__truncdfsf2+0x20c> -8003f688: 00000000 nop -8003f68c: 3c04003f lui a0,0x3f -8003f690: 00004021 move t0,zero -8003f694: 3484ffff ori a0,a0,0xffff -8003f698: 01002821 move a1,t0 -8003f69c: 1000ffb6 b 8003f578 <__truncdfsf2+0xa8> -8003f6a0: 240200ff li v0,255 -8003f6a4: 01425023 subu t2,t2,v0 -8003f6a8: 3c040080 lui a0,0x80 -8003f6ac: 294b0020 slti t3,t2,32 -8003f6b0: 1160000c beqz t3,8003f6e4 <__truncdfsf2+0x214> -8003f6b4: 00641825 or v1,v1,a0 -8003f6b8: 24e6fc82 addiu a2,a3,-894 -8003f6bc: 00c93804 sllv a3,t1,a2 -8003f6c0: 0007382b sltu a3,zero,a3 -8003f6c4: 00c31804 sllv v1,v1,a2 -8003f6c8: 00e33025 or a2,a3,v1 -8003f6cc: 01492006 srlv a0,t1,t2 -8003f6d0: 00c42025 or a0,a2,a0 -8003f6d4: 1000ff98 b 8003f538 <__truncdfsf2+0x68> -8003f6d8: 00001021 move v0,zero -8003f6dc: 1000ff96 b 8003f538 <__truncdfsf2+0x68> -8003f6e0: 240200ff li v0,255 -8003f6e4: 2404fffe li a0,-2 -8003f6e8: 00822023 subu a0,a0,v0 -8003f6ec: 24020020 li v0,32 -8003f6f0: 11420008 beq t2,v0,8003f714 <__truncdfsf2+0x244> -8003f6f4: 00832006 srlv a0,v1,a0 -8003f6f8: 24e7fca2 addiu a3,a3,-862 -8003f6fc: 00e31804 sllv v1,v1,a3 -8003f700: 00691825 or v1,v1,t1 -8003f704: 0003182b sltu v1,zero,v1 -8003f708: 00642025 or a0,v1,a0 -8003f70c: 1000ff8a b 8003f538 <__truncdfsf2+0x68> -8003f710: 00001021 move v0,zero -8003f714: 1000fffa b 8003f700 <__truncdfsf2+0x230> -8003f718: 00001821 move v1,zero - -Disassembly of section .init: - -8003f71c <_init>: -8003f71c: 27bdffe0 addiu sp,sp,-32 -8003f720: afbf0014 sw ra,20(sp) -8003f724: 04110001 bal 8003f72c <_init+0x10> -8003f728: 00000000 nop -8003f72c: 0c008055 jal 80020154 -8003f730: 00000000 nop -8003f734: 04110001 bal 8003f73c <_init+0x20> -8003f738: 00000000 nop -8003f73c: 0c00a302 jal 80028c08 <__do_global_ctors_aux> -8003f740: 00000000 nop - -8003f744 : -8003f744: 8fbf0014 lw ra,20(sp) -8003f748: 27bd0020 addiu sp,sp,32 -8003f74c: 03e00008 jr ra -8003f750: 00000000 nop - -Disassembly of section .fini: - -8003f754 <_fini>: -8003f754: 27bdffe0 addiu sp,sp,-32 -8003f758: afbf0014 sw ra,20(sp) -8003f75c: 04110001 bal 8003f764 <_fini+0x10> -8003f760: 00000000 nop -8003f764: 0c008021 jal 80020084 <__do_global_dtors_aux> -8003f768: 00000000 nop - -8003f76c : -8003f76c: 8fbf0014 lw ra,20(sp) -8003f770: 27bd0020 addiu sp,sp,32 -8003f774: 03e00008 jr ra -8003f778: 00000000 nop diff --git a/Source/Game.c b/Source/Game.c index 5882c25..8544662 100644 --- a/Source/Game.c +++ b/Source/Game.c @@ -39,49 +39,6 @@ typedef struct t_rwyentrydata uint16_t rwyHeader; }TYPE_RWY_ENTRY_DATA; -enum -{ - TILE_GRASS = 0, - TILE_ASPHALT_WITH_BORDERS, - TILE_WATER, - TILE_ASPHALT, - TILE_HANGAR, - TILE_ILS, - TILE_ATC_TOWER, - TILE_ATC_LOC, - TILE_RWY_MID, - TILE_RWY_START_1, - TILE_RWY_START_2, - TILE_PARKING, - TILE_PARKING_2, - TILE_TAXIWAY_INTERSECT_GRASS, - TILE_TAXIWAY_GRASS, - TILE_TAXIWAY_CORNER_GRASS, - - LAST_TILE_TILESET1 = TILE_TAXIWAY_CORNER_GRASS -}; - -enum -{ - TILE_HALF_WATER_1 = LAST_TILE_TILESET1 + 1, - TILE_HALF_WATER_2, - TILE_RESERVED_2, - TILE_RESERVED_3, - TILE_AIRPORT_BUILDING, - TILE_PLANE, - TILE_RWY_HOLDING_POINT, - TILE_RWY_HOLDING_POINT_2, - TILE_RWY_EXIT, - TILE_GATE, - TILE_RESERVED_6, - TILE_RESERVED_7, - TILE_TAXIWAY_CORNER_GRASS_2, - - LAST_TILE_TILESET2 = TILE_TAXIWAY_CORNER_GRASS_2, - - TILE_NOTHING = 0xFF -}; - enum { MOUSE_W = 8, @@ -110,6 +67,52 @@ enum UNBOARDING_PASSENGERS_PER_SEQUENCE = 100 }; +enum +{ + BUILDING_HANGAR = 0, + BUILDING_ILS, + BUILDING_ATC_TOWER, + BUILDING_ATC_LOC, + BUILDING_TERMINAL, + BUILDING_TERMINAL_2, + BUILDING_GATE, + + LAST_BUILDING = BUILDING_GATE +}; + +enum +{ + TILE_GRASS = 0, + TILE_ASPHALT_WITH_BORDERS, + TILE_WATER, + TILE_ASPHALT, + + TILE_RWY_MID, + TILE_RWY_START_1, + TILE_RWY_START_2, + TILE_PARKING, + + TILE_PARKING_2, + TILE_TAXIWAY_INTERSECT_GRASS, + TILE_TAXIWAY_GRASS, + TILE_TAXIWAY_CORNER_GRASS, + + TILE_HALF_WATER_1, + TILE_HALF_WATER_2, + TILE_RWY_HOLDING_POINT, + TILE_RWY_HOLDING_POINT_2, + + TILE_RWY_EXIT, + TILE_TAXIWAY_CORNER_GRASS_2, + + LAST_TILE_TILESET1 = TILE_TAXIWAY_CORNER_GRASS_2 +}; + +enum +{ + LAST_TILE_TILESET2 = LAST_TILE_TILESET1 +}; + /* ************************************* * Local Prototypes * *************************************/ @@ -183,21 +186,19 @@ static uint8_t GameAircraftCollisionIdx; TYPE_PLAYER PlayerData[MAX_PLAYERS]; static char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\TILESET1.TIM;1" , - "cdrom:\\DATA\\SPRITES\\TILESET2.TIM;1" , - "cdrom:\\DATA\\LEVELS\\LEVEL1.PLT;1" , - "cdrom:\\DATA\\SPRITES\\GAMEPLN.TIM;1" , - "cdrom:\\DATA\\SPRITES\\PLNBLUE.CLT;1" , - "cdrom:\\DATA\\SPRITES\\MOUSE.TIM;1" }; + "cdrom:\\DATA\\LEVELS\\LEVEL1.PLT;1" , + "cdrom:\\DATA\\SPRITES\\GAMEPLN.TIM;1" , + "cdrom:\\DATA\\SPRITES\\PLNBLUE.CLT;1" , + "cdrom:\\DATA\\SPRITES\\MOUSE.TIM;1" }; -static void * GameFileDest[] = { (GsSprite*)&GameTilesetSpr , - (GsSprite*)&GameTileset2Spr , - (TYPE_FLIGHT_DATA*)&FlightData , - (GsSprite*)&GamePlaneSpr , - NULL , - (GsSprite*)&GameMouseSpr }; +static void * GameFileDest[] = {(GsSprite*)&GameTilesetSpr , + (TYPE_FLIGHT_DATA*)&FlightData , + (GsSprite*)&GamePlaneSpr , + NULL , + (GsSprite*)&GameMouseSpr }; static char* GameLevelList[] = { "cdrom:\\DATA\\LEVELS\\LEVEL1.LVL;1"}; -static uint8_t GameLevelBuffer[GAME_MAX_MAP_SIZE]; +static uint16_t GameLevelBuffer[GAME_MAX_MAP_SIZE]; static uint8_t GameLevelColumns; static uint8_t GameLevelSize; @@ -392,7 +393,7 @@ void GameInit(void) GameSpawnMinTime = SystemCreateTimer(GAME_MINIMUM_PARKING_SPAWN_TIME, false, &GameMinimumSpawnTimeout); - spawnMinTimeFlag = true; + spawnMinTimeFlag = false; GameScore = 0; @@ -404,7 +405,7 @@ void GameInit(void) LoadMenuEnd(); - GfxSetGlobalLuminance(0); + //GfxSetGlobalLuminance(0); track = SystemRand(GAMEPLAY_FIRST_TRACK, GAMEPLAY_LAST_TRACK); @@ -543,7 +544,7 @@ void GameFirstLastAircraftIndex(void) bool first_set = false; uint8_t i; - for(i = 0; i < GAME_MAX_AIRCRAFT ; i++) + for(i = 0; i < FlightData.nAircraft ; i++) { if(FlightData.State[i] != STATE_IDLE) { @@ -552,6 +553,7 @@ void GameFirstLastAircraftIndex(void) firstActiveAircraft = i; first_set = true; } + lastActiveAircraft = i; } } @@ -772,8 +774,7 @@ void GameLoadLevel(void) i = LEVEL_HEADER_SIZE; - memcpy(GameLevelBuffer,&ptrBuffer[i],GameLevelSize); - + memcpy(GameLevelBuffer, &ptrBuffer[i], GameLevelSize * sizeof(uint16_t)); // 2 bytes per tile } char* GetGameLevelTitle(void) @@ -801,8 +802,8 @@ void GameAircraftState(void) (FlightData.State[i] == STATE_IDLE) && (FlightData.RemainingTime[i] > 0) - /* && - (spawnMinTimeFlag == true) */) + && + (spawnMinTimeFlag == false) ) { if( (FlightData.FlightDirection[i] == DEPARTURE) && @@ -811,7 +812,7 @@ void GameAircraftState(void) uint8_t j; bool bParkingBusy = false; - for(j = 0; j < GAME_MAX_AIRCRAFT; j++) + for(j = 0; j < FlightData.nAircraft; j++) { if(AircraftFromFlightDataIndex(j)->State != STATE_IDLE) { @@ -837,7 +838,6 @@ void GameAircraftState(void) GameAircraftCreatedFlag = true; // Create notification request for incoming aircraft - dprintf("1!!!!\n"); GameGuiBubbleShow(); target[0] = FlightData.Parking[i]; @@ -859,8 +859,6 @@ void GameAircraftState(void) FlightData.State[i] = STATE_APPROACH; GameAircraftCreatedFlag = true; - dprintf("2!!!!\n"); - // Create notification request for incoming aircraft GameGuiBubbleShow(); } @@ -892,6 +890,7 @@ void GameRenderLevel(TYPE_PLAYER* ptrPlayer) static bool rwy_sine_decrease = false; TYPE_ISOMETRIC_POS tileIsoPos; TYPE_CARTESIAN_POS tileCartPos; + GsRectangle rct = {0}; // Prepare runway to be painted in blue if player is on runway selection mode if(ptrPlayer->SelectRunway == true) @@ -909,6 +908,8 @@ void GameRenderLevel(TYPE_PLAYER* ptrPlayer) if(firstLevelRender == true) { + // Avoid re-entrance. + firstLevelRender = false; if(rwy_sine_decrease == false) @@ -937,32 +938,41 @@ void GameRenderLevel(TYPE_PLAYER* ptrPlayer) for(i = 0 ; i < GameLevelSize; i++) { + // GameLevelBuffer bits explanation: + // X X X X X X X X + // | | | | | | | | + // | | | | | | | V + // | | | | | | V Tile, bit 0 + // | | | | | V Tile, bit 1 + // | | | | V Tile, bit 2 + // | | | V Tile, bit 3 + // | | V Tile, bit 4 + // | V Tile, bit 5 + // V Tile, bit 6 + // Tile mirror flag + + uint8_t CurrentTile = (uint8_t)(GameLevelBuffer[i] & 0x00FF); + // Flipped tiles have bit 7 enabled - if(GameLevelBuffer[i] & TILE_MIRROR_FLAG) + if(CurrentTile & TILE_MIRROR_FLAG) { flip_id = true; - aux_id = GameLevelBuffer[i]; - GameLevelBuffer[i] &= ~(TILE_MIRROR_FLAG); + aux_id = CurrentTile; + CurrentTile &= ~(TILE_MIRROR_FLAG); } else { flip_id = false; } - if(GameLevelBuffer[i] == TILE_NOTHING) - { - // Skip empty tiles - continue; - } - - if(GameLevelBuffer[i] <= LAST_TILE_TILESET1) + if(CurrentTile <= LAST_TILE_TILESET1) { // Draw using GameTilesetSpr ptrTileset = &GameTilesetSpr; } - else if( (GameLevelBuffer[i] > LAST_TILE_TILESET1) + else if( (CurrentTile > LAST_TILE_TILESET1) && - (GameLevelBuffer[i] <= LAST_TILE_TILESET2) ) + (CurrentTile <= LAST_TILE_TILESET2) ) { // Draw using GameTileset2Spr ptrTileset = &GameTileset2Spr; @@ -970,15 +980,17 @@ void GameRenderLevel(TYPE_PLAYER* ptrPlayer) else { ptrTileset = NULL; + + continue; - if(flip_id == false) - { - continue; - } +// if(flip_id == false) +// { +// continue; +// } } ptrTileset->w = TILE_SIZE; - ptrTileset->h = TILE_SIZE; + ptrTileset->h = TILE_SIZE_H; used_rwy = false; @@ -1044,14 +1056,14 @@ void GameRenderLevel(TYPE_PLAYER* ptrPlayer) } else if( (ptrPlayer->SelectTaxiwayRunway == true) && - ( (GameLevelBuffer[i] == TILE_RWY_HOLDING_POINT) + ( (CurrentTile == TILE_RWY_HOLDING_POINT) || - (GameLevelBuffer[i] == TILE_RWY_HOLDING_POINT_2) ) ) + (CurrentTile == TILE_RWY_HOLDING_POINT_2) ) ) { uint16_t aircraftTile; bool bHoldingRwyBusy = false; - for(j = 0; j < GAME_MAX_AIRCRAFT; j++) + for(j = 0; j < FlightData.nAircraft; j++) { uint16_t* targets = AircraftGetTargets(j); aircraftTile = AircraftGetTileFromFlightDataIndex(j); @@ -1092,14 +1104,14 @@ void GameRenderLevel(TYPE_PLAYER* ptrPlayer) } else if( (ptrPlayer->SelectTaxiwayParking == true) && - ( (GameLevelBuffer[i] == TILE_PARKING) + ( (CurrentTile == TILE_PARKING) || - (GameLevelBuffer[i] == TILE_PARKING_2) ) ) + (CurrentTile == TILE_PARKING_2) ) ) { uint16_t aircraftTile; bool bParkingBusy = false; - for(j = 0; j < GAME_MAX_AIRCRAFT; j++) + for(j = 0; j < FlightData.nAircraft; j++) { aircraftTile = AircraftGetTileFromFlightDataIndex(j); @@ -1136,9 +1148,16 @@ void GameRenderLevel(TYPE_PLAYER* ptrPlayer) // Set coordinate origin to left upper corner ptrTileset->x -= TILE_SIZE >> 1; - ptrTileset->y -= TILE_SIZE >> 2; + //ptrTileset->y -= TILE_SIZE_H >> 2; + + rct.x = tileCartPos.x; + rct.y = tileCartPos.y; + rct.r = NORMAL_LUMINANCE; + rct.g = 0; + rct.b = 0; + rct.w = rct.h = 2; - if(columns < GameLevelColumns -1 ) + if(columns < (GameLevelColumns - 1) ) { columns++; } @@ -1156,22 +1175,25 @@ void GameRenderLevel(TYPE_PLAYER* ptrPlayer) } } - ptrTileset->u = (short)(GameLevelBuffer[i] % COLUMNS_PER_TILESET)<v = (short)(GameLevelBuffer[i] / COLUMNS_PER_TILESET)<u = (short)(CurrentTile % COLUMNS_PER_TILESET) << TILE_SIZE_BIT_SHIFT; + ptrTileset->v = (short)(CurrentTile / COLUMNS_PER_TILESET) * TILE_SIZE_H; ptrTileset->mx = ptrTileset->u + (TILE_SIZE >> 1); - ptrTileset->my = ptrTileset->v + (TILE_SIZE >> 1); + ptrTileset->my = ptrTileset->v + (TILE_SIZE_H >> 1); if(flip_id == true) { flip_id = false; - GameLevelBuffer[i] = aux_id; + CurrentTile = aux_id; } - + // dprintf("Tile %d, attribute 0x%X\n",i,ptrTileset->attribute); - + CameraApplyCoordinatesToSprite(ptrPlayer, ptrTileset); GfxSortSprite(ptrTileset); + + CameraApplyCoordinatesToRectangle(ptrPlayer, &rct); + GsSortRectangle(&rct); if(ptrTileset->attribute & H_FLIP) { @@ -1518,7 +1540,7 @@ void GameGetRunwayArray(void) { if(GameLevelBuffer[i] == TILE_RWY_START_1) { - if(SystemContains_u8(i, GameLevelBuffer, GAME_MAX_RUNWAYS) == false) + if(SystemContains_u16(i, GameLevelBuffer, GAME_MAX_RUNWAYS) == false) { GameRwy[j++] = i; } @@ -1812,7 +1834,7 @@ short GameGetXFromTile_short(uint16_t tile) tile %= GameLevelColumns; - retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT); + retVal = (tile << TILE_SIZE_BIT_SHIFT); // Always point to tile center retVal += TILE_SIZE >> 1; @@ -1826,9 +1848,11 @@ short GameGetYFromTile_short(uint16_t tile) tile /= GameLevelColumns; - retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT); + //retVal = (fix16_t)(tile << TILE_SIZE_BIT_SHIFT); + retVal = (tile << TILE_SIZE_BIT_SHIFT); // Always point to tile center + //retVal += TILE_SIZE >> 1; retVal += TILE_SIZE >> 1; return retVal; @@ -1950,7 +1974,7 @@ bool GamePathToTile(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData) // If one of these tiles do not belong to desired tiles (i.e.: grass, // water, buildings...), then false is returned. - uint8_t AcceptedTiles[] = { TILE_ASPHALT, TILE_ASPHALT_WITH_BORDERS, + uint8_t AcceptedTiles[] = { TILE_ASPHALT_WITH_BORDERS, TILE_PARKING, TILE_RWY_MID, TILE_RWY_EXIT, TILE_TAXIWAY_CORNER_GRASS, TILE_TAXIWAY_CORNER_GRASS_2, TILE_TAXIWAY_GRASS, @@ -2019,7 +2043,7 @@ bool GamePathToTile(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData) if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false) { - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) + for(i = 0; i < FlightData.nAircraft; i++) { if( (ptrFlightData->State[i] != STATE_IDLE) && @@ -2054,7 +2078,7 @@ bool GamePathToTile(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData) if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false) { - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) + for(i = 0; i < FlightData.nAircraft; i++) { if( (ptrFlightData->State[i] != STATE_IDLE) && @@ -2092,7 +2116,7 @@ bool GamePathToTile(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData) if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false) { - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) + for(i = 0; i < FlightData.nAircraft; i++) { if( (ptrFlightData->State[i] != STATE_IDLE) && @@ -2128,7 +2152,7 @@ bool GamePathToTile(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData) if(SystemContains_u16(temp_tile, ptrPlayer->Waypoints, PLAYER_MAX_WAYPOINTS) == false) { - for(i = 0; i < GAME_MAX_AIRCRAFT; i++) + for(i = 0; i < FlightData.nAircraft; i++) { if( (ptrFlightData->State[i] != STATE_IDLE) && @@ -2228,7 +2252,7 @@ void GameDrawMouse(TYPE_PLAYER* ptrPlayer) FL_STATE GameGetFlightDataStateFromIdx(uint8_t FlightDataIdx) { - if(FlightDataIdx >= GAME_MAX_AIRCRAFT) + if(FlightDataIdx >= FlightData.nAircraft) { return STATE_IDLE; // Error: could cause buffer overrun } @@ -2549,7 +2573,7 @@ void GameRemoveFlight(uint8_t idx, bool successful) FlightData.State[ptrPlayer->ActiveAircraftList[j]] = STATE_IDLE; FlightData.Finished[ptrPlayer->ActiveAircraftList[j]] = true; - spawnMinTimeFlag = false; + spawnMinTimeFlag = true; SystemTimerRestart(GameSpawnMinTime); return; @@ -2644,7 +2668,7 @@ bool GameFinished(void) void GameMinimumSpawnTimeout(void) { - spawnMinTimeFlag = true; + spawnMinTimeFlag = false; } void GameAircraftCollision(uint8_t AircraftIdx) diff --git a/Source/Game.h b/Source/Game.h index 9720af9..a2f5db4 100644 --- a/Source/Game.h +++ b/Source/Game.h @@ -22,6 +22,7 @@ #define MAX_PLAYERS (PLAYER_TWO + 1) #define TILE_SIZE 64 +#define TILE_SIZE_H 48 #define TILE_SIZE_BIT_SHIFT 6 /* ************************************* diff --git a/Source/GameGui.c b/Source/GameGui.c index b8b1261..d3607d8 100644 --- a/Source/GameGui.c +++ b/Source/GameGui.c @@ -95,8 +95,8 @@ enum AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B3 = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_B2, AIRCRAFT_DATA_FLIGHT_GSGPOLY4_GAP = 8, - AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0 = AIRCRAFT_DATA_GSGPOLY4_X0 + AIRCRAFT_DATA_FLIGHT_GSGPOLY4_GAP, - AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1 = AIRCRAFT_DATA_GSGPOLY4_X1 - AIRCRAFT_DATA_FLIGHT_GSGPOLY4_GAP, + AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0 = AIRCRAFT_DATA_GSGPOLY4_X0 + 24, + AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1 = AIRCRAFT_DATA_GSGPOLY4_X1 - 24, AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X2 = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X0, AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X3 = AIRCRAFT_DATA_FLIGHT_GSGPOLY4_X1, @@ -137,34 +137,38 @@ enum AIRCRAFT_DATA_PASSENGERS_X_2PLAYER = AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_X_2PLAYER + 64, AIRCRAFT_DATA_PASSENGERS_Y_2PLAYER = AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_Y_2PLAYER, - AIRCRAFT_DATA_REMAINING_TIME_X = AIRCRAFT_DATA_DIRECTION_X, + AIRCRAFT_DATA_REMAINING_TIME_X = AIRCRAFT_DATA_DIRECTION_X + 24, AIRCRAFT_DATA_REMAINING_TIME_Y = AIRCRAFT_DATA_DIRECTION_Y + AIRCRAFT_DATA_FLIGHT_GSGPOLY4_GAP, - AIRCRAFT_DATA_REMAINING_TIME_X_2PLAYER = AIRCRAFT_DATA_DIRECTION_X_2PLAYER, - AIRCRAFT_DATA_REMAINING_TIME_Y_2PLAYER = AIRCRAFT_DATA_DIRECTION_Y_2PLAYER + AIRCRAFT_DATA_FLIGHT_GSGPOLY4_GAP + AIRCRAFT_DATA_REMAINING_TIME_X_2PLAYER = AIRCRAFT_DATA_DIRECTION_X_2PLAYER + 24, + AIRCRAFT_DATA_REMAINING_TIME_Y_2PLAYER = AIRCRAFT_DATA_DIRECTION_Y_2PLAYER + AIRCRAFT_DATA_FLIGHT_GSGPOLY4_GAP, }; enum { - AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_X = 96, - AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_Y = 112, + AIRCRAFT_DEPARTURE_ARRIVAL_ICON_SIZE = 16, + AIRCRAFT_ARRIVAL_ICON_U = 0, + AIRCRAFT_DEPARTURE_ICON_U = 16 +}; - AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_X_2PLAYER = 48, - AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_Y_2PLAYER = 112, - - AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_U = 44, - AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_V = 48, - - AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_X = 280, - AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_Y = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_Y, +enum +{ + AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_X = 100, + AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_Y = 112, - AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_X_2PLAYER = 128, - AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_Y_2PLAYER = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_Y_2PLAYER, + AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_X_2PLAYER = 48, + AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_Y_2PLAYER = 112, - AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_U = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_U + 8, - AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_V = 48, - - AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE = 8 + AIRCRAFT_DATA_FLIGHT_PAGE_UP_X = 268, + AIRCRAFT_DATA_FLIGHT_PAGE_UP_Y = AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_Y, + + AIRCRAFT_DATA_FLIGHT_PAGE_UP_X_2PLAYER = 128, + AIRCRAFT_DATA_FLIGHT_PAGE_UP_Y_2PLAYER = AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_Y_2PLAYER, + + AIRCRAFT_DATA_FLIGHT_PAGE_UP_U = 16, + AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_U = 0, + + AIRCRAFT_DATA_FLIGHT_PAGEUPDN_SIZE = 16 }; enum @@ -190,21 +194,24 @@ static void GameGuiBubbleStopVibration(void); static GsSprite BubbleSpr; static GsGPoly4 AircraftDataGPoly4; static GsGPoly4 SelectedAircraftGPoly4; -static GsSprite ArrowsSpr; static GsGPoly4 PauseRect; static GsSprite SecondDisplay; +static GsSprite DepArrSpr; +static GsSprite PageUpDownSpr; static TYPE_TIMER* ShowAircraftPassengersTimer; static bool GameGuiClearPassengersLeft_Flag; static bool GameGuiBubbleShowFlag; static bool GameGuiBubbleVibrationFlag; -static char* GameFileList[] = {"cdrom:\\DATA\\SPRITES\\BUBBLE.TIM;1" , +static char* GameFileList[] = { "cdrom:\\DATA\\SPRITES\\BUBBLE.TIM;1" , "cdrom:\\DATA\\FONTS\\FONT_1.FNT;1" , - "cdrom:\\DATA\\SPRITES\\ARROWS.TIM;1" }; + "cdrom:\\DATA\\SPRITES\\DEPARR.TIM;1" , + "cdrom:\\DATA\\SPRITES\\PAGEUPDN.TIM;1" }; -static void * GameFileDest[] = {(GsSprite*)&BubbleSpr , - (TYPE_FONT*)&RadioFont , - (GsSprite*)&ArrowsSpr }; +static void * GameFileDest[] = {(GsSprite*)&BubbleSpr , + (TYPE_FONT*)&RadioFont , + (GsSprite*)&DepArrSpr , + (GsSprite*)&PageUpDownSpr }; static uint32_t slowScore; // It will update slowly to actual score value @@ -265,10 +272,9 @@ void GameGuiInit(void) PauseRect.attribute |= ENABLE_TRANS | TRANS_MODE(0); + PageUpDownSpr.w = AIRCRAFT_DATA_FLIGHT_PAGEUPDN_SIZE; + ShowAircraftPassengersTimer = SystemCreateTimer(20, true, GameGuiClearPassengersLeft); - - ArrowsSpr.w = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE; - ArrowsSpr.h = AIRCRAFT_DATA_FLIGHT_ARROWS_SIZE; slowScore = 0; @@ -364,6 +370,7 @@ void GameGuiAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData { short y_offset; uint8_t page_aircraft; + short orig_pageupdn_u; enum { @@ -502,47 +509,51 @@ void GameGuiAircraftList(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlightData SelectedAircraftGPoly4.y[3] += y_offset; GsSortGPoly4(&SelectedAircraftGPoly4); + + PageUpDownSpr.attribute |= GFX_1HZ_FLASH; if(ptrPlayer->ActiveAircraft > (GAME_GUI_AIRCRAFT_DATA_MAX_PAGE * (ptrPlayer->FlightDataPage + 1) ) ) { + orig_pageupdn_u = PageUpDownSpr.u; + + PageUpDownSpr.u = orig_pageupdn_u + AIRCRAFT_DATA_FLIGHT_PAGE_UP_U; + if(GameTwoPlayersActive() == true) { - ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_X_2PLAYER; - ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_Y_2PLAYER; + PageUpDownSpr.x = AIRCRAFT_DATA_FLIGHT_PAGE_UP_X_2PLAYER; + PageUpDownSpr.y = AIRCRAFT_DATA_FLIGHT_PAGE_UP_Y_2PLAYER; } else { - ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_X; - ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_Y; + PageUpDownSpr.x = AIRCRAFT_DATA_FLIGHT_PAGE_UP_X; + PageUpDownSpr.y = AIRCRAFT_DATA_FLIGHT_PAGE_UP_Y; } - ArrowsSpr.u = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_U; - ArrowsSpr.v = AIRCRAFT_DATA_FLIGHT_RIGHT_ARROW_V; + GfxSortSprite(&PageUpDownSpr); - ArrowsSpr.attribute |= GFX_1HZ_FLASH; - - GfxSortSprite(&ArrowsSpr); + PageUpDownSpr.u = orig_pageupdn_u; } if(ptrPlayer->FlightDataPage != 0) { + orig_pageupdn_u = PageUpDownSpr.u; + + PageUpDownSpr.u = orig_pageupdn_u + AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_U; + if(GameTwoPlayersActive() == true) { - ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_X_2PLAYER; - ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_Y_2PLAYER; + PageUpDownSpr.x = AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_X_2PLAYER; + PageUpDownSpr.y = AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_Y_2PLAYER; } else { - ArrowsSpr.x = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_X; - ArrowsSpr.y = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_Y; + PageUpDownSpr.x = AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_X; + PageUpDownSpr.y = AIRCRAFT_DATA_FLIGHT_PAGE_DOWN_Y; } + + GfxSortSprite(&PageUpDownSpr); - ArrowsSpr.u = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_U; - ArrowsSpr.v = AIRCRAFT_DATA_FLIGHT_LEFT_ARROW_V; - - ArrowsSpr.attribute |= GFX_1HZ_FLASH; - - GfxSortSprite(&ArrowsSpr); + PageUpDownSpr.u = orig_pageupdn_u; } GameGuiShowAircraftData(ptrPlayer, ptrFlightData); @@ -693,11 +704,12 @@ void GameGuiShowAircraftData(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlight short AircraftDataDirection_Y; short AircraftDataFlightNumber_X; short AircraftDataFlightNumber_Y; - short AircraftDataPassengers_X; - short AircraftDataPassengers_Y; + //short AircraftDataPassengers_X; + //short AircraftDataPassengers_Y; short AircraftDataState_X_Offset; short AircraftDataRemainingTime_X; short AircraftDataRemainingTime_Y; + short orig_DepArr_u = DepArrSpr.u; if(GameTwoPlayersActive() == true) { @@ -705,9 +717,9 @@ void GameGuiShowAircraftData(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlight AircraftDataDirection_Y = AIRCRAFT_DATA_DIRECTION_Y_2PLAYER; AircraftDataFlightNumber_X = AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_X_2PLAYER; AircraftDataFlightNumber_Y = AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_Y_2PLAYER; - AircraftDataPassengers_X = AIRCRAFT_DATA_PASSENGERS_X_2PLAYER; - AircraftDataPassengers_Y = AIRCRAFT_DATA_PASSENGERS_Y_2PLAYER; - AircraftDataState_X_Offset = 54; + //AircraftDataPassengers_X = AIRCRAFT_DATA_PASSENGERS_X_2PLAYER; + //AircraftDataPassengers_Y = AIRCRAFT_DATA_PASSENGERS_Y_2PLAYER; + AircraftDataState_X_Offset = 24; AircraftDataRemainingTime_X = AIRCRAFT_DATA_REMAINING_TIME_X_2PLAYER; AircraftDataRemainingTime_Y = AIRCRAFT_DATA_REMAINING_TIME_Y_2PLAYER; } @@ -717,9 +729,9 @@ void GameGuiShowAircraftData(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlight AircraftDataDirection_Y = AIRCRAFT_DATA_DIRECTION_Y; AircraftDataFlightNumber_X = AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_X; AircraftDataFlightNumber_Y = AIRCRAFT_DATA_FLIGHT_NUMBER_TEXT_Y; - AircraftDataPassengers_X = AIRCRAFT_DATA_PASSENGERS_X; - AircraftDataPassengers_Y = AIRCRAFT_DATA_PASSENGERS_Y; - AircraftDataState_X_Offset = 88; + //AircraftDataPassengers_X = AIRCRAFT_DATA_PASSENGERS_X; + //AircraftDataPassengers_Y = AIRCRAFT_DATA_PASSENGERS_Y; + AircraftDataState_X_Offset = 24; AircraftDataRemainingTime_X = AIRCRAFT_DATA_REMAINING_TIME_X; AircraftDataRemainingTime_Y = AIRCRAFT_DATA_REMAINING_TIME_Y; } @@ -739,34 +751,27 @@ void GameGuiShowAircraftData(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlight AircraftDataFlightNumber_X, AircraftDataFlightNumber_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), ptrFlightData->strFlightNumber[ptrPlayer->ActiveAircraftList[i]] ); + + DepArrSpr.x = AircraftDataDirection_X; + DepArrSpr.y = AircraftDataDirection_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j); + DepArrSpr.w = AIRCRAFT_DEPARTURE_ARRIVAL_ICON_SIZE; switch(ptrFlightData->FlightDirection[ptrPlayer->ActiveAircraftList[i]]) { case ARRIVAL: - FontPrintText( &SmallFont, - AircraftDataDirection_X, - AircraftDataDirection_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "Arrival" ); + DepArrSpr.u = orig_DepArr_u + AIRCRAFT_ARRIVAL_ICON_U; break; case DEPARTURE: - if(GameTwoPlayersActive() == true) - { - FontPrintText( &SmallFont, - AircraftDataDirection_X, - AircraftDataDirection_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "Depart." ); - } - else - { - FontPrintText( &SmallFont, - AircraftDataDirection_X, - AircraftDataDirection_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "Departure" ); - } + DepArrSpr.u = orig_DepArr_u + AIRCRAFT_DEPARTURE_ICON_U; break; + default: break; } + + GfxSortSprite(&DepArrSpr); + + DepArrSpr.u = orig_DepArr_u; FontSetFlags(&SmallFont, FONT_2HZ_FLASH); @@ -820,16 +825,16 @@ void GameGuiShowAircraftData(TYPE_PLAYER* ptrPlayer, TYPE_FLIGHT_DATA* ptrFlight FontSetFlags(&SmallFont, FONT_NOFLAGS); - FontPrintText( &SmallFont, + /*FontPrintText( &SmallFont, AircraftDataPassengers_X, AircraftDataPassengers_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), "%d pax.", - ptrFlightData->Passengers[ptrPlayer->ActiveAircraftList[i]] ); + ptrFlightData->Passengers[ptrPlayer->ActiveAircraftList[i]] );*/ FontPrintText( &SmallFont, AircraftDataRemainingTime_X, AircraftDataRemainingTime_Y + (AIRCRAFT_DATA_FLIGHT_GSGPOLY4_H * j), - "%d sec.", + "%ds", ptrFlightData->RemainingTime[ptrPlayer->ActiveAircraftList[i]] ); } } diff --git a/Source/Gfx.c b/Source/Gfx.c index c10e51c..8f08ad5 100644 --- a/Source/Gfx.c +++ b/Source/Gfx.c @@ -35,6 +35,31 @@ enum BUTTON_CIRCLE_U = 16, BUTTON_CIRCLE_V = 0, + + BUTTON_DIRECTION_U = 64, + BUTTON_DIRECTION_V = 0, + + BUTTON_LR_U = 80, + BUTTON_LR_V = 0, + BUTTON_LR_SIZE = 24, + + LETTER_SIZE = 8, + + LETTER_L1_U = 104, + LETTER_L1_V = 0, + + LETTER_L2_U = 112, + LETTER_L2_V = 0, + + LETTER_R1_U = 104, + LETTER_R1_V = 8, + + LETTER_R2_U = 112, + LETTER_R2_V = 8, + + LETTER_OFFSET_INSIDE_BUTTON_LR_X = 8, + LETTER_OFFSET_INSIDE_BUTTON_LR_Y = 6 + }; enum @@ -212,6 +237,10 @@ void GfxSortSprite(GsSprite * spr) { return; } + else if(has_1hz_flash && Gfx1HzFlash() == false) + { + return; + } if(global_lum != NORMAL_LUMINANCE) { @@ -332,6 +361,12 @@ bool GfxSpriteFromFile(char* fname, GsSprite * spr) GsSpriteFromImage(spr,&gsi,UPLOAD_IMAGE_FLAG); gfx_busy = false; + + DEBUG_PRINT_VAR(spr->tpage); + DEBUG_PRINT_VAR(spr->u); + DEBUG_PRINT_VAR(spr->v); + DEBUG_PRINT_VAR(spr->w); + DEBUG_PRINT_VAR(spr->h); return true; } @@ -379,6 +414,16 @@ bool GfxIsSpriteInsideScreenArea(GsSprite * spr) return GfxIsInsideScreenArea(spr->x, spr->y, spr->w, spr->h); } +void GfxButtonSetFlags(uint8_t flags) +{ + PSXButtons.attribute |= flags; +} + +void GfxButtonRemoveFlags(uint8_t flags) +{ + PSXButtons.attribute &= ~flags; +} + void GfxDrawButton(short x, short y, unsigned short btn) { static bool first_entered = true; @@ -401,6 +446,8 @@ void GfxDrawButton(short x, short y, unsigned short btn) PSXButtons.x = x; PSXButtons.y = y; + PSXButtons.mx = PSXButtons.w >> 1; + PSXButtons.my = PSXButtons.h >> 1; switch(btn) { @@ -423,13 +470,46 @@ void GfxDrawButton(short x, short y, unsigned short btn) PSXButtons.u = BUTTON_CIRCLE_U; PSXButtons.v = BUTTON_CIRCLE_V; break; + + case PAD_RIGHT: + PSXButtons.u = BUTTON_DIRECTION_U; + PSXButtons.v = BUTTON_DIRECTION_V; + break; + + case PAD_UP: + PSXButtons.u = BUTTON_DIRECTION_U; + PSXButtons.v = BUTTON_DIRECTION_V; + PSXButtons.rotate = 90 << ROTATE_BIT_SHIFT; + break; + + case PAD_DOWN: + PSXButtons.u = BUTTON_DIRECTION_U; + PSXButtons.v = BUTTON_DIRECTION_V; + PSXButtons.rotate = 270 << ROTATE_BIT_SHIFT; + break; + + case PAD_LEFT: + PSXButtons.u = BUTTON_DIRECTION_U; + PSXButtons.v = BUTTON_DIRECTION_V; + PSXButtons.attribute |= H_FLIP; + break; case PAD_L1: + // Fall through case PAD_L2: + // Fall through case PAD_R1: + // Fall through case PAD_R2: + PSXButtons.u = BUTTON_LR_U; + PSXButtons.v = BUTTON_LR_V; + PSXButtons.w = BUTTON_LR_SIZE; + break; + case PAD_SELECT: + // Fall through case PAD_START: + // Fall through default: // Set null width and height so that sprite doesn't get sorted PSXButtons.w = 0; @@ -441,6 +521,9 @@ void GfxDrawButton(short x, short y, unsigned short btn) PSXButtons.v += orig_v; GfxSortSprite(&PSXButtons); + + PSXButtons.attribute &= ~H_FLIP; + PSXButtons.rotate = 0; } void GfxSaveDisplayData(GsSprite *spr) @@ -538,7 +621,7 @@ TYPE_ISOMETRIC_POS GfxCartesianToIsometric(TYPE_CARTESIAN_POS * ptrCartPos) IsoPos.x = ptrCartPos->x + (ptrCartPos->y << 1); IsoPos.y = (ptrCartPos->y << 1) - ptrCartPos->x; - // Explicitely suppose z = 0 + // Explicitly suppose z = 0 IsoPos.z = 0; return IsoPos; diff --git a/Source/Gfx.h b/Source/Gfx.h index 409c971..3ee9bce 100644 --- a/Source/Gfx.h +++ b/Source/Gfx.h @@ -76,6 +76,10 @@ void GfxSetGlobalLuminance(uint8_t value); void GfxIncreaseGlobalLuminance(int8_t step); +void GfxButtonSetFlags(uint8_t flags); + +void GfxButtonRemoveFlags(uint8_t flags); + int GfxRotateFromDegrees(int deg); void GfxDrawButton(short x, short y, unsigned short btn); diff --git a/Source/LoadMenu.c b/Source/LoadMenu.c index b7e0a92..5081ac3 100644 --- a/Source/LoadMenu.c +++ b/Source/LoadMenu.c @@ -88,6 +88,7 @@ static GsRectangle LoadMenuBarRect; static char* LoadMenuFiles[] = { "cdrom:\\DATA\\SPRITES\\PLANE.TIM;1", "cdrom:\\DATA\\SPRITES\\LOADING.TIM;1", "cdrom:\\DATA\\FONTS\\FONT_2.FNT;1" }; + static void * LoadMenuDest[] = {(GsSprite*)&LoadMenuPlaneSpr, (GsSprite*)&LoadMenuTitleSpr, (TYPE_FONT*)&SmallFont }; @@ -387,8 +388,8 @@ void ISR_LoadMenuVBlank(void) LoadMenuPlaneSpr.w = PLANE_SIZE; LoadMenuPlaneSpr.h = PLANE_SIZE; - LoadMenuPlaneSpr.u = PLANE_U; - LoadMenuPlaneSpr.v = PLANE_V; + //LoadMenuPlaneSpr.u = PLANE_U; + //LoadMenuPlaneSpr.v = PLANE_V; GsSortSprite(&LoadMenuPlaneSpr); diff --git a/Source/Makefile b/Source/Makefile index 304df53..f045855 100644 --- a/Source/Makefile +++ b/Source/Makefile @@ -2,9 +2,9 @@ CC = psx-gcc DEFINE= -DFIXMATH_FAST_SIN -D_PAL_MODE_ DEFINE += -DPSXSDK_DEBUG DEFINE += -DNO_CDDA -#DEFINE += -DNO_INTRO +DEFINE += -DNO_INTRO LIBS= -lfixmath -CC_FLAGS = -Wall -Werror -c -Os +CC_FLAGS = -Wall -Werror -c -Os -Wfatal-errors LINKER = psx-gcc PROJECT = AIRPORT @@ -84,17 +84,18 @@ tiles: bmp2tim ../Sprites/Tileset2.bmp ../cdimg/DATA/SPRITES/TILESET2.TIM 16 -org=640,0 -mpink bmp2tim ../Sprites/MainMenu.bmp ../cdimg/DATA/SPRITES/MAINMENU.TIM 16 -org=768,384 -mpink bmp2tim ../Sprites/Loading.bmp ../cdimg/DATA/SPRITES/LOADING.TIM 4 -mpink -org=768,256 -clut=384,496 - bmp2tim ../Sprites/Plane.bmp ../cdimg/DATA/SPRITES/PLANE.TIM 16 -org=768,288 -mpink - bmp2tim ../Sprites/Buttons.bmp ../cdimg/DATA/SPRITES/BUTTONS.TIM 16 -org=784,288 -mpink - bmp2tim ../Sprites/GamePln.bmp ../cdimg/DATA/SPRITES/GAMEPLN.TIM 8 -mpink -org=800,304 -clut=384,497 + bmp2tim ../Sprites/Plane.bmp ../cdimg/DATA/SPRITES/PLANE.TIM 16 -org=536,240 -mpink + bmp2tim ../Sprites/Buttons.bmp ../cdimg/DATA/SPRITES/BUTTONS.TIM 16 -org=384,240 -mpink + bmp2tim ../Sprites/GamePln.bmp ../cdimg/DATA/SPRITES/GAMEPLN.TIM 8 -mpink -org=800,256 -clut=384,497 bmp2tim ../Sprites/GamePln_Blue.bmp ../cdimg/DATA/SPRITES/PLNBLUE.CLT 8 -mpink -clut=384,501 - bmp2tim ../Sprites/Bubble.bmp ../cdimg/DATA/SPRITES/BUBBLE.TIM 8 -org=848,288 -mpink -clut=384,498 + bmp2tim ../Sprites/Bubble.bmp ../cdimg/DATA/SPRITES/BUBBLE.TIM 8 -org=584,240 -mpink -clut=384,498 bmp2tim ../Sprites/Font_1_4bit.bmp ../cdimg/DATA/FONTS/FONT_1.FNT 4 -org=960,256 -mpink -clut=384,500 - bmp2tim ../Sprites/Font_2_4bit.bmp ../cdimg/DATA/FONTS/FONT_2.FNT 4 -org=768,304 -mpink -clut=384,499 - bmp2tim ../Sprites/Arrows.bmp ../cdimg/DATA/SPRITES/ARROWS.TIM 16 -org=812,304 -mpink + bmp2tim ../Sprites/Font_2_4bit.bmp ../cdimg/DATA/FONTS/FONT_2.FNT 4 -org=768,288 -mpink -clut=384,499 bmp2tim ../Sprites/GPL_4bit.bmp ../cdimg/DATA/SPRITES/GPL.TIM 4 -org=384,174 -mpink -clut=384,502 bmp2tim ../Sprites/OpSrc_8bit.bmp ../cdimg/DATA/SPRITES/OPENSRC.TIM 8 -org=464,0 -mpink -clut=384,503 - bmp2tim ../Sprites/Mouse.bmp ../cdimg/DATA/SPRITES/MOUSE.TIM 16 -org=828,304 -mpink + bmp2tim ../Sprites/Mouse.bmp ../cdimg/DATA/SPRITES/MOUSE.TIM 16 -org=596,240 -mpink + bmp2tim ../Sprites/DepArr.bmp ../cdimg/DATA/SPRITES/DEPARR.TIM 16 -org=552,240 -mpink + bmp2tim ../Sprites/PageUpDn.bmp ../cdimg/DATA/SPRITES/PAGEUPDN.TIM 16 -org=504,240 -mpink sounds: rm -f ../cdimg/DATA/SOUNDS/*.VAG diff --git a/Source/Menu.c b/Source/Menu.c index d83b92f..4d3abf7 100644 --- a/Source/Menu.c +++ b/Source/Menu.c @@ -19,13 +19,15 @@ typedef enum { PLAY_OPTIONS_LEVEL = 0, - ONE_TWO_PLAYERS_LEVEL + ONE_TWO_PLAYERS_LEVEL, + OPTIONS_LEVEL }MainMenuLevel; enum { MAIN_MENU_PLAY_OPTIONS_LEVEL_BUTTONS = 2, - MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS = 2 + MAIN_MENU_ONE_TWO_PLAYERS_LEVEL_BUTTONS = 2, + MAIN_MENU_OPTIONS_LEVEL_BUTTONS = 1 }; typedef enum @@ -260,10 +262,10 @@ void MainMenu(void) GfxSetGlobalLuminance(NORMAL_LUMINANCE); while(1) - { - while(GfxIsGPUBusy() == true); - + { MainMenuButtonHandler(); + + while(GfxIsGPUBusy() == true); switch(menuLevel) { diff --git a/Source/Sfx.c b/Source/Sfx.c index 1c1a8dc..f7a3ca2 100644 --- a/Source/Sfx.c +++ b/Source/Sfx.c @@ -21,11 +21,16 @@ * Local Variables * *************************************/ -static uint8_t voiceIndex = 0; +static uint8_t voiceIndex; +static uint16_t SfxGlobalVolumeReduction; + +#ifndef NO_CDDA +static uint16_t SfxCddaVolumeReduction; +#endif // NO_CDDA void SfxPlaySound(SsVag * sound) { - SsPlayVag(sound, sound->cur_voice, MAX_VOLUME, MAX_VOLUME); + SsPlayVag(sound, sound->cur_voice, MAX_VOLUME - SfxGlobalVolumeReduction, MAX_VOLUME - SfxGlobalVolumeReduction); } bool SfxUploadSound(char* file_path, SsVag * vag) @@ -56,7 +61,7 @@ bool SfxUploadSound(char* file_path, SsVag * vag) void SfxPlayTrack(MUSIC_TRACKS track) { #ifndef NO_CDDA - SsCdVol(0x7FFF,0x7FFF); + SsCdVol(0x7FFF - SfxCddaVolumeReduction,0x7FFF - SfxCddaVolumeReduction); SsEnableCd(); CdPlayTrack(track); dprintf("Track number %d playing...\n",track); diff --git a/Source/System.c b/Source/System.c index bd3c0c0..1c76c37 100644 --- a/Source/System.c +++ b/Source/System.c @@ -722,9 +722,21 @@ void SystemUserTimersHandler(void) void SystemTimerRestart(TYPE_TIMER* timer) { timer->time = timer->orig_time; - dprintf("Time set to %d seconds, timer 0x%08X\n", timer->time, timer); } +/* ********************************************************************* + * + * @name void SystemTimerRemove(TYPE_TIMER* timer) + * + * @author: Xavier Del Campo + * + * @brief: Resets timer parameters to default values so timer instance + * can be recycled. + * + * @remarks: + * + * *********************************************************************/ + void SystemTimerRemove(TYPE_TIMER* timer) { timer->time = 0; diff --git a/Sprites/Arrows.bmp b/Sprites/Arrows.bmp deleted file mode 100644 index a756a79306ee6e543354cf6ae55097e2de3ba7dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmZ?r-NwiO24+A~1BeBHm;;Cz865JZO)zzT5$E|9-P$|@{aafny?=kvn}Jsi;(Hd-~4=1!jTe zZ&kO;)$JN9aQ)@s{qi(UtRMN^@q5Sb&GLbDS-w5*KLyXrc{!JPicz+vVbD)gLP@?h zzm%JX*~2b8Rok0X#ji1xS<^Whf344wr|r1nKG+*l3Qa>-zl)(J*cy)?wtwKUVoeezt_v+RzpJLdG_>WDvI%U`lHpLCL!= zc?$jf{G&{gY+1bUaX8yk*zn(ezb&)Zf4upW`U+D&O-^RPKH~lhVPj|=8B53j7oVN? zZmEmOSnH#3 z_)I4_oFwlkZg+c#! z1DfqMAldlrmu%4U-ARH*KWP`Sbzc0QQJ@MBxJ;5M?)NNydD6vXnkjr;1c#?4kNotO zvkJ4HJRLc!FO1qe}4t2pAV1)+G8?be;G-UsOW8~wlr~2&qa2lUS{qgQaKac2M z({=oJd{n-e$d>I% z6}kavIcS@$6g(!Mu6~=?4srA$@{ZfF&Qb&^PRReG;gEUjn_-K4L)`Mx= m0I>iNGcrg3Ng&{vsB&-eD#pE&`I$kOZL$v^=VWcc zb(80?aZX;(!8Z8-fAZu4R{qJh-29U**>or8vGY&%W#0&-IVX#A&79o8t2%io< zJd-DH;L-)syC%D{r%m3ub9H=p!mI{~N34J>;n_X-`Dd`CoRvV^Gg5x%o|k}v2J!_FJJ@!nT!Sx delta 94 zcmdnSw@pyR$#)wE0~naGFfeEUSrR~O0K|+85QzqsjVg;+Cof=CBNDT0KE_(W2mo2L B7KZ=; diff --git a/Sprites/GamePln_24bit.bmp b/Sprites/GamePln_24bit.bmp index 759597aae457092470ba0db3630aa8d4415e468b..c2f3e56e2922aad90ea887a4e957b45123a9b035 100644 GIT binary patch delta 70 zcmdlcy-i5R$=8gN0SwH5qy`X60I>oPGlE$_22lPr9|%uA$0Ip8fJI{R21d4x$;~XA I(>McI08zUP9smFU delta 98 zcmdlcv`t#a$#)ws0~nYANev*D0Ad3mW(2bs7#e``ulYcDvLA=!8Rz}TK0W!yl{>C{_3-S);?0{UhbO1in$|++L9w)epbg56x=yee4iO6( z-8EDR1mr8va<44itTGLm3xif#aW<*RqGGIT=bvE2d1f0+wk($6T;{U4-}8Qdde^e1 z*Sqg|e!t)Ie$VrK@B3Vba>h{qoJ9RS>2Ylq|D^Hy7Jm@4W=*O$ldopYg8y%GXYq^1 z54WANa$>;REhuXml%G8!-+NLFJB9$|^$}Wsm7fkSY#OlMWsphvvnQx>p&#~uOb!Yk z<$@gp*3aQQ7oq$+$Ep9C0FBQzWZz-YXDgknqWtfkha*H|^ZfFBugE)&IOTue2S=F3 z=ELz5VL6T@B!XfHw{H;nvyl1BYH)wb!7 zjC$bnzY^K}a?yRn`nOWf{s}2#{A7xDEpC(Ne=S<=3d|SO@>v5yn{u0mvh+>HNxzh$ zA1|(=TwRjJZblvlM63K_nK*RBx}?y#4+4xf=;);c>0hSw8{gT7UusEI*-Kc81f8Bi zGMHr2vtP!5nn}7%mmj_&vL%t4$9yt7M?~dU2Q=K??WL?+s>rHFJ?_w{?g?FvyeoY2 z(^o{3ytqtQ_F^+kPvoE0kjZK6B@wVgRJX(Mn3*DGEw8o)%+L(xO(tbqq9x4wB4#x+ zH_TvtI{;RqgjG|-N---#m3JA4>6^|zc6UPwGhM_?*v#?eChc93E-uEgm5n8=WDzUo zvLZ*CblSfvSxoHS)>1-@7ZIZ+#J#JFB63E3bYRQ6DYAb;#EME9_Q+(l8?e^eZG(=Va`#r#uJzUUTnaZ`_-v@lmN{ZOAR)@# z2l)N9GvI+z_*~HehzWQUb>USS^w`G688oAmHczwz5^-pL&~)eKcKvw>zclZ`h8Y^V zqw%GzykGOn)&-&kn5YsNUml{9-!h;>eu1<)&3KJ+qg0W$kfq0{^a zGm2zo;;2IFfYmHy<&c&EGvVF|jdn)Z*yzZ|Y~)6TtN}8`4*BT{kzg1nDq}+)R*)nN z)qq4GguQA=OHCnmC1wQTLp z`t4;a_-o3MvK?W2waW39a>Q&$%wCjoyssQ#cF@TyQtUBkeE-M*4o1H4Q{RCTvj1Pg zPahq8m9027M+V0a*J;mLvt?O>HY&%T6r)u34Su~W3taSIMjOT{>2pud!IM{9EvT^2 zpz`?owfqFaHdB(?*+AKKD4# z{NBgts0_AfFX)#(d4_xRu5X5E<5dPoenl#bMF5Ua`Ml?y_dJtgGPq8ARu(pDzS*U; z5YzZnMc{>1R6f7YdAFFCkiiYwQRexl@xtJB02-(A1$pQF08`#zbZ8nn3Un(KD&7Dx zN#$4fFft_z-_vv%d_X(IobWVG44fu#(o}Yh1)j>j;utcR)%GzbI*pS6r(SUii%^cr z9`L}wF-dimO5!x|DztyKcKDV9H>-mQmd3mLv-$ ziiJ>(v^zdkIbx{a^_`9wgs<=L#3EB-xr!>!tWQ^T8Uyu3N(zfm;~Ta+f)Kx<-D6f2 z38EEv%fSlmY+pu{8z-P<6V8(L0PRZ9z>$kLfxTz(b!230I|`FrsUT-&MDTrR%se-pC{j;&TKpb12iuDz|* zSxCgab{6s!asi?A<%QnHG0L+I-y*~^AXnK_(RY@n97VIl=*aFzfgqbKk)4gFT=u>v zlB}6=H0wbR(~|WeoLFI+k`2I~bZx9!BR}7ZKTwSqt17eM$<{lvHI8f)5}_hl19p49 zLMWC^vusDPqOzEtVvVDiW<@>s_1E~NAFc_}?P~)N_j}@HbA41;)!^D#Jjvo2S=OZ) zyzoeI80D+-!la!rNrZ{foy`W_y_Fa5bM#ZtZgHTNET5HMLuxcSYunn>U$6dReIH+~X zvTiNn#e7plbbFSyoo=uI4IiA9;gowVCk|^}+^_-p z`fo7!;z>0;VRpH~u9YTMcX_4Zmij)*!!~PMl0VCdBU%p&>P(HZpzaB>%N5jRsvyEt zxRS29X=i=_Dviqh=%DctNt@s{~<=5@Np{S(1CWKUUO5Q8!SJ)^q)$v_7@VBLl zyVYFGBP?$YJnXU@4s4cl6M>`6U8ti(7jsI8M{Fik+k@lhJKb#{n^jY}n{V}X#am{`qdsomHmIFURg3A(s<|D9jhAGT z56DA%Co^Vpc%z~R6>%ud-Td$_kF-?|oC^%L!i+CPTxMo0}NOkkO1F-t8CUkPgY zVk+px-A-Ejzd(b5hS3*bru8v0tb$E;x6S4w4QM;Y7Z`{Deu)GTg2NFK z4h1%b1>?Xt8lU&h?)6bsSM{x5-PQAM^R{)ny1M$@b3eDgJ)`&L{q6f7zWeUGm+go6 z?|U!7clh6T-u?B<5w`EX`_I36_xc}?-@W_z?&G4bZ}0H(zl(0MblK3q)ZWv@pX)!B z|MGSF`0?Y14<9&kn(`(SsP_9`{RCfM{`uG6`^}e6)DPMCf_`N2MEz#|gZ!t@BwzVQ z3p}C=lzio%EbUJb6;dtt{ptsh#zk?F@4Bk<@Pbsi#Cf@PGgQ{mxxL{fYB-$P!S$(zQ<&s6@4C%;!J#TT%#i z)34f0t?|F7|Maj#KCmbG3>YJkeLf4QU!BimDL_Z($D+W$%kNSW?*~fcyAX_zdB!vm4BwN!?TF`m4s5P{HuP=_j-zQ|BZYT zne%U_Fj@1xQa|tIA>Y(8NcMMiLGHYgkjFXyme(y+pnk1>JsJ~8oezwHF>et+Pmlb~zo%?@Cz6q=I zZ__UDpUPXwH-!u;`_)~LJFgY5$94WK$E8)E{+w;kNS%MxuRidOv$`Pnze2uA^6+ny z7x_=+edL=q2B-TKU64DkRrbUl{w>q#RiJ(k=cPFw{#Czv!n==jLGJ%4`6kBCzg;rX ze<~j#-&8U1?~%p$pN@0qwX*)$&%fn6r3%zvqS`<1=U?@!KUC7%1-buD@=Zo7|90V^ z|5QFszUg7mw5L~nU64Dk)ohJh`Tx6*ACW2bE2VylI8(13iCg(s{pwY#e!bSn=i(j` za0ynR`A8p!o~tlN^{a0l{hTw4de3jQikzs?_z`}kM= z>S3Lt+<#WkDtj6Ks$V@U>F4-d@=b%K-xqkgAa`D?HWH8UZw{Px0rhL8X2m1?tA6z` zrzrP7A)iZK%)jbaKUF{D73AC984T`AU64Dkl^T!7`8OX9yMX$&I&aFQd;IHWCQcZiT)-=C9ncD1)C^ugVG#&$bELTza35ws2@J~ zt58Rj`pwwHf1a&Wu)ernh^26sYy3C_D==_iV@H2cN z_GjTKG4+G?b^Nc^Plwfik3}AHhyhkZ3hVsmqlWsyKP%!V&_DCD*UdlQKNFhO|8eHI zf|5i3vG)|0%9~2Og8vKj!;K60r}-ok5IMo{_>VP}e}8eE8aR#QC;O%qPAAXhzeEoF zu`Es{dHlCU=JJ1;ei*Wjf3q5Q!DfdH%(_zG@gK`7|D~n6#}m!@VfV_(g|qngkfT{7 zGW5{nzs;Y;|Hb;j&kFw4;d*Qa=7Gomb^O<5CueifU&4mU{f3#s9eMWChE@8MN}hf*ef&vOWG= zcCGwxqJNNob!=|z^naZHxw4bh43E>m&;M$2m;&Hm#Q$abk;tj-BmBdkq};O(X}(i` z_uv1_QhU12X%#TR!~bREnEy=8ub;Ij?XT3YMXBiT;9plxjM7tm@!^7X{T=-GX-lqx z)MTW7SjhsX>il0%PM)1d|8C@KMGo~h@vp0CdM#oo zmiWJ(d}z+$w?yjtbN+A9Z))=((eLCxUnd{wfPsrNU6|{4@}CQyHPWP?H%+p@Vb1@J zsS77)PGu8^Z%6p)1{ILO)xY~)*Gq*Q~veBxv}ck*m)PrBH{mDa*#;3e%9h% z{Z8?i2HPwA``5{55{8nK^|SeEr4jN|;lFg@_&8I@*D0l(&$JO{!RP-D zBL(|jyX5=6EakzVWPZo8;GdqW{}}98>hKauP4o9V~TH8TrTq+>PbB@@lJ zJ5sjkH-4C)O&bqR#bZLpU8vvoH|qC`r?-@9$`LH;S--H;nN*Iwiq{|NXF8|rv`#pM zr*%Qhr&JYhU4R5T7A#%j6yM7KZu(2<>v&GS`p=BE?Si`aJP}R2J9fg;wEiJEEA%&s z_w&D}{(1>o;n}JS{Ng84)C5o6d^>we&Mf^M;ywKDtlvydf)RLb?}9$@gA{eZlX#vV zHjy);zgv8r|NZsnp3j2kmM$0<-$79~Jh}Nc(oIgQ{z362{-2`X3`ej6p3Aymu6QR! zgYc;N7Ed9^qdyVP!}{JtT7dZ$Gq_8CBBSYWH9SkZV4e61MF~7jZkHxcC#R&}#4GJ3 zRXVQo5%ZJ<*Xvhpeesp>Oz(ng#OD-Q#rr(ZuUbmZp?;E_D`^_xBG_N7ze!|i@?G#u z>4NLU=M5u-|6F;_|IS?y`WGSXT(;yt|NRP*vnM|#<;wrgS-b`P%Fk{TmHa0&*yA_T z?a5C`Imu7>-!O}}qd(_=hb}1jPulq_GReQiIMiIYg7YJ0;*O07 z3G?~kx-KXw_mJ=B-!h%v1)-n+|6`r@(%JDYDEaRp->AreKOC9c1tsNv@>}`0e5Z6l z=vV(sgnP#Ox}fC0pM2xtkoMBxco&qEx00{^Lsd!e;rK`vp>x9m7kLG z+|SmL5&r#Ig#J=p=JH?af|CCu8qj-|DV-pT;@=w$5P}K!4r9k+U$L{^QoC$~gh^D>Lb;y%CknAJMGWzRG|3{_Ush zH^=4%hyJrhl_EBs@;lFEOZ@ZfW&9X9FdVTzi#q?71?za|zXIGHe`5NP&Rp^j{U=>b zc%M%8lf$Lz{2M=57AdUYN69hI{aM`3|0k&*g*eR13e*=EKP$*5tNaymr)^>rJp5Z1 znEvkPq+WRFFrBeqgl9TO0yZy77W$q3n`4JH>Vx0>$KoT^EM05NXi%DL<9_~e$t->j zT}{Yu%EHn)46K@=pZt6LXE})a;rxy+p#O(88W~hn4&%z=7xRDUWQBZ9r;hy z*T#{2ytNBD_*aYO#vmVGwq}JNJ4OBacgPykpX9H_Xp!Azbzo98aPohR{+uH9L}goi zqkgJA)NH5xUC_k8+A=pz$k)Zq^TVLTKdrcz{7M$5{DgjWPvbiIIBSzVUEt*3)|?(x z$k%%v!jHk6|J}$r%%Z}7=vT*1W7@^NPPXxS7o761YtD_GQljAt$$56?$T1 zamfFveyb@0&y5z%>DE78j~SvX+n~Bs>VgXYy5`)tgM1aBT|oUzdG*^4@1jb&W0Zrd zIrVe$L;>B(d10&m!P_}6FS%snc^4e=@4Q{dv_bOqj_d;H$3F_kER27qsgw7KwFKY5 zU)685Ly%-)r;_pfkTdh~j*(XV9k<9Y@#sHvBOk2j2T}R0XN^oG-y|77{C5#~hy-oI zR>7h3`Y$?a7jtr6K4xU&2EDq2oT8=XPj^1oub%~g zT+^v{gw8C*7wA8{^+>nsf_Ldx4YRsn@R_gVXzckc&~%*fQs;C1+67QpC*MQY#rn-v zk2afJ3GUKgl7ucOojM&~M1D@usS?kG%bd^kYZm|{Ra@@}oq3~vmC+qPUB4!N0r@#a zDxfL8#ra&nb^-L)$=B!YCiQKkrr?3e6C-+z&;Beq~AQ( z;OY7`mkr6!DKf#2a6Z?sU4RsLxViJpf+C;pzv!hvug90&)(fp8!k z2nWJ}a3CBA2f~4HARGt>!hvug90&)(fp8!k2nWJ}a3CBA2f~4HARGt>!hvug90&)( zfeRe4AAWi0&mV>U3m~c7;<^4)`S-v2$(Mir_4j`BCB8UPNp`DKq5s};JlB6y4)~S- zr*uK+--P_f@sp5qsDI}!2>n};{~&%2$*JhytqVf`hU7njp9(pr`giDp&`$^M;{Un+ zpDK6qe^(cTemWoixAwl1oF@LStU~Bl@-?P2tvs~Of3E*c$~*X9-36gvX)nd=y5PC~ zcPQ`Xe?=FB{u1q_@wr{_T>rb35Ar{&3qpU1aL@R77d+ShLFH5UAL)Y7j}qAb|L&o^ zG^ei%p6mY<ZOW{ZEp}*w3A~Xm|ihyFVGtNDMf|Eiq)uj_&p{D*!I`Rn+9uKy+F>$+er|DoSc{tEt| z>%T|&iY}PNf9P)|e=h&e^}kj5+%6dBKlJyJKa2n8`ahz4Ru_!$ANpAZ`q0+}Z`1!- zsqztuuGgO{e~|u?`ADI!i(CC4A*bZLj<;rUrGA?K+u#27>#x5q z6=Ey>6p6h$T#vWXuTstYKmF-XCG#g( z{<8%2LfoR?$OkIe$UkEPiNR?hZqcu*OfVlc%)CAh|a zCIa#H+J+c|Bm6Tvzy1+&%t>e_{CxgfBiMw#AkQM_XGA~!$DX!#@Lwltx_$}<`M>zZ zFO+}8JeC5!lv&wI6UP4b>cTYg2xUjf;~6J++&(2uPOQ|Rrxpa z$rAYI2LTT;pA)dBa;MrnqjCMXH8zz;k=X0|56R~qr>MNc@FWG*4~mkrgNMj#-SeN? zNIrg$jX{UtSNmUda>F6)J$(Lird5aU|KGCz^1mJB7}t-KshQ7wlV<_PfA_oJ=>+D& zE)@cgH^;5R;Pr>X;C|t__q5ckv zDyAVpP{kIo7(wL{)Xr+#SQmcWlgjKg`*!hq9^C=PN0%7h^Af>Zv-^(QWwD$|*e zk916D(gnCSS?%<2mVU}s{*8Pl!q+xVbj`Kf+d ziv217MiejMA#p-%^)kBbvjFpRe`e`VR#t6?z8%ihPuUb~K3iak zaGH^CA7N%SKXyHdH0eL3$ZRPEkTmQ0-=VyspO#Wy(gHjMLKs*%G{9M~gb~|Y@WR&X z8xby7TjuK5l@U{_0mHW)$oR*<+{i!ouQFe{AkmquY=&hz>3%*rePi0vO<4uIA8$wMm{0O z9v$${-)@L)oBn+*LV-@3pISMi9a=s%<=xlw)yNh8ny ziOLiGbe{6q0*JAhz2qMb+n|vT=M&m(M8|RAI{mrT7$FG++xE)84Kg@|f3<$|7QP*l zPo0>CvsM}gIAu?M1ekzni7nIhCln>OJ3NFcwg3Wr7UUuiuUe$s^g{-0#2(tP$ENlI zb=XVb*#elrTA2AbL~Mf^a2%KLcGLGX=g>C{5+v&3{_kHm9pRkP3K(DQKi0=xXgkFu z&wNvxlm>?!!335@y8x${)KdLM5wob+2t7ak@sIfmgqW~Z=Ht`_%Ap@(Kq>YNNVUb} zpBVRb0hXGMeX<~pDw(NWfY%>;^SPINO@aEMr$jyow~A=7_y=L~j~H{XSr;J2%6g-v zait1S@*l4oTL6dk=RcQPs@4{V7&4!bk3)qYCSwHqrY?BN^xem6zAFBsHAp-8FOmPn z7hkZ6uJqr`!A&U)Cg&T=ggpb2&l;g3#=Ld`X4>MH1&39D662pw{?haRdgtjU;ZOF; zKjBAR7{h!k=&{MgE*{j|rwA;g9$8n+Q zN6f8qqbpCT{{)`=^HHzltS#B-O`bF2!`gV!Fu z`J)%`iGUHDT`j=5KEz<7jeOKtd>F6`aEWvMyQZ1{cNC24 zhxJP~Is2)SulBMW*kh1;J-b!>BJbOO{{g|~Y7^_AmRmBu=b@6%HynM>v9}#e+f#q5 zDwL-6lI!O~q&@!;JVNvJF3q|l{ytO5SN@;)wo|v|5iGrke0}U&P){n(jyRC;|LHyR z)tpE055drh?Qt(ZYV}iMZf-{AjkavoVf&Vgvv$CWGuPjn#opJ-+*6%K?0 z;XpVL4uk`ba3J1)9#N(cxyXS>^Uv=;=YEktOP3A(OYJ>f{JH*9`S-v234Tige=+*A zx`1jweE5KGKKbSA_C)>v{cr#Dzh8g#UmyMfUr*HkME~hC$mf^w|CBB;@?pOE|CBDE zevr>E{A6Qv1h&p$@8E5@74vm|8)EP`}YjC?E)%S;FGw*{|;S{ zJ8$GC&wrG_%CXP0s6u|_`M*yWhO-UU>iJm*V?PX4d#g53E-@+sIoEqeRqziKAo5=6rzf=njVE z;C(u03jeKLkUQT&emDQ6T2Pgz3ple5w)5;1{#&~s_rHUDv(eALUDDkJRDMdef5Jrm zJzbDH-%b7?|D{?`VW|sv*2%VK+C=_6U6A|VO}-h}%D-LM)CE-T2irMwI{&3E$ekY~ ze+vJlT2QTa0Y^MYH_e&Of2j*{{|Cu8>-zY&%TK$2%AGv7PFuvkc0um^6!ItXU#bO_ zbKgX@fAS*!wF`3pr;u-^jqq=aRJs8ATdDTX2mcqez(nAarSSdF{1#{!I9>>>KsM|< zD3-#HHUa+^w1Am5k$gjUitV}cECK!Z^X#8V^7)Ij)^$Pt@UdD91|*-0AfCm)l~w)s zKhOO$N&f%*`@i68T^E@D)5$lZX7O(eLTd8-@l)-YspQ*lPDHSx3(WsP+VyfJpX1Yu zYbBt5Kh>U@NN(KgAPUMBTR7&Q1(ag<1T2$Y0R~v-tOrZ?!-$ScU2Qd&pnW1#|gVhY#aH z+w;rE`EMnEZWoO6-%7sLCHK=gGLipQ^5=HJEdJHi)7WXUXW9t=BjnHOf)V~l$k!Tq zd`{*};eUkuSzR#BzdG3zCzkdd_VGW9{P8a6<9`4HA~)v+n@p~;>>KmV)A@9P3T|EtN@I-WY; z!T)OV`?{c&e|2ekd}@0>!NdQR4FmfJCLunPMkmGe+TkC zT~Oy=9k?Yk%=P<433%*f(&Ju2TBSw%p7gUt1{y~4{UVcixR)Gm_+XYYbU#oelUn$z^ zv%slb^=sm{#7*RH-UUzeUyI(PUn#o13p$jmel_8;xSRY9yWolbYoWXKD@C_-!Ju;0 zuZAp*r;xu%7d+8_E$$TkO3`IqFj2YcS97Mv)5*WF3!dn|7IeCPrD$mvEK;ue)u<`) zQt~hEf+zZ~MO><1DVp8|7bsW#YFc-E8Tl7 z;EDcgv2M|?6m@sOjmlNOnt2-EPX5F$c%uJWpxgB;MNM6>iE`Di#vaC7kw4f4PxN1l zvXy?N=(GzqRId8fWQ(^YzoQGD=)V;L!M6I9qQfrOT)FBu!yiGuvkRW+zZGJC^7ATK z7d*oGTtDDXzE@M{>>Sf@`#z$F`fu<*PCwb8Z0vVNrJ^nLSIoKK)YJXHz@oTCI1mnm z1K~h85DtU`;XpVL4uk{YKsXQ%gahF~I1mnm1K~h85DtU`;XpVL4uk{YKsXQ%gahF~ eI1mnm1K~h85DtU`;XpVL4uk{YKsfM59QZ#z%~MeT diff --git a/Sprites/Tileset2.bmp b/Sprites/Tileset2.bmp index 5cf65ef369774063a22f68a8ad6edc866e8ecbf8..a36c04aee3650f5a37ab8de9e06bd459301d5b83 100644 GIT binary patch literal 24630 zcmeI&J#rI45Cvdy0b-8efY>P%xl&@6Z{f@t*We5Ua0zm80U{2uJoHLkT|1iIp5L9N zMkOsHX}$aUd$Me+_;h}JI$bZ1*goL)irYur-kjcHi_6pL^ye*a*ZbHkr=`*Lc7}id zHabPq!yY$3lYhHjmSwqIE_|dZSH*)f?fai!UVeXn`0;}4QSxhf?T-o$(SpbWU;B^W zLMR{lkKDpa{;vO+EyU!t|A*^^{-d=J$}?^F`ltUmE!gra|MU4gS_?6GMz#I-ZNVcS z`eQDRh9dU;UNGb(q{qL13x4^SzYMrb3!Cy1&+p%-g;aUlU&id#f>U0CrTVvPAy3}p zFT*x%AxT~$<@wibp+w&AFC$lPAwyoml=zpoP%fY9FN0TUAzNNzl>6tkP)k0~|8-d) zfC{o(Fywh~3fo(py_Ubfg}U-3{_-MBYQd1_0eAGbTWBF)?(c75Q+^Qtu!VN=wfyZC zobp5Y>lTooP%XCj@R^@K<86cjn_K%W0>{Bc{&rsB^I78*_QCZR;!u45mye){R(IR( z#V_)(!W!e~>5R39h|V~&_V=8^b8u$E(IEf%*H>JzXw*Ure=RRBR1XdZPaDz2a~_LRf2V!2yo zk==sr-&39r+MkaYqr7GnPW<)IYf3tg-Q+h4vsw%EOe(0>L`T{~hJQvWYKrx`ohRc1vCC(gO4ED^DoDKlf(~%+Jqc@Ix@wJlwx?3&@ZE zw#_N@XO&fEk?A&vO2y}q8Jk;vIL6;Y^O4T-93<6079K5B z%%7UdC`IFk;lmb;Lph&HdI|X_?Gqj|`XkvOe)(E0B*`5vU3*J&y~Y0eF4pDpp71!)D*q~m|8Dua zjSd`JlZB}yxz_ds*85{EN8_TdydFe{$GIfGC$q6nANg<)VKlONo|5CVlfN6@lg-|z zzkE1|ozVGgANh*m_m!_WNPqdl@Z-oA4zjO&M))!1GX@z)-Wh&;dFLQw%E!W!9b105 zH-7loAowYK#PDRt_E_P=7LZ>*c$78S4;ua`$TQ~@m;zH^3QU11Fa@T-6qo{2UiHk2w!a$uqZPQJm<{3`_$P1aN!I*^cG7G&V(-E^wfm{E7T41s80zZjm_9Apf5} ze+J%%$KcODL3rc{Rf$xc%7KXvG{^_=H}bF7f{7cgsS*bc$=`&3r6Acjoenw>B!4UZ zm4d-d*Kl{h_{Z<6*%80D(|B*+@&3nu1v>I3|7;%q z{0IB8Vo?gjf5(n%2s^Njf57j@6)6z^yp^gu9GK4kKm78*yD8@%#oQE#|BfBk5O!c9 z|G$9$)&G~KK>YJos_t-L3jbdbUpiTo0`cFm;~K&a4Dw%sz1lWC1>&E#Qgw#|-TYT6 zKe{k61>(PB$2Ei<=-~ed@X+-sDG>j>m8v@&ILm(s?r^8U6o~(h9oGMpApUtPRd+a0(PB$2EiuK!ddJ;3x1K` z-ZEXC?!aIQX1)0l`O|k+6UH6rNP)-7=vTM5OTn9Q*AoAyKfo8ki zfnW+m{_Q&@0qY!Sq(J1avt2W9iIwIX8Cz z*xPY)osuU9K&{C(@mR&P^hegHJ}Vqx@|k~Q$sYSt+eQt&KF zSEy~1pYZQE?URBA`KA_vy|64O1uH0e;+zrkbN-p7dsA>ozDq^nr%J&Sah<3+PJWGl zX6gDA1j%=i%)d7(1rv#S%2a2`Z}ZPAU6X=SmkP$^)vHm_HZKh8h1)K0;4^8MC*{QGdF;BCpD#Xqx@r(hBJe$x^DeG;W$+Y}f- z{5ExNZNEQh4};bK2!e$7|FzCGk3BpE3H-QP8{5%t6LyR$4uQ7BUemuV7;hqM5&urU zv1)Z3q&ELR3oO~p&Ocg;;EgoKWe4v9ot^^me|yTN^Uvh_6LlP<2>+e}@E@N%NGZDE zL%mN833m1ri2qmOzec`ow|_wVAt7=8Z7T48IOnMjE|rT@GXy)EE#m(*_>Yhu#OX%< zSz)mbf*tQB{-4hOS@M~yA}6=-&#DgVqU^p#@&8=@N62T!5^^r)pOu`d6WM*I;{S>K z&my0BbAB%4pYPtNO<4P?EAJ@8|FigCK|a%E2wlKG-?3c->2@Ex+Ce^si2tYXznXk7 zX7DfN|B&RQgYoGPzhvlo%|%BFZ1URycyj@^1^&k|#o|ix4Spvof)n73^z>DJ;yjIved?_Kn$iJn)y78z+?K*3P z_}`8HTgV4O4gS#~r>Mq%gGs)G39Y3_{y6_N*}f3*zYqU6l5dX7i(OM#tCw*A9*W!N%{_iCpoW%J@e;~yCC%i>YZFqxxO9AG`agcwO zE&gxEo&{ik`FAz>H`XE`wfh*`ZM@r8Ym+mawLa~3o1w-(CjW^ZXgT%%zjk-y-^KGr zsJ_tw?8wFBgOIcQLn?cPmKtxhb{m!RkEsa!ugbm~u>j1#;#KeC!1(?;(s8QeJ=^e{ z6>t5Se+>T$cRInPU?l_StJGsX2h1itK6L$6${0jNy^~ad_h5tta@$ z5Q6=y5?4V!A5Y!LI@jD*`<@QO_t!CwkX(#R-smlman_=Uc=WO3SGdy&IxzEj-M$g7 zo)xeD`#8|v-$C+yxYN$XI6Q6fc9mc+lo*~fpSR>ULd!n;C?z8f*;fjxUI2!I=~=-bK7nPKEb$n%KfcIA1`o=70YMw zi7;FuAq;4VdxxKu!&n$U-t=i09JS*lTw zbD#lIk*-D~rn=IBhIm{e*Xh{vbK0_`fm*uc1FeevO}dQxGSAH~pu`>EM5L3SL8hocuOF*Qekt`TOYaAg7!E z6)AWP{b$LK@N-QH`pDlwe>XXU{Lf0kYv}JIKhDp(6pWC6ul_-Drtm+Kg4fVLLjGBP z=B8kr{JZo|A!j20XH)PR`p3!dpT5_E zx#VA|e>ypf_^+klHT2IVf1ICq3RaMRjs8XCEajh5@EZD8kUxu`b_&*!f0=%;y5fkp zk?S^hDg0)L{qnH?3ipatTmTP#|JgPI7#|+-{=e2O`M%&a^sgh|J}1aN6>(h(*6|PW zfA{A<*w?xgtm7xqKZ}2VEdVpGp?@y_p#A$V5AbghSd@Yl{4+V=e_aYz@KeRp`uu;F{&D_u@@xFhO~EYw zi_RzH^C|j|e@8Hj|Dt|uit%h;&OZvLJuhzIzo9=-zC!;9|1kN}r%zUZc|P*{ACS*S zj2)q9od2TpjC!LUPr*3tY_)(;~ys5(ctgnfBdyzg#V)R z4ccp$Mp7`se^GxRJBJ zrXbFL(fJ6{9ev^{i1T06-zJ}dIV2yQt(z78Tv{vazF_7u{k)b&-KW3Je;@gXz+b;S z_TJnwiE zi{NWP!hbCV0Fw0=op%n4g-zlK#e{h`wDXE=A=a4pY_#Mlz_iSNQU6@>nH)xlYlg>b zr>MdI#rj=aq^Ri!KdZ@4;4yw0-wPD^2U<)K_<{bS^9>sLlFj200NBnpZo%SB_CJ1k z@C@-f*AM=S`qz=qz%co>+WQ+tMgDKp@7f|ouK!B%8KlN*L4$vg2Dbrc(fK%#=$UZt zDPX}yy~o4@a`r|+{nwDsz#NkAolV=J|E`~>^%**fS@YPfS-;iAH#63Vy{=say^Kd+ zT}*+gYI6l#?VmJ9(e50-nxw#242m-KN^#sr%uf` z?{BlYww!#s>ODJ(qJ9suExf&hr>=IB!vj$R2CTQZ1T;c_J{+>SJ+hFq{Tp-E^jkX< z&gADm-dRDulg249RXJKk+b5>L+`}y(=`!;3B{cRicxehbn50Gy%k~-u<|0`S*LhF0 zMEcamChcwg&i}pSa|&2+;|a$-PYP^79-qS&8`vNpZ+ooI;XHW#WuJs8cOWQF{xV|Cb@3_XTTjFpmy)t~&{`cPrJ!&&{#KYtfs`)dzIVrk8q4W3!#_y%FZ z99L`ib)mLZ*E+i}Pl5H!=k#uV_bCNbp96ChKR~Yc-3vdX|37<8OnP7OdF-yNev(I0$ehapuwUcKx;xXh_&- zpYkr;zJ!|oMhaHwU!4Nh?7TUL_ZHZKQ}Ex8P2yOMq9h2s3tKIL_1DO^_SO0^|J;`V z*1Q|}OcA!=Fa=v-!}_geik?C~FQKOY0`ghLtQ0(jd|rDa1v`_UFTwfeU3kP2I0YAz z&o+*vfIZ*&IiJ_db&`TdV8i;YhGyFcyrMmB37hCYn*#L5USJ7!Ot$7Jr%%`KDbN-S zA{R*klRtPn4VMEOI#5f2$lq|YBx#WYoC1-*$Yf2sxdS49^9_`k~5M2)$fQJ`ls-(6ufE*8stppe?YvWPQt>0iXZQt-qSoFeA}{w)Q@CsalJ z?9jiIf2AO@YdiGmAm=jvBNTP(zkvUU{v8;2PYvDVT+DxsqCx$a@n6&bp49EI>OpdD z;h!m*qW@z4S^o|Uyt4-5r_J!lRr~Yb;2#0wTix2x_yjY_aSHslzy|-dTPI5TPEG$i zv$wJ3eqRdK z@z44}b(?&?I-UaY|6Kl=9H#ngjd^N6`9b>%{%iWLOo8}+BL6jV&XUjl+bNjKe?k9;y*$TQ+>9srC=8SXZ5d6f%tz4|7XcLOFs9{Q!vi|i2ijc5dZu0KSB;ueYWNl zjPO58|B4id|DE}tMb26Bxj!`Y@xMa<+!ToaJ^5cj4pSYk!5fbGPt=Vcd*r{Nv|9hH z6qxwi0eEu(2|ugJIZJ-~=j}h!|26+t>K{*miGOqaZePChb0s)Boo9-M)Mvl%sfY%UOOP+uYkk zKkSOH!u8({fCSu2QJfh(a~8>YPzs9r1>p`3Tujjv^4YhG^|xOl^VNxb-mGow3nE9NNw-UC9qNU{X1})OhY)5L5&zthNdLl)akgaX?~%6`KO10)qj=WI-mUjZOQw0YH)k)&Kwi delta 21 ccmX>gaX?~%6`KL00)qj=WI-mUjZOQw0YP#F<^TWy diff --git a/cdimg/DATA/LEVELS/LEVEL1.LVL b/cdimg/DATA/LEVELS/LEVEL1.LVL index bb135ff12d676c07e86744403f9915628bf93317..cae06832a951384e567b8890ec5e9088daf57425 100644 GIT binary patch literal 192 zcmZ<^aprI-P0Gp4Q*g{ID#$M?VSob(iT?xvTrnO7GebKA2*Ut311AF)5DP*D`k-_d Wm}X@VU|<150R}b(9yG|rfC>SVJS$lM delta 61 zcmX@W*uXf!%S;3a*cccXB)cWMffNHjFCVWAke&20iP5QUu_I3Xp+?ErD-N&_5_D1r*Out?f&AjCs?VroPhXO;7t2 delta 101 zcmbOtH$^~DfPsO535a<(7#IYY6&M{R3U*KCVXT|{3y5DZ)lE+0@|mo}Vl?>(OT*+X ztX-4Wu{BJd$KEixkE3RC73ZYMb!=Rd+qkkOe_(2u9Kh2sIe|B3vH>5<1!vjHOygTZEbrrC^>H!yPzQp~b>7jqgT03m8Qx&QzG diff --git a/cdimg/DATA/SPRITES/MOUSE.TIM b/cdimg/DATA/SPRITES/MOUSE.TIM index 6ef61caf4db66513afa0e521bce422275ed8e285..d04f139eb71224ada7b1185914a53c0b0efc615e 100644 GIT binary patch delta 24 ccmbQjIE7I_fPsO535a`uIE3i~!$g4=04&V}L;wH) delta 24 ccmbQjIE7I_fPsO535a`u*oN7FaiTyA04Q$*ZU6uP diff --git a/cdimg/DATA/SPRITES/PLANE.TIM b/cdimg/DATA/SPRITES/PLANE.TIM index 7cf3e00275513f5760973274cf9f32abee0b1280..441ed2f3c16f169915855cdea724113ddcf15cf9 100644 GIT binary patch delta 25 dcmbQjGKEDzfPsO535a=sgap$EhK&L&OaLiU12O;r delta 25 ccmbQjGKEDzfPsO535a<>1hWF;MgbNk03*KwOaK4? diff --git a/cdimg/DATA/SPRITES/TILESET1.TIM b/cdimg/DATA/SPRITES/TILESET1.TIM index 6efc9d1fc5b8767ad71f7116ac601ec067457c38..63b8f196a8e955b2e7cc001e6db9df467b12456f 100644 GIT binary patch delta 4456 zcmaJ^ZBSI_75117u4ID?A?t$6x{HX*hj=lmXjH^V6i{SYuSgJZjUZ|hGz2xN5qHM) zPsizmyh+YXKOED})af{5QKq%AshZd{Iz}aC+98uMLNgAv853-zHmT7*=e_%ZDd{j? z-+RvUJm;MIew}?aVt@72gom8t#*G_~e~tkf7asj4}*t=q7xg#{SSz%ZGo zK1LJyuLtRw=*xuhcb9PZ5H)oh>7ZnQvPG2@xCAd+>QsITf1>?qLY|bsJMN2&izr{Y z7o2s7;Rk2EU^1eDI@*M^yG!ma*;l-;IPrhfZ&TINCMs{a4+3i-5QzrN=J2m+t&YYg zj*{IbOzt~K5+yZCs8KT?DMrLv!R3kK8W~Nnz;Bh1SJJKpBSSOVi>j3I$Q&>#1y?ML znnVmfQ$m?ytJIZ9QlJ0kaWG23Sge)#u_Lror`R{m77tS-q{SfRMH4GQVzEjbT-r-p zqh&dCF%l?WIP-J?R`s(~*8ExoDwaT#xox)!mlV89y;@lbchV=0J^Q>I_5U7ln zI2q|SC5b?1feL0%70xV?C}PC3Njz0YI@0&I+Y)nCM)-%28=xlG)T=*`n5VVK)y-g|VCnu6^qQqst#Rt(d z1bedbE(==~v{$%o<77v8mzi3mtHQ1g?0t{w_#bB|ncpd)bpFw4R0vy(>ML^UH|4Di zt6+i666z{*S7M0WHR7KSl(08W4x#!J2_o`oX zDPLPU0CS`IZgyQJCl{T^;zQC7zBHfGURj#L`_4kX{1&CLah}S#?|8zD7$PAt?5eBM z?i?eA8vsMcXb-y8%VC?u!F->`lpu~%4yX2W6yTg8%e<7gougbx3)37+(gQ~zD(Q(y zxFDB;^xon-GZ2uJQxM*o=N11+wuyE%> zIDIVP95}Hqa4xk615&n6L^DNHuZhkN5aH1;@W7XyBa1>TP!*z~+H2iosRrP5YSrfY zKrG!HQBI2=JDI%YL+n0$0_`wlQAD)^s&sYvSh|JK#deaTy}mG}8_>G4cU-a-bjDB( zaOq#D9+?UW<<(R6Tn>1rCqhDx-C? z_HV=i-#T6UTN>GS6@EN+cN;d?izTdvZOX!{U&A(r1!1r`M8Wu|+9J$Uq0M#5*P5x3 zn_9$Q$mTUNIjd z3T=G~{uJ$R-zHoin_rO5QIF6mNhw(>^z23;lQnW%ryxCS-XNW$9<8^K87lPL79f)} zvg3I{y4n1abdGw|D#(S~_u8J@B@@v3BA1OIFFc}orK-@*4&`e}QK20jBH(267U}f# z2<@CC^`Hv9umiAU6?%S$z#MFTMLIVDgtp zUBK15(OXR88VjU*i zPEjgvJwz*y7;cS6gZL|I)j-`_9x)ySC?veYM#A(i${H!xoFV zTFkot!^HfXj~%8iE;(%Vcd!hLdjcQtp`9|C$P0R~)I_A)_`6tikFr%psa$q6?i&z` z?!@x>^HbzRK{LgaA;(utpkFMy@5&WWy5uumZ2r-xKC$QyD_c-*L1l?8Z#3$RSacKR z6_iI%4~wl>UVR+yCG3d-{^?uPbwAn+bY2HaXKNq2fV5~yzvq+rDA!wx(@V}-i#w2q z!e2XyeiF910<|kM`-N`fWlXBKTrT4I$R2S5Rts{Vv?u{hmgcFmKw1hF&c$NcFRZ0h zArL2j{tg9_jLF92A&)xnL?FRaFFl^BHsn5K5%yPLsxBU<2YL8Ulp7~3%Na%JtV&Bn z*k47pLYTnB?#UXI2CXmCiBfRlpT+-+`}vXK(q0YlB~)*t1=U$vUYqV zV+B2K^+5xtaYTQ;oIG)QwVQu;j^=RlAvAlPRsKXpzL4|;EAaIY)W-jMpL{XaaE*)0 zddWxxZ3$&3g8EF%FPLTg&l<`ZO*(qf>bC8wC6qggP$$>@3YshT`pw!zbrR_42k5)? zoVJAW6C7hB%- z>&_j6n9e>8VBFpK+{#$-yYzeYbeSR9Td?|E4z)`0$#&6TXAOm{3^{?{a0}qXzL?vMQEd$ z;!5SCgJ^jBhj1-w|135)VPEuIC$AcAP3Ar=dJT7>b{DX@1y`iyZo`+>?$4eS_spkh zuXqBg|2mFKji1J5J1#?5Gx@?GwnYCIxaPELDx2GI`@!Yn3pd1d1BZonO<}VG*WH1u zX#6jHDXuR!i)&#gBAgn*C+Hu+6{fKdvAF{`8?X-UyCq-X7OpMrn#AVw)T!^cOJD7Z h8gXlVOQEXdh70w@walO=Y)68`{C(SzJ8plbmvm{NrrleWswV}hlv86fe}r&9H)tVjp}6KEKzViH0tFOd+UyydZ+??3nW-fKHs z-dY75 zTdC`_mHX;?sr^f3=A+KsUefR7ox)107#0tgag`mkhu1V;VT;Tjt*MmAC# zsr#?9@xKzDaihaq?C`w~Hs^1B_ruF!L@>k_Q;-10aFzgm1#fym)(SvfE3jt_Ay$`G zmp02y!6YC?f3Vl0jNH~nG0ufvHp~zZfhkWHyS$*AWeJW1)_HCfdb!SrArPLXnDf2y z)g^=Y?LEx^9?XZA_eeSfMpANZm{`1`pFRKOPF4*soFN`zy%>jxwE~cCt=w8MljYv6 z(0rKR-&F-DSHTZUfZqimQHHty@ByDEV2A|p{nuUKh0JFIqi7~0r0LOWTXnfFK6zt~ z+ZGgr1_}GlexfJQ{2ct}ZW7M!sCrqblbIjdNNtuk%Sa2Hq_A=>*BhxeqJq|N!=2IN z(TBR2*K(hv2o)h-=lV?Apu!97=Y(@WuG^*-r*|5i4INPl&mUrTU?_ovk)JCvyWA&< zaC`n-XqGrWY&gazm-}!CPhAP0J>YT#7lDy92v_E~Zo53csc(I>EqZSp%>=Ug(~lO8 zh%b|5qD;=CDq6W)U;_jYrEHxfnmY|mCh1YtmB{HQd^ClsJA~ z<#1~Sgn1b+_vupm+=NG2&QN_J<&~z9u8;IHAZ=Ep^k$H}uKZ#4U;}lbk3wyhS%jZD z=3V;8$#z;jxP5P&vrWmG3C&N!mm?qvEI{aUG_MgnNuE5D^P?u`Xa|sj1dO=WrO4?g zsU5EkCod!~ARzAWA=&Z-tS+tF_B0cB+oTdcPQiE7$xH5aIW|AVvlq(h<536 z`0K~r<%;yL6>xZZu&5D=7XoLmu?%ue5igYvLQ7go!5Rw18*?~BQN1+B(bgkEzFF7? zC56`pz9EVaY?HbadYZ7h>A}WN9`j(Eh$czWLBw@iixqjQc$@N~a!-f`udz@?O58AE zJd$n9xG3UAV_l%{rt|c$*qm<8*?wOKBuFxq*q`>^4~0&PxZNSz>n zXb}mMQc1zkc#=rJIIq?COxBdyJNgM|R}OA|eubhOQZP8(m@^%d)K?NYVi60-3ra*l z)SD%8wYhL8TV$M2A18U(cX>HMB*pBJ*!6|wFJ4fgXqCOfuZ~-mwwFFaderC(67=r^ ztPNxhhZMEXUUGZH=<|xiIps6~8~dGTWNo}zJEfc&BmezP^&^4%BsdAg;mJb=M4-3& zSfohg(lMCnl$r2;LfTsw*euc$hh{SZdx^s?a@*|+gmUSA1Q>e>nP7n|l6OVyj6iit zc{Qy2JNsHy5T)(bzx-!x&@acoq4+mQNI_5>h8wn{hxJ&;;{i!QS(0?jB2$#swCmO# zkc3*Hfgy?C2_T1`Q$b0l^~&L$r0PJ6vUQ9RrLP|L3KrDnZ7rb08zyUlHclELB=y@p zQ9Tq-=i%PEv1Ardpl;Ol>!Xp!NEtRmE|w(Zfs~==9@4|HCtB1iHm0h&C!HN-ZOyto zZO|pP3hHuVM^!@S)5!rA)~cbv80F#(rC#r}_$H`df}8yVYJ0mkq6gz6Evgnb+A?{1 zC2p-tmK^I6P4#+p=_}bt2=B?dCzArNJwv?9o7PBewhPJJGYYS~D($*pVd0MQZO>|+V)kjX#h9@!`eR(dfff^s=SNS>}N0mQZtLr=79+~t(B%%5{!^FaoSYuGYML!u+wsyKrq z&g}#(3oD<&c9=j6Swh@uF6&c@Oe7=!?0mP8Yk#u*U@jMMbJah;!s)gUQMkmKmq7meXyX*nOqRG55Ydg0LF2b~FkS=t(m z=$XUEjQ7?T%}ClB>d^L)Dc5o93pf4;M&@9LJ~c7*4(Tm~KeyyHyei2az zhzglb9&_GrS0mbijgM4(ifOT3?#7 zXktLyMZ01AhVGuKzH3Ej=-2kKIl7(mjnC42!KwXDeTz=MrtRqkGRXMGSvWei->Wma z|HM^oov701RTw+9KdKk#$A6i^TPiC8pERq diff --git a/cdimg/DATA/SPRITES/TILESET2.TIM b/cdimg/DATA/SPRITES/TILESET2.TIM index 371337101f40906dddae7e86e82ed734ae399f0d..1be72e91e8a12e886957b5c8da152ead740c2eab 100644 GIT binary patch literal 16404 zcmeI2J#r#35Jsmq-e4n>kP=W%@Ck6$-hwMQbq)t`%(a~P3LFEgX&UuNYPB@_A(2%E z;SuxodtwB#{coD4Kj!=I`!tFz%hJj%q zZs25oiExS!X?XPM>0fWqp5nl;f4)L{RywlNZPzLcJLF#0(7HRgrxUro@8ZBq@9Mxy zxAfR+>Of5I;y_IA;y_Jr>Of6z>L5A2i35{<{SVD$lpo{xD%Zj-T~6|kRCRDSkMu|- zd!XYu0&j~PJmwwqeOBowRUAChF~!zkIp;lI4Y#z&fs_9AX7hQD+%IzArMnK~TpBqa zk>x;0@8m#CCo(>_b4vRtG$zS`lHS;Xnx5()#1GGnI!H`!<~12Uthy zZFD^_>6dltnd~@uP135Hy$($J=WBkxmSO9pUeJL_KYT!gqck%8KI|Z+wwr?+JJ9E4 zhg0>c$-raZc)A|1N93>TKr^u2Y&T%wyg%=Iv%{Vdav}fc@N;P4AjS{u#J^kZR+sg5 zqt6|TD4%y?|9<&?A^tWF!Ul-l<%h>{2X)z9{`wAle$F1^mmSn+5AoM_zzw+U62I@D z4ZFl&(*f~^*kkoY&#k9ptm8&VQ~0%MQJI{IY{(?795l zLAw^_?DhG52g}))@W&kZ>}~k1gEID|{2>Qnc8&kChV_R&|A)>IyL#|1U+@lxdl}%# zZK>-YtpWU=u7&Fnb}v$s2w?6GA7%XKeF=NX{F4WCkjszku-hhn*a3#lBH07mm-TK1 zd)VAL=i?zCcfdrHdk?=m2vtt62baLIBfT{ca^OCj&T9ENO>X~25C5J};2?+JW2b+O zF!`_w;7Y)4w&Q=Wvl?>e9>%Bgi|j1lchH94V`nwwI!NJH*;)SFL4AIaoz;-zK;utl zXZdpn{F>)|T>o;ed6k{jkm?}DpUuwlbq9I;$?U9#6bBOjVs@4vcaYAX&CY7j9EA9b z*;&5qAdP=9JF6k)z~!&T&hoHYiL&yQ~H)Ch{a|bei zb#_*R>j3#-FN3XFHq_vJPK3|@?)zWU{Cf@D0q|36p6xhr`Mcyh4v4>7_RN8u|E~GW V0q}RvemFq>r{v#jcv^O){9l|xD%b!3 literal 131092 zcmeI5J(Ao;7KCTlUSloN8J7k_4r$1yK~I)qOd7g?3>s2|j4{{;kjdaJWN*mO8R+Q> za|D@Oye?$dtN$MqfW~wVLVN|Fy0a?31kjBhP5<}q?(W~yfB%{OJxSwV)50G*KnLgm z9iRhrfDX_BIzR{L03DzMbbt=f0Xjej=l~s{19X56&;dF?2j~DDpaXQ^wjDU#$+F+i z-unB^e1GN1`(MA4Wv2{G`u}^BWhedp3G6q53wx7*%`(w$l07r9dIm1ue|fh{1}^$wovJHmaCM`vP$2Mr;|v7)DfZaT3=B(A z()*1vkkkk3RAmMhXQ1f)${8r?r`TgVGtixZYVTLdK(#(trz$hhoPlQV2WOyJKgAx~ znStsIbbCK21Ks*yovO@0F$0UeUzmZ#`YHCZUB<=?Br`C~`_2pu(~o69kBJ!wGBDhG z?RUj}!r}Tl1F^9%1D6b}=6%d}orRgfYWg_mYfar|2F@8c{rTz7Px^Qn+0JD^_6dWv z^mE#hgIWJ_Alzu<^vmNfk83eV9fRWi*B4)32>&(oYuL~FH;Vl-?X&-DFwo}_%>(Q; z|B?DyOP}x2_Vh1C+-T#%eK!FaU4A$~DHE z^@Y4yaQ+uvEWOvFR`zrLE=JsFBjCSA288L4k3UZLU_d_2zem4^J^7y#ALZY}z(3xx z4)!hlTl9O`lYgFn3j?tBt7hNIzeaxvd-5;yuVLUb$GXqHhks6gDSPs--onR_{_1MV!wpH)*r>5{M-0z24L;i9Q&pGMSmoF@^9y#%Rq_!82)cw zrZOPgg=xz&-G8|CpXB>LVVzopwLbQ1*pK4>=4F_H9`-!``;LEP0vV`fKa#)BKregp zU&dc@(87K+e`KKLeDC+=`9F3C9!Ge&n!CC}wr+8+(4yU@|K*)fw~PCHKHbv#S^d_p z|1$siQ}{A(zehiR$NOsiar_;9W}q_zef*=|S7l%f|ENAQ(2;?5{#oyf8CcFgtIrHH zW}uCKmG{{UEaP9L&kQtVpq_t|_sI>}Gf>BW6@6wP zl7W!_s@_i-u=jqY72f|{Ri7E~GT`#x#CsH`Qkb<_sAA zyLf-jfZ@N3J~MF6z^>j;8Q4{y8K47nfDX_BIzR{L03DzMbbt=f0Xjej=l~s{19X56 z&;dF?2k5{-9eBEbxZv6j~|(Vg+?Cm;b1TPnSlcWTrgyxJu|St%!55N z#XiWu-oJgZxBlJkzkf2^ff9S20rMBOclr&SY394?pV>d%%NX`^V61*E``t5eVUNG@ zzBz$u1i!zPMLgRf1GE0O_oMV%+3%Ktfc@qfxUe?~*gONC{_+g;vfn%dN%os%!1Epn z*enCH{^IB6nZ2Cn!8%n}yA~wbBL%$-D&HP>`j)-PLSF`-?*IDj zuirp%S;hQ^zaqL&zdQZ)TR8#4_3tE8pq#JpU~md&eV;kj?U-8ipYH$p>7SpjI0F~< za=hQ29zWLbH+?4tBYvvcgF-8V!XQ0;Fh_-|tu6Y7|CMIIV=wd{Kc>$B=VLB-Ou^m! z?%Dga*Vc8n)xsb%1WzC1Ky@|sTCKk2e`OhPIGQ70=t~A90sdJ)w#3tMPDRGz!z- z!yv+c)`y;7@$BVV(l`92*Og=-!d}19m!tfT?R(=+w1=t8IboCpC8N}Qt(JPP{m%J_0#F{DqIlV48V} z8utJG*0gZeAC!S<1W)(YsoGW@1N4#_V=(cb^>t4f1J+aHDeVs*=j*%tkpa!WCj*v! zoWIII1AAmZ+>)eX(HTIWa-B0cJr~j^-h_^ow&WRLudWV*KwtMPY0G}}ujy<0xcai@ z^Ny|8-Xn6^r}@kGc8K><%e2tLvNzX!Hv_5H|9G^nas81Q02x$G=;=PEAA5v;wBK&+ zFZYU}FMmgCR0cx!asHw$-_9U3&EN5=%YZrVMFmH#&BNoz&kuim|Ht>5ajLELWgN0@ z`;N!}i1^izd;RL^Ugj;MUq|0hh`X-!WgN0B%|M)e$RFNo{-WJ_ zIMZmfzo|^nL#E49Kw+&wvolFXpv| z@3X86v6y~e2GaS6v4?(aT&{l2c>s>*Y1h}JO&cSTwVZy;|Jn@5Yp&8F z?!`QY|0#XfgEZUHo)mlNr^e>$=Q04NQ7sEeK8OeynglVeJ}qyeV@3yUZbD$UuQtB|26~W4ndB8 zi9P%;>Gx)!#2)%mbBn7lvx3KQ=GbevFXJ!cO6x-@UTgJB{v!kC^`CpMD8;{qz056j z{rAV@dJrDx{+1f{(9f~QK3896=d;JUVPTK?<@{v~p?;h>wzlZ|UZ>V&)^Y~W_XcD9 zYuUs9l%Buc^}r`?*K65BAB;=Y)z=w->ppv-FowU3E!1~)v1ZxV>H9wC)@9Z?{w?g` ze@@Te=Xzk7qt(J5`X%mqzpEc+!1cb)fBpQWcBl{PvFz39`yQ9pbq4hD-^yO*T6_N2 zV{$zJ`S|<$lAoeq>f`Ts^<~y6@9X^cpTD#|T3>rx+eQY!zlXidvxmQo(evyc*6818O-s2x*S;8Lr;Mr3}Up_g*(H_>=@h`5K87#@4jCX{7{0=M}&e#4U5AH8Z zz!?1=@_0-uf6Lx{`nx;NjVg&HpTW<$)%gZ?B^dZ)*bJ?rbk=TwdPznHz6e@YkISJf|OAn*So_R52F2DZ_M*RksRKa9Pa ze@qwKR@cvFAnpGU_R52J2Da0O-+tBp4`;9D@9ScH6a8cc;{Fe1uRI7du&q8k*A@P+ z#$L@|>!Q7xel!E2|EsW99=I9UULU@r8vk)Wf4--S@s6&M`-Ge72N`hvUzI()bnX@J zqYw5{#eXbY&3{*YCj-|1P39hCU_X5@0ROG$zpMTw1IGVN=k8=+Uws_^d(D4W{W$}> z%w1)G`jZ3vp#yY)4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbbt=f0Xjej=l~s{19X56 z&;dF?2k1b*1JiHg?fCl#p}N@;ZttHVADMDsa@qXlqg^r(s!v<+Z4gp-8CA-w=eGUg zKK}mLrfx^oHG8yoJU2Zz;&wiP`5O=Lh+Z{0G4g-1nLL>q9dTsMoM3|8eZ)uUp%1v+!Am z>!$yZ40N+6{{j4G_YHkRHJt%e`()@DGnjV|(Q13C5>J2Rl6&+W;5e2)cu zs;TJ=rpe0>Kg%M2!>HCl+b^Dh68{T@3ihTi z*rVzUNL#KBc2uR->sROV!0Dz)$0mFF_UYRv!+&fBN(qqfN)QH8OSI(u1GwutGo0AV zQp?|dOT+Z|TmL!z{o(HqYh)nD9|XX^oB@*+&EB--xW`h%AIheZ|J|AYIvI#3KoijX z^BFLErN5hj7XDh&-%`RDkL%s`F+xTX4p zJl!qwcv-;O-J5z=yM21>t^Wk)e{&Tu|1N!BkpBK-!$8hYwvc}t|6B&*evjuLW+1Ly-uiS;{_Xr@ z8AyAbhJ?&o`?_sVCTe}5qVKK?ob-#+CCrud8hAAX+vpFVq*cA8Xf zPv7GVdzl0I_w%Gq=a~{Ykhy3kvZ)Pgmw|@KYJpTn5XyG5QhxzBLfcYI1=@XJmZK>}|_Aon9J2Ozr zKgk}$>B>MIf3k|x%ZTF8LU ze;9iVKbrxUKiR{y!8MZs&3`z1Oe2{A%b)CF)=D*z0q|dqJ*E@QfZQO z`vm@*>fbVZ%ze&)@ZZJza|R6mUG(9@E!T;`uHNshf6MGScRD}^=l~s{19X56&;dF? z2j~DDpaXP(4$uKQKnLgm9iRhrfDX_BIzR{L03DzMbl`b7uu&%Z)xBendtxttd&&IvH8XH*n2n>K+1tOlDJftE8eKeQ_kcZ8zziG{Xv3(J?3sZE z7mwMs$etNECfJHmPweq69-y4BycSfrdWQ^o<(rrC zchqo%=Iip~9_+uq`1*qU_k};HU--*+ENsc1{C8(B1914KGcfkJ7xv_To&3WLtizuC zub02gz