From 05521b0668e8340321f049dd587fe1a33f370aea Mon Sep 17 00:00:00 2001 From: hjk321 Date: Sun, 28 Mar 2021 22:31:04 -0500 Subject: [PATCH 01/28] Document and index graphics/battle --- .../{unk_824E16C.bin => terrain_building.bin} | Bin .../{unk_824DDF0.pal => terrain_building.pal} | 0 graphics/battle/terrain_building.png | Bin 0 -> 706 bytes ..._824E490.bin => terrain_building_anim.bin} | Bin graphics/battle/terrain_building_anim.png | Bin 0 -> 541 bytes .../{unk_824D418.bin => terrain_cave.bin} | Bin .../{unk_824CF98.pal => terrain_cave.pal} | 0 graphics/battle/terrain_cave.png | Bin 0 -> 901 bytes ...{unk_824DC98.bin => terrain_cave_anim.bin} | Bin graphics/battle/terrain_cave_anim.png | Bin 0 -> 3877 bytes .../{unk_82489A8.bin => terrain_grass.bin} | Bin .../{unk_8248400.pal => terrain_grass.pal} | 0 graphics/battle/terrain_grass.png | Bin 0 -> 1213 bytes ...unk_8248F58.bin => terrain_grass_anim.bin} | Bin graphics/battle/terrain_grass_anim.png | Bin 0 -> 683 bytes .../{unk_824EB90.bin => terrain_indoor.bin} | Bin graphics/battle/terrain_indoor.png | Bin 0 -> 706 bytes .../{unk_824E650.pal => terrain_indoor_1.pal} | 0 .../{unk_824E604.pal => terrain_indoor_2.pal} | 0 ..._824E740.pal => terrain_indoor_agatha.pal} | 0 ...k_824E6F0.pal => terrain_indoor_bruno.pal} | 0 ...24E7DC.pal => terrain_indoor_champion.pal} | 0 ...unk_824E56C.pal => terrain_indoor_gym.pal} | 0 ...k_824E78C.pal => terrain_indoor_lance.pal} | 0 ..._824E5B8.pal => terrain_indoor_leader.pal} | 0 ...nk_824E528.pal => terrain_indoor_link.pal} | 0 ...824E6A4.pal => terrain_indoor_lorelei.pal} | 0 ...k_824E81C.pal => terrain_indoor_plain.pal} | 0 ...{unk_8249620.bin => terrain_longgrass.bin} | Bin ...{unk_8249074.pal => terrain_longgrass.pal} | 0 graphics/battle/terrain_longgrass.png | Bin 0 -> 1213 bytes ...8249E10.bin => terrain_longgrass_anim.bin} | Bin graphics/battle/terrain_longgrass_anim.png | Bin 0 -> 986 bytes .../{unk_824C958.bin => terrain_mountain.bin} | Bin .../{unk_824C5D8.pal => terrain_mountain.pal} | 0 graphics/battle/terrain_mountain.png | Bin 0 -> 750 bytes ..._824CEC8.bin => terrain_mountain_anim.bin} | Bin graphics/battle/terrain_mountain_anim.png | Bin 0 -> 610 bytes .../{unk_824C07C.bin => terrain_pond.bin} | Bin .../{unk_824BCE0.pal => terrain_pond.pal} | 0 graphics/battle/terrain_pond.png | Bin 0 -> 739 bytes ...{unk_824C520.bin => terrain_pond_anim.bin} | Bin graphics/battle/terrain_pond_anim.png | Bin 0 -> 481 bytes .../{unk_824A37C.bin => terrain_sand.bin} | Bin .../{unk_8249F98.pal => terrain_sand.pal} | 0 graphics/battle/terrain_sand.png | Bin 0 -> 829 bytes ...{unk_824A844.bin => terrain_sand_anim.bin} | Bin graphics/battle/terrain_sand_anim.png | Bin 0 -> 515 bytes ...unk_824ACD0.bin => terrain_underwater.bin} | Bin ...unk_824A940.pal => terrain_underwater.pal} | 0 graphics/battle/terrain_underwater.png | Bin 0 -> 763 bytes ...24B0DC.bin => terrain_underwater_anim.bin} | Bin graphics/battle/terrain_underwater_anim.png | Bin 0 -> 363 bytes .../{unk_824B608.bin => terrain_water.bin} | Bin .../{unk_824B19C.pal => terrain_water.pal} | 0 graphics/battle/terrain_water.png | Bin 0 -> 959 bytes ...unk_824BBE0.bin => terrain_water_anim.bin} | Bin graphics/battle/terrain_water_anim.png | Bin 0 -> 764 bytes graphics/battle/unk_824844C.png | Bin 1251 -> 0 bytes graphics/battle/unk_8248C68.png | Bin 683 -> 0 bytes graphics/battle/unk_82490C4.png | Bin 1251 -> 0 bytes graphics/battle/unk_82498DC.png | Bin 998 -> 0 bytes graphics/battle/unk_8249FE4.png | Bin 876 -> 0 bytes graphics/battle/unk_824A618.png | Bin 526 -> 0 bytes graphics/battle/unk_824A990.png | Bin 829 -> 0 bytes graphics/battle/unk_824AF70.png | Bin 350 -> 0 bytes graphics/battle/unk_824B1EC.png | Bin 1005 -> 0 bytes graphics/battle/unk_824B8A8.png | Bin 790 -> 0 bytes graphics/battle/unk_824BD38.png | Bin 791 -> 0 bytes graphics/battle/unk_824C314.png | Bin 498 -> 0 bytes graphics/battle/unk_824C624.png | Bin 787 -> 0 bytes graphics/battle/unk_824CBF8.png | Bin 630 -> 0 bytes graphics/battle/unk_824CFEC.png | Bin 964 -> 0 bytes graphics/battle/unk_824D6B8.png | Bin 1335 -> 0 bytes graphics/battle/unk_824DE34.png | Bin 781 -> 0 bytes graphics/battle/unk_824E410.png | Bin 167 -> 0 bytes graphics/battle/unk_824E858.png | Bin 781 -> 0 bytes graphics_file_rules.mk | 43 +++++ src/battle_bg.c | 153 +++++++++--------- 79 files changed, 124 insertions(+), 72 deletions(-) rename graphics/battle/{unk_824E16C.bin => terrain_building.bin} (100%) rename graphics/battle/{unk_824DDF0.pal => terrain_building.pal} (100%) create mode 100644 graphics/battle/terrain_building.png rename graphics/battle/{unk_824E490.bin => terrain_building_anim.bin} (100%) create mode 100644 graphics/battle/terrain_building_anim.png rename graphics/battle/{unk_824D418.bin => terrain_cave.bin} (100%) rename graphics/battle/{unk_824CF98.pal => terrain_cave.pal} (100%) create mode 100644 graphics/battle/terrain_cave.png rename graphics/battle/{unk_824DC98.bin => terrain_cave_anim.bin} (100%) create mode 100644 graphics/battle/terrain_cave_anim.png rename graphics/battle/{unk_82489A8.bin => terrain_grass.bin} (100%) rename graphics/battle/{unk_8248400.pal => terrain_grass.pal} (100%) create mode 100644 graphics/battle/terrain_grass.png rename graphics/battle/{unk_8248F58.bin => terrain_grass_anim.bin} (100%) create mode 100644 graphics/battle/terrain_grass_anim.png rename graphics/battle/{unk_824EB90.bin => terrain_indoor.bin} (100%) create mode 100644 graphics/battle/terrain_indoor.png rename graphics/battle/{unk_824E650.pal => terrain_indoor_1.pal} (100%) rename graphics/battle/{unk_824E604.pal => terrain_indoor_2.pal} (100%) rename graphics/battle/{unk_824E740.pal => terrain_indoor_agatha.pal} (100%) rename graphics/battle/{unk_824E6F0.pal => terrain_indoor_bruno.pal} (100%) rename graphics/battle/{unk_824E7DC.pal => terrain_indoor_champion.pal} (100%) rename graphics/battle/{unk_824E56C.pal => terrain_indoor_gym.pal} (100%) rename graphics/battle/{unk_824E78C.pal => terrain_indoor_lance.pal} (100%) rename graphics/battle/{unk_824E5B8.pal => terrain_indoor_leader.pal} (100%) rename graphics/battle/{unk_824E528.pal => terrain_indoor_link.pal} (100%) rename graphics/battle/{unk_824E6A4.pal => terrain_indoor_lorelei.pal} (100%) rename graphics/battle/{unk_824E81C.pal => terrain_indoor_plain.pal} (100%) rename graphics/battle/{unk_8249620.bin => terrain_longgrass.bin} (100%) rename graphics/battle/{unk_8249074.pal => terrain_longgrass.pal} (100%) create mode 100644 graphics/battle/terrain_longgrass.png rename graphics/battle/{unk_8249E10.bin => terrain_longgrass_anim.bin} (100%) create mode 100644 graphics/battle/terrain_longgrass_anim.png rename graphics/battle/{unk_824C958.bin => terrain_mountain.bin} (100%) rename graphics/battle/{unk_824C5D8.pal => terrain_mountain.pal} (100%) create mode 100644 graphics/battle/terrain_mountain.png rename graphics/battle/{unk_824CEC8.bin => terrain_mountain_anim.bin} (100%) create mode 100644 graphics/battle/terrain_mountain_anim.png rename graphics/battle/{unk_824C07C.bin => terrain_pond.bin} (100%) rename graphics/battle/{unk_824BCE0.pal => terrain_pond.pal} (100%) create mode 100644 graphics/battle/terrain_pond.png rename graphics/battle/{unk_824C520.bin => terrain_pond_anim.bin} (100%) create mode 100644 graphics/battle/terrain_pond_anim.png rename graphics/battle/{unk_824A37C.bin => terrain_sand.bin} (100%) rename graphics/battle/{unk_8249F98.pal => terrain_sand.pal} (100%) create mode 100644 graphics/battle/terrain_sand.png rename graphics/battle/{unk_824A844.bin => terrain_sand_anim.bin} (100%) create mode 100644 graphics/battle/terrain_sand_anim.png rename graphics/battle/{unk_824ACD0.bin => terrain_underwater.bin} (100%) rename graphics/battle/{unk_824A940.pal => terrain_underwater.pal} (100%) create mode 100644 graphics/battle/terrain_underwater.png rename graphics/battle/{unk_824B0DC.bin => terrain_underwater_anim.bin} (100%) create mode 100644 graphics/battle/terrain_underwater_anim.png rename graphics/battle/{unk_824B608.bin => terrain_water.bin} (100%) rename graphics/battle/{unk_824B19C.pal => terrain_water.pal} (100%) create mode 100644 graphics/battle/terrain_water.png rename graphics/battle/{unk_824BBE0.bin => terrain_water_anim.bin} (100%) create mode 100644 graphics/battle/terrain_water_anim.png delete mode 100644 graphics/battle/unk_824844C.png delete mode 100644 graphics/battle/unk_8248C68.png delete mode 100644 graphics/battle/unk_82490C4.png delete mode 100644 graphics/battle/unk_82498DC.png delete mode 100644 graphics/battle/unk_8249FE4.png delete mode 100644 graphics/battle/unk_824A618.png delete mode 100644 graphics/battle/unk_824A990.png delete mode 100644 graphics/battle/unk_824AF70.png delete mode 100644 graphics/battle/unk_824B1EC.png delete mode 100644 graphics/battle/unk_824B8A8.png delete mode 100644 graphics/battle/unk_824BD38.png delete mode 100644 graphics/battle/unk_824C314.png delete mode 100644 graphics/battle/unk_824C624.png delete mode 100644 graphics/battle/unk_824CBF8.png delete mode 100644 graphics/battle/unk_824CFEC.png delete mode 100644 graphics/battle/unk_824D6B8.png delete mode 100644 graphics/battle/unk_824DE34.png delete mode 100644 graphics/battle/unk_824E410.png delete mode 100644 graphics/battle/unk_824E858.png diff --git a/graphics/battle/unk_824E16C.bin b/graphics/battle/terrain_building.bin similarity index 100% rename from graphics/battle/unk_824E16C.bin rename to graphics/battle/terrain_building.bin diff --git a/graphics/battle/unk_824DDF0.pal b/graphics/battle/terrain_building.pal similarity index 100% rename from graphics/battle/unk_824DDF0.pal rename to graphics/battle/terrain_building.pal diff --git a/graphics/battle/terrain_building.png b/graphics/battle/terrain_building.png new file mode 100644 index 0000000000000000000000000000000000000000..3b060be4e60081f2d952476e68798ba0978b9f49 GIT binary patch literal 706 zcmV;z0zLhSP);2Asu?z3t8;oqDB zdG8STV(nn@#|p-gCCzW)--zE~3}|K?AJ~ipuqK`a4%=X<8KMEY#UxkXk{##h&KtNT zf&V+5NaH2VOdgI^aIrg9X8_YVR$P2naMe-B7-sP={D*gf^ZeDAQf#VRWBu>#-e7*3?P@%0k;F5ZF^4?c_^Y{A8#c)XjK5P{~=nlo{YMJaue zTzW-5uq?R@%tZM>LNf&yNhB4yp>_m=uP9JzXfXIHgyH9j8ADzF;ugKM1x;*1OK?(r zDZr=KZ4AZGNSo*alCfj7AsB-zX=KPppBe=eLpnU;FyTaiHGcItf^2{n11%16Tmi#j z&Qb1)3{V`&Eqq__^%&G5)3?dcW)iL}umzp?JOHDsN3znA}@x@YeRTyTq zEU2~A%%q36x4;XmGbTICYJqjeWQWM_tR};yme%6m{4HXsr`0TPvD6PDs8*_>R7XWY z=vh&Po|G7}#`coBjuRqlf3mYxigJLQQiasRV}SRo@#660faI$KeqR(I&I(Km>~}E+ oJoW6rqQU|T7Gq!m-q{j-0${4Bi=0FpCjbBd07*qoM6N<$f-jv_-2eap literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824E490.bin b/graphics/battle/terrain_building_anim.bin similarity index 100% rename from graphics/battle/unk_824E490.bin rename to graphics/battle/terrain_building_anim.bin diff --git a/graphics/battle/terrain_building_anim.png b/graphics/battle/terrain_building_anim.png new file mode 100644 index 0000000000000000000000000000000000000000..443cd98ab3c0845b7fa2a7a03629c3b5fc52a1f9 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^5kSnr!VDz)O;tYtDT4r?5LY0*eQPaRl}B*hHK&Io~U zLV>n00SORL0s;_?VJj=tMJ_-OAS(tLfvMO~5DY+yktMM!MlzY8Vg@8PBP#~Ec}A}C Tl?nXwRYBsOu6{1-oD!M<-la?J literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824D418.bin b/graphics/battle/terrain_cave.bin similarity index 100% rename from graphics/battle/unk_824D418.bin rename to graphics/battle/terrain_cave.bin diff --git a/graphics/battle/unk_824CF98.pal b/graphics/battle/terrain_cave.pal similarity index 100% rename from graphics/battle/unk_824CF98.pal rename to graphics/battle/terrain_cave.pal diff --git a/graphics/battle/terrain_cave.png b/graphics/battle/terrain_cave.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a18ae571f0a3a49da9eaa3db909e39612d6772 GIT binary patch literal 901 zcmV;01A6?4P)qYX1QL)x~q>-fEBVT}2JrrPt5hfv@Cg9k zDU}2&)WgMmt{ZJdcpuPm4+B8nXc>sJaKqmUtwG9M$_1cQ4Aiw!OMuZg67^@L+8Cg_ zl5_CfYNFp043Ab*3kwBfk(QVhR)xN?d-=9pE&|ZAkc*o?3ut53Q?L6p=}eSlS48- zaeJX_+R$|>uj43637wdRHj=DYg7lCiupSE3!`HMC(aH?Nyh{UQrk@r;3}6|kVilmU z>}}|0Bmpwx$ePg3fKx!+)I2JJ9~tM*ok0Z@0~lv=p751o|?3vw3j< zeauHD=vGC|z?J}TXN;EM?lk`m-ojisMQOmMC=GCmvXvuDink*1Z5arYgfa|HruA9voE5<#wnWRGVehrpiWEVgk`3KX z+!ZzjI3;Zorejd4gBwQ=E>Y1Sbq4H6i3c@ZGtw_GVygGz)&ctQL^Irb#lz!1C-J@w z^u8bb_;F%p6wR%CGQa|$=g+ktfsrdXNW&Sb_J@U8?PWfy(ZZ^h0K9546cjbFc}3EZ zbVvL@uyE`f__E}K%^tp)1$94SS|hvzuOC@o3N;npfxrMRwNyQt6yhpp9}*Sa0|UvP zs0Yw)vFFV~kJq>{#l|l7rKN&EL&_8FIEJNldu;;z*x|oEBHA;@4^_!<9>{MFkJ^c(Z~XQ{DDG% zsR!El6eYLVW`J~2vcwGdg)elbufeI%ALO;K!Ksj`Rp6g2toq=OxN-ldfdQVYHDI7_ bInIHOh9MYytm+$wznY%q(GI>aMd-Fc?-kUdX-t2?h zw{EUnzINFdv$DVE4)FaR{tw@{fX~n0{hB}CzWw2y8~Fa}{hf!sgX8Z%dwzWXujh|3 zf@l51h-xvY^5Wm}5uTR5{NScD^~LLZ_;KlQ@6(Ck^DewXMcr<1sGp zx?O8+axPGpu9HAgwGjKs@#(1*uamke+XNB?rV7Lo8iyu>(u!VzcqD-8U13Z-9CR0e zBLMNRvT8M5SX=ziIolSi-Lrv54y!T7!hpB>k_Cj*PK98+A;dXRg_@sr%n~8r`z_|@w0;v?hdahZX9!W}!bHyA$cA`A*bXowX+%&|%oUZ5j zdZ!s6lsA1~9_U~LF)PSqIH+KkyC%RUw*L%ZwF5|j?n@R4DT_J(_3*2PSrP zZIiWX4q#~uK#5&Svbw7-U_pXV3ydYMxqTU|NDKse!2;4?TQPP405i=XnLZVpbpsfN z41oCpEhaT%5eoXerF>*F=>2L?#;9XxlGLtu0zkbQjIk4t!otPu3`9&91kBzagnRy}xiUx4P;8C_ZTYy3e-Mcs)e#h+W<{?B_ za4qhz0yzBD1_4^2T^5XOM?FapLY!dnl1?$;0qs^1)}az3M}w-1Jxt3EOq*18FRJN= z@^m;HRxC!_uIwCG5Bor1Ks`*X*)C>dk|bNE+pY1))jU)p0^kWJ78^s^`VEP4h1bIf zW-FjEj*p>67IK_w${dhlwF%V)EqQg@Tfo7PLCg$ub-Dn0>QTa4!$=o;$7sZ3NlA?W zp@v(c2N3iGIOqXa2oe90Z_9MGz_Dix58{D*4q&qafC?@o?dGHrssiF+hZl`RbaLP4 zfqsx`A3~1Rr?eN>^)^*10`MGlBs&Ux8?^XFgcQvkeybCVOls*s9*D34pBYUY@1_TR z4#|Axq3}imaEiJSphX0&xA3PSG^7O}Mit0*!Q}r2e7lyDWlqWx)raW~3jm}vWj7}k z0KW=$n+X2GDL20TMC`^AFk+sB+m!>MKjFmAfRoSx=0H>u@HvR2RWqO_(6|vc^bjlp zY*`TaG-d;d*P3Zqs4I9-fExpVE|@h9GAheXScd?++lzq7N-I%d$`iWSr9QldVDJ^m zDqA7Dvz05*7{Gm0GpMlp0-#ytVIWfV89+!@U*^98aII>s0Yo7be;>3+U=T7MKfyEZ zet93@n*(JIY`NWcJRqZb$IpQ+rW61q#tT|mej~Z@AGk5#D9_oqXloE38Z#2 zH{l{P3aAdr<^0oZ*~b&2m(O$boq)(f^dKZtjM1?ziM7@vIy0N?tWG}HJ80xf3b zJb-Qi;B)hA3-Wd$Kqjl8rE>*J%DMVr0Upm0HK3JpCgR^cT4yRbC{_KsAbKqO*8!Ej aMV-5hD}PUacL$#=)7$=yTkeUN6ibeGvypFL^nNe{w08}E0Bh%aP9a0p{`Hs zDz~}A!&qh)0q$Sx(?aGA=8ZPYoHE4#yh{K$%=e;NAD;HRjIm0Fhtg@dJ6TOfs|6P= zU}xDIE&N{(C>ub!vzDoy;Z3AsQz*oOkk+;`lz@VDGL%oM4cEFHPjyx@IV8(Y=Y{|p&lukJ zN&)b}^NIuTh4a;R1Xyhy=37~9^A{cg_{BvpZFxHZtnl~9$?ywNcbugzqi;SHgJhLu zpov&lwNRb$IGdeVQ%SOr%~6n@7-x}B*ifS&15Mg4Q7s-Y2r|%=8By`w1L7b9O|bE~ zu5ZVQlO0WD?Gl099z_x4zX2xBZ6~2bOGagdlI{r!CAyIv74}p_NVh$UQrXO!j>n#m zuss1l#$4;jT-FunwoXcy=Dd9nrUOZzl&r!$+7?(wKl8i>jFqykIrM`N%9+>UsdDp?8_;hceSkMEPFA} z0+?UB%ceDSt1>k;J>sEz=Q(^`!Jh&j6n9qMX}?Fawag zRDT^(Utsi?*n^`FwFi8yo5Xi=#Fc=ft}B2mMe7EI%Td==x_UFz?EpEXT0*+6J86Rk zHG=NP^p-qvTNl3l$L&x<4J{8w{A&SaF}TY}QUJPO+o;CmrfARQ{s5JJiM^w?jf$c@ zm*aL1K9hFIAaq`5Xco|SUNo^d4S%#Usf)iMe?nyOABg-O)I|&s`4BMC z(Aoab2YKr+NCz5dSVn-U4{5FBcpAU+!-g zxXsh4yWKADk}Bu?1QThA&vzW|DX6eqw$@c!NK?^)J&EyanI5Zzr=`~ B5l#RA literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824EB90.bin b/graphics/battle/terrain_indoor.bin similarity index 100% rename from graphics/battle/unk_824EB90.bin rename to graphics/battle/terrain_indoor.bin diff --git a/graphics/battle/terrain_indoor.png b/graphics/battle/terrain_indoor.png new file mode 100644 index 0000000000000000000000000000000000000000..1cbb7c63bc6e9818d50fd76c8d36b57d7b99ae2d GIT binary patch literal 706 zcmV;z0zLhSP);2Asu?z3t8;oqDB zdG8STV(nn@#|p-gCCzW)--zE~3}|K?AJ~ipuqK`a4%=X<8KMEY#UxkXk{##h&KtNT zf&V+5NaH2VOdgI^aIrg9X8_YVR$P2naMe-B7-sP={D*gf^ZeDAQf#VRWBu>#-e7*3?P@%0k;F5ZF^4?c_^Y{A8#c)XjK5P{~=nlo{YMJaue zTzW-5uq?R@%tZM>LNf&yNhB4yp>_m=uP9JzXfXIHgyH9j8ADzF;ugKM1x;*1OK?(r zDZr=KZ4AZGNSo*alCfj7AsB-zX=KPppBe=eLpnU;FyTaiHGcItf^2{n11%16Tmi#j z&Qb1)3{V`&Eqq__^%&G5)3?dcW)iL}umzp?JOHDsN3znA}@x@YeRTyTq zEU2~A%%q36x4;XmGbTICYJqjeWQWM_tR};yme%6m{4HXsr`0TPvD6PDs8*_>R7XWY z=vh&Po|G7}#`coBjuRqlf3mYxigJLQQiasRV}SRo@#660faI$KeqR(I&I(Km>~}E+ oJoW6rqQU|T7Gq!m-q{j-0${4Bi=0FpCjbBd07*qoM6N<$g3?4%;s5{u literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824E650.pal b/graphics/battle/terrain_indoor_1.pal similarity index 100% rename from graphics/battle/unk_824E650.pal rename to graphics/battle/terrain_indoor_1.pal diff --git a/graphics/battle/unk_824E604.pal b/graphics/battle/terrain_indoor_2.pal similarity index 100% rename from graphics/battle/unk_824E604.pal rename to graphics/battle/terrain_indoor_2.pal diff --git a/graphics/battle/unk_824E740.pal b/graphics/battle/terrain_indoor_agatha.pal similarity index 100% rename from graphics/battle/unk_824E740.pal rename to graphics/battle/terrain_indoor_agatha.pal diff --git a/graphics/battle/unk_824E6F0.pal b/graphics/battle/terrain_indoor_bruno.pal similarity index 100% rename from graphics/battle/unk_824E6F0.pal rename to graphics/battle/terrain_indoor_bruno.pal diff --git a/graphics/battle/unk_824E7DC.pal b/graphics/battle/terrain_indoor_champion.pal similarity index 100% rename from graphics/battle/unk_824E7DC.pal rename to graphics/battle/terrain_indoor_champion.pal diff --git a/graphics/battle/unk_824E56C.pal b/graphics/battle/terrain_indoor_gym.pal similarity index 100% rename from graphics/battle/unk_824E56C.pal rename to graphics/battle/terrain_indoor_gym.pal diff --git a/graphics/battle/unk_824E78C.pal b/graphics/battle/terrain_indoor_lance.pal similarity index 100% rename from graphics/battle/unk_824E78C.pal rename to graphics/battle/terrain_indoor_lance.pal diff --git a/graphics/battle/unk_824E5B8.pal b/graphics/battle/terrain_indoor_leader.pal similarity index 100% rename from graphics/battle/unk_824E5B8.pal rename to graphics/battle/terrain_indoor_leader.pal diff --git a/graphics/battle/unk_824E528.pal b/graphics/battle/terrain_indoor_link.pal similarity index 100% rename from graphics/battle/unk_824E528.pal rename to graphics/battle/terrain_indoor_link.pal diff --git a/graphics/battle/unk_824E6A4.pal b/graphics/battle/terrain_indoor_lorelei.pal similarity index 100% rename from graphics/battle/unk_824E6A4.pal rename to graphics/battle/terrain_indoor_lorelei.pal diff --git a/graphics/battle/unk_824E81C.pal b/graphics/battle/terrain_indoor_plain.pal similarity index 100% rename from graphics/battle/unk_824E81C.pal rename to graphics/battle/terrain_indoor_plain.pal diff --git a/graphics/battle/unk_8249620.bin b/graphics/battle/terrain_longgrass.bin similarity index 100% rename from graphics/battle/unk_8249620.bin rename to graphics/battle/terrain_longgrass.bin diff --git a/graphics/battle/unk_8249074.pal b/graphics/battle/terrain_longgrass.pal similarity index 100% rename from graphics/battle/unk_8249074.pal rename to graphics/battle/terrain_longgrass.pal diff --git a/graphics/battle/terrain_longgrass.png b/graphics/battle/terrain_longgrass.png new file mode 100644 index 0000000000000000000000000000000000000000..0d09d739ccf9ffb25d4cae554fde43f3def10033 GIT binary patch literal 1213 zcmV;u1Va0XP)UN6ibeGvypFL^nNe{w08}E0Bh%aP9a0p{`Hs zDz~}A!&qh)0q$Sx(?aGA=8ZPYoHE4#yh{K$%=e;NAD;HRjIm0Fhtg@dJ6TOfs|6P= zU}xDIE&N{(C>ub!vzDoy;Z3AsQz*oOkk+;`lz@VDGL%oM4cEFHPjyx@IV8(Y=Y{|p&lukJ zN&)b}^NIuTh4a;R1Xyhy=37~9^A{cg_{BvpZFxHZtnl~9$?ywNcbugzqi;SHgJhLu zpov&lwNRb$IGdeVQ%SOr%~6n@7-x}B*ifS&15Mg4Q7s-Y2r|%=8By`w1L7b9O|bE~ zu5ZVQlO0WD?Gl099z_x4zX2xBZ6~2bOGagdlI{r!CAyIv74}p_NVh$UQrXO!j>n#m zuss1l#$4;jT-FunwoXcy=Dd9nrUOZzl&r!$+7?(wKl8i>jFqykIrM`N%9+>UsdDp?8_;hceSkMEPFA} z0+?UB%ceDSt1>k;J>sEz=Q(^`!Jh&j6n9qMX}?Fawag zRDT^(Utsi?*n^`FwFi8yo5Xi=#Fc=ft}B2mMe7EI%Td==x_UFz?EpEXT0*+6J86Rk zHG=NP^p-qvTNl3l$L&x<4J{8w{A&SaF}TY}QUJPO+o;CmrfARQ{s5JJiM^w?jf$c@ zm*aL1K9hFIAaq`5Xco|SUNo^d4S%#Usf)iMe?nyOABg-O)I|&s`4BMC z(Aoab2YKr+NCz5dSVn-U4{5FBcJ4!<~40#vj5i{6{|CU_0^0oS|@vazoz6+dM7)4)GV{FFxe;I9+v_ z=g@kF1QVBcKiJmseOVYKctk<{H47jAlQOPfm(>_%ITGuSB9zW3YYt)i8EH+ z&|4r8aqq#EYtboeMKTJ4C)oTh^qyeNJvWuTgX;rd7-RI4y-oVlHr@f6<~dBwO<_u9y5YF6RIPW~jeFudi`WmcK2>&@8Nj2lp`QDd@ru|c zuPNqtKZ|}yobOQ8beLJ)cQ)se{)FlFJn;*3Za5YmJhgdWZB&N--o`tO1`jT~?u!a^ zJ|!ijKb!HAxk7yVLjJqq8}2jicu>&TySB-u@iXT-dB@*VOc&@zB$P1M=Sw(1W)r-cM}HP502lh4^WY~`wBO08$!;?MkLQOVh} z3Of_(nPr~-=X%9rBGVFg;E(;iL-pK$`VZVYSjqgKq4Q77xku7BpM!Fxr>mdKI;Vst E021Ph*Z=?k literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824C958.bin b/graphics/battle/terrain_mountain.bin similarity index 100% rename from graphics/battle/unk_824C958.bin rename to graphics/battle/terrain_mountain.bin diff --git a/graphics/battle/unk_824C5D8.pal b/graphics/battle/terrain_mountain.pal similarity index 100% rename from graphics/battle/unk_824C5D8.pal rename to graphics/battle/terrain_mountain.pal diff --git a/graphics/battle/terrain_mountain.png b/graphics/battle/terrain_mountain.png new file mode 100644 index 0000000000000000000000000000000000000000..9889a6b62cd12b9993a96d0f7d55cfefc4238a5e GIT binary patch literal 750 zcmV)I*3`KDTRUWtWMhCD|D6PCFaJ(1rjMb;osB)oZS$Q%kv|G8)6>^1K z!B=prsM-)9K>{RKlV91wBNhMw5Ws1nb#oZ|D73?rbRLKPxDwL9K^rsRJoNGBHVQa~ z16$W^yERF{!+AJ{lhT-g%Q2kItfqS;z}t(%#_YN$@Y#;1?~6jWcn&!3O>f87N$P@O zZzJHLQ*JllvyDt|+08(910kHIZ6BC9aR6(RfB^X~p_jkjfdZU@pUwO9(>pMbC*QQ5 za9_A5KoqZgq~bj5yHI5-YpHD)r0>*xI-Aa2Ttpd(s z`SNXz#R_A&kIRH(Snlpt>_Dv}kO4?LFEqZ3wzPZbYQx|$0p#7=&=^8Ay27udH4HL@ zBsfrxkUE2x-@52xQwX#8}-zg1UD0Cg3pdf@NQ#(<~(I5AXsU|==| g2JjyS&ikn8A0N-Fm!iE;3jhEB07*qoM6N<$f^r&RZ2$lO literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824CEC8.bin b/graphics/battle/terrain_mountain_anim.bin similarity index 100% rename from graphics/battle/unk_824CEC8.bin rename to graphics/battle/terrain_mountain_anim.bin diff --git a/graphics/battle/terrain_mountain_anim.png b/graphics/battle/terrain_mountain_anim.png new file mode 100644 index 0000000000000000000000000000000000000000..ab90aaddc10428dd159eb7317a35af00fbeb9666 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^4nSFAuSt6Q3% zU7Z6I!2=FVKGwy+!1&hF#WBR9cWa1a(QN~sCq7TAJ(qo#IK}L8c;9lfl5)4B|MyQ~ z_4HhF>Ev3A8)_RObQ~_6`x|b(@}ETbX8A|WEACY_oN#ykAKucjYr~!XT`&5s`@r;m%*9Z~^!qoz zCbJ&VEU$h4*v^af$dSp6e=e?I5=i>RuFz9lJUipl=eGW-^Mc=$B_6n2Uv%s8$LcIb zC1VEmiPlacpLKpV{@kQ!Ru>z$^wMqJoX-)OX&O;4-J>TnAKkEJ@4_Q?fzNwV@{Y*A znf~gPt$Uky5dyy$~VtGEqW?u*zl-F`@pxSvD&S=>8F~XAE{>bTanXk zG==l1$f^lV2N?CQ-*c&yQ&=uGfmcqiJ1IJy;XkjzF`g5qhbJzORbBGWacaY&m{|qv z&X+S3*QCx^ZfBQKH**V2&TFNpE;gvTgy)knB9zR9i_de5;Jj3bjr62bu leh6J&yZ^!Y*VYRZ_A%K0>5XdEm7fbr7oM(uF6*2UngGU;3<>}M literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824C07C.bin b/graphics/battle/terrain_pond.bin similarity index 100% rename from graphics/battle/unk_824C07C.bin rename to graphics/battle/terrain_pond.bin diff --git a/graphics/battle/unk_824BCE0.pal b/graphics/battle/terrain_pond.pal similarity index 100% rename from graphics/battle/unk_824BCE0.pal rename to graphics/battle/terrain_pond.pal diff --git a/graphics/battle/terrain_pond.png b/graphics/battle/terrain_pond.png new file mode 100644 index 0000000000000000000000000000000000000000..161498b2a004a0bd4d628ca74caf299b6c4e3b67 GIT binary patch literal 739 zcmV<90v!E`P)?*<4twJlEv>-Uq>R3U*sIcS|RWr3^?>{ zCJnsY$D<|+Vh(cn+L+IFk$CvE4JWlx0rz}1T8E(tVqi;Vw9IzcHCiz4AB!@e@C+US z|GVqQ{a2R??GzB?V*S2m-_2l*Al*%L^ONmU)6C$pqcIQSCMIxAcAsRp*D-kNK1Bx; z-(nbSWXR8rb9dx`uM6~Z6DUGDM-iS*5@MLGt_`you)}m9*e<38*-$|8O2wHl&nI0j%*)*)Z0yT1YW#o!-lArydxZ+x*= zfwOmQJLzx3rZ)n7UN+hp70{(KB#Z$D-v1uj_Jg$LxgI2NF%1lKy7iV(#DIUxiCqmd4&k4=tI3Z; zD4tTSus|{ZT_9*oUHy5u{U2}EMMn7RQ z3;wn298On^x%~v!OyX`htHtv2Mz68_bVa?LzIr9r>+iC(Jud1s+##2c)MDVGDaRqJ zpx2u4ghgSJz>Dsn{3+EbRa$Rt6|P3@K42g0fAaD)mc(9AoOrtW KxvXSw=0008W zNklKK#03lk%eqRbAeIYQz}joD0_>{+mB12I#yisEN7;_`042#+z-a0hkcAcUVCjQP*|wUva#`#EDi*xZuxdV5;+RP?!L< zVct5QLs@Nw4d9&bLy|#2?YX|m5nOTv(A>XeDH4Pshs52%@*@qz__3y-@?(*Bkk`ZE z3#Z`niGT;BHRvb>ZNeE0PC4*YOfCfttCOLCFA1J-v+c21Mw?VYn6}d;@@^-E&=lh= zSm|P1Bdq$oR zY^L=oV1g6Fb0fwP_+@Z$ob~uv3BGwH1ke5=r$s_wpc%Jbt@zqMl7cvc1Y;B5`l9;6 zO83AeZ)Tz)zueRCm-v03fP=EDf#y}s-sxdQez|u%*{h-s(&MXB8vCIC(zDRTX3^H0`){}$-kTL2&X}6m;Ug>Mmhc?}{QBTwN>TA|<&BA7Hwrxt z`nUMozLK~3$MbS?wKKU7a_e9HUN!OSk6p_%uB+C(m1H;@zxw^w^%v4Mv72^s$Y#|x z=VU$mmv%63b#w>++_T@@x+>Q05zF4{aPq?cIvH<|Y@V!}!o^dA+;?7AXMVr8yi@F! zhQC{OY=r#j!kcoFr)**`N^w&TDwsI)M4--6=DVFM$`{O9!^Ru9;rtr5q<*K}?;o+s}Zd?wN|_lSB)};whIC(p{f+SR9{~`FDxgI>l{Ux#b%T z6HIuHn_YXXV=yh1@zM#AwtX62wLB)5o;|tnt|pG>!(xthSHs*kLDprdE1!sbvMW+K zJRw+OGtc?57WMc`_jt=DN?QLhZ!Xle`Mq`a_m!vglsY{8xMuTTwPN=dpWbwK`YStj zY33j6CrHmz<1d}Q&Ne8mBmZx@)E2Qd4Of0doHyo?WZQH_VGj4f)6OrXe{5WR?z->J ixJy4T2K-af`NjHMwd&~e)bb`!^m)4axvX&F;O`_Ql@+3UA0$0007p zNkl8WN>V=otaw-B`Dvby8EA)S@b76p-VBP0Fdv5smhgHfN0%iK zKyu*2hsQ8E1$%hShnK==2zU9cSVKj?;|KlI`9Y|#UUi=DpPN!3@ElOu<8i)!i6ziJ zfw}TtUls%0Xao{IQKu-2^8{@a+AQ3{z z2}l_uMR4#~I2cT&(?MT_P;Wkeohm}chwt*33ClLYcL^2}!cQ7lu_)nm?Tj-H@+M&o zK^H$`bxaF12ma+#{kX(h5g{;xx-2yXtt~P>M{0r+jJs1x<9&7!=<2DPp>{#XGl89j z_( zWa!$Bs3YOrv1hDnfpeIO@4%mjVP_t)9H|7AlO=-IYE&tS5kdtks$bWl6jI!izu+~8X2IV~g$Ju_^sZzA^`5lRjvs}gMFGUScV`jG!D1d=ra>>@7|lo-;BAA}Uw;`fT5E71671wL;Q5W9q~ t2ada$1D^V|f=P`BCT!-w1gu(*@E>TibrPaTD*ONd002ovPDHLkV1l9FXX5|> literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824B0DC.bin b/graphics/battle/terrain_underwater_anim.bin similarity index 100% rename from graphics/battle/unk_824B0DC.bin rename to graphics/battle/terrain_underwater_anim.bin diff --git a/graphics/battle/terrain_underwater_anim.png b/graphics/battle/terrain_underwater_anim.png new file mode 100644 index 0000000000000000000000000000000000000000..f41eedfb8028f97b699e8684df78c0ecac840215 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQU(D&A+A6=Y00zZqyN{u`ws+X z|NjSypn;^MHO)~o?3c$B`+9Vq?H)5S5wqW5f&W8M)3o-HAt7$(;#EaShi=B4f0 zxxd3i|Nr;OU6i{;FwuXimHHtc8)Jq8@ya%jf6jccYklbT+wU(GSaS3%-=SF)cE~VZ z&WPnw((c*oUzIwYS$>RJ(06u(5X<+~x2xNlIyPE)nB=E@%Uqqb>%7MOm`Z_`SLU-G zaVIw^AL2RFVtS$A|7%7`8~?clY}-y;d8oK%X-4~fr$;*~&PRJcP&|H<#nFD{QU&da zM_Crh|F|ZwVEU9d+Z)?C^(VP);f*$Xmk%Xq^~|Zkv^G(W5$67dS1Dc>y!H7d7f^Uf#KF{g~$cYEGC z1dNqq)TO9iiNHrq7)xY0Od7d<7-y(MVgr_5LXHx#wenNQh&85S#~jh?K@;9HhoF!` zDp1dW4qSwc`UIX*rDp?%-T`?*P%Jbwj0bRgogmW^4jB^AcRH8ubV6HHMNEcsE6*GC ze=jpmOkwYBdYe){K6V}c6Qf{nDpbf1FB&0`VVrEaTOmNFf6hcPVM&-P+7bUAMKwVlxNU(*O&&c~D5_EZ+W2?+1nu*3zg4vRS zqUT3!NoYr{3kDe)20ZS%JF67^xKhKcK=|Wc9PPAbcu)>bZ3qSGFIrcD8Ouy*u*l@Z zXa#Ct-DNI82RV!`P7@(hgt>ei$!sPToe5iRo?0I;{x-FA>KFS6K@pSFa9U%jE{NQ? zM7c(pNiJ>(_Z4A(0jUH(FXf^lYKaTA`zLTNhDzokGT!LD+#S)Uq`sK5|x_J3n`oM>+cNBtxOAVceFY$zTrY&UJA)9kTokc2UQ)1}qwb+e6 zV{qzy6LV)i`X=V65^NZJ`YqOuALLzwKD_Sv^0K-(sC9x}9m#JgFd@&E_Pn~RAd|AM zO&=w1tsKwgJG<>=Q(|e8VUqLak*NDVbuQL4#HPmkuiOSBVdn-zYP{L54Nh(uG0*I5 z=F`kI?)X`PU9GseRtT_K_xiDyACFKpec5?~?Gj40TKhG^^P&nt@Kr<3g4(k|3}7mo#K-bL-k(_`unu15bSi7?RY0Wit#znEAjRh9TgyB}h9j0onhU h@IQR`B|g0*{{yn{?uWx6lUD!$002ovPDHLkV1h_p!Oj2x literal 0 HcmV?d00001 diff --git a/graphics/battle/unk_824BBE0.bin b/graphics/battle/terrain_water_anim.bin similarity index 100% rename from graphics/battle/unk_824BBE0.bin rename to graphics/battle/terrain_water_anim.bin diff --git a/graphics/battle/terrain_water_anim.png b/graphics/battle/terrain_water_anim.png new file mode 100644 index 0000000000000000000000000000000000000000..1545d85e749c2745da563ab93c7681ba891a1f99 GIT binary patch literal 764 zcmV7*Xpeia`l2J^jBW{V+Yoe$&sg6{l5K=J) zkWPRH6|l$ZBaiM7O$XSBqW4E|03r?q*|U%SYDm=KqUAevMu?7TpHd_n8dNrOFJ4tCHwiV;K0!;8VX8yQ$sw65dwUWFP9U+ zJS3>sJI;g&M6C{KpQQVt{3PU_i-ofy1a)#06_u=!N=`H2dM0%uSyl4Kl@P zT>1kLdq8A@Ghmn8cJ4r&e-P$$Rr=>6$90;|4osuKOZ9@JasYD=YVA%i%Hs*j!$Z}_ z3}sZKlwY-vng}|P}5kvH1rAw0vmH4;e zBsb~}N_LI~Py&ElT%@U~VCF8nO_gmV0PSl1L%#Yb&*0Y8}~}@TFI|> zN3_i1O&B1IqzK8{ZB+qut8TvEcKQTik=N~Q)&H0oUXc)8tze%()?l^JYlPKWOp+IHJi#L)Qy`C%9HB^-8tnP1*k|VJ{D>V8p67 zVp0S+V_tdpq|TpJ3hz|FaN=sbHRh0EC-Vo`nC}ZO-e?3^Bhh3E;6UENY%yMR1qQHQ z)YvF>OSu4@+iXY$t_)K$SOvvkEHO2_>b!+bzz$%x2UyeW8ojE!1MJKWa3E}H*YB0C zVNm13xZNVUqgW4~qm$^W2YFbQz1U*D7nhy%1k-v7>w;z3o#OEk+a*yU`5l;DLSoKy*gXSxw$|_7uDvWPnkQ3k|q&NxrIg zvQPvxCSOb7$V$iE*t!gXGo_Jo14Wp%Ed@^{Uu+47Gag_~*t{u+kvSYbVXc8^Hn3)} zB;^KRHlsYc*0&4K4j(bJ+kM)#1{|T>@NrEj2YDrV784O$ath^}ymwHJ$#BikHappS z5#O=fz=k{zCpUi0#eoO44UUx|k)rKTy>Gu!YZR44qE+ZFX?2tkaT~4vfrQYC;_{Fg zWIIu)j?Z#@0SI~lHw%t&(-}EZgq}&POlJ*Hr*ag0s@FuwYJrahGw=fx*INxYFgFB5 zpyahc$s2^H{BP0k7pQT;W$|xM1>i6~=#H?>+Rd^U*2YD_yDs3!m?Mo!B#B>B5t|X- zMfT(skJr~Af`U+3)RyyQcP!?XWgX>JlR`cStx_+RU=rk$6hh(?;Nd9f5vi5{UhH?A&uCYitzPB*+ZK)d&QQ*iAvJn=fQ_ zB1cXilmrSP5HzNS*N`6{i&mHklIPZosbh~iQ8E;qYTm4|qY{uz&LS&PI!)^h^5%e5 z2PA+~51xh|uR8^V0{-!Z)iYjIFs)oOk3jzd{R{5gzsE;8&oUGb3v%63s$%xKepu$5 z*vM(y8KnYc*^P${c#%53;Pq@UzSTET>SEURjhvDGzrM+IjQ1yh>nwlIq!U3mb9UvfRLgNpND>DAJ4voJ4wZII39nquWpyXwKj(AzBRi1 zK9BWak>h6gc#G?aGiEFonB{^;u*if(BJwDB-M N002ovPDHLkV1h9mQ<4Ax diff --git a/graphics/battle/unk_8248C68.png b/graphics/battle/unk_8248C68.png deleted file mode 100644 index e927c982c26d6ef2b1a1965d75c14552e5e54245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 683 zcmV;c0#yBpP)XIY zorC{+q5AEM;^>m&kL%WW1ytvV0%xN=x`65&fQ=&Pqw`E@oJgW^v`6zh{gS*;InOZI zpPHT1s2bpih!Sz#+|ek9)8ZYTNo*@^N5tYd@7S|D5?gUl&Bl5^?}*U{oVQ9(QAVh< z!}20Yxa{pjkR`DKGoOHQ(}e@*7o1oE2$fU#Fp9z`@{E+5V>PmryH_S};KWbhS#Vy16tk^ySIgh zFZ2D*HD0u!B`@Qm=e7#+D=k$2^@*rQo{%NyrA0wKu8HE*3EeR`M}P)*G`kUrjYw>+ zU@tdcQzmD^LLzIf2GIi<0rFi?BYgX!5db;Qi=8_5g0wm9S*K02|L=y;Ie`rt1S3q1sX0x?9&~Dpv_i&MM{m5O*yl*r zrWl^JYlPKWOp+IHJi#L)Qy`C%9HB^-8tnP1*k|VJ{D>V8p67 zVp0S+V_tdpq|TpJ3hz|FaN=sbHRh0EC-Vo`nC}ZO-e?3^Bhh3E;6UENY%yMR1qQHQ z)YvF>OSu4@+iXY$t_)K$SOvvkEHO2_>b!+bzz$%x2UyeW8ojE!1MJKWa3E}H*YB0C zVNm13xZNVUqgW4~qm$^W2YFbQz1U*D7nhy%1k-v7>w;z3o#OEk+a*yU`5l;DLSoKy*gXSxw$|_7uDvWPnkQ3k|q&NxrIg zvQPvxCSOb7$V$iE*t!gXGo_Jo14Wp%Ed@^{Uu+47Gag_~*t{u+kvSYbVXc8^Hn3)} zB;^KRHlsYc*0&4K4j(bJ+kM)#1{|T>@NrEj2YDrV784O$ath^}ymwHJ$#BikHappS z5#O=fz=k{zCpUi0#eoO44UUx|k)rKTy>Gu!YZR44qE+ZFX?2tkaT~4vfrQYC;_{Fg zWIIu)j?Z#@0SI~lHw%t&(-}EZgq}&POlJ*Hr*ag0s@FuwYJrahGw=fx*INxYFgFB5 zpyahc$s2^H{BP0k7pQT;W$|xM1>i6~=#H?>+Rd^U*2YD_yDs3!m?Mo!B#B>B5t|X- zMfT(skJr~Af`U+3)RyyQcP!?XWgX>JlR`cStx_+RU=rk$6hh(?;Nd9f5vi5{UhH?A&uCYitzPB*+ZK)d&QQ*iAvJn=fQ_ zB1cXilmrSP5HzNS*N`6{i&mHklIPZosbh~iQ8E;qYTm4|qY{uz&LS&PI!)^h^5%e5 z2PA+~51xh|uR8^V0{-!Z)iYjIFs)oOk3jzd{R{5gzsE;8&oUGb3v%63s$%xKepu$5 z*vM(y8KnYc*^P${c#%53;Pq@UzSTET>SEURjhvDGzrM+IjQ1yh>nwlIq!U3mb9UvfRLgNpND>DAJ4voJ4wZII39nquWpyXwKj(AzBRi1 zK9BWak>h6gc#G?aGiEFonB{^;u*if(BJwDB-M N002ovPDHLkV1h9mQ<4Ax diff --git a/graphics/battle/unk_82498DC.png b/graphics/battle/unk_82498DC.png deleted file mode 100644 index a1f3cca526a5128bc727dc80dd3c5955b52f1cc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 998 zcmVWE-$<2#{e=x@#Gv<5TU_l^l`*6&t`i0!59z$@=jmO|u2aA;1RIdf+&bTtvB zzljY6TYv?ovI18~z06>32}>MFp`npj3BrHVlp%u(S>{MMW=|}P2L^C7sNqsho=rnZ zjs>RRl{3R72qOem;1mf>=%EQeETL`8P{cao!Y0lR!b4kTWk-{_I)4#d$_aME-STE3 z;ZBpm+K=GzD7<5x>{pX5P4cV>%g{g&j3tbqu!EDc$GDbonpalE@yn607Mk*0riZc% z0T^U$WDO67nAL%M#iV&?!l>a=?o0}oO%=-AnH9J~8?*2VFMD3&e-}8nf=40D-9aaB z55#}|BcI@ukP)awQX(LZbSWp;ftN|QtUZ(=SJt_#c(Z}!&M)^CnAq%?Q*=T6_q@#c zJ2`-iX}K~hFC30kB86+@!ZwnKWiM%Bb`RVwJX$Z*o@Zj42uT=)yN$q%vCc2d-!{OR zl!V#zJV@InIKU1(;JR4UAh9SLj;yU7;NU>G68nU@U!`yn-j+F(y`?7X z8wr=^p7Xa74%p0r)?Q%TcVDPG+&3j*78rphG^bVkVu)E{Ra_|0umuGaEO;eNl`(lA zI(l}&DIck`iqZFa#dL&1P1u~0#1yW0pnki+S7#55uwf-{^LyfiAEqGlkc4@~bR2~y zX12$5NVuYTmPF8kAzZ8CurpMwGTeddMR?#q^a_qw*$X*gzJTe^un1SeBsK;2dp>@-zIqJTfgD0ic4Gqe<3t@#k4$HQ8BepIYt zdfp$^!*e+mub2*N+D^~$<=!+6@T%nc&G+#q<;EE1*m4!G7ftIhcOHohL# zuN&>SeqWcy(IFjN6*s|3ogX!w&OS?dCCPY=ZdJgA9(7lzKoyh@#)qXJz=opX-( z*LYsFXNnG#3san@+-~GH8%K|wQZYpb3d1lkG)-ejsX$@qx`YR)-4B;6mGLZi*8g4P z87pK{yNQ>aue2{fsogQ*F_d`lORG-XgnXTmgP&WqCE>N{%3aQbodo#IM?d2#GhA1^ z-%$sChTo&z%Dac$?U~`MiQZ(c2;@zBF@)@@&x&KAyE~rY}_Oj7ELqCM}!1Py&#obQu0}Ll#2Q1``|p}HqBpn1N>~(gcPrL z69JpjXd~a@=qAo?ZtKUb4cXpasjl<%V8<)7o%SI<<&rkK8C;Y+Fns^;*N6+1A3fxv zkp6uki0eXZNc#F2@s&a@dF*puxEZ8yt*6pKJ9UnE9KfR^K)y_5015`o_VSe`aYRo{IprEtPzYedNa@m5 zTBht0Kg;O#IjSXdpN^$_YmYvypVE9^ssaD$oiqgNywDIV@~X5USmb35!6Glax0UsF z+gEt7P{3dC3kvueucAX`n<4-cR9hgB_U&+U5!13-gTLjbk?Oo2F88>0000y)!0CH0f9uV^BvDJdi(>Q=kc2h>V*28v*mOAdU1`O9FZ6pc8hl*QO> zCBOHZsufibvQ71kBBd5C3e;ivA@;1z5NQiUa_Kikj2USx$<=&qmU!=!QD3IM3{s~r zC600C3TdPgzFz=Wz;8|0iNFzX#C zfQ_*-Zq<{`oK(6x-zEvO!)TR;B;xaRC9m~+SF(nAghAArp+>IEN;7CK5zwvH<#4Hf z!^)r50TA4>QO&mKvb@(i%5?ydJi;q&ezp-=XO8>U(c*`fl`Z?HelS=qHVP}qTJSHv ztwqK#m(G<(#gyXg&TsJ!c)gsxSzikK?(EiYyTJ~?tBv9O0C(hnh%sd0 QjsO4v07*qoM6N<$f@yX9K>z>% diff --git a/graphics/battle/unk_824A990.png b/graphics/battle/unk_824A990.png deleted file mode 100644 index f8f483342e99497f4d1c7fb5cd8b871f6c72fd4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 829 zcmV-D1H$}?P)+13LavZ2u)am1XMUMMN@fGpr=Y=eu?PJM)UYoOAMS*wt5KCeFeXQlSa7Q-%{d@q)Con%AdgeY?t@Zh$Vp z);BD#;5d1J7(^BY*~(KF;2)Rva_=FXc)9mLA?+qtNcS;7$bJ_9+vzuU3V);O44j+2KbC688#;|AznvG!rI9oVnMPuml+dJkrYYZ=C<8WOsv2noI zd$I&Rk*RlN34r&JECGytAWH!6)&OKY!D5W!srFheZa(%GKT9Cys_I@000000NkvXX Hu0mjf1T2PU diff --git a/graphics/battle/unk_824AF70.png b/graphics/battle/unk_824AF70.png deleted file mode 100644 index 9d8af70b86eb63c6a204b36c145de555d80a33b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmV-k0iphhP)8CAC||AG`}f4EO=j z;-^NO(^b diff --git a/graphics/battle/unk_824B1EC.png b/graphics/battle/unk_824B1EC.png deleted file mode 100644 index 91819a5707119803fe34ddf12b2c09d37221e4db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1005 zcmV1UPM0%cV5Cs7`Z$NCL98$e>?n z?~asA$&#HC@Pm9j9?5&hN5Wrf@B(P4!Jt{2HwTDogt*Z4so%{t#E2yz7Mh?WsI_+d zyf{Uu5fOBS1!!HD1mq&nH0mpCuXP4AR71hGvg@Vao?!u76>xZpQkhVNb-85-#d$@L zaTIg|j6+QgbjqQ$#tVLk`Q@Nlc_Ea6o!Xjx(64azF@Qgc@>lAI8;&eND~4?7cg!>9 zYQsTm$`A$3>Ipw-4?aPL=rbu4K9fWc$&+<(*zg=RjjMI#vn?h=ToJ()0(_$Y&lOGn zohP4j9i&nW1@kdZZ7&FG8`cF427sZVC1gL9_#%^m}=ZWY)9E zGLq?ddtUQ81icJHNFt?db)M78rV!K`9IOdS8;f)SJ%cZbt3mCzlB(yw^aB5swT@x%RLzJEV zrri{WU0zfu{DviMsF`Jpc}vl9nYF1ytBE+Hp>r?)gJ6b}k(=DJTm6v7~UUHP7 zi@$OB$hxbob@3thNBQ-Ee{i_z>GPOopW2?fKX+73X*ue5Wo;g4Y%hn&IbwS;7p6c? z{M1Kil-@zs(I|->i}#6bnW+u5sy8w3Z;rx+UfbJc;P*-q1X?x5?2Z{HT@ z_Pe3{@P2cngp+b}PQTUue7lyf3uU+}sdD z5#;+LT9V#(Z?odOY-aUT?~))P0o{f6ad+(9^D$ksScc(3L$C|w#tvVi)PbG1>R%2b z*8xFKW92#-DD_PK2EC4qnK5sg(Y&;<+cbQber`A~>9pTf$D15z{G6|8Z6ucuUQJ57gidH3!7+Jv9f!_KunZGIk8aS-zwl=NNpA4I7(x%ywbF buhr*&qEsj1x&&%*00000NkvXXu0mjfa#rIR diff --git a/graphics/battle/unk_824B8A8.png b/graphics/battle/unk_824B8A8.png deleted file mode 100644 index f8323d44fc4071ee0a18c1271d9857b2a9dfffeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 790 zcmV+x1L^#UP)4D<)sTcJ`k6&NlN9|^T@cL!m-zx5t~c;! zXLh&>^eMZR(&g=5DNnrK+Z8tD<^}rA2q6VR6wM)h zN@iZf1fUK^mKR=@z-$o|WJ?S5;ss5)?F~9Gs82Iw|6Uvo@b8fWqWFjw01w`N5GTAe z4S4P2T{e`*szl~W%i2wSnaxlf?c68vMiN$tj{pH=@mMB|!pR5$G-`$Lm=jiTT3{%6 zB$wJ{L&c;vM;t!E?qu_pF65m30qL8;ZbCw;rh!u^);o5s#XJ_fV6>! zFJi-lnI_DT2};%grL8u(W|K6l+qGW1wkCi0P$&3{LRl@a_&{fwUv04}w1IZCMZayi zI{iorn)Iws*pV~}t>h?au|;u&U&?@Ua`5m0a|Aqtbi&BE?UmNqx=m?oeT&4sNk2hU zC>~cpTVXwO6f&ppOM|U_nv<*Uyi|0q`vXmjJ=WWG3$0t@>muts#8_)(bL58Bn2ou7 zv>(p3FdwBy-#I7ik+Jw?qKDiv3jUf1Zib2A+&~~D%`Pb#uzH`$3uz9Iw#(?3V@Y|j z9z5Ds)J;5t@7q?|_8Cu~9pz@Jn!+A{uU|9x;!fpJU6RoP!QILWwWHiPMn;huO2IAh z;@q3of+$CsdG2KESNCS^kx-+621?7*yeD@4g8=@=z&+8}J%rsmcQ%$$?B3P9wynjQ zi2+6iIA8gp2O{42%Bn0w-M~AHBp*ukCraX6$?Hg=!w!E7<-(w6Ti)8{--CYR5j2>Q z{T@bEa2PLKHZo}C&2Ca%T&SSve|gT} UH_(Z3Q~&?~07*qoM6N<$g8T`2xBvhE diff --git a/graphics/battle/unk_824BD38.png b/graphics/battle/unk_824BD38.png deleted file mode 100644 index c6a1d3c0752c255a0f4cd620f335d5e24cb61736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 791 zcmV+y1L*vTP)&7I^7sXwcBjFx)u<0RdS98J!)7Ly^Hl0L>i= z=nCz7A4!p7McH|PJ_zK;M~a``5B+7MD_~%w#QfMteh!A{Xv_@nhK5aRWYQ2nCo-o> zO?aD@4o5pHP*qfIl_I57VR<*3ed}ihPE272C=9ykX?WP|$32{vh@!Nno{jcx8@sC5 zJcR)iKzk)`zk3*j(s>>OGuD=;wI|~{+Wqc+;GWvOhgTHcD5BFe3}`XRa<9pLm^hOHtaLY>BU=nU3th+l&Ga9l3fHf!UC@uVVUQ?qgkMwOYI=< z>emPDpzpQ)RcaT0FIFhTmN7pED`OX8@Cc0#&}cKwr?DYfnlbW7QYq7Zr#!2mL?cok zQpUmV!Ra;PX)iajBT{L|NJzBqe<>t%3l)<`&-N^ma>I>>?1*F;oFe7=TYDAC-7K#i zc`FUb_zOI(Lz3a>L5lRePEs@3q#9Fd6T6ax9PSV4HTJ^E7il=UKXFixdl;GiHm4h6 zRnlu%zf?mP$5_E-UMP@x-n2kwc}aoH^4cqTP$3k^>rP` VU8OaggNFbB002ovPDHLkV1gUBZ|nd7 diff --git a/graphics/battle/unk_824C314.png b/graphics/battle/unk_824C314.png deleted file mode 100644 index 8ebb6f162a7d364d709ab903688a6f0199fcb895..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmVsZYV@Qd{3=j#4QqomQv5El^NC^lw4l0QxAqsJO<=2J80F|gs5O4FB>na-zu$JK^ z2Q?|M7U0=TKE+a}VopV!CehV@b?r47HdxEJN;|a5YF$a%q392kF5Yj+dw2|e12dk( zf(_bsX2fUamb_;M_)ftu0OXmj&`m1x8sq#$l+axI*R15t`b}yW=+;_N>S`nKTu3f2BqeW|OgE=wGt|rx z=1Ct$HGYCCGhVHgx$)gR>_6yF#oxL~8(GN_(v{NhJCpC=i+tbr?<8RRzQPmxwPY(C zXGveKzhgbX*v^4H>h`!NEIR7#wa%eAJLd?GBd1{ZIrrhqmZ!5F;b=O$=?w6FIA!-r oXtTjK^DQ@>D`(BL{k#kK2j?lV+*;=;NdN!<07*qoM6N<$f}`Q%mH+?% diff --git a/graphics/battle/unk_824C624.png b/graphics/battle/unk_824C624.png deleted file mode 100644 index 90bc93e39698e79530c913b13d6fff8ee21cd9ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)I!?g0`<>&KsRg_fig zOQt2)1&R_7;mA+2!bd&|exbnvcS8eVZf>0etacrZZi>UVj|yMl%MNgy(CKEttpQ)} zK)JW%v<9t>0fR=kH^_2?bRKd-NMr60c8{4-A*7o^*eNx_X*3C0gsTr=s`_QgevREP z+m3MPaK4w|ZxokS71;=UoPargdx~JIwm>*F+WCGA!AC($5X)z2;Ycfb9pmlJuU*k@ zXc>B(dc}#AqR|25xb~HZe@9z=A%5}K&w=g+U1I=;fzuET|37pj_U2L>I6u`I&Q%|$ zXU^5=Dt6Cl+=1K+ok};e`&G}2P7uqr|8(Z*`RaoKOwI=I@Qs~gx_ctU^qe3)r_@pA z)dO*^HpIDN&I=~~fj0O``SJsiDb!O@nspdf;`}Sh*@&IBC#MdIL4(@`8$}UImBHs(UAcw zmLA7aDj?=uUFUH0wZYBfJV!cc6O2P?7QC_KdI$^hK8OqLqJv$OmErvmXBO4tKsQTn zQO0`A)CEY0 zbn*h!$o&!*pxFP7U4Vou@ZyBpS#0FRMyRsqjYtD(Z%%iq)v+>|+4~S%F|6ge4`_k= zj0W$~0>`*dXo2Iok7$A8wK2zFeq!_A5KpmXvG2y_=JFn8p)AWKxNJP)bT4h;BrOpaK3?F6@(Ooh$DpXL^PN2`8Xl#yUZXXx| z#QPEw_RO0gv&E5h#DF@2M+w-NGJ1*>;DVHcOt{QY;%GAu$E87Dg_Z+yxCS`f=hYeQ zj4getN%#Zx3y>S?rLOq+MSO3@t*3%Gq0>!pELwSjb@A4GRGS|h*7j_v0*BIPNLhI1 z<+=4dH|GjsFXr3fw1V8}%Z~`jd5k$f_(%2H)w>qnM;<_|iS)R!tV~|ALvqp;W^n0(a{HTpNjRuB#wuFH=94NQ0BqZ^ zE{6ZoyIPEIaZz}kAT72MiPtd*gy&-uCp@oh8|{?xMoX)|`j7J_yn*G5@a|x=(G<5J znk-#Qw9aPfB7=2`ivx|0QB$o0@g02kRG*kLT}04T#x z&9L&Ng%|+Bbwq<1Y<~M9Z~7NFm$0v*e>WRDf@kS$@q=^j(8AVZ&E8X{)KB`M zlp@7YsI?-kl?NC@cy>YGU1lBq!pF2?P}NqGue^sUferNi##YXSjTp?9JY)=Htxb3u zGRd=V>mxid_@{8d6mlF;m+*#mYuY)d$uOwvcV|*LpR#N>SLLm50b7=Q za`B6^cj=*Zv2(mzli1hCgSpJBBN^Km@pw9TuV~{N1=E7tHEoA(R{~cI<O$&G9{ zKT=6sIDcV7&v_p6B*-z5j1FW;Bxtt@FCH34kopj`>WH_WYV=l$Tu1?C zt#CIpMgX=zLpM2bEbgMYma0XmX}+}KrSs5j)VG)W8dpzJjTPIXP=hCU2cK2xJ#28H zI*$kV<@ojk{4<0;LJ|<(dq@J`A%Wb3tbKwc@CC92L}~vf`^wu$K1`6O^v&8gTATMv m#+_}guJOEDM>0Wj@c#in1bmGBEkNA>0000oGC3z{Hwj>Qbj+8#Ol#nXLNWu9!FVetPDaTu_WTfSe%PsOu3fGo% z?u^G^V_2jh@e^Kq?YV#EoNH?Eq5p?!LQVCk315Bvx(RbbTI)iv8@Z(FFbk+wgnMd_ zZv^TOy`@;`jN(LDiWDCyN&$CM4`Y~^@wX#BLlp8fb|?Z$!Lg4kak%wOWoZk+(k~LL zji}*OLacX8ORa&Oe#U~{EU>ebusu>Lz{&tC7+K%FC|MTX;W$7kKp;2jR-+!x0lBJ; z$v!Bu%Ub61QvD?OQ4j@8kb~+6V7kQN6ooV_L#>V*1pJ@gY6;hI;U+Pmm#DCUxUK)VYFX{wQTO``?`+< zP#eL9I7dXBuLbP(o8-O+_88=z9g05q%2ul$(N|OKvgyK5wOF3(OEsBHWXJ1n?`w}$ zthiUBLWBqV(w%)1?EV3`&C4K4mJBiNBwk%0UbcvLV@yGbLYu|ODK@}#$htU+o8XHm zMNp<9C=Up5vigOpRg};Sf#4UKW+qsCNhE|XE)GMxE|>!zjHW3Ci0A}^{-LeG_SKnhhOtVSBC$$L3H@1Zle zzBiXAUgyNG-z{kVIrM?ShpMGs(WlkQA)3Ch*y_z2G6; zuAjF!VUWL!gAeZH8G2W=*qtg^veZpX?BE=mJ9K@I?A#N_S$&=4 zj^Nh3agJL0WfsR+Y4r1&CM(PvC(OKLM5$McffQWDK>n|y=K-oi+(8bT92PD6SA5!G zBZo>Bo`_1R40~TO_WqzegKj^0#ibv;1=Kp==?y7?A3b2oB3P~Uk90a2u=N<0M+$1B zJB=K^oX%d&M%mmqUtz#%wa(+(2q8B$n5}@}eyc|y1!(rc+VCGn=G_*O_N-@0!>2Wa z6bHEC1&lqnMZ!r+F~{&hx&69BPmo{FoPCJ-{E1%m_HVCEr(HW#LWT*?=kqo;XiOrb z6$YwS%v}?Dv#XA#i<90SSDF@KD@O}og?;^GTL^!$4?7fTUsauph*68ZeFnlwqzL_|fS2;pUB6HeHUyHaRwX9ZUbot?D*c tdqFj?M&utzHW_z=|M>LZ;XjCqXtkKJMP&d0002ovPDHLkV1i2Xin9O! diff --git a/graphics/battle/unk_824DE34.png b/graphics/battle/unk_824DE34.png deleted file mode 100644 index b4ec20536862eb2f32657857c9e28346e75d55d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 781 zcmV+o1M>WdP)Ad#{FVWB8>}^t&i?DRhL} zHtKM;Z`l=vDt1~cO=fZLwpHWbvbzvur#(a;vtA94+iG0HvFHHNI#WHFs+vYp6-9*0 z7y?|gi0emORXz?3X+4gd;2XjCj;1QVMx=XyYe$;pGA>O?j)kly1+MX4H3dvms{ps@=a`wX1EILyW1JTq0DNOS#1l`C|Y9A-%-1~b-qqp)LM&L zdqTmXPM^3=U)Z&_xKL&&IIAUZ{Dg9}g-N!QGw{WD^EFkZNYjz?O;B5lSKuUNtf_L|~QDv)bPE~M&U*C1IJI2LJuA>5Gg zpo9?kkYC7kP|?6__rg+d(=7#FTZ#0fElabqqUs^FmE5o{1UY;M=a=nB` z^+#v*Bbjht$kYci;eh*0CLG2-kqL*nQx0G}!NMBJ)6}%7b>p$$qJQpBvcfw200000 LNkvXXu0mjfZm51G diff --git a/graphics/battle/unk_824E410.png b/graphics/battle/unk_824E410.png deleted file mode 100644 index ae71f8f2aa8c0345eaa6978c8c658c2df6734482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^96%hw0wfqTq*xXLsXR{?#}J9By?v*78w_}yH~-go zc3|!rfsKsXDGf>?pDY^$8lQc*vSV8ED>D6K;gnC#D${cXD-x9{+gBjxrA%>Qa;`z9&qcf}XHWvN?jbyq~^ Qv^K~Ep00i_>zopr01DSW=>Px# diff --git a/graphics/battle/unk_824E858.png b/graphics/battle/unk_824E858.png deleted file mode 100644 index b4ec20536862eb2f32657857c9e28346e75d55d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 781 zcmV+o1M>WdP)Ad#{FVWB8>}^t&i?DRhL} zHtKM;Z`l=vDt1~cO=fZLwpHWbvbzvur#(a;vtA94+iG0HvFHHNI#WHFs+vYp6-9*0 z7y?|gi0emORXz?3X+4gd;2XjCj;1QVMx=XyYe$;pGA>O?j)kly1+MX4H3dvms{ps@=a`wX1EILyW1JTq0DNOS#1l`C|Y9A-%-1~b-qqp)LM&L zdqTmXPM^3=U)Z&_xKL&&IIAUZ{Dg9}g-N!QGw{WD^EFkZNYjz?O;B5lSKuUNtf_L|~QDv)bPE~M&U*C1IJI2LJuA>5Gg zpo9?kkYC7kP|?6__rg+d(=7#FTZ#0fElabqqUs^FmE5o{1UY;M=a=nB` z^+#v*Bbjht$kYci;eh*0CLG2-kqL*nQx0G}!NMBJ)6}%7b>p$$qJQpBvcfw200000 LNkvXXu0mjfZm51G diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 64e173aa4..0b3fda217 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -24,6 +24,7 @@ TITLESCREENGFXDIR := graphics/title_screen CREDITSGFXDIR := graphics/credits ITEMMENUGFXDIR := graphics/item_menu INTROGFXDIR := graphics/intro +BATTLEGFXDIR := graphics/battle types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark contest_types := cool beauty cute smart tough @@ -523,3 +524,45 @@ $(INTROGFXDIR)/unk_8406654.4bpp: %.4bpp: %.png $(INTROGFXDIR)/unk_8405B28.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 17 + +$(BATTLEGFXDIR)/terrain_building.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 77 + +$(BATTLEGFXDIR)/terrain_cave_anim.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 106 + +$(BATTLEGFXDIR)/terrain_cave.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 84 + +$(BATTLEGFXDIR)/terrain_grass.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 98 + +$(BATTLEGFXDIR)/terrain_indoor.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 77 + +$(BATTLEGFXDIR)/terrain_longgrass_anim.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 133 + +$(BATTLEGFXDIR)/terrain_longgrass.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 98 + +$(BATTLEGFXDIR)/terrain_mountain_anim.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 47 + +$(BATTLEGFXDIR)/terrain_pond_anim.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 36 + +$(BATTLEGFXDIR)/terrain_pond.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 75 + +$(BATTLEGFXDIR)/terrain_sand.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 83 + +$(BATTLEGFXDIR)/terrain_underwater_anim.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 26 + +$(BATTLEGFXDIR)/terrain_underwater.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 85 + +$(BATTLEGFXDIR)/terrain_water.4bpp: %.4bpp: %.png + $(GFX) $< $@ -num_tiles 81 diff --git a/src/battle_bg.c b/src/battle_bg.c index 32d3e017a..05a6babe2 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -343,64 +343,73 @@ static const struct WindowTemplate gUnknown_8248330[] = { }, DUMMY_WIN_TEMPLATE }; -static const u32 sBattleTerrainPalette_Grass[] = INCBIN_U32("graphics/battle/unk_8248400.gbapal.lz"); -static const u32 sBattleTerrainTiles_Grass[] = INCBIN_U32("graphics/battle/unk_824844C.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Grass[] = INCBIN_U32("graphics/battle/unk_82489A8.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Grass[] = INCBIN_U32("graphics/battle/unk_8248C68.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Grass[] = INCBIN_U32("graphics/battle/unk_8248F58.bin.lz"); -static const u32 sBattleTerrainPalette_LongGrass[] = INCBIN_U32("graphics/battle/unk_8249074.gbapal.lz"); -static const u32 sBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle/unk_82490C4.4bpp.lz"); -static const u32 sBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle/unk_8249620.bin.lz"); -static const u32 sBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle/unk_82498DC.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle/unk_8249E10.bin.lz"); -static const u32 sBattleTerrainPalette_Sand[] = INCBIN_U32("graphics/battle/unk_8249F98.gbapal.lz"); -static const u32 sBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle/unk_8249FE4.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle/unk_824A37C.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle/unk_824A618.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle/unk_824A844.bin.lz"); -static const u32 sBattleTerrainPalette_Underwater[] = INCBIN_U32("graphics/battle/unk_824A940.gbapal.lz"); -static const u32 sBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle/unk_824A990.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle/unk_824ACD0.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle/unk_824AF70.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle/unk_824B0DC.bin.lz"); -static const u32 sBattleTerrainPalette_Water[] = INCBIN_U32("graphics/battle/unk_824B19C.gbapal.lz"); -static const u32 sBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle/unk_824B1EC.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle/unk_824B608.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle/unk_824B8A8.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle/unk_824BBE0.bin.lz"); -static const u32 sBattleTerrainPalette_Pond[] = INCBIN_U32("graphics/battle/unk_824BCE0.gbapal.lz"); -static const u32 sBattleTerrainTiles_Pond[] = INCBIN_U32("graphics/battle/unk_824BD38.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Pond[] = INCBIN_U32("graphics/battle/unk_824C07C.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Pond[] = INCBIN_U32("graphics/battle/unk_824C314.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Pond[] = INCBIN_U32("graphics/battle/unk_824C520.bin.lz"); -static const u32 sBattleTerrainPalette_Mountain[] = INCBIN_U32("graphics/battle/unk_824C5D8.gbapal.lz"); -static const u32 sBattleTerrainTiles_Mountain[] = INCBIN_U32("graphics/battle/unk_824C624.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Mountain[] = INCBIN_U32("graphics/battle/unk_824C958.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Mountain[] = INCBIN_U32("graphics/battle/unk_824CBF8.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Mountain[] = INCBIN_U32("graphics/battle/unk_824CEC8.bin.lz"); -static const u32 sBattleTerrainPalette_Cave[] = INCBIN_U32("graphics/battle/unk_824CF98.gbapal.lz"); -static const u32 sBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle/unk_824CFEC.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle/unk_824D418.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle/unk_824D6B8.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle/unk_824DC98.bin.lz"); -static const u32 sBattleTerrainPalette_Building[] = INCBIN_U32("graphics/battle/unk_824DDF0.gbapal.lz"); -static const u32 sBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle/unk_824DE34.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle/unk_824E16C.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle/unk_824E410.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle/unk_824E490.bin.lz"); -static const u32 sBattleTerrainPalette_Link[] = INCBIN_U32("graphics/battle/unk_824E528.gbapal.lz"); -static const u32 sBattleTerrainPalette_Gym[] = INCBIN_U32("graphics/battle/unk_824E56C.gbapal.lz"); -static const u32 sBattleTerrainPalette_Leader[] = INCBIN_U32("graphics/battle/unk_824E5B8.gbapal.lz"); -static const u32 sBattleTerrainPalette_Indoor2[] = INCBIN_U32("graphics/battle/unk_824E604.gbapal.lz"); -static const u32 sBattleTerrainPalette_Indoor1[] = INCBIN_U32("graphics/battle/unk_824E650.gbapal.lz"); -static const u32 sBattleTerrainPalette_Lorelei[] = INCBIN_U32("graphics/battle/unk_824E6A4.gbapal.lz"); -static const u32 sBattleTerrainPalette_Bruno[] = INCBIN_U32("graphics/battle/unk_824E6F0.gbapal.lz"); -static const u32 sBattleTerrainPalette_Agatha[] = INCBIN_U32("graphics/battle/unk_824E740.gbapal.lz"); -static const u32 sBattleTerrainPalette_Lance[] = INCBIN_U32("graphics/battle/unk_824E78C.gbapal.lz"); -static const u32 sBattleTerrainPalette_Champion[] = INCBIN_U32("graphics/battle/unk_824E7DC.gbapal.lz"); -static const u32 sBattleTerrainPalette_Plain[] = INCBIN_U32("graphics/battle/unk_824E81C.gbapal.lz"); -static const u32 sBattleTerrainTiles_Indoor2[] = INCBIN_U32("graphics/battle/unk_824E858.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Indoor2[] = INCBIN_U32("graphics/battle/unk_824EB90.bin.lz"); +static const u32 sBattleTerrainPalette_Grass[] = INCBIN_U32("graphics/battle/terrain_grass.gbapal.lz"); +static const u32 sBattleTerrainTiles_Grass[] = INCBIN_U32("graphics/battle/terrain_grass.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Grass[] = INCBIN_U32("graphics/battle/terrain_grass.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Grass[] = INCBIN_U32("graphics/battle/terrain_grass_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Grass[] = INCBIN_U32("graphics/battle/terrain_grass_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass.gbapal.lz"); +static const u32 sBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass.4bpp.lz"); +static const u32 sBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass.bin.lz"); +static const u32 sBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_Sand[] = INCBIN_U32("graphics/battle/terrain_sand.gbapal.lz"); +static const u32 sBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle/terrain_sand.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle/terrain_sand.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle/terrain_sand_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle/terrain_sand_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater.gbapal.lz"); +static const u32 sBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_Water[] = INCBIN_U32("graphics/battle/terrain_water.gbapal.lz"); +static const u32 sBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle/terrain_water.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle/terrain_water.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle/terrain_water_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle/terrain_water_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_Pond[] = INCBIN_U32("graphics/battle/terrain_pond.gbapal.lz"); +static const u32 sBattleTerrainTiles_Pond[] = INCBIN_U32("graphics/battle/terrain_pond.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Pond[] = INCBIN_U32("graphics/battle/terrain_pond.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Pond[] = INCBIN_U32("graphics/battle/terrain_pond_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Pond[] = INCBIN_U32("graphics/battle/terrain_pond_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_Cave[] = INCBIN_U32("graphics/battle/terrain_cave.gbapal.lz"); +static const u32 sBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle/terrain_cave.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle/terrain_cave.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle/terrain_cave_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle/terrain_cave_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_Building[] = INCBIN_U32("graphics/battle/terrain_building.gbapal.lz"); +static const u32 sBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle/terrain_building.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle/terrain_building.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle/terrain_building_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle/terrain_building_anim.bin.lz"); + +static const u32 sBattleTerrainPalette_Link[] = INCBIN_U32("graphics/battle/terrain_indoor_link.gbapal.lz"); +static const u32 sBattleTerrainPalette_Gym[] = INCBIN_U32("graphics/battle/terrain_indoor_gym.gbapal.lz"); +static const u32 sBattleTerrainPalette_Leader[] = INCBIN_U32("graphics/battle/terrain_indoor_leader.gbapal.lz"); +static const u32 sBattleTerrainPalette_Indoor2[] = INCBIN_U32("graphics/battle/terrain_indoor_2.gbapal.lz"); +static const u32 sBattleTerrainPalette_Indoor1[] = INCBIN_U32("graphics/battle/terrain_indoor_1.gbapal.lz"); +static const u32 sBattleTerrainPalette_Lorelei[] = INCBIN_U32("graphics/battle/terrain_indoor_lorelei.gbapal.lz"); +static const u32 sBattleTerrainPalette_Bruno[] = INCBIN_U32("graphics/battle/terrain_indoor_bruno.gbapal.lz"); +static const u32 sBattleTerrainPalette_Agatha[] = INCBIN_U32("graphics/battle/terrain_indoor_agatha.gbapal.lz"); +static const u32 sBattleTerrainPalette_Lance[] = INCBIN_U32("graphics/battle/terrain_indoor_lance.gbapal.lz"); +static const u32 sBattleTerrainPalette_Champion[] = INCBIN_U32("graphics/battle/terrain_indoor_champion.gbapal.lz"); +static const u32 sBattleTerrainPalette_Plain[] = INCBIN_U32("graphics/battle/terrain_indoor_plain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Indoor[] = INCBIN_U32("graphics/battle/terrain_indoor.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Indoor[] = INCBIN_U32("graphics/battle/terrain_indoor.bin.lz"); static const struct BattleBackground sBattleTerrainTable[] = { [BATTLE_TERRAIN_GRASS] = @@ -509,56 +518,56 @@ static const struct BattleBackground sBattleTerrainTable[] = { }, [BATTLE_TERRAIN_INDOOR_2] = { - .tileset = sBattleTerrainTiles_Indoor2, - .tilemap = sBattleTerrainTilemap_Indoor2, + .tileset = sBattleTerrainTiles_Indoor, + .tilemap = sBattleTerrainTilemap_Indoor, .entryTileset = sBattleTerrainAnimTiles_Building, .entryTilemap = sBattleTerrainAnimTilemap_Building, .palette = sBattleTerrainPalette_Indoor2 }, [BATTLE_TERRAIN_INDOOR_1] = { - .tileset = sBattleTerrainTiles_Indoor2, - .tilemap = sBattleTerrainTilemap_Indoor2, + .tileset = sBattleTerrainTiles_Indoor, + .tilemap = sBattleTerrainTilemap_Indoor, .entryTileset = sBattleTerrainAnimTiles_Building, .entryTilemap = sBattleTerrainAnimTilemap_Building, .palette = sBattleTerrainPalette_Indoor1 }, [BATTLE_TERRAIN_LORELEI] = { - .tileset = sBattleTerrainTiles_Indoor2, - .tilemap = sBattleTerrainTilemap_Indoor2, + .tileset = sBattleTerrainTiles_Indoor, + .tilemap = sBattleTerrainTilemap_Indoor, .entryTileset = sBattleTerrainAnimTiles_Building, .entryTilemap = sBattleTerrainAnimTilemap_Building, .palette = sBattleTerrainPalette_Lorelei }, [BATTLE_TERRAIN_BRUNO] = { - .tileset = sBattleTerrainTiles_Indoor2, - .tilemap = sBattleTerrainTilemap_Indoor2, + .tileset = sBattleTerrainTiles_Indoor, + .tilemap = sBattleTerrainTilemap_Indoor, .entryTileset = sBattleTerrainAnimTiles_Building, .entryTilemap = sBattleTerrainAnimTilemap_Building, .palette = sBattleTerrainPalette_Bruno }, [BATTLE_TERRAIN_AGATHA] = { - .tileset = sBattleTerrainTiles_Indoor2, - .tilemap = sBattleTerrainTilemap_Indoor2, + .tileset = sBattleTerrainTiles_Indoor, + .tilemap = sBattleTerrainTilemap_Indoor, .entryTileset = sBattleTerrainAnimTiles_Building, .entryTilemap = sBattleTerrainAnimTilemap_Building, .palette = sBattleTerrainPalette_Agatha }, [BATTLE_TERRAIN_LANCE] = { - .tileset = sBattleTerrainTiles_Indoor2, - .tilemap = sBattleTerrainTilemap_Indoor2, + .tileset = sBattleTerrainTiles_Indoor, + .tilemap = sBattleTerrainTilemap_Indoor, .entryTileset = sBattleTerrainAnimTiles_Building, .entryTilemap = sBattleTerrainAnimTilemap_Building, .palette = sBattleTerrainPalette_Lance }, [BATTLE_TERRAIN_CHAMPION] = { - .tileset = sBattleTerrainTiles_Indoor2, - .tilemap = sBattleTerrainTilemap_Indoor2, + .tileset = sBattleTerrainTiles_Indoor, + .tilemap = sBattleTerrainTilemap_Indoor, .entryTileset = sBattleTerrainAnimTiles_Building, .entryTilemap = sBattleTerrainAnimTilemap_Building, .palette = sBattleTerrainPalette_Champion From 7d9bcc9f77aae2a59f657c77ffa670fd43a4bf87 Mon Sep 17 00:00:00 2001 From: hjk321 Date: Mon, 29 Mar 2021 09:49:56 -0500 Subject: [PATCH 02/28] Document and index graphics/battle_anims and graphics/battle_interface --- graphics/battle_anims/unk_83E44F4.png | Bin 0 -> 339 bytes graphics/battle_anims/unk_83E4874.png | Bin 286 -> 0 bytes .../ball_display_unused_extra.png | Bin 102 -> 156 bytes graphics/battle_interface/unk_battlebox.pal | 19 ------------------ graphics/battle_interface/unk_battlebox.png | Bin 170 -> 218 bytes .../{unk_826404C.png => unused.png} | Bin graphics/battle_interface/unused_window2.png | Bin 445 -> 476 bytes graphics/battle_interface/unused_window3.png | Bin 235 -> 287 bytes graphics/battle_interface/unused_window4.png | Bin 362 -> 411 bytes graphics/battle_interface/window.png | Bin 455 -> 505 bytes graphics_file_rules.mk | 5 ++++- include/graphics.h | 2 +- src/battle_interface.c | 6 +++--- src/battle_script_commands.c | 9 +++++---- src/graphics.c | 4 ++-- src/water.c | 2 +- 16 files changed, 16 insertions(+), 31 deletions(-) create mode 100644 graphics/battle_anims/unk_83E44F4.png delete mode 100644 graphics/battle_anims/unk_83E4874.png delete mode 100644 graphics/battle_interface/unk_battlebox.pal rename graphics/battle_interface/{unk_826404C.png => unused.png} (100%) diff --git a/graphics/battle_anims/unk_83E44F4.png b/graphics/battle_anims/unk_83E44F4.png new file mode 100644 index 0000000000000000000000000000000000000000..d63b338d33b8a416798d0d0d5c0804ce784e2c6a GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^3P5bZ!VDzyEd-wjo zd-wm{xBox@A%RNZ;Oy1^XV3nB_U!)!?%Vr-qW3&q978lFo(;Ol)oj4ybCW-U<-ar2 zrvHME?$vt8u{XU;*Iz3ZHFrZhZyCRtt)AjN(Feg6?_XDU*9HseUV7onmM5<8^3B2E z`?)RhQ#LZHEUL(kvHo!B@Y#$;0hK8XypGyQ*4MsFb;$@>!+tbs%MwY|!WlE$ujx)* z5%6NA>N>^elJ^zU`rHfKnjOE}Y?I}2)d&*IY~Z6l?Re|G+y aUcsoG_|Nz6aa&Q4|2-!>2?AX$?zvx2b3Wuksgcg5(uM_(TY-a`YntIJ=^08G*C z6kXMlXVhRfvkYxp8d0Tymlj(CUuS#+e4NX#L6kXM&)CZmmX;h)hHTE-e}; zlPBR3&5x);A}xW)EOIwS0?-nR$*46J2krNOV07*qoM6N<$g2#?=+W-In diff --git a/graphics/battle_interface/ball_display_unused_extra.png b/graphics/battle_interface/ball_display_unused_extra.png index d75b86b54bf54caa3dce9cc77028366d047446a4..d7c1958d4956edb87eecae346952f5e2bec58fb0 100644 GIT binary patch delta 138 zcmYeB!#F{*o|%Dx!Ax=S4j^R^;1l8sq%AEi|NsAg_3Yl}=58;?sGzK<|5tbla=akR{064xe5&!@I delta 83 zcmbQkm^MMumjMV=rtpLTDP2z&#}JO0$v^m6c>ag4{eS+$>#A$@ZBL(OzLpGoAGdX0 k;@i2#uO;i|TCz@LWnfK_%-S8tB?mIV)78&qol`;+0QlG*+yDRo diff --git a/graphics/battle_interface/unk_battlebox.pal b/graphics/battle_interface/unk_battlebox.pal deleted file mode 100644 index 862165f3f..000000000 --- a/graphics/battle_interface/unk_battlebox.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -255 255 255 -255 255 255 -106 90 115 -0 0 0 -213 230 255 -189 205 238 -238 238 255 -106 172 197 -90 139 180 -123 197 205 -0 0 0 -0 0 0 -123 197 255 -0 0 139 -255 131 131 -164 0 0 diff --git a/graphics/battle_interface/unk_battlebox.png b/graphics/battle_interface/unk_battlebox.png index 9f136c3af267f3979e6e30133217625d8f4e39e3..9ccf3b26b90c58d2b8589215d6e4bc84796daf51 100644 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBI!VDz$Ja~8uNErn9gt-0(gRH1xpup8<|M#AK z_wL>QtTjiYy0=sxJqr{Bg6gCH85p|%H#aX~U})rKxepXd^>lFzvFJ@sFgwOC(Ubm& zooCwR(;u1Gy#IV^c4nNlo%e#N!Gg-$63&cL`)3xhrs=InU=Uf*oK~e#aFD<0q{ybCPmCPTxMkT7vu;}S3j3^ HP6Eak-(ffAtM$Q8UJS?Vb zPY6glY@XpG@U`uLvzXV!J)9CbJ4>HFd$5#QwEqdCLO|%r*)vn58NN)JXUMm4Pv$*e z{+{0wfzzk&-rkXCAK~z|U?Uqey!!Qs=O}ps2 z-ehef$T~C!NQ5V4} zrsIjizUx|!MEDpuitzWsvnEvgtI%89_tqzW+)Hdhu+|+Uwcjd0V$Xwcjf;bNV+}Z;c@Zpf=9JR_2ELCWYKE$q!s^D6?WIVr~G$+yIEV0f1vAxkdpCBsX9|ED;5q8>oPC0~Jti zV1%6}@bBfX3g%&9;iC?SxdB+88)k1(%nd-91@rg;QGerICdgi700000NkvXXu0mjf DJOjxQ delta 430 zcmV;f0a5FfgK6~)Fsp=$v|kj_$;^| zS+WP54Ojrl8-KtbByWIGEO`SAbLnU1^XGwSZlrq;fiDpNu{SV4>X--!6ULZ3os`%>JtBzjPnudn| z8U8=J_Y6qRsg^jq#!E9O%g{5;7N}>Hr;B5VMQ?J#0;UAt!|V;8E}#C$$kz73C_UMx zp)qmS|N5GS#;rW-|J1W>6LR9}%3S$iv5g|DP(6!i%^!~wES!J1Sf2j=_og8Gir(002SI&cXly0J2F$K~y-6)zhI4!Y~j9;PXrRoRf2VgM|VD z*(ofpNCW~&vOUDy9G;q^xZS$^SJMPeu3whkpTES)PzDG+8sbpz&=6njeFQ^XUkOgI z_?+Gc4IE1XGihK}fic=2W(;0agSTkg(mDJO2o^Q++ersY9aCG4pGBYZvVISUke=rZ zAeQzUK*VM@fC%3C6u=KC^oOjZSS(}43BR9)JK567ru Udaw=eWB>pF07*qoM6N<$f(0{O%K!iX diff --git a/graphics/battle_interface/unused_window4.png b/graphics/battle_interface/unused_window4.png index 6c249c96dfbb83420c985407380f70e94a2c0829..39ea78e94e42c8a59e142c967ea2a04b9941cccf 100644 GIT binary patch delta 396 zcmV;70dxN90-FPn8Gi!+002p^a#;WX05DKYR7C&)0RR90{{R3|Vw`G=z5oCJYFcyE z&DB9ldnqw7{{a8y-sb-R|D1am&8$i(Qfe_tW<3A^0VYXAK~z|U?bfXh!Y~vC;F{ra zb36hhkRTBVBr^m%vl=91OWy!DS;;HP+*Ciqc)#JZMyfPb=tgdNHK(ygSsy^MV! z0jHwtGNZ!STFl2p7?aD23JU~TuUKz~z_v}G1_*=@D1}xCY0w|!^e*=Mw*QB}0SbW- z0F?s(4@?e#Uf_joHe*z$$qE4d`5Vn3asZ#?0r+>cnYO>j9_v_+RmgT8@a$j7@k#G31;3G#KpwQt2Ag?6v7)LU7ENL8S z*E1XMlvtp?B@JQ(BJc>i{v+|9A5!1>AtmeG{7`lCLkB(q%^1~ge)tgl{rmtfcX<2z q1JBg9JZWiuco(4g!TwhLa{)D}W0U$w(!>A&002ovP6b4+LSTZc8M5C1 delta 346 zcmV-g0j2(%1L^{h8Gir(003JW-M0V$0WnELK~z|U?be|V!Y~j9;Chn2%v3#ww?IzL z@dgbGNK7$Uf*BHlK$1WLk1#ifr)G2nv99BOSThVgNBd>$miF#g34(n9w4#EQI-XL& z%C+2|iC|^CWn^ec@3Z?1fq9>R=Li%KaE_i((BPIQbQY6I-+$lXZvaQ20Dva|zyp&2 zP(1*r>0I}E9G4pa%=Nd5LDmASVjx?9RSe?H1@^+Kf6!R?8XOQ9dxL9pVTWEa24En~ zZ!M`x{jAkwu{YJeY8R0ZA`)-_rv@U=7#{f0Oz{bBg_vS!Qamhpt-~D s?+-k?UM=NQPxHgK0L>4Z4rwCr0H6eoP$1IRCjbBd07*qoM6N<$g0I1vhyVZp diff --git a/graphics/battle_interface/window.png b/graphics/battle_interface/window.png index 5167ce2c50d3cb1144cf2815c160b1ab2a32aa4f..a3f50fedab0e78b10bbca96e0afdcebcf5af2f03 100644 GIT binary patch literal 505 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLDIg8-ipS0Mc#2pAZGlICP}?*%fm zqKdDcz3S*yt!ZfZpW*+rd(VL6oN9@)YrHgrvJ5@bY#A6BTRdGHLoyoQPP5HAY#`Dg zdg7kViAj6EFtwiJEO~X0xuo#ri>1qsf4HI`z};3s)uiFijGDuG+8Ya#=}AagW`%&_-6yZ9yA^<=O=gc3Zfyh_1M3r`)7& z?!+CoRV2sz0KZk-V?!qp2IAz=pR6A;=1~$G; z>G*l{?bc`i(t2-eJpI)i5URR4IQ6vmVKsp}rEib7IIw1ymF8K*{%A^y_LSq&Suyv( zvh05`5`Qwi9q+$qNnkzjrs*KF?ZKIE+e`PSWoc{lK3Kr|H)LbNHpAw`oiDEQl)QF} zJ+q9N{dBhtmtLIltJhpA68^GmsSAW(+-7;d?k1mHo!f*KmU_pA&b-%*_w_ioKRu{t zujsLVJx}Jr1$sQMk4$-RL*<4)*P&ekLT~N`I?irjQBh#z^l)gJFaBiewl|Mv#opV@ tFY(iT&V9S3z6Fy$8#xNFz|j9`{K^^sAB%1`>juUlgQu&X%Q~loCID25*Q)>k literal 455 zcmV;&0XY7NP)!Fm75O0wOHW#OK~X=?_VZAI~$NEsmf!H0V@iSg05z#190c| zyOR6c+{7Ms1!%6HYC#Qv5>O~mkz_#Km;?||T*v}^*Vkdw)LPYm%mB0~1)zqO2DJYw zJk%I)Ses(7-8HqKs;55&P?4y~MFZNwlg*m>Xma9O`ssBHKsJCOOO6I~FFhQz0xE$1 zayz-XI5nfbex%Ha`beLdj(8+A@K{C@Ji+xF#e@ $@ diff --git a/include/graphics.h b/include/graphics.h index 81b6b4ddf..3848bea86 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4861,7 +4861,7 @@ extern const u32 gFile_graphics_battle_interface_ball_status_bar_sheet[]; extern const u8 gHealthboxElementsGfxTable[][32]; extern const u16 gBattleInterface_BallStatusBarPal[]; extern const u16 gBattleInterface_BallDisplayPal[]; -extern const u16 gUnknown_8D12404[]; +extern const u16 gBattleInterface_SummaryBallDisplayGfx[]; // item_menu extern const u32 gUnknown_8E830CC[]; diff --git a/src/battle_interface.c b/src/battle_interface.c index 3744c34eb..32bab8803 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -342,7 +342,7 @@ static const struct SubspriteTable gUnknown_8260404[] = { {NELEMS(gUnknown_82603E4), gUnknown_82603E4} }; -static const u16 gUnknown_26040C[] = INCBIN_U16("graphics/battle_interface/unk_826404C.4bpp"); +static const u16 gBattleInterface_Unused[] = INCBIN_U16("graphics/battle_interface/unused.4bpp"); static const struct CompressedSpriteSheet sStatusSummaryBarSpriteSheets[] = { {gFile_graphics_battle_interface_ball_status_bar_sheet, 0x0200, 55052}, @@ -360,8 +360,8 @@ static const struct SpritePalette sStatusSummaryBallsSpritePals[] = { }; static const struct SpriteSheet sStatusSummaryBallsSpriteSheets[] = { - {gUnknown_8D12404, 0x0080, 55060}, - {gUnknown_8D12404, 0x0080, 55061} + {gBattleInterface_SummaryBallDisplayGfx, 0x0080, 55060}, + {gBattleInterface_SummaryBallDisplayGfx, 0x0080, 55061} }; static const struct OamData gUnknown_82604AC = { diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 30b8bda88..c144833a1 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -703,8 +703,9 @@ static const struct WindowTemplate sUnusedWinTemplate = .baseBlock = 0x3F, }; -static const u16 gUnknown_82506D0[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal"); -static const u32 gUnknown_82506F0[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz"); +// not used +static const u16 sUnknownBattleboxPal[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal"); +static const u32 sUnknownBattleboxGfx[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz"); // not used static const u8 sRubyLevelUpStatBoxStats[] = @@ -5593,8 +5594,8 @@ static void sub_8026480(void) { gBattle_BG2_Y = 0; gBattle_BG2_X = 0x1A0; - LoadPalette(gUnknown_82506D0, 0x60, 0x20); - CopyToWindowPixelBuffer(13, gUnknown_82506F0, 0, 0); + LoadPalette(sUnknownBattleboxPal, 0x60, 0x20); + CopyToWindowPixelBuffer(13, sUnknownBattleboxGfx, 0, 0); PutWindowTilemap(13); CopyWindowToVram(13, COPYWIN_BOTH); PutMonIconOnLvlUpBox(); diff --git a/src/graphics.c b/src/graphics.c index c9fc09a1e..56faf0b60 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -366,10 +366,10 @@ const u8 gHealthboxElementsGfxTable_Misc[] = INCBIN_U8("graphics/battle_interfac const u8 gHealthboxElementsGfxTable_HpBarAnim[] = INCBIN_U8("graphics/battle_interface/hp_bar_anim.4bpp"); const u8 gHealthboxElementsGfxTable_MiscFrameEnd[] = INCBIN_U8("graphics/battle_interface/misc_frame_end.4bpp"); -const u8 gUnknown_8D12404[] = INCBIN_U8("graphics/battle_interface/ball_display.4bpp"); +const u8 gBattleInterface_SummaryBallDisplayGfx[] = INCBIN_U8("graphics/battle_interface/ball_display.4bpp"); //Originally an array? -const u8 gUnknown_08C1249C[] = INCBIN_U8("graphics/battle_interface/ball_display_unused_extra.4bpp"); +const u8 gBattleInterface_UnusedSummaryBallDisplayGfx[] = INCBIN_U8("graphics/battle_interface/ball_display_unused_extra.4bpp"); const u8 gBattleInterfaceGfx_Status2[] = INCBIN_U8("graphics/battle_interface/status2.4bpp"); // these three duplicate sets of graphics are for the opponent pokemon const u8 gBattleInterfaceGfx_Status3[] = INCBIN_U8("graphics/battle_interface/status3.4bpp"); // and are also for use in double battles. they use dynamic palettes so const u8 gBattleInterfaceGfx_Status4[] = INCBIN_U8("graphics/battle_interface/status4.4bpp"); // coloring them is an extreme headache and wont be done for now diff --git a/src/water.c b/src/water.c index 5f7fa4dc6..eb7c13c8f 100644 --- a/src/water.c +++ b/src/water.c @@ -56,7 +56,7 @@ static void CreateWaterSportDroplet(struct Task*); static void CreateWaterPulseRingBubbles(struct Sprite*, s32, s32); // Both unused? Comment copied from pokeemerald -static const u8 gUnknown_83E44F4[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.4bpp"); +static const u8 gUnknown_83E44F4[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp"); static const u8 gUnknown_83E4874[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin"); static const union AnimCmd sAnim_RainDrop[] = From ea68ec3fd7359061eaa4ca0e2550ee9961a52449 Mon Sep 17 00:00:00 2001 From: hjk321 Date: Tue, 30 Mar 2021 23:20:48 -0500 Subject: [PATCH 03/28] Merge battle graphics into battle_terrain and remove un-included files The previous battle folder contained the used (and until recently undocumented) battle terrain graphics, while everything in the previous battle_terrain folder contained unused data (which is now at battle_terrain/unused, minus the files that never get included in the rom). --- graphics/battle_terrain/cave/anim_map.bin | Bin 2048 -> 0 bytes graphics/battle_terrain/cave/anim_tiles.png | Bin 1416 -> 0 bytes graphics/battle_terrain/cave/map.bin | Bin 4096 -> 0 bytes graphics/battle_terrain/cave/palette.pal | 51 -------- graphics/battle_terrain/cave/tiles.png | Bin 864 -> 0 bytes .../battle_terrain/long_grass/anim_map.bin | Bin 2048 -> 0 bytes .../battle_terrain/long_grass/anim_tiles.png | Bin 1127 -> 0 bytes graphics/battle_terrain/long_grass/map.bin | Bin 4096 -> 0 bytes .../battle_terrain/long_grass/palette.pal | 51 -------- graphics/battle_terrain/long_grass/tiles.png | Bin 900 -> 0 bytes .../battle_terrain/pond_water/anim_map.bin | Bin 2048 -> 0 bytes .../battle_terrain/pond_water/anim_tiles.png | Bin 592 -> 0 bytes graphics/battle_terrain/pond_water/map.bin | Bin 4096 -> 0 bytes .../battle_terrain/pond_water/palette.pal | 51 -------- graphics/battle_terrain/pond_water/tiles.png | Bin 732 -> 0 bytes graphics/battle_terrain/rock/anim_map.bin | Bin 2048 -> 0 bytes graphics/battle_terrain/rock/anim_tiles.png | Bin 760 -> 0 bytes graphics/battle_terrain/rock/map.bin | Bin 4096 -> 0 bytes graphics/battle_terrain/rock/palette.pal | 51 -------- graphics/battle_terrain/rock/tiles.png | Bin 725 -> 0 bytes graphics/battle_terrain/sand/anim_map.bin | Bin 2048 -> 0 bytes graphics/battle_terrain/sand/anim_tiles.png | Bin 644 -> 0 bytes graphics/battle_terrain/sand/palette.pal | 51 -------- graphics/battle_terrain/sand/tiles.png | Bin 805 -> 0 bytes graphics/battle_terrain/sky/anim_map.bin | Bin 2048 -> 0 bytes graphics/battle_terrain/sky/anim_tiles.png | Bin 961 -> 0 bytes graphics/battle_terrain/sky/map.bin | Bin 4096 -> 0 bytes graphics/battle_terrain/sky/palette.pal | 51 -------- graphics/battle_terrain/sky/tiles.png | Bin 820 -> 0 bytes graphics/battle_terrain/stadium/map.bin | Bin 4096 -> 0 bytes .../battle_terrain/tall_grass/anim_map.bin | Bin 2048 -> 0 bytes .../battle_terrain/tall_grass/anim_tiles.png | Bin 793 -> 0 bytes graphics/battle_terrain/tall_grass/map.bin | Bin 4096 -> 0 bytes .../battle_terrain/tall_grass/palette.pal | 51 -------- graphics/battle_terrain/tall_grass/tiles.png | Bin 739 -> 0 bytes .../terrain_building.bin | Bin .../terrain_building.pal | 0 .../terrain_building.png | Bin .../terrain_building_anim.bin | Bin .../terrain_building_anim.png | Bin .../terrain_cave.bin | Bin .../terrain_cave.pal | 0 .../terrain_cave.png | Bin .../terrain_cave_anim.bin | Bin .../terrain_cave_anim.png | Bin .../terrain_grass.bin | Bin .../terrain_grass.pal | 0 .../terrain_grass.png | Bin .../terrain_grass_anim.bin | Bin .../terrain_grass_anim.png | Bin .../terrain_indoor.bin | Bin .../terrain_indoor.png | Bin .../terrain_indoor_1.pal | 0 .../terrain_indoor_2.pal | 0 .../terrain_indoor_agatha.pal | 0 .../terrain_indoor_bruno.pal | 0 .../terrain_indoor_champion.pal | 0 .../terrain_indoor_gym.pal | 0 .../terrain_indoor_lance.pal | 0 .../terrain_indoor_leader.pal | 0 .../terrain_indoor_link.pal | 0 .../terrain_indoor_lorelei.pal | 0 .../terrain_indoor_plain.pal | 0 .../terrain_longgrass.bin | Bin .../terrain_longgrass.pal | 0 .../terrain_longgrass.png | Bin .../terrain_longgrass_anim.bin | Bin .../terrain_longgrass_anim.png | Bin .../terrain_mountain.bin | Bin .../terrain_mountain.pal | 0 .../terrain_mountain.png | Bin .../terrain_mountain_anim.bin | Bin .../terrain_mountain_anim.png | Bin .../terrain_pond.bin | Bin .../terrain_pond.pal | 0 .../terrain_pond.png | Bin .../terrain_pond_anim.bin | Bin .../terrain_pond_anim.png | Bin .../terrain_sand.bin | Bin .../terrain_sand.pal | 0 .../terrain_sand.png | Bin .../terrain_sand_anim.bin | Bin .../terrain_sand_anim.png | Bin .../terrain_underwater.bin | Bin .../terrain_underwater.pal | 0 .../terrain_underwater.png | Bin .../terrain_underwater_anim.bin | Bin .../terrain_underwater_anim.png | Bin .../terrain_water.bin | Bin .../terrain_water.pal | 0 .../terrain_water.png | Bin .../terrain_water_anim.bin | Bin .../terrain_water_anim.png | Bin .../battle_terrain/underwater/anim_map.bin | Bin 2048 -> 0 bytes .../battle_terrain/underwater/anim_tiles.png | Bin 506 -> 0 bytes graphics/battle_terrain/underwater/map.bin | Bin 4096 -> 0 bytes .../battle_terrain/underwater/palette.pal | 51 -------- graphics/battle_terrain/underwater/tiles.png | Bin 773 -> 0 bytes .../{ => unused}/building/anim_map.bin | Bin .../{ => unused}/building/anim_tiles.png | Bin .../{ => unused}/building/map.bin | Bin .../{ => unused}/building/palette.pal | 0 .../{ => unused}/building/palette2.pal | 0 .../{ => unused}/building/palette3.pal | 0 .../{ => unused}/building/tiles.png | Bin .../{cave => unused}/groudon.pal | 0 .../{water => unused}/kyogre.pal | 0 .../{plain/palette.pal => unused/plain.pal} | 0 .../{ => unused}/stadium/battle_frontier.pal | 0 .../{sand => unused/stadium}/map.bin | Bin .../{ => unused}/stadium/palette1.pal | 0 .../{ => unused}/stadium/palette2.pal | 0 .../{ => unused}/stadium/palette3.pal | 0 .../{ => unused}/stadium/palette4.pal | 0 .../{ => unused}/stadium/palette5.pal | 0 .../{ => unused}/stadium/palette6.pal | 0 .../{ => unused}/stadium/palette7.pal | 0 .../{ => unused}/stadium/tiles.png | Bin graphics/battle_terrain/water/anim_map.bin | Bin 2048 -> 0 bytes graphics/battle_terrain/water/anim_tiles.png | Bin 887 -> 0 bytes graphics/battle_terrain/water/map.bin | Bin 4096 -> 0 bytes graphics/battle_terrain/water/palette.pal | 51 -------- graphics/battle_terrain/water/tiles.png | Bin 766 -> 0 bytes graphics_file_rules.mk | 30 ++--- src/battle_bg.c | 116 +++++++++--------- src/data/graphics/battle_terrain.h | 30 ----- src/data/graphics/battle_terrain_unused.h | 32 +++++ src/graphics.c | 2 +- 128 files changed, 106 insertions(+), 563 deletions(-) delete mode 100644 graphics/battle_terrain/cave/anim_map.bin delete mode 100644 graphics/battle_terrain/cave/anim_tiles.png delete mode 100644 graphics/battle_terrain/cave/map.bin delete mode 100644 graphics/battle_terrain/cave/palette.pal delete mode 100644 graphics/battle_terrain/cave/tiles.png delete mode 100644 graphics/battle_terrain/long_grass/anim_map.bin delete mode 100644 graphics/battle_terrain/long_grass/anim_tiles.png delete mode 100644 graphics/battle_terrain/long_grass/map.bin delete mode 100644 graphics/battle_terrain/long_grass/palette.pal delete mode 100644 graphics/battle_terrain/long_grass/tiles.png delete mode 100644 graphics/battle_terrain/pond_water/anim_map.bin delete mode 100644 graphics/battle_terrain/pond_water/anim_tiles.png delete mode 100644 graphics/battle_terrain/pond_water/map.bin delete mode 100644 graphics/battle_terrain/pond_water/palette.pal delete mode 100644 graphics/battle_terrain/pond_water/tiles.png delete mode 100644 graphics/battle_terrain/rock/anim_map.bin delete mode 100644 graphics/battle_terrain/rock/anim_tiles.png delete mode 100644 graphics/battle_terrain/rock/map.bin delete mode 100644 graphics/battle_terrain/rock/palette.pal delete mode 100644 graphics/battle_terrain/rock/tiles.png delete mode 100644 graphics/battle_terrain/sand/anim_map.bin delete mode 100644 graphics/battle_terrain/sand/anim_tiles.png delete mode 100644 graphics/battle_terrain/sand/palette.pal delete mode 100644 graphics/battle_terrain/sand/tiles.png delete mode 100644 graphics/battle_terrain/sky/anim_map.bin delete mode 100644 graphics/battle_terrain/sky/anim_tiles.png delete mode 100644 graphics/battle_terrain/sky/map.bin delete mode 100644 graphics/battle_terrain/sky/palette.pal delete mode 100644 graphics/battle_terrain/sky/tiles.png delete mode 100644 graphics/battle_terrain/stadium/map.bin delete mode 100644 graphics/battle_terrain/tall_grass/anim_map.bin delete mode 100644 graphics/battle_terrain/tall_grass/anim_tiles.png delete mode 100644 graphics/battle_terrain/tall_grass/map.bin delete mode 100644 graphics/battle_terrain/tall_grass/palette.pal delete mode 100644 graphics/battle_terrain/tall_grass/tiles.png rename graphics/{battle => battle_terrain}/terrain_building.bin (100%) rename graphics/{battle => battle_terrain}/terrain_building.pal (100%) rename graphics/{battle => battle_terrain}/terrain_building.png (100%) rename graphics/{battle => battle_terrain}/terrain_building_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_building_anim.png (100%) rename graphics/{battle => battle_terrain}/terrain_cave.bin (100%) rename graphics/{battle => battle_terrain}/terrain_cave.pal (100%) rename graphics/{battle => battle_terrain}/terrain_cave.png (100%) rename graphics/{battle => battle_terrain}/terrain_cave_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_cave_anim.png (100%) rename graphics/{battle => battle_terrain}/terrain_grass.bin (100%) rename graphics/{battle => battle_terrain}/terrain_grass.pal (100%) rename graphics/{battle => battle_terrain}/terrain_grass.png (100%) rename graphics/{battle => battle_terrain}/terrain_grass_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_grass_anim.png (100%) rename graphics/{battle => battle_terrain}/terrain_indoor.bin (100%) rename graphics/{battle => battle_terrain}/terrain_indoor.png (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_1.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_2.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_agatha.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_bruno.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_champion.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_gym.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_lance.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_leader.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_link.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_lorelei.pal (100%) rename graphics/{battle => battle_terrain}/terrain_indoor_plain.pal (100%) rename graphics/{battle => battle_terrain}/terrain_longgrass.bin (100%) rename graphics/{battle => battle_terrain}/terrain_longgrass.pal (100%) rename graphics/{battle => battle_terrain}/terrain_longgrass.png (100%) rename graphics/{battle => battle_terrain}/terrain_longgrass_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_longgrass_anim.png (100%) rename graphics/{battle => battle_terrain}/terrain_mountain.bin (100%) rename graphics/{battle => battle_terrain}/terrain_mountain.pal (100%) rename graphics/{battle => battle_terrain}/terrain_mountain.png (100%) rename graphics/{battle => battle_terrain}/terrain_mountain_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_mountain_anim.png (100%) rename graphics/{battle => battle_terrain}/terrain_pond.bin (100%) rename graphics/{battle => battle_terrain}/terrain_pond.pal (100%) rename graphics/{battle => battle_terrain}/terrain_pond.png (100%) rename graphics/{battle => battle_terrain}/terrain_pond_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_pond_anim.png (100%) rename graphics/{battle => battle_terrain}/terrain_sand.bin (100%) rename graphics/{battle => battle_terrain}/terrain_sand.pal (100%) rename graphics/{battle => battle_terrain}/terrain_sand.png (100%) rename graphics/{battle => battle_terrain}/terrain_sand_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_sand_anim.png (100%) rename graphics/{battle => battle_terrain}/terrain_underwater.bin (100%) rename graphics/{battle => battle_terrain}/terrain_underwater.pal (100%) rename graphics/{battle => battle_terrain}/terrain_underwater.png (100%) rename graphics/{battle => battle_terrain}/terrain_underwater_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_underwater_anim.png (100%) rename graphics/{battle => battle_terrain}/terrain_water.bin (100%) rename graphics/{battle => battle_terrain}/terrain_water.pal (100%) rename graphics/{battle => battle_terrain}/terrain_water.png (100%) rename graphics/{battle => battle_terrain}/terrain_water_anim.bin (100%) rename graphics/{battle => battle_terrain}/terrain_water_anim.png (100%) delete mode 100644 graphics/battle_terrain/underwater/anim_map.bin delete mode 100644 graphics/battle_terrain/underwater/anim_tiles.png delete mode 100644 graphics/battle_terrain/underwater/map.bin delete mode 100644 graphics/battle_terrain/underwater/palette.pal delete mode 100644 graphics/battle_terrain/underwater/tiles.png rename graphics/battle_terrain/{ => unused}/building/anim_map.bin (100%) rename graphics/battle_terrain/{ => unused}/building/anim_tiles.png (100%) rename graphics/battle_terrain/{ => unused}/building/map.bin (100%) rename graphics/battle_terrain/{ => unused}/building/palette.pal (100%) rename graphics/battle_terrain/{ => unused}/building/palette2.pal (100%) rename graphics/battle_terrain/{ => unused}/building/palette3.pal (100%) rename graphics/battle_terrain/{ => unused}/building/tiles.png (100%) rename graphics/battle_terrain/{cave => unused}/groudon.pal (100%) rename graphics/battle_terrain/{water => unused}/kyogre.pal (100%) rename graphics/battle_terrain/{plain/palette.pal => unused/plain.pal} (100%) rename graphics/battle_terrain/{ => unused}/stadium/battle_frontier.pal (100%) rename graphics/battle_terrain/{sand => unused/stadium}/map.bin (100%) rename graphics/battle_terrain/{ => unused}/stadium/palette1.pal (100%) rename graphics/battle_terrain/{ => unused}/stadium/palette2.pal (100%) rename graphics/battle_terrain/{ => unused}/stadium/palette3.pal (100%) rename graphics/battle_terrain/{ => unused}/stadium/palette4.pal (100%) rename graphics/battle_terrain/{ => unused}/stadium/palette5.pal (100%) rename graphics/battle_terrain/{ => unused}/stadium/palette6.pal (100%) rename graphics/battle_terrain/{ => unused}/stadium/palette7.pal (100%) rename graphics/battle_terrain/{ => unused}/stadium/tiles.png (100%) delete mode 100644 graphics/battle_terrain/water/anim_map.bin delete mode 100644 graphics/battle_terrain/water/anim_tiles.png delete mode 100644 graphics/battle_terrain/water/map.bin delete mode 100644 graphics/battle_terrain/water/palette.pal delete mode 100644 graphics/battle_terrain/water/tiles.png delete mode 100644 src/data/graphics/battle_terrain.h create mode 100644 src/data/graphics/battle_terrain_unused.h diff --git a/graphics/battle_terrain/cave/anim_map.bin b/graphics/battle_terrain/cave/anim_map.bin deleted file mode 100644 index 0ab486890d3bdd74a68541988efb06eea3898894..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeH_RZ|uK5JivOU^fVgg4o@96fiJR1iQPtun18U6uY~-ySw!-={LUd0y91^!+dvN z@4d5gc9Gx|9{~!dpKgYkW=TN>wk|Y3jp@u_CbO8$9OpXE`7B@|i&)GOmi{d$MQO@d z)^e7o0u`x5WvWosYK9ofGM2M~m8@d5Yh3F(*SmoX1Gn*N;(;2lEpT&-R=%^+{rF-$zwNrh#=CYHZ#iRwji1qTN-OCTGNKMv?JfW z?qfd(IOrh{d&Hw2<2WZc$th0Lo(^`jlb!8iSGv*N9`>}Cz3pRP`*Fszp7T5xyyzt_ zd&R3>^SU><=`C+7{T*PO@g_LXK@N6^i4Jv`!yVyB?|9dH-uHnIedJ@G_|#`U_k}Ng zp3>{wGwb)4g!;6x`m*(px-jcvm*ci diff --git a/graphics/battle_terrain/cave/anim_tiles.png b/graphics/battle_terrain/cave/anim_tiles.png deleted file mode 100644 index 464a2058b55b075e7d546a7ca4d66374a2bf3274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1416 zcmbW1`#aQm6vsc`nPGAtjX`pm^+-s&xfB~}#+_slr9s5FG@}Mnv6B6UT@$&iWR^y0 z8o7-7b!Xo`d`&kU=FsF;|9U6)+j>FGb%^PF>D@8^BabACKmeZ1XN6m=8<04g5t z&VDk&Ukinlbqh?&XBqN+y!>5c6t<-I3rU=8QVWaHQ4`+5p|`L|LJnP~$3&ExY`>Pm z@D3J5$e{>p=>KD%;z=x|`?X|~L@nu4B9`oeOn*z6^KB|KzlCy$pBMmCvxhU$KjzA8 zv0dJ~0~lCEY-Tu$3nJZ>GY{k9`uwR%J)5OHP+%}l0xT}WfgLw1gE>8qBUO7w=JOOo z4Ktfk#C~X$g1xYAR+OSUkj`2dh_YE7*_I|<)>hF> zAp%u`X*76>1CJhpfv1L=1t^3nKdK7#=nlL$JqdxQw27PvD#>V%KwY&i*c4#o|IkB0 z1fwzwd@d5as57@irhzA;O(|KKfUL2X()Z7yRv5KudN;x{=u_A$*)$B^ zx2?ydKTFDEq`G|n5mMBS_i|+`za$DAb=B^I{RaTD+EL41tboRZ z{?-=6N9Uzk3Bt9KTIl&fDybRQh@_mvKTd?pA*WNzhnMLC%#cSY~NA+(0LH z?f^A8YIsUwWOs4(N%!6dg8lbs8IQPbm%9r_5E)x-b=UH+$9>QY)n!kjxBoB3EFHm- zSJoFKM()%&_``7OpQxUL2JV8kgwvf!W|>=jS*k74aSMnSaAm{ywY}L z+hLk9@h?G@(RO!CK;=;GE8D8FV!*#9sUYoUsd>gz)CmwBBKm^rU-9kigk zxLokU{8$4#Moz51$&-Q)n&i~(^Yv?wpHP8ae%7>*+Hv)q{eq^y12(q27&(=!R3nJ@ zfkp3j5Y|SvTV_QSu^#H|pBt>6TVz!(kIPXfAWCJ3RCl4oV!0z4a7ODS;stHN6<$00 z!sH>sa(Nrw2DFBw@%)`fI8b=Quw}gl+5NBLNnF+qFPzq;CL*k*f|2^sQ2TP)L+IC4 zpea29+1EHIHhNpHsG!tSHKuxZvdQpaB`lr^B7nRRsk@S)mEDE5FXYlz)*Zl5MX#Nw z6)np{^BI(}8FSCrGqn76ppk@WGA*I{J>NuO3wWXg}+^OQf{*@s(?4F19Va?v(Mn5*eR3U=EH6SauZd3yjyil zzvNrOD@?&1X zso*bVEVT_Z5F$(?5u!BFObe~F5u=?B;!bm&bkR)@y(H+Pp8*CLVwe#|8DreZLy`$5 znPQq5Qlyz>jtuiGu*i~=7t5@$${JbL*ZJCp` zcTLjXCB<9jL>*mH3}oNCnzg1oXv>tOy>qgTF3CE&rkD)%SzeA)ii5UvM_t|0{Osx+ zpb0=W1OY`LvOqxy;E4^o#=yYT?djqelF|5f+Qz)w1_Etgx!9~q(jFX?Q(iukn>&)* zLf{VrCriF8mvgcBdd5edt9Shr{l!(=y3c9(f)mR=Rj8EOTDE(nO4wW z?fm7T(@M2?R;GiWMLzFX$h6^aY3J;%+oxxJlSp%z|NQMzEyturrU3RM`EP?tCvJWl zY0Y;z=KmVUgI^rF9rko*&Z@056<9A9nkVLy%Qv&X{gz{5|HoXbx@#t7=Bp=^`kTpR zsn4vl4my6uWXo2r`6c|*)Kues=h%mEoVxEMZ8V$Vn%}29wnuCCcq;BbJa5LW{%5j{ zpR8K>ZyLSdZ8xW!=ZXLa&+}TB2j{qNe79iQerd{wCw_v}{mviDRLwSSHr-RvW?QEk zvf%td>tAxmAA~tE$*cbj%yZk{l;&^8_Ro-&XY14&pA{Q?k2r7Mu{-kGIe`oOoeL$R zel(wb^e)Z8d8UQ^3nuU2chLva3d_57&hoNkt@`FMJI%2C^RidRob5watX?SQgO`SjdAOCWp{_h%QuMS2oF}7&@@9^OMmj_d}Pw1#UYiaRV zWl~YxPu&aa4c|JwTz~Oj+jO1BT5ApeTZ%uNuJeae_9V-rP_DbE9?o0wYc#)w*y9`y~?@q)NWG;3p3i~1LP;*i#lmFq{OTNn<#LQ>D@-g^x t>}NODe_s4`nROZWRx~JZG$ByW1OA8SYJWt(3sM3lP)}Dsmvv4FO#ot}m%RW0 diff --git a/graphics/battle_terrain/long_grass/anim_map.bin b/graphics/battle_terrain/long_grass/anim_map.bin deleted file mode 100644 index bd86cce6c89ee47b89377b9a808358e1ce02f2ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeIx*E<$)7{}okAq^U&sUb=cl{ApMWHivyK$$I-L`sPYC8d-WCH<@Zgx_HY@B5tI zN6+WFzL7|jpE&UnERiTlvZYciv)l?RrAiYC_$sTdu~xba>ttGQgN-)XY>O;gg?yXs zcF49N>@)g*pP{@nycfdi#4k>Zi5l0&wKqnM8TZyZ6W*Kj!ADa*`D|LqzxZm#H{bp6(=W5;{PxGZ VzZU!x@+eL{!l{XZc8yUJub?cPwikjw@VcmoJ@LoN zX2uemJB3_8{=!39#O`3>`|HXO&wG6P%n*?zcAj)JABn`i@XE?4zB4;?*|sT>_(;&V zU>U;j?dq;1X-CzX-LbE=B3Jy+pcN)H7;5}9eRWKB+3I2FZLd<<*$lzvfjB{P&V{>} z(st80$)FP7v26-HJLsRCU4aua?-uZ!FJ}plW4l}6`HM*2T1>XNbs(LqWLU|A{sva# z<8x_rB*{nL5PFnM>?B`7-RRC=+pw0@U~M7abW7?<=AxV8Go?N5bWS1=gHcDyxi^cw zmA4~(I(^ydns1v}r1dI~_x<7M&&Ze16P|<{93&>i)19@b3(LeQ+^1S(E{H>)P1X^# zmPrpE6~|>AhXu?$_tQxR$2oHDK)q3n?`Qesxz;rHArCr=Os1!9JCP^kFuI|K4u4Bx zN^U2cUkCf>aoDZlZ`lCp;XpekSgCCL9y9YWTK*mkz(p_-|J{Y~vjNzL{l%CAl*9Tn z3aB&xNchmBV8U5M=8&0m-7Xts?2H|ggK8to+RSIO`?v`V71Uk-#05@2OTCW#&;ZjX zNkV?07`mz&5DSHr2uMjMlm-IPliIp1APhK#E{!8ter?_rT0K9AA}T)?M?K%P4vg#}?UNMQ>+R1)xDo~`F5 zyes{!yb*?eXJRkeLM6bk#}j_w8RwdG?aJWBprniTCa-mlTtfPn9l}!C=FLLcT(Dg^ zEjzruBnfo0QdmozCN1&@vQ_!ht+){acrpa!zyo0PaP0j(*fOKvYMgVW5M)c~V2l7c z49)XHaOurn?&1X zso*bVEVT_Z5F$(?5u!BFObe~F5u=?B;!bm&bkR)@y(H+Pp8*CLVwe#|8DreZLy`$5 znPQq5Qlyz>jtuiGu*i~=7t5@$${JbL*uFl1tlhfA)_b}*hGaCpo#ve-V<^z}n~PbI{esWqzZpX7lgsz;mI%bP&p2k?e0YJh z#QT~BF^b_QL^pA%?e?7dYN31ifxC|aP9LZF-jtV(#~! z33zc|M(FP@>0QOvD`U-L>}9w_8y3#~*88f>o>^{vN!I&V#rLKYx@QXsOqzJo|NA=g zMU$h2ukJdnFLZ1LTffQ9^z?#~4^LSiD77fvy!%8m=Hi`Kx((aRKRo}~KD{HV>#-8+ zgD=bd7O}0K7U0LA#;|9}6M>D&49^<>RVQDI-oiIonW1i%N}~V^FT-mg&V_6Yj{omP zur*9%;;A)aU=vM<>RTvS&+sAnj|)Sqw}e(g|GsITlbwoxc>e3S8YR8Bj8RxqP=G^z z0h_=9>1Vqic-UpQZ)_-M@u>0ida~UfB^~qk3US7P-jQK>B1X}>tj;9w^ zC`YfA;@fT(x%jLk|6_YaR;@)0I#UDhJ4q~C5W^C|7$C^MsVD2nhe&&-oO{YLPMasm zq%r({AeyhDyPZLYHK1tcD{H?MA$m<*Mf}9 zOP4+`o8>l%@t7~rtdv~a;9J)o@0=i0yncSwh8nN)$NnscD%di${pp*-TV*(A+1*q3 zJzm~Cb5>tM+dt+5_g5aA6RN@9cZZ$3ENRlYiSG~X@xG?f`gFR^FRMqBM1>;DPIj3_ zRGpk8^6#Un_U-H5EtNIwwXAys4s5>ifc=H^i&myp7+~Il`w#M)MO<7$WI>7B)78&q Iol`;+0A^H%4FCWD diff --git a/graphics/battle_terrain/pond_water/anim_map.bin b/graphics/battle_terrain/pond_water/anim_map.bin deleted file mode 100644 index 00aee51352769ceaa49384d5280779fbad688127..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeIx#|^?z5CqUq&X{B}#$?KP{Z~Z^7AIt}JEzgyp0r7dgg|WtW*VAW+B&*=`UZwZ v#wMmRReNb}VQD3|wz0LdcW`u4IIG$(u5Rugo?hO*?LYs%6c+*^@UH?NvFC`f diff --git a/graphics/battle_terrain/pond_water/anim_tiles.png b/graphics/battle_terrain/pond_water/anim_tiles.png deleted file mode 100644 index 08568455f9aecc23b6339c4dd5a95c03d7000aa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLEz2?0JKu0Z<#|Nlu#o-O&7bo76B z@!2hB{~w)lZ_2a(_qwnC2g=@i1_bY(y?giW8xVj*NL7FK+y5z7-&OB@7B%IbVb)#& zuQ@Tc*ufEA`FqS&yNq^X+SUZ@UDW zZ#fsS>dACNrR8nDdEQ$yoR_^&y}E~WQPR{WS7KalX0>lWl#wIBpBS_Ka`((j+UFi` zF#6ydDR3;9LoZw1_#>zL$#a1_Mfe{a_ByEfPC!J`Y1xBq$L1Y+vBo8J`rK)!r|#I# zpHs2a^}tMi=b(c5i}&rlZKG9SDSYHW*OLq7)057)uCrTuQS%Isv16az4@F<=7e1Pk zX7J2$k9rw?{O0C&1+S)UJyE2o@B2eF+}zsz^byU<>IdqFliB@O@SAgI2){i)d&&HV z`O(w9|NSZUxORTSf2sCObJ#yjd^r2~51)j%Pp`7qpV)e|Kt6BL&(Hv~>s9(^+s~UE znasKEX|2{((IY>$1{b{T{$;WCzG}p(pTB?ZD7gPo5*XMh;D`17bA~4`pZWHFHb~sl L)z4*}Q$iB}m_H#j diff --git a/graphics/battle_terrain/pond_water/map.bin b/graphics/battle_terrain/pond_water/map.bin deleted file mode 100644 index 61f358f53211adb317e138da4d207772c896e39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH|*G@uF5Jj&b*idZP%fbeVWm~ZK0@x6HSK$9Y!Y?4_;c76sbN1t8WpdWT>?&1X zso*bVEVT_Z5F$(?5u!BFObe~F5u=?B;!bm&bkR)@y(H+Pp8*CLVwe#|8DreZLy`$5 znPQq5Qlyz>jtuiGu*i~=7t5@$${JbL*vVOoD6WMSUH^y44*XK%c$6!@~vdx_cipS!zj(~q&tJf9UAy3{%J z>gork438qSH%5m&y=&?f81{A7*AFbyROPZYUjJpDxtq zXczQ4m#%-yEucAnYsF^$8yyo$t6tniPcggaFH9onF5p{=>7m3QKaH%p>I{b0^ zyS1{r$Z%F;)0#$s#tK;g$R!rGy7&$?pO?1WxRpb}>Koy@5hz!SMw31X;DE8w{BKxj*%2GrlVjVqYTN zrTd^O^Y^NSDZAviut!NLJ=khuD-bk$l^lQCiX~f1jm6g(mP=Yk#J#=wf^QY$;!IH;Gl&!0o`hQ)_J_A1&Jw!?Zg^k}uw9io5O1 zIkmPdCmsiX(6b0`oP6bh_XkCbV8$i|4g~6Wz`n;k?PFVM(UIL6a73I&@7xELgH)&4w*I_8d5BZ&Ha8BYxKz@nJG+#z$v3 X^m^vP^?Ua_<h4lIiqft~jS_(sAOVSYfvFL*vPh8}2Z%MLhVMxo64?uhS}pYze=%%$0Ds z&Us!(=4XWs!;%K&-c7euj(R3^y??Wq)o;FN1j7e`PYPVSBLkP5zgBH8z2Ti9r_}l< z0W81nulcGc%CWmtgL%`RtH=FwQs%mxzS+-LA#|YY>QtNg_omh_TH=}>&U9jPMUzGE z4RNt(yZ`Gm>>~wnJ@JajydL#;^ET{vv{7%} zdSK<9ho2^%GTv8V9?oyL_O#9k&iki+oI5ARw(dsGe*d*0Q5iw)DMz9&^xZV~Of1~R zaX^^yGQWx%`}TRBe`ZboV%`w!VR*ai{ojfeP5hDy(=zV)t+Fyr;Vn9$c;Xz>CGY%@ zOh>)W*^}Jbz1dz^Z0_xjztE<)@!Sz77FM|@<<;#Ud^S{`U_IpM)Z41IFGy*_JCc zE&Q0yUz%@d%_Lqwoju8Xo^Z`wkrVgZWgF|X_nnMeVcS}_x{vpNJA}HwQ Zb7{xQ>AzZil43!r$?&1X zso*bVEVT_Z5F$(?5u!BFObe~F5u=?B;!bm&bkR)@y(H+Pp8*CLVwe#|8DreZLy`$5 znPQq5Qlyz>jtuiGu*i~=7t5@$${JbL*<|}G%F1bLwp%9L{^b;fwUaGVNO`9t zYEii5`e?3pY?CI#srcu}b4Edw^c>;1a+&_57G*A|P^CtlORj{gmHpbs8#KA*hFex;)UM&wxjw@F#|hc;uaeDcMHE#JibHs6^8&>$N> SqnOVFERvQafh2+BOyCCsF=+h& diff --git a/graphics/battle_terrain/sand/anim_tiles.png b/graphics/battle_terrain/sand/anim_tiles.png deleted file mode 100644 index 79c774acfafe9dae7cf3f73665a0a5a70fc525eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLEz2?0JKu0Z<#|Fc)GM!kF2{q5VD zXV0?!|KI!WS@Zw@&wx@u@a|ppyLVH7Qs2I9`S$H7Pz0#{-qoOQ-++R9pFJ!7|NkgZ z4O~4~6AE$ksMnG?3is|cqln_*sBDj9XJBAl@9E+glF|5fN^H>~1D=-Ln#LWw7z&uO zOaAY^I;mbseHoA6^4g1b1_GYD=cgXn`9EMs)`V@{KgBt(ea_xczJFuu7QPAhJO0_k zpMU=2t1`<>zB<(%d(Wn(UWR= zy0uS~AO9($oXRlE`Ok*ATO9k;I}Di&yet}9uHXM4U{f{E{S2F+;YG_;41QcpY`5J+ z9Rxc1A~z{qo2fWmz_zrZCt%Sro-8Y)0$zqCY)uFBozq`@>{aCX>2M?KhJr|5)<*_Y zjg_}=T#VZKcH!1tS!bWExfC6~W%1jq=K^eFw(IW;*v-luT6OX*N6qY{7pu&_Enjl1 zqdLU$TEAhLy}En;I>9No;zD-LiJh0Q)34;zzR6S51>AS_ozPx9?ZG3*H|GTJShi%l zZM`+w@qFUs%)nPc&wgcm5a8`k+rQ3n)%Vqz1}pyW-~OG=^7qWrh7Vu)Kh)JHA2@kl z%U6-*yE)6#7w2R9YbBfRFIShiv*NNT>-Dysw_B3U*7zQK$9Zt|!)4*_<}-cNCZ9|( cLZUKV?@#q@Na`%-$p*!$r>mdKI;Vst07D=j&;S4c diff --git a/graphics/battle_terrain/sand/palette.pal b/graphics/battle_terrain/sand/palette.pal deleted file mode 100644 index 20f4c3f7c..000000000 --- a/graphics/battle_terrain/sand/palette.pal +++ /dev/null @@ -1,51 +0,0 @@ -JASC-PAL -0100 -48 -0 0 0 -255 255 205 -213 213 90 -238 238 139 -246 246 172 -230 230 106 -255 255 189 -238 230 131 -255 255 230 -0 0 0 -0 0 0 -238 238 123 -238 238 148 -246 246 172 -246 246 180 -246 246 197 -0 0 0 -255 255 205 -222 213 82 -246 246 148 -246 246 189 -230 230 115 -255 255 197 -238 238 123 -255 255 230 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -197 197 74 -164 156 32 -222 222 131 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_terrain/sand/tiles.png b/graphics/battle_terrain/sand/tiles.png deleted file mode 100644 index a4f7342be469fbf36a3c128690c0936a5253f3ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 805 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLEz2?0JKu0Z<#|Fc)GM!kF2{q5VD zXV0?!|KI!WS@Zw@&wx@u@a|ppyLVH7Qs2I9`S$H7Pz0#{-qoOQ-++R9pFJ!7|NkgZ z4O~4~6AE$ksMnG?3is|cqln_*sBDj9XJB9o@N{tu$!L5#%|Gj|fxxlSR`#Xr6E3jI zm`6^ZmBY>TY^`_GNxg2Nn&t_y{8zNUaP4&pS1fs+m8KK<|4zE4risD+v(-1|`5P<0 zmgY{hTw-I#<1B8-v%UXjGQ*K>%?IBPU#PXxzEpPj?RHH?L5W>OZ=B56aNFGfvGn*x ze+l>bC!WS?H5}b>RR3MIa`%gWKdvsF`1Qd|G5N;{YfIIfW^O4jc4&?UThm3eX@_07{#m%M7A6q-h1?H0CHcEN&NYdgJU?8;#b~8^ zRrs;pFPfrGE)jlF#5QrEwtt=8neSWTOpmy(_%KnlW?J6tOL<1F@4w0|=$k+7{WNo} p4_dZAQhz2^E@t96Y=A(U8|?!oNAj;ZZ0rF_cAl<&F6*2UngFvKV8Q?Z diff --git a/graphics/battle_terrain/sky/anim_map.bin b/graphics/battle_terrain/sky/anim_map.bin deleted file mode 100644 index c1712cdd86ff28292f94175f58dd079d3af05000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeIw*H;e!0LAg2nY}3^D*iBFSEvk-hgQD_gb@BHOYpYc@K?_^$6Sf#nQwuG7FleGBug!`Tyjyjl+wy5tDN#eR8UbRl~qwy zHPx-KQi@elt(Inuwbog0gN-)XY>OIds-?C%>Z&JHnED!MsF84uHL=w;>9*Tpr(Jg2 zBg0<%WZLh5gPLllxd<(^)JkiS+KAFtJMDGQ(IJN&anv!#op91Ar=4-uIpL@RJVQdwEOVxlX zuj@W`Eg`+K<7Z2U0#TJVx61Jf0ZM5KflBShQI4YL-q<&?YI3QzagB5zmv7t~$tnSC z)*pHRrH`Q;Vc6Ay)E`6)smyL&>>00gH2 zMrPB}i^wg|Z{t3W)ewCYcdf1ZHtA>HXtPSu z#2NqtV$mxfQu-?)<@#9I5PeB;#)0M-fVHy4z6NZ)YAKVBL7U>O8AbpOGjE*lx&YlG zLP>q9Zz13{4G#cKb14T)%MUN+Kw>R_C2Wd@KcH>{AlC`NhAU3#Ze3)#Lt1xO`>t}x zJ_`LssEFf@{S-ln{N#7EB@ZV>Q}4s_ejCKoBtAzTX6A(fzQ3mjH{f|f<^W5y$2`!DA%JCSoW<_yj{qe$j&*U(3(MR}0hp{I&A@<}lI6!c7U&>0Rs3 z3E0;|Lh-xyokwf^Qo8nzlXiWP*CtShO?)zzyJGMLqd0yv2X-5Xb0Q3Lz(wBox(h0m3KsdjJ zlIFMO0A0g@-Wxa~c-jCp!Dz!$KNa!_dCpx6!3DypWPIt!#q5ZU;7Tf-Wj{ja0>=Mw zj@&xz+Ko5ufPcI>H6P4pUbXVu4GGXt2V54bwzmw}etg)Gv~;i!N(f@s^~0{~5b(V` j*XOs~a?35Z{6F#wos?){Mf$#K00000NkvXXu0mjffMwMK diff --git a/graphics/battle_terrain/sky/map.bin b/graphics/battle_terrain/sky/map.bin deleted file mode 100644 index d7bee60353130554304bf46e6b6268c799fe24c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeIzMUDeO5JXWAGc)=PGcz+YGuZb(#GJtDMO*Snu8L(TQkj1dk(Q37lz93Tl$k(* zLPd&|C{?Chg-TVb)u>e$Nv>XlMopTvXw{}&hfZC(_2`w1^wX!`fI&lsjTkj%+=NL} zrp-k9XU&v_Ttr>cOO1|`Sug(PlOi;1Oj&93BV+ J0*PEV_#ZI{@Bjb+ diff --git a/graphics/battle_terrain/sky/palette.pal b/graphics/battle_terrain/sky/palette.pal deleted file mode 100644 index 1a547d6a1..000000000 --- a/graphics/battle_terrain/sky/palette.pal +++ /dev/null @@ -1,51 +0,0 @@ -JASC-PAL -0100 -48 -0 0 0 -213 238 255 -222 230 255 -148 205 255 -172 213 255 -197 222 255 -197 230 255 -172 213 255 -230 246 255 -205 222 246 -238 246 255 -164 213 255 -180 222 255 -197 230 255 -213 238 255 -230 246 255 -0 0 0 -180 238 255 -222 230 255 -148 205 255 -172 213 255 -197 222 255 -197 230 255 -172 213 255 -230 246 255 -205 222 246 -238 246 255 -148 197 255 -164 205 255 -189 222 255 -205 230 255 -230 246 255 -0 0 0 -222 238 255 -230 238 255 -238 246 255 -246 246 255 -255 255 255 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -139 172 205 -197 230 255 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_terrain/sky/tiles.png b/graphics/battle_terrain/sky/tiles.png deleted file mode 100644 index 461bba6754ff5351700ef1a42a154ecdc46c90ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 820 zcmV-41Izr0P)cRO2V>}gFDy{<3H_u^P`z>lw}5s81ME~RR*Z4?YF@(3u~YC0#Ey@ zyty33vaGfbeT0Z$Uyj>)l-p^7r+ao?*Xsy%&4JuL!~`xGa(=xt$JH1v)|;;s#-Ij& zzE4FXA1Qz&3=?+Ul6c-pn7TPzW z=vw3rf4KJ?-5^8O|7QC}&4Xb0WNKgn_+Z!{TRxD-v3NAd(B$U$XIq900%&v|m{Yl9 z4P^e1Yl5#E*>Mm06s3bm2+r$ zx;hCCfLob|!Oz`v6>v(sV3>em=jmk*<`*`J>rhT{LxKQ$$bwP`f`Zh5Rf2CI2+D%= zpqG+n4+Z670_xUC(r6)os2V|DiE=xRM>$(8s&~2Q@eg;}M*I7eMelH8|xijM)B5ADq#NBAwwZytmW%cIGUM zOd}~A%Ee$Nv>XlMopTvXw{}&hfZC(_2`w1^wX!`fI&lsjTkj%+=NL} zrp-k9XU&v_Ttr>cOO1|`Sug(PlOi;1Oj&93BV+ J0*PEV_#ZI{@Bjb+ diff --git a/graphics/battle_terrain/tall_grass/anim_map.bin b/graphics/battle_terrain/tall_grass/anim_map.bin deleted file mode 100644 index 8e7d784f3787b2c46f7928e141daf3212e3f2c8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeIwMN&gi5J1s~1`7mtf+x7U9o*eD``-mS;0+l4s^2|4ldfAGLOO{qApCR7l&esw zDpZGznoz4Q)N7E{s3`=0drq?!t=hEf(5Xwe9=-bX8;}?CK|_X(7&T^GLD7UsQ>M+B zH7Dlt7A#t_Y{jZI>o#oKvTet%JuzqBfkQ`*oj7&o+=WY5uHCp5^E>w*JbLo%#j7{( YK79J}?MF$>6a9PX@o9myK%xu$0>yAyApigX diff --git a/graphics/battle_terrain/tall_grass/anim_tiles.png b/graphics/battle_terrain/tall_grass/anim_tiles.png deleted file mode 100644 index 85aed13bb294fc1ea92970d742cc2cc5dad68238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLEz2?0JKu0ZvfY;}V1>*IUB z{9pPpTA}09Z-+Va&Ih{uWNI)KSoU1{!4tCtKfQS7=Nz_fEbru48gAAy+;TITzk%&a zX?ER=!!;}&;uG8yw)w5`2y2el7FU?Y_)vJkoJ)TWzLd3iGn;WC^QSAX^QPx5|Ie7A zyYo^(jDyGm4u(?28y606o#r^e@#5YFhDWj%QVTqn`}#3XsA2W{w}WB9-;AJ5&DIWa zj*SZHt0TGQnk#4(6nz#}@D-bz%RDKT{rRzGb!m|YExRNnJ<1s-$+>R#mU~d|+7R>m z!6glJ?PV-j6<;hurOa%)g}^K|udS?83{1OTs+ BQn>&C diff --git a/graphics/battle_terrain/tall_grass/map.bin b/graphics/battle_terrain/tall_grass/map.bin deleted file mode 100644 index 61f358f53211adb317e138da4d207772c896e39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH|*G@uF5Jj&b*idZP%fbeVWm~ZK0@x6HSK$9Y!Y?4_;c76sbN1t8WpdWT>?&1X zso*bVEVT_Z5F$(?5u!BFObe~F5u=?B;!bm&bkR)@y(H+Pp8*CLVwe#|8DreZLy`$5 znPQq5Qlyz>jtuiGu*i~=7t5@$${JbL*zn{T7wKx7+P}jJJ-X!}EoYLt^=n0A z<<-grJvr`>6;iKm-kiRWDSQ8}A4eHo4<_5HB#6j`@J?x*Z7EjZ_RAt&Uj5UG(+Act zKEK8J!J=oe>M^G3cRUu1(>=c>?6#fK8qFs8zk(RHve7VyM4YX3w#m)R-X3^Wz z{P7QSWBjUvoXZ9F&Mf2S%2V=6e^kHl%l!=F`8W90YEovpoU+>#!|P?gDTk~6&%~#9 zUkjDU$#Hq)$ diff --git a/graphics/battle/terrain_building.bin b/graphics/battle_terrain/terrain_building.bin similarity index 100% rename from graphics/battle/terrain_building.bin rename to graphics/battle_terrain/terrain_building.bin diff --git a/graphics/battle/terrain_building.pal b/graphics/battle_terrain/terrain_building.pal similarity index 100% rename from graphics/battle/terrain_building.pal rename to graphics/battle_terrain/terrain_building.pal diff --git a/graphics/battle/terrain_building.png b/graphics/battle_terrain/terrain_building.png similarity index 100% rename from graphics/battle/terrain_building.png rename to graphics/battle_terrain/terrain_building.png diff --git a/graphics/battle/terrain_building_anim.bin b/graphics/battle_terrain/terrain_building_anim.bin similarity index 100% rename from graphics/battle/terrain_building_anim.bin rename to graphics/battle_terrain/terrain_building_anim.bin diff --git a/graphics/battle/terrain_building_anim.png b/graphics/battle_terrain/terrain_building_anim.png similarity index 100% rename from graphics/battle/terrain_building_anim.png rename to graphics/battle_terrain/terrain_building_anim.png diff --git a/graphics/battle/terrain_cave.bin b/graphics/battle_terrain/terrain_cave.bin similarity index 100% rename from graphics/battle/terrain_cave.bin rename to graphics/battle_terrain/terrain_cave.bin diff --git a/graphics/battle/terrain_cave.pal b/graphics/battle_terrain/terrain_cave.pal similarity index 100% rename from graphics/battle/terrain_cave.pal rename to graphics/battle_terrain/terrain_cave.pal diff --git a/graphics/battle/terrain_cave.png b/graphics/battle_terrain/terrain_cave.png similarity index 100% rename from graphics/battle/terrain_cave.png rename to graphics/battle_terrain/terrain_cave.png diff --git a/graphics/battle/terrain_cave_anim.bin b/graphics/battle_terrain/terrain_cave_anim.bin similarity index 100% rename from graphics/battle/terrain_cave_anim.bin rename to graphics/battle_terrain/terrain_cave_anim.bin diff --git a/graphics/battle/terrain_cave_anim.png b/graphics/battle_terrain/terrain_cave_anim.png similarity index 100% rename from graphics/battle/terrain_cave_anim.png rename to graphics/battle_terrain/terrain_cave_anim.png diff --git a/graphics/battle/terrain_grass.bin b/graphics/battle_terrain/terrain_grass.bin similarity index 100% rename from graphics/battle/terrain_grass.bin rename to graphics/battle_terrain/terrain_grass.bin diff --git a/graphics/battle/terrain_grass.pal b/graphics/battle_terrain/terrain_grass.pal similarity index 100% rename from graphics/battle/terrain_grass.pal rename to graphics/battle_terrain/terrain_grass.pal diff --git a/graphics/battle/terrain_grass.png b/graphics/battle_terrain/terrain_grass.png similarity index 100% rename from graphics/battle/terrain_grass.png rename to graphics/battle_terrain/terrain_grass.png diff --git a/graphics/battle/terrain_grass_anim.bin b/graphics/battle_terrain/terrain_grass_anim.bin similarity index 100% rename from graphics/battle/terrain_grass_anim.bin rename to graphics/battle_terrain/terrain_grass_anim.bin diff --git a/graphics/battle/terrain_grass_anim.png b/graphics/battle_terrain/terrain_grass_anim.png similarity index 100% rename from graphics/battle/terrain_grass_anim.png rename to graphics/battle_terrain/terrain_grass_anim.png diff --git a/graphics/battle/terrain_indoor.bin b/graphics/battle_terrain/terrain_indoor.bin similarity index 100% rename from graphics/battle/terrain_indoor.bin rename to graphics/battle_terrain/terrain_indoor.bin diff --git a/graphics/battle/terrain_indoor.png b/graphics/battle_terrain/terrain_indoor.png similarity index 100% rename from graphics/battle/terrain_indoor.png rename to graphics/battle_terrain/terrain_indoor.png diff --git a/graphics/battle/terrain_indoor_1.pal b/graphics/battle_terrain/terrain_indoor_1.pal similarity index 100% rename from graphics/battle/terrain_indoor_1.pal rename to graphics/battle_terrain/terrain_indoor_1.pal diff --git a/graphics/battle/terrain_indoor_2.pal b/graphics/battle_terrain/terrain_indoor_2.pal similarity index 100% rename from graphics/battle/terrain_indoor_2.pal rename to graphics/battle_terrain/terrain_indoor_2.pal diff --git a/graphics/battle/terrain_indoor_agatha.pal b/graphics/battle_terrain/terrain_indoor_agatha.pal similarity index 100% rename from graphics/battle/terrain_indoor_agatha.pal rename to graphics/battle_terrain/terrain_indoor_agatha.pal diff --git a/graphics/battle/terrain_indoor_bruno.pal b/graphics/battle_terrain/terrain_indoor_bruno.pal similarity index 100% rename from graphics/battle/terrain_indoor_bruno.pal rename to graphics/battle_terrain/terrain_indoor_bruno.pal diff --git a/graphics/battle/terrain_indoor_champion.pal b/graphics/battle_terrain/terrain_indoor_champion.pal similarity index 100% rename from graphics/battle/terrain_indoor_champion.pal rename to graphics/battle_terrain/terrain_indoor_champion.pal diff --git a/graphics/battle/terrain_indoor_gym.pal b/graphics/battle_terrain/terrain_indoor_gym.pal similarity index 100% rename from graphics/battle/terrain_indoor_gym.pal rename to graphics/battle_terrain/terrain_indoor_gym.pal diff --git a/graphics/battle/terrain_indoor_lance.pal b/graphics/battle_terrain/terrain_indoor_lance.pal similarity index 100% rename from graphics/battle/terrain_indoor_lance.pal rename to graphics/battle_terrain/terrain_indoor_lance.pal diff --git a/graphics/battle/terrain_indoor_leader.pal b/graphics/battle_terrain/terrain_indoor_leader.pal similarity index 100% rename from graphics/battle/terrain_indoor_leader.pal rename to graphics/battle_terrain/terrain_indoor_leader.pal diff --git a/graphics/battle/terrain_indoor_link.pal b/graphics/battle_terrain/terrain_indoor_link.pal similarity index 100% rename from graphics/battle/terrain_indoor_link.pal rename to graphics/battle_terrain/terrain_indoor_link.pal diff --git a/graphics/battle/terrain_indoor_lorelei.pal b/graphics/battle_terrain/terrain_indoor_lorelei.pal similarity index 100% rename from graphics/battle/terrain_indoor_lorelei.pal rename to graphics/battle_terrain/terrain_indoor_lorelei.pal diff --git a/graphics/battle/terrain_indoor_plain.pal b/graphics/battle_terrain/terrain_indoor_plain.pal similarity index 100% rename from graphics/battle/terrain_indoor_plain.pal rename to graphics/battle_terrain/terrain_indoor_plain.pal diff --git a/graphics/battle/terrain_longgrass.bin b/graphics/battle_terrain/terrain_longgrass.bin similarity index 100% rename from graphics/battle/terrain_longgrass.bin rename to graphics/battle_terrain/terrain_longgrass.bin diff --git a/graphics/battle/terrain_longgrass.pal b/graphics/battle_terrain/terrain_longgrass.pal similarity index 100% rename from graphics/battle/terrain_longgrass.pal rename to graphics/battle_terrain/terrain_longgrass.pal diff --git a/graphics/battle/terrain_longgrass.png b/graphics/battle_terrain/terrain_longgrass.png similarity index 100% rename from graphics/battle/terrain_longgrass.png rename to graphics/battle_terrain/terrain_longgrass.png diff --git a/graphics/battle/terrain_longgrass_anim.bin b/graphics/battle_terrain/terrain_longgrass_anim.bin similarity index 100% rename from graphics/battle/terrain_longgrass_anim.bin rename to graphics/battle_terrain/terrain_longgrass_anim.bin diff --git a/graphics/battle/terrain_longgrass_anim.png b/graphics/battle_terrain/terrain_longgrass_anim.png similarity index 100% rename from graphics/battle/terrain_longgrass_anim.png rename to graphics/battle_terrain/terrain_longgrass_anim.png diff --git a/graphics/battle/terrain_mountain.bin b/graphics/battle_terrain/terrain_mountain.bin similarity index 100% rename from graphics/battle/terrain_mountain.bin rename to graphics/battle_terrain/terrain_mountain.bin diff --git a/graphics/battle/terrain_mountain.pal b/graphics/battle_terrain/terrain_mountain.pal similarity index 100% rename from graphics/battle/terrain_mountain.pal rename to graphics/battle_terrain/terrain_mountain.pal diff --git a/graphics/battle/terrain_mountain.png b/graphics/battle_terrain/terrain_mountain.png similarity index 100% rename from graphics/battle/terrain_mountain.png rename to graphics/battle_terrain/terrain_mountain.png diff --git a/graphics/battle/terrain_mountain_anim.bin b/graphics/battle_terrain/terrain_mountain_anim.bin similarity index 100% rename from graphics/battle/terrain_mountain_anim.bin rename to graphics/battle_terrain/terrain_mountain_anim.bin diff --git a/graphics/battle/terrain_mountain_anim.png b/graphics/battle_terrain/terrain_mountain_anim.png similarity index 100% rename from graphics/battle/terrain_mountain_anim.png rename to graphics/battle_terrain/terrain_mountain_anim.png diff --git a/graphics/battle/terrain_pond.bin b/graphics/battle_terrain/terrain_pond.bin similarity index 100% rename from graphics/battle/terrain_pond.bin rename to graphics/battle_terrain/terrain_pond.bin diff --git a/graphics/battle/terrain_pond.pal b/graphics/battle_terrain/terrain_pond.pal similarity index 100% rename from graphics/battle/terrain_pond.pal rename to graphics/battle_terrain/terrain_pond.pal diff --git a/graphics/battle/terrain_pond.png b/graphics/battle_terrain/terrain_pond.png similarity index 100% rename from graphics/battle/terrain_pond.png rename to graphics/battle_terrain/terrain_pond.png diff --git a/graphics/battle/terrain_pond_anim.bin b/graphics/battle_terrain/terrain_pond_anim.bin similarity index 100% rename from graphics/battle/terrain_pond_anim.bin rename to graphics/battle_terrain/terrain_pond_anim.bin diff --git a/graphics/battle/terrain_pond_anim.png b/graphics/battle_terrain/terrain_pond_anim.png similarity index 100% rename from graphics/battle/terrain_pond_anim.png rename to graphics/battle_terrain/terrain_pond_anim.png diff --git a/graphics/battle/terrain_sand.bin b/graphics/battle_terrain/terrain_sand.bin similarity index 100% rename from graphics/battle/terrain_sand.bin rename to graphics/battle_terrain/terrain_sand.bin diff --git a/graphics/battle/terrain_sand.pal b/graphics/battle_terrain/terrain_sand.pal similarity index 100% rename from graphics/battle/terrain_sand.pal rename to graphics/battle_terrain/terrain_sand.pal diff --git a/graphics/battle/terrain_sand.png b/graphics/battle_terrain/terrain_sand.png similarity index 100% rename from graphics/battle/terrain_sand.png rename to graphics/battle_terrain/terrain_sand.png diff --git a/graphics/battle/terrain_sand_anim.bin b/graphics/battle_terrain/terrain_sand_anim.bin similarity index 100% rename from graphics/battle/terrain_sand_anim.bin rename to graphics/battle_terrain/terrain_sand_anim.bin diff --git a/graphics/battle/terrain_sand_anim.png b/graphics/battle_terrain/terrain_sand_anim.png similarity index 100% rename from graphics/battle/terrain_sand_anim.png rename to graphics/battle_terrain/terrain_sand_anim.png diff --git a/graphics/battle/terrain_underwater.bin b/graphics/battle_terrain/terrain_underwater.bin similarity index 100% rename from graphics/battle/terrain_underwater.bin rename to graphics/battle_terrain/terrain_underwater.bin diff --git a/graphics/battle/terrain_underwater.pal b/graphics/battle_terrain/terrain_underwater.pal similarity index 100% rename from graphics/battle/terrain_underwater.pal rename to graphics/battle_terrain/terrain_underwater.pal diff --git a/graphics/battle/terrain_underwater.png b/graphics/battle_terrain/terrain_underwater.png similarity index 100% rename from graphics/battle/terrain_underwater.png rename to graphics/battle_terrain/terrain_underwater.png diff --git a/graphics/battle/terrain_underwater_anim.bin b/graphics/battle_terrain/terrain_underwater_anim.bin similarity index 100% rename from graphics/battle/terrain_underwater_anim.bin rename to graphics/battle_terrain/terrain_underwater_anim.bin diff --git a/graphics/battle/terrain_underwater_anim.png b/graphics/battle_terrain/terrain_underwater_anim.png similarity index 100% rename from graphics/battle/terrain_underwater_anim.png rename to graphics/battle_terrain/terrain_underwater_anim.png diff --git a/graphics/battle/terrain_water.bin b/graphics/battle_terrain/terrain_water.bin similarity index 100% rename from graphics/battle/terrain_water.bin rename to graphics/battle_terrain/terrain_water.bin diff --git a/graphics/battle/terrain_water.pal b/graphics/battle_terrain/terrain_water.pal similarity index 100% rename from graphics/battle/terrain_water.pal rename to graphics/battle_terrain/terrain_water.pal diff --git a/graphics/battle/terrain_water.png b/graphics/battle_terrain/terrain_water.png similarity index 100% rename from graphics/battle/terrain_water.png rename to graphics/battle_terrain/terrain_water.png diff --git a/graphics/battle/terrain_water_anim.bin b/graphics/battle_terrain/terrain_water_anim.bin similarity index 100% rename from graphics/battle/terrain_water_anim.bin rename to graphics/battle_terrain/terrain_water_anim.bin diff --git a/graphics/battle/terrain_water_anim.png b/graphics/battle_terrain/terrain_water_anim.png similarity index 100% rename from graphics/battle/terrain_water_anim.png rename to graphics/battle_terrain/terrain_water_anim.png diff --git a/graphics/battle_terrain/underwater/anim_map.bin b/graphics/battle_terrain/underwater/anim_map.bin deleted file mode 100644 index 616c2a24225a8a8f40792bb95920a9f97068a8d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeH_TTcQp6oeZ^eG#Gpnt&27e?T9(>9?|2#M}S>H}>r5*-MPP@Ipej4{dj*Gt)^O zE{z>%;Fi0X;*9gnd2(aOe9uF{e&p$&Q^Hd9Q`&SQYrrtB1iR*jQP@|1O;=xssw>Of z?cFq;k2vN8w0_Lq}b}=w8s(QLOhGaCpy%Lz$Y{0{ou%wk)qKxqjU%;z3dt=X3 zFW3CO|CCI`^({+;N^X7oRPQg^Td&Txbk)D+;Ln?@1V6s!UUOG*z4+By_qVTDt{$kJ z_TZb6kIPbqs~<};SMQoF&9(77^9*aPcL!eWoGH8~e4FXC2QyZ_{Cw5#hR7?~>@BO_ z%(-mFy!ph#tcMcGFLkfX`DVu2QpcAOoY-TSyZT!2LJiyhcI8_xn(WqG;Mttj{_WDu zm(t?GZcG3Dv93E263@D6@?`!cSPkgV6uWQE%&Ho>K z{1eZ+imexqIvM@hq`vp_#&t`rMC`X-b#gz?Up8<38u$K!>eSq=J2siI>#SR|c3Swg gu=sE>?&1X zso*bVEVT_Z5F$(?5u!BFObe~F5u=?B;!bm&bkR)@y(H+Pp8*CLVwe#|8DreZLy`$5 znPQq5Qlyz>jtuiGu*i~=7t5@$${JbL*w0_Lq}b}=w88F;!lhGaCpo#vgzN&mxP-tHZi8`U%kp` z(W+~|pO|)TQ7=94eVvy2Vjb7Wwei^u0xM4KS-X5qAGb`{In(Dn2X=C&>}q7vl6+mW zCv|h8*eNl6vz{ev>~H7D8-G)>nv^8Ge8Z)Eb4{}^T`2T%W_(#EBXLoXgN4ILGcbd3 zX8V@=Zho7XOe%Iv;9AAzc1(}lqSd%mFyq!9PBo#aO+UNrEF_ptXT08CDwsXjSx2Db!bcrpnaz?NwFOI^ z6Bd4Uj~6?Ym{GR<1j9S_i(zF<50{lb=iu0}mWQvo%J`?qM?;P`QyqBwiX$2$RSx91 z{Ib|xXVAc_Drm4;^a5{c!f(g9+qS4VcyHFV&0TdyRCSBrtSqD8m}vhXuG_ojb03_s zJI^{|-l3Zk{Hx>^^YWcOcUaUe;K}joZ&$zMU6@$IBKw1#sXn+_FP_oPqFDaRjZR0a z^m(m$)7Pl9{+q6|cTVBSpiY(PYdmLrPh0PJ-+P+x!85FEynE)w`NeD!TCb}gd2!#n y<};6-Kd9{pXpCQZaQTDSf`v>RO$rEfsYyO+R$R4!^jTj}((-imb6Mw<&;$SgZ(h;> diff --git a/graphics/battle_terrain/building/anim_map.bin b/graphics/battle_terrain/unused/building/anim_map.bin similarity index 100% rename from graphics/battle_terrain/building/anim_map.bin rename to graphics/battle_terrain/unused/building/anim_map.bin diff --git a/graphics/battle_terrain/building/anim_tiles.png b/graphics/battle_terrain/unused/building/anim_tiles.png similarity index 100% rename from graphics/battle_terrain/building/anim_tiles.png rename to graphics/battle_terrain/unused/building/anim_tiles.png diff --git a/graphics/battle_terrain/building/map.bin b/graphics/battle_terrain/unused/building/map.bin similarity index 100% rename from graphics/battle_terrain/building/map.bin rename to graphics/battle_terrain/unused/building/map.bin diff --git a/graphics/battle_terrain/building/palette.pal b/graphics/battle_terrain/unused/building/palette.pal similarity index 100% rename from graphics/battle_terrain/building/palette.pal rename to graphics/battle_terrain/unused/building/palette.pal diff --git a/graphics/battle_terrain/building/palette2.pal b/graphics/battle_terrain/unused/building/palette2.pal similarity index 100% rename from graphics/battle_terrain/building/palette2.pal rename to graphics/battle_terrain/unused/building/palette2.pal diff --git a/graphics/battle_terrain/building/palette3.pal b/graphics/battle_terrain/unused/building/palette3.pal similarity index 100% rename from graphics/battle_terrain/building/palette3.pal rename to graphics/battle_terrain/unused/building/palette3.pal diff --git a/graphics/battle_terrain/building/tiles.png b/graphics/battle_terrain/unused/building/tiles.png similarity index 100% rename from graphics/battle_terrain/building/tiles.png rename to graphics/battle_terrain/unused/building/tiles.png diff --git a/graphics/battle_terrain/cave/groudon.pal b/graphics/battle_terrain/unused/groudon.pal similarity index 100% rename from graphics/battle_terrain/cave/groudon.pal rename to graphics/battle_terrain/unused/groudon.pal diff --git a/graphics/battle_terrain/water/kyogre.pal b/graphics/battle_terrain/unused/kyogre.pal similarity index 100% rename from graphics/battle_terrain/water/kyogre.pal rename to graphics/battle_terrain/unused/kyogre.pal diff --git a/graphics/battle_terrain/plain/palette.pal b/graphics/battle_terrain/unused/plain.pal similarity index 100% rename from graphics/battle_terrain/plain/palette.pal rename to graphics/battle_terrain/unused/plain.pal diff --git a/graphics/battle_terrain/stadium/battle_frontier.pal b/graphics/battle_terrain/unused/stadium/battle_frontier.pal similarity index 100% rename from graphics/battle_terrain/stadium/battle_frontier.pal rename to graphics/battle_terrain/unused/stadium/battle_frontier.pal diff --git a/graphics/battle_terrain/sand/map.bin b/graphics/battle_terrain/unused/stadium/map.bin similarity index 100% rename from graphics/battle_terrain/sand/map.bin rename to graphics/battle_terrain/unused/stadium/map.bin diff --git a/graphics/battle_terrain/stadium/palette1.pal b/graphics/battle_terrain/unused/stadium/palette1.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette1.pal rename to graphics/battle_terrain/unused/stadium/palette1.pal diff --git a/graphics/battle_terrain/stadium/palette2.pal b/graphics/battle_terrain/unused/stadium/palette2.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette2.pal rename to graphics/battle_terrain/unused/stadium/palette2.pal diff --git a/graphics/battle_terrain/stadium/palette3.pal b/graphics/battle_terrain/unused/stadium/palette3.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette3.pal rename to graphics/battle_terrain/unused/stadium/palette3.pal diff --git a/graphics/battle_terrain/stadium/palette4.pal b/graphics/battle_terrain/unused/stadium/palette4.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette4.pal rename to graphics/battle_terrain/unused/stadium/palette4.pal diff --git a/graphics/battle_terrain/stadium/palette5.pal b/graphics/battle_terrain/unused/stadium/palette5.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette5.pal rename to graphics/battle_terrain/unused/stadium/palette5.pal diff --git a/graphics/battle_terrain/stadium/palette6.pal b/graphics/battle_terrain/unused/stadium/palette6.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette6.pal rename to graphics/battle_terrain/unused/stadium/palette6.pal diff --git a/graphics/battle_terrain/stadium/palette7.pal b/graphics/battle_terrain/unused/stadium/palette7.pal similarity index 100% rename from graphics/battle_terrain/stadium/palette7.pal rename to graphics/battle_terrain/unused/stadium/palette7.pal diff --git a/graphics/battle_terrain/stadium/tiles.png b/graphics/battle_terrain/unused/stadium/tiles.png similarity index 100% rename from graphics/battle_terrain/stadium/tiles.png rename to graphics/battle_terrain/unused/stadium/tiles.png diff --git a/graphics/battle_terrain/water/anim_map.bin b/graphics/battle_terrain/water/anim_map.bin deleted file mode 100644 index 2b5f7a548888b9d74e1c167a0c6ee4bafbe673a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmeIxNi#!H6h+~ih6q6rJwc*Rw9z;5;Syc=|Nq7)WuoepkwM-$lYMH<)~*wTbo<#r z=*@sZ1w)F4jVKv4W?YYk@H;P?FlkD~v>CJJ%v-Q%$+D^yNqp6sn!0rxHf`CqV^>4d zo_zcjKE@opU U{`LO%@B1k@O{sy@K%W`-218|*tpET3 diff --git a/graphics/battle_terrain/water/anim_tiles.png b/graphics/battle_terrain/water/anim_tiles.png deleted file mode 100644 index b505640291ee960eed95ecaf0e32371e79a20143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 887 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLEz2?0JKu0Z<#|Nl`_?oGM+Zp*W8 zS!B>AsLNtr}-A$HsER9`f%?qh4fulm^x}3wRSf6K4<8vWWB%b zhoXwtvboD5+46HD7j^pgGpx91FyWKm;qb4L4EvdOOf0K!xA>?1VA(Eam2DqeHg)b} z_sD5bX}R$D$)CFHtGhir3=8$N(pTU1i)GMYOtJmXC}F_WILAiIt0Hdg0TwPb^bimnw64nrw+~v)m12UYIx3aZ|bE>UvdNvEZbnR;`h4k?@I+gr98-cvTf5uRVSW9 z`}S@VJ7Ctr7{&eOK3i4n&2!JIbJ;EgWz4gZ6DZy+&vRj&qfx@to$3!1uQ#x8F`Vo; zH+}gmn?Gls%o8w3|Ev@3y^Bq!<$+_V-`a`+S5(ooa7 z?WX202R1(SEuv>;9Z9h`B+$Ugv_N>*pC7@3IrDi0oCTI7JLbhcnA>_hlHJsRb3u(y z(S>>==?OZ|f_wEh=Pi@c@Yq(MI$vCMk7V0@20wja`K8kfCUG+Fo}-;0#&z_0&9a$2 zC(=znsdZ%bUN2xe5tw(oW7*vJR);lblqbImUEQHCrq3{|MXF4*>VCFrN@-o9x~SsC zq!+97Q>;|wU#~xFe#mXAVeRXw7oHaFjM1BZ8i}%xs%N}rDPfXrCYJ$9x}L6nF6*2U FngHW6j9>r& diff --git a/graphics/battle_terrain/water/map.bin b/graphics/battle_terrain/water/map.bin deleted file mode 100644 index 61f358f53211adb317e138da4d207772c896e39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeH|*G@uF5Jj&b*idZP%fbeVWm~ZK0@x6HSK$9Y!Y?4_;c76sbN1t8WpdWT>?&1X zso*bVEVT_Z5F$(?5u!BFObe~F5u=?B;!bm&bkR)@y(H+Pp8*CLVwe#|8DreZLy`$5 znPQq5Qlyz>jtuiGu*i~=7t5@$${JbL*PMbB;Rm(m$- zY`*hoi~pgUYo`~^$mzFavb@n=7wx=bZCSys7fUzmIHk-K+hmc%?rM&lq@TMl^Cw3ry^D$MwN zmN1=F(IBy;IpLmK&3a}TCwF$?$u5rFR@XXIo*73sX-t|X%_#W6YR4v(4yDNJxh)fR zOlEq=e#Vk(mq(kOpt7#uvmcZ1_y=hAgCy~QVk6f2%NE&cP%JIwgSq^DO(Hc8+;U0H?lhoYvpcLfk>gTe~DWM4f!3|jp diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 3fc4b3b7b..f3bed2da7 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -24,7 +24,7 @@ TITLESCREENGFXDIR := graphics/title_screen CREDITSGFXDIR := graphics/credits ITEMMENUGFXDIR := graphics/item_menu INTROGFXDIR := graphics/intro -BATTLEGFXDIR := graphics/battle +BATTLETERRAINGFXDIR := graphics/battle_terrain types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark contest_types := cool beauty cute smart tough @@ -528,44 +528,44 @@ $(INTROGFXDIR)/unk_8406654.4bpp: %.4bpp: %.png $(INTROGFXDIR)/unk_8405B28.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 17 -$(BATTLEGFXDIR)/terrain_building.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_building.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 77 -$(BATTLEGFXDIR)/terrain_cave_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_cave_anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 106 -$(BATTLEGFXDIR)/terrain_cave.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_cave.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 84 -$(BATTLEGFXDIR)/terrain_grass.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_grass.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 98 -$(BATTLEGFXDIR)/terrain_indoor.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_indoor.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 77 -$(BATTLEGFXDIR)/terrain_longgrass_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_longgrass_anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 133 -$(BATTLEGFXDIR)/terrain_longgrass.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_longgrass.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 98 -$(BATTLEGFXDIR)/terrain_mountain_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_mountain_anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 47 -$(BATTLEGFXDIR)/terrain_pond_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_pond_anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 36 -$(BATTLEGFXDIR)/terrain_pond.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_pond.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 75 -$(BATTLEGFXDIR)/terrain_sand.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_sand.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 83 -$(BATTLEGFXDIR)/terrain_underwater_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_underwater_anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 26 -$(BATTLEGFXDIR)/terrain_underwater.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_underwater.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 85 -$(BATTLEGFXDIR)/terrain_water.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/terrain_water.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 81 diff --git a/src/battle_bg.c b/src/battle_bg.c index 05a6babe2..44f26494b 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -343,73 +343,73 @@ static const struct WindowTemplate gUnknown_8248330[] = { }, DUMMY_WIN_TEMPLATE }; -static const u32 sBattleTerrainPalette_Grass[] = INCBIN_U32("graphics/battle/terrain_grass.gbapal.lz"); -static const u32 sBattleTerrainTiles_Grass[] = INCBIN_U32("graphics/battle/terrain_grass.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Grass[] = INCBIN_U32("graphics/battle/terrain_grass.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Grass[] = INCBIN_U32("graphics/battle/terrain_grass_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Grass[] = INCBIN_U32("graphics/battle/terrain_grass_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass.gbapal.lz"); +static const u32 sBattleTerrainTiles_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass_anim.bin.lz"); -static const u32 sBattleTerrainPalette_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass.gbapal.lz"); -static const u32 sBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass.4bpp.lz"); -static const u32 sBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass.bin.lz"); -static const u32 sBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle/terrain_longgrass_anim.bin.lz"); +static const u32 sBattleTerrainPalette_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass.gbapal.lz"); +static const u32 sBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass.4bpp.lz"); +static const u32 sBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass.bin.lz"); +static const u32 sBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass_anim.bin.lz"); -static const u32 sBattleTerrainPalette_Sand[] = INCBIN_U32("graphics/battle/terrain_sand.gbapal.lz"); -static const u32 sBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle/terrain_sand.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle/terrain_sand.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle/terrain_sand_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle/terrain_sand_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand.gbapal.lz"); +static const u32 sBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand_anim.bin.lz"); -static const u32 sBattleTerrainPalette_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater.gbapal.lz"); -static const u32 sBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle/terrain_underwater_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater.gbapal.lz"); +static const u32 sBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater_anim.bin.lz"); -static const u32 sBattleTerrainPalette_Water[] = INCBIN_U32("graphics/battle/terrain_water.gbapal.lz"); -static const u32 sBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle/terrain_water.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle/terrain_water.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle/terrain_water_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle/terrain_water_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water.gbapal.lz"); +static const u32 sBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water_anim.bin.lz"); -static const u32 sBattleTerrainPalette_Pond[] = INCBIN_U32("graphics/battle/terrain_pond.gbapal.lz"); -static const u32 sBattleTerrainTiles_Pond[] = INCBIN_U32("graphics/battle/terrain_pond.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Pond[] = INCBIN_U32("graphics/battle/terrain_pond.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Pond[] = INCBIN_U32("graphics/battle/terrain_pond_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Pond[] = INCBIN_U32("graphics/battle/terrain_pond_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond.gbapal.lz"); +static const u32 sBattleTerrainTiles_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond_anim.bin.lz"); -static const u32 sBattleTerrainPalette_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain.gbapal.lz"); -static const u32 sBattleTerrainTiles_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Mountain[] = INCBIN_U32("graphics/battle/terrain_mountain_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain_anim.bin.lz"); -static const u32 sBattleTerrainPalette_Cave[] = INCBIN_U32("graphics/battle/terrain_cave.gbapal.lz"); -static const u32 sBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle/terrain_cave.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle/terrain_cave.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle/terrain_cave_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle/terrain_cave_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave.gbapal.lz"); +static const u32 sBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave_anim.bin.lz"); -static const u32 sBattleTerrainPalette_Building[] = INCBIN_U32("graphics/battle/terrain_building.gbapal.lz"); -static const u32 sBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle/terrain_building.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle/terrain_building.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle/terrain_building_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle/terrain_building_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building.gbapal.lz"); +static const u32 sBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building_anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building_anim.bin.lz"); -static const u32 sBattleTerrainPalette_Link[] = INCBIN_U32("graphics/battle/terrain_indoor_link.gbapal.lz"); -static const u32 sBattleTerrainPalette_Gym[] = INCBIN_U32("graphics/battle/terrain_indoor_gym.gbapal.lz"); -static const u32 sBattleTerrainPalette_Leader[] = INCBIN_U32("graphics/battle/terrain_indoor_leader.gbapal.lz"); -static const u32 sBattleTerrainPalette_Indoor2[] = INCBIN_U32("graphics/battle/terrain_indoor_2.gbapal.lz"); -static const u32 sBattleTerrainPalette_Indoor1[] = INCBIN_U32("graphics/battle/terrain_indoor_1.gbapal.lz"); -static const u32 sBattleTerrainPalette_Lorelei[] = INCBIN_U32("graphics/battle/terrain_indoor_lorelei.gbapal.lz"); -static const u32 sBattleTerrainPalette_Bruno[] = INCBIN_U32("graphics/battle/terrain_indoor_bruno.gbapal.lz"); -static const u32 sBattleTerrainPalette_Agatha[] = INCBIN_U32("graphics/battle/terrain_indoor_agatha.gbapal.lz"); -static const u32 sBattleTerrainPalette_Lance[] = INCBIN_U32("graphics/battle/terrain_indoor_lance.gbapal.lz"); -static const u32 sBattleTerrainPalette_Champion[] = INCBIN_U32("graphics/battle/terrain_indoor_champion.gbapal.lz"); -static const u32 sBattleTerrainPalette_Plain[] = INCBIN_U32("graphics/battle/terrain_indoor_plain.gbapal.lz"); -static const u32 sBattleTerrainTiles_Indoor[] = INCBIN_U32("graphics/battle/terrain_indoor.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Indoor[] = INCBIN_U32("graphics/battle/terrain_indoor.bin.lz"); +static const u32 sBattleTerrainPalette_Link[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_link.gbapal.lz"); +static const u32 sBattleTerrainPalette_Gym[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_gym.gbapal.lz"); +static const u32 sBattleTerrainPalette_Leader[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_leader.gbapal.lz"); +static const u32 sBattleTerrainPalette_Indoor2[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_2.gbapal.lz"); +static const u32 sBattleTerrainPalette_Indoor1[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_1.gbapal.lz"); +static const u32 sBattleTerrainPalette_Lorelei[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_lorelei.gbapal.lz"); +static const u32 sBattleTerrainPalette_Bruno[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_bruno.gbapal.lz"); +static const u32 sBattleTerrainPalette_Agatha[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_agatha.gbapal.lz"); +static const u32 sBattleTerrainPalette_Lance[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_lance.gbapal.lz"); +static const u32 sBattleTerrainPalette_Champion[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_champion.gbapal.lz"); +static const u32 sBattleTerrainPalette_Plain[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_plain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Indoor[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Indoor[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor.bin.lz"); static const struct BattleBackground sBattleTerrainTable[] = { [BATTLE_TERRAIN_GRASS] = diff --git a/src/data/graphics/battle_terrain.h b/src/data/graphics/battle_terrain.h deleted file mode 100644 index f91c2d0d9..000000000 --- a/src/data/graphics/battle_terrain.h +++ /dev/null @@ -1,30 +0,0 @@ - -const u32 gFile_graphics_battle_terrain_plain_palette_palette[] = INCBIN_U32("graphics/battle_terrain/plain/palette.gbapal.lz"); - -const u32 gFile_graphics_battle_terrain_building_tiles_sheet[] = INCBIN_U32("graphics/battle_terrain/building/tiles.4bpp.lz"); - -const u32 gFile_graphics_battle_terrain_stadium_battle_frontier_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/battle_frontier.gbapal.lz"); - -const u32 gFile_graphics_battle_terrain_building_map_tilemap[] = INCBIN_U32("graphics/battle_terrain/building/map.bin.lz"); - -const u32 gFile_graphics_battle_terrain_stadium_tiles_sheet[] = INCBIN_U32("graphics/battle_terrain/stadium/tiles.4bpp.lz"); -const u32 gFile_graphics_battle_terrain_stadium_map_tilemap[] = INCBIN_U32("graphics/battle_terrain/stadium/map.bin.lz"); - -const u32 gFile_graphics_battle_terrain_building_palette_palette[] = INCBIN_U32("graphics/battle_terrain/building/palette.gbapal.lz"); - -const u32 gFile_graphics_battle_terrain_water_kyogre_palette[] = INCBIN_U32("graphics/battle_terrain/water/kyogre.gbapal.lz"); -const u32 gFile_graphics_battle_terrain_cave_groudon_palette[] = INCBIN_U32("graphics/battle_terrain/cave/groudon.gbapal.lz"); - -const u32 gFile_graphics_battle_terrain_building_palette2_palette[] = INCBIN_U32("graphics/battle_terrain/building/palette2.gbapal.lz"); -const u32 gFile_graphics_battle_terrain_building_palette3_palette[] = INCBIN_U32("graphics/battle_terrain/building/palette3.gbapal.lz"); - -const u32 gFile_graphics_battle_terrain_stadium_palette1_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette1.gbapal.lz"); -const u32 gFile_graphics_battle_terrain_stadium_palette2_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette2.gbapal.lz"); -const u32 gFile_graphics_battle_terrain_stadium_palette3_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette3.gbapal.lz"); -const u32 gFile_graphics_battle_terrain_stadium_palette4_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette4.gbapal.lz"); -const u32 gFile_graphics_battle_terrain_stadium_palette5_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette5.gbapal.lz"); -const u32 gFile_graphics_battle_terrain_stadium_palette6_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette6.gbapal.lz"); -const u32 gFile_graphics_battle_terrain_stadium_palette7_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette7.gbapal.lz"); - -const u32 gFile_graphics_battle_terrain_building_anim_tiles_sheet[] = INCBIN_U32("graphics/battle_terrain/building/anim_tiles.4bpp.lz"); -const u32 gFile_graphics_battle_terrain_building_anim_map_tilemap[] = INCBIN_U32("graphics/battle_terrain/building/anim_map.bin.lz"); diff --git a/src/data/graphics/battle_terrain_unused.h b/src/data/graphics/battle_terrain_unused.h new file mode 100644 index 000000000..b2024a8c2 --- /dev/null +++ b/src/data/graphics/battle_terrain_unused.h @@ -0,0 +1,32 @@ + +// All graphics in this file go completely unused. + +const u32 gUnusedBattleTerrain_Plain_Palette[] = INCBIN_U32("graphics/battle_terrain/unused/plain.gbapal.lz"); + +const u32 gUnusedBattleTerrain_Building_Tiles_Sheet[] = INCBIN_U32("graphics/battle_terrain/unused/building/tiles.4bpp.lz"); + +const u32 gUnusedBattleTerrain_Stadium_Battle_Frontier_Palette[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/battle_frontier.gbapal.lz"); + +const u32 gUnusedBattleTerrain_Building_Map_Tilemap[] = INCBIN_U32("graphics/battle_terrain/unused/building/map.bin.lz"); + +const u32 gUnusedBattleTerrain_Stadium_Tiles_Sheet[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/tiles.4bpp.lz"); +const u32 gUnusedBattleTerrain_Stadium_Map_Tilemap[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/map.bin.lz"); + +const u32 gUnusedBattleTerrain_Building_Palette[] = INCBIN_U32("graphics/battle_terrain/unused/building/palette.gbapal.lz"); + +const u32 gUnusedBattleTerrain_Kyogre_Palette[] = INCBIN_U32("graphics/battle_terrain/unused/kyogre.gbapal.lz"); +const u32 gUnusedBattleTerrain_Groudon_Palette[] = INCBIN_U32("graphics/battle_terrain/unused/groudon.gbapal.lz"); + +const u32 gUnusedBattleTerrain_Building_Palette2[] = INCBIN_U32("graphics/battle_terrain/unused/building/palette2.gbapal.lz"); +const u32 gUnusedBattleTerrain_Building_Palette3[] = INCBIN_U32("graphics/battle_terrain/unused/building/palette3.gbapal.lz"); + +const u32 gUnusedBattleTerrain_Stadium_Palette1[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/palette1.gbapal.lz"); +const u32 gUnusedBattleTerrain_Stadium_Palette2[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/palette2.gbapal.lz"); +const u32 gUnusedBattleTerrain_Stadium_Palette3[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/palette3.gbapal.lz"); +const u32 gUnusedBattleTerrain_Stadium_Palette4[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/palette4.gbapal.lz"); +const u32 gUnusedBattleTerrain_Stadium_Palette5[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/palette5.gbapal.lz"); +const u32 gUnusedBattleTerrain_Stadium_Palette6[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/palette6.gbapal.lz"); +const u32 gUnusedBattleTerrain_Stadium_Palette7[] = INCBIN_U32("graphics/battle_terrain/unused/stadium/palette7.gbapal.lz"); + +const u32 gUnusedBattleTerrain_Building_Anim_Tiles_Sheet[] = INCBIN_U32("graphics/battle_terrain/unused/building/anim_tiles.4bpp.lz"); +const u32 gUnusedBattleTerrain_Building_Anim_Map_Tilemap[] = INCBIN_U32("graphics/battle_terrain/unused/building/anim_map.bin.lz"); diff --git a/src/graphics.c b/src/graphics.c index 56faf0b60..57fde9290 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -964,7 +964,7 @@ const u32 gFile_graphics_battle_transitions_vs_frame_palette[] = INCBIN_U32("gra const u32 gVsLettersGfx[] = INCBIN_U32("graphics/battle_transitions/vs.4bpp.lz"); -#include "data/graphics/battle_terrain.h" +#include "data/graphics/battle_terrain_unused.h" const u32 gBattleAnimSpriteGfx_FlyingDirt[] = INCBIN_U32("graphics/battle_anims/sprites/flying_dirt.4bpp.lz"); From 273e7fc0592b9a659e369017f44606f660c3ddd2 Mon Sep 17 00:00:00 2001 From: hjk321 Date: Wed, 31 Mar 2021 10:08:08 -0500 Subject: [PATCH 04/28] Index battle_records and berry_fix graphics --- .../{tilemap.bin => bg_tiles.bin} | Bin graphics/battle_records/bg_tiles.png | Bin 135 -> 175 bytes graphics/battle_records/palette.pal | 19 ------------------ graphics/berry_fix/gba_small.png | Bin 2790 -> 2434 bytes graphics/berry_fix/gba_transfer.png | Bin 2311 -> 2005 bytes graphics/berry_fix/gba_transfer_error.png | Bin 1865 -> 1628 bytes graphics/berry_fix/gba_transfer_highlight.png | Bin 2207 -> 2000 bytes graphics/berry_fix/logo.png | Bin 2531 -> 2199 bytes graphics/berry_fix/window.png | Bin 1430 -> 1214 bytes src/battle_records.c | 6 +++--- 10 files changed, 3 insertions(+), 22 deletions(-) rename graphics/battle_records/{tilemap.bin => bg_tiles.bin} (100%) delete mode 100644 graphics/battle_records/palette.pal diff --git a/graphics/battle_records/tilemap.bin b/graphics/battle_records/bg_tiles.bin similarity index 100% rename from graphics/battle_records/tilemap.bin rename to graphics/battle_records/bg_tiles.bin diff --git a/graphics/battle_records/bg_tiles.png b/graphics/battle_records/bg_tiles.png index bbe9de321395042586de5f2e09e1a7b35d11b2d0..824ec68b04e3e70b77b750c3cdd8f947bf1e132b 100644 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^20+Zg!VDyRSrbb@0s%fDuEj@}czJp4ZJzUN&eePG z{y+Qne@b!p(X02?EZGZGf(f27L|Xwxtvp>ELpWw8ConKMN(7jB@v}0qNjOX^U}S1( znIR;R;H4tj%(yJ@)DG1GiKRJ9rm?ZyP%%2y$Z%7G!M0B7Sz?XJVvyOMu6{1-oD!M< DBGWOz literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^96)Tq0wfsD?CqQer2ITx978x}Cja1P;c*do-@xFt zXHWI?hj;H7r%T+s+bH1hZtiAt$0H>wrR9wc4|xO}I1I|w1Pn?T7(G7nBz1&39M~Yu ip};bu+qcJ~o`In~eo4&clR(2$c4eF;dN>#rCAtTJGk>l*QE`Ibv#*#ae2dd}~}Q000RM zNkl8q{636)p-7^yix`a*nix&-PSsUv}<5I537m$sC;m`&=`Rah3RLXqW zC|KYKY@m$}m`fb{4Gz$|?EhcY%^7ky+Fkf?XB=ERCY#OfU)M)hv9(bIF$1}A?wK^~ zRc_3kxmo>ijoXOanP?Ay+38|&>qG$f)17&mpT*{1V}Q>ifX9o)+r{Fi1?3We<4+3s zJY0tI=U+wu(4cL%8XOx19B+qw{OF#nR5p8n&zsGso(~9E{n!CM%Gxq{Nf`n@-zD+p zQ+Tq=WnY6M=V0PuwYtjlvpm20ZnXvAoiWFEM_7Cl0PO4e;AXLST@p_ZzKjL%{N)aSuQz5F@Kl!Q%~vJz<-6D%d4LOme)bUR z{pK*>!zBP$FJ8Y~YynFjQcxEQ?!U*Y!+@m#`abaCWRQyD((HxF10G4I2fSF&#~!fz z@N7+G!s(&|Rd426@NC!i3hYW4pHN6qnWjuufZP8MIPs(&!>= zL;YIlbYIqWhIKZMVM`o4i*?ghT5$@padD&ue|YArzB>3?pI`z24z9oqT%bk@KxjE@ z({-d4hbetg6R;%KwR%bQF&31CQzOoQH$J}u#9T5q&Txid%cA=hxAr!|eE%IA0l2nx zw<$lAsk_BL=h#LoWj8tyg|-u8B~TJ0jj=ZQ3&QVi%eig%e(nGy#MU=8?h3eVM?}vM z*CsM4qAcqn;;DpJqV3iOu`_(PX1qD%en<2S5t|79h;==giwA_r-TJs|@KeN_Lv{gj zhIkBs(Ey9yxQiN4+iA-`B6{@DW=F&ajvAyAU^OAe3Edln(r*F6m{EXyn+fj*J7^HrCg0)4j%+fX$`@XpuPxfCeloJR@+T_=5Li1%&e;&k+v-_=O(_=y{Ok z_Mi#jjBo(Z$tYl~^N+|^0KgY;q}m)DJ7Ef`l}J$xmjSdL)^M2|XWV zOk&gx%c8;gS~>Or^FuzEKta|GVseWIElD1LI*{WJ9G58oX^xJe573v<_FOd3asj|Z zrocd{0s6$8m$csjup^V&fp?S1L_d{tUk~8YL3BoBd{7klzd8TFpsyjB{*M4%n(b_# zWGq+v85wmQzPGpklF63>Mz!t(=60LoW_UJW>d0AuM+c|d-)KYLVOpf$eCGJr*#I?0 zo}8}&7$JuP`AHFp68U69DY*>J2J+39)Mg#<0H6An=MGdPeB1@Vt`5+h4Or#0HbC6~ za0;sL$00RS1-NqBVdCa}TUk<7CkbtK}KUUPgdG3%WTq!Ul9l(=cR zkmCeX6Hm}!JW&0pxd)Q{_W)F%F919!-v9>yr74S|oEDWlO^b3kU|NM%aR^X0P1%%F zPMtP&)q6dyI>59U1=Mv@5@Qsw9lsB#Mgh~hDvGKu&8*S!bxnhcq84lPUMM`8j{s(6 zRW{YkYYrdOB@HT@x*@T~9ZK@`v={}@33Bs3Xr>L81!g9Gr3urzV4FS|JBtaR41kJ1 zRjDaEK+|{=#sOTgXuJ>jgW16c)1t1XjcNcVj-^^-ng+Ag2eV3kP1R7?(LkF@o8wXV zBk~RKRRDBn>}9;{!>%CsMkm;zzN?HRB{bv9okD>DWhe-_opx#5q2}_W(W_ z%%C1@M|J?zuL>Gtw^yN*l_dd^46;ButxL7E@FQhj5ouD^byd!o?~>^phvfB19RRS% z+uLwt#k$dWA0RucQWWz|sRcVG5YXV!+q-AN5HO|oLqPQapeUQ77ULS!0R@<@AYk;Y zr~_bDlpUZb%V<_ff}3V$qy*qnaUOd@^f0EG$%P#pY^24i@fB?4Z-D;>V82wT_!Rwp zfW3S+#&4xB0C+(73FbSqo8T2Kp z1RFc!8kQiIf=JF&M$bi3hVWQcCgiwZmNn1=bet(Q!wD!Q={f)&eGw>j0aXAEcQA^lbL?x%eb+>NaLS zwr@Yr=e2-3yzy7!u^H-nyn7ms-#40ehFF>V%qw!ra4Lp#@jA;ymi^Mp$C)@iRiEKB z61AAkF2rmmrNAHAlCz=ospq!xN{ z+35R@awjJz--(Oocsi$u)Aw|nL7U6()#)je;*IyS*#aW7nOofFFUsH)>AqBO_1!|u ze#-oDal+@o;tt3zZN)x7Sigp5{R#N?=>p|Q+`l4b7E=7;0&&rpdkD8e-oo%(`kOmo zjXmBHF(0Tdvdm_y19ha_l?(QjjrbK&iR`+MFHF==LcX8PM*PUG&yD!;U2Vkt1#t7? zoWO3pd4^ox%mGQ*;8=XK_+j=@=vNjO9|-ASm41A;1rpWZ^}9v$-G>E2_jVT{br8N7 zctNMPP+@f3|0rZ8Gx0HdWAQ=A1s>QC%bn-{oL`=cck`FTvs%2l0pt#6bQ-u7{~+#J zIrrRU!0irAy<8FTmCVKM@=Y$}2LRvYt?v#;qZOBfUhZ+_*1f$F)$P@-s6tm)H_z_q z(H*b;j;r}4UIV1;Ty1@8((3b+ihx{97V3Lvj>qqTwnLq@8ud{h-B9f-97jv?#p%XMW`=V z?S0gV>9&R%utl;@&gZHX$vtl72s<90ix=ox;*RZW8_xOmAPBU%=PsOxPe1|3^ZfL0$c_HRJdTlH1$ysyfG}rfZkI0x(L|PG1gj*f)HfnAy6o89} zr#-HwwFa~T6mQE0Y63*j)DTKc@ukpp&4p?RE8NzmF2zJ)HK)qy!;&Qgg@&Ne5X5T+ zX`DE#ri8}104S^pVW=v#F7X}SMU)~@L!kpqnG%{X&6UwL*PXyLdgK;2TGX|I=DLJt zx@DBcRaq(oqQtvu$}x(Dm(v=m=vIl_X*n?h?y8m_rA8#R;W4XAxIn{|#&}e!?UELz zoYD^%WHisgQge-($LB<~1KHa>_v97Vfs=qNd2I%P&d? zz^$rrTTUi*CoZOm3(T7$6})9|kidObCydLKahcMO22)~E!ryYI&*r0KK1$}JWIjr7 zK4>Hh-4LqWT{$@xA>|(7L8WA+tV6{3RRG3x?jataECtj5<> zmBzaHn7>EsJK#qpbYUc6^NYNV=hx6aEswAdkkxpt(LO`_DjH;g(yPLIOG~_=3%sFo z)W#+xx2-U^Rn?Fy3cnm8#N(Y>Hg=i|=qo%|-gR5GR@redAjcn`$PCg$Kja2i0j1Rr zHte1n-xj*zl1k>NjbamsOQmxMNfa_5S8%5ktgr$GhUKct3Nv}Rf^f(Wlv&k)wFa?3 zehXM-u~8NLmD2BTQFS3hNug;Dw9g!fbGOh7)|xZi?hnKLF<#GwZg5b}?(=+n9~Cx7 zl^*T8g!F~eHSUUg%K{@J)D85t8j7uf8G?k)p|H4roSJQ%CT`|K9)<{BXsCI zvZ>wXS1}*s=axO+M)Rh5eCDCO--ZowRkduf*c9Ux*7U2KU6cv!c$sqxSxCiAOj`<% zJ`@+XxGsds0lC>6w?Bdr+H7kL+f9Y{x!Kp6WUUpUKG}t@#{VbC8Inzo3RCn$IzP1C z5N(h4=aFKq<@WC~ilL>N8w|jKdoV7F#U(Z1t~MKg|C8)U1w)ssL+6Ywt~QF_lHWqR z)5_n6j@d_e+`@KF{PWFqEDKX{lknJ4yp{I5gZi|c>*TQS_Op*;mwk79PE`3Z=ZB(^ zDB|%XyD4a(uh*7x*Vm3%mvPC*`*Y#?Ge;7R5IpIsob%r%JRcMd4)+(fNR0*veE{?Y z<_Hgba{srv&J`T{vyG_?^k;Xx^JGW(Fgz7*ZqftIRaG>7*ZNUOc3{H}+>bNoFvU5H z=?=|*wz&4d@exROb8ab~Tl6;70YFuiuE$d#41hFzFd~BGZDvWjN25q$ubpjvRd}#6039#5o586 zo9_mTula9_YwBAkI}HB4F(sDJAl4R3teY;a8He0jXYeD9(}5p-x0V_FSjItp>m96V z1Ak#R9Nb~6Zz$J8hTuRf@jUg%rLa%!p-z}1erx7B?c7?0g&e3&XPn4aFi&Q`?7zeUdSVQI9BZ3zlsfPPadKEqzdk zG$y+^ubW7Yq-V`OxgPD48BI%P~9h~Ei=P?i9QssLVbu^%>pG9v&r~lj};RKG=_xz z$}g9?^mLk*KZC5W6=Be6&?W<=va7X>Eiw?(b+XDB=TP5`305bu3iU}VvPT?} z+sE0gSZgNGCli+09ymV&ebNJe{B{MGaXTOA&xiI=!v2zu?l)_OufO#5Wh}TO<`*`j zI31Nk?Ivhi@u(czO%{i8)B^u&n6Dpnv7{eMpC4%lwhzVrK55#=ah74p@qUlaY#6^W zKhh)fVb86j@)4?o?l6J9kP)N#u+AhlOpLhI%z4NJ=ONQ6vm~t9wHEY^EN&(l`$pVP z6rCnA9@`KLtc!t&6~^NjS4pT(rb#F4{ngq5v;81rKVZ58{cp(~um$Z4_Q`Io#Utwy zTz3`d2Qf#}!~yw8jE#%^50jk;r5^0h!G1p2^ijJ@^j+u2a7ak)fy-$mdsSs{jB1 diff --git a/graphics/berry_fix/gba_transfer.png b/graphics/berry_fix/gba_transfer.png index a741fe1b991d69b784989978cc8b9bf200a65bf9..f8d49db2121aeb36f9a20626deb3af6f10fb57e6 100644 GIT binary patch literal 2005 zcmV;`2P*i9P)lR(2$c4eF;dN>#rCAtTJGk>l*QE`Ibv#*#ae2dd}~}Q000MI zNkl{(N~9#KiQGe)YGX^gJ3GIf5AJZ21Ob}b(C&;m=8nF#ch!gK zs@xb8(s$4Td~R#UMKL$rZtamh4_5)YxKb;C&kqafi=ud26rT!eS8ISfhYf3O>Gh8gO$3!0p-Vi((aU7Jyn5l=c_Z(}0oz>oF)0L?p?%E47}cR-~;5oD~$~ zC4eFvknm2d7oiAFFVAm|nR#}-5?3GH)63IKC^vx9%MJj;2H+DjG|ml&!&Z7o1%RK* ztLbk5`MnL8KzTAD#$@6xVBdm^^6ix3cbZ)<0c=5e{>gN?A#m&*XIl%gSr*~aA3-^WE)lxhw_A%rI`lS1J+_d z(LFFPgxQ$Q~iEY|llN%zVF`J}0wkrD9!Eo2i(-bUh2X zgQjBDbg2c39W5Iw>8o0sSQgEU7JzO5GvntL0CBWwxu?*J zHJJe^Yzh3ELezaJ7Y%K67{Zq@G#dNHHTS|8WYm45d06{`axVd%$_Oq1U=Ru{!3WHU z0cd*Ajb};(^~M*gxPUFOua=Kkh9RRgf@)$GYzKt2N2rV<4MjbT={dgYISrq-z|^&w z$MkZH%^bhRP#?XRrZEAzVQC%I6fsH^=V+N@iuy9&^scQ*x8|VN^XVduwWL@8I$Y!! z+Vgrtqe#ca+prD5Q^x7#Y@3-v?iA&CCi$-G$5tzfPym0(m|dW_hLj>R_j#A($DHpj zz`XE)#|40O*$kL%r00j6@49|yHM%>%C;((EE`-paWW}>uYsHBZ0Oh-`J1L4A3;yIG z1F)^qF+P!A6T*6VNC+?|3)=d0cUS=+wVY|(+$dl3IkEyxN;&7d3!vMXxX=Ko^TVSY z^&Q&32Y7t^>$!l(=K&rbo(bUJ|0ZA;rEd&?H(_@s>U?q2SYt*T^`pQ>wmW5^t4FFm zi_7(^l!i@Y{3ifHg4O^q8b?@U*@7ONG3-=+E`2qBTV*a(TFX;Dn)CyK8f1cZDOCsEe(4<5AY>z4`>0LOZ&;1 zcztFa;E!{XCxd?g@SvYQ1>iqB0JJY@0&w_onM?YP*7chXO`}T$h|{E>B|N}v(DNnD zxm+dvJj>`OheP6)@6a?R(M1OUOlKfteJchj0L1U-E_J*CY!bh)W!g`@3+VJ|vy=w} z(2;i#g1n!)lr~Pc0@4-$r+)z$z!8@r1{qtxom|K+NqMeMD;mH6G2qh=LC(K9eg=7t zU$S7(bn-!(vykS}d@x99iUj#L^eFEE&jFwc@PYY~!{0QoAbsXAnO495&s%M zt0)9G<&G?pZ-4x`lO$9P5?>Hd0_gddvcTs_)&@A`89ncVBwrqX?oi7UM?$I-2_Ipu z400f4ZIHHINZNG(4Z|d5llxh&7{CWx0BQrET?g2LMG>I5Z3j3~%6#3+Q3uFanpAx5 z36Lc}0)WcUPtldN0g3>hY#eQ_1#Cf{4w@fMF@&^ekfIi#VxoiYKw_{dOI!1~NMWCg z)kZ+R4KQc`V(qtZn7#+V@@TnE{%Bqv?9NoH7BGOG%SN1MZ6VF)>wwOh6+qf~`8R_V zz{&+7;Ol@G&jxmfToG8MxjCq&5HtXK@$(rc4M+WKG32*u!sn^EIdCn=TSl=9IAL6r z(hPC}_@NwNxvZperfIoz>i~Z7@(RZmSIm zDey9>1t^S50PX-Ozx|c+w}XKnl7ue?{w5$d2dV{BC>8+q%=Ui;82^8bI|G{kYy4_J z``_nx0<{05a94o*1NN=}YtOB{eO2AQw~N1#ekH()4R&|HqU{9O)b@ZqU=P>>_JBQL n57-0tfIVOj*aP-}?;7woYJKo{7gF!v00000NkvXXu0mjfjAo~} literal 2311 zcmV+i3HbJjP)@7C1@;Z*5qjRk0$N}W_HA=Zt{z}AcNJ)lMPamg0m;#I5OFitrY`N9(xwr8 zTJ&IV6-FXp)5+voOeRVR{Ha5yC-`_MKHUKiSHeth z`s8-{9*N)dm4zJM_&AwNA>!Yd1j7D!fw13bxNtWWlV4@Gzh3wXm|_wkZ(Kz@L)g5B zX7dI3{^c5FK|H-9CJsvc?hU_IhlU?xF4P=`&*|^N19R+fOC)@t_aUXr!XEUQax)+7 znTz<0D22Q~#5czNSD`*0C*T0`9trs64r?KP13bLBBCskRULltcF`x(+9Ea}?KTkdj z^UmS=6QMku($9Adkf<8(@22&=Pg8{Mb{ipm5?wLq1f6c6!`O5Gvrtk=@mYRw_$1U6 z4_t`V*7JYIH&@~=eoMSsi4PBe+TxN<19R~&;)#{>#MJ}Lx2Wr7MkF(}5cBlILa0vw z?k!sPPDi5^my=%ZF!S@yXQG_X=AsOZW)H6(>Cq!c|HLT1!E1n0d!xp;HZI@AuhB|< zU;FACit|m;w+3?`_Shk26@#61e@m$Ot={i1T0CoH`u_PDqkDPZdLy}QQtRa?a(^$M zg?zrhKUBYytA!yV@1OVA;J4&ZZV%st{x)l`qrI3mHB=*J=zuuZtw`?h5F_k(cqQJj z9lFNYgfng$e4x#}_TfY%u}#F>viQcu(HlEUW6C*nZC;RgpruaajflAgx>kB1=gf_1 zZr9TtB5Ml~8BIhHE=|PCsJ?X200t3vU5v&n0~ifxUKTa<2#BJwCA1jhrZ6jR<#q*O zjmwo?6=I|@n^)!aVafu6!az_M2;w!1G>*JgW5Qrx05s-=FjN)B6u5_X5v541pwI)R zj0r>7dSuOt^NwH|J@S)VBUUR7&8q^M>6X<7qoU9VM1gnpn8y?vUW`{zMYjrEj*F2M za96kdC=4QLEVo%xzy%tv4UQ>=Zl-jw#h8A;AZxe}7KU@IxP6XvOKxltPMAlx4Bcu* zx?p-}eH1|pFh0I?@ctSaY4|RqVcdwG8)t?UaJM}#+~reX?4Y696bO@!kd$bQxL_WP z7?-ggxez12#h8J>CERVtMURnHpI?*?fJ?o?WicA9_TpmexWK$IQo&0G2MOF|b;P)g z8J98rs4*r+1^g|x`dmH==A&Rf3g)Be%m+$#CwGixoUPR}hJ@4P#m z%A55mQ`>o&-(|V2um;L@+kyb`=mK-?MpM1obXVB2To4-qHMvyX`bt>UrVx4r;Ru*oSa@_1X8lX5|OVl zN^H{YTbfk~VkI+?NTw%Qcgx9)T5?24<|%6}Am^;g_D9`vC@zN-3dI@KRaQeL5`JWXxKs&&Tw_P3wxVEf7u=ToT_R#ee1k;{i18u)pS}e+a{n#U)_fL z=Ydwya0}Cwen3slI*T^c5 zdR6q;$Gk!8{Jdo>vmI<=yVrTvfll??T0=;IBvkh~e^hZ5#(ov-Yd_wvu)U{j!|U$O z;EIco+_oVWm{;-y05#a|FoIatEtlD|`u(~6AY~U#vj*!dTw%FKn*WhQF3{I1Y#gnYuB7%m*RJmZDW7)N0VHbVe;{v}k6*c=D=2ms|t% z)9Rdl+9ahz-(i?|{_BWK-KA>OaXF{2Rp<1zv(K?VjQ05e>A^Xtd!1wTptExIR0&4w zEU-Y+;^Njye|wG zu#dg}L*Y-b56b^*$-)1j?Bv{!qU!o1-f*MP|Fy)#_3P%x>;ruR1`HT5V8DO@0|pEj hFkrxd0R#R5_#a25<^WiFRBiwO002ovPDHLkV1kDnf7}27 diff --git a/graphics/berry_fix/gba_transfer_error.png b/graphics/berry_fix/gba_transfer_error.png index 766b9f28e5534ea4af4a9e06275962b125deacdf..6c5f69ff5f6bbdbaea43e761a065516fde60828c 100644 GIT binary patch literal 1628 zcmV-i2BZ0jP)lR(2$c4eF;dN>#rCAtTJGk>l*QE`Ibv#*#ae2dd}~}Q000H& zNkl8n`5XbonyOIhcZa9=3o4AHt%TBGMjB9lgU%(CsBc%hFeSARJN}aEh ziU3C-MQXdrwRwXB^e*?GSyEa`RL;1&B8A5^IlDXi+xb{7<#`b0$eid@6n$^z#fO>N z5+d^5w$}h)c9>;L61g`g=EC0w=H>68XcIRw{5sD8I8Kt}m*#vX{Dy861e3p7>qB0(&!%iU zNUMxb#2V&9N!+(b$de@8B0Y8ZWC7m*(r*h1bwG|xBx9W~eZ|`YEYMxXx0e|JGPerkxY!TKudD-4 zb}ay^Bs!gSX?|@2j-*ono5dJ#o|%ESHg*l2u;w-@6sFHMT#~`$;_g(|I=_zF0Zw88 z7)%-fG;08&^=Jbibe#R1U(MXo{tiGo;mTS-Fqp6hf3yP}3hYO{pDSqQAZor1DRyD;=06Mf~^#!GoR0^faHUu9tNU>F^H9~-H0c*gafRR5axBqPVCtNtH{fc*qv`ETR!Em#7M6 zvZ>f{8B2DguHx#8lHKrXRl1vroZpI`TXlY8!t9;@PXPC~qPKD+%X|y? zY}*W2t^QgA+;^@OK*tqeS3d$_oO#;X?A9(=KH z9zS1g061ohxqnmK;Z6gZ3ue-YiSSRU&s#tz-Oe{6Eq$y6iHhi zy8siIW{+t+Alle=+zwDdTemAZYCd-X0YyZyy`iNkAd28JG@e5|g0_wVTxbN_05Y+O zV-p0p$FMR8iyzzvlbDBVfY?Uc9z;6QFo^@rfDT15J0gAJI{(!kM4D&^fHC5kv3Q^i zw5SQ#gn*nHw;&eKA)bjGNC-9u9SUkdhinLO;Il2#-~tR+%ydk|JG|40ph6;a8#G|j ziIixas1tDqJTNZcKgtW>hX5qWxI21=VRyU-FiJN#~#CN$`0BxBS;p~cZYo%581A6sxy_R*K19+yq0A2tufEU33 a2KXDmonL}W^g_n~0000Wo3fwp7dRgN6h68lK4c2zqlGO#8?kdoXMIp5L0sDmh9lr;FcK352X0=<@=8!74Z*#;t??T{Qx{DC5-O%%I-0{w_ymd zr3yUDfd_SCgqBkyAaNtIFzkx=VfeeqJg@7XHK|wli4Z^6YP3L~N{j;GdDXJdj1Gd* zKFS^U-kgZ9a$MBWdsXj#3xZ;ozYkP(4ByOc(kOC7_Z8g_KPHJtlFz+$kz;Xmq`tvO z1T5_JPDQULrNE!ubh?M1gXHK67%YSi&-cl#^xY6|)QN!{W_;=OLWsB-y_T@w93kxI z3NBoRqW3y!_SXrY03j9;$+>-Y0Nft}FFOa~zSB8mtAl3*n!tUhQPlxP#35uv=Kvy| zLkiz>^d*$ucc2uS4n&77Gyq6L*jC~ljMN|Dk^Txid_6@u61N|So`n>jUBFJ|X27;F z5psfnO&I5?1J+pKf`~Yv){!JO`)g2-lpDAt4{W9fL@tuiCcZQ0uZ8@wo%jtTBP9OS zCH7!&28_>62<*o3Th!1v03=};cC7Z-`hL5217*sPj}CqgFPU14)iawio4i9N^yl^c zd%$OQz^2S5&nCsv1349w{->#s zR{)+(YtMFPp_Y%G(OqHS)}0JQJ{e3z-qsq7-`+5iH*EceR&b7KfRt;k%C|a>KLqb^ zWV!R>n|pCv-z0sjFmdS)ECTLYuyLPX5OQ*%*5Bhw+$mJp=J(?>Q{25Fhr8k-TFJ{d$cLHhVMdsAJpF)YcZ{Aw?x3u0YRW@kz8RMAnX`C z5obJh>;Y7TGpG*ImO6ds!ih-YI1YF<;EbcK87oTz%2_mB5+E_ArB>uj1iWh4BWpv> znj6sErqLBVV>01sMR*>%+GE!%yA}#S!{hA+Ex*u!R)AtRE1|l8=lOK~QK23JpO_Ge~3CS>+QN=OCc4CWN6X(>lX5%te$uQ9z*s zOz{a#n6hPb!F9VZjUKthjTS|rpt;DPnQj@S(aJJ~KxCM!d|n4>c;**SMYl3^{j6&Q z+*LI{GL1-T!|ROB-~tU-8rQ*0RZCi!%%>kP$Y|a-GR-v#UQ@cNCg&T36Xww^O}DC+ z%9tKn?|IMy_}g6z=dY%bnsXTqZCmtQTQiJ+yY+S9E=K|1LP4|65GLgzDV~qGU>&p= z7hiR4h>_pSXCTmpyY;vzA6a$zMd<+Ossi1t+b!1OV#>I{JRhlGm%%{-S6S^cE>X_75g^~SsS<9NA~+8TYi7=)_m-BPw@TmzNo|Vwz?~SykZ1TW$(LF_n3~Pu~>xb~&AH>$6tLRTuj= z&Go*xCfaTBU}5G>tM=)*#K*>;UxT zOYHGir}QIzMBehp(OkJ`uCO$p5(@$~nYQeiT%)+A ztT07LxoFl0O{_3jmD*a9ix&H)D29B2M7dg%+qG6@MweJH_NK)?SYO8?m2E-P=^7Tz z>te+efN2OHL}ZIxzFuasO!BR5=H&@?(9R=~1$ z-FT0_7!Hew*c+=ku}{wV5%2e7&iEnjjV{cFt1jf`!+39;m%(|2-2aL=8rBObYL%Pg z(-##MiFk%qWTNJn_J{L`VH%2vIXBU)SuPnSWoDAN&suAdi=8>)JIGzLj7?=$s z7wip>P+apGAlAIDorW-1U>cvKK%Vi8XFTH>Pl0~{bi9e#f4CGy00000NkvXXu0mjf DuDp}V diff --git a/graphics/berry_fix/gba_transfer_highlight.png b/graphics/berry_fix/gba_transfer_highlight.png index 25b47d036aac2f8da4bd0809b9a08271d22e16be..e763bd62b892f8b1e8bbc7a12f046457a394c89c 100644 GIT binary patch literal 2000 zcmbW2`8U)H1IEAK*_#+^nnpD#GTqvCc07#m(#VMEQyoK!M@DKX39V=)q|MvJD`g#~K%_5%OESEYQxdB-{ zWk{ccmT$!gdEVFT>uIn%OvTEDcE%bP^L`t6!k@hD4 z*SW+4<$(U?N5`m|@*aKwyv<5IEKM(3_8_ns5VX~KVj}Hyf^wv5)>29$c+HF|Ug?e_ z+G)6<#bX*N(@%ccxvCjL$je}!+jPAF$`}`D8Bi7=A8;U7%-1Odw}55q+U=ef&); z8L6Aoe0VCm($<(+8`_oo98Oc6bmgL;b(0jh;Oa-6MH}zEB1g|@t#GWv|B{8iBd;z- z6RB0 z2JuMx%&Dw}&ZF0EqDDz?fEQLjqcLxO;RYsTJt`;M@x`y%&VYu@#DNE8%%o?h5d-_a z>k$C+_g1d1u*)c|lS%R<6QM*3MQ#0^J7LidVr;GrVuS`F$R8JlK+9qGjPXgqb5h1b zd^YB)hwG(xsEqDEx@|2M)RfB}WAAlLxLzU274hez_*03xP9;3}Q;b&Yhpt=L`^iJX zSozD(KX)5>3lKd$o+=lA%Q|y84|^VMiww}#_$$Q!hfPMi{k7^+IeCD0A#+(t@+zq& z$RKViaj16T_ecZ{piUi?-}7a0)m@g>5#Hew@-=1L9F3_Pc+_v*F>1^>Kfm#1?Epc} z8pq2LcnLNZi-$l5yW$yj(}#?g#tK)NEA5(P;J%>H%3TdsnPdhcSI?i* zR>bEZ=auAp9TK@X^=kO=i9(Q>`*auolve&fPjZ}x7}R6Ca;BBXk0q=s*)wCfGskZK zNVju5*VQ!3%-`d=Z%>WkImySfs`>r?dwLH!Mp=lDa?a`L))UV*G_PNI=NTEPI;yO% zWcROCcMtJ#aLGX08kjTf3{Y5iI)`^xanyS0H?1C0!g2w&$X9B4iH0ONuLHFUz;3+2 zk68d5*8?PC5=Yrw9oXsA*B=lfl2-cq3{7jzx>^P9Q> zT}I0d`48Cn!i;G@8b0MnbWyp;ILsE;+6)y` z2SrV=MUwGsE^_o$d&;Q)5w_b#3Vm%7DzUo!U4>0_GNg1q6KBATVq7jxPPO*iD8=IT9x%i_QFmLgYA z%fL%yVbLG_d|e=tM($tph_Dec(gz_KORsphChP&CtLLWrk6IRHH%ZSL9XY&Ty!JU{ z;l^xHx;}I0n|*$s%1@@pH6Y)!e-VtZOdDZ7rl=W}Cop_rHi#$)>y0{DcEdQNTZIq` zl0ykQ8{88f-7=h6>MfD_zJK6;Q3dK3qj4iqAQieCcT+-<{*`fk`?xS3mx`S!u4+}# zxy$;1;2dum%ShEb(EzHkV}ELnUBNjZgl>A}t!yw)*{iHZrcJYV-8W$mgaG^>+A?6i Z1nH>xdBc}2wma7hSXEX8wh{?{|h2DTx$?yW8S+M}R*VijQyR{h0TLviKK1;s`i={s(w6MmRg24v74I zCh+%MxU=U@;IF-V!W*aJgf~w6p8fsgOq`vaJ|9`Z89v7^_kzp4&vSqyQ{g)eJefNu ztSp>>#GNSfd?McD`H!MZl1cckPoKd@8F=kMloF`xfB6&KTAF2xtQth$)~)V=(g zWffz2%6S=&Q-l5i)-q{X#?3AeeJ{yguu zHwa$>IVKVFYv7Tasm9zRY$3;WjN>JuRYywcCN4G_>8?{4$@yH7b> zceC-3Ify#;Vnd63cvD{exTXuaZZnHPU%Syao0&;^3 z8V#((--&x>&OLV-u-c%`ml^S4CJV9p$NNIaPXN9vI^P}kM#nD)t!yz1^R8w>uVyQu zheosI%R5?h$I%ZMW!HENkaBC}Hap61HD5}7Q4QtQ7h0Cw#s^(oyv<&rb%Z+pH54fC z14$n=ScULp9vQP8?A;$Xgk0U2?RsUzgF!|t9v(1S%om*}KHM}Z5acMbSj->9{9&=! zRo}|h!VsA+9=7-Dw-38=Tlgl-w^?_;ZTY^*wHg^+3}l(Y{60G5&xmT>jR z*^2W{uryi}CU;g;m4W7}gl3xMjK!!d4IEM8S(EbE$c2|_1ywYw#ARAeoPfEeV@GM> zN$c3QZ3z>&aAR>SD@`+{hbvRsfdx6szFJz&QL!CQOh+zta3_{WvnoCNJ^_7a`Gg1XBjn(! z=gf_J?j!#mP;TA>cse{g{q9oy^8^aY{7qFONvhq;*52fMOqo3Mz+=fXoRB-%$c@;$ z^VlFd`u^sXCeR1C$Nvod=VzAir3^>iopW(3=ZmVm`iLj|Xy}}s5m&F8X1Js84}met zqCM%g&`!GmW8|Kk-UZH`8ZU%na~M;ILKb6kMqBn@J!Y@ktYB{<#TQhJtO{ls&fBBU zD4-y$f-0a;R_)4JOd{5VtASz(gGbhihomQ!kcQ!w>wY;T7_?xEV$T%ZGXrvZ%Bb_pt+|5pwG!6eJpMsKFtRGqP8&{k4~-A{xxGjjz4_BecbjK!F>aE zbSvCW>DyW#i@Bn`Kq1s{+~_s!Yn?q1H}oFO-h(oyT)`UAKQDG(4P7A*lp4_I%bX@8 zYr7h<7b3RC+8l^Sfoe{y3FgayoDRZntkz-1A^_7e@8yu6w;_j;p{;O?uUoTM7#65) z%ORly3WKtan}dE1`@Y4CEGv>m&B6Ip^~x!>UXO}h7k2c^`QldhUtrC> z>VGg;^I+Z47vKv|!7?&*-sO~79?J;ysUdsYzK_{VCya8(a;<9^b~QQF_jO(2Y7F{W zS^pn=o|e}BSMlNV?s_viaPBlL|I)AT;CldisHJn*W}#~E+=Qf~7Au2alR(2$c4eF;dN>#rCAtTJGk>l*QE`Ibv#*#ae2dd}~}Q000Og zNklAcoWvl4y$%F{ zPdQoO91?O7tO7m=9EizH#^Csphgb-Cfr$jdw$@Ul27iP6tEy*qR$fIf6Krs6cGOeT z{hR7XRabYGAt@x2(yOOVom$va(#>X}byfnXBBgx*I?d)G0Y+ za-BjIsY<7yYcTBq(9NO*=%&$q!2EVSb^>(J!%BAwjcj2$s;LS*ssa+#S7~Pe*X42Q zn0ZwoXEfi?Ak$Zg0Q4!ShWC`y@~Ddr^}-V(>-Vl)ZmQP#rc$j*mAB5R(N+uhkyh(G zUS}PnG|DevM4AeD0W5S(kpLHBjMFMc0OCD08Xu^Wko>BS;eH7KUEt#j^H2;L7TR*|BQ+Ht=!=ltRmbVY^jKyVFpDv$#r!;a9yJS$F9{3-j>Ndp{&cbc zM2*EYH5VV`bEtV;H3+cU$f$1Wk9l;(zz_jY#PxH~V~U#bR_viEkMfm2Tj-5OY+Z<} zQ`vvbH2_vNsUK9_!Z&B)78F{`<1G@+M5y#I?goI?47h=A>&7?+zzCF~&e>ES#;Y6!k>!c+Ax4^NI%a^atw16O2+bZ@1e=WBU#Y{upOB z8oe>@Gx~n~Yl6OhaqIP!RbWr>L^`^%b#88J5?z}BDBq*8>rKQ@V!YMBSK95f0Bp3c z#oGkv_Qr__z|H05j0WSic>QR6D1b?7<_d%xQxScBwb8?Wq`dow8jl+Uh-*jVRR$~* zVEtNb$JLWy0&pZwk6ek5<4<4DZOp9$aJJE#VZd1T2lRR`c2pkkz0ds!z~W-Ib?!*~ zzPmcJt_Xnfdi#yIfN6($@>s1z)mWcF6Q=R?8?Cwc#kXr=Ha0)nbOQKJW$2CB-kFW~ zy8ve6-`zM1+61N<+N~O!)ZHDP`f+P=DlWySKCS`oqE|QZxvK)8&R)NR!9PZ|=Dtyl zf4Xc<4471-UAkXfR}}z_nc94l=L-Yg>26-S4eI#P(zN<)T21_XdueHDQjLG!ZePax zcUQhdhg{ap62LPC8TwJ8NA=3G{PvJCjKp#su)KW#uz=nNCfB5fOM=B2?Y%STgP^Pq-qRJ(AiPH&0OUO?^1CGEVx`Pe3g`m|0DV&j zpui1z2>6i(xQ9G<5YZE)F0eE>bU;p!9N*T5=(Hn~BYn3*Zdh*a1M`_|Dz{H%IOuP=|5ZKq}(x z{$?V1;QrY1!0rzq4ogzt>%}zZ=MXSpdh}o`Um$iz@q@0}Alq58Hj@qbXaNM}2LL$( zYBM0DKe}yif~cbh0Ll)kDb7J`0U-`8q-^ylMawNowJSpc&X8@ghY+c^bpRQQ32E8) zy#CwDZHby3KhSz_MGAkwOtL3*B3T>ICILtxrBk4gzGBmQZ_8+ih3sn*fS20=fCLJ| z0k-_3@GJpx)*vUQ0DP%|rw}OTK5!{~U{TcvN>+c?fIR^{;?5dy)ZjRNaN;Dm4@AV_ z!9HiAuK9zM4(<;Q1Q?QD0%*TbTWfh?W@EQxNMiDRi{w;`4Fq7rAb{axp#vA+7q#g34rC^rmcXd zW#7srhF|sp)Ha^oCG9QPIiLXV7Zhy+=;vgwP$n^a8bjVdkV6nx5z-IWb1;=(0-hP5 zZ{@rT-nClaA`_rrCl{OArTSBVnvD-XCfFGu8v%}otG9AGP&O;MHaSvYY5gQ2-@q{fhXYI$SCNhs za`74clZ0v}nx~ikfxY8SBU%B5Ed7Ha=lTjRPMp28eyAOIRr3 z0mTdq2xa8YM+DWzfesfbPp67WLf;PM(WB#-fdG3PEtO73o*u@%1IQl@0qnW{4(ZT< Ze*qatoeNRfYqbCX002ovPDHLkV1m7J|H%LV literal 2531 zcmV<92^{u`P)TTknB7}&AORf=(SR-?IYc0zaxyG|SZj=66B{yn zSP;47v|w_H*&r~1B!}ucrBA6EB5$&*-R-KskUURy&-Bc6)pXklIeB0oT03vo`~B2g zHS%wKWB>$whJeFI{{HCEqaKKIkNC721}qif5T7mt5AYMhX!>VL?$Ap~n3O)qsPtL6 z20UbB0_n8Ks0;$N4lpWZm8u8d0&+$c<>^pi=C-cZ5?=Y3jkR3459M=}cKNG2{i zozYuA`A|w3T)$o#>EoYmI3u{D?tSr5}RoOUJy#cEhc`YwF=MCBM8Z@ou;vs5Qcyg5`|dpFmhO@EpS7ny>vy)JeD_>ea9>uivPYj4wka z>b3Ap)QxZQ%x`!iju!Jie4SX#F`ssc(Q}o{z^8{smXVCxojS@PBs{zCB$B9OM7)$2Z=M zubsmMwR0sOsGSSBR<9^|U;PBiw?4tUAKee~WOpqp$Nz1J`EXU^4)|PI#LT z2rq?aY5`uTX;z`PP5h)fJCn&ZmcJyNKYs`I{qZlb^h^6n_LbU{KkTo+D`!vCnQWm3 zWP2CzvikOq9Q)rjhQ3!JDW_-G)=Z^s!$o}!h@utA|m*p`+B#7%so*o>W%Xif2 zhPxS6f)`ijln9x**&EY!cRw0bhWTkH2;60MR`O za(4D`ey=z?J7;=EF-JiT4lcPo6S|KouJ*qchiTVm$cuU>F zp9%@MR$FjJ{p<&*ze|+kC93XjQ#mn%`ve7IMAdEUQ@DSiV*D=U_q#t0vi8^A9oc${ zs@r}7e_#8pI+w|>*Nuc<5$D9%R`IHN4>2XOJuaS_vL8hA>;tzpZ_z6>&2C$j;wv3!~X}IGhVE= zmDpfI4bJI~oLvTI#d=-z>2R))LKl5<&SFp2+Ug!TGqWJ|tv6GET0_02XFcl+`q8V` zSqc}XKcchb~Hm*X*p-OibbZKEm&(AxoDMHd`f1}AU!oW z?WEEsv!2%krkhYznb=2>7IaPyRpA?`n4^4L>^xMa+tUrSwdPrCnYch>QA3QlHdVT} z94lMvg{K}rnp)HR6JIQPUNkBT2c%~ec@ zP&w9Qh7Ss+hZTluwDcpxyADo+^ey)&OP);IhvJ$6I@x6TnXX3A1juF9L-w$BP;S_e zG||2~0jAq;&myqTL%PrBo5{~;t{Vuy0QGd!^_SX=4$b6Y zI2QwY`OoKhsNJYma7nXK=|;{H3e(-+EEUyqk!>S5*O8kNp6;A0W_(pcwtwS}!;RFE zhjfmI>I^PErR3TQ11E4!%(ab@P*8+Fqy289EIJKnLt2c17@RVGy4QGVh{L+TA zU^pv|(@8mYKn*MBXA@bpg={`r9wPtg$bY`ee^cn+x2CSb4f0=ZUR$cQY+Ts;;QJ;x z5L?N53+b^sbWXTE@5Y%m-ET|Fql$~(^INRl6i>DTTHTUduS)Qr<94F;bnJ25(6mXM zFI{c8UgWh-2K{pX>U3N_Yy5J0m$oeH<2^&~`O?o0I?MLeft{Vz>Upwv-!en*Eyz-O zz+61z=cO>^cjvm~J)q!tp5q||$4r6eo}AoLt>t-WHb)dI&$aD{?JW64XZWSvLoG`$ zD>swFw-*^b5LsdS#v&3`@0$}cQu=wn;66p4|eff8_yd3bK)$kpWc=_Ol-ue;Gi^j zVPHDvWU~m7cXfhyJO0A0qUh!E;V}6A&+-1RcmE*OC+FRz^$Hv${DA$)gv`7f=E~Oa z{*?9&nC~6$8T#)DXZIVH(-NS!-^^X~lpDOjb-@iW2{$A(&0E@P9DX2HS zo-L-o3u*G7$)0QH`CtVB7>>?{6y*2|g070@>b|`ctMdULYN*e@+21SblY{n{>)eXp tE9$MI(Q9~~&eYJrIkrxo2|e@ue*kd;M95mzl?MO-002ovPDHLkV1iQo4nzO| diff --git a/graphics/berry_fix/window.png b/graphics/berry_fix/window.png index 5e437e72773fdd93a305304a33324d4e4f704df5..0ba517a6be5516680c4e6985d0996bf9c626a240 100644 GIT binary patch literal 1214 zcmV;v1VQ_WP)lR(2$c4eF;dN>#rCAtTJGk>l*QE`Ibv#*#ae2dd}~}Q000C@ zNkly@xB`kRC}1zZfVIg29dvwmQXqTjAt`^8H1YMrLs~^h zEJ`||#KTY0G-%;OYd#7fCEiZn3A_8;2t1u0Ky(%FL(g}jbma;Ig_u! zJ0(sO62(k0k)H`-TWXTs5zv!lRhxY&bv&JT!lxEsE+@a+Inw31h@D zqnm6Y($wP)K(~a*6M* m{PhzjuM?N$MxXjWqaAg39iO(ZD+AX5d%IFK!c1OT@g zK!jUi2`z`#?n1mv!1*C#Vax_hGU-x*qy@m&*S&G@4VxkHc7Cxc0RDPlU3|%UD6*Sh z#!mp=Z|4EPIrkK*JP5}K0f2fysyqnC2+^ob7Y*G02M9q84DT9q*sJ^ z8PZ-6;uC`E%AJ2TfIC!kTip4l0!(Q%M0z097R4fP^Y!&89@I>r4CDtw17I6Iv%>5H zPld!@p-iWNt03?L7J=W_YHBc<=YwRPr4q;u3kzd108I?)Yl!;TLt@AE@E;+|mJftX zXqqcLTm`FN`ohchIRI*Lo~3DX{W1A1PeTSbW=5<4+8H3$e7hOW04=v<_r3>M?ckL* z({L>!9~pqAdhak$Ef#bZ(a-E(0W=sIKa>d*fNpA*k`JqDv4E#M*`MtWY{+{6uMdz| zTtg4q%8=lh0NFvah633Pg0^zA76uL%9sqE?6U!gS8gT(=X$GLm>=~fdG6sP^&j1?r zvzP{$$?gD|eoR?I7i2$z84$wyv zWas;k|GcfT#Rt>}tCCM^0E?TE&2VTwgelnr)s9GD$`&Aav0$7q0@a~$^8pjJKA>b( zUj=CGE3Fc+{Z%1IET+NsS=PQFxe>Ce&rB?nEsPLi_7CpoVg*CBeUM5W3>qixiA${2 z#|eOw?LS=~RDj#<@3R26Ex^jA%9gGh_Ivv2;et8T2M+*h2-lCk^qXmHp9MPCgx_8O zgnt1D6~Ob9W&ZlFfd5EL4$yZ)*I&BcPUD{!JJ<~1m5XP7|5u>?NVGdBT^Y+bmeLpO zxL`@y=d{{$xf1b_#YJ_g_yavApadLJO11i%sc%g}YB8XFcrt^v$?8O+Z5I1UE^ zl!+6OmI$wP0lO~@J%|T74WlWiC+<5_boK@Ru{Z-n1+ZkoiF@60DJ7KtYRVaak#gk= z7V)Rdum1{Iu27F~fUDh*+q>(rZ*&d9S_5SMA<}8H~#QcpBi4cbYGhvH#uNVC>2_0ASwhFu<~E?4ewTauDEL c`yT-O18Xypc4^I3V*mgE07*qoM6N<$g0^ZN_5c6? literal 1430 zcmV;H1!?+;P)fs-Jh8s}v`EQUJXoLOsxGpC^AigEJEg82II@>48aiAPxXI&(!17ZKpI@;iRJ{+)Z zK(ztkyO2Bk<&f-}V9EhqwUamTMyUD+Lk1x0_eA~B6Y&ZApMi3fgu;cui z#>)dHNIk}d_`5!@QXWul-E|-|4%y9HiOl=HADQ_VbUxq8$JH+TA^G^iXMw*yK8CLk zfzMCCpY;HpI3MBC>x@`!6@_rZw>0bPh`^jgs2O5Nq0Z{Mz%)w@uwSaOAKR#>ok@YP zh3>E}B;uzF1j~<9aK0)qXLdU1>tZUgLCEOYRXCIhBn(0Gqp%;uek3CS zxRkDu4{8uI+Up#Q`q=y52e&?fPki1m%sN#}-F1bdTeu6nUk5n^mc*#X;9wU6gsV*R z?V>yPhI}%V>QQ%A)>m26S7$wx_50(h*7m zcT2jVv)8V7-K7L+|J-f_!11EYs6(8azlclh+g)_5st=B-&D%VGSyz}t>k!Gzzd)tS ztJ^xq;(g}mhL~2$3;A=G_c{J=zLYDZ8^P@kDim1WNX&g+r|TB3H?_4q~RnXqJVg;~qF9Gsh*z$|iFD4^&ZtVj(q z1_vKQy zsB93x-PzJPk2Z!5@42l9 zBX3v{hs0FL+~y!VExsUI=x~Agl5M`Emo{g-9|c4sRe_n`k4#<1(v&+KjK9%M_2zrU z-r*vjz~sTT%~|hxNdeXFO+9|pe}9Mw{DS@i)SqXt4Aq?*+V2ckFE?Vo-_QKLpm-oNnSB0NSuT!82=2Yw9O5JboaFKpMJ(%zDhj|`( zp3lZS-*g1Ajxgsr{{*)H>xi>z*#RmowP7g#zA$y?`o@y@H+Y^~#(v(7o@;OcSF7G5 z&_Gbh-wscoQqxXf=cW-&(D~=^kly5sbyD^yy!XAX9(rA!(2J|JU-f({>2MxBqPpiB zyW{yvkISjox#}zu`VHR2#cv(XJ^bIp_#8)d-QMfa!Z?1T3|o*8l(j diff --git a/src/battle_records.c b/src/battle_records.c index a32276199..017c1078c 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -25,7 +25,7 @@ static void Task_WaitFadeIn(u8 taskId); static void Task_WaitButton(u8 taskId); static void Task_FadeOut(u8 taskId); static void Task_DestroyAndReturnToField(u8 taskId); -static void ClearWindowCommitAndRemove(u8 winddowId); +static void ClearWindowCommitAndRemove(u8 windowId); static void ResetGpu(void); static void StopAllRunningTasks(void); static void EnableDisplay(void); @@ -35,8 +35,8 @@ static void CommitWindow(u8 windowId); static void LoadFrameGfxOnBg(u8 bgId); static const u16 sTiles[] = INCBIN_U16("graphics/battle_records/bg_tiles.4bpp"); -static const u16 sPalette[] = INCBIN_U16("graphics/battle_records/palette.gbapal"); -static const u16 sTilemap[] = INCBIN_U16("graphics/battle_records/tilemap.bin"); +static const u16 sPalette[] = INCBIN_U16("graphics/battle_records/bg_tiles.gbapal"); +static const u16 sTilemap[] = INCBIN_U16("graphics/battle_records/bg_tiles.bin"); static const struct WindowTemplate sWindowTemplates[] = { { From 77b781b93a74c0cb2daa5c21f83f4c698f0c2bec Mon Sep 17 00:00:00 2001 From: hjk321 <37224753+hjk321@users.noreply.github.com> Date: Sat, 10 Apr 2021 09:02:36 -0500 Subject: [PATCH 05/28] Document and index berry_pouch --- .../{unk_8E85C44.bin => background.bin} | Bin .../{unk_8E85BA4.pal => background.pal} | 0 graphics/berry_pouch/background.png | Bin 0 -> 491 bytes ...{unk_8E85BF4.pal => background_female.pal} | 0 .../{unk_8E8560C.png => berry_pouch.png} | Bin graphics/berry_pouch/unk_8E859D0.png | Bin 444 -> 0 bytes graphics/berry_pouch/unk_8E85C1C.pal | 19 ------------------ graphics_file_rules.mk | 4 ++++ src/graphics.c | 12 +++++------ 9 files changed, 10 insertions(+), 25 deletions(-) rename graphics/berry_pouch/{unk_8E85C44.bin => background.bin} (100%) rename graphics/berry_pouch/{unk_8E85BA4.pal => background.pal} (100%) create mode 100644 graphics/berry_pouch/background.png rename graphics/berry_pouch/{unk_8E85BF4.pal => background_female.pal} (100%) rename graphics/berry_pouch/{unk_8E8560C.png => berry_pouch.png} (100%) delete mode 100644 graphics/berry_pouch/unk_8E859D0.png delete mode 100644 graphics/berry_pouch/unk_8E85C1C.pal diff --git a/graphics/berry_pouch/unk_8E85C44.bin b/graphics/berry_pouch/background.bin similarity index 100% rename from graphics/berry_pouch/unk_8E85C44.bin rename to graphics/berry_pouch/background.bin diff --git a/graphics/berry_pouch/unk_8E85BA4.pal b/graphics/berry_pouch/background.pal similarity index 100% rename from graphics/berry_pouch/unk_8E85BA4.pal rename to graphics/berry_pouch/background.pal diff --git a/graphics/berry_pouch/background.png b/graphics/berry_pouch/background.png new file mode 100644 index 0000000000000000000000000000000000000000..14113b2f933d7dfe08d0278447727b4f9521ef29 GIT binary patch literal 491 zcmV&)HC;=GK0u@>Yb9R6Ptb}D31wks^O~g+y|aD6 zKHH%FOW^L~!yHBt0wQ@1_r}LyUno^iVN}fkxFiBnLw#?Y<$_DpWlQ-PZfc-({4F(=*qB`2OB|>6D=@a-Bkh(^d@&Fx5*Q9F19I^OyP)6RVz5ncUe5XWBJM|wx z{`_%gz~H_pOA!YU!f7RO(U>&|r}ZF-#=IUSVrWnpduvpVo6iM6D`fyE1HF}jqcU(* zMnzEufHID|n7s7e-Qcs2$)Nu|P&L#_0n|$GG?w(*-o*$8$eU;I(sfTEB?Fn|{Sj-# zS)6l?zZ;V=&fXZ_yG4aSTBJw9lnkFjC1CiRSmQGGT%#D1F=;^M&c>j7DX&LdIjevy zRT-v6`sRK%!ZkxSO|Bu}x&f*T&^K!wtx+e%A)r+X1A0Mw47wD6_*ppjz~=&Ncx%fB zB*5F9Th0z28O##|y$O9UN z*M<#wgd@$eA^izNL)z712&lxs&cO^{MV$mR*b;|T`a8e?AmL(gq4fXQ!oavq|Bs4V mHhG`0Kv(DIM(t{pm+?0ggkxjsak Date: Sat, 10 Apr 2021 09:43:46 -0500 Subject: [PATCH 06/28] Document and index contest and diploma gfx --- graphics/contest/{misc_2.pal => misc.pal} | 0 graphics/contest/misc.png | Bin 1961 -> 2014 bytes graphics/contest/misc_2.png | Bin 1565 -> 1610 bytes .../diploma/{unk_84154E8.bin => diploma.bin} | Bin .../diploma/{unk_8415954.pal => diploma.pal} | 0 graphics/diploma/diploma.png | Bin 0 -> 2924 bytes graphics/diploma/unk_84147C0.png | Bin 2863 -> 0 bytes src/diploma.c | 12 +++---- src/graphics.c | 32 +++++++++--------- 9 files changed, 22 insertions(+), 22 deletions(-) rename graphics/contest/{misc_2.pal => misc.pal} (100%) rename graphics/diploma/{unk_84154E8.bin => diploma.bin} (100%) rename graphics/diploma/{unk_8415954.pal => diploma.pal} (100%) create mode 100644 graphics/diploma/diploma.png delete mode 100644 graphics/diploma/unk_84147C0.png diff --git a/graphics/contest/misc_2.pal b/graphics/contest/misc.pal similarity index 100% rename from graphics/contest/misc_2.pal rename to graphics/contest/misc.pal diff --git a/graphics/contest/misc.png b/graphics/contest/misc.png index 73f8054db8cfa7ed258e39d8204104b184264f6a..a8fdb3e0f3bf5e7c46a585cf66fbf7893890074e 100644 GIT binary patch delta 2011 zcmV<12PF8Z58e-u8Gi!+001!%eE0wW05DKYR7C&)0RR90y}iYQgNtHfdqGNSDKT3A zYIFZNIn5vd_SFFYdt#ilTBMXYT55~5tWwHdD3JgF2Wd$}K~!jg?U>I?9A_BEhk`ew zyla)P)R5iAqXoO$%_+U?t}O*a-1;Uz$c*EDPe22r(>;;OG}A z%iqwntdm?~f=_k-Ol1ABRR_2MrQaNg2K=A_k+?6N00RmDmU;_vi9oWAfUk~7>Hs(P z&jU5-ZE0^%RH0g&S4pnq-*SauPl1`DW&7(fMLc^+I) zaN!6poE)=~56Bb1U4{$rWZ4HCQNh&!y`E)VQkK<+%IrU}gp+?L@(T}zgOlVc0G!Jv(E!s3(2~YF zfEb#YnSZf|W`=Crrb&BdXedx#$UB4Ry(Y2xe)U-&So|)pJYVAHo?Bq%pY9pI46FK^X8y zYk%QgIn1=k&3_6l^8I@P3~vb~1fB{Q2pR$~p?0*Mn%?mN^LqugSWr-;hNA$mEub2S ztI=(!tJv@sERd2J6T8#9plCp~fPZRUErLTsAE4A07(zq{5CdTQ%Ata`L{n1}1ej6) zC{>-W(u=|#5CF{Y1r{gM=<-h;V9_Zkhx++F^5(}HK=^>|_JE094L|@F8BlEjsCEFPU}AS-rw*Xn14b2@ z-V9JOs|c{$0ifb4KDw;|B91-+fZClR#`KN`WF)fS08m5#sYfIVMISJ_9aG!G3V$^K z!Y~LZq+JOErZQQ?PoX5HD2Kh_)&OG$ph`>o z_$igJBDrq?j06@$vJHT|20X<-{FI)!x^DyUV{lFSTcsLcNs$^U0zsoTfM9zyf{f^q z(12VV7Od?1fD+r%3aH=W`I8zTB?F$+0hab#0gdj|12_gN`=ri;#bcCNJ%HM*SVVF zh@?e@W10s*Z9-@5Re9~8tbceA0Q3np05nJVIEVkzAk4p2L{OW!n`~kP%&7qUntp`( z5u|n`clAHzk=o{J1s2d~?Ue!GEPbNB68aGalJDGO7JxUZqRPrE2NtXy1OQ)A_i3|x>j!+%*=rSP*0st(X8 zh=?Fr@|Lb%d9`*>Q3n82P6zlw^wTJHoxDZZVZs^^2C(|#ltMB=^b3h*H2_Xj4k`zp zx26!tgV3c+`iOy7Mj@=18| z+prq}iA2(TdrM?!TYt=-7wF>zcE@1=>2W(vgmiNJZjv?7$O77q5kiIuN?l{if)LgPV zK&m)<4}iJU;%t`y#{itrfJ6UX;wF3G7#EzmWC&#je0@j%G2p)QfP;A5c@!FON9sQV zc*JSEA0E(H2lt)DSrk&L*ge3Rn@yw;$Swh#0-Jxs0{;HY2&eJ7g^`V(1cphZ^oi{DA8cz&91{ t!vY$DST7*~wdZ}8fD5^h3%L-M{{cG)I(q4!2e1GD002ovPDHLkV1g2rk(dAg delta 1958 zcmV;X2U+;u52+838Gir(001MU(-r^#2XIM5K~!jg?U>JN8%Gq!^&bSMp_HaSU>u|1 z;Dl)HYfWrHZ#^Vz4uu+Oi0%!Ab$kfa7s(~}WEjeloYBlq_I>vKn%$j^1rV1+sedhL1V>*=nf#HaWs~H} zt9+{aaXD|tu_nM1D1GihG~ines8_7?0_+L^Seh-!l|#w50)8GKX#zYMIvL;(HcJB( zCU*t=O?Jc}S1xENwga>nK+Scp4!PFvR=}!Y`RZ7Ja&^SJ0y+XmV`&VtfZB-xMq+dj zw2A5=_Po#3r+M?|+Xff_;J|U5*ND?T^12s` z#gtl6YR5DhBSy8UTCFRf@>drCDX#43#(*goL29vpiiiPJAc5n+1pyZZFcUk)N*0hM zfI9^j;K`H)3{b%}00&MGycR*QKM(|au|Rp*+bTPITYq_IS&ZR60kj1*0QQq~zyPFD z2EjO>m(V^%I~Bb0vfe9iR<~@{Q#H;rA*g5pIHN)U<+44E8ekd$I?~t#P}_@(i~jcF zw(t8i=`U_?hsv{AZwI~8Cc*v}mi2cGdOiUfd|v}*J$8WrV`HxCxYr!l8N1d2P^4=t z*e2GZuYWoKP=qEhV}Q7A7HmUHUgYu0mcPgJY0mjkjBV< zGyvF*lLN?dhb;i64Pasbh>jzBu_Kj|(yRxmv_3S^jdcVuf*hMhJBdrN#lc~FSsgEI zK?XuLBj6f9_Xpe;P6pU{D8GLw3G?V67(dtxPJiv45a2(^Jp4f&Vrd)%0RX{C0osB< zKBC1rjzxJw7fcMug5Ur)>_sx50SKRhRJqC>jvY;GdWiGvLtB0))5-hEjC`Q~?-yc~(GMqKV~I0xSyvgow|@ z=|$l@5CF`b4=oT3P+JW^UgD}t!_YQ>WwJorjHgBXW}IvQAl?8}D+aK2QB;-q^DHSr zmw%c7GhRk`)X$wKZ@y^&lm(1*2doZj0Dl5F!+>}PKy(8j1*^lW7n%T~JK&ih)7t?; z<^=(UdjLd5RGy7!fU2Oc10aT%iLrD+0}2vZ@Bm07fYc)rnY0Bw8>xzsErA*UVG9Hl z(y)X9%Y{7RCr}d0l*XHJjsdRE!HC;Bz`HQYNL4D;Iwhk*fC66P^2_w(U(SOg34f6G zJXBzMCXMR@koMlzT6p8-92~Cb>;6NJqPnWq`6yrK;;2`%vn#mSZKz`ayZU8tBM$)G z)T(WO-Lf~kq25n*$kzr?R@MZZU#W9l*P8%k)dR3$gO?`{v=7f^1F&HLA~ijPpHvDf zlKT$8W@te@-vY>Lz;*n?PwIxN`+qI~8-wT4Zj~Bv9o+LL;|3Ag7bxRDTm1Ky}c2 zEdUVKKv)w5p#JFP98r!2XiI}${h4HkTw%b!`h*up_wXiHd2t*-N;;9f&NUP_B`qo( z(>wrT6gm^PiO$3xyi>l{Feq{{F3FXED9`at=PSZy~?6zn1W396Mp`?XjKR<_&T?xC2lw zm&~`fa)GwR{CR;sPGEN&1yEe`i$o}v*6x>B1C1=8J$e*C2^T9C%O&a;tOeQy{=U!? zunvX$B_DqEn;|y}eF2L17S=q^yT3kP>JPAC4L)PDwWi_>^F zI-s= z((oDbfA7t#*Y?_8Ad0T=GsCWTW`6tT|K6JcrC{a-M)TE3N5*JvwKZlGNt1hRM_Nbd zGIEuBy5hT~aSYH7Pn|OXz=N#efte!%Aj%`>sL@d8GFJgOlQVJZ0RgnlBkkzTc7F*pK-&z@WqRlt@lqB5mRDR3*$RO2iJJnP(~be)lmO!a)P*6ufEj?D z0$5_ala{v#2twM?3;;+s2Vh}+4paaX0T%#nA+Y5=hcR;=Aaq`}&b=oh+j2n8{Q+Q0 zKn?(euK*msfOMA0ZV|wp+T{$;49MZ00K78%C3r&k3V&e4P)Dk|2q7W}y*HzH>&W6U z3nQt__cmk(12WPIEu%a&ndMZ)9p$XyAL(~Ktz|5IN)296jo$;n2a9T4>K_6{Wfq3# zG{)CZS(9Ew`AStM)hF3d0ytbbk8w^iQ0vfF0my?8;{ebcEQ+3t;XJpFLWvtZwyOan z*--K*%73STvf^w`)hMYs5AYh0yRtMt#t9&ge0Fm+%Esy6EOpM?2PQ|dtpss{6C$+b zR|bIdr9{10L>+3r`wCbgI1b1UuVNkse*=CPCE=0 z5ADU$rj-}U-I&Pl7a6^a0i}jKPynpLY5)nzfPbJ3At|z?thQkjEk&&WIGuQW&H(2D zd=k)lNAm#VqvLXawB=f2Nq(wwK4MHCs&Z$g`NEfdLaxqD_YEHTU6eDQZz-96hH)M! z^}~=%Yu*<$mtMHigDpcpWIrWyrsRA(84Aysv+c@6<4Id)8$S#nPrsr~sNqH-105WA zBY%J`0q9QW=QCV>#FZwl0QQv=wRC7jIy7BpZH=K)(ZGXSO< z3~Q_&5Z=rhOaW<)@t=5$fU{1gGoyibr6vz>klGqRIiL!dUq5R=Cvoi(Ot@}KSWQPy zApHc=PjG|w6>S1Qv;5r00$~z#DA-{C4u;cuc2oN05x3^akbTIz}4shb#Y#2 zGl04{uQL^|u>s7&{(`AGTL&OFGuWT7C4gR%@X&6j!`Iz3{Gd!214k>LI8jX1K!pecz_VV zD2%d=A_OoBBYkV&!D>JQ4|olQ-wa|A!59%iJfQx2*iyiu2Y46KQx6~)2!FN?&`Si+ z^)BqD0_YDK0#MIfja1L#f>a~bb2C8fkCxaUEwMjZ=xk{Qhe;l4`Cf+;WJCBWWt;>bh2=Mv~eM}2~@3n>>-nER)S`Qz;wH`nH(-1Iu{bfP` z4Zsip1Hc0Sk4*vM0sdgTRDU0am&%$;_3`0SeR^!TgrGqS|M|4up=D^_(3&}*%>Lf~ z_L+a?ayfS8_!ZR`>5n%Y}z;a zzI|KVx9=wPIllq`13>Fn?V|YHo=l$Rf;lI^o>4dYTHO}c>TYuVG(CW!C>VHf0}pQD z!QB%*pzRO8+V|7XQvok4=Z$S_V;kGp#x}OGIr|rkVePf8&N{^a0000{LYK~!jg?Uyl68%Y$${S|2L15o4(04)^f zD87z{>8ic|dv9jF zw%2%o(q0%ibu3Sf!xPFmg~ zzzeB6GXNmf9Djg?ZHXW?07XD~fLaJ_b{yB|tHB{B4 z6H&fW)k*b9HdFu(SIlFSk_@!g_tgOMz{l7FEC-9CCu2CzwW3hs29Nc_fR1b^aZ$um zKvi)%rfQVboCi1!$X!{Q8>0je7cRTG8fD{jZe>+Q?~ zjEjzn-O(0Xi6!~js^%lc^r0$OTAC|-*(c@FwTRr{JTqL zE$<7KOV3~F!M&j$vOlvqYf&APcc21T@3OsL1z-=(J~sgFWC=13J(s@1Lx}YCx8|DC8~*xr;*H3jhq%`!53khWYSz2*6GE(|`F5 z0R6mw(GLM2lfGmTXVR_9r1R8pCS3$+kZ1eZB?DLj0FKgA20(%kz~FL!KmaUYNPwHu zqZ0s-x>ui6B# z0CWK`0Bi!V5eg6w%Ge&3@4APjHizZg&BOA|M&J^>1{3_}Gx>;?puIo~asYs<>#Kv~ z14MydINyQ*IV$Pk>0vyM4u7KPD!MMqy>i+f2e>*Q!1!BPj$flSZam8Y<_eV@9hmX1 z-5T#iTjT9^W6nPWfB|6bw{aA`9=F?%a-n6832<%7UAtHAM0@3Sd+%`oLs2mBU>6?j zz=Q2adO+JBevP-LpT`28SI$qJxCX2NYrq z0RR60|MvFH=H`^<=9K29J#X7u5{C72(ruAO*Vg{CKK$PWqPgU9j$o`vB<)aG$RFznP1V9P(j1^4a zU$f&E{y8JLy8s%ZSt9_NPex%gf+VtGmO!L50J95hh6Jq4fNt1(^J%a&mT5rPE8nKA zL~8}G6l1pL&%pu#cYYY}k4(VICmG~-038D$Uf_7D2C0Uunnz3}NpusgXXMg>6}&*W zI{+UXU_o!&B>-9t7G*GrhJ{A~o1h8+iGZA3QokRGNz*C_P<8=NGcm=$4c^*5T%KrF zh3^e;>;Ocx1IqsXYiK1gSq9{?jUxfz&A`PDg2nyBe5cOgje;ef`R`WvuJ>%ihFNKts zdjk}D56jK<Jkc>DwV$ATHqH8)%^Aj&{4<^X~a__bf6r12*)Y5|E(M zIAFPJ+PGG51cGHsKHPKc9 zk_)JU%8|OksxV+a5rXKNMj}*Fb@ObsWdXLeD_O*4T1b~W0Hy*cJDPlVK)q#vyQ=Kf zc~xQZo@L;q`%*yqmjU{9XsK=egArK>2D}}b4y6OuB0n!SgEiazPQ`%9^c;XMg#r*a z-=*e~SWp*LuXKAf7A~q%H_Y9CqyYd04DjHMrMDRX8UY~tImIA|v|rw+I=~9PKcn+L z;9v?b@J6W?PYB$m72g1Ez-)3thh4yA(iYx}hRkED&i-J3qRC`3N_v1Lhwe{{wi}C? zct8K=_n)5}2%!U*PZRp1Q9_93NB~&TJjnMyXTbC`%M=+=OJ%hGfx7#H2pQ|kB1rfr z0l*D(-2>1*;NDdrCcrB;Twp%Pq+hf;6lG5X=z#0#oOhom$3EilR?G*YLjYXg6nlVr zX@JS(dh zOMOo|V1z^vKqH=k=<~_@FdPOONIC8#gaRy)Fy#n<_uoiK3iEO61>_*^O$xAB#9XPP zCc9RWr&u0LyBbsy2etf!qWsrY3$VDspvPr%Ap4||eC`4y5=nL0)~9c&1z6nJsF`EH zkYd?20g?&da9Xnj1VxYz7B>N)SKs$cphigDoMeE+0Vjt#>=}UjC|YdP-%6>d3sr^z zu!zn$(nmOMY|?XpmgF)LfLsK&h673+wj~`D@Z^AkUD*L}b1a0gVD&5%qzgiu3JE=HKpw>waqL!D=k1cz33cTWR`lls zolurR$%k$}xf4Y$i235ffWfB&mSk!(R0mMDF${6`1{4KwXfHXoaGRbHs13p*8Zh<% z;#V80JAhD?argS=hZzD8zp~SDS-ZWUP9TT&{?0ZIiB1)ueiaed;oOM9IxXYI;2I=h zKd*P<1@&vj7qBldBNi6ERVN#h7~sbi0CW*|7`W0REbq*jbXYx%5kNf%hNi*p{VCko`6XW>XWQ)_R;x^6aePia>0E-AB#F zgqy2OZQLouY?xPV4&>KRH$*4?oS!vK{^@+e$DUtE=N+96av9pVNbvBa31)L3e;$SH z98@wN<~#;veEk(&KC=WLMFbfz0Fe0)4-0G#^nuP%59#Z9_V=cdA2X6un+WlX zFtTuw8u|R!zG{M8S0;iiF646n_}m5npP4cUK;-jZ`^ravRC8kSaE;K;E}jwr3_qSV zf0Aes0Hbge@!?aR+>|H;b`GhExkRl1=u*Z~xY7aB7XXqVCe`AP*%FDa-}$s(ru~;q-`PfM=>&z)%3!4k+l#bfPXn0F@Ko%pyQWw=BQ>uOpRh z%j8o;0HCDHH(b=-aGJ&dk$)i~7+|Xat7-3GCO0EF42fOHxv zB~J&geW8Fy=x}Q^iq6N;vIG}Rz6F2?jvL*=0IS~u{E-T2Ai;sURb8O!-2M(ADtvQ5 zuJ_Y_i-o8o-dw#3xB>zDxi6s6wt$*ElwJpTbJp&xK3J#&9H2q@IzR~$TLXvDZ5`ZD zt1Es7kZs6ODc{(}LIgJ`Ky2|kAS9Pr5W(+ms7(qCF&S-St@&lVm`^QWeXdKdQ2xbL{Pitt~0*+$<9_C`ixq{>baC&?DD8N(Y^DpTp0G9$SaJ(TLzBW)>|AO=7ItB+Pu1YlOIrCcBf zYJH>Crw3Tm(Pn%K02+5P2+6307=V=tpa8h>j`VdsllQV|MqE$E3NS|&C?v&7>j`NE zW_P*dA_{`h{vdZ^G~9X&qHDjPQzb3hw*+80wA{^?r_Bs+roM&3>7NOl{?A< zCJBH{0TRTg;*IFk)A_@7-U!Uv4)%8D1 Wi0JUqLSpp*00009 zJ#X7+635xOIHVv_7{PWr7_0+AAkqtFeBIhG*rW_dAm_psC5~h}wFGxY3<%dBEF;}k z_X*BwQe2mhvpe&jd0t4_xd*$EMDh7?-e(>;`IA?zi)88BhT1&OEBA4@J`>ICZ4v-w z1SpC3=fx|4&vN5z2xuq*K!8^PCEdSsgaDuj(9oFx#?-wCp!R)wNcyD*umF`8Of|^! zmjMms@6+_1KFkA%_<=?>4H(cD{MhT4@;b!L4gj+|Kx2S$1Zcc|pDEQP;+76TA~fG} zY%*dMU4OrQyOiB;#SAP}Le$jtKvmiU$o{iJ<)bSBF0*Fb&;pnCws3mi{*(rU=6dBjwbL}&hfM$Q~ChZhJ>2jH6nSkT*c z34ox%yznN`uy9epCdfTNBA_NGse2xYN!#2DQ1k(ZOEE>_3?6LnZ|^j#{B;A|I{+fu z0gB=Nb7&V3+V+|W`1!zVj~s2AJ#YLu5)={o@ojE7r4RZ?D#4N&PbEH}%` zjc!lq>W~4=(0X#~j~!Vc&f(!RXrSeek|a4u4la`eks(dk(0fWif?VT(C7(i$!U_uM zR$ZLV&}rWW#094lgS9jrWl+RQQZT_K6sc(?gq{;v>XzL!V|Ye1Qh?+Fs-SYDZm=p0 zSgeI0y0(!Bxm4Y{nT}Y1QRbAa;xa9y%LIUx0E(U_?;Ri;F~GU17}R-HVf~$D;H3Lh zLHd^gdfB(sQ2$^=7J>mkcBVt&0Hw&!i_KuocE3|GV7Is?-g0_wTI-Kmh}cU1JGL_9}q30LXq$F$f~v%aIpK485Lh4(5Y^Vqbv-`k&Py0IX;pAVD*`0ij1hGGTJ|;{(dh)!}_ua68@bBa04v|0NMu} zI~9lt@CpEYN#=t_`bE&8Dh3)r2Mi;0&AYF=dpF|nR?G*Yg9n_SReOMJW`Onj?&+?R z-bet@8uLNJgvg4diQG4WMlBnF?ck;?q%&VarHO4Y%05*C9RO&a0O)d?vJ7zdh!QhD z3jof}0pJ(_2?F-JWXpzBg@3bJogYsBuqI1;QeP(lKgxeynr0Uvq=FKiTiWq)VV6d09Zt49O)w* zH#X@xfR^MU5`dftYz+q}bl8@3P{5%BRP4$gfSY3_ggL8cp&-o*0O=#^@9xN9lPaGD z_~kqRTCFLew`4Z6)U1HSjqKk@Ah|hOUfUiZrzj3HjI1?`$OYwTwZwUYbHSa@+CBh@ z6$orc)=4z@^2GIIHKMkN0XA=_8QmC$6UchYy;vmR>4arU+!=9iTo+uy^2e9-2xG?} zLcdHT3&-STj_#Iz%YeT}hS6bJ4`LJTw@JOFv4$b_=k0>j30dwUtQyV-I-$(GlH-0p zIVXx-5c9@v9BhJ%F#u zczX8oj~N0Gzp~SDTi9MvFOYqEf3}S~qFV*1Uq!^ypBph)w?*6-oCclW&+A#dpnh%m z2KEJJ#LB`q?`2~b1KhC%0A0i#2ClRSt9x^1HgF-)*ChE#=uEivQK)TUgnxvm`2ENH zxvu}|&P|t+OK&6>c>j}*ZB5Gr*>7`Tvoawvt;fx}Zf;Vp2*eghzG^mh++1a9<4z%F z!@O#9Aiw&$Av*Er`X){5FV|~6_PjwlCv=F z?=OML5neT)5*ByY0!aP_6CAjcD;j?{0AL<$lp}yGMgn~Uq645d$s|f2hUEDoQ43K2Zygn<{rS-1=)n3(XEUY;f$)4C$^CXyoms{FM&v5 zE_fH=2et^OM8pSX5U`*70vc@qWaL8Wb%1Nm+MU%0b9I0NXi&ZmP=dr(;$U=|c{gP0ieCX_8*-HA zM8Y-}!n;8MVvE-SZY5?x1iy1bW>R2?X=oy=4Dr_L^A_Su6h98zhOe6 zaY&~=m=z#C&7f@n+{Xa?n2QnT0+JJqKlK24tG{0cK$$-9zZ+L7zezqmCq9swfCv`A zDMCpn$pDya;0-I4t#nM8k(?D>C}q4 zkiqW;T2SV`CrLFEL5?I!06-*`#DORx(1QVX;srHgzpMGx)egXWHcQQh2~A7|{9y6H z01d@5=(@Eo#Bsu#Mf?*7C~whYS{Daa9_G4#iC77(UgUF<8)VbDK-iEQ_gz)7%sWwE zE1+Sh8glY4BA?GYVhwKnUp#m5eh@sMwl7X_#{=8KdMOO$|K@t(9OVM0^MFPH62!OS zjp)?V`@?k|1c2i`KyH12Wu9%9Eiq;UXnH|gx;T*aL%wpV`--MDF$VO~&i#g};w~qf zmk*8+fR;giejukz47X$AF9Fct#6^5b5db5|{{dVeSTtbEhauqA^%qdW_|)cA;x_;Q N002ovPDHLkV1fpYCB*;$ diff --git a/src/diploma.c b/src/diploma.c index c43eff105..a8ca579ba 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -29,9 +29,9 @@ static void Task_WaitForExit(u8); static void Task_DiplomaInit(u8); static void Task_DiplomaReturnToOverworld(u8); -static const u32 gUnknown_84147C0[] = INCBIN_U32("graphics/diploma/unk_84147C0.4bpp.lz"); -static const u32 gUnknown_84154E8[] = INCBIN_U32("graphics/diploma/unk_84154E8.bin.lz"); -static const u16 gUnknown_8415954[] = INCBIN_U16("graphics/diploma/unk_8415954.gbapal"); +static const u32 gDiplomaGfx[] = INCBIN_U32("graphics/diploma/diploma.4bpp.lz"); +static const u32 gDiplomaTilemap[] = INCBIN_U32("graphics/diploma/diploma.bin.lz"); +static const u16 gDiplomaPal[] = INCBIN_U16("graphics/diploma/diploma.gbapal"); static const u8 gUnknown_8415994[] = _("{HIGHLIGHT TRANSPARENT}プレイヤー"); static const u8 gUnknown_841599D[] = _("{HIGHLIGHT TRANSPARENT}さま"); @@ -118,7 +118,7 @@ static void Task_DiplomaInit(u8 taskId) } break; case 3: - CopyToBgTilemapBuffer(1, gUnknown_84154E8, 0, 0); + CopyToBgTilemapBuffer(1, gDiplomaTilemap, 0, 0); break; case 4: if (HasAllMons()) @@ -231,7 +231,7 @@ static u8 DiplomaLoadGfx(void) ResetTempTileDataBuffers(); break; case 1: - DecompressAndCopyTileDataToVram(1, gUnknown_84147C0, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, gDiplomaGfx, 0, 0, 0); break; case 2: if (!(FreeTempTileDataBuffersIfPossible() == 1)) @@ -240,7 +240,7 @@ static u8 DiplomaLoadGfx(void) } return 0; case 3: - LoadPalette(gUnknown_8415954, 0, 0x40); + LoadPalette(gDiplomaPal, 0, 0x40); default: return 1; } diff --git a/src/graphics.c b/src/graphics.c index 87c73b014..7769e576c 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -461,25 +461,25 @@ const u32 gFile_graphics_unknown_unknown_D17AB8_tilemap[] = INCBIN_U32("graphics const u32 gContestMiscGfx[] = INCBIN_U32("graphics/contest/misc.4bpp.lz"); -const u32 gFile_graphics_contest_audience_sheet[] = INCBIN_U32("graphics/contest/audience.4bpp.lz"); +const u32 gContestAudienceGfx[] = INCBIN_U32("graphics/contest/audience.4bpp.lz"); -const u32 gFile_graphics_contest_faces_sheet[] = INCBIN_U32("graphics/contest/faces.4bpp.lz"); +const u32 gContestFacesSheetGfx[] = INCBIN_U32("graphics/contest/faces.4bpp.lz"); -const u32 gFile_graphics_contest_judge_symbols_sheet[] = INCBIN_U32("graphics/contest/judge_symbols.4bpp.lz"); -const u32 gFile_graphics_contest_judge_symbols_palette[] = INCBIN_U32("graphics/contest/judge_symbols.gbapal.lz"); +const u32 gContestJudgeSymbolsGfx[] = INCBIN_U32("graphics/contest/judge_symbols.4bpp.lz"); +const u32 gContestJudgeSymbolsPal[] = INCBIN_U32("graphics/contest/judge_symbols.gbapal.lz"); -const u8 gFile_graphics_contest_heart[] = INCBIN_U8("graphics/contest/heart.4bpp"); +const u8 gContestHeartGfx[] = INCBIN_U8("graphics/contest/heart.4bpp"); const u32 gFile_graphics_unknown_unknown_D196E4_sheet[] = INCBIN_U32("graphics/unknown/unknown_D196E4.4bpp.lz"); const u32 gFile_graphics_unknown_unknown_D196E4_palette[] = INCBIN_U32("graphics/unknown/unknown_D196E4.gbapal.lz"); -const u32 gUnknown_8D197FC[] = INCBIN_U32("graphics/contest/misc_2.4bpp.lz"); +const u32 gContestMisc2Gfx[] = INCBIN_U32("graphics/contest/misc_2.4bpp.lz"); -const u32 gFile_graphics_contest_misc_2_tilemap_1_tilemap[] = INCBIN_U32("graphics/contest/misc_2_tilemap_1.bin.lz"); -const u32 gFile_graphics_contest_misc_2_tilemap_2_tilemap[] = INCBIN_U32("graphics/contest/misc_2_tilemap_2.bin.lz"); -const u32 gFile_graphics_contest_misc_2_tilemap_3_tilemap[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bin.lz"); +const u32 gContestMiscTilemap1[] = INCBIN_U32("graphics/contest/misc_2_tilemap_1.bin.lz"); +const u32 gContestMiscTilemap2[] = INCBIN_U32("graphics/contest/misc_2_tilemap_2.bin.lz"); +const u32 gContestMiscTilemap3[] = INCBIN_U32("graphics/contest/misc_2_tilemap_3.bin.lz"); -const u32 gFile_graphics_contest_misc_2_palette[] = INCBIN_U32("graphics/contest/misc_2.gbapal.lz"); +const u32 gContestMiscPal[] = INCBIN_U32("graphics/contest/misc.gbapal.lz"); const u32 gBattleAnimSpriteGfx_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.4bpp.lz"); const u32 gBattleAnimSpritePal_Impact[] = INCBIN_U32("graphics/battle_anims/sprites/impact.gbapal.lz"); @@ -582,8 +582,8 @@ const u32 gBattleAnimSpritePal_BlackBall2[] = INCBIN_U32("graphics/battle_anims/ const u32 gBattleAnimSpritePal_PurpleGasCloud[] = INCBIN_U32("graphics/battle_anims/sprites/purple_gas_cloud.gbapal.lz"); -const u32 gFile_graphics_contest_judge_sheet[] = INCBIN_U32("graphics/contest/judge.4bpp.lz"); -const u32 gFile_graphics_contest_judge_palette[] = INCBIN_U32("graphics/contest/judge.gbapal.lz"); +const u32 gContestJudgeGfx[] = INCBIN_U32("graphics/contest/judge.4bpp.lz"); +const u32 gContestJudgePal[] = INCBIN_U32("graphics/contest/judge.gbapal.lz"); const u32 gBattleAnimSpriteGfx_Spark[] = INCBIN_U32("graphics/battle_anims/sprites/spark.4bpp.lz"); const u32 gBattleAnimSpritePal_Spark[] = INCBIN_U32("graphics/battle_anims/sprites/spark.gbapal.lz"); @@ -984,8 +984,8 @@ const u32 gBattleAnimSpriteGfx_IcicleSpear[] = INCBIN_U32("graphics/battle_anims const u32 gBattleAnimSpritePal_IcicleSpear[] = INCBIN_U32("graphics/battle_anims/sprites/icicle_spear.gbapal.lz"); const u32 gContestNextTurnGfx[] = INCBIN_U32("graphics/contest/next_turn.4bpp.lz"); -const u8 gFile_graphics_contest_nextturn_numbers[] = INCBIN_U8("graphics/contest/next_turn_numbers.4bpp"); -const u8 gFile_graphics_contest_nextturn_random[] = INCBIN_U8("graphics/contest/next_turn_random.4bpp"); +const u8 gContestNextTurnNumbersGfx[] = INCBIN_U8("graphics/contest/next_turn_numbers.4bpp"); +const u8 gContestNextTurnRandomGfx[] = INCBIN_U8("graphics/contest/next_turn_random.4bpp"); const u32 gBattleAnimSpriteGfx_GlowyRedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_red_orb.4bpp.lz"); const u32 gBattleAnimSpritePal_GlowyRedOrb[] = INCBIN_U32("graphics/battle_anims/sprites/glowy_red_orb.gbapal.lz"); @@ -994,9 +994,9 @@ const u32 gBattleAnimSpritePal_SleepPowder[] = INCBIN_U32("graphics/battle_anims const u32 gBattleAnimSpritePal_StunSpore[] = INCBIN_U32("graphics/battle_anims/sprites/stun_spore.gbapal.lz"); const u32 gContestApplauseGfx[] = INCBIN_U32("graphics/contest/applause.4bpp.lz"); -const u8 gFile_graphics_contest_applause_meter[] = INCBIN_U8("graphics/contest/applause_meter.4bpp"); +const u8 gContestApplauseMeterGfx[] = INCBIN_U8("graphics/contest/applause_meter.4bpp"); -const u16 gFile_graphics_contest_nextturn[] = INCBIN_U16("graphics/contest/next_turn.gbapal"); +const u16 gContestNextTurnPal[] = INCBIN_U16("graphics/contest/next_turn.gbapal"); const u32 gBattleAnimSpriteGfx_Splash[] = INCBIN_U32("graphics/battle_anims/sprites/splash.4bpp.lz"); const u32 gBattleAnimSpritePal_Splash[] = INCBIN_U32("graphics/battle_anims/sprites/splash.gbapal.lz"); From bd21bb41ab2cffcaac283c192efe6b5895a27d11 Mon Sep 17 00:00:00 2001 From: hjk321 <37224753+hjk321@users.noreply.github.com> Date: Sat, 10 Apr 2021 15:28:41 -0500 Subject: [PATCH 07/28] Index some door animations --- graphics/door_anims/cable_club.png | Bin 392 -> 277 bytes graphics/door_anims/cerulean.png | Bin 388 -> 273 bytes graphics/door_anims/cinnabar_lab.png | Bin 368 -> 253 bytes graphics/door_anims/dept_store_elevator.png | Bin 352 -> 239 bytes graphics/door_anims/four_island_day_care.png | Bin 385 -> 270 bytes graphics/door_anims/fuchsia.png | Bin 386 -> 272 bytes graphics/door_anims/lavender.png | Bin 381 -> 266 bytes graphics/door_anims/oaks_lab.png | Bin 391 -> 276 bytes 8 files changed, 0 insertions(+), 0 deletions(-) diff --git a/graphics/door_anims/cable_club.png b/graphics/door_anims/cable_club.png index 792c2371541898a1fc487540d912c1e758bcf876..0d8b53505041272497dd65b0c0ffd081c08de7b3 100644 GIT binary patch delta 260 zcmV+f0sH=l1C;`h8Gi!+008Fy?~?!k05DKYR7C&)06|J>#qR&C&DDdXw0oSiVvCga z|No?WbF@kr)nYMXiNr+WfAwaUVc?qsVttOt8(a``MK*j`-9d;M z){Dy-DMmsO~! z6TyTV*4cIhMY%#0|LN!Za6~a`KmDfzaf7RUwMpm@fPr@8p`RP7<||6TmpR4&0000< KMNUMnLSTX<7JN1U literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0zjO=0wfr|csbMpDVB6cUq=Rpjs4tz5?O(KrX+87 z7Y2SSBfG^w9(#$WuPgf#W;RAmSym5!TcD6Ya-v@uhz4Q>AO?ff1I$-}j0K)9jv*T7 zk6thoI;0@L8nEtx=pLt_z^&={?tO*-lJ*KIgrEoit*Rxi5hW>!C8<`)MX5lF!N|bKK-a)n*T5{qz|hLX(8|bA n+rYrez+hI3i$98n-29Zxv`X9>Uf=xl85As@u6{1-oD!Mmr1tjz?%uS`y_~e9dwY9>T3T~K zN@|P6Vrry8tlsXF#np49y;_T;N_&)Z&7?8tJpBLw0GvrgK~xx(h0wbV0x=8*;Os=r z7$y@qZgM4dbDN#S0vE9e!84FJ4~bCV>XY;MEjtl}QshKpetBwccpMY2ilA!XOFXpW z>_<5@L`|oGvL?e_Qu`1=QU#YJsjy5TR~wcNy~<^qhz#4?o(pezLAXw|2)@PEVdy}h zkq-Mv_XDtxG5i3`dHnZ0rRWbrDFgOpGOWNA3@dQO&wf6zKeYPy5rVh?0000+%TJ}KeS)7I@hl{&kF_xaIz z%5&=+t9-X`R2{pf_*UTQ#C69#&NEl_7=CIvSNZ9?&C(zIL7L59QYWpOAi6|5<>>i3 zJH`JeJ66p)bpz;5)e_f;l9a@fRIB8oR3OD*WME{VYhbKvU>0IvXk~0@WniXlU|?ln iU}BqLkD?(rKP5A*61N7|gbU3;4Gf;HelF{r5}E*=P<~qg diff --git a/graphics/door_anims/cinnabar_lab.png b/graphics/door_anims/cinnabar_lab.png index 3d0e00e7f38fa6bdbf6d787a3694f5ac2ffd174e..bf05d510d31ece01cc97b409c7dcf47f67714ad6 100644 GIT binary patch delta 236 zcmV;z0H)Qw0nDlT3T~K zN^0ibq|LNyoYntxz4l_H-b#bTF=C{1&7{o=b;kez0EkIMK~xx(h0d`NfFKM7P?n5L z05;U2(Lr3m!a*#&)OPM-0zwqM^H=XU;C~Y%9-Q6W;RDesm}SDU%n$gmWe`!tCWr$o zo!B8icfevG0E^*3ghmcHoq;O~{s+fAL($v(VFf}gs9jo0rBvIgwCjwu%=p`r@(nLZ mGp@@Ot_4C1*8-u%YtIQsfwJvxo=W!s00009R8F+}2W z>$#1B4GKK00cjgIpNq8UXyvx(Fk7-rQ0;(ECXz2*Acjuw(0gZ?| zCTIC8%u^T~jw)=B)}DJr*Pj1Kl7e8jpht@vpGEsZZLWXp*KM3P9tXN{lJ1JwD6XX; zw-;`C-Lvt`kK2a)gS1D*+n@jd0D4J8K~yM_#n7=4fFKM7P*zA9 z>!i_hJ8jZiWe(?YCxrteC!C!S3SN;S|2s(I&NN@J978nD zAHA?pu)%d!^!Y29o^n3U zdf%q6d``zYiJ3w8G}{OEsC1oG?k%eX3T>`Fw)pqL{nGIp3=$8xmz+?&(7?K8+Kv7t zJa<;kx0|57pn2W|u26gR*E6{tvlkaR0o|Zl;u=wsl30>zm0Xkxq!^40j0|)QjCBpn wLJSP8j4iE9OtcLQtPBiH?9C-mH00)|WTsW(*5I1dzXar6Pgg&ebxsLQ07(XE2mk;8 diff --git a/graphics/door_anims/four_island_day_care.png b/graphics/door_anims/four_island_day_care.png index 38af4eff893f74f9c8b2f6a37726d67560a6fc9a..a92b060dc477aded0d0bd2abe4af8862fdc68341 100644 GIT binary patch delta 253 zcmVmr1tjz&ED>;z0H)Qw0nDlT3T~K zN@|>YV#TbB|ILf;lylx{V$D)YtRN{$gT+cHldu2)0GUZdK~xx(h0eVV10f6rV0KEK zF&ri^RCgt=E)$}ZR0kWF83HyaI-)4A`ec6m4AEX&ydm03E_PYLuc(Ms;7ZiVZRd$| z9Hl%irz^iK2O$f6vYgnzJtj04{^S#ywmLtha&IKGa)392kvHn*|-5;I<8^4M$7g)XD zbLie8rM#wBi~Qo+=iWFT_~CKU2gd-bGPWlEPl`euMuLpYouNGZRb2}w)=55CSIaPI ztG1bI?Jdr^PmZsg?8E%SQTW3qlZ$WGOjNtI-foWl3foKUPc2XMX&1OI6W#G>^?7NF z?jy_1Vl$zopr0Hm6Hf&c&j diff --git a/graphics/door_anims/fuchsia.png b/graphics/door_anims/fuchsia.png index ce1ef667df80f539b57370edf359228d776b290c..1be60c3c26ee8276d0bad6b788ddf3cac4254198 100644 GIT binary patch delta 255 zcmVmq(Mq*dwYXoT2garVw8h}w48&z ztYX#8gYMpoT56hj0T!yq}UxNj0y&kZUKk{3@UOukdT8G`K2Ux6002ovPDHLk FV1msBY<~a% literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ0wfrI9P#J^QY`6?zK#qG8~eHcB(eheOiAAE zE)4uuMs|yVJoXY#Usv`g%xsLR5;v!R*#{I7NKW)C1JO_nq!<{yKOSZWQnNf=977~7 zx1QU`%VfyI8ZbTcO=?2R>PYpwTMJ7+D{N%pmT-Nfa;d;L!Md}7;ZeB1pHBUaZ5#aB zogU1PD*HVLgUBoUkov-Z4=6mHH%v_}>K3BExxwc|Le67hB_63Ct*5`jcCSBk%P0-@e;`7YM z|1rINw8RJGSk)5Oh?11Vl2ohYqEsNoU}Ruqple{PYhV^)U}$A*Ze?hwZD3$!U|^u9 fmVu%nH$NpatrE8e$KrWcKvsCV`njxgN@xNA2XK2p diff --git a/graphics/door_anims/lavender.png b/graphics/door_anims/lavender.png index a650aaf277924b47c621f181d20c700cc7f13b50..00ad381fe0d0a07b1239cc235e023c6df7de20f2 100644 GIT binary patch delta 249 zcmV!-Ub6RK)w=e(z0F_BZK~xx(h0rk$Lm>zNQ18^S zEA<3O(y$hmeU)4{opKo+C|o}dx$#*C$fBg@ zY@Tz7%{pFW#tsDS5CBjIf{T(TT2O)+t+`Dq{gsd0AW6bYP#OW5)vAA+Q5?{Qb`tH#dj7v-JI!00000NkvXXu0mjfN$_uO literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ0wfrI9P#J^QY`6?zK#qG8~eHcB(eheOiAAE zE)4uuMs|yVJoXY#Usv`g%xsJbB5T8ZE&zoDk`w*PKr|EsDFz1bkB8ZT)KpIw#}J9j ztrraWoE1430{GqQE>)Y%d!c_}s)?h2LZtP#0MS;pTMv!*GB6n`8Zq0cN`9(!D*DFb zCvwi5x%S5iVWz-ChiBLJ85}s^%y1(>l-(orV!&0ElR~yCE8X+oO+HnTs%#!G<<#u( z3#Yx8+=~fisyg;f?1J&R4935AFJG&!I>GAI-)Qyh!JUl@-YMJ-EdTTOy!dSPZ^t<| zx)uT*s9NG0QIe8al4_M)lnSI6j0}tnbPbGk4a`Ce46TfftPG8{4GgRd3>;_t0R;y_ dLvDUbW?Cg~4F*SDb^HiJ*?mH&lVrdt?N*bK_Q#1ma>E|LUC(NQbL6Z>_!2{e0tW-wxV368YpA<&nJ~ zI23$D9hvA*AaP0Xsaz67V96~279)ZPofJ6eV1%3br6fIyd_~D;M|#qPHkVf(fPn~T zfZe7C1MId&Fu>d=*giq0bMOX$tRE7|t2NN*W|jZ|002ov JPDHLkV1kReb|L@( literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ0wfrI9P#J^QY`6?zK#qG8~eHcB(eheOiAAE zE)4uuMs|yVJoXY#Usv`g%xsLJLeE&VgMmT<$%%etAR3B+6a$0z$HVMEYQCq7V~E7% z+6x;+nH4!00&ZpJS-YQ*3(wM;Rqd}CB)#ke!_1?SOd9*<91Z;2&Y^LnBb{SC&;J{T z7BipgV_IwC_$w)!dADQV0%pcCXEsmGd4WM(NfYlSiE(y>N}4E6Y;^b7SfUk`d_Y?$ zPxdLZaM+xC76+JBa@l`;czN|;`}#mxo9`?4`EPw0c)z4yDN*6I@b4b(4A)1ZTay0u zpZ~?Uzx1+i{Dt$gfKF8{ag8WRNi0dVN-jzTQVd20Mh3bD#<~V(AqIw4Mg~?UM%o4j lRt5%HCEqkqH00)|WTsW()*!9vHwCDH!PC{xWt~$(695!~c@F>p From e3e7a7423a3bea1cb5e8715278e3836f625842dc Mon Sep 17 00:00:00 2001 From: hjk321 <37224753+hjk321@users.noreply.github.com> Date: Sat, 10 Apr 2021 15:47:58 -0500 Subject: [PATCH 08/28] Document and index evolution_scene --- graphics/evolution_scene/bg.png | Bin 1588 -> 1668 bytes .../{unknown_5B4114.pal => unused.pal} | 0 .../{unref_83F7D80.bin => unused_tilemap.bin} | Bin src/evolution_scene.c | 4 ++-- 4 files changed, 2 insertions(+), 2 deletions(-) rename graphics/evolution_scene/{unknown_5B4114.pal => unused.pal} (100%) rename graphics/evolution_scene/{unref_83F7D80.bin => unused_tilemap.bin} (100%) diff --git a/graphics/evolution_scene/bg.png b/graphics/evolution_scene/bg.png index c9e84c58ee49f19c7558805595d6bd0e37dcc85b..673077febc234e5ccd2cf7a8d5e46af99202b2d9 100644 GIT binary patch literal 1668 zcmV-~27CF5P)l&piKy^FNfoW)&Bqh00000+L0<|000IL zNkl42mIoDN7j*w6u?g9#m6=-{A(g%X$!mg!)b5~hVa+p;Xl zc9yyS=h@v^q6bNqKi>e@R@J&ShMTj)>Lrj8IZ!RS2!JL`?m-7B0aaBD@H#{X#M`KAhEcYI1u6lIX`8f%UCB-!8dz{JtqF)_i&Ik5AeVl> z2&h$=0CHvbqExQ8hw-fxVu!}JgHKj^=tZ?BYAS?qPzJac69e=?Og6EIY%c0jN1bM?kR8GJp|9LtsWgM9{!ID-W#^U1q>+YT6(NA|W!LTy7sRM? zAp0Fp96vVU*z9SIBMf?b7bp8c0^)3r`)LkH2X@<>Qb0ur^KAA&WBl|dI;7jr-d4^eRm_z=Gy z_lE>x$uUX$ZQDNbF&jsp!_CIG?O6oE;th-H;=Mhek0%}Vz{4_QNj&iUq>~tU^`8T9 zcfeNyu!EZizP{p}_COIZgPW_z$0q`-2snEL9t2>L!U1Mr9oPt*1Mh9cK zZ0y>wd#SP8Y2*GI=eY;mXZOcF+_>Mk$8`i4V?S$!$2EsKw*-3x7VP0Ph9w6k0t@!` z70?kNFIY`t_oY^HH;GUOfQjg0t2}UwBm*ykR+4xDG%5kRG&n@19nd8`%fatNh8HK! z2UTi2LX6<0mk;c%du(-MyY1K>fi4$~xPT#*afy8ZJv0TNS#m&IP`%{f`+yvVLMTWS zLjkD%1oQ*Qq0A$AAU%}O;v`>Z<(vZOT}J z(pjF67gV4vw*ZI`JC;#R(Zef%#NfKB<=}FNF#xe3>|h8IM(8Z|;E26YNkSCbXz{XF z1S)>rBY;tO;B^X#gDI}|3>XDa7XT7S9V5J$j z(~W^M1L{q0T9`z!)d_Hv4le;1G7qP4d33>~hbc;+Aff`Grl1m8u0zlbgU;dGfW2J0 zOCRW29z~YFT>AZiwq}t-6db;rbR~)&qKvx{fYWSb9d}{HQa4dfYQU-quUKj$JRBIf z1wrD0Fp=XGUI7~etpacuJ@Csa7CSS5E>%$jAm9~=2g2Oi%2OmRUMIxTTaet&jts<` zgFG7!E+Ci^fDRmRPVZ47gM%NK1n3ulwvgh%RptBwur&d%Ot3H?|JVj;JEK&4|M>lQ zE&*=rt+0760auhZR-G*aP8(V2QwB&}S?yE?P~LfQRRpBCDgysE-~I(yH7RK(KpdX{ O0000-zBr=f5K%}tSJ>T6kBgWj_kE=RY z@zh9~#irlsPqz34KSc)SX_|_=#9d-W+-JnyuI6IGElJFaPoKi5R^u=X3X=pZi(&Y; z(E)mj4$v9&i0&Un3lOa}dj@8s*35LXm}hRf>1xc$@X#c^v5R-_qKwmD`rs4sH|Q@z z0oxY#bwhV4x*id+koQ&>L>K-_vk(8$9?%=LzOMqj04+eYW+l<4par-&DW<4y$s@0P zaDL!SBfqz-rGL+!Vg-A$t(k_1JaLHF17Ymf8d&29i=_P$s5P2eBW9etg^Om!R%6s^ z4zbfdQE2-`tk!qbrk*v<`XDJpPSY9oiL<~@DHd$doy9rFbV9w~6DH2U7oagJw1_W6 z4QLScV>}9E_Zvw&^G)ZYc{Z784l_Z{jIGmBkTbrdR$~rz zV=T$GG+^wyZUg(VePH$`YG?M_GL%W+L~t@V0V>3aLMsRv=YG2f-Y8eM{JcMU8jUoX z1rFPh?A%iYEtW!>@Gq%?F+ugE^@X;!uF=%oQxev#jA1Kl-Ed3wSp{}x`>Oi0=3DeW ziz*=*!4YsgXdDlK1K?nhQ?w0NT#evSldU(VW$_-=8@;bDb;;hYoNiv&Y(tmybZb(u zPkm)hR;Vg4?1Ci^2GX3~mg8TZVHwyPB=>3TKX8Tk0DKti5%AhYgu2qSIB1NC==c<@ zctgh(eCUWG$ecn3#zoy4laHJ-OekMVRN-iqVK`VEm7V|eY|0=_46ALi-yh^=^A^mtTOgqS$wxu_w=Q?w{^BJ!R!P-0PpK!Q?-`Nu{<`^TnK%4n2YBdJG;dcfkXct<@}D~Z)B;sx;X zQoOwyz|~9fiU@jVUY}~Pl9QD<39lW3wCE1QG+v7?{@dx%2;`a|=T2#gc>Ef>WI3zgdo6V9`JNSVKP)-KCFD zd;Isy9ZImkXiEs!rdebJ#>qOiGV$H^p?6~ToVplK7&{y3GZd+EogXFgG{f1O8l){G zTHy^0V*AdB7WVjsH9MFRPmdiMl7&b$#|8`8BT-K+BH4|qHBdKTou+%>1YqdmQn;Kf z$feNt^6c{UXiI}LfF?3O;P`6HT)_6GEi0IF2LWUTkTsoF(fbCX$V=-u6Ir>q8xtTg zqV69AUndIl9(Jz_s$ANCn2BcgQEr-GGL}0d@Xmx~6l1%7FH(wq8pN0!aIh z1qL5s*#9a#v_fo^bt;HVyh}|ka9Ytw;a*L zq~DLf!I8H5C)(cda(Zt%f96}B6g2+bgB-O8IoYulg z6*=C~?=5Uw&(HIgjJ@o6R^llIam*rDIAPHpy=vz5gyroIXy)IbkuTQR(XUspF92-j m5i9KIbANLGf5iXzPvSSBz`QOr$xjdf0000 Date: Sat, 10 Apr 2021 20:12:35 -0500 Subject: [PATCH 09/28] Document and index fame_checker and field_effects gfx --- graphics/fame_checker/bg.png | Bin 906 -> 955 bytes graphics/fame_checker/bill.pal | 19 ------------------ graphics/fame_checker/cursor.pal | 19 ------------------ graphics/fame_checker/daisy.pal | 19 ------------------ graphics/fame_checker/mr_fuji.pal | 19 ------------------ graphics/fame_checker/prof_oak.pal | 19 ------------------ graphics/fame_checker/spinning_pokeball.pal | 19 ------------------ graphics/fame_checker/spinning_pokeball.png | Bin 297 -> 284 bytes graphics/field_effects/flash_effect_tiles.png | Bin 199 -> 258 bytes .../{unk_83CA770.png => new_game_oak.png} | Bin .../{unk_83CAF90.png => pokeball.png} | Bin 168 -> 155 bytes graphics/field_effects/unk_83CAFB0.pal | 19 ------------------ src/field_effect.c | 12 +++++------ 13 files changed, 6 insertions(+), 139 deletions(-) delete mode 100644 graphics/fame_checker/bill.pal delete mode 100644 graphics/fame_checker/cursor.pal delete mode 100644 graphics/fame_checker/daisy.pal delete mode 100644 graphics/fame_checker/mr_fuji.pal delete mode 100644 graphics/fame_checker/prof_oak.pal delete mode 100644 graphics/fame_checker/spinning_pokeball.pal rename graphics/field_effects/{unk_83CA770.png => new_game_oak.png} (100%) rename graphics/field_effects/{unk_83CAF90.png => pokeball.png} (51%) delete mode 100644 graphics/field_effects/unk_83CAFB0.pal diff --git a/graphics/fame_checker/bg.png b/graphics/fame_checker/bg.png index ed1a9a0f89d6b90fe76de1d8110161cb23c9d03d..5116e448069fcffcf9ce0f8b7b55c7bee2d1b18d 100644 GIT binary patch delta 944 zcmV;h15f;l2fGK58Gi!+007T@;<^9;05DKYR7LjQQvd&)_TEze?qdJ{)&Hz&-jquJ z_THS7r0(Xl|Nqr{dwbQ@)&KwhYHDg2V#Ra+-DLm(14cVmYLbF*^m43 z8B*|1;#=?S{C0MBcJ7iSAOU&;WuPae?CMoUQrDzTX8~lsz;Kl3*Jl7+^ahYR0HlEd zWCpM$H3F`DK&F=PLIOUJ$x96M_X>c!1Pl214fIt4emsIcV{6_{cL;b7dQbp_bpdSp z0>s}06r?47(0|y%7lxn?uv(Yv^{QCGby2|23cf&3u`WyOTbIlE{7o&OC}3m>X3$ua zMOgp7=+5uKLn10I(3An!m7g_=A62OuG)N_9c9cl?10=xq~goz|QSjIdsOAw+m zl>x9^Xh3BQ5KwWL7$Ck22)H9aT(IxU1x_0QNX{@jy0wK!+H}Koh{0v}zBg`jpvzntxIPOi^X0u^B+gW&kR0DgogVWV(9* zYttM=H{X*$Edcz;cLCg(HY+-(0a)2<4@en+72YTy5_u0`OMes)+51F4P!daE$)GsX49S5KFo4d(0`oI{|x{SB5LQ4IS-)frjF7ssh*@3 zz&)q~4D`!^AD}7#^XxRhQT`wFRs&>%b$TXVWqR6N^dOj0B4CF&Z2b@i%6;OGBf)%`*B}D;v#<=ZkgTr z-R$h_9*7DgK$oBbbg5K4{47Z7TGdFL4N&+3$6cP^p8@c6GJk;710Wp?pfG?5sTJ_x z0}3^T-xBbd{C;7g-_!uyDOkX#x1e_t@OljTfWFIax4x0d7cEX7On89g)X%ir3#3jOOk>~0#JHz~i=J3h@bhwJiM93M~ zIT(O)cfzjaf<1q@_Wn_56P1zGMMK!(vRiEh1D zOq~II%l84?nKnCgjsvh`uREY*0Cw<30g=pm0DpV*M*)$wuk-_@vIO=h=mxlV?x-Gr z4xotWhp^HGXFt=u9D}c|+ut9sar*;6VDPne`-AaY-_RG}5*699DIEfW$ctUlrZeZU+IKs_Hox1T2h4mt{e%Xci`57)q* UpZ*^k8UO$Q07*qoM6N<$f;t6&I{*Lx diff --git a/graphics/fame_checker/bill.pal b/graphics/fame_checker/bill.pal deleted file mode 100644 index 485e27c48..000000000 --- a/graphics/fame_checker/bill.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 230 205 -230 189 156 -205 156 115 -106 74 57 -180 139 213 -139 98 172 -98 65 106 -213 189 131 -189 164 98 -139 123 74 -180 139 115 -156 106 82 -90 74 49 -255 255 255 -0 0 0 diff --git a/graphics/fame_checker/cursor.pal b/graphics/fame_checker/cursor.pal deleted file mode 100644 index 212d9eb69..000000000 --- a/graphics/fame_checker/cursor.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -246 222 82 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -246 148 41 -255 82 0 diff --git a/graphics/fame_checker/daisy.pal b/graphics/fame_checker/daisy.pal deleted file mode 100644 index adf46bf14..000000000 --- a/graphics/fame_checker/daisy.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -172 123 98 -213 172 115 -156 123 74 -90 82 65 -205 115 98 -164 213 156 -115 172 106 -90 123 82 -222 230 255 -164 172 197 -255 255 255 -0 0 0 diff --git a/graphics/fame_checker/mr_fuji.pal b/graphics/fame_checker/mr_fuji.pal deleted file mode 100644 index e6dcabf2f..000000000 --- a/graphics/fame_checker/mr_fuji.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -115 90 65 -222 164 82 -180 139 65 -148 106 57 -172 164 189 -255 230 131 -230 205 106 -238 131 90 -90 90 106 -213 205 213 -255 255 255 -0 0 0 diff --git a/graphics/fame_checker/prof_oak.pal b/graphics/fame_checker/prof_oak.pal deleted file mode 100644 index eb6f2f18b..000000000 --- a/graphics/fame_checker/prof_oak.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -115 197 164 -255 222 205 -238 180 148 -197 139 106 -106 74 74 -139 156 164 -205 164 205 -164 123 164 -82 82 57 -213 213 222 -123 123 82 -115 115 115 -197 189 131 -156 156 90 -255 255 255 -0 0 0 diff --git a/graphics/fame_checker/spinning_pokeball.pal b/graphics/fame_checker/spinning_pokeball.pal deleted file mode 100644 index dac232f78..000000000 --- a/graphics/fame_checker/spinning_pokeball.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -106 106 106 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -139 139 139 -189 189 189 -205 205 205 -238 238 238 -230 230 230 -222 222 222 -180 180 180 -255 255 255 -106 106 106 diff --git a/graphics/fame_checker/spinning_pokeball.png b/graphics/fame_checker/spinning_pokeball.png index 0d692439a4edc754c3211c5c2f5bbc3b11047edb..fbc8a1c099fa8e2f3d42e9cc152ee5766527dffc 100644 GIT binary patch delta 9 QcmZ32(I!o=J?01@*8^Z)<= delta 20 ccmbQkw32B;0vBURkY6x^!?PP{6Jz%S07kS2y#N3J diff --git a/graphics/field_effects/flash_effect_tiles.png b/graphics/field_effects/flash_effect_tiles.png index 4079a5a84d2facb8cc8e847d22cdb0cbe483c595..05d4d3b2e503b61a85f41d74b676a0afff76ac5a 100644 GIT binary patch delta 241 zcmX@k*u*qJvYwfNfuVCj##|s}5a1KyI_2mZ0RaI81qDMxLq|u)prD|nq@?2F;^yY& zDO08_S+ZoymMuq*9=&??>a%Ch{{R2~Zt7$!px$0j7sn8b-lLZiIU5WFj(%L7&>Fg- zNi^&rR~Ul&viC8YaLRIpH{U<<8&xdlC=pnY#hxj`)?sjnW$hszZk33Ip*IrR57+Rh z{}I~NB=^dYKXHc>Dm403FaBsO|H^!Q`ls*;zV3$;Ew1SnSb84guY5CI m(SD`leZ9=T)-UQqxy2{{*>|Ick=F$1G6qjqKbLh*2~7YDDQ5%# delta 182 zcmZo-I?gyjvYr75W{Vy#22y>VE{-7vVy!kf zFIjGoXwiCbpZZV7mg1=#j5aX}%}vbQ>M{meZxRxkMcrCi(`H;buW&`V#mOqfwBjnC zOiax~+Yf(5<~&+xF)iXM-=1vif?Cb`)+&Q8efLKZ{Rf_=1izhd{GY@p_2382Ivm;G d58QuXdZ)P7HoX62`FfBOJzf1=);T3K0RZIGN`(Lb diff --git a/graphics/field_effects/unk_83CA770.png b/graphics/field_effects/new_game_oak.png similarity index 100% rename from graphics/field_effects/unk_83CA770.png rename to graphics/field_effects/new_game_oak.png diff --git a/graphics/field_effects/unk_83CAF90.png b/graphics/field_effects/pokeball.png similarity index 51% rename from graphics/field_effects/unk_83CAF90.png rename to graphics/field_effects/pokeball.png index c6c456817b1a5b253d49a58609b396848d8ac50c..eb2e56fafe64bb0051072996ded1ffcf10a894da 100644 GIT binary patch delta 9 QcmZ3%IGb@o!o*x_01;FJZvX%Q delta 20 bcmbQuxPoy)0vBURkY6x^!?PP{6JzZFMd=4P diff --git a/graphics/field_effects/unk_83CAFB0.pal b/graphics/field_effects/unk_83CAFB0.pal deleted file mode 100644 index 5e2face1d..000000000 --- a/graphics/field_effects/unk_83CAFB0.pal +++ /dev/null @@ -1,19 +0,0 @@ -JASC-PAL -0100 -16 -0 0 0 -255 255 255 -156 180 172 -106 115 115 -57 57 57 -156 24 24 -255 0 0 -255 123 123 -255 255 255 -82 82 106 -123 123 123 -255 255 255 -189 230 255 -164 197 230 -156 189 213 -90 131 180 diff --git a/src/field_effect.c b/src/field_effect.c index 5942e68fd..c2b507882 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -59,10 +59,10 @@ static void SpriteCB_PokeballGlow(struct Sprite * sprite); static void SpriteCB_PokecenterMonitor(struct Sprite * sprite); static void SpriteCB_HallOfFameMonitor(struct Sprite * sprite); -static const u16 sNewGameOakObjectSpriteTiles[] = INCBIN_U16("graphics/field_effects/unk_83CA770.4bpp"); -static const u16 sNewGameOakObjectPals[] = INCBIN_U16("graphics/field_effects/unk_83CAF70.gbapal"); -static const u16 sUnknown_83CAF90[] = INCBIN_U16("graphics/field_effects/unk_83CAF90.4bpp"); -static const u16 sUnknown_83CAFB0[] = INCBIN_U16("graphics/field_effects/unk_83CAFB0.gbapal"); +static const u16 sNewGameOakObjectSpriteTiles[] = INCBIN_U16("graphics/field_effects/new_game_oak.4bpp"); +static const u16 sNewGameOakObjectPals[] = INCBIN_U16("graphics/field_effects/new_game_oak.gbapal"); +static const u16 sPokeballGfx[] = INCBIN_U16("graphics/field_effects/pokeball.4bpp"); +static const u16 sPokeballPal[] = INCBIN_U16("graphics/field_effects/pokeball.gbapal"); static const u16 sUnknown_83CAFD0[] = INCBIN_U16("graphics/field_effects/unk_83CAFD0.4bpp"); static const u16 sUnknown_83CB3D0[] = INCBIN_U16("graphics/field_effects/unk_83CB3D0.gbapal"); static const u16 sUnknown_83CB3F0[] = INCBIN_U16("graphics/field_effects/unk_83CB3F0.4bpp"); @@ -161,7 +161,7 @@ static const struct SpriteTemplate sNewGameOakObjectTemplate = { }; const struct SpritePalette gUnknown_83CBE9C = { - sUnknown_83CAFB0, 4103 + sPokeballPal, 4103 }; const struct SpritePalette gUnknown_83CBEA4 = { @@ -185,7 +185,7 @@ static const struct OamData sOamData_83CBEAC = { }; static const struct SpriteFrameImage sUnknown_83CBEB4[] = { - {sUnknown_83CAF90, 0x20} + {sPokeballGfx, 0x20} }; static const struct SpriteFrameImage sUnknown_83CBEBC[] = { From 47cc3aa0f1fd77f16d898da30fd482cfd5a4c1ba Mon Sep 17 00:00:00 2001 From: hjk321 <37224753+hjk321@users.noreply.github.com> Date: Sat, 10 Apr 2021 21:35:14 -0500 Subject: [PATCH 10/28] Document hall of fame and help system gfx --- graphics/hall_of_fame/hall_of_fame.png | Bin 0 -> 437 bytes graphics/hall_of_fame/unk_840C3BC.png | Bin 481 -> 0 bytes .../help_system/{unk_845BCB0.bin => unused.bin} | Bin graphics_file_rules.mk | 4 ++++ src/hall_of_fame.c | 4 ++-- src/help_system.c | 2 +- 6 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 graphics/hall_of_fame/hall_of_fame.png delete mode 100644 graphics/hall_of_fame/unk_840C3BC.png rename graphics/help_system/{unk_845BCB0.bin => unused.bin} (100%) diff --git a/graphics/hall_of_fame/hall_of_fame.png b/graphics/hall_of_fame/hall_of_fame.png new file mode 100644 index 0000000000000000000000000000000000000000..769ca4b35353a839edb0ee655e3c9764cb6ef95e GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQU(D&A+A6g2(}!3_g_I_$(DBz zE>_af(eeNP|Iz$i=NK3m9XwqeLo9mNPIAmUY#_k=mGxk`?ge>?UDv1o`_JEfC*1zQ zv?;O*eV3Kmb7~CM817XG=2~8~&*JORDb^nj{}jI=`s?sS-u2%0+B&ssO)vX~bH`WN zYk%?Ub>D^X(=1|^+K$#${gCE+t%Vr~j-bEnzopr0A4q$GXMYp literal 0 HcmV?d00001 diff --git a/graphics/hall_of_fame/unk_840C3BC.png b/graphics/hall_of_fame/unk_840C3BC.png deleted file mode 100644 index 5676654959f3aaf1ab89f01d054bc279ec28c210..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 zcmeAS@N?(olHy`uVBq!ia0vp^96_af(eeNP|Iz$i=NK3mb39!fLo9lGgB|k@8}M8f@42I!V9!w!umAhMe9OJ3@*c`_ z%d#hztmbcFH8ykAQp#V~_LZ+D;iULA``yRS^K7`Gb@oh(;-8Ohq6$u7PuH=Zo>o0C zduIjzbe|~`b+V6NR*bS;;=bsLLdE1aKTi~A2*?%STZKR?wY-R zg?YuJm&+_~p7|hgY4TZ>Tfd(2E-!G}X;l^w+9LDg(aU|T8!nhGmY%j{^9oD;ODj}! zkAA&A)jIgin+L^a5tF1W)`qN<(0Wz*LDGaPpHV$F(d=vLuX*7A@38&pd8Dn*8fc z-Z$ZV@2a~CGQRz+?VYR5u2(ySMeWBF@mJgRil?ow>yRums$lrF*E9Ot9&Ts9G&!I8 zbB%NFEax* Date: Mon, 12 Apr 2021 16:26:46 -0500 Subject: [PATCH 11/28] [Gfx] - Prefix s for static symbols --- src/battle_interface.c | 2 +- src/diploma.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/battle_interface.c b/src/battle_interface.c index 32bab8803..4cc39e8aa 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -342,7 +342,7 @@ static const struct SubspriteTable gUnknown_8260404[] = { {NELEMS(gUnknown_82603E4), gUnknown_82603E4} }; -static const u16 gBattleInterface_Unused[] = INCBIN_U16("graphics/battle_interface/unused.4bpp"); +static const u16 sBattleInterface_Unused[] = INCBIN_U16("graphics/battle_interface/unused.4bpp"); static const struct CompressedSpriteSheet sStatusSummaryBarSpriteSheets[] = { {gFile_graphics_battle_interface_ball_status_bar_sheet, 0x0200, 55052}, diff --git a/src/diploma.c b/src/diploma.c index a8ca579ba..4f765437f 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -29,9 +29,9 @@ static void Task_WaitForExit(u8); static void Task_DiplomaInit(u8); static void Task_DiplomaReturnToOverworld(u8); -static const u32 gDiplomaGfx[] = INCBIN_U32("graphics/diploma/diploma.4bpp.lz"); -static const u32 gDiplomaTilemap[] = INCBIN_U32("graphics/diploma/diploma.bin.lz"); -static const u16 gDiplomaPal[] = INCBIN_U16("graphics/diploma/diploma.gbapal"); +static const u32 sDiplomaGfx[] = INCBIN_U32("graphics/diploma/diploma.4bpp.lz"); +static const u32 sDiplomaTilemap[] = INCBIN_U32("graphics/diploma/diploma.bin.lz"); +static const u16 sDiplomaPal[] = INCBIN_U16("graphics/diploma/diploma.gbapal"); static const u8 gUnknown_8415994[] = _("{HIGHLIGHT TRANSPARENT}プレイヤー"); static const u8 gUnknown_841599D[] = _("{HIGHLIGHT TRANSPARENT}さま"); @@ -118,7 +118,7 @@ static void Task_DiplomaInit(u8 taskId) } break; case 3: - CopyToBgTilemapBuffer(1, gDiplomaTilemap, 0, 0); + CopyToBgTilemapBuffer(1, sDiplomaTilemap, 0, 0); break; case 4: if (HasAllMons()) @@ -231,7 +231,7 @@ static u8 DiplomaLoadGfx(void) ResetTempTileDataBuffers(); break; case 1: - DecompressAndCopyTileDataToVram(1, gDiplomaGfx, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, sDiplomaGfx, 0, 0, 0); break; case 2: if (!(FreeTempTileDataBuffersIfPossible() == 1)) @@ -240,7 +240,7 @@ static u8 DiplomaLoadGfx(void) } return 0; case 3: - LoadPalette(gDiplomaPal, 0, 0x40); + LoadPalette(sDiplomaPal, 0, 0x40); default: return 1; } From 9c1b7201d564f342e67adeb0f73f5b81d70b5c88 Mon Sep 17 00:00:00 2001 From: Sewef Date: Tue, 20 Apr 2021 13:31:06 +0200 Subject: [PATCH 12/28] Add missing char in charmap French go baguette --- charmap.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/charmap.txt b/charmap.txt index 16e47a252..8159764d5 100644 --- a/charmap.txt +++ b/charmap.txt @@ -59,6 +59,10 @@ UP_ARROW = 79 DOWN_ARROW = 7A LEFT_ARROW = 7B RIGHT_ARROW = 7C +SUPER_E = 84 +'<' = 85 +'>' = 86 +SUPER_RE = A0 '0' = A1 '1' = A2 '2' = A3 From 3f2fc649f23526d3be54524e51dd84b1bfb63d76 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Tue, 20 Apr 2021 22:14:09 -0400 Subject: [PATCH 13/28] fix librfu_sio32id nonmatching (port from emerald) --- src/librfu_rfu.c | 3 --- src/librfu_sio32id.c | 28 ++++++++++++---------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index e82c8ed7b..9f642907b 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -1758,9 +1758,6 @@ static void rfu_constructSendLLFrame(void) { u8 *maxSize = llf_p - offsetof(struct RfuFixed, LLFBuffer[1]); - // Does the volatile qualifier make sense? - // It's the same as: - // asm("":::"memory"); pakcketSize = maxSize - *(u8 *volatile *)&gRfuFixed; } } diff --git a/src/librfu_sio32id.c b/src/librfu_sio32id.c index b6623540f..d726bca7b 100644 --- a/src/librfu_sio32id.c +++ b/src/librfu_sio32id.c @@ -123,34 +123,30 @@ static void Sio32IDIntr(void) { u32 regSIODATA32; u16 delay; -#ifndef NONMATCHING - register u32 rfuSIO32IdUnk0_times_16 asm("r1"); - register u16 negRfuSIO32IdUnk6 asm("r0"); -#else u32 rfuSIO32IdUnk0_times_16; u16 negRfuSIO32IdUnk6; -#endif regSIODATA32 = REG_SIODATA32; if (gRfuSIO32Id.MS_mode != AGB_CLK_MASTER) REG_SIOCNT |= SIO_ENABLE; - rfuSIO32IdUnk0_times_16 = 16 * gRfuSIO32Id.MS_mode; // to handle side effect of inline asm - rfuSIO32IdUnk0_times_16 = (regSIODATA32 << rfuSIO32IdUnk0_times_16) >> 16; + rfuSIO32IdUnk0_times_16 = (regSIODATA32 << (16 * gRfuSIO32Id.MS_mode)) >> 16; regSIODATA32 = (regSIODATA32 << 16 * (1 - gRfuSIO32Id.MS_mode)) >> 16; if (gRfuSIO32Id.lastId == 0) { - if (rfuSIO32IdUnk0_times_16 == gRfuSIO32Id.recv_id) + u16 backup = rfuSIO32IdUnk0_times_16; + if (backup == gRfuSIO32Id.recv_id) { - if (gRfuSIO32Id.count > 3) + if (gRfuSIO32Id.count < 4) { + backup = (u16)~gRfuSIO32Id.send_id; + if (gRfuSIO32Id.recv_id == backup) + { + if (regSIODATA32 == (u16)~gRfuSIO32Id.recv_id) + ++gRfuSIO32Id.count; + } + } + else gRfuSIO32Id.lastId = regSIODATA32; - } - else if (rfuSIO32IdUnk0_times_16 == (u16)~gRfuSIO32Id.send_id) - { - negRfuSIO32IdUnk6 = ~gRfuSIO32Id.recv_id; - if (regSIODATA32 == negRfuSIO32IdUnk6) - ++gRfuSIO32Id.count; - } } else { From 576e63fd0a068e30b0bfdb838920543f17c2dc88 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Tue, 20 Apr 2021 22:21:20 -0400 Subject: [PATCH 14/28] fix librfu_intr fakematching (port from emerald) --- src/librfu_intr.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/librfu_intr.c b/src/librfu_intr.c index 41085182a..4c2f2573a 100644 --- a/src/librfu_intr.c +++ b/src/librfu_intr.c @@ -147,11 +147,7 @@ static void sio32intr_clock_slave(void) { u32 regSIODATA32; u32 r0; - #ifndef NONMATCHING - register u32 reqLen asm("r2"); - #else - u32 reqLen; - #endif + u32 reqLen; gSTWIStatus->timerActive = 0; STWI_set_timer_in_RAM(100); @@ -164,10 +160,14 @@ static void sio32intr_clock_slave(void) ((u32*)gSTWIStatus->rxPacket)[0] = regSIODATA32; gSTWIStatus->reqNext = 1; r0 = 0x99660000; - if ((regSIODATA32 >> 16) == (r0 >> 16)) + // variable reuse required + reqLen = (regSIODATA32 >> 16); + if (reqLen == (r0 >> 16)) { + // only reqLen = regSIODATA32 >> 8 is required to match, but it looks a bit + // more consistent when both lines update the variables. Might have been a macro? gSTWIStatus->reqLength = reqLen = regSIODATA32 >> 8; - gSTWIStatus->reqActiveCommand = regSIODATA32; + gSTWIStatus->reqActiveCommand = reqLen = (regSIODATA32 >> 0); if (gSTWIStatus->reqLength == 0) { if ( From 704dc2f913a9d3f2cd6217795a10dd54ad6d2e2f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 21 Apr 2021 09:21:53 -0400 Subject: [PATCH 15/28] Document Pokedex Screen --- .../interface/pokedex_blit_wide_ellipse.png | Bin 0 -> 151 bytes .../interface/pokedex_cat_icon_cancel.png | Bin 0 -> 470 bytes graphics/interface/pokedex_cat_icon_cave.png | Bin 0 -> 623 bytes .../interface/pokedex_cat_icon_forest.png | Bin 0 -> 759 bytes .../interface/pokedex_cat_icon_grassland.png | Bin 0 -> 672 bytes .../interface/pokedex_cat_icon_lightest.png | Bin 0 -> 566 bytes .../interface/pokedex_cat_icon_mountain.png | Bin 0 -> 652 bytes .../interface/pokedex_cat_icon_numerical.png | Bin 0 -> 578 bytes graphics/interface/pokedex_cat_icon_qmark.png | Bin 0 -> 444 bytes graphics/interface/pokedex_cat_icon_rare.png | Bin 0 -> 579 bytes .../pokedex_cat_icon_rough_terrain.png | Bin 0 -> 704 bytes graphics/interface/pokedex_cat_icon_sea.png | Bin 0 -> 457 bytes .../interface/pokedex_cat_icon_smallest.png | Bin 0 -> 584 bytes graphics/interface/pokedex_cat_icon_type.png | Bin 0 -> 678 bytes graphics/interface/pokedex_cat_icon_urban.png | Bin 0 -> 619 bytes .../pokedex_cat_icon_waters_edge.png | Bin 0 -> 777 bytes .../pokedex_caught_marker.png} | Bin .../pokedex_kanto_dex_bgpals.pal} | 0 .../interface/pokedex_kanto_dex_bgtiles.png | Bin 0 -> 361 bytes .../interface/pokedex_map_five_island.png | Bin 0 -> 216 bytes .../interface/pokedex_map_four_island.png | Bin 0 -> 175 bytes graphics/interface/pokedex_map_kanto.png | Bin 0 -> 500 bytes graphics/interface/pokedex_map_one_island.png | Bin 0 -> 190 bytes .../interface/pokedex_map_seven_island.png | Bin 0 -> 207 bytes graphics/interface/pokedex_map_six_island.png | Bin 0 -> 213 bytes .../interface/pokedex_map_three_island.png | Bin 0 -> 193 bytes graphics/interface/pokedex_map_two_island.png | Bin 0 -> 174 bytes graphics/interface/pokedex_mini_page.png | Bin 0 -> 269 bytes .../pokedex_national_dex_bgpals.pal} | 0 .../pokedex_national_dex_bgtiles.png | Bin 0 -> 330 bytes .../pokedex_page_icon_tilemap.bin} | Bin .../pokedex_silhouette_sprite_pal.pal} | 0 graphics/pokedex/unk_8440124.bin | 1 - graphics/pokedex/unk_8440274.png | Bin 306 -> 0 bytes graphics/pokedex/unk_84403AC.png | Bin 274 -> 0 bytes graphics/pokedex/unk_84408E0.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8440BD8.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8440EF0.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_844112C.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_84414BC.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8441808.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8441A40.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8441D54.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8442004.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_844223C.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_84424E4.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8442838.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8442BC0.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8442EF8.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_844318C.bin | Bin 1536 -> 0 bytes graphics/pokedex/unk_8443420.pal | 19 - graphics/pokedex/unk_8443440.pal | 19 - graphics/pokedex/unk_8443460.pal | 19 - graphics/pokedex/unk_8443480.pal | 19 - graphics/pokedex/unk_84434A0.pal | 19 - graphics/pokedex/unk_84434C0.pal | 19 - graphics/pokedex/unk_84434E0.pal | 19 - graphics/pokedex/unk_8443500.pal | 19 - graphics/pokedex/unk_8443520.pal | 19 - graphics/pokedex/unk_8443540.pal | 19 - graphics/pokedex/unk_8443560.pal | 19 - graphics/pokedex/unk_8443580.pal | 19 - graphics/pokedex/unk_84435A0.pal | 19 - graphics/pokedex/unk_84435C0.pal | 19 - graphics/pokedex/unk_84435E0.pal | 19 - graphics/pokedex/unk_8443620.bin | 1 - graphics/pokedex/unk_8443910.bin | 1 - graphics/pokedex/unk_8443988.bin | 1 - graphics/pokedex/unk_84439FC.bin | 1 - graphics/pokedex/unk_8443A78.bin | 1 - graphics/pokedex/unk_8443AF8.bin | 1 - graphics/pokedex/unk_8443BB0.bin | 1 - graphics/pokedex/unk_8443C54.bin | 1 - graphics/pokedex/unk_8443D00.png | Bin 201 -> 0 bytes .../marker.pal | 0 .../marker_0.png | Bin .../marker_1.png | Bin .../marker_2.png | Bin .../marker_3.png | Bin .../marker_4.png | Bin .../marker_5.png | Bin .../marker_6.png | Bin graphics_file_rules.mk | 2 +- include/gba/defines.h | 5 +- include/graphics.h | 4 +- include/menu.h | 4 +- include/pokedex.h | 2 +- include/pokedex_area_markers.h | 6 +- include/pokedex_screen.h | 30 +- src/battle_script_commands.c | 2 +- src/graphics.c | 4 +- src/list_menu.c | 4 +- src/pokedex.c | 2 +- src/pokedex_area_markers.c | 10 +- src/pokedex_screen.c | 2870 +++++++++-------- 95 files changed, 1521 insertions(+), 1718 deletions(-) create mode 100644 graphics/interface/pokedex_blit_wide_ellipse.png create mode 100644 graphics/interface/pokedex_cat_icon_cancel.png create mode 100644 graphics/interface/pokedex_cat_icon_cave.png create mode 100644 graphics/interface/pokedex_cat_icon_forest.png create mode 100644 graphics/interface/pokedex_cat_icon_grassland.png create mode 100644 graphics/interface/pokedex_cat_icon_lightest.png create mode 100644 graphics/interface/pokedex_cat_icon_mountain.png create mode 100644 graphics/interface/pokedex_cat_icon_numerical.png create mode 100644 graphics/interface/pokedex_cat_icon_qmark.png create mode 100644 graphics/interface/pokedex_cat_icon_rare.png create mode 100644 graphics/interface/pokedex_cat_icon_rough_terrain.png create mode 100644 graphics/interface/pokedex_cat_icon_sea.png create mode 100644 graphics/interface/pokedex_cat_icon_smallest.png create mode 100644 graphics/interface/pokedex_cat_icon_type.png create mode 100644 graphics/interface/pokedex_cat_icon_urban.png create mode 100644 graphics/interface/pokedex_cat_icon_waters_edge.png rename graphics/{pokedex/unk_8443600.png => interface/pokedex_caught_marker.png} (100%) rename graphics/{pokedex/unk_84404C8.pal => interface/pokedex_kanto_dex_bgpals.pal} (100%) create mode 100644 graphics/interface/pokedex_kanto_dex_bgtiles.png create mode 100644 graphics/interface/pokedex_map_five_island.png create mode 100644 graphics/interface/pokedex_map_four_island.png create mode 100644 graphics/interface/pokedex_map_kanto.png create mode 100644 graphics/interface/pokedex_map_one_island.png create mode 100644 graphics/interface/pokedex_map_seven_island.png create mode 100644 graphics/interface/pokedex_map_six_island.png create mode 100644 graphics/interface/pokedex_map_three_island.png create mode 100644 graphics/interface/pokedex_map_two_island.png create mode 100644 graphics/interface/pokedex_mini_page.png rename graphics/{pokedex/unk_84406E0.pal => interface/pokedex_national_dex_bgpals.pal} (100%) create mode 100644 graphics/interface/pokedex_national_dex_bgtiles.png rename graphics/{pokedex/unk_845228C.bin => interface/pokedex_page_icon_tilemap.bin} (100%) rename graphics/{pokedex/unk_8452368.pal => interface/pokedex_silhouette_sprite_pal.pal} (100%) delete mode 100644 graphics/pokedex/unk_8440124.bin delete mode 100644 graphics/pokedex/unk_8440274.png delete mode 100644 graphics/pokedex/unk_84403AC.png delete mode 100644 graphics/pokedex/unk_84408E0.bin delete mode 100644 graphics/pokedex/unk_8440BD8.bin delete mode 100644 graphics/pokedex/unk_8440EF0.bin delete mode 100644 graphics/pokedex/unk_844112C.bin delete mode 100644 graphics/pokedex/unk_84414BC.bin delete mode 100644 graphics/pokedex/unk_8441808.bin delete mode 100644 graphics/pokedex/unk_8441A40.bin delete mode 100644 graphics/pokedex/unk_8441D54.bin delete mode 100644 graphics/pokedex/unk_8442004.bin delete mode 100644 graphics/pokedex/unk_844223C.bin delete mode 100644 graphics/pokedex/unk_84424E4.bin delete mode 100644 graphics/pokedex/unk_8442838.bin delete mode 100644 graphics/pokedex/unk_8442BC0.bin delete mode 100644 graphics/pokedex/unk_8442EF8.bin delete mode 100644 graphics/pokedex/unk_844318C.bin delete mode 100644 graphics/pokedex/unk_8443420.pal delete mode 100644 graphics/pokedex/unk_8443440.pal delete mode 100644 graphics/pokedex/unk_8443460.pal delete mode 100644 graphics/pokedex/unk_8443480.pal delete mode 100644 graphics/pokedex/unk_84434A0.pal delete mode 100644 graphics/pokedex/unk_84434C0.pal delete mode 100644 graphics/pokedex/unk_84434E0.pal delete mode 100644 graphics/pokedex/unk_8443500.pal delete mode 100644 graphics/pokedex/unk_8443520.pal delete mode 100644 graphics/pokedex/unk_8443540.pal delete mode 100644 graphics/pokedex/unk_8443560.pal delete mode 100644 graphics/pokedex/unk_8443580.pal delete mode 100644 graphics/pokedex/unk_84435A0.pal delete mode 100644 graphics/pokedex/unk_84435C0.pal delete mode 100644 graphics/pokedex/unk_84435E0.pal delete mode 100644 graphics/pokedex/unk_8443620.bin delete mode 100644 graphics/pokedex/unk_8443910.bin delete mode 100644 graphics/pokedex/unk_8443988.bin delete mode 100644 graphics/pokedex/unk_84439FC.bin delete mode 100644 graphics/pokedex/unk_8443A78.bin delete mode 100644 graphics/pokedex/unk_8443AF8.bin delete mode 100644 graphics/pokedex/unk_8443BB0.bin delete mode 100644 graphics/pokedex/unk_8443C54.bin delete mode 100644 graphics/pokedex/unk_8443D00.png rename graphics/{pokedex/area_markers => pokedex_area_markers}/marker.pal (100%) rename graphics/{pokedex/area_markers => pokedex_area_markers}/marker_0.png (100%) rename graphics/{pokedex/area_markers => pokedex_area_markers}/marker_1.png (100%) rename graphics/{pokedex/area_markers => pokedex_area_markers}/marker_2.png (100%) rename graphics/{pokedex/area_markers => pokedex_area_markers}/marker_3.png (100%) rename graphics/{pokedex/area_markers => pokedex_area_markers}/marker_4.png (100%) rename graphics/{pokedex/area_markers => pokedex_area_markers}/marker_5.png (100%) rename graphics/{pokedex/area_markers => pokedex_area_markers}/marker_6.png (100%) diff --git a/graphics/interface/pokedex_blit_wide_ellipse.png b/graphics/interface/pokedex_blit_wide_ellipse.png new file mode 100644 index 0000000000000000000000000000000000000000..763ed976cca7084914159615355a82522f908b77 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@!0wfrUSh-#RsW?v;#}JK)Qztp{9Z=w4`TpNO z^Vg(fE&LM`)*Rai zm-{g1mVrv~{T$zE^Au|Xq~~rEDZKkg@u}YyCb^YDh0bqE^g%Xyy85}Sb4q9e06}Iq AnE(I) literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_cat_icon_cancel.png b/graphics/interface/pokedex_cat_icon_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..f8aafff9b9ed42db6c8a09ec1770777e934522d2 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^4nStTJ!xcMSyT7pYI z>zixaaPx4N{-atiFSM8hRjM#LRX(>e3E$R$h+JR*F087Yp;8Ec8=z!`||G-Sq#)eHFpCeiow&>&t;uc GLK6VxbklDD literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_cat_icon_cave.png b/graphics/interface/pokedex_cat_icon_cave.png new file mode 100644 index 0000000000000000000000000000000000000000..56e529b323f98f191ab4c99881289f579d03c00e GIT binary patch literal 623 zcmV-#0+9WQP)N!0(THGXOyQ5f3HwcysGe z_oNeo_kK2yr?RAy(-lwGGIh!Lgn{gJWW#59?Ts}Tkznz(cjSb?uR1TX})0JkN0`scPHtNv8GN$B={@#A9W%@icr0~ z;wKo0dCUnAXLqDG#L=jCPn=5ejWQ8$12k-}-T*P@&LG0IHg>ZsY))kNAVh3Br!^4! z?KzA`W;3ETh%68rpV-0J@fNmfGT`x)TFT#|RYpEr1E7OJMm_DfPH4$A!{L>)Zk3Qc+iFcBl>&fB{Gbn3KimNKX|g z20*|MoWd|buBZ8@IT8Q}0DuF!a{_>X2@dAvcbvDtaSc!l+5zBz1GcjXjG#L+01&WW z1M?NSBLD;nMYbAXHlrmF41nj$0+>`_dqk6Vjn)mnhvWNz0|a&uc=D?WVBZ0g zeflW>s1M8jUwTp&=sKWU^c4qbm8NN!xwE;K8lo!RU#@kv%F-arvJC&;`r{p#B0-s^{Vx~| zQ;gHEz8@Zhs4U3BAY4)FR2wk%JjH~Ns-nLKE}EBAMpY?}F5aMh4Q5+vUxTbuZD=D- p>u9E5Y=zq<+v!d(Df+uL^$+9~X>lg9plbjC002ovPDHLkV1oT_R`>t_ literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_cat_icon_grassland.png b/graphics/interface/pokedex_cat_icon_grassland.png new file mode 100644 index 0000000000000000000000000000000000000000..2b0f7cd1d262cae81ae5c12c3480aafc5228946f GIT binary patch literal 672 zcmV;R0$=@!P)R0006j zNklrh;WXqal->5G)K!?!Mu0#0H=Be z@Bq7;5{T)p>Z$<&N`=_nfj9L57WVfJ z%iZCyfAC)p0YFFVNJd@;LE^BEmhKuy%Z;xFgCyC@9I%YNcrV4bm%#w_Qs_<6nMnoh zV9?F9|t#%<*>1e^Sa|kQWeS;3>V3 zX>vL$LaRuP&Zx*S&KmRB2(vy}tVt1Hh_eO)hJOY@0rrA!Wf4iL;7iUY2y)g{i$P*j zL#i|LnlfdIFO}x1(X826na!$(b1c}t7MfWx8!pgeu7qbUaml!BON*wdA+Q*=))6er zPF&eqJk@jAR<0>0ro0adBbw%{zE+KCP|H9GBhxyAnq_V4-y*QJZP|s$DGAmhN_zIH z76>Tiz^*`+?gU!f%GU5gKu}4ik-CPt<9*LsybnLbueAewc;f{(2%cn7yV7`xcy$w3 zc`0S#ZP|pnF2Q9;Vr66p505^f%fK8SOW9ABL4wa1C8G!udW+yj`r_Ju-u43w|A(jd z`N6>7$PBmeC-rH7`-12EN`0=F@Y8+VX7t!(J|4P^r~d(7Ch+#p^z1GG0000gqn|NsC0|K6k literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_cat_icon_mountain.png b/graphics/interface/pokedex_cat_icon_mountain.png new file mode 100644 index 0000000000000000000000000000000000000000..ece6eb196a09727db4ebbbe76ce8d8aca897b5c3 GIT binary patch literal 652 zcmV;70(1R|P)pLX0yd4ZKZ3hRtG;@K`G6*K1Tp)~Y z7yAH8Rdu(z^~nQCsNbtsAE`SCd~7?yHTVw}U60Rm{I>Hjb@9Tl(Rymq^Ve`264u+1 z!ix_z)|t;I-QRT_cHQlEyT)-8%8OUWr(L9@w!2-HWogW}==RVH_+4Bb(kP4)%YV>I zapofp@*^Su zBA#LgPq2XkFF+#1fnZVBZ|YlJ*Etjy;0$b0Tl@?@HopLls(FI~Kr+12b>A4UASVH; z9FPSCV#Ov-&?w?Ly8&WZk;gN$?R(P%#B*i26|hAm7VYo0C4pYdEz6f!;7iMR7r~y| zqapyy*Ne7r3KA4lp72GsXHiofv*5~43>62T48$Bv$(Ke;YO(YGYV}0w7*OOQ3z=}knz+1u#pCA zQ002y$O8$MJV9rRoX+jT8rs2NJF!~<|UH}KILy{{10000s-y=(2s8Z;L5QCu^GBz6{%EXA2B|;1xZs3_vhg2}!Gt{4b zx!mOs^%UV>?9aY0$6^sinsK}@W@4F1tcWO?%BMcfv7LLJd?f$mhr~EfH0~egLmh9S zzCJcD8-z_}3iKs>f$~7Kuc{+I)^$yk4+`u6R2(gRGSEz>%07*qoM6N<$g6wbzk^lez literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_cat_icon_qmark.png b/graphics/interface/pokedex_cat_icon_qmark.png new file mode 100644 index 0000000000000000000000000000000000000000..c5db049f854fd06ae4c8c64c153be48c943de137 GIT binary patch literal 444 zcmeAS@N?(olHy`uVBq!ia0vp^4nSE`Dp zkyhZh;pE!so{rM`(^MljO`d3V;rUDD(?x!5{poAodGkzs{7Liu;*NPnN7VG(_JvL< zKhN+{$3OOO^@9o%yJKqoU9O@5l_4Gull8k?8E(~Zh)!gTt}|8ddR(*1=#cV)XTeTK zyhIr$+^d(cR$k%6_@|&jA%VAlzk%@s7nvW*t5+E8*Ggn^Tsg7-<#Y~f3zb8>eLXr1 ziA;=wU7ZtmakR`ya5CGN(jR>xH{p=!?w-93oDU}1u-)WVxl?s8`rE_F4^*vx&fTzl z0n2P9pNcyvm$Vtnj5j2#?M*s#u%G`;%G~Xip>|uVCg^QlATzD#6No29|TtJ`1e{a~ZKw$ne?y%vvNc{c9Y`|PRd`u%$y&WNVy8&>nq>b^2_^^KdS e=V<7xV5XTWxRwNG@GN5E(EYCuaZpaYE&?jiv*eDAFLk3TMCMreB5(y!( zTFQhvx&DmLNxJj~gnd8X{eAJ>Y=-Tv74|**!{%*o$&`PUJD}ce^3rN2q6u{U+0F1Gxk#H)A0QLtXVkcbUGl^fOfu>MEQC>74J&BNj zfno^UHSkmtJ}q!iB6b>BBj7{%_ZWCcjWUM-nzGaZN|~bu?Xf_sfKvOlh)KZMKLDwb zysZC7q{;zsBOwWsamR1ChBuTu69U9MS_S{dZlWq9t>C@ z%qStWN-Y5D!7QK$05VD|fF6LmeY7TmeyOR&O=GOwUI_mGt!o@IGSqwMn6nUdZ!kfG zUjJ)t!}w^%1fKf-Hg15}{`Jipg;T(23=Yg6gJWXgALCz4v-qs;g`*}JD(?=Rg25B>of_1@z)~=)tv47S3;aInS8d-&zH3T6cC>*#smGQ7>hX+_ zvL0=}whC-cxkg*}?F2~fD`kgSxOv%O0==)7K51#|oVy3GDaFLirX%kb?g4;oG?E?N zI``9gAqKKX09JE9?gu`&`O4?t`+>#WuNmm`rT6(NU;lUx@cDYZ>H%(jseJ9P1NaBd z%|Y}5c*u(*u*ZbOv9G)-7g*pSx}19eNTiH#@Rb!+9XOr&lmVmz($f}@X5MEx1O7n_ zNJ_$N0Jz6B+Di}Mkmal3Z3*nB3=p9c+$dQt(=1K1gAWJm@5Mmdh+tWggg!}>W?8x{ z0ZQpG76LW^N+_~2u{B`R%r42&K`=lRC?rG)I2+k4z)dsCD5lQwyJ!q-x(rhDR2=o__0Mxi{PvTULqcw5-?@5htDb m%{m&*F6?fR%Xqs=H~k--*>^mo*mAJ|0000b5H32 literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_cat_icon_sea.png b/graphics/interface/pokedex_cat_icon_sea.png new file mode 100644 index 0000000000000000000000000000000000000000..2589fc28f31fd28773883799d359e39514350fe9 GIT binary patch literal 457 zcmV;)0XF`LP)bLRg5|Nj90{{a900RR60|D@Ib5v?=Eo5WG<;R~h67M4T#D@<|wUiVM{R&}6 zci&*pL`f~EUg`;JFqk@{z|pD2+ub$L^U?}z8fj)Y=X`k>m>R_PozRtyK>gg4ptg%G z4vz_PI}Pkcx*4sg%|pkl=OuD*f=pJH^1XtKU20> z|LfrX`|%cAI6yikOfW!9As0k63iA#knsU81ktLl(aYgreAkrSiffH%%<)N4Ob?^fy W^$(cD-I@3R0000DqLS5UC_3R-EnuONP? z&WxSJ32Zxu7-hcvGq!)5PA883fZ|K%lXw_NC;;f)%lE4^#rU(&p^Dyr@@?Wa4{%!_ z(gqOq(GC4gLh9s)2Ycgzuk2=uASh4xq9M-(phSqbJtghtRjF`utGczKr^uU5d%Z+ zfqyA{q~~bsF1d;UO-rf8)yPl%Vsm;QyRme=E(d;n*RBog_Wuox>y>QAG;0I2li~$L z@m-pGASpMC%`o?XC#;v~m6l~M7`7Y5QGlKAF&Jhjz#LMM;Ey*}fj?bcFF*^syktN_ zA;455lG3yRP`-&@0@D$6Z)x zL6jbZcJ6zcxeCJMJ9yT^?0YZMX)=@AU)m|;{pO!!nn@7Y?8QJYSV1eUX#47Wu|+eb z71wC5sn?BWJ&sq7@0rI&)yH<1b+*$Spu<>LmN{dr9?)aNLSbRs4&a@zV+6*lDU|_z z0}BNzVYgp#YL;+PLL>7N3qeBP122EE{v{HOM=r1g({&6&7e)@dPMOnUun)(ezHe?u zhjC`^fxjv8Ab3<}wqXjuFZ%d6UN2zO_X*$^1kLdiAqs>L%J8S_BY^MygqR8+0q1-n za32j}Uk-mlTP;ZW<9uk^&?oF)6(*u=XF;nbTqes1Xah%3ipwN!UAm?zgA_llAlVpzd>{Ww+mK8y}`jCW&G)rG` z3Th-F;+D7}VH<@!MgGAQq?8b0xG=942s+L4EKTKnB<0mR%%UL5cXNCGkfvFlYZ8j$ zU8zT^zb#&G6tvFtOEFd-B#aZJIv=)j6m(s9S{^Y+S*BqUt}wL^DXe3PEx5;^&HzVn zkHMgo!zyf{RtLUn5{i!rJnY|%G7W*&6LIVtdz}rQnZ83v|^;yi(19*Cr3h+0007% zNkl3OarN?zC_Xk4YN{f%S!Q3tW7cKb%J@6#B(UT!`a${_|3N&@P zu{ab0f^ZaSFbJ-jvuHOMLg{c>0_iKsik+nQDz+tkkKXUIBinKMx)?(roF{ZL-f8f^ z_{F%VW0w=}O6$j!uTEDV2ZwRro1u9#-}ii6J#U}zTEL&pd^FYb`te~tO*Tg~o3E0_uv*^%yv>p(&Q?iWXLS?Tb(SrX z)goE&1u*rn>Ntz7Os~!~T-Qz0;BV4%Q~iVP&@`l}EEzb@b$F^{N6NB^297ngor&{0 zj?*}n%T&rVm8#j;oua-un5m?!BDAUsWmrX0E@f*ooyJaB$uNwnFqAkV^wE={Tv{JT zN47nwco?N=ylep}<@P}9utHjyYCz9C20>shw-!NNI*$P~v6IaeMj)JbTN3Q6mnm9) zcAf=?fMOmE7A_|M$|4wD2RART`-raPVIBQ8z`jQ3IKg-Ouw7%{0_cd&r!2M`wpn98 zT+%{UG3uunUBj2K&0hd7C?kb1>(4u+WB|k;wJ8AzD)!3|1!X}=h2GU~7{LgWHcH?w zC@V_(Qv;{0q(yKe3Y&wlA^;#tdT(AW1{!Pn`3piRfcD)y1we$@-7LJB2EN+Y`-=dr zY+67?6|nn0oT_+NqpF`#THbe`m`kef!#qhs0Z@AjtzbY*5#kr2D#xzE_A|(Akp$@q zf*kvwLFYu+8UVnJ9>k$nwnhNr(@|KN*vCZ0@$$aQUiHpDS%|c7Sv^9L00000NkvXX Hu0mjfYw>Q{ literal 0 HcmV?d00001 diff --git a/graphics/pokedex/unk_8443600.png b/graphics/interface/pokedex_caught_marker.png similarity index 100% rename from graphics/pokedex/unk_8443600.png rename to graphics/interface/pokedex_caught_marker.png diff --git a/graphics/pokedex/unk_84404C8.pal b/graphics/interface/pokedex_kanto_dex_bgpals.pal similarity index 100% rename from graphics/pokedex/unk_84404C8.pal rename to graphics/interface/pokedex_kanto_dex_bgpals.pal diff --git a/graphics/interface/pokedex_kanto_dex_bgtiles.png b/graphics/interface/pokedex_kanto_dex_bgtiles.png new file mode 100644 index 0000000000000000000000000000000000000000..5cef4b0989518b49483661552378e7c923bf09fe GIT binary patch literal 361 zcmV-v0ha!WP)?iw{Pe zU!D>%Wg!kKhywv}Fl9KvA(Wz^$`xoNu9lQQOIb{Pm$cpateBZx!AX(ValF3e(;{BP}h(WRUPo z&9g+fKh2VzZw)mcXM^zz4ddQV_}$!S2d!=GSov7H1=e^2{>k5r!RB(A00000NkvXX Hu0mjfN3Equ literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_map_five_island.png b/graphics/interface/pokedex_map_five_island.png new file mode 100644 index 0000000000000000000000000000000000000000..c37c1c25a1aed41851babce35aebeb7e25482615 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ip*Ew_c0+~m*bU(Xy^xL<0 z|NsB5PO@AwCF$zXCI7#@d-v|y)vH(M%$f85Kf_r^%m3Y$OTMN=0yQLix;TbtOibo* zW#(Dv=H=mFIYlvIuMDTiOe2=5iy1;^G#E-KaL#Dr;W?%)(6fZ~hzYNok;pQc?F=s5 zCs;zFn>tgHDJ3WUDnB1 z)~~mTcwd+BaTyIn{PD~8@canylz?-_Bv<0hfe!}oWxJ08VRlLE!YhEdvueKEH*JGG zh4qcZkP4g(KBR(9g!=${N!|eFrZpgPSf^D3TKQ<`F94nja$AW__drgkNUH^S!9?LK zV04HA(t=HJFAWqQ$9sCm9nwf!eSFLc@?+c1q(!z+QZYfGF4_fP5Pp q00VJa!spEV{U^=zk0$jsp%cHX(EXEO!*B8c0000>dGs0tTO=BLbswe)yjT<7N42e2B znT{P(aCTG)IUpkDd2k0y&qIcj0WHrB76~bDx;UAcA=v1^cGdmgq=B|Dc)I$ztaD0e F0st_hQ8NGl literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_map_six_island.png b/graphics/interface/pokedex_map_six_island.png new file mode 100644 index 0000000000000000000000000000000000000000..53e598139313bc8b5050c97aa975d36901aa0bb8 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ip*Ew_c0+~m*bU(Xy^xL<0 z|NsB5PO@AwCF$zXCI7#@d-v|y)vH(M%$f85Kf_r^%m3Y$OTMN=0yQLfx;TbtOibo* zW#(Dv=H=mFIYlvIuMDTiOe2=5iy1;Y8a5ivYREK@WIA?Cpg4g^L7nxnFhiz+tC)jC zPc(ybx8|ya5iBo~xiuIrummu5NH9jYtVnVbaSKUuF{>(KU|^O#EwkpQ%d!PC{x JWt~$(69DM`OfLWc literal 0 HcmV?d00001 diff --git a/graphics/interface/pokedex_map_three_island.png b/graphics/interface/pokedex_map_three_island.png new file mode 100644 index 0000000000000000000000000000000000000000..2e34eb497856945bd27a78b3bb1cc50545f15636 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Eu!VDxcYag)#DT4r?5Z5_#_5ztlw{$NNZ T&NcGQ00000NkvXXu0mjfEoXKz literal 0 HcmV?d00001 diff --git a/graphics/pokedex/unk_84406E0.pal b/graphics/interface/pokedex_national_dex_bgpals.pal similarity index 100% rename from graphics/pokedex/unk_84406E0.pal rename to graphics/interface/pokedex_national_dex_bgpals.pal diff --git a/graphics/interface/pokedex_national_dex_bgtiles.png b/graphics/interface/pokedex_national_dex_bgtiles.png new file mode 100644 index 0000000000000000000000000000000000000000..226e08d54f893943683cc83aca1b6778c5f888aa GIT binary patch literal 330 zcmV-Q0k!^#P)Y(&ZuF4I(?M~@l}wAut^ta|=N zFSd&TU`k>10%VA3=%I|Cjj$Q3$0uaLGQvL8#2a+*^oA_3?#m$pz>W7@Tobq1i~)JwO&HF!3sLHnlbq}{2JJOBUy07*qoM6N<$f;3f?(*OVf literal 0 HcmV?d00001 diff --git a/graphics/pokedex/unk_845228C.bin b/graphics/interface/pokedex_page_icon_tilemap.bin similarity index 100% rename from graphics/pokedex/unk_845228C.bin rename to graphics/interface/pokedex_page_icon_tilemap.bin diff --git a/graphics/pokedex/unk_8452368.pal b/graphics/interface/pokedex_silhouette_sprite_pal.pal similarity index 100% rename from graphics/pokedex/unk_8452368.pal rename to graphics/interface/pokedex_silhouette_sprite_pal.pal diff --git a/graphics/pokedex/unk_8440124.bin b/graphics/pokedex/unk_8440124.bin deleted file mode 100644 index e580bbd60..000000000 --- a/graphics/pokedex/unk_8440124.bin +++ /dev/null @@ -1 +0,0 @@ -"""(UUURUUURUUURUUURUUURUUURUUU""""UUUUUUUUUUUUUUUUUUUUUUUUUUUU""""UUUUUUUUUUUUUUUUUUUUUUUUUUUU""""UUUUUUUUUUUUUUUUUUUUUUUUUUUU""""UUUUUUUUUUUUUUUUUUUUUUUUUUUU""""UUUUUUUUUUUUUUUUUUUUUUUUUUUU""""UUUUUUUUUUUUUUUUUUUUUUUUUUUU"""UUUUUU%UUU%UUU%UUU%UUU%UUU%RUUURUUURUUURUUURUUURUUURUUURUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU%UUU%UUU%UUU%UUU%UUU%UUU%UUU%RUUURUUURUUURUUURUUURUUURUUURUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU%UUU%UUU%UUU%UUU%UUU%UUU%UUU%RUUURUUUbfffbfff""""23332cbb2#""UUUUUUUUffffffff""""3333bf2c""2#UUUUUUUUffffffff""""3333bbbb""""UUUUUUUUffffffff""""3333bbbb""""UUUUUUUUffffffff""""33332cbb2#""UUUUUUUUffffffff""""3333bbbb""""UUUUUUUUffffffff""""33332cbb2#""UUU%UUU%fff&fff&""""333#bf2#""2#23cf23#"2cfb2#""2cbf2#""(333"""2c&f2#""fbbb""""fbbf""""3333""""bbfb""""&f2c""2#2cb&2#""3333""""b2cf"2#"&fb&""""ffbb""""3333""""bbbb""""ffbf""""b&3b""3"3333""""&3fb"3""bbb2"""2bfbb""""3333""""bbbf""""cfbb#"""fb2c""2#3333""""bb2#""2#233#233#ff2#""2#333""" \ No newline at end of file diff --git a/graphics/pokedex/unk_8440274.png b/graphics/pokedex/unk_8440274.png deleted file mode 100644 index 2c10a0d7a2bfa1956ad1ae4a7a35ade668879ea2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPr2P))79UJ-GCw>+JwyyB zh=T^=z(X8N84{2Po$siT9SZroBI{AobyM9XZMQ%7WFp++9z`)Ch8=2b5UUl?fK|_* zNaZHc0@jB#e+FdRgrVDU{9zHi#m4Xgaj=YV3}uudUF({J5r(R=5+rn{sj5v)nJzWu zA{TUmIN3X_Yxuh z)Jw9zHSD~c4Te87w0nKwxw-W_C{?M3n~&eC-3!)u1E7)|qe$kQ6951J07*qoM6N<$ Ef)N~lVE_OC diff --git a/graphics/pokedex/unk_84403AC.png b/graphics/pokedex/unk_84403AC.png deleted file mode 100644 index bf8ddd470d447f68fb3e4fe9074c7e9cf7f59bd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmV+t0qy>YP)a4v6Cj)iJ;Jbc*MrCq>o}ZLe795vcN+Y z2xLKtAb_w85}l`rMDpkz3sQzy@-AV``ohbIbW3=4U4||ra%`a4I%vYG=5N$us~7;5 z6eeeY2A`T9a{H4JHe+>pfh<^B*oT^UhYr3@kOkIxIYa<><2`5B2yRequGl<(HE_x6 z(>c-U1awr4l@F_ZEQf#>COA^Rr7*1 YK4}skiz1jS5XVQ6h{#)PLjVchB|`FE8zJp%YNT6V5gH_R-Caa?5CNfdCf7a7-w3tbve%ox2_6j;g8Yd8H&zJ%e)wj7w;D zjOUh9v!{BkjZqieu4o&^T9&6XUgY~Jj*Q1`YFUzW2 z)}`xj+=TUw)AgdXaQIEA(e4S_wjof0YVdW-TMWhrVsJfr}U6_ur=v{eei7}#|>Bv2m8eTJ9$hOIlJ^;WOXqlNA)b-v4?yEF$z1I s;&|bG%wbH5VSb*=s?)N0f7ja+>lwFyc8K*CtCh{8&Dc0R7@tx80j$rTg#Z8m diff --git a/graphics/pokedex/unk_8440BD8.bin b/graphics/pokedex/unk_8440BD8.bin deleted file mode 100644 index 2c83ce78b29772ab3274e089cbaa1d5d0c620c08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmb7EJ#X7E5WOZ%J9H@I{sEg(P_$kGQA<0yG5-SX-2(x;?P&OK6x}EzK!Hw@hXftG zXb8|*S~3RG-^kEKeW#C9P3$y%z|$S?-5q(fWTO8cjwjn*H5H1xlO+3Jn8BW_#-YQ8U;kBW1=9S6X}xg_PQqvfHA<< z5mGt>UpBfYdV?OK1IUVX*+BK2Te$F*C!DT6Km*4afQ~@FKs5cEask=nJ@|ULuHIh+ zQgA^{<)Oh}dJy1v)%kel>Rw=jr$l47nvSGA1hGI~A3SO3!!lggwZ891QoiC=QogJC zJ&t3h1z_Sz`y)#ZFs*&>$MMi@^}80meeCgXy@#82>mzh~wDk@S+@5)tju?-403J51 z_H65g5K)(XtXq<`5zqKAh5~c$;o72i7c(qo)(TT|zGZP{^wgNi@}@L;o0v(Gd^Bqt zo6trJ*7Z~iz0}Jo92gBVoxnkvW}VT5Z*_J!zgFuf*2f4RA^aTr0oFucZA4!{N)n>$@z!?-y&WqE!H;#%|qgT`>8g<0WR46dcL_7@l??S1gPD}bxZ z1_`j#$E2r6q?bgi*F@$SQHi-;@^Fv9w=7NRXPy(~1^)X$>UYa9WKm$?40$<_VQ#uA z+FarpnMHA*bQM~j@h;2D>hr>Vyum9NCinT4EPvDhMtqSZ!|K;d5NpD<_=x9knjOp8 diff --git a/graphics/pokedex/unk_8440EF0.bin b/graphics/pokedex/unk_8440EF0.bin deleted file mode 100644 index 4f2f027f4a6293cafb4c04027b9e1f77fd64cc6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmb7^O>V+45QVKSvd;;~DmOALi7GLi0D5a97T)51Zybk0Lsdq49{-G;dCwDv@RkiB z3>Jb}_%xdg@5UVCM>|J5$M}2R>?_{QY~-{@V|5A9@%EuFKE}nPS){4ouPtG7>=NJo zT>qm#X=?}*_yq8R+*9s5vu)H@aS<1x=eV=^vzJ+2gKsLcZTh~yq?DRx@u+~ZuejoG zp!ufUiB3FtcBFPtdcskhB?6>^(LqMB10C>z4eXsN&RpY`t^i-#K{f8co0f?$&;@tS zx$JWhZu`8s?sK}8(s;h|jpr-R`3Gm&=3?t&qIt86XjG&2Z=gQ8c*BciryWGt&RzJh*4+aG`Ju ziBkh?qlkglTkZR%r^dsWBYMS7OM12D>pw8xtLInW4b?haM$lDqxPRHiDXx*9FmOs3 zes0toN6AQ&#cI6AhL*G*v?XBfD6XyZ&jYA8@E!XG DJ%s{{ diff --git a/graphics/pokedex/unk_844112C.bin b/graphics/pokedex/unk_844112C.bin deleted file mode 100644 index e5170a90fbe5dd3c1c4c7fec50a661a3233d2671..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmb7^ziSjh6vtoEXd20++z`1mkr4225n+pMLP)XOTkKqEw*w&%0$Ys8!F4jriLp9% zNZ@Ku!R|b70t#0|W&Z}hZ)P_+v@kyMnK%31oA--wME@l{qFzdrW^^pGBPnHg4cl@0 zmt?RYE=8D3^DJKt$TN6hmf0RjI5_qXVYAPluA`!SLK!EL5-RggW!}{fT_B8nEO(gh zf%HM}{PR5Gr$k5K*uTa#r59O>5`F+4BF}S~W-^0fGoLDtr|T@M%W(K!5je6r!z*f~*zC+8*b zA|)_OQ0 zM9nX)^^9se9~sMzqEO>LvKC$9RvT+;_MZR_g!#617uuI?c@7LRbEoRkp$9PU_844f zV0LN0I%^&JaHi(81lGYrH3rrmAoq62Z|u+vjSzt?=*^ZMGLCY5wOrLLmP>U&_-2%u-jtdiJ%$e28#uTI|xYRn)THo!nxe^1tY)bAiDK!GvZ=+qZ+iQU6>VW9xQ5bH6 zhr5S7E6bA3lLW6y{Pyu)daKV+2vtfh#pnh?=NfT6?2@RA%K^I4`18VkzWBKBO~dc8 mOI>oB*52u+c}m{6a)kH$)bNiT1g;IO_n~oztu+VdJ7k9$W{IVTgigmnnfQFppdnmgUsh4uxWij5cpW^VCj475AYr(dr8+V z>z+fI<|7|Tp{Nl5gGdl_G04}czikIzXnKaLMjdxM9)QrVD6 z$@=4hJ6`h?dP!Nl$V~21|8yd4$`xW5Rsuaf-12w)EjTU27PfRmB#NEW}bKEOTbb>!_lj_9adZLdV-HU+5vA;<^*fV7^?89%2`LLPjENp zaGgSvzMYSi@np}TGJUYMe*()ZEokadI5%NA`vt`^4u7Det!|PqZ v)r5FQQ6cAh$!`lmzd_26xv2U(IPX4q_CEn}{$~e(U8Wu3BQ}K-`Hu4^{6F%k diff --git a/graphics/pokedex/unk_8441808.bin b/graphics/pokedex/unk_8441808.bin deleted file mode 100644 index 1f5b583fe0e511aada47cf5ef70d3bb5e8285f17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmb7^L6U+n5Jgii*mHtm<&9dGQdZfXK)f}U3$`%tCj>#p8K$c~9g{$*7N zm51OS&hEA2qtVCz(i-!|Y~AmEx0ku^S#4>IP9a*}ciM3oXIFRQllD(v!p7JszL<~y z(ylc%gc_UyydXEry&*$$KL9hF;S72aFE-Yhb%WXPz?IfL+S!;5qqSIx$!{3H=9uBc z%BgB_N8|LhpoCrY`j7LZ(=+k>P{rnyP;YiYrjb3aGR`Vk*HBzp^`S$e4^es yN=92wmf~Y<$Q<;bO#x#=ad{kne;?QV)ElR_ZfS7RV~5dSC@%7&Z|qKk8@}JmE)Y2Y diff --git a/graphics/pokedex/unk_8441A40.bin b/graphics/pokedex/unk_8441A40.bin deleted file mode 100644 index 40a7fdafbb12894dfcc42bf5e2cd8279327dcae9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmb7^&uZI15XP4TTzZsWpteL~baId=J^CFAQphd1XiRURV2$YuNXO7iQC=WaPgjx$ zP=BMfEV~II{qVOM&7Yn5c9l5yUzj;J>zwO4mvkTgJWT^%jqkBL!8{DQ0Q~DGY1t>P zR;&5r(-W`kHefjo9)n;>-7*ZPX_`j1e|Kgbmu^m45X{K{GzdxX{ryT>pF78E`O$QB zejI-hKh@v!0k}r7}7WwEMEy}-YvKCd5 z(d(`3Q<}>5bFx*9RCR&(S%2$oGg$v=Fij#miK7vY6C^;LE zEp7{zhj6K))oz2vJ$5{6Sk)zllv+Wx{);e}Q=(=IZ8FWw)KFo|9gK6+WnGc_TFKzg0PiALE z((u%~`Z@gY6#^^~4C?EC2i`1(Lh9{Nb5?%)zDIvhzVL;WiUFI4_D80AMHg;I<$|Fm z+{XkBXVAGd3xb^!b?!U7t@u=ox6tin?U>_542|r0q`}7S72qDndA@^{R90)~>sjnx zjf1Z@#>Mnx{I-hKpE5$w#CMw&86Vu3y5VjvxW)-Y;leq62hqjjO}J$6kxxk>QkaOD%*|#79i?zG@0=NNf9af)pY9#`BDWUM zy}JX|1Gw;xNL3#{Wr1a47?_pW1F-vKd3T&~tH=z@<8Ik|lV9G$$8AB4DBB^KGkA3a z*K1q9xbhfP3H!fv1~sXu-s-cJRCFTlPB zC11!A0oa7d(mGFk#6b_~ukk>>CDsjIBagM#bp#6X6*L4x1F7q$=V2=8r)Y^r*ckv# zh&)4+1``8F?J%TQ*}*5gca}ggEb$JEdZy4TvUU+&W%U0EDN}?B zK1uH%t{CeqIOArcbmn>X`3;~hs1HfJ<8aqu7bv*3_;(}XWan7@1MkLut+1Z|?ZZ3Q f-LmrzyQpQ@$h(b~9RySN>8`^w=KASm{J{7J-)(M4 diff --git a/graphics/pokedex/unk_8442004.bin b/graphics/pokedex/unk_8442004.bin deleted file mode 100644 index c80cf7e539fdcba6d4b6bb1cdfc9da383a940f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmdT^OLD?64Aq1ctB!nv#96Tl#RtfySAZL|+<Yxg{kBP@nt>rb#<=**Bv| z)_bxonStm}D2YlT5}}L8S>Qd8!+HYdhrE}vuW7K`2#r{4#4zjjQs{|SokbmUbz#Go zaDMng7PW)^A?JUI&ss{fY>8Gqk#n?!t(*%tYm79^Ezkolp=O_Fpn^fdeQg`iwMtO# zxbkT`F+I6K3cmmeI3vk`Zxk%f8#%qfOY=-+6+CzT-SKuA! zfD`Q4?KemG5=O9`$Fkdf=r`c7UGHvqBoe1yr8%G1CSA^_9Q+~0Q~dV%Ezvjoqij16 zG05vtwm^Cwt$-&&(}acz&FX@%z)wZ(2-6XavES^*$!jKzDBk7UOp diff --git a/graphics/pokedex/unk_844223C.bin b/graphics/pokedex/unk_844223C.bin deleted file mode 100644 index cdd48c1c264b3c461ddf6f0956e3d3b4d458a935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmb7^F>>255JfR6QmD`w)L4ZIpGD&t96^Ya0$t25r3NR^3>%j&Q0P{XL=}66ybq8J zY{waAN1uSeCBU~IgmeEDYv_fglcSJKAZIsZ$0{~!Gw_h8wfhspTFi{^=@8)fa=b{B3` z9cU-bDTkCE(-dYY#gGim2_f_`9Q$kNrJ>5^HTs@}en5S+=aQ=QC}tJmMOvaQ%F+tm z%SyjS@=|(ln>4@RTFdN*4SA-WAKL(`4MxE;NmIPOWFdnA|N6|w?_OI`x)G= z!**vU&V&u(V_^HcrQkjh+7G2hRHB}JZrwgcS@<4aN6ptc$$F!|Iv?s@D(6OdKzVhi lRF9@>IZsN)ot~eDn|9;84m-^s!m6H)^cfq6>&;JGe*>K|G{gV^ diff --git a/graphics/pokedex/unk_84424E4.bin b/graphics/pokedex/unk_84424E4.bin deleted file mode 100644 index 9be6edfa9585e5375b7303e9e4d86e0bd858901e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmb`Dv2NQi5QYyK5;R2z4cR(mO40OX;(^ej8bJqg6N&=j6&m;!9q7)1U^?&v*h?~K zQ-Lhq>M+yb_Z_rWirrwDyfM|1_cfvdKqqA0#WKcH?`s%?)l zq>p~j7ul%IvXROLjfVW|Y`a{kw#%;D7WKu(mvxwRU7_xME%YltQlqx(9+EKK=db^~ z-zCzMw!QR45xg`nkASA=@&%E93#Pyy(!`$<;StZa!1S5Qp6UNz_KTn{yno<}pQ_0; zs1O#Qm-o}~)d!kQ!`>_`UM|6Gv3$2!F0ov~vkd)h#u#&u@D?nLZ_jM1sN$;6BVHlz z;FHKej%*G$w5h)p54_B(N~}2N3aed>D;!m!;5N@yo=|})KzLxRLY1%ARa4i3n)vC( z#81#_XzC!$o4RS5wU8R5gZB&RrLGsk%+>QCaGlmHJ>p4FD1_6H!s$GP!-nU3iRXkK zna* z8&1hM*@bP2c%j-kt{roYBN%aZWn_zVEH&$&;jN>fVcKVS?kr3#cH>c#&>ji+=d4csK?s7bhVIua~Gryl4J@Mz@4 za3D$tf#4vcyxh`BAjr@mQ$YRRon#WSq)&Wzr~BTo@5z|xzidP_3W>sy#=&?!)?*(% zn$ySmJeSXAn^ow;9NNW`~ZO8 z>1_4^@yI?6bJWlG^?es`qY%pm9qMsFsLxlAu{E4D(K;u}0j+6W6!fRr=0T1!xqI|r zMbYZ*_M(u@b)caWtVizvx@azntxOvYc8?)m7j3JXi?om_M>^Xd@K$Jjy)AUwG%d!E zBmOSy+)+YruiI^a*1XG5$fx7A)osh-c?b|k`iWD<>VRiJK$Oa6B&Gb;cgLNzyQEGMgfiX9#$9_7N1q(IYwLL_(>}D1 zmollXE8fM{HkcuZ)RE|dZE2;nv0Wm`E-lg&9zD4`nJ&;Xvh%3fh zxmscKh7y+hWc%Bd;(=UA{0TZv@o{)$yDff`F(FW+?W^6++1 zKfmo32i4Vr=(mdKm#T;uKY&Ys7?%Jck0>J}N~27vDv_y3sLG-IX-p>iS@?F0n3xE@ zLKy6d9buE9*#|E^>dso?%wXeKU?^ZB&WwyEtD-VfRaq)!GF)br@U2x5u1&_*1FEZc zRGAl~3>2OKM*ws^WpR(NOQgb#5W*PoTt;`p6tq@o)RZP-%?9uE1)vc?#6tKN;rIJ1 z`$2AXhW5>;QkAF$bqb1N7^O{Wm&!$v%ltCD}qzZSB{lgnH F`~yo|vFiW; diff --git a/graphics/pokedex/unk_8442BC0.bin b/graphics/pokedex/unk_8442BC0.bin deleted file mode 100644 index 129e3a150ea35fa8ee7d829ddb0a96730fd634b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmb7^&u$tq5Qi-e`y5=t^F)#C5IFBZl5?<-a!uNj`=Ul%iGr1Dkt*-GD8UcaZ@dJy z^pDaJ-;T%jviqBvwK4x?U1Pe|7;DX$wWk)JjXB~Y6KhLp&6n1S@XJv z!72pRtVz&B34^PiF@Ye=3KJd)5Yh#$rSf|j%UnmTW!9>CTkuS@PCd>edk&k7;N@mM zN8{_%yL9V6rG@t?Wkz^MY|$7cZXvG6F>XuZ@_rpl>8tFrX1U(RVO_@|dR-l_@9OBr zacCvpu_J^~0djXdeyu`E4rKY7LKvI3FzdXn2F2^kphz!+UV6EZwE8TInQA(iYJbmz z=0tPT*4m8s`IxYXcBdsKBL}0dTH6s|j$S!#@LXT?X|1!l!`)i_ONf^+BoVp4TI)}Y zt9|UAsk_@hUmI!$K|5o>SZlT4EIo!w0UgkGx3qoJ^SSr+8_;jT=r=(MZagyoz$URq zHMO2;bBs>wYM(_=SJSE`$YQs-GAGW`yihudB=%Cqr9X4(OAz|J?yaMGM^AFLG>|;T0yLlE7eFtv~0|!?5i`>OcQ9Nq5&J>BUwgI zv6V6bxtHYSHo6`5u>!wh|HuP~XY3`IWtf=NUbfEr``_Msw?Si#2K!}ecBst!!&dy8 zc>l2Whst}w0BW?_X}xy3_D=m9cn>aA{jgX@ig%_vGcG<#=LaU^yjC;Ay14<%%qe0I zNbW)Hoe%Vc-gG)o(Lr}d7y*s=aIe+I!;uXp9(^^sJ1o3kqzU`gRUtLL@UNYQOe15# zbVb8wfS%)Wk+sb2`AechlwWgc_M>mXveV2Gk)E*J1!bRVKGr_}0sadG{|Q>aS||Ss z%#m>nE`%VYJBH-fNfpvdu*0%@YY?m8lpNuk$aB>+O?U-y(_;w30ZsGbnr7~reOT_} z8fO#4bAz>>YrjNy?#`B!yf0n?FNS>U$8nu6orWldJZq~^B4hG=LK||R7X*zkHY!o49FOqDt|x!V^|s6kFSRPZ`3E~gRcp=$o^oi#6E+s*O=4eE1+Xq z(_;b8wnmfSC!OW#(euFJ3iXw&ych31iUf)Sar|en=(s}t5;zg(>XbhwffYdoX+$1L z1@HiKBLKUJ(`BsZ)+Ror_2U{2IQGMM{t2!m&^S&K1bc@GuUmTYP`nAQs;ia^Dl96EwNoot81LQPnoZr z{y<|qkqR&;-0l|JKJWRo_jv|*77Wh>Q!oQxK&K~ENK$nBsB!zKx_xYQ7XxAno4I}u zAs|oU_IFLZ)8;zG^;2{mn)?u%u))`}Zo5h@?}G@*qDQI)w;-SrHtoX`=I01ZEBXLn zbq#)F;y`-qyf?Vl%igb0!WW8niTfet2${%tpBW8bL^saEq4Id%lRRfxy!Z0{vA74b lIIim-mb?%1i1YsaVL#8UvtHFTBrTG8i zmN`pUsunt(b&q~~z4yk^hBGRYDknU3RPR(QcJS!na9mm#85^=#uwP}G$BVnwd0Urq zoxbg|@1*Na=1l2r)sdGzd3G1P&EH#jFoaw-;|bbt)BZ?W+U_5`_bEMek~U6Z_2u(#9mw_RQT-f>|G!?db;|#taD0e0stzp BQmp_0 diff --git a/graphics/pokedex/area_markers/marker.pal b/graphics/pokedex_area_markers/marker.pal similarity index 100% rename from graphics/pokedex/area_markers/marker.pal rename to graphics/pokedex_area_markers/marker.pal diff --git a/graphics/pokedex/area_markers/marker_0.png b/graphics/pokedex_area_markers/marker_0.png similarity index 100% rename from graphics/pokedex/area_markers/marker_0.png rename to graphics/pokedex_area_markers/marker_0.png diff --git a/graphics/pokedex/area_markers/marker_1.png b/graphics/pokedex_area_markers/marker_1.png similarity index 100% rename from graphics/pokedex/area_markers/marker_1.png rename to graphics/pokedex_area_markers/marker_1.png diff --git a/graphics/pokedex/area_markers/marker_2.png b/graphics/pokedex_area_markers/marker_2.png similarity index 100% rename from graphics/pokedex/area_markers/marker_2.png rename to graphics/pokedex_area_markers/marker_2.png diff --git a/graphics/pokedex/area_markers/marker_3.png b/graphics/pokedex_area_markers/marker_3.png similarity index 100% rename from graphics/pokedex/area_markers/marker_3.png rename to graphics/pokedex_area_markers/marker_3.png diff --git a/graphics/pokedex/area_markers/marker_4.png b/graphics/pokedex_area_markers/marker_4.png similarity index 100% rename from graphics/pokedex/area_markers/marker_4.png rename to graphics/pokedex_area_markers/marker_4.png diff --git a/graphics/pokedex/area_markers/marker_5.png b/graphics/pokedex_area_markers/marker_5.png similarity index 100% rename from graphics/pokedex/area_markers/marker_5.png rename to graphics/pokedex_area_markers/marker_5.png diff --git a/graphics/pokedex/area_markers/marker_6.png b/graphics/pokedex_area_markers/marker_6.png similarity index 100% rename from graphics/pokedex/area_markers/marker_6.png rename to graphics/pokedex_area_markers/marker_6.png diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 64e173aa4..0d5c6fa7b 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -492,7 +492,7 @@ $(TITLESCREENGFXDIR)/leafgreen/box_art_mon.4bpp: %.4bpp: %.png $(CREDITSGFXDIR)/unk_8EAE548.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 77 -POKEDEXAREAMARKERSDATADIR := graphics/pokedex/area_markers +POKEDEXAREAMARKERSDATADIR := graphics/pokedex_area_markers POKEDEXAREAMARKERFILES := \ $(POKEDEXAREAMARKERSDATADIR)/marker_0.4bpp \ diff --git a/include/gba/defines.h b/include/gba/defines.h index 02d687ade..f0fce824e 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -51,8 +51,9 @@ #define BG_SCREEN_ADDR(n) (void *)(BG_VRAM + (BG_SCREEN_SIZE * (n))) #define BG_TILE_ADDR(n) (void *)(BG_VRAM + (0x80 * (n))) -#define BG_TILE_H_FLIP(n) (0x400 + (n)) -#define BG_TILE_V_FLIP(n) (0x800 + (n)) +#define BG_TILE_H_FLIP(n) (0x400 + (n)) +#define BG_TILE_V_FLIP(n) (0x800 + (n)) +#define BG_TILE_H_V_FLIP(n) (0xC00 + (n)) // text-mode BG #define OBJ_VRAM0 (void *)(VRAM + 0x10000) diff --git a/include/graphics.h b/include/graphics.h index 81b6b4ddf..533b88b4b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4931,7 +4931,7 @@ extern const u16 gUnknown_8E9C3F8[]; extern const u16 gUnknown_8E9C418[]; // pokedex_screen -extern const u16 gUnknown_8E9C14C[]; -extern const u16 gUnknown_8E9C16C[]; +extern const u16 gDexScreen_TopMenuIconPals_AtoZ[]; +extern const u32 gDexScreen_TopMenuIconTiles_AtoZ[]; #endif //GUARD_GRAPHICS_H diff --git a/include/menu.h b/include/menu.h index 83bdcb4f6..5b12047ee 100644 --- a/include/menu.h +++ b/include/menu.h @@ -28,8 +28,8 @@ u8 Menu2_GetMonSpriteAnchorCoord(u16 species, u32 personality, u8 a2); s8 Menu2_GetMonSpriteAnchorCoordMinusx20(u16 species, u32 personality, u8 a2); // list_menu -void sub_8107CD8(u8 palOffset, u16 speciesId); -void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y); +void ListMenu_LoadMonIconPalette(u8 palOffset, u16 speciesId); +void ListMenu_DrawMonIconGraphics(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y); void ListMenuLoadStdPalAt(u8 palOffset, u8 palId); void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y); diff --git a/include/pokedex.h b/include/pokedex.h index aad4849de..12f03e87d 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -48,6 +48,6 @@ bool16 HasAllHoennMons(void); bool16 HasAllKantoMons(void); bool16 HasAllMons(void); -u8 sub_8106B60(u16 species); +u8 DexScreen_RegisterMonToPokedex(u16 species); #endif // GUARD_POKEDEX_H diff --git a/include/pokedex_area_markers.h b/include/pokedex_area_markers.h index 47bbdf486..a9669a80a 100644 --- a/include/pokedex_area_markers.h +++ b/include/pokedex_area_markers.h @@ -12,8 +12,8 @@ struct PAM_TaskData }; void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites); -void sub_81343F4(u8 taskId); -u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y); -u8 sub_81344E0(u8 taskId); +void Dtor_PokedexAreaMarkers(u8 taskId); +u8 Ctor_PokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y); +u8 PokedexAreaMarkers_Any(u8 taskId); #endif //GUARD_POKEDEX_AREA_MARKERS_H diff --git a/include/pokedex_screen.h b/include/pokedex_screen.h index 128fc1ad3..a93e0ffcd 100644 --- a/include/pokedex_screen.h +++ b/include/pokedex_screen.h @@ -1,21 +1,31 @@ #ifndef GUARD_POKEDEX_SCREEN_H #define GUARD_POKEDEX_SCREEN_H -#define DEX_CATEGORY_GRASSLAND 0 -#define DEX_CATEGORY_FOREST 1 -#define DEX_CATEGORY_WATERS_EDGE 2 -#define DEX_CATEGORY_SEA 3 -#define DEX_CATEGORY_CAVE 4 -#define DEX_CATEGORY_MOUNTAIN 5 -#define DEX_CATEGORY_ROUGH_TERRAIN 6 -#define DEX_CATEGORY_URBAN 7 -#define DEX_CATEGORY_RARE 8 +#define DEX_CATEGORY_GRASSLAND 0 +#define DEX_CATEGORY_FOREST 1 +#define DEX_CATEGORY_WATERS_EDGE 2 +#define DEX_CATEGORY_SEA 3 +#define DEX_CATEGORY_CAVE 4 +#define DEX_CATEGORY_MOUNTAIN 5 +#define DEX_CATEGORY_ROUGH_TERRAIN 6 +#define DEX_CATEGORY_URBAN 7 +#define DEX_CATEGORY_RARE 8 +#define DEX_CATEGORY_COUNT 9 + +#define DEX_ORDER_NUMERICAL_KANTO 0 +#define DEX_ORDER_ATOZ 1 +#define DEX_ORDER_TYPE 2 +#define DEX_ORDER_LIGHTEST 3 +#define DEX_ORDER_SMALLEST 4 +#define DEX_ORDER_NUMERICAL_NATIONAL 5 + +#define DEX_MODE(name) (DEX_CATEGORY_COUNT + DEX_ORDER_##name) #include "pokedex.h" extern const struct PokedexEntry gPokedexEntries[]; void CB2_OpenPokedexFromStartMenu(void); -s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies); +s8 DexScreen_GetSetPokedexFlag(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies); #endif //GUARD_POKEDEX_SCREEN_H diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 54452e3c1..f040d9419 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -9179,7 +9179,7 @@ static void atkF2_displaydexinfo(void) if (!gPaletteFade.active) { FreeAllWindowBuffers(); - gBattleCommunication[TASK_ID] = sub_8106B60(species); + gBattleCommunication[TASK_ID] = DexScreen_RegisterMonToPokedex(species); ++gBattleCommunication[0]; } break; diff --git a/src/graphics.c b/src/graphics.c index fb9caf1e0..c5af3c0be 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1245,8 +1245,8 @@ const u32 gEasyChatRedRectangularCursor_Tiles[] = INCBIN_U32("graphics/interface const u16 gPokeSummary_StatusAilmentIconPals[] = INCBIN_U16("graphics/interface/link_rfu_frame.gbapal"); const u32 gPokeSummary_StatusAilmentIconTiles[] = INCBIN_U32("graphics/interface/link_rfu_status.4bpp.lz"); -const u16 gUnknown_8E9C14C[] = INCBIN_U16("graphics/interface/pokedex_abc.gbapal"); -const u16 gUnknown_8E9C16C[] = INCBIN_U16("graphics/interface/pokedex_abc.4bpp.lz"); +const u16 gDexScreen_TopMenuIconPals_AtoZ[] = INCBIN_U16("graphics/interface/pokedex_abc.gbapal"); +const u32 gDexScreen_TopMenuIconTiles_AtoZ[] = INCBIN_U32("graphics/interface/pokedex_abc.4bpp.lz"); const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); const u16 gUnknown_8E9C3F8[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal"); diff --git a/src/list_menu.c b/src/list_menu.c index 5d3cb037f..b032ae012 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -748,12 +748,12 @@ void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value) } } -void sub_8107CD8(u8 palOffset, u16 speciesId) +void ListMenu_LoadMonIconPalette(u8 palOffset, u16 speciesId) { LoadPalette(GetValidMonIconPalettePtr(speciesId), palOffset, 0x20); } -void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y) +void ListMenu_DrawMonIconGraphics(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y) { BlitBitmapToWindow(windowId, GetMonIconPtr(speciesId, personality, 1), x, y, 32, 32); } diff --git a/src/pokedex.c b/src/pokedex.c index c49767ea9..e3e83c3c4 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -22,7 +22,7 @@ u16 GetPokedexHeightWeight(u16 dexNum, u8 data) s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) { - return sub_8104AB0(nationalDexNo, caseID, 0); + return DexScreen_GetSetPokedexFlag(nationalDexNo, caseID, 0); } u16 GetNationalPokedexCount(u8 caseID) diff --git a/src/pokedex_area_markers.c b/src/pokedex_area_markers.c index a47d6876d..d51efcec9 100644 --- a/src/pokedex_area_markers.c +++ b/src/pokedex_area_markers.c @@ -5,8 +5,8 @@ #include "wild_pokemon_area.h" #include "pokedex_area_markers.h" -static const u16 sMarkerPal[] = INCBIN_U16("graphics/pokedex/area_markers/marker.gbapal"); -static const u32 sMarkerTiles[] = INCBIN_U32("graphics/pokedex/area_markers/marker.4bpp.lz"); +static const u16 sMarkerPal[] = INCBIN_U16("graphics/pokedex_area_markers/marker.gbapal"); +static const u32 sMarkerTiles[] = INCBIN_U32("graphics/pokedex_area_markers/marker.4bpp.lz"); static const struct Subsprite sSubsprite0 = { .size = ST_OAM_SIZE_0, @@ -157,7 +157,7 @@ static void Task_ShowAreaMarkers(u8 taskId) gSprites[data->spr_id].invisible = FALSE; } -u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y) +u8 Ctor_PokedexAreaMarkers(u16 species, u16 tilesTag, u8 palIdx, u8 y) { struct SpriteTemplate spriteTemplate; struct CompressedSpriteSheet spriteSheet; @@ -201,7 +201,7 @@ u8 sub_8134230(u16 species, u16 tilesTag, u8 palIdx, u8 y) return taskId; } -void sub_81343F4(u8 taskId) +void Dtor_PokedexAreaMarkers(u8 taskId) { struct PAM_TaskData * data = (void *)gTasks[taskId].data; FreeSpriteTilesByTag(data->tilesTag); @@ -228,7 +228,7 @@ void SetAreaSubsprite(s32 i, s32 whichArea, struct Subsprite * subsprites) subsprites[i].y = sSubspriteLookupTable[whichArea][2]; } -u8 sub_81344E0(u8 taskId) +u8 PokedexAreaMarkers_Any(u8 taskId) { struct PAM_TaskData * data = (void *)gTasks[taskId].data; return data->subsprites.subspriteCount; diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 3c05010ae..5ea31f3d9 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -20,58 +20,64 @@ #include "pokedex_area_markers.h" #include "field_specials.h" +enum TextMode { + TEXT_LEFT, + TEXT_CENTER, + TEXT_RIGHT +}; + struct PokedexScreenData { - u8 field_00; - u8 field_01; - u8 field_02[4]; - u32 field_08; - u32 field_0C; - u16 field_10; - u16 field_12; - u8 field_14; - u8 field_15; - u8 field_16; - u8 field_17; - u16 field_18[4]; - u8 field_20[4]; - u8 field_24[4]; - u8 field_28; - u8 field_29; - u8 field_2A; - u8 field_2B; - u8 field_2C; - u8 field_2D; - u8 field_2E; - u8 field_2F; - u32 field_30; - u16 field_34; - u16 field_36; - u16 field_38; - u16 field_3A; - u16 field_3C; - u16 field_3E; - u8 field_40; - u8 field_41; - u8 field_42; - struct ListMenuItem * field_44; - u16 field_48; - u8 field_4A[0x10]; - u16 field_5A; - u16 * field_5C; - u8 field_60; - u8 field_61; - u16 field_62; - u8 field_64; - u16 field_66; - u16 field_68; - u16 field_6A; - u16 field_6C; + u8 taskId; + u8 state; + u8 data[4]; + u32 unlockedCategories; + u32 modeSelectInput; + u16 modeSelectItemsAbove; + u16 modeSelectCursorPos; + u8 modeSelectWindowId; + u8 selectionIconWindowId; + u8 dexCountsWindowId; + u8 modeSelectListMenuId; + u16 pageSpecies[4]; + u8 categoryMonWindowIds[4]; + u8 categoryMonInfoWindowIds[4]; + u8 category; + u8 firstPageInCategory; + u8 lastPageInCategory; + u8 pageNum; + u8 numMonsOnPage; + u8 categoryCursorPosInPage; + u8 categoryPageSelectionCursorTimer; + u8 parentOfCategoryMenu; + u32 characteristicMenuInput; + u16 kantoOrderMenuItemsAbove; + u16 kantoOrderMenuCursorPos; + u16 characteristicOrderMenuItemsAbove; + u16 characteristicOrderMenuCursorPos; + u16 nationalOrderMenuItemsAbove; + u16 nationalOrderMenuCursorPos; + u8 numericalOrderWindowId; + u8 orderedListMenuTaskId; + u8 dexOrderId; + struct ListMenuItem * listItems; + u16 orderedDexCount; + u8 windowIds[0x10]; + u16 dexSpecies; + u16 * bgBufsMem; + u8 scrollArrowsTaskId; + u8 categoryPageCursorTaskId; + u16 modeSelectCursorPosBak; + u8 unlockedSeviiAreas; + u16 numSeenKanto; + u16 numOwnedKanto; + u16 numSeenNational; + u16 numOwnedNational; }; struct PokedexScreenWindowGfx { - const u16 * map; + const u32 * tiles; const u16 * pal; }; @@ -81,61 +87,61 @@ struct PokedexCategoryPage u8 count; }; -EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL; +EWRAM_DATA static struct PokedexScreenData * sPokedexScreenData = NULL; -static void sub_810287C(u8 taskId); -static void sub_8102C28(void); -static void sub_8102F80(u8 taskId); -static void sub_810317C(void); -static void sub_8103238(u8 taskId); -static void sub_810345C(void); -static u16 sub_8103518(u8 a0); -static void sub_8103924(const struct ListMenuTemplate * a0, u8 a1); -static u8 sub_81039F0(void); -static void sub_8103988(u8 a0); -static void sub_8103AC8(u8 taskId); -static u8 sub_8104234(void); -static int sub_8104284(void); -static void sub_81042EC(u8 taskId); -static bool32 sub_8104664(u8 a0); -void sub_81047B0(u8 *windowId_p); -void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx); -static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx); -void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y); -static u16 sub_8104BBC(u8 caseId, bool8 whichDex); -void sub_8104C2C(const u8 *src); -void sub_8104E90(void); -bool8 sub_8104F0C(bool8 a0); -void sub_8105058(u8 a0); -void sub_8105178(u8 a0, u8 a1, u8 a2); -static bool8 sub_81052D0(u8 a0); -void sub_8105594(u8 a0, u8 a1); -u8 sub_8105E1C(u8 a0); -u8 sub_8106014(void); -u8 sub_810603C(void); -bool8 sub_8106838(u8 category, u8 a1); -u8 sub_81068A0(u8 a0); -u8 sub_810699C(u8 category); -bool8 sub_8106A20(u16 a0); -u8 sub_81067C0(void); -void sub_81068DC(u8 category, u8 a1); -u8 sub_8106AF8(u16 a0); -void sub_8106B34(void); -void sub_8106E78(const u8 *a0, s32 a1); -static void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list); -static void sub_8102F48(u8 windowId, s32 itemId, u8 y); -static void sub_8103A40(u8 windowId, s32 itemId, u8 y); -static void sub_8106BD8(u8 taskId); -static void sub_8106BE8(u8 taskId); +static void Task_PokedexScreen(u8 taskId); +static void DexScreen_InitGfxForTopMenu(void); +static void Task_DexScreen_NumericalOrder(u8 taskId); +static void DexScreen_InitGfxForNumericalOrderList(void); +static void Task_DexScreen_CharacteristicOrder(u8 taskId); +static void DexScreen_CreateCharacteristicListMenu(void); +static u16 DexScreen_CountMonsInOrderedList(u8 orderIdx); +static void DexScreen_InitListMenuForOrderedList(const struct ListMenuTemplate * template, u8 order); +static u8 DexScreen_CreateDexOrderScrollArrows(void); +static void DexScreen_DestroyDexOrderListMenu(u8 order); +static void Task_DexScreen_CategorySubmenu(u8 taskId); +static u8 DexScreen_CreateCategoryMenuScrollArrows(void); +static int DexScreen_InputHandler_GetShoulderInput(void); +static void Task_DexScreen_ShowMonPage(u8 taskId); +static bool32 DexScreen_TryScrollMonsVertical(u8 direction); +static void DexScreen_RemoveWindow(u8 *windowId_p); +static void DexScreen_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx); +static void DexScreen_PrintNum3RightAlign(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx); +static void DexScreen_PrintMonDexNo(u8 windowId, u8 fontId, u16 species, u8 x, u8 y); +static u16 DexScreen_GetDexCount(u8 caseId, bool8 whichDex); +static void DexScreen_PrintControlInfo(const u8 *src); +static void DexScreen_DestroyCategoryPageMonIconAndInfoWindows(void); +static bool8 DexScreen_CreateCategoryListGfx(bool8 justRegistered); +static void DexScreen_CreateCategoryPageSelectionCursor(u8 cursorPos); +static void DexScreen_UpdateCategoryPageCursorObject(u8 taskId, u8 cursorPos, u8 numMonsInPage); +static bool8 DexScreen_FlipCategoryPageInDirection(u8 direction); +void DexScreen_DexPageZoomEffectFrame(u8 bg, u8 scale); +static u8 DexScreen_DrawMonDexPage(bool8 justRegistered); +u8 RemoveDexPageWindows(void); +u8 DexScreen_DrawMonAreaPage(void); +static bool8 DexScreen_IsPageUnlocked(u8 category, u8 pageNum); +static bool8 DexScreen_IsCategoryUnlocked(u8 category); +static u8 DexScreen_GetPageLimitsForCategory(u8 category); +static bool8 DexScreen_LookUpCategoryBySpecies(u16 species); +u8 DexScreen_DestroyAreaScreenResources(void); +void DexScreen_CreateCategoryPageSpeciesList(u8 category, u8 pageNum); +static u8 DexScreen_PageNumberToRenderablePages(u16 page); +void DexScreen_InputHandler_StartToCry(void); +void DexScreen_PrintStringWithAlignment(const u8 *str, s32 mode); +static void MoveCursorFunc_DexModeSelect(s32 itemIndex, bool8 onInit, struct ListMenu *list); +static void ItemPrintFunc_DexModeSelect(u8 windowId, s32 itemId, u8 y); +static void ItemPrintFunc_OrderedListMenu(u8 windowId, s32 itemId, u8 y); +static void Task_DexScreen_RegisterNonKantoMonBeforeNationalDex(u8 taskId); +static void Task_DexScreen_RegisterMonToPokedex(u8 taskId); #include "data/pokemon_graphics/footprint_table.h" -const u8 gUnknown_8440124[] = INCBIN_U8("graphics/pokedex/unk_8440124.bin.lz"); -const u8 gUnknown_8440274[] = INCBIN_U8("graphics/pokedex/unk_8440274.4bpp.lz"); -const u8 gUnknown_84403AC[] = INCBIN_U8("graphics/pokedex/unk_84403AC.4bpp.lz"); -const u16 gUnknown_84404C8[] = INCBIN_U16("graphics/pokedex/unk_84404C8.gbapal"); +const u32 sCategoryMonInfoBgTiles[] = INCBIN_U32("graphics/interface/pokedex_mini_page.4bpp.lz"); +const u32 sKantoDexTiles[] = INCBIN_U32("graphics/interface/pokedex_kanto_dex_bgtiles.4bpp.lz"); +const u32 sNatDexTiles[] = INCBIN_U32("graphics/interface/pokedex_national_dex_bgtiles.4bpp.lz"); +const u16 sKantoDexPalette[0x100] = INCBIN_U16("graphics/interface/pokedex_kanto_dex_bgpals.gbapal"); -const u16 gUnknown_84406C8[] = { +const u16 sDexScreen_CategoryCursorPals[] = { RGB(24, 22, 17), RGB(26, 24, 20), RGB(26, 20, 15), RGB(27, 23, 19), RGB(28, 18, 15), RGB(28, 22, 19), @@ -144,47 +150,47 @@ const u16 gUnknown_84406C8[] = { RGB(26, 20, 15), RGB(27, 23, 19) }; -const u16 gUnknown_84406E0[] = INCBIN_U16("graphics/pokedex/unk_84406E0.gbapal"); -const u16 gUnknown_84408E0[] = INCBIN_U16("graphics/pokedex/unk_84408E0.bin.lz"); -const u16 gUnknown_8440BD8[] = INCBIN_U16("graphics/pokedex/unk_8440BD8.bin.lz"); -const u32 gUnknown_8440EF0[] = INCBIN_U32("graphics/pokedex/unk_8440EF0.bin.lz"); -const u16 gUnknown_844112C[] = INCBIN_U16("graphics/pokedex/unk_844112C.bin.lz"); -const u16 gUnknown_84414BC[] = INCBIN_U16("graphics/pokedex/unk_84414BC.bin.lz"); -const u32 gUnknown_8441808[] = INCBIN_U32("graphics/pokedex/unk_8441808.bin.lz"); -const u16 gUnknown_8441A40[] = INCBIN_U16("graphics/pokedex/unk_8441A40.bin.lz"); -const u16 gUnknown_8441D54[] = INCBIN_U16("graphics/pokedex/unk_8441D54.bin.lz"); -const u16 gUnknown_8442004[] = INCBIN_U16("graphics/pokedex/unk_8442004.bin.lz"); -const u16 gUnknown_844223C[] = INCBIN_U16("graphics/pokedex/unk_844223C.bin.lz"); -const u16 gUnknown_84424E4[] = INCBIN_U16("graphics/pokedex/unk_84424E4.bin.lz"); -const u16 gUnknown_8442838[] = INCBIN_U16("graphics/pokedex/unk_8442838.bin.lz"); -const u16 gUnknown_8442BC0[] = INCBIN_U16("graphics/pokedex/unk_8442BC0.bin.lz"); -const u16 gUnknown_8442EF8[] = INCBIN_U16("graphics/pokedex/unk_8442EF8.bin.lz"); -const u16 gUnknown_844318C[] = INCBIN_U16("graphics/pokedex/unk_844318C.bin.lz"); -const u16 gUnknown_8443420[] = INCBIN_U16("graphics/pokedex/unk_8443420.gbapal"); -const u16 gUnknown_8443440[] = INCBIN_U16("graphics/pokedex/unk_8443440.gbapal"); -const u16 gUnknown_8443460[] = INCBIN_U16("graphics/pokedex/unk_8443460.gbapal"); -const u16 gUnknown_8443480[] = INCBIN_U16("graphics/pokedex/unk_8443480.gbapal"); -const u16 gUnknown_84434A0[] = INCBIN_U16("graphics/pokedex/unk_84434A0.gbapal"); -const u16 gUnknown_84434C0[] = INCBIN_U16("graphics/pokedex/unk_84434C0.gbapal"); -const u16 gUnknown_84434E0[] = INCBIN_U16("graphics/pokedex/unk_84434E0.gbapal"); -const u16 gUnknown_8443500[] = INCBIN_U16("graphics/pokedex/unk_8443500.gbapal"); -const u16 gUnknown_8443520[] = INCBIN_U16("graphics/pokedex/unk_8443520.gbapal"); -const u16 gUnknown_8443540[] = INCBIN_U16("graphics/pokedex/unk_8443540.gbapal"); -const u16 gUnknown_8443560[] = INCBIN_U16("graphics/pokedex/unk_8443560.gbapal"); -const u16 gUnknown_8443580[] = INCBIN_U16("graphics/pokedex/unk_8443580.gbapal"); -const u16 gUnknown_84435A0[] = INCBIN_U16("graphics/pokedex/unk_84435A0.gbapal"); -const u16 gUnknown_84435C0[] = INCBIN_U16("graphics/pokedex/unk_84435C0.gbapal"); -const u16 gUnknown_84435E0[] = INCBIN_U16("graphics/pokedex/unk_84435E0.gbapal"); -const u8 gUnknown_8443600[] = INCBIN_U8("graphics/pokedex/unk_8443600.4bpp"); -const u32 gUnknown_8443620[] = INCBIN_U32("graphics/pokedex/unk_8443620.bin.lz"); -const u32 gUnknown_8443910[] = INCBIN_U32("graphics/pokedex/unk_8443910.bin.lz"); -const u32 gUnknown_8443988[] = INCBIN_U32("graphics/pokedex/unk_8443988.bin.lz"); -const u32 gUnknown_84439FC[] = INCBIN_U32("graphics/pokedex/unk_84439FC.bin.lz"); -const u32 gUnknown_8443A78[] = INCBIN_U32("graphics/pokedex/unk_8443A78.bin.lz"); -const u32 gUnknown_8443AF8[] = INCBIN_U32("graphics/pokedex/unk_8443AF8.bin.lz"); -const u32 gUnknown_8443BB0[] = INCBIN_U32("graphics/pokedex/unk_8443BB0.bin.lz"); -const u32 gUnknown_8443C54[] = INCBIN_U32("graphics/pokedex/unk_8443C54.bin.lz"); -const u16 gUnknown_8443D00[] = INCBIN_U16("graphics/pokedex/unk_8443D00.4bpp"); +const u16 sNationalDexPalette[0x100] = INCBIN_U16("graphics/interface/pokedex_national_dex_bgpals.gbapal"); +const u32 sTopMenuIconTiles_Cave[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_cave.4bpp.lz"); +const u32 sTopMenuIconTiles_Urban[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_urban.4bpp.lz"); +const u32 sTopMenuSelectionIconTiles_Cancel[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_cancel.4bpp.lz"); +const u32 sTopMenuIconTiles_Forest[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_forest.4bpp.lz"); +const u32 sTopMenuIconTiles_Grassland[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_grassland.4bpp.lz"); +const u32 sTopMenuIconTiles_QuestionMark[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_qmark.4bpp.lz"); +const u32 sTopMenuIconTiles_Mountain[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_mountain.4bpp.lz"); +const u32 sTopMenuIconTiles_Rare[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_rare.4bpp.lz"); +const u32 sTopMenuIconTiles_Sea[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_sea.4bpp.lz"); +const u32 sTopMenuIconTiles_Numerical[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_numerical.4bpp.lz"); +const u32 sTopMenuIconTiles_RoughTerrain[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_rough_terrain.4bpp.lz"); +const u32 sTopMenuIconTiles_WatersEdge[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_waters_edge.4bpp.lz"); +const u32 sTopMenuIconTiles_Type[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_type.4bpp.lz"); +const u32 sTopMenuIconTiles_Lightest[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_lightest.4bpp.lz"); +const u32 sTopMenuIconTiles_Smallest[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_smallest.4bpp.lz"); +const u16 sTopMenuIconPals_Cave[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_cave.gbapal"); +const u16 sTopMenuIconPals_Urban[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_urban.gbapal"); +const u16 sTopMenuSelectionIconPals_Cancel[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_cancel.gbapal"); +const u16 sTopMenuIconPals_Forest[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_forest.gbapal"); +const u16 sTopMenuIconPals_Grassland[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_grassland.gbapal"); +const u16 sTopMenuIconPals_QuestionMark[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_qmark.gbapal"); +const u16 sTopMenuIconPals_Mountain[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_mountain.gbapal"); +const u16 sTopMenuIconPals_Rare[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_rare.gbapal"); +const u16 sTopMenuIconPals_Sea[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_sea.gbapal"); +const u16 sTopMenuIconPals_Numerical[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_numerical.gbapal"); +const u16 sTopMenuIconPals_RoughTerrain[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_rough_terrain.gbapal"); +const u16 sTopMenuIconPals_WatersEdge[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_waters_edge.gbapal"); +const u16 sTopMenuIconPals_Type[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_type.gbapal"); +const u16 sTopMenuIconPals_Lightest[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_lightest.gbapal"); +const u16 sTopMenuIconPals_Smallest[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_smallest.gbapal"); +const u8 sDexScreen_CaughtIcon[] = INCBIN_U8("graphics/interface/pokedex_caught_marker.4bpp"); +const u32 sTilemap_AreaMap_Kanto[] = INCBIN_U32("graphics/interface/pokedex_map_kanto.4bpp.lz"); +const u32 sTilemap_AreaMap_OneIsland[] = INCBIN_U32("graphics/interface/pokedex_map_one_island.4bpp.lz"); +const u32 sTilemap_AreaMap_TwoIsland[] = INCBIN_U32("graphics/interface/pokedex_map_two_island.4bpp.lz"); +const u32 sTilemap_AreaMap_ThreeIsland[] = INCBIN_U32("graphics/interface/pokedex_map_three_island.4bpp.lz"); +const u32 sTilemap_AreaMap_FourIsland[] = INCBIN_U32("graphics/interface/pokedex_map_four_island.4bpp.lz"); +const u32 sTilemap_AreaMap_FiveIsland[] = INCBIN_U32("graphics/interface/pokedex_map_five_island.4bpp.lz"); +const u32 sTilemap_AreaMap_SixIsland[] = INCBIN_U32("graphics/interface/pokedex_map_six_island.4bpp.lz"); +const u32 sTilemap_AreaMap_SevenIsland[] = INCBIN_U32("graphics/interface/pokedex_map_seven_island.4bpp.lz"); +const u16 sBlitTiles_WideEllipse[] = INCBIN_U16("graphics/interface/pokedex_blit_wide_ellipse.4bpp"); #include "data/pokemon/pokedex_orders.h" @@ -193,7 +199,7 @@ static const u8 gExpandedPlaceholder_PokedexDescription[] = _(""); #include "data/pokemon/pokedex_text.h" #include "data/pokemon/pokedex_entries.h" -static const struct BgTemplate sUnknown_8451EBC[] = { +static const struct BgTemplate sBgTemplates[] = { { .bg = 0, .charBaseIndex = 0, @@ -232,7 +238,7 @@ static const struct BgTemplate sUnknown_8451EBC[] = { }, }; -static const struct WindowTemplate sUnknown_8451ECC[] = { +static const struct WindowTemplate sWindowTemplates[] = { { .bg = 0, .tilemapLeft = 0, @@ -262,82 +268,82 @@ static const struct WindowTemplate sUnknown_8451ECC[] = { }, }; -static const struct PokedexScreenData sUnknown_8451EE4 = { - .field_10 = 1, - .field_14 = -1, - .field_15 = -1, - .field_16 = -1, - .field_18 = {-1, -1, -1, -1}, - .field_20 = {-1, -1, -1, -1}, - .field_24 = {-1, -1, -1, -1}, - .field_40 = -1, - .field_4A = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, - .field_60 = -1, - .field_61 = -1, +static const struct PokedexScreenData sDexScreenDataInitialState = { + .modeSelectItemsAbove = 1, + .modeSelectWindowId = -1, + .selectionIconWindowId = -1, + .dexCountsWindowId = -1, + .pageSpecies = {-1, -1, -1, -1}, + .categoryMonWindowIds = {-1, -1, -1, -1}, + .categoryMonInfoWindowIds = {-1, -1, -1, -1}, + .numericalOrderWindowId = -1, + .windowIds = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, + .scrollArrowsTaskId = -1, + .categoryPageCursorTaskId = -1, }; -static const struct WindowTemplate sUnknown_8451F54 = { - .bg = 1, - .tilemapLeft = 1, - .tilemapTop = 2, - .width = 20, - .height = 16, - .paletteNum = 0, - .baseBlock = 0x0008 - }; - -static const struct WindowTemplate sUnknown_8451F5C = { - .bg = 1, - .tilemapLeft = 21, - .tilemapTop = 11, - .width = 8, - .height = 6, - .paletteNum = 1, - .baseBlock = 0x0148 - }; - -static const struct WindowTemplate sUnknown_8451F64 = { - .bg = 1, - .tilemapLeft = 21, - .tilemapTop = 2, - .width = 9, - .height = 9, - .paletteNum = 0, - .baseBlock = 0x0178 - }; - -static const struct ListMenuItem sUnknown_8451F6C[] = { - {gText_PokemonList, -3}, - {gText_NumericalMode, 9}, - {gText_PokemonHabitats, -3}, - {gText_DexCategory_GrasslandPkmn, 0}, - {gText_DexCategory_ForestPkmn, 1}, - {gText_DexCategory_WatersEdgePkmn, 2}, - {gText_DexCategory_SeaPkmn, 3}, - {gText_DexCategory_CavePkmn, 4}, - {gText_DexCategory_MountainPkmn, 5}, - {gText_DexCategory_RoughTerrainPkmn, 6}, - {gText_DexCategory_UrbanPkmn, 7}, - {gText_DexCategory_RarePkmn, 8}, - {gText_Search, -3}, - {gText_AToZMode, 10}, - {gText_TypeMode, 11}, - {gText_LightestMode, 12}, - {gText_SmallestMode, 13}, - {gText_PokedexOther, -3}, - {gText_ClosePokedex, -2}, +static const struct WindowTemplate sWindowTemplate_ModeSelect = { + .bg = 1, + .tilemapLeft = 1, + .tilemapTop = 2, + .width = 20, + .height = 16, + .paletteNum = 0, + .baseBlock = 0x0008 }; -static const struct ListMenuTemplate sUnknown_8452004 = { - .items = sUnknown_8451F6C, - .moveCursorFunc = sub_8102EC0, - .itemPrintFunc = sub_8102F48, - .totalItems = NELEMS(sUnknown_8451F6C), +static const struct WindowTemplate sWindowTemplate_SelectionIcon = { + .bg = 1, + .tilemapLeft = 21, + .tilemapTop = 11, + .width = 8, + .height = 6, + .paletteNum = 1, + .baseBlock = 0x0148 +}; + +static const struct WindowTemplate sWindowTemplate_DexCounts = { + .bg = 1, + .tilemapLeft = 21, + .tilemapTop = 2, + .width = 9, + .height = 9, + .paletteNum = 0, + .baseBlock = 0x0178 +}; + +static const struct ListMenuItem sListMenuItems_KantoDexModeSelect[] = { + {gText_PokemonList, LIST_HEADER}, + {gText_NumericalMode, DEX_MODE(NUMERICAL_KANTO)}, + {gText_PokemonHabitats, LIST_HEADER}, + {gText_DexCategory_GrasslandPkmn, DEX_CATEGORY_GRASSLAND}, + {gText_DexCategory_ForestPkmn, DEX_CATEGORY_FOREST}, + {gText_DexCategory_WatersEdgePkmn, DEX_CATEGORY_WATERS_EDGE}, + {gText_DexCategory_SeaPkmn, DEX_CATEGORY_SEA}, + {gText_DexCategory_CavePkmn, DEX_CATEGORY_CAVE}, + {gText_DexCategory_MountainPkmn, DEX_CATEGORY_MOUNTAIN}, + {gText_DexCategory_RoughTerrainPkmn, DEX_CATEGORY_ROUGH_TERRAIN}, + {gText_DexCategory_UrbanPkmn, DEX_CATEGORY_URBAN}, + {gText_DexCategory_RarePkmn, DEX_CATEGORY_RARE}, + {gText_Search, LIST_HEADER}, + {gText_AToZMode, DEX_MODE(ATOZ)}, + {gText_TypeMode, DEX_MODE(TYPE)}, + {gText_LightestMode, DEX_MODE(LIGHTEST)}, + {gText_SmallestMode, DEX_MODE(SMALLEST)}, + {gText_PokedexOther, LIST_HEADER}, + {gText_ClosePokedex, LIST_CANCEL}, +}; + +static const struct ListMenuTemplate sListMenuTemplate_KantoDexModeSelect = { + .items = sListMenuItems_KantoDexModeSelect, + .moveCursorFunc = MoveCursorFunc_DexModeSelect, + .itemPrintFunc = ItemPrintFunc_DexModeSelect, + .totalItems = NELEMS(sListMenuItems_KantoDexModeSelect), .maxShowed = 9, - .windowId = 0, - .header_X = 0, - .item_X = 12, + .windowId = 0, + .header_X = 0, + .item_X = 12, .cursor_X = 4, .upText_Y = 2, .cursorPal = 1, @@ -350,38 +356,38 @@ static const struct ListMenuTemplate sUnknown_8452004 = { .cursorKind = 0, }; -static const struct ListMenuItem sUnknown_845201C[] = { - {gText_PokemonList, -3}, - {gText_NumericalModeKanto, 9}, - {gText_NumericalModeNational, 14}, - {gText_PokemonHabitats, -3}, - {gText_DexCategory_GrasslandPkmn, 0}, - {gText_DexCategory_ForestPkmn, 1}, - {gText_DexCategory_WatersEdgePkmn, 2}, - {gText_DexCategory_SeaPkmn, 3}, - {gText_DexCategory_CavePkmn, 4}, - {gText_DexCategory_MountainPkmn, 5}, - {gText_DexCategory_RoughTerrainPkmn, 6}, - {gText_DexCategory_UrbanPkmn, 7}, - {gText_DexCategory_RarePkmn, 8}, - {gText_Search, -3}, - {gText_AToZMode, 10}, - {gText_TypeMode, 11}, - {gText_LightestMode, 12}, - {gText_SmallestMode, 13}, - {gText_PokedexOther, -3}, - {gText_ClosePokedex, -2}, +static const struct ListMenuItem sListMenuItems_NatDexModeSelect[] = { + {gText_PokemonList, LIST_HEADER}, + {gText_NumericalModeKanto, DEX_MODE(NUMERICAL_KANTO)}, + {gText_NumericalModeNational, DEX_MODE(NUMERICAL_NATIONAL)}, + {gText_PokemonHabitats, LIST_HEADER}, + {gText_DexCategory_GrasslandPkmn, DEX_CATEGORY_GRASSLAND}, + {gText_DexCategory_ForestPkmn, DEX_CATEGORY_FOREST}, + {gText_DexCategory_WatersEdgePkmn, DEX_CATEGORY_WATERS_EDGE}, + {gText_DexCategory_SeaPkmn, DEX_CATEGORY_SEA}, + {gText_DexCategory_CavePkmn, DEX_CATEGORY_CAVE}, + {gText_DexCategory_MountainPkmn, DEX_CATEGORY_MOUNTAIN}, + {gText_DexCategory_RoughTerrainPkmn, DEX_CATEGORY_ROUGH_TERRAIN}, + {gText_DexCategory_UrbanPkmn, DEX_CATEGORY_URBAN}, + {gText_DexCategory_RarePkmn, DEX_CATEGORY_RARE}, + {gText_Search, LIST_HEADER}, + {gText_AToZMode, DEX_MODE(ATOZ)}, + {gText_TypeMode, DEX_MODE(TYPE)}, + {gText_LightestMode, DEX_MODE(LIGHTEST)}, + {gText_SmallestMode, DEX_MODE(SMALLEST)}, + {gText_PokedexOther, LIST_HEADER}, + {gText_ClosePokedex, LIST_CANCEL}, }; -static const struct ListMenuTemplate sUnknown_84520BC = { - .items = sUnknown_845201C, - .moveCursorFunc = sub_8102EC0, - .itemPrintFunc = sub_8102F48, - .totalItems = NELEMS(sUnknown_845201C), +static const struct ListMenuTemplate sListMenuTemplate_NatDexModeSelect = { + .items = sListMenuItems_NatDexModeSelect, + .moveCursorFunc = MoveCursorFunc_DexModeSelect, + .itemPrintFunc = ItemPrintFunc_DexModeSelect, + .totalItems = NELEMS(sListMenuItems_NatDexModeSelect), .maxShowed = 9, - .windowId = 0, - .header_X = 0, - .item_X = 12, + .windowId = 0, + .header_X = 0, + .item_X = 12, .cursor_X = 4, .upText_Y = 2, .cursorPal = 1, @@ -394,54 +400,99 @@ static const struct ListMenuTemplate sUnknown_84520BC = { .cursorKind = 0, }; -static const struct ScrollArrowsTemplate sUnknown_84520D4 = { - .firstArrowType = 2, - .firstX = 200, - .firstY = 19, - .secondArrowType = 3, - .secondX = 200, +static const struct ScrollArrowsTemplate sScrollArrowsTemplate_KantoDex = { + .firstArrowType = 2, + .firstX = 200, + .firstY = 19, + .secondArrowType = 3, + .secondX = 200, .secondY = 141, - .fullyUpThreshold = 0, - .fullyDownThreshold = 10, - .tileTag = 2000, + .fullyUpThreshold = 0, + .fullyDownThreshold = 10, + .tileTag = 2000, .palTag = 0xFFFF, .palNum = 1 }; -static const struct ScrollArrowsTemplate sUnknown_84520E4 = { - .firstArrowType = 2, - .firstX = 200, - .firstY = 19, - .secondArrowType = 3, - .secondX = 200, +static const struct ScrollArrowsTemplate sScrollArrowsTemplate_NatDex = { + .firstArrowType = 2, + .firstX = 200, + .firstY = 19, + .secondArrowType = 3, + .secondX = 200, .secondY = 141, - .fullyUpThreshold = 0, - .fullyDownThreshold = 11, - .tileTag = 2000, + .fullyUpThreshold = 0, + .fullyDownThreshold = 11, + .tileTag = 2000, .palTag = 0xFFFF, .palNum = 1 }; -static const struct PokedexScreenWindowGfx sUnknown_84520F4[] = { - {.map = gUnknown_84414BC, .pal = gUnknown_84434A0}, - {.map = gUnknown_844112C, .pal = gUnknown_8443480}, - {.map = gUnknown_8442838, .pal = gUnknown_8443580}, - {.map = gUnknown_8442004, .pal = gUnknown_8443520}, - {.map = gUnknown_84408E0, .pal = gUnknown_8443420}, - {.map = gUnknown_8441A40, .pal = gUnknown_84434E0}, - {.map = gUnknown_84424E4, .pal = gUnknown_8443560}, - {.map = gUnknown_8440BD8, .pal = gUnknown_8443440}, - {.map = gUnknown_8441D54, .pal = gUnknown_8443500}, - {.map = gUnknown_844223C, .pal = gUnknown_8443540}, - {.map = gUnknown_8E9C16C, .pal = gUnknown_8E9C14C}, - {.map = gUnknown_8442BC0, .pal = gUnknown_84435A0}, - {.map = gUnknown_8442EF8, .pal = gUnknown_84435C0}, - {.map = gUnknown_844318C, .pal = gUnknown_84435E0}, - {.map = gUnknown_844223C, .pal = gUnknown_8443540}, +static const struct PokedexScreenWindowGfx sTopMenuSelectionIconGfxPtrs[] = { + [DEX_CATEGORY_GRASSLAND] = { + .tiles = sTopMenuIconTiles_Grassland, + .pal = sTopMenuIconPals_Grassland + }, + [DEX_CATEGORY_FOREST] = { + .tiles = sTopMenuIconTiles_Forest, + .pal = sTopMenuIconPals_Forest + }, + [DEX_CATEGORY_WATERS_EDGE] = { + .tiles = sTopMenuIconTiles_WatersEdge, + .pal = sTopMenuIconPals_WatersEdge + }, + [DEX_CATEGORY_SEA] = { + .tiles = sTopMenuIconTiles_Sea, + .pal = sTopMenuIconPals_Sea + }, + [DEX_CATEGORY_CAVE] = { + .tiles = sTopMenuIconTiles_Cave, + .pal = sTopMenuIconPals_Cave + }, + [DEX_CATEGORY_MOUNTAIN] = { + .tiles = sTopMenuIconTiles_Mountain, + .pal = sTopMenuIconPals_Mountain + }, + [DEX_CATEGORY_ROUGH_TERRAIN] = { + .tiles = sTopMenuIconTiles_RoughTerrain, + .pal = sTopMenuIconPals_RoughTerrain + }, + [DEX_CATEGORY_URBAN] = { + .tiles = sTopMenuIconTiles_Urban, + .pal = sTopMenuIconPals_Urban + }, + [DEX_CATEGORY_RARE] = { + .tiles = sTopMenuIconTiles_Rare, + .pal = sTopMenuIconPals_Rare + }, + [DEX_MODE(NUMERICAL_KANTO)] = { + .tiles = sTopMenuIconTiles_Numerical, + .pal = sTopMenuIconPals_Numerical + }, + [DEX_MODE(ATOZ)] = { + .tiles = gDexScreen_TopMenuIconTiles_AtoZ, + .pal = gDexScreen_TopMenuIconPals_AtoZ + }, + [DEX_MODE(TYPE)] = { + .tiles = sTopMenuIconTiles_Type, + .pal = sTopMenuIconPals_Type + }, + [DEX_MODE(LIGHTEST)] = { + .tiles = sTopMenuIconTiles_Lightest, + .pal = sTopMenuIconPals_Lightest + }, + [DEX_MODE(SMALLEST)] = { + .tiles = sTopMenuIconTiles_Smallest, + .pal = sTopMenuIconPals_Smallest + }, + [DEX_MODE(NUMERICAL_NATIONAL)] = { + .tiles = sTopMenuIconTiles_Numerical, + .pal = sTopMenuIconPals_Numerical + }, }; -static const struct WindowTemplate sUnknown_845216C = { +static const struct WindowTemplate sWindowTemplate_OrderedListMenu = { .bg = 1, .tilemapLeft = 2, .tilemapTop = 2, @@ -451,15 +502,15 @@ static const struct WindowTemplate sUnknown_845216C = { .baseBlock = 0x0008 }; -static const struct ListMenuTemplate sUnknown_8452174 = { - .items = sUnknown_8451F6C, +static const struct ListMenuTemplate sListMenuTemplate_OrderedListMenu = { + .items = sListMenuItems_KantoDexModeSelect, .moveCursorFunc = ListMenuDefaultCursorMoveFunc, - .itemPrintFunc = sub_8103A40, - .totalItems = 0, + .itemPrintFunc = ItemPrintFunc_OrderedListMenu, + .totalItems = 0, .maxShowed = 9, - .windowId = 0, - .header_X = 0, - .item_X = 56, + .windowId = 0, + .header_X = 0, + .item_X = 56, .cursor_X = 4, .upText_Y = 2, .cursorPal = 1, @@ -472,37 +523,55 @@ static const struct ListMenuTemplate sUnknown_8452174 = { .cursorKind = 0, }; -static const struct ListMenuWindowRect sUnknown_845218C = { - .x = 0, - .y = 0, - .width = 5, - .height = 16, - .palNum = 0, +static const struct ListMenuWindowRect sListMenuRects_OrderedList[] = { + { + .x = 0, + .y = 0, + .width = 5, + .height = 16, + .palNum = 0 + }, { + .x = 5, + .y = 0, + .width = 2, + .height = 16, + .palNum = 1 + }, { + .x = 7, + .y = 0, + .width = 8, + .height = 16, + .palNum = 0 + }, { + .x = 15, + .y = 0, + .width = 8, + .height = 16, + .palNum = 2, + }, { + .x = 0xFF, + .y = 0xFF, + .width = 0xFF, + .height = 0xFF, + .palNum = 0xFF + } }; -// Unused -static const u8 gUnknown_8452194[] = { - 0x05, 0x00, 0x02, 0x10, 0x01, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x0f, 0x00, 0x08, 0x10, 0x02, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 -}; - -static const struct ScrollArrowsTemplate sUnknown_84521B4 = { - .firstArrowType = 2, - .firstX = 200, - .firstY = 19, - .secondArrowType = 3, - .secondX = 200, +static const struct ScrollArrowsTemplate sDexOrderScrollArrowsTemplate = { + .firstArrowType = 2, + .firstX = 200, + .firstY = 19, + .secondArrowType = 3, + .secondX = 200, .secondY = 141, - .fullyUpThreshold = 0, - .fullyDownThreshold = 0, - .tileTag = 2000, + .fullyUpThreshold = 0, + .fullyDownThreshold = 0, + .tileTag = 2000, .palTag = 0xFFFF, .palNum = 1, }; -static const struct WindowTemplate sUnknown_84521C4 = { +static const struct WindowTemplate sWindowTemplate_CategoryMonIcon = { .bg = 2, .tilemapLeft = 0, .tilemapTop = 0, @@ -512,7 +581,7 @@ static const struct WindowTemplate sUnknown_84521C4 = { .baseBlock = 0x0000 }; -static const struct WindowTemplate sUnknown_84521CC = { +static const struct WindowTemplate sWindowTemplate_CategoryMonInfo = { .bg = 1, .tilemapLeft = 0, .tilemapTop = 0, @@ -522,7 +591,7 @@ static const struct WindowTemplate sUnknown_84521CC = { .baseBlock = 0x0000 }; -const struct WindowTemplate gUnknown_84521D4 = { +const struct WindowTemplate sWindowTemplate_DexEntry_MonPic = { .bg = 1, .tilemapLeft = 19, .tilemapTop = 3, @@ -532,7 +601,7 @@ const struct WindowTemplate gUnknown_84521D4 = { .baseBlock = 0x01a8 }; -const struct WindowTemplate gUnknown_84521DC = { +const struct WindowTemplate sWindowTemplate_DexEntry_SpeciesStats = { .bg = 1, .tilemapLeft = 2, .tilemapTop = 3, @@ -542,7 +611,7 @@ const struct WindowTemplate gUnknown_84521DC = { .baseBlock = 0x01e8 }; -const struct WindowTemplate gUnknown_84521E4 = { +const struct WindowTemplate sWindowTemplate_DexEntry_FlavorText = { .bg = 1, .tilemapLeft = 0, .tilemapTop = 11, @@ -552,7 +621,7 @@ const struct WindowTemplate gUnknown_84521E4 = { .baseBlock = 0x0250 }; -const struct WindowTemplate gUnknown_84521EC = { +const struct WindowTemplate sWindowTemplate_AreaMap_MonIcon = { .bg = 2, .tilemapLeft = 1, .tilemapTop = 2, @@ -562,7 +631,7 @@ const struct WindowTemplate gUnknown_84521EC = { .baseBlock = 0x01a8 }; -const struct WindowTemplate gUnknown_84521F4 = { +const struct WindowTemplate sWindowTemplate_AreaMap_SpeciesName = { .bg = 2, .tilemapLeft = 5, .tilemapTop = 2, @@ -572,7 +641,7 @@ const struct WindowTemplate gUnknown_84521F4 = { .baseBlock = 0x01b8 }; -const struct WindowTemplate gUnknown_84521FC = { +const struct WindowTemplate sWindowTemplate_AreaMap_Size = { .bg = 2, .tilemapLeft = 2, .tilemapTop = 7, @@ -582,7 +651,7 @@ const struct WindowTemplate gUnknown_84521FC = { .baseBlock = 0x01d0 }; -const struct WindowTemplate gUnknown_8452204 = { +const struct WindowTemplate sWindowTemplate_AreaMap_Area = { .bg = 2, .tilemapLeft = 18, .tilemapTop = 2, @@ -592,7 +661,7 @@ const struct WindowTemplate gUnknown_8452204 = { .baseBlock = 0x01e4 }; -const struct WindowTemplate gUnknown_845220C = { +const struct WindowTemplate sWindowTemplate_AreaMap_MonTypes = { .bg = 2, .tilemapLeft = 5, .tilemapTop = 5, @@ -602,7 +671,7 @@ const struct WindowTemplate gUnknown_845220C = { .baseBlock = 0x01f8 }; -const struct WindowTemplate gUnknown_8452214 = { +const struct WindowTemplate sWindowTemplate_AreaMap_Kanto = { .bg = 2, .tilemapLeft = 17, .tilemapTop = 4, @@ -612,7 +681,7 @@ const struct WindowTemplate gUnknown_8452214 = { .baseBlock = 0x0208 }; -static const struct WindowTemplate sUnknown_845221C = { +static const struct WindowTemplate sWindowTemplate_AreaMap_OneIsland = { .bg = 2, .tilemapLeft = 13, .tilemapTop = 4, @@ -622,7 +691,7 @@ static const struct WindowTemplate sUnknown_845221C = { .baseBlock = 0x0274 }; -static const struct WindowTemplate sUnknown_8452224 = { +static const struct WindowTemplate sWindowTemplate_AreaMap_TwoIsland = { .bg = 2, .tilemapLeft = 13, .tilemapTop = 7, @@ -632,7 +701,7 @@ static const struct WindowTemplate sUnknown_8452224 = { .baseBlock = 0x0280 }; -static const struct WindowTemplate sUnknown_845222C = { +static const struct WindowTemplate sWindowTemplate_AreaMap_ThreeIsland = { .bg = 2, .tilemapLeft = 13, .tilemapTop = 10, @@ -642,7 +711,7 @@ static const struct WindowTemplate sUnknown_845222C = { .baseBlock = 0x028c }; -static const struct WindowTemplate sUnknown_8452234 = { +static const struct WindowTemplate sWindowTemplate_AreaMap_FourIsland = { .bg = 2, .tilemapLeft = 13, .tilemapTop = 13, @@ -652,7 +721,7 @@ static const struct WindowTemplate sUnknown_8452234 = { .baseBlock = 0x0298 }; -static const struct WindowTemplate sUnknown_845223C = { +static const struct WindowTemplate sWindowTemplate_AreaMap_FiveIsland = { .bg = 2, .tilemapLeft = 17, .tilemapTop = 13, @@ -662,7 +731,7 @@ static const struct WindowTemplate sUnknown_845223C = { .baseBlock = 0x02a8 }; -static const struct WindowTemplate sUnknown_8452244 = { +static const struct WindowTemplate sWindowTemplate_AreaMap_SixIsland = { .bg = 2, .tilemapLeft = 21, .tilemapTop = 13, @@ -672,7 +741,7 @@ static const struct WindowTemplate sUnknown_8452244 = { .baseBlock = 0x02b8 }; -static const struct WindowTemplate sUnknown_845224C = { +static const struct WindowTemplate sWindowTemplate_AreaMap_SevenIsland = { .bg = 2, .tilemapLeft = 25, .tilemapTop = 13, @@ -684,46 +753,47 @@ static const struct WindowTemplate sUnknown_845224C = { struct { const struct WindowTemplate * window; - const u32 * tilemap; -} const gUnknown_8452254[] = { - {&sUnknown_845221C, gUnknown_8443910}, - {&sUnknown_8452224, gUnknown_8443988}, - {&sUnknown_845222C, gUnknown_84439FC}, - {&sUnknown_8452234, gUnknown_8443A78}, - {&sUnknown_845223C, gUnknown_8443AF8}, - {&sUnknown_8452244, gUnknown_8443BB0}, - {&sUnknown_845224C, gUnknown_8443C54}, + const u32 * tiles; +} const sAreaMapStructs_SeviiIslands[] = { + {&sWindowTemplate_AreaMap_OneIsland, sTilemap_AreaMap_OneIsland}, + {&sWindowTemplate_AreaMap_TwoIsland, sTilemap_AreaMap_TwoIsland}, + {&sWindowTemplate_AreaMap_ThreeIsland, sTilemap_AreaMap_ThreeIsland}, + {&sWindowTemplate_AreaMap_FourIsland, sTilemap_AreaMap_FourIsland}, + {&sWindowTemplate_AreaMap_FiveIsland, sTilemap_AreaMap_FiveIsland}, + {&sWindowTemplate_AreaMap_SixIsland, sTilemap_AreaMap_SixIsland}, + {&sWindowTemplate_AreaMap_SevenIsland, sTilemap_AreaMap_SevenIsland}, }; -static const u16 sUnknown_845228C[] = INCBIN_U16("graphics/pokedex/unk_845228C.bin"); +static const u16 sCategoryPageIconWindowBg[] = INCBIN_U16("graphics/interface/pokedex_page_icon_tilemap.bin"); -static const u8 sUnknown_845230C[][4] = { - {0x0b, 0x03, 0x0b, 0x0b}, +// Circular window x/y; Rectangular window x/y +static const u8 sPageIconCoords_1Mon[1][4] = { + {11, 3, 11, 11}, }; -static const u8 sUnknown_8452310[][4] = { - {0x03, 0x03, 0x0b, 0x03}, - {0x12, 0x09, 0x0a, 0x0b}, +static const u8 sPageIconCoords_2Mons[2][4] = { + { 3, 3, 11, 3}, + {18, 9, 10, 11}, }; -static const u8 sUnknown_8452318[][4] = { - {0x01, 0x02, 0x09, 0x02}, - {0x0b, 0x09, 0x03, 0x0b}, - {0x15, 0x03, 0x15, 0x0b} +static const u8 sPageIconCoords_3Mons[3][4] = { + { 1, 2, 9, 2}, + {11, 9, 3, 11}, + {21, 3, 21, 11} }; -static const u8 sUnknown_8452324[][4] = { - {0x00, 0x02, 0x06, 0x03}, - {0x07, 0x0a, 0x00, 0x0c}, - {0x0f, 0x0a, 0x16, 0x0b}, - {0x16, 0x02, 0x0f, 0x04} +static const u8 sPageIconCoords_4Mons[4][4] = { + { 0, 2, 6, 3}, + { 7, 10, 0, 12}, + {15, 10, 22, 11}, + {22, 2, 15, 4} }; -const u8 (*const gUnknown_8452334[])[4] = { - sUnknown_845230C, - sUnknown_8452310, - sUnknown_8452318, - sUnknown_8452324, +const u8 (*const sCategoryPageIconCoords[])[4] = { + sPageIconCoords_1Mon, + sPageIconCoords_2Mons, + sPageIconCoords_3Mons, + sPageIconCoords_4Mons, }; static const u8 * const sDexCategoryNamePtrs[] = { @@ -738,86 +808,55 @@ static const u8 * const sDexCategoryNamePtrs[] = { gText_DexCategory_RarePkmn, }; -const u16 gUnknown_8452368[] = INCBIN_U16("graphics/pokedex/unk_8452368.gbapal"); +const u16 sPalette_Silhouette[] = INCBIN_U16("graphics/interface/pokedex_silhouette_sprite_pal.gbapal"); -static const u8 sUnknown_8452388[][30] = { - { - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x05, 0x0b, 0x11, 0x17, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x02, 0x05, 0x08, 0x0b, 0x0e, 0x11, 0x14, 0x17, 0x1a, 0x1d, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x02, 0x03, 0x05, 0x07, 0x09, 0x0b, 0x0d, 0x0f, 0x11, 0x13, - 0x15, 0x17, 0x19, 0x1b, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x02, 0x04, 0x05, 0x07, 0x08, 0x0a, 0x0b, 0x0d, 0x0e, 0x10, - 0x11, 0x13, 0x14, 0x16, 0x17, 0x19, 0x1a, 0x1c, 0x1d, 0x1e, - 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x01, 0x02, 0x03, 0x04, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, - 0x0d, 0x0f, 0x10, 0x11, 0x13, 0x14, 0x15, 0x17, 0x18, 0x19, - 0x1b, 0x1c, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0b, - 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x14, 0x15, 0x16, - 0x17, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e - }, { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0b, - 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x15, 0x16, - 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1e, 0x1e - }, { - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, - 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, - 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e - }, { - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, - 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d - }, +static const u8 sDexScreenPageTurnColumns[][30] = { + {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 5, 11, 17, 23, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 2, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, + { 1, 2, 3, 4, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 19, 20, 21, 23, 24, 25, 27, 28, 29, 30, 30, 30, 30, 30, 30, 30}, + { 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 25, 26, 27, 28, 29, 30, 30, 30, 30}, + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 30, 30}, + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30}, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29}, }; -static const struct ScrollArrowsTemplate sUnknown_84524B4 = { - .firstArrowType = 0, - .firstX = 16, - .firstY = 80, - .secondArrowType = 1, - .secondX = 224, +static const struct ScrollArrowsTemplate sScrollArrowsTemplate_CategoryMenu = { + .firstArrowType = 0, + .firstX = 16, + .firstY = 80, + .secondArrowType = 1, + .secondX = 224, .secondY = 80, - .fullyUpThreshold = 0, - .fullyDownThreshold = 0, - .tileTag = 2000, + .fullyUpThreshold = 0, + .fullyDownThreshold = 0, + .tileTag = 2000, .palTag = 0xFFFF, .palNum = 1, }; -const struct CursorStruct gUnknown_84524C4 = { - .left = 0, +const struct CursorStruct sCursorStruct_CategoryPage = { + .left = 0, .top = 160, - .rowWidth = 64, - .rowHeight = 40, - .tileTag = 2002, + .rowWidth = 64, + .rowHeight = 40, + .tileTag = 2002, .palTag = 0xFFFF, .palNum = 4, }; #include "data/pokemon/pokedex_categories.h" -void sub_81024C0(void) +void VBlankCB(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_81024D4(void) +void CB2_PokedexScreen(void) { if (!gPaletteFade.active || IsDma3ManagerBusyWithBgCopy()) { @@ -832,7 +871,7 @@ void sub_81024D4(void) } } -void sub_810250C(void) +void DexScreen_LoadResources(void) { bool8 natDex; u8 taskId; @@ -845,29 +884,29 @@ void sub_810250C(void) ResetTasks(); ScanlineEffect_Stop(); ResetBgsAndClearDma3BusyFlags(TRUE); - InitBgsFromTemplates(0, sUnknown_8451EBC, NELEMS(sUnknown_8451EBC)); + InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates)); SetBgTilemapBuffer(3, (u16*)Alloc(BG_SCREEN_SIZE)); SetBgTilemapBuffer(2, (u16*)Alloc(BG_SCREEN_SIZE)); SetBgTilemapBuffer(1, (u16*)Alloc(BG_SCREEN_SIZE)); SetBgTilemapBuffer(0, (u16*)Alloc(BG_SCREEN_SIZE)); if (natDex) - DecompressAndLoadBgGfxUsingHeap(3, (void*)gUnknown_84403AC, BG_SCREEN_SIZE, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, (void*)sNatDexTiles, BG_SCREEN_SIZE, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, (void*)gUnknown_8440274, BG_SCREEN_SIZE, 0, 0); - InitWindows(sUnknown_8451ECC); + DecompressAndLoadBgGfxUsingHeap(3, (void*)sKantoDexTiles, BG_SCREEN_SIZE, 0, 0); + InitWindows(sWindowTemplates); DeactivateAllTextPrinters(); m4aSoundVSyncOn(); - SetVBlankCallback(sub_81024C0); + SetVBlankCallback(VBlankCB); EnableInterrupts(INTR_FLAG_VBLANK); - taskId = CreateTask(sub_810287C, 0); - gUnknown_203ACF0 = Alloc(sizeof(struct PokedexScreenData)); - *gUnknown_203ACF0 = sUnknown_8451EE4; - gUnknown_203ACF0->field_00 = taskId; - gUnknown_203ACF0->field_44 = Alloc(NATIONAL_DEX_COUNT * sizeof(struct ListMenuItem)); - gUnknown_203ACF0->field_6A = sub_8104BBC(0, 1); - gUnknown_203ACF0->field_6C = sub_8104BBC(1, 1); - gUnknown_203ACF0->field_66 = sub_8104BBC(0, 0); - gUnknown_203ACF0->field_68 = sub_8104BBC(1, 0); + taskId = CreateTask(Task_PokedexScreen, 0); + sPokedexScreenData = Alloc(sizeof(struct PokedexScreenData)); + *sPokedexScreenData = sDexScreenDataInitialState; + sPokedexScreenData->taskId = taskId; + sPokedexScreenData->listItems = Alloc(NATIONAL_DEX_COUNT * sizeof(struct ListMenuItem)); + sPokedexScreenData->numSeenNational = DexScreen_GetDexCount(FLAG_GET_SEEN, 1); + sPokedexScreenData->numOwnedNational = DexScreen_GetDexCount(FLAG_GET_CAUGHT, 1); + sPokedexScreenData->numSeenKanto = DexScreen_GetDexCount(FLAG_GET_SEEN, 0); + sPokedexScreenData->numOwnedKanto = DexScreen_GetDexCount(FLAG_GET_CAUGHT, 0); SetBGMVolume_SuppressHelpSystemReduction(0x80); ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -879,31 +918,31 @@ void sub_810250C(void) ChangeBgY(3, 0, 0); gPaletteFade.bufferTransferDisabled = TRUE; if (natDex) - LoadPalette(gUnknown_84406E0, 0, 0x200); + LoadPalette(sNationalDexPalette, 0, 0x200); else - LoadPalette(gUnknown_84404C8, 0, 0x200); - FillBgTilemapBufferRect(3, 0x001, 0, 0, 32, 32, 0); - FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); - FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); - FillBgTilemapBufferRect(0, 0x0003, 0, 0, 32, 2, 0xF); - FillBgTilemapBufferRect(0, 0x0000, 0, 2, 32, 16, 0x11); - FillBgTilemapBufferRect(0, 0x003, 0, 18, 32, 2, 0xF); + LoadPalette(sKantoDexPalette, 0, 0x200); + FillBgTilemapBufferRect(3, 0x001, 0, 0, 32, 32, 0x00); + FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); + FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); + FillBgTilemapBufferRect(0, 0x003, 0, 0, 32, 2, 0x0F); + FillBgTilemapBufferRect(0, 0x000, 0, 2, 32, 16, 0x11); + FillBgTilemapBufferRect(0, 0x003, 0, 18, 32, 2, 0x0F); } void CB2_OpenPokedexFromStartMenu(void) { - sub_810250C(); + DexScreen_LoadResources(); ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); SetGpuReg(REG_OFFSET_BLDY, 0); - SetMainCallback2(sub_81024D4); + SetMainCallback2(CB2_PokedexScreen); SetHelpContext(HELPCONTEXT_POKEDEX); } #define FREE_IF_NOT_NULL(ptr0) ({ void * ptr = (ptr0); if (ptr) Free(ptr); }) -bool8 sub_8102798(void) +bool8 DoClosePokedex(void) { switch (gMain.state) { @@ -918,8 +957,8 @@ bool8 sub_8102798(void) UpdatePaletteFade(); return FALSE; case 2: - FREE_IF_NOT_NULL(gUnknown_203ACF0->field_44); - FREE_IF_NOT_NULL(gUnknown_203ACF0); + FREE_IF_NOT_NULL(sPokedexScreenData->listItems); + FREE_IF_NOT_NULL(sPokedexScreenData); FreeAllWindowBuffers(); FREE_IF_NOT_NULL(GetBgTilemapBuffer(0)); FREE_IF_NOT_NULL(GetBgTilemapBuffer(1)); @@ -931,44 +970,44 @@ bool8 sub_8102798(void) return TRUE; } -void sub_8102858(void) +void CB2_ClosePokedex(void) { - if (sub_8102798()) + if (DoClosePokedex()) { SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON); SetMainCallback2(CB2_ReturnToFieldWithOpenMenu); } } -static void sub_810287C(u8 taskId) +static void Task_PokedexScreen(u8 taskId) { int i; - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: - gUnknown_203ACF0->field_08 = 0; + sPokedexScreenData->unlockedCategories = 0; for (i = 0; i < 9; i++) - gUnknown_203ACF0->field_08 |= (sub_81068A0(i) << i); - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->unlockedCategories |= (DexScreen_IsCategoryUnlocked(i) << i); + sPokedexScreenData->state = 2; break; case 1: - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - sub_81047B0(&gUnknown_203ACF0->field_14); - sub_81047B0(&gUnknown_203ACF0->field_15); - sub_81047B0(&gUnknown_203ACF0->field_16); - SetMainCallback2(sub_8102858); + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + DexScreen_RemoveWindow(&sPokedexScreenData->modeSelectWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->selectionIconWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->dexCountsWindowId); + SetMainCallback2(CB2_ClosePokedex); DestroyTask(taskId); break; case 2: - sub_8102C28(); - gUnknown_203ACF0->field_01 = 3; + DexScreen_InitGfxForTopMenu(); + sPokedexScreenData->state = 3; break; case 3: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: ShowBg(3); @@ -981,352 +1020,352 @@ static void sub_810287C(u8 taskId) BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_WHITEALPHA); } else - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 5; + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); + sPokedexScreenData->state = 5; break; case 5: - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); if (IsNationalPokedexEnabled()) - gUnknown_203ACF0->field_60 = AddScrollIndicatorArrowPair(&sUnknown_84520E4, &gUnknown_203ACF0->field_62); + sPokedexScreenData->scrollArrowsTaskId = AddScrollIndicatorArrowPair(&sScrollArrowsTemplate_NatDex, &sPokedexScreenData->modeSelectCursorPosBak); else - gUnknown_203ACF0->field_60 = AddScrollIndicatorArrowPair(&sUnknown_84520D4, &gUnknown_203ACF0->field_62); - gUnknown_203ACF0->field_01 = 6; + sPokedexScreenData->scrollArrowsTaskId = AddScrollIndicatorArrowPair(&sScrollArrowsTemplate_KantoDex, &sPokedexScreenData->modeSelectCursorPosBak); + sPokedexScreenData->state = 6; break; case 6: - gUnknown_203ACF0->field_0C = ListMenu_ProcessInput(gUnknown_203ACF0->field_17); - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); + sPokedexScreenData->modeSelectInput = ListMenu_ProcessInput(sPokedexScreenData->modeSelectListMenuId); + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); if (JOY_NEW(A_BUTTON)) { - switch (gUnknown_203ACF0->field_0C) + switch (sPokedexScreenData->modeSelectInput) { case LIST_CANCEL: - gUnknown_203ACF0->field_01 = 1; + sPokedexScreenData->state = 1; break; - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - if (sub_81068A0(gUnknown_203ACF0->field_0C)) + case DEX_CATEGORY_GRASSLAND: + case DEX_CATEGORY_FOREST: + case DEX_CATEGORY_WATERS_EDGE: + case DEX_CATEGORY_SEA: + case DEX_CATEGORY_CAVE: + case DEX_CATEGORY_MOUNTAIN: + case DEX_CATEGORY_ROUGH_TERRAIN: + case DEX_CATEGORY_URBAN: + case DEX_CATEGORY_RARE: + if (DexScreen_IsCategoryUnlocked(sPokedexScreenData->modeSelectInput)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - gUnknown_203ACF0->field_28 = gUnknown_203ACF0->field_0C; - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 7; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + sPokedexScreenData->category = sPokedexScreenData->modeSelectInput; + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 7; } break; - case 9: - case 14: - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - gUnknown_203ACF0->field_42 = gUnknown_203ACF0->field_0C - 9; - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 9; + case DEX_MODE(NUMERICAL_KANTO): + case DEX_MODE(NUMERICAL_NATIONAL): + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + sPokedexScreenData->dexOrderId = sPokedexScreenData->modeSelectInput - DEX_CATEGORY_COUNT; + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 9; break; - case 10: - case 11: - case 12: - case 13: - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - gUnknown_203ACF0->field_42 = gUnknown_203ACF0->field_0C - 9; - gUnknown_203ACF0->field_38 = gUnknown_203ACF0->field_3A = 0; - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 8; + case DEX_MODE(ATOZ): + case DEX_MODE(TYPE): + case DEX_MODE(LIGHTEST): + case DEX_MODE(SMALLEST): + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + sPokedexScreenData->dexOrderId = sPokedexScreenData->modeSelectInput - DEX_CATEGORY_COUNT; + sPokedexScreenData->characteristicOrderMenuItemsAbove = sPokedexScreenData->characteristicOrderMenuCursorPos = 0; + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 8; break; } break; } if (JOY_NEW(B_BUTTON)) { - gUnknown_203ACF0->field_01 = 1; + sPokedexScreenData->state = 1; } break; case 7: - DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10); + DestroyListMenuTask(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPos, &sPokedexScreenData->modeSelectItemsAbove); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20); CopyBgTilemapBufferToVram(1); - sub_81047B0(&gUnknown_203ACF0->field_14); - sub_81047B0(&gUnknown_203ACF0->field_15); - sub_81047B0(&gUnknown_203ACF0->field_16); - gUnknown_203ACF0->field_2B = 0; - gUnknown_203ACF0->field_2D = 0; - gUnknown_203ACF0->field_2F = 0; - gTasks[taskId].func = sub_8103AC8; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->modeSelectWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->selectionIconWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->dexCountsWindowId); + sPokedexScreenData->pageNum = 0; + sPokedexScreenData->categoryCursorPosInPage = 0; + sPokedexScreenData->parentOfCategoryMenu = 0; + gTasks[taskId].func = Task_DexScreen_CategorySubmenu; + sPokedexScreenData->state = 0; break; case 8: - DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10); + DestroyListMenuTask(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPos, &sPokedexScreenData->modeSelectItemsAbove); HideBg(1); - sub_81047B0(&gUnknown_203ACF0->field_14); - sub_81047B0(&gUnknown_203ACF0->field_15); - sub_81047B0(&gUnknown_203ACF0->field_16); - gTasks[taskId].func = sub_8103238; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->modeSelectWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->selectionIconWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->dexCountsWindowId); + gTasks[taskId].func = Task_DexScreen_CharacteristicOrder; + sPokedexScreenData->state = 0; break; case 9: - DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10); + DestroyListMenuTask(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPos, &sPokedexScreenData->modeSelectItemsAbove); HideBg(1); - sub_81047B0(&gUnknown_203ACF0->field_14); - sub_81047B0(&gUnknown_203ACF0->field_15); - sub_81047B0(&gUnknown_203ACF0->field_16); - gTasks[taskId].func = sub_8102F80; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->modeSelectWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->selectionIconWindowId); + DexScreen_RemoveWindow(&sPokedexScreenData->dexCountsWindowId); + gTasks[taskId].func = Task_DexScreen_NumericalOrder; + sPokedexScreenData->state = 0; break; } } -static void sub_8102C28(void) +static void DexScreen_InitGfxForTopMenu(void) { struct ListMenuTemplate listMenuTemplate; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); FillBgTilemapBufferRect(2, 0x000, 0, 0, 30, 20, 0x11); FillBgTilemapBufferRect(1, 0x000, 0, 0, 30, 20, 0x11); - gUnknown_203ACF0->field_14 = AddWindow(&sUnknown_8451F54); - gUnknown_203ACF0->field_15 = AddWindow(&sUnknown_8451F5C); - gUnknown_203ACF0->field_16 = AddWindow(&sUnknown_8451F64); + sPokedexScreenData->modeSelectWindowId = AddWindow(&sWindowTemplate_ModeSelect); + sPokedexScreenData->selectionIconWindowId = AddWindow(&sWindowTemplate_SelectionIcon); + sPokedexScreenData->dexCountsWindowId = AddWindow(&sWindowTemplate_DexCounts); if (IsNationalPokedexEnabled()) { - listMenuTemplate = sUnknown_84520BC; - listMenuTemplate.windowId = gUnknown_203ACF0->field_14; - gUnknown_203ACF0->field_17 = ListMenuInit(&listMenuTemplate, gUnknown_203ACF0->field_12, gUnknown_203ACF0->field_10); - FillWindowPixelBuffer(gUnknown_203ACF0->field_16, PIXEL_FILL(0)); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_Seen, 0, 2, 0); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_Kanto, 8, 13, 0); - sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_66, 52, 13, 2); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_National, 8, 24, 0); - sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_6A, 52, 24, 2); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_Owned, 0, 37, 0); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_Kanto, 8, 48, 0); - sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_68, 52, 48, 2); - sub_81047C8(gUnknown_203ACF0->field_16, 0, gText_National, 8, 59, 0); - sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_6C, 52, 59, 2); + listMenuTemplate = sListMenuTemplate_NatDexModeSelect; + listMenuTemplate.windowId = sPokedexScreenData->modeSelectWindowId; + sPokedexScreenData->modeSelectListMenuId = ListMenuInit(&listMenuTemplate, sPokedexScreenData->modeSelectCursorPos, sPokedexScreenData->modeSelectItemsAbove); + FillWindowPixelBuffer(sPokedexScreenData->dexCountsWindowId, PIXEL_FILL(0)); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_Seen, 0, 2, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_Kanto, 8, 13, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 0, sPokedexScreenData->numSeenKanto, 52, 13, 2); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_National, 8, 24, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 0, sPokedexScreenData->numSeenNational, 52, 24, 2); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_Owned, 0, 37, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_Kanto, 8, 48, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 0, sPokedexScreenData->numOwnedKanto, 52, 48, 2); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 0, gText_National, 8, 59, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 0, sPokedexScreenData->numOwnedNational, 52, 59, 2); } else { - listMenuTemplate = sUnknown_8452004; - listMenuTemplate.windowId = gUnknown_203ACF0->field_14; - gUnknown_203ACF0->field_17 = ListMenuInit(&listMenuTemplate, gUnknown_203ACF0->field_12, gUnknown_203ACF0->field_10); - FillWindowPixelBuffer(gUnknown_203ACF0->field_16, PIXEL_FILL(0)); - sub_81047C8(gUnknown_203ACF0->field_16, 1, gText_Seen, 0, 9, 0); - sub_810491C(gUnknown_203ACF0->field_16, 1, gUnknown_203ACF0->field_66, 32, 21, 2); - sub_81047C8(gUnknown_203ACF0->field_16, 1, gText_Owned, 0, 37, 0); - sub_810491C(gUnknown_203ACF0->field_16, 1, gUnknown_203ACF0->field_68, 32, 49, 2); + listMenuTemplate = sListMenuTemplate_KantoDexModeSelect; + listMenuTemplate.windowId = sPokedexScreenData->modeSelectWindowId; + sPokedexScreenData->modeSelectListMenuId = ListMenuInit(&listMenuTemplate, sPokedexScreenData->modeSelectCursorPos, sPokedexScreenData->modeSelectItemsAbove); + FillWindowPixelBuffer(sPokedexScreenData->dexCountsWindowId, PIXEL_FILL(0)); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 1, gText_Seen, 0, 9, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 1, sPokedexScreenData->numSeenKanto, 32, 21, 2); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->dexCountsWindowId, 1, gText_Owned, 0, 37, 0); + DexScreen_PrintNum3RightAlign(sPokedexScreenData->dexCountsWindowId, 1, sPokedexScreenData->numOwnedKanto, 32, 49, 2); } FillWindowPixelBuffer(0, PIXEL_FILL(15)); - sub_8106E78(gText_PokedexTableOfContents, 1); + DexScreen_PrintStringWithAlignment(gText_PokedexTableOfContents, TEXT_CENTER); FillWindowPixelBuffer(1, PIXEL_FILL(15)); - sub_8104C2C(gText_PickOK); + DexScreen_PrintControlInfo(gText_PickOK); PutWindowTilemap(0); CopyWindowToVram(0, COPYWIN_GFX); PutWindowTilemap(1); CopyWindowToVram(1, COPYWIN_GFX); - PutWindowTilemap(gUnknown_203ACF0->field_16); - CopyWindowToVram(gUnknown_203ACF0->field_16, COPYWIN_GFX); + PutWindowTilemap(sPokedexScreenData->dexCountsWindowId); + CopyWindowToVram(sPokedexScreenData->dexCountsWindowId, COPYWIN_GFX); } -static void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void MoveCursorFunc_DexModeSelect(s32 itemIndex, bool8 onInit, struct ListMenu *list) { if (!onInit) PlaySE(SE_SELECT); if (itemIndex == LIST_CANCEL) { - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_15, gUnknown_8440EF0, 0x000, 0x000); - LoadPalette(gUnknown_8443460, 0x10, 0x20); + CopyToWindowPixelBuffer(sPokedexScreenData->selectionIconWindowId, sTopMenuSelectionIconTiles_Cancel, 0x000, 0x000); + LoadPalette(sTopMenuSelectionIconPals_Cancel, 0x10, 0x20); } else { - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_15, sUnknown_84520F4[itemIndex].map, 0x000, 0x000); - LoadPalette(sUnknown_84520F4[itemIndex].pal, 0x10, 0x20); + CopyToWindowPixelBuffer(sPokedexScreenData->selectionIconWindowId, sTopMenuSelectionIconGfxPtrs[itemIndex].tiles, 0x000, 0x000); + LoadPalette(sTopMenuSelectionIconGfxPtrs[itemIndex].pal, 0x10, 0x20); } - PutWindowTilemap(gUnknown_203ACF0->field_15); - CopyWindowToVram(gUnknown_203ACF0->field_15, COPYWIN_GFX); + PutWindowTilemap(sPokedexScreenData->selectionIconWindowId); + CopyWindowToVram(sPokedexScreenData->selectionIconWindowId, COPYWIN_GFX); } -static void sub_8102F48(u8 windowId, s32 itemId, u8 y) +static void ItemPrintFunc_DexModeSelect(u8 windowId, s32 itemId, u8 y) { u32 itemId_ = itemId; - if (itemId_ > 8 || gUnknown_203ACF0->field_08 & (1 << itemId_)) + if (itemId_ > 8 || sPokedexScreenData->unlockedCategories & (1 << itemId_)) ListMenuOverrideSetColors(1, 0, 3); else ListMenuOverrideSetColors(10, 0, 11); } -static void sub_8102F80(u8 taskId) +static void Task_DexScreen_NumericalOrder(u8 taskId) { - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: ListMenuLoadStdPalAt(0x10, 0); ListMenuLoadStdPalAt(0x20, 1); - gUnknown_203ACF0->field_48 = sub_8103518(gUnknown_203ACF0->field_42); - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->orderedDexCount = DexScreen_CountMonsInOrderedList(sPokedexScreenData->dexOrderId); + sPokedexScreenData->state = 2; break; case 1: - sub_8103988(gUnknown_203ACF0->field_42); + DexScreen_DestroyDexOrderListMenu(sPokedexScreenData->dexOrderId); HideBg(1); - sub_81047B0(&gUnknown_203ACF0->field_40); - gTasks[taskId].func = sub_810287C; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->numericalOrderWindowId); + gTasks[taskId].func = Task_PokedexScreen; + sPokedexScreenData->state = 0; break; case 2: - sub_810317C(); - gUnknown_203ACF0->field_01 = 3; + DexScreen_InitGfxForNumericalOrderList(); + sPokedexScreenData->state = 3; break; case 3: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(1); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: ShowBg(1); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 5; + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); + sPokedexScreenData->state = 5; break; case 5: - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); - gUnknown_203ACF0->field_60 = sub_81039F0(); - gUnknown_203ACF0->field_01 = 6; + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); + sPokedexScreenData->scrollArrowsTaskId = DexScreen_CreateDexOrderScrollArrows(); + sPokedexScreenData->state = 6; break; case 6: - gUnknown_203ACF0->field_30 = ListMenu_ProcessInput(gUnknown_203ACF0->field_41); - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); + sPokedexScreenData->characteristicMenuInput = ListMenu_ProcessInput(sPokedexScreenData->orderedListMenuTaskId); + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); if (JOY_NEW(A_BUTTON)) { - if ((gUnknown_203ACF0->field_30 >> 16) & 1) + if ((sPokedexScreenData->characteristicMenuInput >> 16) & 1) { - gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_30; - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 7; + sPokedexScreenData->dexSpecies = sPokedexScreenData->characteristicMenuInput; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 7; } } else if (JOY_NEW(B_BUTTON)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 1; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 1; } break; case 7: - sub_8103988(gUnknown_203ACF0->field_42); + DexScreen_DestroyDexOrderListMenu(sPokedexScreenData->dexOrderId); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20); CopyBgTilemapBufferToVram(1); - sub_81047B0(&gUnknown_203ACF0->field_40); - gTasks[taskId].func = sub_81042EC; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->numericalOrderWindowId); + gTasks[taskId].func = Task_DexScreen_ShowMonPage; + sPokedexScreenData->state = 0; break; } } -static void sub_810317C(void) +static void DexScreen_InitGfxForNumericalOrderList(void) { struct ListMenuTemplate template; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); - gUnknown_203ACF0->field_40 = AddWindow(&sUnknown_845216C); - template = sUnknown_8452174; - template.items = gUnknown_203ACF0->field_44; - template.windowId = gUnknown_203ACF0->field_40; - template.totalItems = gUnknown_203ACF0->field_48; - sub_8103924(&template, gUnknown_203ACF0->field_42); + sPokedexScreenData->numericalOrderWindowId = AddWindow(&sWindowTemplate_OrderedListMenu); + template = sListMenuTemplate_OrderedListMenu; + template.items = sPokedexScreenData->listItems; + template.windowId = sPokedexScreenData->numericalOrderWindowId; + template.totalItems = sPokedexScreenData->orderedDexCount; + DexScreen_InitListMenuForOrderedList(&template, sPokedexScreenData->dexOrderId); FillWindowPixelBuffer(0, PIXEL_FILL(15)); - sub_8106E78(gText_PokemonListNoColor, 1); + DexScreen_PrintStringWithAlignment(gText_PokemonListNoColor, TEXT_CENTER); FillWindowPixelBuffer(1, PIXEL_FILL(15)); - sub_8104C2C(gText_PickOKExit); + DexScreen_PrintControlInfo(gText_PickOKExit); CopyWindowToVram(0, COPYWIN_GFX); CopyWindowToVram(1, COPYWIN_GFX); } -static void sub_8103238(u8 taskId) +static void Task_DexScreen_CharacteristicOrder(u8 taskId) { - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: ListMenuLoadStdPalAt(0x10, 0); ListMenuLoadStdPalAt(0x20, 1); - gUnknown_203ACF0->field_48 = sub_8103518(gUnknown_203ACF0->field_42); - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->orderedDexCount = DexScreen_CountMonsInOrderedList(sPokedexScreenData->dexOrderId); + sPokedexScreenData->state = 2; break; case 1: - sub_8103988(gUnknown_203ACF0->field_42); + DexScreen_DestroyDexOrderListMenu(sPokedexScreenData->dexOrderId); HideBg(1); - sub_81047B0(&gUnknown_203ACF0->field_40); - gTasks[taskId].func = sub_810287C; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->numericalOrderWindowId); + gTasks[taskId].func = Task_PokedexScreen; + sPokedexScreenData->state = 0; break; case 2: - sub_810345C(); - gUnknown_203ACF0->field_01 = 3; + DexScreen_CreateCharacteristicListMenu(); + sPokedexScreenData->state = 3; break; case 3: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(1); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: ShowBg(1); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 5; + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); + sPokedexScreenData->state = 5; break; case 5: - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); - gUnknown_203ACF0->field_60 = sub_81039F0(); - gUnknown_203ACF0->field_01 = 6; + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); + sPokedexScreenData->scrollArrowsTaskId = DexScreen_CreateDexOrderScrollArrows(); + sPokedexScreenData->state = 6; break; case 6: - gUnknown_203ACF0->field_30 = ListMenu_ProcessInput(gUnknown_203ACF0->field_41); - ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL); + sPokedexScreenData->characteristicMenuInput = ListMenu_ProcessInput(sPokedexScreenData->orderedListMenuTaskId); + ListMenuGetScrollAndRow(sPokedexScreenData->modeSelectListMenuId, &sPokedexScreenData->modeSelectCursorPosBak, NULL); if (JOY_NEW(A_BUTTON)) { - if (((gUnknown_203ACF0->field_30 >> 16) & 1) && !sub_8106A20(gUnknown_203ACF0->field_30)) + if (((sPokedexScreenData->characteristicMenuInput >> 16) & 1) && !DexScreen_LookUpCategoryBySpecies(sPokedexScreenData->characteristicMenuInput)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 7; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 7; } } else if (JOY_NEW(B_BUTTON)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 1; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 1; } break; case 7: - sub_8103988(gUnknown_203ACF0->field_42); + DexScreen_DestroyDexOrderListMenu(sPokedexScreenData->dexOrderId); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20); CopyBgTilemapBufferToVram(1); - sub_81047B0(&gUnknown_203ACF0->field_40); - gUnknown_203ACF0->field_2F = 1; - gTasks[taskId].func = sub_8103AC8; - gUnknown_203ACF0->field_01 = 0; + DexScreen_RemoveWindow(&sPokedexScreenData->numericalOrderWindowId); + sPokedexScreenData->parentOfCategoryMenu = 1; + gTasks[taskId].func = Task_DexScreen_CategorySubmenu; + sPokedexScreenData->state = 0; break; } } -static void sub_810345C(void) +static void DexScreen_CreateCharacteristicListMenu(void) { struct ListMenuTemplate template; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11); - gUnknown_203ACF0->field_40 = AddWindow(&sUnknown_845216C); - template = sUnknown_8452174; - template.items = gUnknown_203ACF0->field_44; - template.windowId = gUnknown_203ACF0->field_40; - template.totalItems = gUnknown_203ACF0->field_48; - sub_8103924(&template, gUnknown_203ACF0->field_42); + sPokedexScreenData->numericalOrderWindowId = AddWindow(&sWindowTemplate_OrderedListMenu); + template = sListMenuTemplate_OrderedListMenu; + template.items = sPokedexScreenData->listItems; + template.windowId = sPokedexScreenData->numericalOrderWindowId; + template.totalItems = sPokedexScreenData->orderedDexCount; + DexScreen_InitListMenuForOrderedList(&template, sPokedexScreenData->dexOrderId); FillWindowPixelBuffer(0, PIXEL_FILL(15)); - sub_8106E78(gText_SearchNoColor, 1); + DexScreen_PrintStringWithAlignment(gText_SearchNoColor, TEXT_CENTER); FillWindowPixelBuffer(1, PIXEL_FILL(15)); - sub_8104C2C(gText_PickOKExit); + DexScreen_PrintControlInfo(gText_PickOKExit); CopyWindowToVram(0, COPYWIN_GFX); CopyWindowToVram(1, COPYWIN_GFX); } -static u16 sub_8103518(u8 a0) +static u16 DexScreen_CountMonsInOrderedList(u8 orderIdx) { s32 max_n = IsNationalPokedexEnabled() ? NATIONAL_DEX_COUNT : KANTO_DEX_COUNT; u16 ndex_num; @@ -1335,165 +1374,165 @@ static u16 sub_8103518(u8 a0) bool8 caught; bool8 seen; - switch (a0) + switch (orderIdx) { default: - case 0: + case DEX_ORDER_NUMERICAL_KANTO: for (i = 0; i < KANTO_DEX_COUNT; i++) { ndex_num = i + 1; - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (seen) { - gUnknown_203ACF0->field_44[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; ret = ndex_num; } else { - gUnknown_203ACF0->field_44[i].label = gText_5Dashes; + sPokedexScreenData->listItems[i].label = gText_5Dashes; } - gUnknown_203ACF0->field_44[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); } break; - case 1: - for (i = 0; i < SPECIES_CHIMECHO; i++) + case DEX_ORDER_ATOZ: + for (i = 0; i < NUM_SPECIES - 1; i++) { ndex_num = gPokedexOrder_Alphabetical[i]; if (ndex_num <= max_n) { - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (seen) { - gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; - gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); ret++; } } } break; - case 2: + case DEX_ORDER_TYPE: for (i = 0; i < NUM_SPECIES - 1; i++) { ndex_num = SpeciesToNationalPokedexNum(gPokedexOrder_Type[i]); if (ndex_num <= max_n) { - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (caught) { - gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; - gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); ret++; } } } break; - case 3: + case DEX_ORDER_LIGHTEST: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { ndex_num = gPokedexOrder_Weight[i]; if (ndex_num <= max_n) { - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (caught) { - gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; - gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); ret++; } } } break; - case 4: + case DEX_ORDER_SMALLEST: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { ndex_num = gPokedexOrder_Height[i]; if (ndex_num <= max_n) { - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (caught) { - gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; - gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); ret++; } } } break; - case 5: + case DEX_ORDER_NUMERICAL_NATIONAL: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { ndex_num = i + 1; - seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); - caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + seen = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_SEEN, FALSE); + caught = DexScreen_GetSetPokedexFlag(ndex_num, FLAG_GET_CAUGHT, FALSE); if (seen) { - gUnknown_203ACF0->field_44[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + sPokedexScreenData->listItems[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; ret = ndex_num; } else { - gUnknown_203ACF0->field_44[i].label = gText_5Dashes; + sPokedexScreenData->listItems[i].label = gText_5Dashes; } - gUnknown_203ACF0->field_44[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + sPokedexScreenData->listItems[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); } break; } return ret; } -static void sub_8103924(const struct ListMenuTemplate * template, u8 a1) +static void DexScreen_InitListMenuForOrderedList(const struct ListMenuTemplate * template, u8 order) { - switch (a1) + switch (order) { default: - case 0: - gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &sUnknown_845218C, gUnknown_203ACF0->field_36, gUnknown_203ACF0->field_34); + case DEX_ORDER_NUMERICAL_KANTO: + sPokedexScreenData->orderedListMenuTaskId = ListMenuInitInRect(template, sListMenuRects_OrderedList, sPokedexScreenData->kantoOrderMenuCursorPos, sPokedexScreenData->kantoOrderMenuItemsAbove); break; - case 1: - case 2: - case 3: - case 4: - gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &sUnknown_845218C, gUnknown_203ACF0->field_3A, gUnknown_203ACF0->field_38); + case DEX_ORDER_ATOZ: + case DEX_ORDER_TYPE: + case DEX_ORDER_LIGHTEST: + case DEX_ORDER_SMALLEST: + sPokedexScreenData->orderedListMenuTaskId = ListMenuInitInRect(template, sListMenuRects_OrderedList, sPokedexScreenData->characteristicOrderMenuCursorPos, sPokedexScreenData->characteristicOrderMenuItemsAbove); break; - case 5: - gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &sUnknown_845218C, gUnknown_203ACF0->field_3E, gUnknown_203ACF0->field_3C); + case DEX_ORDER_NUMERICAL_NATIONAL: + sPokedexScreenData->orderedListMenuTaskId = ListMenuInitInRect(template, sListMenuRects_OrderedList, sPokedexScreenData->nationalOrderMenuCursorPos, sPokedexScreenData->nationalOrderMenuItemsAbove); break; } } -static void sub_8103988(u8 a0) +static void DexScreen_DestroyDexOrderListMenu(u8 order) { - switch (a0) + switch (order) { default: - case 0: - DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_36, &gUnknown_203ACF0->field_34); + case DEX_ORDER_NUMERICAL_KANTO: + DestroyListMenuTask(sPokedexScreenData->orderedListMenuTaskId, &sPokedexScreenData->kantoOrderMenuCursorPos, &sPokedexScreenData->kantoOrderMenuItemsAbove); break; - case 1: - case 2: - case 3: - case 4: - DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_3A, &gUnknown_203ACF0->field_38); + case DEX_ORDER_ATOZ: + case DEX_ORDER_TYPE: + case DEX_ORDER_LIGHTEST: + case DEX_ORDER_SMALLEST: + DestroyListMenuTask(sPokedexScreenData->orderedListMenuTaskId, &sPokedexScreenData->characteristicOrderMenuCursorPos, &sPokedexScreenData->characteristicOrderMenuItemsAbove); break; - case 5: - DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_3E, &gUnknown_203ACF0->field_3C); + case DEX_ORDER_NUMERICAL_NATIONAL: + DestroyListMenuTask(sPokedexScreenData->orderedListMenuTaskId, &sPokedexScreenData->nationalOrderMenuCursorPos, &sPokedexScreenData->nationalOrderMenuItemsAbove); break; } } -static u8 sub_81039F0(void) +static u8 DexScreen_CreateDexOrderScrollArrows(void) { - struct ScrollArrowsTemplate template = sUnknown_84521B4; - if (gUnknown_203ACF0->field_48 > sUnknown_8452174.maxShowed) - template.fullyDownThreshold = gUnknown_203ACF0->field_48 - sUnknown_8452174.maxShowed; + struct ScrollArrowsTemplate template = sDexOrderScrollArrowsTemplate; + if (sPokedexScreenData->orderedDexCount > sListMenuTemplate_OrderedListMenu.maxShowed) + template.fullyDownThreshold = sPokedexScreenData->orderedDexCount - sListMenuTemplate_OrderedListMenu.maxShowed; else template.fullyDownThreshold = 0; - return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62); + return AddScrollIndicatorArrowPair(&template, &sPokedexScreenData->modeSelectCursorPosBak); } struct PokedexListItem @@ -1503,208 +1542,207 @@ struct PokedexListItem bool8 caught:1; }; -static void sub_8103A40(u8 windowId, s32 itemId, u8 y) +static void ItemPrintFunc_OrderedListMenu(u8 windowId, s32 itemId, u8 y) { - u32 itemId_ = itemId; - u16 species = itemId_; - bool8 seen = (itemId_ >> 16) & 1; // not used but required to match - bool8 caught = (itemId_ >> 17) & 1; + u16 species = (u32)itemId; + bool8 seen = ((u32)itemId >> 16) & 1; // not used but required to match + bool8 caught = ((u32)itemId >> 17) & 1; u8 type1; - sub_8104A34(gUnknown_203ACF0->field_40, 0, species, 12, y); + DexScreen_PrintMonDexNo(sPokedexScreenData->numericalOrderWindowId, 0, species, 12, y); if (caught) { - BlitMoveInfoIcon(gUnknown_203ACF0->field_40, 0, 0x28, y); + BlitMoveInfoIcon(sPokedexScreenData->numericalOrderWindowId, 0, 0x28, y); type1 = gBaseStats[species].type1; - BlitMoveInfoIcon(gUnknown_203ACF0->field_40, type1 + 1, 0x78, y); + BlitMoveInfoIcon(sPokedexScreenData->numericalOrderWindowId, type1 + 1, 0x78, y); if (type1 != gBaseStats[species].type2) - BlitMoveInfoIcon(gUnknown_203ACF0->field_40, gBaseStats[species].type2 + 1, 0x98, y); + BlitMoveInfoIcon(sPokedexScreenData->numericalOrderWindowId, gBaseStats[species].type2 + 1, 0x98, y); } } -static void sub_8103AC8(u8 taskId) +static void Task_DexScreen_CategorySubmenu(u8 taskId) { - int r4; + int pageFlipCmd; u8 *ptr; - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: HideBg(3); HideBg(2); HideBg(1); - sub_810699C(gUnknown_203ACF0->field_28); - if (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_29) - gUnknown_203ACF0->field_2B = gUnknown_203ACF0->field_29; - gUnknown_203ACF0->field_01 = 2; + DexScreen_GetPageLimitsForCategory(sPokedexScreenData->category); + if (sPokedexScreenData->pageNum < sPokedexScreenData->firstPageInCategory) + sPokedexScreenData->pageNum = sPokedexScreenData->firstPageInCategory; + sPokedexScreenData->state = 2; break; case 1: - sub_8104E90(); + DexScreen_DestroyCategoryPageMonIconAndInfoWindows(); HideBg(2); HideBg(1); - switch (gUnknown_203ACF0->field_2F) + switch (sPokedexScreenData->parentOfCategoryMenu) { case 0: default: - gTasks[taskId].func = sub_810287C; + gTasks[taskId].func = Task_PokedexScreen; break; case 1: - gTasks[taskId].func = sub_8103238; + gTasks[taskId].func = Task_DexScreen_CharacteristicOrder; break; } - gUnknown_203ACF0->field_01 = 0; + sPokedexScreenData->state = 0; break; case 2: - sub_8104F0C(0); + DexScreen_CreateCategoryListGfx(FALSE); CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); - sub_8105058(0xFF); - gUnknown_203ACF0->field_01 = 3; + DexScreen_CreateCategoryPageSelectionCursor(0xFF); + sPokedexScreenData->state = 3; break; case 3: - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); ShowBg(3); ShowBg(2); ShowBg(1); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: - gUnknown_203ACF0->field_60 = sub_8104234(); - gUnknown_203ACF0->field_61 = ListMenuAddCursorObjectInternal(&gUnknown_84524C4, 0); - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->scrollArrowsTaskId = DexScreen_CreateCategoryMenuScrollArrows(); + sPokedexScreenData->categoryPageCursorTaskId = ListMenuAddCursorObjectInternal(&sCursorStruct_CategoryPage, 0); + sPokedexScreenData->state = 5; break; case 5: - sub_8105058(gUnknown_203ACF0->field_2D); - sub_8105178(gUnknown_203ACF0->field_61, gUnknown_203ACF0->field_2D, gUnknown_203ACF0->field_2C); - gUnknown_203ACF0->field_62 = gUnknown_203ACF0->field_2B; - r4 = 0; - if (JOY_NEW(A_BUTTON) && sub_8104AB0(gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D], FLAG_GET_SEEN, 1)) + DexScreen_CreateCategoryPageSelectionCursor(sPokedexScreenData->categoryCursorPosInPage); + DexScreen_UpdateCategoryPageCursorObject(sPokedexScreenData->categoryPageCursorTaskId, sPokedexScreenData->categoryCursorPosInPage, sPokedexScreenData->numMonsOnPage); + sPokedexScreenData->modeSelectCursorPosBak = sPokedexScreenData->pageNum; + pageFlipCmd = 0; + if (JOY_NEW(A_BUTTON) && DexScreen_GetSetPokedexFlag(sPokedexScreenData->pageSpecies[sPokedexScreenData->categoryCursorPosInPage], FLAG_GET_SEEN, TRUE)) { - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0); - gUnknown_203ACF0->field_01 = 12; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + ListMenuRemoveCursorObject(sPokedexScreenData->categoryPageCursorTaskId, 0); + sPokedexScreenData->state = 12; break; } if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_LEFT)) { - if (gUnknown_203ACF0->field_2D != 0) + if (sPokedexScreenData->categoryCursorPosInPage != 0) { - gUnknown_203ACF0->field_2D--; + sPokedexScreenData->categoryCursorPosInPage--; PlaySE(SE_SELECT); break; } else - r4 = 1; + pageFlipCmd = 1; } if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_RIGHT)) { - if (gUnknown_203ACF0->field_2D < gUnknown_203ACF0->field_2C - 1) + if (sPokedexScreenData->categoryCursorPosInPage < sPokedexScreenData->numMonsOnPage - 1) { - gUnknown_203ACF0->field_2D++; + sPokedexScreenData->categoryCursorPosInPage++; PlaySE(SE_SELECT); break; } else - r4 = 2; + pageFlipCmd = 2; } - if (r4 == 0) - r4 = sub_8104284(); - switch (r4) + if (pageFlipCmd == 0) + pageFlipCmd = DexScreen_InputHandler_GetShoulderInput(); + switch (pageFlipCmd) { - case 0: + case 0: // No action break; - case 1: - while (gUnknown_203ACF0->field_2B > gUnknown_203ACF0->field_29) + case 1: // Left + while (sPokedexScreenData->pageNum > sPokedexScreenData->firstPageInCategory) { - gUnknown_203ACF0->field_2B--; - if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B)) + sPokedexScreenData->pageNum--; + if (DexScreen_IsPageUnlocked(sPokedexScreenData->category, sPokedexScreenData->pageNum)) { - gUnknown_203ACF0->field_01 = 8; + sPokedexScreenData->state = 8; break; } } - if (gUnknown_203ACF0->field_01 != 8) - gUnknown_203ACF0->field_01 = 6; + if (sPokedexScreenData->state != 8) + sPokedexScreenData->state = 6; break; - case 2: - while (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_2A - 1) + case 2: // Right + while (sPokedexScreenData->pageNum < sPokedexScreenData->lastPageInCategory - 1) { - gUnknown_203ACF0->field_2B++; - if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B)) + sPokedexScreenData->pageNum++; + if (DexScreen_IsPageUnlocked(sPokedexScreenData->category, sPokedexScreenData->pageNum)) { - gUnknown_203ACF0->field_01 = 10; + sPokedexScreenData->state = 10; break; } } - if (gUnknown_203ACF0->field_01 != 10) - gUnknown_203ACF0->field_01 = 6; + if (sPokedexScreenData->state != 10) + sPokedexScreenData->state = 6; break; } if (JOY_NEW(B_BUTTON)) { - gUnknown_203ACF0->field_01 = 6; + sPokedexScreenData->state = 6; } break; case 6: case 7: - RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); - ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 1; + RemoveScrollIndicatorArrowPair(sPokedexScreenData->scrollArrowsTaskId); + ListMenuRemoveCursorObject(sPokedexScreenData->categoryPageCursorTaskId, 0); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 1; break; case 8: case 10: - sub_8104E90(); - sub_8105058(0xFF); - ListMenuUpdateCursorObject(gUnknown_203ACF0->field_61, 0, 0xA0, 0); - gUnknown_203ACF0->field_2E = 0; - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_01++; + DexScreen_DestroyCategoryPageMonIconAndInfoWindows(); + DexScreen_CreateCategoryPageSelectionCursor(0xFF); + ListMenuUpdateCursorObject(sPokedexScreenData->categoryPageCursorTaskId, 0, 0xA0, 0); + sPokedexScreenData->categoryPageSelectionCursorTimer = 0; + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->state++; break; case 9: - if (sub_81052D0(0)) + if (DexScreen_FlipCategoryPageInDirection(0)) { - gUnknown_203ACF0->field_2D = gUnknown_203ACF0->field_2C - 1; - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->categoryCursorPosInPage = sPokedexScreenData->numMonsOnPage - 1; + sPokedexScreenData->state = 5; } break; case 11: - if (sub_81052D0(1)) + if (DexScreen_FlipCategoryPageInDirection(1)) { - gUnknown_203ACF0->field_2D = 0; - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->categoryCursorPosInPage = 0; + sPokedexScreenData->state = 5; } break; case 12: - gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D]; + sPokedexScreenData->dexSpecies = sPokedexScreenData->pageSpecies[sPokedexScreenData->categoryCursorPosInPage]; PlaySE(SE_SELECT); - gUnknown_203ACF0->field_01 = 14; + sPokedexScreenData->state = 14; break; case 13: - sub_8106014(); - gUnknown_203ACF0->field_01 = 4; + RemoveDexPageWindows(); + sPokedexScreenData->state = 4; break; case 14: - sub_8105E1C(0); - gUnknown_203ACF0->field_01 = 15; + DexScreen_DrawMonDexPage(FALSE); + sPokedexScreenData->state = 15; break; case 15: - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_02[1] = 0; - gUnknown_203ACF0->field_01++; + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->data[1] = 0; + sPokedexScreenData->state++; // fallthrough case 16: - if (gUnknown_203ACF0->field_02[1] < 6) + if (sPokedexScreenData->data[1] < 6) { - if (gUnknown_203ACF0->field_02[0]) + if (sPokedexScreenData->data[0]) { - sub_8105594(0, gUnknown_203ACF0->field_02[1]); + DexScreen_DexPageZoomEffectFrame(0, sPokedexScreenData->data[1]); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_02[0] = 4; - gUnknown_203ACF0->field_02[1]++; + sPokedexScreenData->data[0] = 4; + sPokedexScreenData->data[1]++; } else { - gUnknown_203ACF0->field_02[0]--; + sPokedexScreenData->data[0]--; } } else @@ -1714,73 +1752,73 @@ static void sub_8103AC8(u8 taskId) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_01 = 17; + PlayCry2(sPokedexScreenData->dexSpecies, 0, 125, 10); + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->state = 17; } break; case 17: if (JOY_NEW(A_BUTTON)) { - sub_8106014(); + RemoveDexPageWindows(); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16); CopyBgTilemapBufferToVram(1); - gUnknown_203ACF0->field_01 = 21; + sPokedexScreenData->state = 21; } else if (JOY_NEW(B_BUTTON)) { - gUnknown_203ACF0->field_01 = 18; + sPokedexScreenData->state = 18; } else { - sub_8106B34(); + DexScreen_InputHandler_StartToCry(); } break; case 18: - sub_8104F0C(0); - sub_8105594(0, 6); + DexScreen_CreateCategoryListGfx(FALSE); + DexScreen_DexPageZoomEffectFrame(0, 6); CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 19; + sPokedexScreenData->state = 19; break; case 19: - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_02[1] = 6; - gUnknown_203ACF0->field_01++; + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->data[1] = 6; + sPokedexScreenData->state++; // fallthrough case 20: - if (gUnknown_203ACF0->field_02[1]) + if (sPokedexScreenData->data[1]) { - if (gUnknown_203ACF0->field_02[0]) + if (sPokedexScreenData->data[0]) { - gUnknown_203ACF0->field_02[1]--; + sPokedexScreenData->data[1]--; FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); - sub_8105594(0, gUnknown_203ACF0->field_02[1]); + DexScreen_DexPageZoomEffectFrame(0, sPokedexScreenData->data[1]); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_02[0] = 1; + sPokedexScreenData->data[0] = 1; } else - gUnknown_203ACF0->field_02[0]--; + sPokedexScreenData->data[0]--; } else { FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 13; + sPokedexScreenData->state = 13; } break; case 21: - sub_810603C(); - gUnknown_203ACF0->field_01 = 22; + DexScreen_DrawMonAreaPage(); + sPokedexScreenData->state = 22; break; case 22: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 23; + sPokedexScreenData->state = 23; break; case 23: if (JOY_NEW(A_BUTTON)) @@ -1791,7 +1829,7 @@ static void sub_8103AC8(u8 taskId) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 26; + sPokedexScreenData->state = 26; } else if (JOY_NEW(B_BUTTON)) { @@ -1801,42 +1839,45 @@ static void sub_8103AC8(u8 taskId) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 24; + sPokedexScreenData->state = 24; } else { - sub_8106B34(); + DexScreen_InputHandler_StartToCry(); } break; case 24: - sub_81067C0(); - gUnknown_203ACF0->field_01 = 25; + DexScreen_DestroyAreaScreenResources(); + sPokedexScreenData->state = 25; break; case 25: - sub_8105E1C(0); + DexScreen_DrawMonDexPage(FALSE); CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 17; + sPokedexScreenData->state = 17; break; case 26: - sub_81067C0(); - gUnknown_203ACF0->field_01 = 18; + DexScreen_DestroyAreaScreenResources(); + sPokedexScreenData->state = 18; break; } } -static u8 sub_8104234(void) +static u8 DexScreen_CreateCategoryMenuScrollArrows(void) { - struct ScrollArrowsTemplate template = sUnknown_84524B4; - template.fullyUpThreshold = gUnknown_203ACF0->field_29; - template.fullyDownThreshold = gUnknown_203ACF0->field_2A - 1; - gUnknown_203ACF0->field_62 = gUnknown_203ACF0->field_2B; - return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62); + struct ScrollArrowsTemplate template = sScrollArrowsTemplate_CategoryMenu; + template.fullyUpThreshold = sPokedexScreenData->firstPageInCategory; + template.fullyDownThreshold = sPokedexScreenData->lastPageInCategory - 1; + sPokedexScreenData->modeSelectCursorPosBak = sPokedexScreenData->pageNum; + return AddScrollIndicatorArrowPair(&template, &sPokedexScreenData->modeSelectCursorPosBak); } -static int sub_8104284(void) +/* + * Returns 1 to flip pages left, 2 to flip pages right, 0 for no action + */ +static int DexScreen_InputHandler_GetShoulderInput(void) { switch (gSaveBlock2Ptr->optionsButtonMode) { @@ -1861,95 +1902,95 @@ static int sub_8104284(void) } } -static void sub_81042EC(u8 taskId) +static void Task_DexScreen_ShowMonPage(u8 taskId) { - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: HideBg(3); HideBg(2); HideBg(1); - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->state = 2; break; case 1: HideBg(2); HideBg(1); - gTasks[taskId].func = sub_8102F80; - gUnknown_203ACF0->field_01 = 0; + gTasks[taskId].func = Task_DexScreen_NumericalOrder; + sPokedexScreenData->state = 0; break; case 2: - gUnknown_203ACF0->field_2C = 1; - sub_8105E1C(0); - gUnknown_203ACF0->field_01 = 3; + sPokedexScreenData->numMonsOnPage = 1; + DexScreen_DrawMonDexPage(FALSE); + sPokedexScreenData->state = 3; break; case 3: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); - gUnknown_203ACF0->field_01 = 4; + PlayCry2(sPokedexScreenData->dexSpecies, 0, 125, 10); + sPokedexScreenData->state = 4; break; case 4: - BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); + BeginNormalPaletteFade(~0x8000, 0, 16, 0, RGB_WHITEALPHA); ShowBg(3); ShowBg(2); ShowBg(1); - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->state = 5; break; case 5: if (JOY_NEW(A_BUTTON)) { - sub_8106014(); + RemoveDexPageWindows(); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16); CopyBgTilemapBufferToVram(1); - gUnknown_203ACF0->field_01 = 7; + sPokedexScreenData->state = 7; } else if (JOY_NEW(B_BUTTON)) { - sub_8106014(); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 1; + RemoveDexPageWindows(); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 1; } - else if (JOY_NEW(DPAD_UP) && sub_8104664(1)) + else if (JOY_NEW(DPAD_UP) && DexScreen_TryScrollMonsVertical(1)) { - sub_8106014(); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 6; + RemoveDexPageWindows(); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 6; } - else if (JOY_NEW(DPAD_DOWN) && sub_8104664(0)) + else if (JOY_NEW(DPAD_DOWN) && DexScreen_TryScrollMonsVertical(0)) { - sub_8106014(); - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 6; + RemoveDexPageWindows(); + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 6; } else { - sub_8106B34(); + DexScreen_InputHandler_StartToCry(); } break; case 6: HideBg(2); HideBg(1); - gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_30; - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->dexSpecies = sPokedexScreenData->characteristicMenuInput; + sPokedexScreenData->state = 2; break; case 7: - sub_810603C(); - gUnknown_203ACF0->field_01 = 8; + DexScreen_DrawMonAreaPage(); + sPokedexScreenData->state = 8; break; case 8: CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 9; + sPokedexScreenData->state = 9; break; case 9: if (JOY_NEW(A_BUTTON)) { - BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); - gUnknown_203ACF0->field_01 = 12; + BeginNormalPaletteFade(~0x8000, 0, 0, 16, RGB_WHITEALPHA); + sPokedexScreenData->state = 12; } else if (JOY_NEW(B_BUTTON)) { @@ -1959,128 +2000,128 @@ static void sub_81042EC(u8 taskId) CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 10; + sPokedexScreenData->state = 10; } else { - sub_8106B34(); + DexScreen_InputHandler_StartToCry(); } break; case 10: - sub_81067C0(); - gUnknown_203ACF0->field_01 = 11; + DexScreen_DestroyAreaScreenResources(); + sPokedexScreenData->state = 11; break; case 11: - sub_8105E1C(0); + DexScreen_DrawMonDexPage(FALSE); CopyBgTilemapBufferToVram(3); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->state = 5; break; case 12: - sub_81067C0(); + DexScreen_DestroyAreaScreenResources(); FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_01 = 1; + sPokedexScreenData->state = 1; break; } } -static bool32 sub_8104664(u8 a0) +static bool32 DexScreen_TryScrollMonsVertical(u8 direction) { - int r3; - u16 *r6, *r12; + int selectedIndex; + u16 *itemsAbove_p, *cursorPos_p; - switch (gUnknown_203ACF0->field_42) + switch (sPokedexScreenData->dexOrderId) { default: - case 0: - r12 = &gUnknown_203ACF0->field_36; - r6 = &gUnknown_203ACF0->field_34; + case DEX_ORDER_NUMERICAL_KANTO: + cursorPos_p = &sPokedexScreenData->kantoOrderMenuCursorPos; + itemsAbove_p = &sPokedexScreenData->kantoOrderMenuItemsAbove; break; - case 1: - case 2: - case 3: - case 4: - r12 = &gUnknown_203ACF0->field_3A; - r6 = &gUnknown_203ACF0->field_38; + case DEX_ORDER_ATOZ: + case DEX_ORDER_TYPE: + case DEX_ORDER_LIGHTEST: + case DEX_ORDER_SMALLEST: + cursorPos_p = &sPokedexScreenData->characteristicOrderMenuCursorPos; + itemsAbove_p = &sPokedexScreenData->characteristicOrderMenuItemsAbove; break; - case 5: - r12 = &gUnknown_203ACF0->field_3E; - r6 = &gUnknown_203ACF0->field_3C; + case DEX_ORDER_NUMERICAL_NATIONAL: + cursorPos_p = &sPokedexScreenData->nationalOrderMenuCursorPos; + itemsAbove_p = &sPokedexScreenData->nationalOrderMenuItemsAbove; break; } - r3 = *r12 + *r6; - if (a0) + selectedIndex = *cursorPos_p + *itemsAbove_p; + if (direction) // Seek up { - if (r3 == 0) + if (selectedIndex == 0) return FALSE; - r3--; - while (r3 >= 0) //Should be while (--r3 >= 0) without the r3-- in the body or before the while at all, but this is needed to match. + selectedIndex--; + while (selectedIndex >= 0) //Should be while (--selectedIndex >= 0) without the selectedIndex-- in the body or before the while at all, but this is needed to match. { - if ((gUnknown_203ACF0->field_44[r3].index >> 16) & 1) + if ((sPokedexScreenData->listItems[selectedIndex].index >> 16) & 1) { break; } - r3--; + selectedIndex--; } - if (r3 < 0) + if (selectedIndex < 0) { return FALSE; } } - else + else // Seek down { - if (r3 == gUnknown_203ACF0->field_48 - 1) + if (selectedIndex == sPokedexScreenData->orderedDexCount - 1) { return FALSE; } - r3++; - while (r3 < gUnknown_203ACF0->field_48) //Should be while (++r3 < gUnknown_203ACF0->field_48) without the r3++ in the body or before the while at all, but this is needed to match. + selectedIndex++; + while (selectedIndex < sPokedexScreenData->orderedDexCount) //Should be while (++selectedIndex < sPokedexScreenData->orderedDexCount) without the selectedIndex++ in the body or before the while at all, but this is needed to match. { - if ((gUnknown_203ACF0->field_44[r3].index >> 16) & 1) + if ((sPokedexScreenData->listItems[selectedIndex].index >> 16) & 1) break; - r3++; + selectedIndex++; } - if (r3 >= gUnknown_203ACF0->field_48) + if (selectedIndex >= sPokedexScreenData->orderedDexCount) { return FALSE; } } - gUnknown_203ACF0->field_30 = gUnknown_203ACF0->field_44[r3].index; + sPokedexScreenData->characteristicMenuInput = sPokedexScreenData->listItems[selectedIndex].index; - if (gUnknown_203ACF0->field_48 > 9) + if (sPokedexScreenData->orderedDexCount > 9) { - if (r3 < 4) + if (selectedIndex < 4) { - *r12 = 0; - *r6 = r3; + *cursorPos_p = 0; + *itemsAbove_p = selectedIndex; } - else if (r3 >= (gUnknown_203ACF0->field_48 - 4)) + else if (selectedIndex >= (sPokedexScreenData->orderedDexCount - 4)) { - *r12 = (gUnknown_203ACF0->field_48 - 9); - *r6 = r3 + 9 - (gUnknown_203ACF0->field_48); + *cursorPos_p = (sPokedexScreenData->orderedDexCount - 9); + *itemsAbove_p = selectedIndex + 9 - (sPokedexScreenData->orderedDexCount); } else { - *r12 = r3 - 4; - *r6 = 4; + *cursorPos_p = selectedIndex - 4; + *itemsAbove_p = 4; } } else { - *r12 = 0; - *r6 = r3; + *cursorPos_p = 0; + *itemsAbove_p = selectedIndex; } return TRUE; } -void sub_81047B0(u8 *windowId_p) +static void DexScreen_RemoveWindow(u8 *windowId_p) { if (*windowId_p != 0xFF) { @@ -2089,7 +2130,7 @@ void sub_81047B0(u8 *windowId_p) } } -void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx) +static void DexScreen_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx) { u8 textColor[3]; switch (colorIdx) @@ -2123,17 +2164,17 @@ void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx) AddTextPrinterParameterized4(windowId, fontId, x, y, fontId == 0 ? 0 : 1, 0, textColor, -1, str); } -void sub_8104880(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) +void DexScreen_PrintNum3LeadingZeroes(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) { u8 buff[4]; buff[0] = (num / 100) + CHAR_0; buff[1] = ((num %= 100) / 10) + CHAR_0; buff[2] = (num % 10) + CHAR_0; buff[3] = EOS; - sub_81047C8(windowId, fontId, buff, x, y, colorIdx); + DexScreen_AddTextPrinterParameterized(windowId, fontId, buff, x, y, colorIdx); } -static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) +static void DexScreen_PrintNum3RightAlign(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) { u8 buff[4]; int i; @@ -2147,10 +2188,10 @@ static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx break; buff[i] = CHAR_SPACE; } - sub_81047C8(windowId, fontId, buff, x, y, colorIdx); + DexScreen_AddTextPrinterParameterized(windowId, fontId, buff, x, y, colorIdx); } -u32 sub_81049CC(int species) +static u32 DexScreen_GetDefaultPersonality(int species) { switch (species) { @@ -2163,19 +2204,19 @@ u32 sub_81049CC(int species) } } -void sub_81049FC(u8 windowId, u16 species, u16 paletteOffset) +static void DexScreen_LoadMonPicInWindow(u8 windowId, u16 species, u16 paletteOffset) { - LoadMonPicInWindow(species, 8, sub_81049CC(species), TRUE, paletteOffset >> 4, windowId); + LoadMonPicInWindow(species, 8, DexScreen_GetDefaultPersonality(species), TRUE, paletteOffset >> 4, windowId); } -void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y) +static void DexScreen_PrintMonDexNo(u8 windowId, u8 fontId, u16 species, u8 x, u8 y) { u16 dexNum = SpeciesToNationalPokedexNum(species); - sub_81047C8(windowId, fontId, gText_PokedexNo, x, y, 0); - sub_8104880(windowId, fontId, dexNum, x + 9, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, fontId, gText_PokedexNo, x, y, 0); + DexScreen_PrintNum3LeadingZeroes(windowId, fontId, dexNum, x + 9, y, 0); } -s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) +s8 DexScreen_GetSetPokedexFlag(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) { u8 index; u8 bit; @@ -2195,6 +2236,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) case FLAG_GET_SEEN: if (gSaveBlock2Ptr->pokedex.seen[index] & mask) { + // Anticheat if ((gSaveBlock2Ptr->pokedex.seen[index] & mask) == (gSaveBlock1Ptr->seen1[index] & mask) && (gSaveBlock2Ptr->pokedex.seen[index] & mask) == (gSaveBlock1Ptr->seen2[index] & mask)) retVal = 1; @@ -2203,6 +2245,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) case FLAG_GET_CAUGHT: if (gSaveBlock2Ptr->pokedex.owned[index] & mask) { + // Anticheat if ((gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock2Ptr->pokedex.seen[index] & mask) && (gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock1Ptr->seen1[index] & mask) && (gSaveBlock2Ptr->pokedex.owned[index] & mask) == (gSaveBlock1Ptr->seen2[index] & mask)) @@ -2211,6 +2254,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) break; case FLAG_SET_SEEN: gSaveBlock2Ptr->pokedex.seen[index] |= mask; + // Anticheat gSaveBlock1Ptr->seen1[index] |= mask; gSaveBlock1Ptr->seen2[index] |= mask; break; @@ -2221,7 +2265,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) return retVal; } -static u16 sub_8104BBC(u8 caseId, bool8 whichDex) +static u16 DexScreen_GetDexCount(u8 caseId, bool8 whichDex) { u16 count = 0; u16 i; @@ -2231,14 +2275,14 @@ static u16 sub_8104BBC(u8 caseId, bool8 whichDex) case 0: // Kanto for (i = 0; i < KANTO_DEX_COUNT; i++) { - if (sub_8104AB0(i + 1, caseId, FALSE)) + if (DexScreen_GetSetPokedexFlag(i + 1, caseId, FALSE)) count++; } break; case 1: // National for (i = 0; i < NATIONAL_DEX_COUNT; i++) { - if (sub_8104AB0(i + 1, caseId, FALSE)) + if (DexScreen_GetSetPokedexFlag(i + 1, caseId, FALSE)) count++; } @@ -2247,157 +2291,157 @@ static u16 sub_8104BBC(u8 caseId, bool8 whichDex) return count; } -void sub_8104C2C(const u8 *src) +static void DexScreen_PrintControlInfo(const u8 *src) { - sub_81047C8(1, 0, src, 236 - GetStringWidth(0, src, 0), 2, 4); + DexScreen_AddTextPrinterParameterized(1, 0, src, 236 - GetStringWidth(0, src, 0), 2, 4); } -bool8 sub_8104C64(u16 a0, u8 a1, u8 a2) +bool8 DexScreen_DrawMonPicInCategoryPage(u16 species, u8 slot, u8 numSlots) { struct WindowTemplate template; - a2--; - CopyToBgTilemapBufferRect_ChangePalette(3, sUnknown_845228C, gUnknown_8452334[a2][a1][0], gUnknown_8452334[a2][a1][1], 8, 8, a1 + 5); - if (gUnknown_203ACF0->field_20[a1] == 0xFF) + numSlots--; + CopyToBgTilemapBufferRect_ChangePalette(3, sCategoryPageIconWindowBg, sCategoryPageIconCoords[numSlots][slot][0], sCategoryPageIconCoords[numSlots][slot][1], 8, 8, slot + 5); + if (sPokedexScreenData->categoryMonWindowIds[slot] == 0xFF) { - template = sUnknown_84521C4; - template.tilemapLeft = gUnknown_8452334[a2][a1][0]; - template.tilemapTop = gUnknown_8452334[a2][a1][1]; - template.paletteNum = a1 + 1; - template.baseBlock = a1 * 64 + 8; - gUnknown_203ACF0->field_20[a1] = AddWindow(&template); - FillWindowPixelBuffer(gUnknown_203ACF0->field_20[a1], PIXEL_FILL(0)); - sub_81049FC(gUnknown_203ACF0->field_20[a1], a0, a1 * 16 + 16); - PutWindowTilemap(gUnknown_203ACF0->field_20[a1]); - CopyWindowToVram(gUnknown_203ACF0->field_20[a1], COPYWIN_GFX); + template = sWindowTemplate_CategoryMonIcon; + template.tilemapLeft = sCategoryPageIconCoords[numSlots][slot][0]; + template.tilemapTop = sCategoryPageIconCoords[numSlots][slot][1]; + template.paletteNum = slot + 1; + template.baseBlock = slot * 64 + 8; + sPokedexScreenData->categoryMonWindowIds[slot] = AddWindow(&template); + FillWindowPixelBuffer(sPokedexScreenData->categoryMonWindowIds[slot], PIXEL_FILL(0)); + DexScreen_LoadMonPicInWindow(sPokedexScreenData->categoryMonWindowIds[slot], species, slot * 16 + 16); + PutWindowTilemap(sPokedexScreenData->categoryMonWindowIds[slot]); + CopyWindowToVram(sPokedexScreenData->categoryMonWindowIds[slot], COPYWIN_GFX); } else - PutWindowTilemap(gUnknown_203ACF0->field_20[a1]); + PutWindowTilemap(sPokedexScreenData->categoryMonWindowIds[slot]); - if (gUnknown_203ACF0->field_24[a1] == 0xFF) + if (sPokedexScreenData->categoryMonInfoWindowIds[slot] == 0xFF) { - if (a0 != SPECIES_NONE) + if (species != SPECIES_NONE) { - template = sUnknown_84521CC; - template.tilemapLeft = gUnknown_8452334[a2][a1][2]; - template.tilemapTop = gUnknown_8452334[a2][a1][3]; - template.baseBlock = a1 * 40 + 0x108; - gUnknown_203ACF0->field_24[a1] = AddWindow(&template); - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_24[a1], gUnknown_8440124, 0, 0); - sub_8104A34(gUnknown_203ACF0->field_24[a1], 0, a0, 12, 0); - sub_81047C8(gUnknown_203ACF0->field_24[a1], 2, gSpeciesNames[a0], 2, 13, 0); - if (sub_8104AB0(a0, FLAG_GET_CAUGHT, TRUE)) - BlitBitmapRectToWindow(gUnknown_203ACF0->field_24[a1], gUnknown_8443600, 0, 0, 8, 8, 2, 3, 8, 8); - PutWindowTilemap(gUnknown_203ACF0->field_24[a1]); - CopyWindowToVram(gUnknown_203ACF0->field_24[a1], COPYWIN_GFX); + template = sWindowTemplate_CategoryMonInfo; + template.tilemapLeft = sCategoryPageIconCoords[numSlots][slot][2]; + template.tilemapTop = sCategoryPageIconCoords[numSlots][slot][3]; + template.baseBlock = slot * 40 + 0x108; + sPokedexScreenData->categoryMonInfoWindowIds[slot] = AddWindow(&template); + CopyToWindowPixelBuffer(sPokedexScreenData->categoryMonInfoWindowIds[slot], sCategoryMonInfoBgTiles, 0, 0); + DexScreen_PrintMonDexNo(sPokedexScreenData->categoryMonInfoWindowIds[slot], 0, species, 12, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->categoryMonInfoWindowIds[slot], 2, gSpeciesNames[species], 2, 13, 0); + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, TRUE)) + BlitBitmapRectToWindow(sPokedexScreenData->categoryMonInfoWindowIds[slot], sDexScreen_CaughtIcon, 0, 0, 8, 8, 2, 3, 8, 8); + PutWindowTilemap(sPokedexScreenData->categoryMonInfoWindowIds[slot]); + CopyWindowToVram(sPokedexScreenData->categoryMonInfoWindowIds[slot], COPYWIN_GFX); } } else - PutWindowTilemap(gUnknown_203ACF0->field_24[a1]); + PutWindowTilemap(sPokedexScreenData->categoryMonInfoWindowIds[slot]); return TRUE; } -void sub_8104E90(void) +static void DexScreen_DestroyCategoryPageMonIconAndInfoWindows(void) { int i; for (i = 0; i < 4; i++) { - sub_81047B0(&gUnknown_203ACF0->field_20[i]); - sub_81047B0(&gUnknown_203ACF0->field_24[i]); + DexScreen_RemoveWindow(&sPokedexScreenData->categoryMonWindowIds[i]); + DexScreen_RemoveWindow(&sPokedexScreenData->categoryMonInfoWindowIds[i]); } } -void sub_8104EC0(u8 unused, u16 a1, u16 a2, u8 unused2, u8 unused3) +static void DexScreen_PrintCategoryPageNumbers(u8 windowId, u16 currentPage, u16 totalPages, u16 x, u16 y) { u8 buffer[30]; u8 *ptr = StringCopy(buffer, gText_Page); - ptr = ConvertIntToDecimalStringN(ptr, a1, STR_CONV_MODE_RIGHT_ALIGN, 2); + ptr = ConvertIntToDecimalStringN(ptr, currentPage, STR_CONV_MODE_RIGHT_ALIGN, 2); *ptr++ = CHAR_SLASH; - ptr = ConvertIntToDecimalStringN(ptr, a2, STR_CONV_MODE_RIGHT_ALIGN, 2); - sub_8106E78(buffer, 2); + ptr = ConvertIntToDecimalStringN(ptr, totalPages, STR_CONV_MODE_RIGHT_ALIGN, 2); + DexScreen_PrintStringWithAlignment(buffer, TEXT_RIGHT); } -bool8 sub_8104F0C(bool8 a0) +static bool8 DexScreen_CreateCategoryListGfx(bool8 justRegistered) { FillBgTilemapBufferRect_Palette0(3, 2, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 32, 20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20); - sub_81068DC(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B); + DexScreen_CreateCategoryPageSpeciesList(sPokedexScreenData->category, sPokedexScreenData->pageNum); FillWindowPixelBuffer(0, PIXEL_FILL(15)); - if (a0) + if (justRegistered) { - sub_8106E78(sDexCategoryNamePtrs[gUnknown_203ACF0->field_28], 1); + DexScreen_PrintStringWithAlignment(sDexCategoryNamePtrs[sPokedexScreenData->category], TEXT_CENTER); } else { - sub_8106E78(sDexCategoryNamePtrs[gUnknown_203ACF0->field_28], 0); - sub_8104EC0(0, sub_8106AF8(gUnknown_203ACF0->field_2B), sub_8106AF8(gUnknown_203ACF0->field_2A - 1), 160, 2); + DexScreen_PrintStringWithAlignment(sDexCategoryNamePtrs[sPokedexScreenData->category], TEXT_LEFT); + DexScreen_PrintCategoryPageNumbers(0, DexScreen_PageNumberToRenderablePages(sPokedexScreenData->pageNum), DexScreen_PageNumberToRenderablePages(sPokedexScreenData->lastPageInCategory - 1), 160, 2); } CopyWindowToVram(0, COPYWIN_GFX); FillWindowPixelBuffer(1, PIXEL_FILL(15)); - if (!a0) - sub_8104C2C(gText_PickFlipPageCheckCancel); + if (!justRegistered) + DexScreen_PrintControlInfo(gText_PickFlipPageCheckCancel); CopyWindowToVram(1, COPYWIN_GFX); - if (gUnknown_203ACF0->field_18[0] != 0xFFFF) - sub_8104C64(gUnknown_203ACF0->field_18[0], 0, gUnknown_203ACF0->field_2C); - if (gUnknown_203ACF0->field_18[1] != 0xFFFF) - sub_8104C64(gUnknown_203ACF0->field_18[1], 1, gUnknown_203ACF0->field_2C); - if (gUnknown_203ACF0->field_18[2] != 0xFFFF) - sub_8104C64(gUnknown_203ACF0->field_18[2], 2, gUnknown_203ACF0->field_2C); - if (gUnknown_203ACF0->field_18[3] != 0xFFFF) - sub_8104C64(gUnknown_203ACF0->field_18[3], 3, gUnknown_203ACF0->field_2C); + if (sPokedexScreenData->pageSpecies[0] != 0xFFFF) + DexScreen_DrawMonPicInCategoryPage(sPokedexScreenData->pageSpecies[0], 0, sPokedexScreenData->numMonsOnPage); + if (sPokedexScreenData->pageSpecies[1] != 0xFFFF) + DexScreen_DrawMonPicInCategoryPage(sPokedexScreenData->pageSpecies[1], 1, sPokedexScreenData->numMonsOnPage); + if (sPokedexScreenData->pageSpecies[2] != 0xFFFF) + DexScreen_DrawMonPicInCategoryPage(sPokedexScreenData->pageSpecies[2], 2, sPokedexScreenData->numMonsOnPage); + if (sPokedexScreenData->pageSpecies[3] != 0xFFFF) + DexScreen_DrawMonPicInCategoryPage(sPokedexScreenData->pageSpecies[3], 3, sPokedexScreenData->numMonsOnPage); return FALSE; } -void sub_8105058(u8 a0) +static void DexScreen_CreateCategoryPageSelectionCursor(u8 cursorPos) { int i; - u32 r7; + u32 palIdx; - if (a0 == 0xFF) + if (cursorPos == 0xFF) { for (i = 0; i < 4; i++) { - LoadPalette(&gUnknown_84406C8[0], 0x52 + 0x10 * i, 2); - LoadPalette(&gUnknown_84406C8[1], 0x58 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[0], 0x52 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[1], 0x58 + 0x10 * i, 2); } - LoadPalette(&gUnknown_84406C8[0], 0x141, 2); - gUnknown_203ACF0->field_2E = 0; + LoadPalette(&sDexScreen_CategoryCursorPals[0], 0x141, 2); + sPokedexScreenData->categoryPageSelectionCursorTimer = 0; } else { - gUnknown_203ACF0->field_2E++; - if (gUnknown_203ACF0->field_2E == 16) - gUnknown_203ACF0->field_2E = 0; - r7 = gUnknown_203ACF0->field_2E >> 2; + sPokedexScreenData->categoryPageSelectionCursorTimer++; + if (sPokedexScreenData->categoryPageSelectionCursorTimer == 16) + sPokedexScreenData->categoryPageSelectionCursorTimer = 0; + palIdx = sPokedexScreenData->categoryPageSelectionCursorTimer >> 2; for (i = 0; i < 4; i++) { - if (i == a0) + if (i == cursorPos) { - LoadPalette(&gUnknown_84406C8[2 * r7 + 2], 0x52 + 0x10 * i, 2); - LoadPalette(&gUnknown_84406C8[2 * r7 + 3], 0x58 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[2 * palIdx + 2], 0x52 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[2 * palIdx + 3], 0x58 + 0x10 * i, 2); } else { - LoadPalette(&gUnknown_84406C8[0], 0x52 + 0x10 * i, 2); - LoadPalette(&gUnknown_84406C8[1], 0x58 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[0], 0x52 + 0x10 * i, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[1], 0x58 + 0x10 * i, 2); } } - LoadPalette(&gUnknown_84406C8[2 * r7 + 2], 0x141, 2); + LoadPalette(&sDexScreen_CategoryCursorPals[2 * palIdx + 2], 0x141, 2); } } -void sub_8105178(u8 a0, u8 a1, u8 a2) +static void DexScreen_UpdateCategoryPageCursorObject(u8 taskId, u8 cursorPos, u8 numMonsInPage) { - a2--; - ListMenuUpdateCursorObject(a0, gUnknown_8452334[a2][a1][2] * 8, gUnknown_8452334[a2][a1][3] * 8, 0); + numMonsInPage--; + ListMenuUpdateCursorObject(taskId, sCategoryPageIconCoords[numMonsInPage][cursorPos][2] * 8, sCategoryPageIconCoords[numMonsInPage][cursorPos][3] * 8, 0); } -bool8 sub_81051AC(const u16 *a0, u8 a1, u16 *a2, u8 a3) +bool8 DexPage_TileBuffer_CopyCol(const u16 *srcBuf, u8 srcCol, u16 *dstBuf, u8 dstCol) { int i; - const u16 *src = &a0[a1]; - u16 *dst = &a2[a3]; + const u16 *src = &srcBuf[srcCol]; + u16 *dst = &dstBuf[dstCol]; for (i = 0; i < 20; i++) { *dst = *src; @@ -2407,42 +2451,42 @@ bool8 sub_81051AC(const u16 *a0, u8 a1, u16 *a2, u8 a3) return FALSE; } -bool8 sub_81051D0(u16 a0, u16 *a1, u8 a2) +bool8 DexPage_TileBuffer_FillCol(u16 tileNo, u16 *tileBuf, u8 x) { int i; - u16 *dst = &a1[a2]; + u16 *dst = &tileBuf[x]; for (i = 0; i < 20; i++) { - *dst = a0; + *dst = tileNo; dst += 32; } return FALSE; } -bool8 sub_81051F0(u8 a0) +bool8 DexScreen_TurnCategoryPage_BgEffect(u8 page) { - int i; - int r4; + int dstCol; + int srcCol; u16 *bg1buff = GetBgTilemapBuffer(1); u16 *bg2buff = GetBgTilemapBuffer(2); u16 *bg3buff = GetBgTilemapBuffer(3); - u16 *sp04 = gUnknown_203ACF0->field_5C + 0x800; - u16 *sp08 = gUnknown_203ACF0->field_5C + 0x400; - u16 *sp0C = gUnknown_203ACF0->field_5C + 0x000; - for (i = 0; i < 30; i++) + u16 *bg1mem = sPokedexScreenData->bgBufsMem + 0x800; + u16 *bg2mem = sPokedexScreenData->bgBufsMem + 0x400; + u16 *bg3mem = sPokedexScreenData->bgBufsMem + 0x000; + for (dstCol = 0; dstCol < 30; dstCol++) { - r4 = sUnknown_8452388[a0][i]; - if (r4 == 30) + srcCol = sDexScreenPageTurnColumns[page][dstCol]; + if (srcCol == 30) { - sub_81051D0(0x000, bg1buff, i); - sub_81051D0(0x000, bg2buff, i); - sub_81051D0(0x00C, bg3buff, i); + DexPage_TileBuffer_FillCol(0x000, bg1buff, dstCol); + DexPage_TileBuffer_FillCol(0x000, bg2buff, dstCol); + DexPage_TileBuffer_FillCol(0x00C, bg3buff, dstCol); } else { - sub_81051AC(sp04, r4, bg1buff, i); - sub_81051AC(sp08, r4, bg2buff, i); - sub_81051AC(sp0C, r4, bg3buff, i); + DexPage_TileBuffer_CopyCol(bg1mem, srcCol, bg1buff, dstCol); + DexPage_TileBuffer_CopyCol(bg2mem, srcCol, bg2buff, dstCol); + DexPage_TileBuffer_CopyCol(bg3mem, srcCol, bg3buff, dstCol); } } CopyBgTilemapBufferToVram(1); @@ -2451,28 +2495,32 @@ bool8 sub_81051F0(u8 a0) return FALSE; } -static bool8 sub_81052D0(u8 a0) +/* + * Direction = 0: Left; 1: Right + */ +static bool8 DexScreen_FlipCategoryPageInDirection(u8 direction) { - u16 r4; + u16 color; if (IsNationalPokedexEnabled()) - r4 = gUnknown_84406E0[7]; + color = sNationalDexPalette[7]; else - r4 = gUnknown_84404C8[7]; - switch (gUnknown_203ACF0->field_02[0]) + color = sKantoDexPalette[7]; + switch (sPokedexScreenData->data[0]) { case 0: - gUnknown_203ACF0->field_5C = Alloc(3 * BG_SCREEN_SIZE); - if (a0) - gUnknown_203ACF0->field_02[0] = 6; + sPokedexScreenData->bgBufsMem = Alloc(3 * BG_SCREEN_SIZE); + if (direction) + sPokedexScreenData->data[0] = 6; else - gUnknown_203ACF0->field_02[0] = 2; + sPokedexScreenData->data[0] = 2; break; case 1: - Free(gUnknown_203ACF0->field_5C); + Free(sPokedexScreenData->bgBufsMem); return TRUE; + // Go left case 2: - BeginNormalPaletteFade(0x00007FFF, 0, 0, 16, r4); - gUnknown_203ACF0->field_02[0]++; + BeginNormalPaletteFade(0x00007FFF, 0, 0, 16, color); + sPokedexScreenData->data[0]++; break; case 3: FillBgTilemapBufferRect_Palette0(3, 0x00C, 0, 0, 30, 20); @@ -2481,128 +2529,141 @@ static bool8 sub_81052D0(u8 a0) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - gUnknown_203ACF0->field_02[0]++; + sPokedexScreenData->data[0]++; break; case 4: - BeginNormalPaletteFade(0x00007FFF, 0, 0, 0, r4); - sub_8104F0C(FALSE); - CpuFastCopy(GetBgTilemapBuffer(3), &gUnknown_203ACF0->field_5C[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - CpuFastCopy(GetBgTilemapBuffer(2), &gUnknown_203ACF0->field_5C[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - CpuFastCopy(GetBgTilemapBuffer(1), &gUnknown_203ACF0->field_5C[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + BeginNormalPaletteFade(0x00007FFF, 0, 0, 0, color); + DexScreen_CreateCategoryListGfx(FALSE); + CpuFastCopy(GetBgTilemapBuffer(3), &sPokedexScreenData->bgBufsMem[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(2), &sPokedexScreenData->bgBufsMem[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(1), &sPokedexScreenData->bgBufsMem[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); FillBgTilemapBufferRect_Palette0(3, 0x00C, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 32, 20); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20); - - gUnknown_203ACF0->field_02[1] = 0; - gUnknown_203ACF0->field_02[0]++; + + sPokedexScreenData->data[1] = 0; + sPokedexScreenData->data[0]++; PlaySE(SE_BALL_TRAY_ENTER); break; case 5: - if (gUnknown_203ACF0->field_02[1] < 10) + if (sPokedexScreenData->data[1] < 10) { - sub_81051F0(gUnknown_203ACF0->field_02[1]); - gUnknown_203ACF0->field_02[1]++; + DexScreen_TurnCategoryPage_BgEffect(sPokedexScreenData->data[1]); + sPokedexScreenData->data[1]++; } else { - gUnknown_203ACF0->field_02[0] = 1; + sPokedexScreenData->data[0] = 1; } break; + // Go right case 6: - CpuFastCopy(GetBgTilemapBuffer(3), &gUnknown_203ACF0->field_5C[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - CpuFastCopy(GetBgTilemapBuffer(2), &gUnknown_203ACF0->field_5C[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - CpuFastCopy(GetBgTilemapBuffer(1), &gUnknown_203ACF0->field_5C[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(3), &sPokedexScreenData->bgBufsMem[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(2), &sPokedexScreenData->bgBufsMem[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); + CpuFastCopy(GetBgTilemapBuffer(1), &sPokedexScreenData->bgBufsMem[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - gUnknown_203ACF0->field_02[1] = 9; - gUnknown_203ACF0->field_02[0]++; + sPokedexScreenData->data[1] = 9; + sPokedexScreenData->data[0]++; PlaySE(SE_BALL_TRAY_ENTER); break; case 7: - if (gUnknown_203ACF0->field_02[1] != 0) + if (sPokedexScreenData->data[1] != 0) { - sub_81051F0(gUnknown_203ACF0->field_02[1]); - gUnknown_203ACF0->field_02[1]--; + DexScreen_TurnCategoryPage_BgEffect(sPokedexScreenData->data[1]); + sPokedexScreenData->data[1]--; } else { - sub_81051F0(gUnknown_203ACF0->field_02[0]); - BeginNormalPaletteFade(0x00007FFF, 0, 16, 16, r4); - gUnknown_203ACF0->field_02[0]++; +#ifdef BUGFIX + DexScreen_TurnCategoryPage_BgEffect(0); +#else + DexScreen_TurnCategoryPage_BgEffect(sPokedexScreenData->data[0]); +#endif + BeginNormalPaletteFade(0x00007FFF, 0, 16, 16, color); + sPokedexScreenData->data[0]++; } break; case 8: gPaletteFade.bufferTransferDisabled = TRUE; - sub_8104F0C(FALSE); + DexScreen_CreateCategoryListGfx(FALSE); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - gUnknown_203ACF0->field_02[0]++; + sPokedexScreenData->data[0]++; break; case 9: gPaletteFade.bufferTransferDisabled = FALSE; - BeginNormalPaletteFade(0x00007FFF, 0, 16, 0, r4); - gUnknown_203ACF0->field_02[0] = 1; + BeginNormalPaletteFade(0x00007FFF, 0, 16, 0, color); + sPokedexScreenData->data[0] = 1; break; } return FALSE; } -void sub_8105594(u8 a0, u8 a1) +// Scale from 0 to 6 +void DexScreen_DexPageZoomEffectFrame(u8 bg, u8 scale) { - u8 v0, v1, v2, v3; - s16 v4, v5, v6; - - if (!gUnknown_203ACF0->field_2C) + u8 tileLeft, tileTop, width, height; + s16 left, top, divY; + + if (!sPokedexScreenData->numMonsOnPage) { - v0 = gUnknown_8452334[0][0][2]; - v1 = gUnknown_8452334[0][0][3]; + tileLeft = sCategoryPageIconCoords[0][0][2]; + tileTop = sCategoryPageIconCoords[0][0][3]; } else { - v0 = gUnknown_8452334[gUnknown_203ACF0->field_2C - 1][gUnknown_203ACF0->field_2D][2]; - v1 = gUnknown_8452334[gUnknown_203ACF0->field_2C - 1][gUnknown_203ACF0->field_2D][3]; + tileLeft = sCategoryPageIconCoords[sPokedexScreenData->numMonsOnPage - 1][sPokedexScreenData->categoryCursorPosInPage][2]; + tileTop = sCategoryPageIconCoords[sPokedexScreenData->numMonsOnPage - 1][sPokedexScreenData->categoryCursorPosInPage][3]; } - - v2 = 6 + (a1 * 4); - v3 = 3 + (a1 * 2); - if (v2 >= 28) - v2 = 28; - if (v3 >= 14) - v3 = 14; - v4 = v0 - ((a1 * 4) / 2); - v5 = v1 - ((a1 * 2) / 2); - if ((v4 + v2 + 2) >= 30) - v4 -= ((v4 + v2 + 2) - 30); - else if (v4 < 0) - v4 = 0; - if ((v5 + v3 + 2) >= 18) - v5 -= ((v5 + v3 + 2) - 18); - else if (v5 < 2) - v5 = 2; - v6 = (v5 + 1) + ((v3 / 2) + 1); - - FillBgTilemapBufferRect_Palette0(a0, 4, v4, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(a0, 5, v4 + 1, v5, v2, 1); - FillBgTilemapBufferRect_Palette0(a0, 1028, v4 + 1 + v2, v5, 1, 1); - - FillBgTilemapBufferRect_Palette0(a0, 10, v4, v5 + 1 + v3, 1, 1); - FillBgTilemapBufferRect_Palette0(a0, 11, v4 + 1, v5 + 1 + v3, v2, 1); - FillBgTilemapBufferRect_Palette0(a0, 1034, v4 + 1 + v2, v5 + 1 + v3, 1, 1); - - FillBgTilemapBufferRect_Palette0(a0, 6, v4, v5 + 1, 1, v6 - v5 - 1); - FillBgTilemapBufferRect_Palette0(a0, 7, v4, v6, 1, 1); - FillBgTilemapBufferRect_Palette0(a0, 9, v4, v6 + 1, 1, v5 + v3 - v6); - - FillBgTilemapBufferRect_Palette0(a0, 1030, v4 + 1 + v2, v5 + 1, 1, v6 - v5 - 1); - FillBgTilemapBufferRect_Palette0(a0, 1031, v4 + 1 + v2, v6, 1, 1); - FillBgTilemapBufferRect_Palette0(a0, 1033, v4 + 1 + v2, v6 + 1, 1, v5 + v3 - v6); - - FillBgTilemapBufferRect_Palette0(a0, 1, v4 + 1, v5 + 1, v2, v6 - v5 - 1); - FillBgTilemapBufferRect_Palette0(a0, 8, v4 + 1, v6, v2, 1); - FillBgTilemapBufferRect_Palette0(a0, 2, v4 + 1, v6 + 1, v2, v5 + v3 - v6); + + width = 6 + (scale * 4); + height = 3 + (scale * 2); + if (width >= 28) // Make sure it's not wider than the screen + width = 28; + if (height >= 14) // Make sure it's not taller than the screen + height = 14; + + left = tileLeft - ((scale * 4) / 2); + top = tileTop - ((scale * 2) / 2); + if ((left + width + 2) >= 30) // Don't wrap right... + left -= ((left + width + 2) - 30); + else if (left < 0) // ... left ... + left = 0; + if ((top + height + 2) >= 18) // ... down ... + top -= ((top + height + 2) - 18); + else if (top < 2) // or up. + top = 2; + + divY = (top + 1) + ((height / 2) + 1); // The horizontal divider + + // Top edge + FillBgTilemapBufferRect_Palette0(bg, 4, left, top, 1, 1); + FillBgTilemapBufferRect_Palette0(bg, 5, left + 1, top, width, 1); + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(4), left + 1 + width, top, 1, 1); + + // Bottom edge + FillBgTilemapBufferRect_Palette0(bg, 10, left, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(bg, 11, left + 1, top + 1 + height, width, 1); + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(10), left + 1 + width, top + 1 + height, 1, 1); + + // Left edge + FillBgTilemapBufferRect_Palette0(bg, 6, left, top + 1, 1, divY - top - 1); + FillBgTilemapBufferRect_Palette0(bg, 7, left, divY, 1, 1); + FillBgTilemapBufferRect_Palette0(bg, 9, left, divY + 1, 1, top + height - divY); + + // Right edge + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(6), left + 1 + width, top + 1, 1, divY - top - 1); + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(7), left + 1 + width, divY, 1, 1); + FillBgTilemapBufferRect_Palette0(bg, BG_TILE_H_FLIP(9), left + 1 + width, divY + 1, 1, top + height - divY); + + // Interior + FillBgTilemapBufferRect_Palette0(bg, 1, left + 1, top + 1, width, divY - top - 1); + FillBgTilemapBufferRect_Palette0(bg, 8, left + 1, divY, width, 1); + FillBgTilemapBufferRect_Palette0(bg, 2, left + 1, divY + 1, width, top + height - divY); } -void sub_8105800(u8 a0, u16 species, u8 a2, u8 a3) +void DexScreen_PrintMonCategory(u8 windowId, u16 species, u8 x, u8 y) { u8 * categoryName; u8 index, categoryStr[12]; @@ -2611,7 +2672,7 @@ void sub_8105800(u8 a0, u16 species, u8 a2, u8 a3) categoryName = (u8 *)gPokedexEntries[species].categoryName; index = 0; - if (sub_8104AB0(species, 1, 0)) + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, FALSE)) { #if REVISION == 0 while ((categoryName[index] != CHAR_SPACE) && (index < 11)) @@ -2631,15 +2692,15 @@ void sub_8105800(u8 a0, u16 species, u8 a2, u8 a3) index++; } } - + categoryStr[index] = EOS; - sub_81047C8(a0, 0, categoryStr, a2, a3, 0); - a2 += GetStringWidth(0, categoryStr, 0); - sub_81047C8(a0, 0, gText_PokedexPokemon, a2, a3, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, categoryStr, x, y, 0); + x += GetStringWidth(0, categoryStr, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, gText_PokedexPokemon, x, y, 0); } -void sub_81058C4(u8 windowId, u16 species, u8 x, u8 y) +void DexScreen_PrintMonHeight(u8 windowId, u16 species, u8 x, u8 y) { u16 height; u32 inches, feet; @@ -2657,7 +2718,7 @@ void sub_81058C4(u8 windowId, u16 species, u8 x, u8 y) buffer[i++] = 5; buffer[i++] = CHAR_SPACE; - if (sub_8104AB0(species, FLAG_GET_CAUGHT, 0)) + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, FALSE)) { inches = 10000 * height / 254; // actually tenths of inches here if (inches % 10 >= 5) @@ -2691,12 +2752,12 @@ void sub_81058C4(u8 windowId, u16 species, u8 x, u8 y) } buffer[i++] = EOS; - sub_81047C8(windowId, 0, labelText, x, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, labelText, x, y, 0); x += 30; - sub_81047C8(windowId, 0, buffer, x, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, buffer, x, y, 0); } -void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) +void DexScreen_PrintMonWeight(u8 windowId, u16 species, u8 x, u8 y) { u16 weight; u32 lbs; @@ -2717,10 +2778,11 @@ void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) buffer[i++] = EXT_CTRL_CODE_MIN_LETTER_SPACING; buffer[i++] = 5; - if (sub_8104AB0(species, FLAG_GET_CAUGHT, 0)) + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, FALSE)) { - lbs = (weight * 100000) / 4536; + lbs = (weight * 100000) / 4536; // Convert to hundredths of lb + // Round up to the nearest 0.1 lb if (lbs % 10 >= 5) lbs += 10; @@ -2746,7 +2808,7 @@ void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) output = TRUE; i++; } - + lbs %= 10000; if ((buffer[i] = (lbs / 1000) + CHAR_0) == CHAR_0 && !output) { @@ -2782,23 +2844,23 @@ void sub_8105A3C(u8 windowId, u16 species, u8 x, u8 y) buffer[i + j] = lbsText[j]; buffer[i + j] = EOS; - sub_81047C8(windowId, 0, labelText, x, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, labelText, x, y, 0); x += 30; - sub_81047C8(windowId, 0, buffer, x, y, 0); + DexScreen_AddTextPrinterParameterized(windowId, 0, buffer, x, y, 0); } -void sub_8105CB0(u8 a0, u16 species, u8 x, u8 y) +void DexScreen_PrintMonFlavorText(u8 windowId, u16 species, u8 x, u8 y) { struct TextPrinterTemplate printerTemplate; u16 length; - s32 v1; + s32 xCenter; species = SpeciesToNationalPokedexNum(species); - if (sub_8104AB0(species, 1, 0)) + if (DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, FALSE)) { printerTemplate.currentChar = gPokedexEntries[species].description; - printerTemplate.windowId = a0; + printerTemplate.windowId = windowId; printerTemplate.fontId = 2; printerTemplate.letterSpacing = 1; printerTemplate.lineSpacing = 0; @@ -2808,10 +2870,10 @@ void sub_8105CB0(u8 a0, u16 species, u8 x, u8 y) printerTemplate.shadowColor = 2; length = GetStringWidth(2, gPokedexEntries[species].description, 0); - v1 = x + (240 - length) / 2; + xCenter = x + (240 - length) / 2; - if (v1 > 0) - x = v1; + if (xCenter > 0) + x = xCenter; else x = 0; @@ -2824,257 +2886,281 @@ void sub_8105CB0(u8 a0, u16 species, u8 x, u8 y) } } -void sub_8105D64(u8 a0, u16 species, u8 a2, u8 a3) +void DexScreen_DrawMonFootprint(u8 windowId, u16 species, u8 x, u8 y) { - u16 i, j, unused, v3; - u8 v4, v5; + u16 i, j, unused, tileIdx; + u8 footprintPixel, footprintTile; u8 * buffer; u8 * footprint; - if (!(sub_8104AB0(species, 1, 1))) + if (!(DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, TRUE))) return; footprint = (u8 *)(gMonFootprintTable[species]); buffer = gDecompressionBuffer; unused = 0; - v3 = 0; + tileIdx = 0; + // Expand 1bpp to 4bpp for (i = 0; i < 32; i++) { - v4 = footprint[i]; - for (j = 0; j < 4; j++) + footprintPixel = footprint[i]; + for (j = 0; j < 8 / 2; j++) { - v5 = 0; - if (v4 & (1 << (j * 2))) - v5 |= 1; - if (v4 & (2 << (j * 2))) - v5 |= 16; - buffer[v3] = v5; - v3++; + footprintTile = 0; + if (footprintPixel & (1 << (j * 2))) + footprintTile |= 0x01; + if (footprintPixel & (2 << (j * 2))) + footprintTile |= 0x10; + buffer[tileIdx] = footprintTile; + tileIdx++; } } - BlitBitmapRectToWindow(a0, buffer, 0, 0, 16, 16, a2, a3, 16, 16); + BlitBitmapRectToWindow(windowId, buffer, 0, 0, 16, 16, x, y, 16, 16); } -u8 sub_8105E1C(bool8 a0) +static u8 DexScreen_DrawMonDexPage(bool8 justRegistered) { - sub_8105594(3, 6); + DexScreen_DexPageZoomEffectFrame(3, 6); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16); - gUnknown_203ACF0->field_4A[0] = AddWindow(&gUnknown_84521D4); - gUnknown_203ACF0->field_4A[1] = AddWindow(&gUnknown_84521DC); - gUnknown_203ACF0->field_4A[2] = AddWindow(&gUnknown_84521E4); + sPokedexScreenData->windowIds[0] = AddWindow(&sWindowTemplate_DexEntry_MonPic); + sPokedexScreenData->windowIds[1] = AddWindow(&sWindowTemplate_DexEntry_SpeciesStats); + sPokedexScreenData->windowIds[2] = AddWindow(&sWindowTemplate_DexEntry_FlavorText); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[0], 0); - sub_81049FC(gUnknown_203ACF0->field_4A[0], gUnknown_203ACF0->field_5A, 144); - PutWindowTilemap(gUnknown_203ACF0->field_4A[0]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[0], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[1], 0); - sub_8104A34(gUnknown_203ACF0->field_4A[1], 0, gUnknown_203ACF0->field_5A, 0, 8); - sub_81047C8(gUnknown_203ACF0->field_4A[1], 2, gSpeciesNames[gUnknown_203ACF0->field_5A], 28, 8, 0); - sub_8105800(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 24); - sub_81058C4(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 36); - sub_8105A3C(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 0, 48); - sub_8105D64(gUnknown_203ACF0->field_4A[1], gUnknown_203ACF0->field_5A, 88, 40); + // Mon pic + FillWindowPixelBuffer(sPokedexScreenData->windowIds[0], PIXEL_FILL(0)); + DexScreen_LoadMonPicInWindow(sPokedexScreenData->windowIds[0], sPokedexScreenData->dexSpecies, 144); + PutWindowTilemap(sPokedexScreenData->windowIds[0]); + CopyWindowToVram(sPokedexScreenData->windowIds[0], COPYWIN_GFX); - PutWindowTilemap(gUnknown_203ACF0->field_4A[1]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[1], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[2], 0); - sub_8105CB0(gUnknown_203ACF0->field_4A[2], gUnknown_203ACF0->field_5A, 0, 8); - PutWindowTilemap(gUnknown_203ACF0->field_4A[2]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[2], 2); - FillWindowPixelBuffer(1, 255); - if (a0 == FALSE) + // Species stats + FillWindowPixelBuffer(sPokedexScreenData->windowIds[1], PIXEL_FILL(0)); + DexScreen_PrintMonDexNo(sPokedexScreenData->windowIds[1], 0, sPokedexScreenData->dexSpecies, 0, 8); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[1], 2, gSpeciesNames[sPokedexScreenData->dexSpecies], 28, 8, 0); + DexScreen_PrintMonCategory(sPokedexScreenData->windowIds[1], sPokedexScreenData->dexSpecies, 0, 24); + DexScreen_PrintMonHeight(sPokedexScreenData->windowIds[1], sPokedexScreenData->dexSpecies, 0, 36); + DexScreen_PrintMonWeight(sPokedexScreenData->windowIds[1], sPokedexScreenData->dexSpecies, 0, 48); + DexScreen_DrawMonFootprint(sPokedexScreenData->windowIds[1], sPokedexScreenData->dexSpecies, 88, 40); + PutWindowTilemap(sPokedexScreenData->windowIds[1]); + CopyWindowToVram(sPokedexScreenData->windowIds[1], COPYWIN_GFX); + + // Dex entry + FillWindowPixelBuffer(sPokedexScreenData->windowIds[2], PIXEL_FILL(0)); + DexScreen_PrintMonFlavorText(sPokedexScreenData->windowIds[2], sPokedexScreenData->dexSpecies, 0, 8); + PutWindowTilemap(sPokedexScreenData->windowIds[2]); + CopyWindowToVram(sPokedexScreenData->windowIds[2], COPYWIN_GFX); + + // Control info + FillWindowPixelBuffer(1, PIXEL_FILL(15)); + if (justRegistered == FALSE) { - sub_81047C8(1, 0, gText_Cry, 8, 2, 4); - sub_8104C2C(gText_NextDataCancel); + DexScreen_AddTextPrinterParameterized(1, 0, gText_Cry, 8, 2, 4); + DexScreen_PrintControlInfo(gText_NextDataCancel); } else - sub_8104C2C(gText_Next); + // Just registered + DexScreen_PrintControlInfo(gText_Next); PutWindowTilemap(1); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); return 1; } -u8 sub_8106014(void) +u8 RemoveDexPageWindows(void) { - sub_81047B0(&gUnknown_203ACF0->field_4A[0]); - sub_81047B0(&gUnknown_203ACF0->field_4A[1]); - sub_81047B0(&gUnknown_203ACF0->field_4A[2]); + DexScreen_RemoveWindow(&sPokedexScreenData->windowIds[0]); + DexScreen_RemoveWindow(&sPokedexScreenData->windowIds[1]); + DexScreen_RemoveWindow(&sPokedexScreenData->windowIds[2]); return 0; } -u8 sub_810603C(void) +u8 DexScreen_DrawMonAreaPage(void) { int i; - u8 v1, v2; - bool8 v3; - s16 v4, v5; + u8 width, height; + bool8 monIsCaught; + s16 left, top; u16 speciesId, species; - u16 v8; + u16 kantoMapVoff; - species = gUnknown_203ACF0->field_5A; + species = sPokedexScreenData->dexSpecies; speciesId = SpeciesToNationalPokedexNum(species); - v3 = sub_8104AB0(species, 1, 1); - v1 = 28; - v2 = 14; - v4 = 0; - v5 = 2; + monIsCaught = DexScreen_GetSetPokedexFlag(species, FLAG_GET_CAUGHT, TRUE); + width = 28; + height = 14; + left = 0; + top = 2; - FillBgTilemapBufferRect_Palette0(3, 4, v4, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(3, 1028, v4 + 1 + v1, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(3, 2052, v4, v5 + 1 + v2, 1, 1); - FillBgTilemapBufferRect_Palette0(3, 3076, v4 + 1 + v1, v5 + 1 + v2, 1, 1); - FillBgTilemapBufferRect_Palette0(3, 5, v4 + 1, v5, v1, 1); - FillBgTilemapBufferRect_Palette0(3, 2053, v4 + 1, v5 + 1 + v2, v1, 1); - FillBgTilemapBufferRect_Palette0(3, 6, v4, v5 + 1, 1, v2); - FillBgTilemapBufferRect_Palette0(3, 1030, v4 + 1 + v1, v5 + 1, 1, v2); - FillBgTilemapBufferRect_Palette0(3, 1, v4 + 1, v5 + 1, v1, v2); + FillBgTilemapBufferRect_Palette0(3, 4, left, top, 1, 1); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_H_FLIP(4), left + 1 + width, top, 1, 1); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_V_FLIP(4), left, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_H_V_FLIP(4), left + 1 + width, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(3, 5, left + 1, top, width, 1); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_V_FLIP(5), left + 1, top + 1 + height, width, 1); + FillBgTilemapBufferRect_Palette0(3, 6, left, top + 1, 1, height); + FillBgTilemapBufferRect_Palette0(3, BG_TILE_H_FLIP(6), left + 1 + width, top + 1, 1, height); + FillBgTilemapBufferRect_Palette0(3, 1, left + 1, top + 1, width, height); FillBgTilemapBufferRect_Palette0(0, 0, 0, 2, 30, 16); - v1 = 10; - v2 = 6; - v4 = 1; - v5 = 9; + width = 10; + height = 6; + left = 1; + top = 9; - FillBgTilemapBufferRect_Palette0(0, 29, v4, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(0, 1053, v4 + 1 + v1, v5, 1, 1); - FillBgTilemapBufferRect_Palette0(0, 2077, v4, v5 + 1 + v2, 1, 1); - FillBgTilemapBufferRect_Palette0(0, 3101, v4 + 1 + v1, v5 + 1 + v2, 1, 1); - FillBgTilemapBufferRect_Palette0(0, 30, v4 + 1, v5, v1, 1); - FillBgTilemapBufferRect_Palette0(0, 2078, v4 + 1, v5 + 1 + v2, v1, 1); - FillBgTilemapBufferRect_Palette0(0, 31, v4, v5 + 1, 1, v2); - FillBgTilemapBufferRect_Palette0(0, 1055, v4 + 1 + v1, v5 + 1, 1, v2); + FillBgTilemapBufferRect_Palette0(0, 29, left, top, 1, 1); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_H_FLIP(29), left + 1 + width, top, 1, 1); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_V_FLIP(29), left, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_H_V_FLIP(29), left + 1 + width, top + 1 + height, 1, 1); + FillBgTilemapBufferRect_Palette0(0, 30, left + 1, top, width, 1); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_V_FLIP(30), left + 1, top + 1 + height, width, 1); + FillBgTilemapBufferRect_Palette0(0, 31, left, top + 1, 1, height); + FillBgTilemapBufferRect_Palette0(0, BG_TILE_H_FLIP(31), left + 1 + width, top + 1, 1, height); FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20); - gUnknown_203ACF0->field_64 = GetUnlockedSeviiAreas(); - v8 = 4; + sPokedexScreenData->unlockedSeviiAreas = GetUnlockedSeviiAreas(); + kantoMapVoff = 4; + // If any of the postgame islands are unlocked, Kanto map needs to be flush with the + // top of the screen. for (i = 3; i < 7; i++) - if ((gUnknown_203ACF0->field_64 >> i) & 1) - v8 = 0; + if ((sPokedexScreenData->unlockedSeviiAreas >> i) & 1) + kantoMapVoff = 0; - gUnknown_203ACF0->field_4A[0] = AddWindow(&gUnknown_8452214); - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_4A[0], (void *)gUnknown_8443620, 0, 0); - SetWindowAttribute(gUnknown_203ACF0->field_4A[0], 2, - GetWindowAttribute(gUnknown_203ACF0->field_4A[0], 2) + v8); - PutWindowTilemap(gUnknown_203ACF0->field_4A[0]); + sPokedexScreenData->windowIds[0] = AddWindow(&sWindowTemplate_AreaMap_Kanto); + CopyToWindowPixelBuffer(sPokedexScreenData->windowIds[0], (void *)sTilemap_AreaMap_Kanto, 0, 0); + SetWindowAttribute(sPokedexScreenData->windowIds[0], WINDOW_TILEMAP_TOP, + GetWindowAttribute(sPokedexScreenData->windowIds[0], WINDOW_TILEMAP_TOP) + kantoMapVoff); + PutWindowTilemap(sPokedexScreenData->windowIds[0]); for (i = 0; i < 7; i++) - if ((gUnknown_203ACF0->field_64 >> i) & 1) + if ((sPokedexScreenData->unlockedSeviiAreas >> i) & 1) { - gUnknown_203ACF0->field_4A[i + 1] = AddWindow(gUnknown_8452254[i].window); - CopyToWindowPixelBuffer(gUnknown_203ACF0->field_4A[i + 1], gUnknown_8452254[i].tilemap, 0, 0); - SetWindowAttribute(gUnknown_203ACF0->field_4A[i + 1], 2, GetWindowAttribute(gUnknown_203ACF0->field_4A[i + 1], 2) + v8); - PutWindowTilemap(gUnknown_203ACF0->field_4A[i + 1]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[i + 1], 2); + sPokedexScreenData->windowIds[i + 1] = AddWindow(sAreaMapStructs_SeviiIslands[i].window); + CopyToWindowPixelBuffer(sPokedexScreenData->windowIds[i + 1], sAreaMapStructs_SeviiIslands[i].tiles, 0, 0); + SetWindowAttribute(sPokedexScreenData->windowIds[i + 1], WINDOW_TILEMAP_TOP, GetWindowAttribute(sPokedexScreenData->windowIds[i + 1], WINDOW_TILEMAP_TOP) + kantoMapVoff); + PutWindowTilemap(sPokedexScreenData->windowIds[i + 1]); + CopyWindowToVram(sPokedexScreenData->windowIds[i + 1], COPYWIN_GFX); } - gUnknown_203ACF0->field_4A[8] = AddWindow(&gUnknown_84521F4); - gUnknown_203ACF0->field_4A[9] = AddWindow(&gUnknown_84521FC); - gUnknown_203ACF0->field_4A[10] = AddWindow(&gUnknown_8452204); - gUnknown_203ACF0->field_4A[11] = AddWindow(&gUnknown_84521EC); - gUnknown_203ACF0->field_4A[12] = AddWindow(&gUnknown_845220C); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[11], 0); - sub_8107CD8(160, species); - sub_8107CF8(gUnknown_203ACF0->field_4A[11], species, sub_81049CC(species), 0, 0); - PutWindowTilemap(gUnknown_203ACF0->field_4A[11]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[11], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[9], 0); - { - s32 width = GetStringWidth(0, gText_Size, 0); - sub_81047C8(gUnknown_203ACF0->field_4A[9], 0, gText_Size, (gUnknown_84521FC.width * 8 - width) / 2, 4, 0); - } - PutWindowTilemap(gUnknown_203ACF0->field_4A[9]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[9], 2); + sPokedexScreenData->windowIds[8] = AddWindow(&sWindowTemplate_AreaMap_SpeciesName); + sPokedexScreenData->windowIds[9] = AddWindow(&sWindowTemplate_AreaMap_Size); + sPokedexScreenData->windowIds[10] = AddWindow(&sWindowTemplate_AreaMap_Area); + sPokedexScreenData->windowIds[11] = AddWindow(&sWindowTemplate_AreaMap_MonIcon); + sPokedexScreenData->windowIds[12] = AddWindow(&sWindowTemplate_AreaMap_MonTypes); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[10], 0); + // Draw the mon icon + FillWindowPixelBuffer(sPokedexScreenData->windowIds[11], PIXEL_FILL(0)); + ListMenu_LoadMonIconPalette(160, species); + ListMenu_DrawMonIconGraphics(sPokedexScreenData->windowIds[11], species, DexScreen_GetDefaultPersonality(species), 0, 0); + PutWindowTilemap(sPokedexScreenData->windowIds[11]); + CopyWindowToVram(sPokedexScreenData->windowIds[11], COPYWIN_GFX); + + // Print "Size" + FillWindowPixelBuffer(sPokedexScreenData->windowIds[9], PIXEL_FILL(0)); { - s32 width = GetStringWidth(0, gText_Area, 0); - sub_81047C8(gUnknown_203ACF0->field_4A[10], 0, gText_Area, (gUnknown_8452204.width * 8 - width) / 2, 4, 0); + s32 strWidth = GetStringWidth(0, gText_Size, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[9], 0, gText_Size, (sWindowTemplate_AreaMap_Size.width * 8 - strWidth) / 2, 4, 0); } - SetWindowAttribute(gUnknown_203ACF0->field_4A[10], 2, GetWindowAttribute(gUnknown_203ACF0->field_4A[10], 2) + v8); - PutWindowTilemap(gUnknown_203ACF0->field_4A[10]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[10], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[8], 0); - sub_8104A34(gUnknown_203ACF0->field_4A[8], 0, species, 0, 0); - sub_81047C8(gUnknown_203ACF0->field_4A[8], 2, gSpeciesNames[species], 3, 12, 0); - PutWindowTilemap(gUnknown_203ACF0->field_4A[8]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[8], 2); - FillWindowPixelBuffer(gUnknown_203ACF0->field_4A[12], 0); + PutWindowTilemap(sPokedexScreenData->windowIds[9]); + CopyWindowToVram(sPokedexScreenData->windowIds[9], COPYWIN_GFX); + + // Print "Area" + FillWindowPixelBuffer(sPokedexScreenData->windowIds[10], PIXEL_FILL(0)); + { + s32 strWidth = GetStringWidth(0, gText_Area, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[10], 0, gText_Area, (sWindowTemplate_AreaMap_Area.width * 8 - strWidth) / 2, 4, 0); + } + SetWindowAttribute(sPokedexScreenData->windowIds[10], WINDOW_TILEMAP_TOP, GetWindowAttribute(sPokedexScreenData->windowIds[10], WINDOW_TILEMAP_TOP) + kantoMapVoff); + PutWindowTilemap(sPokedexScreenData->windowIds[10]); + CopyWindowToVram(sPokedexScreenData->windowIds[10], COPYWIN_GFX); + + // Print species name + FillWindowPixelBuffer(sPokedexScreenData->windowIds[8], PIXEL_FILL(0)); + DexScreen_PrintMonDexNo(sPokedexScreenData->windowIds[8], 0, species, 0, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[8], 2, gSpeciesNames[species], 3, 12, 0); + PutWindowTilemap(sPokedexScreenData->windowIds[8]); + CopyWindowToVram(sPokedexScreenData->windowIds[8], COPYWIN_GFX); + + // Type icons + FillWindowPixelBuffer(sPokedexScreenData->windowIds[12], PIXEL_FILL(0)); ListMenuLoadStdPalAt(176, 1); - if (v3) + if (monIsCaught) { - BlitMoveInfoIcon(gUnknown_203ACF0->field_4A[12], 1 + gBaseStats[species].type1, 0, 1); + BlitMoveInfoIcon(sPokedexScreenData->windowIds[12], 1 + gBaseStats[species].type1, 0, 1); if (gBaseStats[species].type1 != gBaseStats[species].type2) - BlitMoveInfoIcon(gUnknown_203ACF0->field_4A[12], 1 + gBaseStats[species].type2, 32, 1); + BlitMoveInfoIcon(sPokedexScreenData->windowIds[12], 1 + gBaseStats[species].type2, 32, 1); } - PutWindowTilemap(gUnknown_203ACF0->field_4A[12]); - CopyWindowToVram(gUnknown_203ACF0->field_4A[12], 2); - ResetAllPicSprites(); - LoadPalette(gUnknown_8452368, 288, 32); + PutWindowTilemap(sPokedexScreenData->windowIds[12]); + CopyWindowToVram(sPokedexScreenData->windowIds[12], COPYWIN_GFX); - if (v3) + // Show size comparison + ResetAllPicSprites(); + LoadPalette(sPalette_Silhouette, 288, 32); + + if (monIsCaught) { - gUnknown_203ACF0->field_4A[14] = CreateMonPicSprite_HandleDeoxys(species, 8, sub_81049CC(species), 1, 40, 104, 0, 65535); - gSprites[gUnknown_203ACF0->field_4A[14]].oam.paletteNum = 2; - gSprites[gUnknown_203ACF0->field_4A[14]].oam.affineMode = 1; - gSprites[gUnknown_203ACF0->field_4A[14]].oam.matrixNum = 2; - gSprites[gUnknown_203ACF0->field_4A[14]].oam.priority = 1; - gSprites[gUnknown_203ACF0->field_4A[14]].pos2.y = gPokedexEntries[speciesId].pokemonOffset; + sPokedexScreenData->windowIds[14] = CreateMonPicSprite_HandleDeoxys(species, 8, DexScreen_GetDefaultPersonality(species), TRUE, 40, 104, 0, 0xFFFF); + gSprites[sPokedexScreenData->windowIds[14]].oam.paletteNum = 2; + gSprites[sPokedexScreenData->windowIds[14]].oam.affineMode = 1; + gSprites[sPokedexScreenData->windowIds[14]].oam.matrixNum = 2; + gSprites[sPokedexScreenData->windowIds[14]].oam.priority = 1; + gSprites[sPokedexScreenData->windowIds[14]].pos2.y = gPokedexEntries[speciesId].pokemonOffset; SetOamMatrix(2, gPokedexEntries[speciesId].pokemonScale, 0, 0, gPokedexEntries[speciesId].pokemonScale); - gUnknown_203ACF0->field_4A[15] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, 1), 1, 80, 104, 0, 65535); - gSprites[gUnknown_203ACF0->field_4A[15]].oam.paletteNum = 2; - gSprites[gUnknown_203ACF0->field_4A[15]].oam.affineMode = 1; - gSprites[gUnknown_203ACF0->field_4A[15]].oam.matrixNum = 1; - gSprites[gUnknown_203ACF0->field_4A[15]].oam.priority = 1; - gSprites[gUnknown_203ACF0->field_4A[15]].pos2.y = gPokedexEntries[speciesId].trainerOffset; + sPokedexScreenData->windowIds[15] = CreateTrainerPicSprite(PlayerGenderToFrontTrainerPicId_Debug(gSaveBlock2Ptr->playerGender, TRUE), 1, 80, 104, 0, 0xFFFF); + gSprites[sPokedexScreenData->windowIds[15]].oam.paletteNum = 2; + gSprites[sPokedexScreenData->windowIds[15]].oam.affineMode = 1; + gSprites[sPokedexScreenData->windowIds[15]].oam.matrixNum = 1; + gSprites[sPokedexScreenData->windowIds[15]].oam.priority = 1; + gSprites[sPokedexScreenData->windowIds[15]].pos2.y = gPokedexEntries[speciesId].trainerOffset; SetOamMatrix(1, gPokedexEntries[speciesId].trainerScale, 0, 0, gPokedexEntries[speciesId].trainerScale); } else { - gUnknown_203ACF0->field_4A[14] = 0xff; - gUnknown_203ACF0->field_4A[15] = 0xff; + sPokedexScreenData->windowIds[14] = 0xff; + sPokedexScreenData->windowIds[15] = 0xff; } - gUnknown_203ACF0->field_02[2] = sub_8134230(species, 2001, 3, v8 * 8); - if (!(sub_81344E0(gUnknown_203ACF0->field_02[2]))) + // Create the area markers + sPokedexScreenData->data[2] = Ctor_PokedexAreaMarkers(species, 2001, 3, kantoMapVoff * 8); + if (!(PokedexAreaMarkers_Any(sPokedexScreenData->data[2]))) { - BlitBitmapRectToWindow(gUnknown_203ACF0->field_4A[0], (void *)gUnknown_8443D00, 0, 0, 88, 16, 4, 28, 88, 16); + BlitBitmapRectToWindow(sPokedexScreenData->windowIds[0], (void *)sBlitTiles_WideEllipse, 0, 0, 88, 16, 4, 28, 88, 16); { - s32 width = GetStringWidth(0, gText_AreaUnknown, 0); - sub_81047C8(gUnknown_203ACF0->field_4A[0], 0, gText_AreaUnknown, (96 - width) / 2, 29, 0); + s32 strWidth = GetStringWidth(0, gText_AreaUnknown, 0); + DexScreen_AddTextPrinterParameterized(sPokedexScreenData->windowIds[0], 0, gText_AreaUnknown, (96 - strWidth) / 2, 29, 0); } } - CopyWindowToVram(gUnknown_203ACF0->field_4A[0], 2); - FillWindowPixelBuffer(1, 255); - sub_81047C8(1, 0, gText_Cry, 8, 2, 4); - sub_8104C2C(gText_CancelPreviousData); + CopyWindowToVram(sPokedexScreenData->windowIds[0], COPYWIN_GFX); + + // Draw the control info + FillWindowPixelBuffer(1, PIXEL_FILL(15)); + DexScreen_AddTextPrinterParameterized(1, 0, gText_Cry, 8, 2, 4); + DexScreen_PrintControlInfo(gText_CancelPreviousData); PutWindowTilemap(1); - CopyWindowToVram(1, 2); + CopyWindowToVram(1, COPYWIN_GFX); return 1; } -u8 sub_81067C0(void) +u8 DexScreen_DestroyAreaScreenResources(void) { int i; - sub_81343F4(gUnknown_203ACF0->field_02[2]); + Dtor_PokedexAreaMarkers(sPokedexScreenData->data[2]); for (i = 0; i < 13; i++) - sub_81047B0(&gUnknown_203ACF0->field_4A[i]); - if (gUnknown_203ACF0->field_4A[15] != 0xff) - FreeAndDestroyTrainerPicSprite(gUnknown_203ACF0->field_4A[15]); - if (gUnknown_203ACF0->field_4A[14] != 0xff) - FreeAndDestroyMonPicSprite(gUnknown_203ACF0->field_4A[14]); + DexScreen_RemoveWindow(&sPokedexScreenData->windowIds[i]); + if (sPokedexScreenData->windowIds[15] != 0xff) + FreeAndDestroyTrainerPicSprite(sPokedexScreenData->windowIds[15]); + if (sPokedexScreenData->windowIds[14] != 0xff) + FreeAndDestroyMonPicSprite(sPokedexScreenData->windowIds[14]); return 0; } -int sub_8106810(u16 species) +static int DexScreen_CanShowMonInDex(u16 species) { if (IsNationalPokedexEnabled() == TRUE) return TRUE; @@ -3083,7 +3169,7 @@ int sub_8106810(u16 species) return FALSE; } -u8 sub_8106838(u8 categoryNum, u8 pageNum) +static u8 DexScreen_IsPageUnlocked(u8 categoryNum, u8 pageNum) { int i, count; u16 species; @@ -3095,14 +3181,14 @@ u8 sub_8106838(u8 categoryNum, u8 pageNum) if (i < count) { species = gDexCategories[categoryNum].page[pageNum].species[i]; - if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) - return 1; + if (DexScreen_CanShowMonInDex(species) == TRUE && DexScreen_GetSetPokedexFlag(species, FLAG_GET_SEEN, TRUE)) + return TRUE; } } - return 0; + return FALSE; } -u8 sub_81068A0(u8 categoryNum) +static bool8 DexScreen_IsCategoryUnlocked(u8 categoryNum) { int i; u8 count; @@ -3110,67 +3196,67 @@ u8 sub_81068A0(u8 categoryNum) count = gDexCategories[categoryNum].count; for (i = 0; i < count; i++) - if (sub_8106838(categoryNum, i)) + if (DexScreen_IsPageUnlocked(categoryNum, i)) return 1; return 0; } -void sub_81068DC(u8 categoryNum, u8 pageNum) +void DexScreen_CreateCategoryPageSpeciesList(u8 categoryNum, u8 pageNum) { int i, count; u16 species; count = gDexCategories[categoryNum].page[pageNum].count; - gUnknown_203ACF0->field_2C = 0; + sPokedexScreenData->numMonsOnPage = 0; for (i = 0; i < 4; i++) - gUnknown_203ACF0->field_18[i] = 0xffff; + sPokedexScreenData->pageSpecies[i] = 0xffff; for (i = 0; i < count; i++) { species = gDexCategories[categoryNum].page[pageNum].species[i]; - if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) + if (DexScreen_CanShowMonInDex(species) == TRUE && DexScreen_GetSetPokedexFlag(species, FLAG_GET_SEEN, TRUE)) { - gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2C] = gDexCategories[categoryNum].page[pageNum].species[i]; - gUnknown_203ACF0->field_2C++; + sPokedexScreenData->pageSpecies[sPokedexScreenData->numMonsOnPage] = gDexCategories[categoryNum].page[pageNum].species[i]; + sPokedexScreenData->numMonsOnPage++; } } } -u8 sub_810699C(u8 category) +static u8 DexScreen_GetPageLimitsForCategory(u8 category) { int i; - u8 count, v2, v3; + u8 count, firstPage, lastPage; count = gDexCategories[category].count; - v2 = 0xff; - v3 = 0xff; + firstPage = 0xff; + lastPage = 0xff; for (i = 0; i < count; i++) - if (sub_8106838(category, i)) + if (DexScreen_IsPageUnlocked(category, i)) { - if (v2 == 0xff) - v2 = i; - v3 = i; + if (firstPage == 0xff) + firstPage = i; + lastPage = i; } - if (v3 != 0xff) + if (lastPage != 0xff) { - gUnknown_203ACF0->field_29 = v2; - gUnknown_203ACF0->field_2A = v3 + 1; - return 0; + sPokedexScreenData->firstPageInCategory = firstPage; + sPokedexScreenData->lastPageInCategory = lastPage + 1; + return FALSE; } else { - gUnknown_203ACF0->field_29 = 0; - gUnknown_203ACF0->field_2A = 0; - return 1; + sPokedexScreenData->firstPageInCategory = 0; + sPokedexScreenData->lastPageInCategory = 0; + return TRUE; } } -u8 sub_8106A20(u16 a0) +static u8 DexScreen_LookUpCategoryBySpecies(u16 species) { - int i, j, k, categoryCount, categoryPageCount, v5; - u16 species; + int i, j, k, categoryCount, categoryPageCount, posInPage; + u16 dexSpecies; for (i = 0; i < NELEMS(gDexCategories); i++) { @@ -3178,84 +3264,84 @@ u8 sub_8106A20(u16 a0) for (j = 0; j < categoryCount; j++) { categoryPageCount = gDexCategories[i].page[j].count; - for (k = 0, v5 = 0; k < categoryPageCount; k++) + for (k = 0, posInPage = 0; k < categoryPageCount; k++) { - species = gDexCategories[i].page[j].species[k]; - if (a0 == species) + dexSpecies = gDexCategories[i].page[j].species[k]; + if (species == dexSpecies) { - gUnknown_203ACF0->field_28 = i; - gUnknown_203ACF0->field_2B = j; - gUnknown_203ACF0->field_2D = v5; - return 0; + sPokedexScreenData->category = i; + sPokedexScreenData->pageNum = j; + sPokedexScreenData->categoryCursorPosInPage = posInPage; + return FALSE; } - if (sub_8106810(species) == TRUE && sub_8104AB0(species, 0, 1)) - v5++; + if (DexScreen_CanShowMonInDex(dexSpecies) == TRUE && DexScreen_GetSetPokedexFlag(dexSpecies, FLAG_GET_SEEN, TRUE)) + posInPage++; } } } - return 1; + return TRUE; } -u8 sub_8106AF8(u16 a0) +static u8 DexScreen_PageNumberToRenderablePages(u16 page) { - int i, v1; + int i, count; - for (i = 0, v1 = 0; i < a0; i++) - if (sub_8106838(gUnknown_203ACF0->field_28, i)) - v1++; + for (i = 0, count = 0; i < page; i++) + if (DexScreen_IsPageUnlocked(sPokedexScreenData->category, i)) + count++; - return v1 + 1; + return count + 1; } -void sub_8106B34(void) +void DexScreen_InputHandler_StartToCry(void) { if (JOY_NEW(START_BUTTON)) - PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); + PlayCry2(sPokedexScreenData->dexSpecies, 0, 125, 10); } -u8 sub_8106B60(u16 species) +u8 DexScreen_RegisterMonToPokedex(u16 species) { - sub_8104AB0(species, 2, 1); - sub_8104AB0(species, 3, 1); + DexScreen_GetSetPokedexFlag(species, FLAG_SET_SEEN, TRUE); + DexScreen_GetSetPokedexFlag(species, FLAG_SET_CAUGHT, TRUE); if (!IsNationalPokedexEnabled() && SpeciesToNationalPokedexNum(species) > KANTO_DEX_COUNT) - return CreateTask(sub_8106BD8, 0); + return CreateTask(Task_DexScreen_RegisterNonKantoMonBeforeNationalDex, 0); - sub_810250C(); - gTasks[gUnknown_203ACF0->field_00].func = sub_8106BE8; - sub_8106A20(species); + DexScreen_LoadResources(); + gTasks[sPokedexScreenData->taskId].func = Task_DexScreen_RegisterMonToPokedex; + DexScreen_LookUpCategoryBySpecies(species); - return gUnknown_203ACF0->field_00; + return sPokedexScreenData->taskId; } -static void sub_8106BD8(u8 taskId) +static void Task_DexScreen_RegisterNonKantoMonBeforeNationalDex(u8 taskId) { DestroyTask(taskId); } -static void sub_8106BE8(u8 taskId) +static void Task_DexScreen_RegisterMonToPokedex(u8 taskId) { - switch (gUnknown_203ACF0->field_01) + switch (sPokedexScreenData->state) { case 0: - sub_810699C(gUnknown_203ACF0->field_28); - if (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_29) - gUnknown_203ACF0->field_2B = gUnknown_203ACF0->field_29; - gUnknown_203ACF0->field_01 = 3; + DexScreen_GetPageLimitsForCategory(sPokedexScreenData->category); + if (sPokedexScreenData->pageNum < sPokedexScreenData->firstPageInCategory) + sPokedexScreenData->pageNum = sPokedexScreenData->firstPageInCategory; + sPokedexScreenData->state = 3; break; case 1: - sub_8106014(); - sub_8104E90(); + RemoveDexPageWindows(); + DexScreen_DestroyCategoryPageMonIconAndInfoWindows(); gMain.state = 0; - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->state = 2; break; case 2: - if (sub_8102798()) + if (DoClosePokedex()) DestroyTask(taskId); break; case 3: - sub_8104F0C(1); + DexScreen_CreateCategoryListGfx(TRUE); PutWindowTilemap(0); PutWindowTilemap(1); @@ -3264,9 +3350,9 @@ static void sub_8106BE8(u8 taskId) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - sub_8105058(0xff); + DexScreen_CreateCategoryPageSelectionCursor(0xff); - gUnknown_203ACF0->field_01 = 4; + sPokedexScreenData->state = 4; break; case 4: gPaletteFade.bufferTransferDisabled = 0; @@ -3276,49 +3362,49 @@ static void sub_8106BE8(u8 taskId) ShowBg(1); ShowBg(0); - gUnknown_203ACF0->field_01 = 5; + sPokedexScreenData->state = 5; break; case 5: gTasks[taskId].data[0] = 30; - gUnknown_203ACF0->field_61 = ListMenuAddCursorObjectInternal(&gUnknown_84524C4, 0); - gUnknown_203ACF0->field_01 = 6; + sPokedexScreenData->categoryPageCursorTaskId = ListMenuAddCursorObjectInternal(&sCursorStruct_CategoryPage, 0); + sPokedexScreenData->state = 6; break; case 6: - sub_8105058(gUnknown_203ACF0->field_2D); - sub_8105178(gUnknown_203ACF0->field_61, gUnknown_203ACF0->field_2D, gUnknown_203ACF0->field_2C); + DexScreen_CreateCategoryPageSelectionCursor(sPokedexScreenData->categoryCursorPosInPage); + DexScreen_UpdateCategoryPageCursorObject(sPokedexScreenData->categoryPageCursorTaskId, sPokedexScreenData->categoryCursorPosInPage, sPokedexScreenData->numMonsOnPage); if (gTasks[taskId].data[0]) gTasks[taskId].data[0]--; else { - ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0); - gUnknown_203ACF0->field_01 = 7; + ListMenuRemoveCursorObject(sPokedexScreenData->categoryPageCursorTaskId, 0); + sPokedexScreenData->state = 7; } break; case 7: - gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D]; - gUnknown_203ACF0->field_01 = 8; + sPokedexScreenData->dexSpecies = sPokedexScreenData->pageSpecies[sPokedexScreenData->categoryCursorPosInPage]; + sPokedexScreenData->state = 8; break; case 8: - sub_8105E1C(1); - gUnknown_203ACF0->field_01 = 9; + DexScreen_DrawMonDexPage(TRUE); + sPokedexScreenData->state = 9; break; case 9: - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_02[1] = 0; - gUnknown_203ACF0->field_01++; + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->data[1] = 0; + sPokedexScreenData->state++; case 10: - if (gUnknown_203ACF0->field_02[1] < 6) + if (sPokedexScreenData->data[1] < 6) { - if (gUnknown_203ACF0->field_02[0]) + if (sPokedexScreenData->data[0]) { - sub_8105594(0, gUnknown_203ACF0->field_02[1]); + DexScreen_DexPageZoomEffectFrame(0, sPokedexScreenData->data[1]); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_02[0] = 4; - gUnknown_203ACF0->field_02[1]++; + sPokedexScreenData->data[0] = 4; + sPokedexScreenData->data[1]++; } else - gUnknown_203ACF0->field_02[0]--; + sPokedexScreenData->data[0]--; } else { @@ -3328,35 +3414,35 @@ static void sub_8106BE8(u8 taskId) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); - PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); - gUnknown_203ACF0->field_02[0] = 0; - gUnknown_203ACF0->field_01 = 11; + PlayCry2(sPokedexScreenData->dexSpecies, 0, 125, 10); + sPokedexScreenData->data[0] = 0; + sPokedexScreenData->state = 11; } break; case 11: if (JOY_NEW(A_BUTTON | B_BUTTON)) - gUnknown_203ACF0->field_01 = 2; + sPokedexScreenData->state = 2; break; } } -void sub_8106E78(const u8 * str, s32 mode) +void DexScreen_PrintStringWithAlignment(const u8 * str, s32 mode) { u32 x; switch (mode) { - case 0: + case TEXT_LEFT: x = 8; break; - case 1: + case TEXT_CENTER: x = (u32)(240 - GetStringWidth(2, str, 0)) / 2; break; - case 2: + case TEXT_RIGHT: default: x = 232 - GetStringWidth(2, str, 0); break; } - sub_81047C8(0, 2, str, x, 2, 4); + DexScreen_AddTextPrinterParameterized(0, 2, str, x, 2, 4); } From 4b0dd3e40622b9f84f4a3c4709674bc2361b9adf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 21 Apr 2021 14:56:57 -0400 Subject: [PATCH 16/28] Move dex gfx back to pokedex subfolder --- .../area_markers}/marker.pal | 0 .../area_markers}/marker_0.png | Bin .../area_markers}/marker_1.png | Bin .../area_markers}/marker_2.png | Bin .../area_markers}/marker_3.png | Bin .../area_markers}/marker_4.png | Bin .../area_markers}/marker_5.png | Bin .../area_markers}/marker_6.png | Bin .../blit_wide_ellipse.png} | Bin .../cat_icon_abc.png} | Bin .../cat_icon_cancel.png} | Bin .../cat_icon_cave.png} | Bin .../cat_icon_forest.png} | Bin .../cat_icon_grassland.png} | Bin .../cat_icon_lightest.png} | Bin .../cat_icon_mountain.png} | Bin .../cat_icon_numerical.png} | Bin .../cat_icon_qmark.png} | Bin .../cat_icon_rare.png} | Bin .../cat_icon_rough_terrain.png} | Bin .../cat_icon_sea.png} | Bin .../cat_icon_smallest.png} | Bin .../cat_icon_type.png} | Bin .../cat_icon_urban.png} | Bin .../cat_icon_waters_edge.png} | Bin .../caught_marker.png} | Bin .../kanto_dex_bgpals.pal} | 0 .../kanto_dex_bgtiles.png} | Bin .../map_five_island.png} | Bin .../map_four_island.png} | Bin .../map_kanto.png} | Bin .../map_one_island.png} | Bin .../map_seven_island.png} | Bin .../map_six_island.png} | Bin .../map_three_island.png} | Bin .../map_two_island.png} | Bin .../mini_page.png} | Bin .../national_dex_bgpals.pal} | 0 .../national_dex_bgtiles.png} | Bin .../page_icon_tilemap.bin} | Bin .../silhouette_sprite_pal.pal} | 0 graphics_file_rules.mk | 2 +- src/graphics.c | 4 +- src/pokedex_area_markers.c | 4 +- src/pokedex_screen.c | 94 +++++++++--------- 45 files changed, 52 insertions(+), 52 deletions(-) rename graphics/{pokedex_area_markers => pokedex/area_markers}/marker.pal (100%) rename graphics/{pokedex_area_markers => pokedex/area_markers}/marker_0.png (100%) rename graphics/{pokedex_area_markers => pokedex/area_markers}/marker_1.png (100%) rename graphics/{pokedex_area_markers => pokedex/area_markers}/marker_2.png (100%) rename graphics/{pokedex_area_markers => pokedex/area_markers}/marker_3.png (100%) rename graphics/{pokedex_area_markers => pokedex/area_markers}/marker_4.png (100%) rename graphics/{pokedex_area_markers => pokedex/area_markers}/marker_5.png (100%) rename graphics/{pokedex_area_markers => pokedex/area_markers}/marker_6.png (100%) rename graphics/{interface/pokedex_blit_wide_ellipse.png => pokedex/blit_wide_ellipse.png} (100%) rename graphics/{interface/pokedex_abc.png => pokedex/cat_icon_abc.png} (100%) rename graphics/{interface/pokedex_cat_icon_cancel.png => pokedex/cat_icon_cancel.png} (100%) rename graphics/{interface/pokedex_cat_icon_cave.png => pokedex/cat_icon_cave.png} (100%) rename graphics/{interface/pokedex_cat_icon_forest.png => pokedex/cat_icon_forest.png} (100%) rename graphics/{interface/pokedex_cat_icon_grassland.png => pokedex/cat_icon_grassland.png} (100%) rename graphics/{interface/pokedex_cat_icon_lightest.png => pokedex/cat_icon_lightest.png} (100%) rename graphics/{interface/pokedex_cat_icon_mountain.png => pokedex/cat_icon_mountain.png} (100%) rename graphics/{interface/pokedex_cat_icon_numerical.png => pokedex/cat_icon_numerical.png} (100%) rename graphics/{interface/pokedex_cat_icon_qmark.png => pokedex/cat_icon_qmark.png} (100%) rename graphics/{interface/pokedex_cat_icon_rare.png => pokedex/cat_icon_rare.png} (100%) rename graphics/{interface/pokedex_cat_icon_rough_terrain.png => pokedex/cat_icon_rough_terrain.png} (100%) rename graphics/{interface/pokedex_cat_icon_sea.png => pokedex/cat_icon_sea.png} (100%) rename graphics/{interface/pokedex_cat_icon_smallest.png => pokedex/cat_icon_smallest.png} (100%) rename graphics/{interface/pokedex_cat_icon_type.png => pokedex/cat_icon_type.png} (100%) rename graphics/{interface/pokedex_cat_icon_urban.png => pokedex/cat_icon_urban.png} (100%) rename graphics/{interface/pokedex_cat_icon_waters_edge.png => pokedex/cat_icon_waters_edge.png} (100%) rename graphics/{interface/pokedex_caught_marker.png => pokedex/caught_marker.png} (100%) rename graphics/{interface/pokedex_kanto_dex_bgpals.pal => pokedex/kanto_dex_bgpals.pal} (100%) rename graphics/{interface/pokedex_kanto_dex_bgtiles.png => pokedex/kanto_dex_bgtiles.png} (100%) rename graphics/{interface/pokedex_map_five_island.png => pokedex/map_five_island.png} (100%) rename graphics/{interface/pokedex_map_four_island.png => pokedex/map_four_island.png} (100%) rename graphics/{interface/pokedex_map_kanto.png => pokedex/map_kanto.png} (100%) rename graphics/{interface/pokedex_map_one_island.png => pokedex/map_one_island.png} (100%) rename graphics/{interface/pokedex_map_seven_island.png => pokedex/map_seven_island.png} (100%) rename graphics/{interface/pokedex_map_six_island.png => pokedex/map_six_island.png} (100%) rename graphics/{interface/pokedex_map_three_island.png => pokedex/map_three_island.png} (100%) rename graphics/{interface/pokedex_map_two_island.png => pokedex/map_two_island.png} (100%) rename graphics/{interface/pokedex_mini_page.png => pokedex/mini_page.png} (100%) rename graphics/{interface/pokedex_national_dex_bgpals.pal => pokedex/national_dex_bgpals.pal} (100%) rename graphics/{interface/pokedex_national_dex_bgtiles.png => pokedex/national_dex_bgtiles.png} (100%) rename graphics/{interface/pokedex_page_icon_tilemap.bin => pokedex/page_icon_tilemap.bin} (100%) rename graphics/{interface/pokedex_silhouette_sprite_pal.pal => pokedex/silhouette_sprite_pal.pal} (100%) diff --git a/graphics/pokedex_area_markers/marker.pal b/graphics/pokedex/area_markers/marker.pal similarity index 100% rename from graphics/pokedex_area_markers/marker.pal rename to graphics/pokedex/area_markers/marker.pal diff --git a/graphics/pokedex_area_markers/marker_0.png b/graphics/pokedex/area_markers/marker_0.png similarity index 100% rename from graphics/pokedex_area_markers/marker_0.png rename to graphics/pokedex/area_markers/marker_0.png diff --git a/graphics/pokedex_area_markers/marker_1.png b/graphics/pokedex/area_markers/marker_1.png similarity index 100% rename from graphics/pokedex_area_markers/marker_1.png rename to graphics/pokedex/area_markers/marker_1.png diff --git a/graphics/pokedex_area_markers/marker_2.png b/graphics/pokedex/area_markers/marker_2.png similarity index 100% rename from graphics/pokedex_area_markers/marker_2.png rename to graphics/pokedex/area_markers/marker_2.png diff --git a/graphics/pokedex_area_markers/marker_3.png b/graphics/pokedex/area_markers/marker_3.png similarity index 100% rename from graphics/pokedex_area_markers/marker_3.png rename to graphics/pokedex/area_markers/marker_3.png diff --git a/graphics/pokedex_area_markers/marker_4.png b/graphics/pokedex/area_markers/marker_4.png similarity index 100% rename from graphics/pokedex_area_markers/marker_4.png rename to graphics/pokedex/area_markers/marker_4.png diff --git a/graphics/pokedex_area_markers/marker_5.png b/graphics/pokedex/area_markers/marker_5.png similarity index 100% rename from graphics/pokedex_area_markers/marker_5.png rename to graphics/pokedex/area_markers/marker_5.png diff --git a/graphics/pokedex_area_markers/marker_6.png b/graphics/pokedex/area_markers/marker_6.png similarity index 100% rename from graphics/pokedex_area_markers/marker_6.png rename to graphics/pokedex/area_markers/marker_6.png diff --git a/graphics/interface/pokedex_blit_wide_ellipse.png b/graphics/pokedex/blit_wide_ellipse.png similarity index 100% rename from graphics/interface/pokedex_blit_wide_ellipse.png rename to graphics/pokedex/blit_wide_ellipse.png diff --git a/graphics/interface/pokedex_abc.png b/graphics/pokedex/cat_icon_abc.png similarity index 100% rename from graphics/interface/pokedex_abc.png rename to graphics/pokedex/cat_icon_abc.png diff --git a/graphics/interface/pokedex_cat_icon_cancel.png b/graphics/pokedex/cat_icon_cancel.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_cancel.png rename to graphics/pokedex/cat_icon_cancel.png diff --git a/graphics/interface/pokedex_cat_icon_cave.png b/graphics/pokedex/cat_icon_cave.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_cave.png rename to graphics/pokedex/cat_icon_cave.png diff --git a/graphics/interface/pokedex_cat_icon_forest.png b/graphics/pokedex/cat_icon_forest.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_forest.png rename to graphics/pokedex/cat_icon_forest.png diff --git a/graphics/interface/pokedex_cat_icon_grassland.png b/graphics/pokedex/cat_icon_grassland.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_grassland.png rename to graphics/pokedex/cat_icon_grassland.png diff --git a/graphics/interface/pokedex_cat_icon_lightest.png b/graphics/pokedex/cat_icon_lightest.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_lightest.png rename to graphics/pokedex/cat_icon_lightest.png diff --git a/graphics/interface/pokedex_cat_icon_mountain.png b/graphics/pokedex/cat_icon_mountain.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_mountain.png rename to graphics/pokedex/cat_icon_mountain.png diff --git a/graphics/interface/pokedex_cat_icon_numerical.png b/graphics/pokedex/cat_icon_numerical.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_numerical.png rename to graphics/pokedex/cat_icon_numerical.png diff --git a/graphics/interface/pokedex_cat_icon_qmark.png b/graphics/pokedex/cat_icon_qmark.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_qmark.png rename to graphics/pokedex/cat_icon_qmark.png diff --git a/graphics/interface/pokedex_cat_icon_rare.png b/graphics/pokedex/cat_icon_rare.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_rare.png rename to graphics/pokedex/cat_icon_rare.png diff --git a/graphics/interface/pokedex_cat_icon_rough_terrain.png b/graphics/pokedex/cat_icon_rough_terrain.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_rough_terrain.png rename to graphics/pokedex/cat_icon_rough_terrain.png diff --git a/graphics/interface/pokedex_cat_icon_sea.png b/graphics/pokedex/cat_icon_sea.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_sea.png rename to graphics/pokedex/cat_icon_sea.png diff --git a/graphics/interface/pokedex_cat_icon_smallest.png b/graphics/pokedex/cat_icon_smallest.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_smallest.png rename to graphics/pokedex/cat_icon_smallest.png diff --git a/graphics/interface/pokedex_cat_icon_type.png b/graphics/pokedex/cat_icon_type.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_type.png rename to graphics/pokedex/cat_icon_type.png diff --git a/graphics/interface/pokedex_cat_icon_urban.png b/graphics/pokedex/cat_icon_urban.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_urban.png rename to graphics/pokedex/cat_icon_urban.png diff --git a/graphics/interface/pokedex_cat_icon_waters_edge.png b/graphics/pokedex/cat_icon_waters_edge.png similarity index 100% rename from graphics/interface/pokedex_cat_icon_waters_edge.png rename to graphics/pokedex/cat_icon_waters_edge.png diff --git a/graphics/interface/pokedex_caught_marker.png b/graphics/pokedex/caught_marker.png similarity index 100% rename from graphics/interface/pokedex_caught_marker.png rename to graphics/pokedex/caught_marker.png diff --git a/graphics/interface/pokedex_kanto_dex_bgpals.pal b/graphics/pokedex/kanto_dex_bgpals.pal similarity index 100% rename from graphics/interface/pokedex_kanto_dex_bgpals.pal rename to graphics/pokedex/kanto_dex_bgpals.pal diff --git a/graphics/interface/pokedex_kanto_dex_bgtiles.png b/graphics/pokedex/kanto_dex_bgtiles.png similarity index 100% rename from graphics/interface/pokedex_kanto_dex_bgtiles.png rename to graphics/pokedex/kanto_dex_bgtiles.png diff --git a/graphics/interface/pokedex_map_five_island.png b/graphics/pokedex/map_five_island.png similarity index 100% rename from graphics/interface/pokedex_map_five_island.png rename to graphics/pokedex/map_five_island.png diff --git a/graphics/interface/pokedex_map_four_island.png b/graphics/pokedex/map_four_island.png similarity index 100% rename from graphics/interface/pokedex_map_four_island.png rename to graphics/pokedex/map_four_island.png diff --git a/graphics/interface/pokedex_map_kanto.png b/graphics/pokedex/map_kanto.png similarity index 100% rename from graphics/interface/pokedex_map_kanto.png rename to graphics/pokedex/map_kanto.png diff --git a/graphics/interface/pokedex_map_one_island.png b/graphics/pokedex/map_one_island.png similarity index 100% rename from graphics/interface/pokedex_map_one_island.png rename to graphics/pokedex/map_one_island.png diff --git a/graphics/interface/pokedex_map_seven_island.png b/graphics/pokedex/map_seven_island.png similarity index 100% rename from graphics/interface/pokedex_map_seven_island.png rename to graphics/pokedex/map_seven_island.png diff --git a/graphics/interface/pokedex_map_six_island.png b/graphics/pokedex/map_six_island.png similarity index 100% rename from graphics/interface/pokedex_map_six_island.png rename to graphics/pokedex/map_six_island.png diff --git a/graphics/interface/pokedex_map_three_island.png b/graphics/pokedex/map_three_island.png similarity index 100% rename from graphics/interface/pokedex_map_three_island.png rename to graphics/pokedex/map_three_island.png diff --git a/graphics/interface/pokedex_map_two_island.png b/graphics/pokedex/map_two_island.png similarity index 100% rename from graphics/interface/pokedex_map_two_island.png rename to graphics/pokedex/map_two_island.png diff --git a/graphics/interface/pokedex_mini_page.png b/graphics/pokedex/mini_page.png similarity index 100% rename from graphics/interface/pokedex_mini_page.png rename to graphics/pokedex/mini_page.png diff --git a/graphics/interface/pokedex_national_dex_bgpals.pal b/graphics/pokedex/national_dex_bgpals.pal similarity index 100% rename from graphics/interface/pokedex_national_dex_bgpals.pal rename to graphics/pokedex/national_dex_bgpals.pal diff --git a/graphics/interface/pokedex_national_dex_bgtiles.png b/graphics/pokedex/national_dex_bgtiles.png similarity index 100% rename from graphics/interface/pokedex_national_dex_bgtiles.png rename to graphics/pokedex/national_dex_bgtiles.png diff --git a/graphics/interface/pokedex_page_icon_tilemap.bin b/graphics/pokedex/page_icon_tilemap.bin similarity index 100% rename from graphics/interface/pokedex_page_icon_tilemap.bin rename to graphics/pokedex/page_icon_tilemap.bin diff --git a/graphics/interface/pokedex_silhouette_sprite_pal.pal b/graphics/pokedex/silhouette_sprite_pal.pal similarity index 100% rename from graphics/interface/pokedex_silhouette_sprite_pal.pal rename to graphics/pokedex/silhouette_sprite_pal.pal diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 0d5c6fa7b..64e173aa4 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -492,7 +492,7 @@ $(TITLESCREENGFXDIR)/leafgreen/box_art_mon.4bpp: %.4bpp: %.png $(CREDITSGFXDIR)/unk_8EAE548.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 77 -POKEDEXAREAMARKERSDATADIR := graphics/pokedex_area_markers +POKEDEXAREAMARKERSDATADIR := graphics/pokedex/area_markers POKEDEXAREAMARKERFILES := \ $(POKEDEXAREAMARKERSDATADIR)/marker_0.4bpp \ diff --git a/src/graphics.c b/src/graphics.c index c5af3c0be..c14251d17 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1245,8 +1245,8 @@ const u32 gEasyChatRedRectangularCursor_Tiles[] = INCBIN_U32("graphics/interface const u16 gPokeSummary_StatusAilmentIconPals[] = INCBIN_U16("graphics/interface/link_rfu_frame.gbapal"); const u32 gPokeSummary_StatusAilmentIconTiles[] = INCBIN_U32("graphics/interface/link_rfu_status.4bpp.lz"); -const u16 gDexScreen_TopMenuIconPals_AtoZ[] = INCBIN_U16("graphics/interface/pokedex_abc.gbapal"); -const u32 gDexScreen_TopMenuIconTiles_AtoZ[] = INCBIN_U32("graphics/interface/pokedex_abc.4bpp.lz"); +const u16 gDexScreen_TopMenuIconPals_AtoZ[] = INCBIN_U16("graphics/pokedex/cat_icon_abc.gbapal"); +const u32 gDexScreen_TopMenuIconTiles_AtoZ[] = INCBIN_U32("graphics/pokedex/cat_icon_abc.4bpp.lz"); const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); const u16 gUnknown_8E9C3F8[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal"); diff --git a/src/pokedex_area_markers.c b/src/pokedex_area_markers.c index d51efcec9..5226133ac 100644 --- a/src/pokedex_area_markers.c +++ b/src/pokedex_area_markers.c @@ -5,8 +5,8 @@ #include "wild_pokemon_area.h" #include "pokedex_area_markers.h" -static const u16 sMarkerPal[] = INCBIN_U16("graphics/pokedex_area_markers/marker.gbapal"); -static const u32 sMarkerTiles[] = INCBIN_U32("graphics/pokedex_area_markers/marker.4bpp.lz"); +static const u16 sMarkerPal[] = INCBIN_U16("graphics/pokedex/area_markers/marker.gbapal"); +static const u32 sMarkerTiles[] = INCBIN_U32("graphics/pokedex/area_markers/marker.4bpp.lz"); static const struct Subsprite sSubsprite0 = { .size = ST_OAM_SIZE_0, diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 5ea31f3d9..dc8968a5f 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -136,10 +136,10 @@ static void Task_DexScreen_RegisterMonToPokedex(u8 taskId); #include "data/pokemon_graphics/footprint_table.h" -const u32 sCategoryMonInfoBgTiles[] = INCBIN_U32("graphics/interface/pokedex_mini_page.4bpp.lz"); -const u32 sKantoDexTiles[] = INCBIN_U32("graphics/interface/pokedex_kanto_dex_bgtiles.4bpp.lz"); -const u32 sNatDexTiles[] = INCBIN_U32("graphics/interface/pokedex_national_dex_bgtiles.4bpp.lz"); -const u16 sKantoDexPalette[0x100] = INCBIN_U16("graphics/interface/pokedex_kanto_dex_bgpals.gbapal"); +const u32 sCategoryMonInfoBgTiles[] = INCBIN_U32("graphics/pokedex/mini_page.4bpp.lz"); +const u32 sKantoDexTiles[] = INCBIN_U32("graphics/pokedex/kanto_dex_bgtiles.4bpp.lz"); +const u32 sNatDexTiles[] = INCBIN_U32("graphics/pokedex/national_dex_bgtiles.4bpp.lz"); +const u16 sKantoDexPalette[0x100] = INCBIN_U16("graphics/pokedex/kanto_dex_bgpals.gbapal"); const u16 sDexScreen_CategoryCursorPals[] = { RGB(24, 22, 17), RGB(26, 24, 20), @@ -150,47 +150,47 @@ const u16 sDexScreen_CategoryCursorPals[] = { RGB(26, 20, 15), RGB(27, 23, 19) }; -const u16 sNationalDexPalette[0x100] = INCBIN_U16("graphics/interface/pokedex_national_dex_bgpals.gbapal"); -const u32 sTopMenuIconTiles_Cave[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_cave.4bpp.lz"); -const u32 sTopMenuIconTiles_Urban[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_urban.4bpp.lz"); -const u32 sTopMenuSelectionIconTiles_Cancel[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_cancel.4bpp.lz"); -const u32 sTopMenuIconTiles_Forest[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_forest.4bpp.lz"); -const u32 sTopMenuIconTiles_Grassland[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_grassland.4bpp.lz"); -const u32 sTopMenuIconTiles_QuestionMark[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_qmark.4bpp.lz"); -const u32 sTopMenuIconTiles_Mountain[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_mountain.4bpp.lz"); -const u32 sTopMenuIconTiles_Rare[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_rare.4bpp.lz"); -const u32 sTopMenuIconTiles_Sea[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_sea.4bpp.lz"); -const u32 sTopMenuIconTiles_Numerical[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_numerical.4bpp.lz"); -const u32 sTopMenuIconTiles_RoughTerrain[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_rough_terrain.4bpp.lz"); -const u32 sTopMenuIconTiles_WatersEdge[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_waters_edge.4bpp.lz"); -const u32 sTopMenuIconTiles_Type[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_type.4bpp.lz"); -const u32 sTopMenuIconTiles_Lightest[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_lightest.4bpp.lz"); -const u32 sTopMenuIconTiles_Smallest[] = INCBIN_U32("graphics/interface/pokedex_cat_icon_smallest.4bpp.lz"); -const u16 sTopMenuIconPals_Cave[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_cave.gbapal"); -const u16 sTopMenuIconPals_Urban[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_urban.gbapal"); -const u16 sTopMenuSelectionIconPals_Cancel[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_cancel.gbapal"); -const u16 sTopMenuIconPals_Forest[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_forest.gbapal"); -const u16 sTopMenuIconPals_Grassland[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_grassland.gbapal"); -const u16 sTopMenuIconPals_QuestionMark[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_qmark.gbapal"); -const u16 sTopMenuIconPals_Mountain[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_mountain.gbapal"); -const u16 sTopMenuIconPals_Rare[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_rare.gbapal"); -const u16 sTopMenuIconPals_Sea[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_sea.gbapal"); -const u16 sTopMenuIconPals_Numerical[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_numerical.gbapal"); -const u16 sTopMenuIconPals_RoughTerrain[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_rough_terrain.gbapal"); -const u16 sTopMenuIconPals_WatersEdge[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_waters_edge.gbapal"); -const u16 sTopMenuIconPals_Type[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_type.gbapal"); -const u16 sTopMenuIconPals_Lightest[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_lightest.gbapal"); -const u16 sTopMenuIconPals_Smallest[] = INCBIN_U16("graphics/interface/pokedex_cat_icon_smallest.gbapal"); -const u8 sDexScreen_CaughtIcon[] = INCBIN_U8("graphics/interface/pokedex_caught_marker.4bpp"); -const u32 sTilemap_AreaMap_Kanto[] = INCBIN_U32("graphics/interface/pokedex_map_kanto.4bpp.lz"); -const u32 sTilemap_AreaMap_OneIsland[] = INCBIN_U32("graphics/interface/pokedex_map_one_island.4bpp.lz"); -const u32 sTilemap_AreaMap_TwoIsland[] = INCBIN_U32("graphics/interface/pokedex_map_two_island.4bpp.lz"); -const u32 sTilemap_AreaMap_ThreeIsland[] = INCBIN_U32("graphics/interface/pokedex_map_three_island.4bpp.lz"); -const u32 sTilemap_AreaMap_FourIsland[] = INCBIN_U32("graphics/interface/pokedex_map_four_island.4bpp.lz"); -const u32 sTilemap_AreaMap_FiveIsland[] = INCBIN_U32("graphics/interface/pokedex_map_five_island.4bpp.lz"); -const u32 sTilemap_AreaMap_SixIsland[] = INCBIN_U32("graphics/interface/pokedex_map_six_island.4bpp.lz"); -const u32 sTilemap_AreaMap_SevenIsland[] = INCBIN_U32("graphics/interface/pokedex_map_seven_island.4bpp.lz"); -const u16 sBlitTiles_WideEllipse[] = INCBIN_U16("graphics/interface/pokedex_blit_wide_ellipse.4bpp"); +const u16 sNationalDexPalette[0x100] = INCBIN_U16("graphics/pokedex/national_dex_bgpals.gbapal"); +const u32 sTopMenuIconTiles_Cave[] = INCBIN_U32("graphics/pokedex/cat_icon_cave.4bpp.lz"); +const u32 sTopMenuIconTiles_Urban[] = INCBIN_U32("graphics/pokedex/cat_icon_urban.4bpp.lz"); +const u32 sTopMenuSelectionIconTiles_Cancel[] = INCBIN_U32("graphics/pokedex/cat_icon_cancel.4bpp.lz"); +const u32 sTopMenuIconTiles_Forest[] = INCBIN_U32("graphics/pokedex/cat_icon_forest.4bpp.lz"); +const u32 sTopMenuIconTiles_Grassland[] = INCBIN_U32("graphics/pokedex/cat_icon_grassland.4bpp.lz"); +const u32 sTopMenuIconTiles_QuestionMark[] = INCBIN_U32("graphics/pokedex/cat_icon_qmark.4bpp.lz"); +const u32 sTopMenuIconTiles_Mountain[] = INCBIN_U32("graphics/pokedex/cat_icon_mountain.4bpp.lz"); +const u32 sTopMenuIconTiles_Rare[] = INCBIN_U32("graphics/pokedex/cat_icon_rare.4bpp.lz"); +const u32 sTopMenuIconTiles_Sea[] = INCBIN_U32("graphics/pokedex/cat_icon_sea.4bpp.lz"); +const u32 sTopMenuIconTiles_Numerical[] = INCBIN_U32("graphics/pokedex/cat_icon_numerical.4bpp.lz"); +const u32 sTopMenuIconTiles_RoughTerrain[] = INCBIN_U32("graphics/pokedex/cat_icon_rough_terrain.4bpp.lz"); +const u32 sTopMenuIconTiles_WatersEdge[] = INCBIN_U32("graphics/pokedex/cat_icon_waters_edge.4bpp.lz"); +const u32 sTopMenuIconTiles_Type[] = INCBIN_U32("graphics/pokedex/cat_icon_type.4bpp.lz"); +const u32 sTopMenuIconTiles_Lightest[] = INCBIN_U32("graphics/pokedex/cat_icon_lightest.4bpp.lz"); +const u32 sTopMenuIconTiles_Smallest[] = INCBIN_U32("graphics/pokedex/cat_icon_smallest.4bpp.lz"); +const u16 sTopMenuIconPals_Cave[] = INCBIN_U16("graphics/pokedex/cat_icon_cave.gbapal"); +const u16 sTopMenuIconPals_Urban[] = INCBIN_U16("graphics/pokedex/cat_icon_urban.gbapal"); +const u16 sTopMenuSelectionIconPals_Cancel[] = INCBIN_U16("graphics/pokedex/cat_icon_cancel.gbapal"); +const u16 sTopMenuIconPals_Forest[] = INCBIN_U16("graphics/pokedex/cat_icon_forest.gbapal"); +const u16 sTopMenuIconPals_Grassland[] = INCBIN_U16("graphics/pokedex/cat_icon_grassland.gbapal"); +const u16 sTopMenuIconPals_QuestionMark[] = INCBIN_U16("graphics/pokedex/cat_icon_qmark.gbapal"); +const u16 sTopMenuIconPals_Mountain[] = INCBIN_U16("graphics/pokedex/cat_icon_mountain.gbapal"); +const u16 sTopMenuIconPals_Rare[] = INCBIN_U16("graphics/pokedex/cat_icon_rare.gbapal"); +const u16 sTopMenuIconPals_Sea[] = INCBIN_U16("graphics/pokedex/cat_icon_sea.gbapal"); +const u16 sTopMenuIconPals_Numerical[] = INCBIN_U16("graphics/pokedex/cat_icon_numerical.gbapal"); +const u16 sTopMenuIconPals_RoughTerrain[] = INCBIN_U16("graphics/pokedex/cat_icon_rough_terrain.gbapal"); +const u16 sTopMenuIconPals_WatersEdge[] = INCBIN_U16("graphics/pokedex/cat_icon_waters_edge.gbapal"); +const u16 sTopMenuIconPals_Type[] = INCBIN_U16("graphics/pokedex/cat_icon_type.gbapal"); +const u16 sTopMenuIconPals_Lightest[] = INCBIN_U16("graphics/pokedex/cat_icon_lightest.gbapal"); +const u16 sTopMenuIconPals_Smallest[] = INCBIN_U16("graphics/pokedex/cat_icon_smallest.gbapal"); +const u8 sDexScreen_CaughtIcon[] = INCBIN_U8("graphics/pokedex/caught_marker.4bpp"); +const u32 sTilemap_AreaMap_Kanto[] = INCBIN_U32("graphics/pokedex/map_kanto.4bpp.lz"); +const u32 sTilemap_AreaMap_OneIsland[] = INCBIN_U32("graphics/pokedex/map_one_island.4bpp.lz"); +const u32 sTilemap_AreaMap_TwoIsland[] = INCBIN_U32("graphics/pokedex/map_two_island.4bpp.lz"); +const u32 sTilemap_AreaMap_ThreeIsland[] = INCBIN_U32("graphics/pokedex/map_three_island.4bpp.lz"); +const u32 sTilemap_AreaMap_FourIsland[] = INCBIN_U32("graphics/pokedex/map_four_island.4bpp.lz"); +const u32 sTilemap_AreaMap_FiveIsland[] = INCBIN_U32("graphics/pokedex/map_five_island.4bpp.lz"); +const u32 sTilemap_AreaMap_SixIsland[] = INCBIN_U32("graphics/pokedex/map_six_island.4bpp.lz"); +const u32 sTilemap_AreaMap_SevenIsland[] = INCBIN_U32("graphics/pokedex/map_seven_island.4bpp.lz"); +const u16 sBlitTiles_WideEllipse[] = INCBIN_U16("graphics/pokedex/blit_wide_ellipse.4bpp"); #include "data/pokemon/pokedex_orders.h" @@ -764,7 +764,7 @@ struct { {&sWindowTemplate_AreaMap_SevenIsland, sTilemap_AreaMap_SevenIsland}, }; -static const u16 sCategoryPageIconWindowBg[] = INCBIN_U16("graphics/interface/pokedex_page_icon_tilemap.bin"); +static const u16 sCategoryPageIconWindowBg[] = INCBIN_U16("graphics/pokedex/page_icon_tilemap.bin"); // Circular window x/y; Rectangular window x/y static const u8 sPageIconCoords_1Mon[1][4] = { @@ -808,7 +808,7 @@ static const u8 * const sDexCategoryNamePtrs[] = { gText_DexCategory_RarePkmn, }; -const u16 sPalette_Silhouette[] = INCBIN_U16("graphics/interface/pokedex_silhouette_sprite_pal.gbapal"); +const u16 sPalette_Silhouette[] = INCBIN_U16("graphics/pokedex/silhouette_sprite_pal.gbapal"); static const u8 sDexScreenPageTurnColumns[][30] = { {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30}, From b80442645dc880216a35a780e5bed232aea1f92a Mon Sep 17 00:00:00 2001 From: hjk321 <37224753+hjk321@users.noreply.github.com> Date: Fri, 23 Apr 2021 11:10:15 -0600 Subject: [PATCH 17/28] Reorganize battle terrain gfx --- .../anim.bin} | Bin .../anim.png} | Bin .../terrain.bin} | Bin .../terrain.pal} | 0 .../terrain.png} | Bin .../{terrain_cave_anim.bin => cave/anim.bin} | Bin .../{terrain_cave_anim.png => cave/anim.png} | Bin .../{terrain_cave.bin => cave/terrain.bin} | Bin .../{terrain_cave.pal => cave/terrain.pal} | 0 .../{terrain_cave.png => cave/terrain.png} | Bin .../anim.bin} | Bin .../anim.png} | Bin .../{terrain_grass.bin => grass/terrain.bin} | Bin .../{terrain_grass.pal => grass/terrain.pal} | 0 .../{terrain_grass.png => grass/terrain.png} | Bin .../{terrain_indoor_1.pal => indoor/1.pal} | 0 .../{terrain_indoor_2.pal => indoor/2.pal} | 0 .../agatha.pal} | 0 .../bruno.pal} | 0 .../champion.pal} | 0 .../gym.pal} | 0 .../lance.pal} | 0 .../leader.pal} | 0 .../link.pal} | 0 .../lorelei.pal} | 0 .../plain.pal} | 0 .../terrain.bin} | Bin .../terrain.png} | Bin .../anim.bin} | Bin .../anim.png} | Bin .../terrain.bin} | Bin .../terrain.pal} | 0 .../terrain.png} | Bin .../anim.bin} | Bin .../anim.png} | Bin .../terrain.bin} | Bin .../terrain.pal} | 0 .../terrain.png} | Bin .../{terrain_pond_anim.bin => pond/anim.bin} | Bin .../{terrain_pond_anim.png => pond/anim.png} | Bin .../{terrain_pond.bin => pond/terrain.bin} | Bin .../{terrain_pond.pal => pond/terrain.pal} | 0 .../{terrain_pond.png => pond/terrain.png} | Bin .../{terrain_sand_anim.bin => sand/anim.bin} | Bin .../{terrain_sand_anim.png => sand/anim.png} | Bin .../{terrain_sand.bin => sand/terrain.bin} | Bin .../{terrain_sand.pal => sand/terrain.pal} | 0 .../{terrain_sand.png => sand/terrain.png} | Bin .../anim.bin} | Bin .../anim.png} | Bin .../terrain.bin} | Bin .../terrain.pal} | 0 .../terrain.png} | Bin .../anim.bin} | Bin .../anim.png} | Bin .../{terrain_water.bin => water/terrain.bin} | Bin .../{terrain_water.pal => water/terrain.pal} | 0 .../{terrain_water.png => water/terrain.png} | Bin graphics_file_rules.mk | 28 ++--- src/battle_bg.c | 116 +++++++++--------- 60 files changed, 72 insertions(+), 72 deletions(-) rename graphics/battle_terrain/{terrain_building_anim.bin => building/anim.bin} (100%) rename graphics/battle_terrain/{terrain_building_anim.png => building/anim.png} (100%) rename graphics/battle_terrain/{terrain_building.bin => building/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_building.pal => building/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_building.png => building/terrain.png} (100%) rename graphics/battle_terrain/{terrain_cave_anim.bin => cave/anim.bin} (100%) rename graphics/battle_terrain/{terrain_cave_anim.png => cave/anim.png} (100%) rename graphics/battle_terrain/{terrain_cave.bin => cave/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_cave.pal => cave/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_cave.png => cave/terrain.png} (100%) rename graphics/battle_terrain/{terrain_grass_anim.bin => grass/anim.bin} (100%) rename graphics/battle_terrain/{terrain_grass_anim.png => grass/anim.png} (100%) rename graphics/battle_terrain/{terrain_grass.bin => grass/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_grass.pal => grass/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_grass.png => grass/terrain.png} (100%) rename graphics/battle_terrain/{terrain_indoor_1.pal => indoor/1.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_2.pal => indoor/2.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_agatha.pal => indoor/agatha.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_bruno.pal => indoor/bruno.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_champion.pal => indoor/champion.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_gym.pal => indoor/gym.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_lance.pal => indoor/lance.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_leader.pal => indoor/leader.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_link.pal => indoor/link.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_lorelei.pal => indoor/lorelei.pal} (100%) rename graphics/battle_terrain/{terrain_indoor_plain.pal => indoor/plain.pal} (100%) rename graphics/battle_terrain/{terrain_indoor.bin => indoor/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_indoor.png => indoor/terrain.png} (100%) rename graphics/battle_terrain/{terrain_longgrass_anim.bin => longgrass/anim.bin} (100%) rename graphics/battle_terrain/{terrain_longgrass_anim.png => longgrass/anim.png} (100%) rename graphics/battle_terrain/{terrain_longgrass.bin => longgrass/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_longgrass.pal => longgrass/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_longgrass.png => longgrass/terrain.png} (100%) rename graphics/battle_terrain/{terrain_mountain_anim.bin => mountain/anim.bin} (100%) rename graphics/battle_terrain/{terrain_mountain_anim.png => mountain/anim.png} (100%) rename graphics/battle_terrain/{terrain_mountain.bin => mountain/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_mountain.pal => mountain/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_mountain.png => mountain/terrain.png} (100%) rename graphics/battle_terrain/{terrain_pond_anim.bin => pond/anim.bin} (100%) rename graphics/battle_terrain/{terrain_pond_anim.png => pond/anim.png} (100%) rename graphics/battle_terrain/{terrain_pond.bin => pond/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_pond.pal => pond/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_pond.png => pond/terrain.png} (100%) rename graphics/battle_terrain/{terrain_sand_anim.bin => sand/anim.bin} (100%) rename graphics/battle_terrain/{terrain_sand_anim.png => sand/anim.png} (100%) rename graphics/battle_terrain/{terrain_sand.bin => sand/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_sand.pal => sand/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_sand.png => sand/terrain.png} (100%) rename graphics/battle_terrain/{terrain_underwater_anim.bin => underwater/anim.bin} (100%) rename graphics/battle_terrain/{terrain_underwater_anim.png => underwater/anim.png} (100%) rename graphics/battle_terrain/{terrain_underwater.bin => underwater/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_underwater.pal => underwater/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_underwater.png => underwater/terrain.png} (100%) rename graphics/battle_terrain/{terrain_water_anim.bin => water/anim.bin} (100%) rename graphics/battle_terrain/{terrain_water_anim.png => water/anim.png} (100%) rename graphics/battle_terrain/{terrain_water.bin => water/terrain.bin} (100%) rename graphics/battle_terrain/{terrain_water.pal => water/terrain.pal} (100%) rename graphics/battle_terrain/{terrain_water.png => water/terrain.png} (100%) diff --git a/graphics/battle_terrain/terrain_building_anim.bin b/graphics/battle_terrain/building/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_building_anim.bin rename to graphics/battle_terrain/building/anim.bin diff --git a/graphics/battle_terrain/terrain_building_anim.png b/graphics/battle_terrain/building/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_building_anim.png rename to graphics/battle_terrain/building/anim.png diff --git a/graphics/battle_terrain/terrain_building.bin b/graphics/battle_terrain/building/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_building.bin rename to graphics/battle_terrain/building/terrain.bin diff --git a/graphics/battle_terrain/terrain_building.pal b/graphics/battle_terrain/building/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_building.pal rename to graphics/battle_terrain/building/terrain.pal diff --git a/graphics/battle_terrain/terrain_building.png b/graphics/battle_terrain/building/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_building.png rename to graphics/battle_terrain/building/terrain.png diff --git a/graphics/battle_terrain/terrain_cave_anim.bin b/graphics/battle_terrain/cave/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_cave_anim.bin rename to graphics/battle_terrain/cave/anim.bin diff --git a/graphics/battle_terrain/terrain_cave_anim.png b/graphics/battle_terrain/cave/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_cave_anim.png rename to graphics/battle_terrain/cave/anim.png diff --git a/graphics/battle_terrain/terrain_cave.bin b/graphics/battle_terrain/cave/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_cave.bin rename to graphics/battle_terrain/cave/terrain.bin diff --git a/graphics/battle_terrain/terrain_cave.pal b/graphics/battle_terrain/cave/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_cave.pal rename to graphics/battle_terrain/cave/terrain.pal diff --git a/graphics/battle_terrain/terrain_cave.png b/graphics/battle_terrain/cave/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_cave.png rename to graphics/battle_terrain/cave/terrain.png diff --git a/graphics/battle_terrain/terrain_grass_anim.bin b/graphics/battle_terrain/grass/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_grass_anim.bin rename to graphics/battle_terrain/grass/anim.bin diff --git a/graphics/battle_terrain/terrain_grass_anim.png b/graphics/battle_terrain/grass/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_grass_anim.png rename to graphics/battle_terrain/grass/anim.png diff --git a/graphics/battle_terrain/terrain_grass.bin b/graphics/battle_terrain/grass/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_grass.bin rename to graphics/battle_terrain/grass/terrain.bin diff --git a/graphics/battle_terrain/terrain_grass.pal b/graphics/battle_terrain/grass/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_grass.pal rename to graphics/battle_terrain/grass/terrain.pal diff --git a/graphics/battle_terrain/terrain_grass.png b/graphics/battle_terrain/grass/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_grass.png rename to graphics/battle_terrain/grass/terrain.png diff --git a/graphics/battle_terrain/terrain_indoor_1.pal b/graphics/battle_terrain/indoor/1.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_1.pal rename to graphics/battle_terrain/indoor/1.pal diff --git a/graphics/battle_terrain/terrain_indoor_2.pal b/graphics/battle_terrain/indoor/2.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_2.pal rename to graphics/battle_terrain/indoor/2.pal diff --git a/graphics/battle_terrain/terrain_indoor_agatha.pal b/graphics/battle_terrain/indoor/agatha.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_agatha.pal rename to graphics/battle_terrain/indoor/agatha.pal diff --git a/graphics/battle_terrain/terrain_indoor_bruno.pal b/graphics/battle_terrain/indoor/bruno.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_bruno.pal rename to graphics/battle_terrain/indoor/bruno.pal diff --git a/graphics/battle_terrain/terrain_indoor_champion.pal b/graphics/battle_terrain/indoor/champion.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_champion.pal rename to graphics/battle_terrain/indoor/champion.pal diff --git a/graphics/battle_terrain/terrain_indoor_gym.pal b/graphics/battle_terrain/indoor/gym.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_gym.pal rename to graphics/battle_terrain/indoor/gym.pal diff --git a/graphics/battle_terrain/terrain_indoor_lance.pal b/graphics/battle_terrain/indoor/lance.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_lance.pal rename to graphics/battle_terrain/indoor/lance.pal diff --git a/graphics/battle_terrain/terrain_indoor_leader.pal b/graphics/battle_terrain/indoor/leader.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_leader.pal rename to graphics/battle_terrain/indoor/leader.pal diff --git a/graphics/battle_terrain/terrain_indoor_link.pal b/graphics/battle_terrain/indoor/link.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_link.pal rename to graphics/battle_terrain/indoor/link.pal diff --git a/graphics/battle_terrain/terrain_indoor_lorelei.pal b/graphics/battle_terrain/indoor/lorelei.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_lorelei.pal rename to graphics/battle_terrain/indoor/lorelei.pal diff --git a/graphics/battle_terrain/terrain_indoor_plain.pal b/graphics/battle_terrain/indoor/plain.pal similarity index 100% rename from graphics/battle_terrain/terrain_indoor_plain.pal rename to graphics/battle_terrain/indoor/plain.pal diff --git a/graphics/battle_terrain/terrain_indoor.bin b/graphics/battle_terrain/indoor/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_indoor.bin rename to graphics/battle_terrain/indoor/terrain.bin diff --git a/graphics/battle_terrain/terrain_indoor.png b/graphics/battle_terrain/indoor/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_indoor.png rename to graphics/battle_terrain/indoor/terrain.png diff --git a/graphics/battle_terrain/terrain_longgrass_anim.bin b/graphics/battle_terrain/longgrass/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_longgrass_anim.bin rename to graphics/battle_terrain/longgrass/anim.bin diff --git a/graphics/battle_terrain/terrain_longgrass_anim.png b/graphics/battle_terrain/longgrass/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_longgrass_anim.png rename to graphics/battle_terrain/longgrass/anim.png diff --git a/graphics/battle_terrain/terrain_longgrass.bin b/graphics/battle_terrain/longgrass/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_longgrass.bin rename to graphics/battle_terrain/longgrass/terrain.bin diff --git a/graphics/battle_terrain/terrain_longgrass.pal b/graphics/battle_terrain/longgrass/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_longgrass.pal rename to graphics/battle_terrain/longgrass/terrain.pal diff --git a/graphics/battle_terrain/terrain_longgrass.png b/graphics/battle_terrain/longgrass/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_longgrass.png rename to graphics/battle_terrain/longgrass/terrain.png diff --git a/graphics/battle_terrain/terrain_mountain_anim.bin b/graphics/battle_terrain/mountain/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_mountain_anim.bin rename to graphics/battle_terrain/mountain/anim.bin diff --git a/graphics/battle_terrain/terrain_mountain_anim.png b/graphics/battle_terrain/mountain/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_mountain_anim.png rename to graphics/battle_terrain/mountain/anim.png diff --git a/graphics/battle_terrain/terrain_mountain.bin b/graphics/battle_terrain/mountain/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_mountain.bin rename to graphics/battle_terrain/mountain/terrain.bin diff --git a/graphics/battle_terrain/terrain_mountain.pal b/graphics/battle_terrain/mountain/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_mountain.pal rename to graphics/battle_terrain/mountain/terrain.pal diff --git a/graphics/battle_terrain/terrain_mountain.png b/graphics/battle_terrain/mountain/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_mountain.png rename to graphics/battle_terrain/mountain/terrain.png diff --git a/graphics/battle_terrain/terrain_pond_anim.bin b/graphics/battle_terrain/pond/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_pond_anim.bin rename to graphics/battle_terrain/pond/anim.bin diff --git a/graphics/battle_terrain/terrain_pond_anim.png b/graphics/battle_terrain/pond/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_pond_anim.png rename to graphics/battle_terrain/pond/anim.png diff --git a/graphics/battle_terrain/terrain_pond.bin b/graphics/battle_terrain/pond/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_pond.bin rename to graphics/battle_terrain/pond/terrain.bin diff --git a/graphics/battle_terrain/terrain_pond.pal b/graphics/battle_terrain/pond/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_pond.pal rename to graphics/battle_terrain/pond/terrain.pal diff --git a/graphics/battle_terrain/terrain_pond.png b/graphics/battle_terrain/pond/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_pond.png rename to graphics/battle_terrain/pond/terrain.png diff --git a/graphics/battle_terrain/terrain_sand_anim.bin b/graphics/battle_terrain/sand/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_sand_anim.bin rename to graphics/battle_terrain/sand/anim.bin diff --git a/graphics/battle_terrain/terrain_sand_anim.png b/graphics/battle_terrain/sand/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_sand_anim.png rename to graphics/battle_terrain/sand/anim.png diff --git a/graphics/battle_terrain/terrain_sand.bin b/graphics/battle_terrain/sand/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_sand.bin rename to graphics/battle_terrain/sand/terrain.bin diff --git a/graphics/battle_terrain/terrain_sand.pal b/graphics/battle_terrain/sand/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_sand.pal rename to graphics/battle_terrain/sand/terrain.pal diff --git a/graphics/battle_terrain/terrain_sand.png b/graphics/battle_terrain/sand/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_sand.png rename to graphics/battle_terrain/sand/terrain.png diff --git a/graphics/battle_terrain/terrain_underwater_anim.bin b/graphics/battle_terrain/underwater/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_underwater_anim.bin rename to graphics/battle_terrain/underwater/anim.bin diff --git a/graphics/battle_terrain/terrain_underwater_anim.png b/graphics/battle_terrain/underwater/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_underwater_anim.png rename to graphics/battle_terrain/underwater/anim.png diff --git a/graphics/battle_terrain/terrain_underwater.bin b/graphics/battle_terrain/underwater/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_underwater.bin rename to graphics/battle_terrain/underwater/terrain.bin diff --git a/graphics/battle_terrain/terrain_underwater.pal b/graphics/battle_terrain/underwater/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_underwater.pal rename to graphics/battle_terrain/underwater/terrain.pal diff --git a/graphics/battle_terrain/terrain_underwater.png b/graphics/battle_terrain/underwater/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_underwater.png rename to graphics/battle_terrain/underwater/terrain.png diff --git a/graphics/battle_terrain/terrain_water_anim.bin b/graphics/battle_terrain/water/anim.bin similarity index 100% rename from graphics/battle_terrain/terrain_water_anim.bin rename to graphics/battle_terrain/water/anim.bin diff --git a/graphics/battle_terrain/terrain_water_anim.png b/graphics/battle_terrain/water/anim.png similarity index 100% rename from graphics/battle_terrain/terrain_water_anim.png rename to graphics/battle_terrain/water/anim.png diff --git a/graphics/battle_terrain/terrain_water.bin b/graphics/battle_terrain/water/terrain.bin similarity index 100% rename from graphics/battle_terrain/terrain_water.bin rename to graphics/battle_terrain/water/terrain.bin diff --git a/graphics/battle_terrain/terrain_water.pal b/graphics/battle_terrain/water/terrain.pal similarity index 100% rename from graphics/battle_terrain/terrain_water.pal rename to graphics/battle_terrain/water/terrain.pal diff --git a/graphics/battle_terrain/terrain_water.png b/graphics/battle_terrain/water/terrain.png similarity index 100% rename from graphics/battle_terrain/terrain_water.png rename to graphics/battle_terrain/water/terrain.png diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 3ad7cf542..72dd013b0 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -530,46 +530,46 @@ $(INTROGFXDIR)/unk_8406654.4bpp: %.4bpp: %.png $(INTROGFXDIR)/unk_8405B28.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 17 -$(BATTLETERRAINGFXDIR)/terrain_building.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/building/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 77 -$(BATTLETERRAINGFXDIR)/terrain_cave_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/cave/anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 106 -$(BATTLETERRAINGFXDIR)/terrain_cave.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/cave/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 84 -$(BATTLETERRAINGFXDIR)/terrain_grass.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/grass/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 98 -$(BATTLETERRAINGFXDIR)/terrain_indoor.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/indoor/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 77 -$(BATTLETERRAINGFXDIR)/terrain_longgrass_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/longgrass/anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 133 -$(BATTLETERRAINGFXDIR)/terrain_longgrass.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/longgrass/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 98 -$(BATTLETERRAINGFXDIR)/terrain_mountain_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/mountain/anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 47 -$(BATTLETERRAINGFXDIR)/terrain_pond_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/pond/anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 36 -$(BATTLETERRAINGFXDIR)/terrain_pond.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/pond/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 75 -$(BATTLETERRAINGFXDIR)/terrain_sand.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/sand/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 83 -$(BATTLETERRAINGFXDIR)/terrain_underwater_anim.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/underwater/anim.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 26 -$(BATTLETERRAINGFXDIR)/terrain_underwater.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/underwater/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 85 -$(BATTLETERRAINGFXDIR)/terrain_water.4bpp: %.4bpp: %.png +$(BATTLETERRAINGFXDIR)/water/terrain.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 81 $(BERRYPOUCHGFXDIR)/background.4bpp: %.4bpp: %.png diff --git a/src/battle_bg.c b/src/battle_bg.c index 44f26494b..c30f10643 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -343,73 +343,73 @@ static const struct WindowTemplate gUnknown_8248330[] = { }, DUMMY_WIN_TEMPLATE }; -static const u32 sBattleTerrainPalette_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass.gbapal.lz"); -static const u32 sBattleTerrainTiles_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Grass[] = INCBIN_U32("graphics/battle_terrain/terrain_grass_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Grass[] = INCBIN_U32("graphics/battle_terrain/grass/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Grass[] = INCBIN_U32("graphics/battle_terrain/grass/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Grass[] = INCBIN_U32("graphics/battle_terrain/grass/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Grass[] = INCBIN_U32("graphics/battle_terrain/grass/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Grass[] = INCBIN_U32("graphics/battle_terrain/grass/anim.bin.lz"); -static const u32 sBattleTerrainPalette_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass.gbapal.lz"); -static const u32 sBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass.4bpp.lz"); -static const u32 sBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass.bin.lz"); -static const u32 sBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/terrain_longgrass_anim.bin.lz"); +static const u32 sBattleTerrainPalette_LongGrass[] = INCBIN_U32("graphics/battle_terrain/longgrass/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/longgrass/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/longgrass/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_LongGrass[] = INCBIN_U32("graphics/battle_terrain/longgrass/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_LongGrass[] = INCBIN_U32("graphics/battle_terrain/longgrass/anim.bin.lz"); -static const u32 sBattleTerrainPalette_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand.gbapal.lz"); -static const u32 sBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/terrain_sand_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Sand[] = INCBIN_U32("graphics/battle_terrain/sand/anim.bin.lz"); -static const u32 sBattleTerrainPalette_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater.gbapal.lz"); -static const u32 sBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/terrain_underwater_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Underwater[] = INCBIN_U32("graphics/battle_terrain/underwater/anim.bin.lz"); -static const u32 sBattleTerrainPalette_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water.gbapal.lz"); -static const u32 sBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/terrain_water_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Water[] = INCBIN_U32("graphics/battle_terrain/water/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Water[] = INCBIN_U32("graphics/battle_terrain/water/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/water/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Water[] = INCBIN_U32("graphics/battle_terrain/water/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Water[] = INCBIN_U32("graphics/battle_terrain/water/anim.bin.lz"); -static const u32 sBattleTerrainPalette_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond.gbapal.lz"); -static const u32 sBattleTerrainTiles_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Pond[] = INCBIN_U32("graphics/battle_terrain/terrain_pond_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Pond[] = INCBIN_U32("graphics/battle_terrain/pond/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Pond[] = INCBIN_U32("graphics/battle_terrain/pond/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Pond[] = INCBIN_U32("graphics/battle_terrain/pond/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Pond[] = INCBIN_U32("graphics/battle_terrain/pond/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Pond[] = INCBIN_U32("graphics/battle_terrain/pond/anim.bin.lz"); -static const u32 sBattleTerrainPalette_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain.gbapal.lz"); -static const u32 sBattleTerrainTiles_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Mountain[] = INCBIN_U32("graphics/battle_terrain/terrain_mountain_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Mountain[] = INCBIN_U32("graphics/battle_terrain/mountain/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Mountain[] = INCBIN_U32("graphics/battle_terrain/mountain/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Mountain[] = INCBIN_U32("graphics/battle_terrain/mountain/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Mountain[] = INCBIN_U32("graphics/battle_terrain/mountain/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Mountain[] = INCBIN_U32("graphics/battle_terrain/mountain/anim.bin.lz"); -static const u32 sBattleTerrainPalette_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave.gbapal.lz"); -static const u32 sBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/terrain_cave_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Cave[] = INCBIN_U32("graphics/battle_terrain/cave/anim.bin.lz"); -static const u32 sBattleTerrainPalette_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building.gbapal.lz"); -static const u32 sBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building.bin.lz"); -static const u32 sBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building_anim.4bpp.lz"); -static const u32 sBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/terrain_building_anim.bin.lz"); +static const u32 sBattleTerrainPalette_Building[] = INCBIN_U32("graphics/battle_terrain/building/terrain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Building[] = INCBIN_U32("graphics/battle_terrain/building/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/building/terrain.bin.lz"); +static const u32 sBattleTerrainAnimTiles_Building[] = INCBIN_U32("graphics/battle_terrain/building/anim.4bpp.lz"); +static const u32 sBattleTerrainAnimTilemap_Building[] = INCBIN_U32("graphics/battle_terrain/building/anim.bin.lz"); -static const u32 sBattleTerrainPalette_Link[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_link.gbapal.lz"); -static const u32 sBattleTerrainPalette_Gym[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_gym.gbapal.lz"); -static const u32 sBattleTerrainPalette_Leader[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_leader.gbapal.lz"); -static const u32 sBattleTerrainPalette_Indoor2[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_2.gbapal.lz"); -static const u32 sBattleTerrainPalette_Indoor1[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_1.gbapal.lz"); -static const u32 sBattleTerrainPalette_Lorelei[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_lorelei.gbapal.lz"); -static const u32 sBattleTerrainPalette_Bruno[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_bruno.gbapal.lz"); -static const u32 sBattleTerrainPalette_Agatha[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_agatha.gbapal.lz"); -static const u32 sBattleTerrainPalette_Lance[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_lance.gbapal.lz"); -static const u32 sBattleTerrainPalette_Champion[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_champion.gbapal.lz"); -static const u32 sBattleTerrainPalette_Plain[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor_plain.gbapal.lz"); -static const u32 sBattleTerrainTiles_Indoor[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor.4bpp.lz"); -static const u32 sBattleTerrainTilemap_Indoor[] = INCBIN_U32("graphics/battle_terrain/terrain_indoor.bin.lz"); +static const u32 sBattleTerrainPalette_Link[] = INCBIN_U32("graphics/battle_terrain/indoor/link.gbapal.lz"); +static const u32 sBattleTerrainPalette_Gym[] = INCBIN_U32("graphics/battle_terrain/indoor/gym.gbapal.lz"); +static const u32 sBattleTerrainPalette_Leader[] = INCBIN_U32("graphics/battle_terrain/indoor/leader.gbapal.lz"); +static const u32 sBattleTerrainPalette_Indoor2[] = INCBIN_U32("graphics/battle_terrain/indoor/2.gbapal.lz"); +static const u32 sBattleTerrainPalette_Indoor1[] = INCBIN_U32("graphics/battle_terrain/indoor/1.gbapal.lz"); +static const u32 sBattleTerrainPalette_Lorelei[] = INCBIN_U32("graphics/battle_terrain/indoor/lorelei.gbapal.lz"); +static const u32 sBattleTerrainPalette_Bruno[] = INCBIN_U32("graphics/battle_terrain/indoor/bruno.gbapal.lz"); +static const u32 sBattleTerrainPalette_Agatha[] = INCBIN_U32("graphics/battle_terrain/indoor/agatha.gbapal.lz"); +static const u32 sBattleTerrainPalette_Lance[] = INCBIN_U32("graphics/battle_terrain/indoor/lance.gbapal.lz"); +static const u32 sBattleTerrainPalette_Champion[] = INCBIN_U32("graphics/battle_terrain/indoor/champion.gbapal.lz"); +static const u32 sBattleTerrainPalette_Plain[] = INCBIN_U32("graphics/battle_terrain/indoor/plain.gbapal.lz"); +static const u32 sBattleTerrainTiles_Indoor[] = INCBIN_U32("graphics/battle_terrain/indoor/terrain.4bpp.lz"); +static const u32 sBattleTerrainTilemap_Indoor[] = INCBIN_U32("graphics/battle_terrain/indoor/terrain.bin.lz"); static const struct BattleBackground sBattleTerrainTable[] = { [BATTLE_TERRAIN_GRASS] = From 81b338157e36db888664f9e616e9d5bd6dd6348c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Apr 2021 20:27:54 -0400 Subject: [PATCH 18/28] Document Fame Checker, 1 --- src/fame_checker.c | 339 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 271 insertions(+), 68 deletions(-) diff --git a/src/fame_checker.c b/src/fame_checker.c index ea6e63be9..12ec2ad1a 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -18,6 +18,7 @@ #include "text_window.h" #include "fame_checker.h" #include "strings.h" +#include "constants/event_objects.h" #define SPRITETAG_SELECTOR_CURSOR 1000 #define SPRITETAG_QUESTION_MARK 1001 @@ -136,23 +137,28 @@ static const u8 sTextColor_White[3] = {0, 1, 2}; static const u8 sTextColor_DkGrey[3] = {0, 2, 3}; static const u8 sTextColor_Green[3] = {0, 6, 7}; +#define FAME_CHECKER_PROF_OAK (FC_NONTRAINER_START + 0) +#define FAME_CHECKER_DAISY_OAK (FC_NONTRAINER_START + 1) +#define FAME_CHECKER_BILL (FC_NONTRAINER_START + 2) +#define FAME_CHECKER_MR_FUJI (FC_NONTRAINER_START + 3) + static const u16 sTrainerIdxs[] = { - FC_NONTRAINER_START + 0, // OAK - FC_NONTRAINER_START + 1, // DAISY - 0x019e, // BROCK - 0x019f, // MISTY - 0x01a0, // LTSURGE - 0x01a1, // ERIKA - 0x01a2, // KOGA - 0x01a4, // SABRINA - 0x01a3, // BLAINE - 0x019a, // LORELEI - 0x019b, // BRUNO - 0x019c, // AGATHA - 0x019d, // LANCE - FC_NONTRAINER_START + 2, // BILL - FC_NONTRAINER_START + 3, // MRFUJI - 0x015c // GIOVANNI + [FAMECHECKER_OAK] = FAME_CHECKER_PROF_OAK, + [FAMECHECKER_DAISY] = FAME_CHECKER_DAISY_OAK, + [FAMECHECKER_BROCK] = TRAINER_LEADER_BROCK, + [FAMECHECKER_MISTY] = TRAINER_LEADER_MISTY, + [FAMECHECKER_LTSURGE] = TRAINER_LEADER_LT_SURGE, + [FAMECHECKER_ERIKA] = TRAINER_LEADER_ERIKA, + [FAMECHECKER_KOGA] = TRAINER_LEADER_KOGA, + [FAMECHECKER_SABRINA] = TRAINER_LEADER_SABRINA, + [FAMECHECKER_BLAINE] = TRAINER_LEADER_BLAINE, + [FAMECHECKER_LORELEI] = TRAINER_ELITE_FOUR_LORELEI, + [FAMECHECKER_BRUNO] = TRAINER_ELITE_FOUR_BRUNO, + [FAMECHECKER_AGATHA] = TRAINER_ELITE_FOUR_AGATHA, + [FAMECHECKER_LANCE] = TRAINER_ELITE_FOUR_LANCE, + [FAMECHECKER_BILL] = FAME_CHECKER_BILL, + [FAMECHECKER_MRFUJI] = FAME_CHECKER_MR_FUJI, + [FAMECHECKER_GIOVANNI] = TRAINER_BOSS_GIOVANNI }; static const u8 *const sNonTrainerNamePointers[] = { @@ -163,13 +169,78 @@ static const u8 *const sNonTrainerNamePointers[] = { }; static const u8 sFameCheckerTrainerPicIdxs[] = { - 0x56, 0x54, 0x74, 0x75, 0x76, 0x77, 0x78, 0x7a, 0x79, 0x70, 0x71, 0x72, 0x73, 0x64, 0x7b, 0x6c, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 // these values are unused + [FAMECHECKER_OAK] = TRAINER_PIC_CAMPER, + [FAMECHECKER_DAISY] = TRAINER_PIC_LASS, + [FAMECHECKER_BROCK] = TRAINER_PIC_LEADER_BROCK, + [FAMECHECKER_MISTY] = TRAINER_PIC_LEADER_MISTY, + [FAMECHECKER_LTSURGE] = TRAINER_PIC_LEADER_LT_SURGE, + [FAMECHECKER_ERIKA] = TRAINER_PIC_LEADER_ERIKA, + [FAMECHECKER_KOGA] = TRAINER_PIC_LEADER_KOGA, + [FAMECHECKER_SABRINA] = TRAINER_PIC_LEADER_SABRINA, + [FAMECHECKER_BLAINE] = TRAINER_PIC_LEADER_BLAINE, + [FAMECHECKER_LORELEI] = TRAINER_PIC_ELITE_FOUR_LORELEI, + [FAMECHECKER_BRUNO] = TRAINER_PIC_ELITE_FOUR_BRUNO, + [FAMECHECKER_AGATHA] = TRAINER_PIC_ELITE_FOUR_AGATHA, + [FAMECHECKER_LANCE] = TRAINER_PIC_ELITE_FOUR_LANCE, + [FAMECHECKER_BILL] = TRAINER_PIC_PSYCHIC_M, + [FAMECHECKER_MRFUJI] = TRAINER_PIC_GENTLEMAN, + [FAMECHECKER_GIOVANNI] = TRAINER_PIC_LEADER_GIOVANNI, }; -static const u8 *const sFameCheckerNameAndQuotesPointers[] = { - gFameCheckerPersonName_ProfOak, gFameCheckerPersonName_Daisy, gFameCheckerPersonName_Brock, gFameCheckerPersonName_Misty, gFameCheckerPersonName_LtSurge, gFameCheckerPersonName_Erika, gFameCheckerPersonName_Koga, gFameCheckerPersonName_Sabrina, gFameCheckerPersonName_Blaine, gFameCheckerPersonName_Lorelei, gFameCheckerPersonName_Bruno, gFameCheckerPersonName_Agatha, gFameCheckerPersonName_Lance, gFameCheckerPersonName_Bill, gFameCheckerPersonName_MrFuji, gFameCheckerPersonName_Giovanni, - gFameCheckerPersonQuote_ProfOak, gFameCheckerPersonQuote_Daisy, gFameCheckerPersonQuote_Brock, gFameCheckerPersonQuote_Misty, gFameCheckerPersonQuote_LtSurge, gFameCheckerPersonQuote_Erika, gFameCheckerPersonQuote_Koga, gFameCheckerPersonQuote_Sabrina, gFameCheckerPersonQuote_Blaine, gFameCheckerPersonQuote_Lorelei, gFameCheckerPersonQuote_Bruno, gFameCheckerPersonQuote_Agatha, gFameCheckerPersonQuote_Lance, gFameCheckerPersonQuote_Bill, gFameCheckerPersonQuote_MrFuji, gFameCheckerPersonQuote_Giovanni +static const u8 sFameCheckerTrainerGenders_Unused[] = { + [FAMECHECKER_OAK] = MALE, + [FAMECHECKER_DAISY] = FEMALE, + [FAMECHECKER_BROCK] = MALE, + [FAMECHECKER_MISTY] = FEMALE, + [FAMECHECKER_LTSURGE] = MALE, + [FAMECHECKER_ERIKA] = FEMALE, + [FAMECHECKER_KOGA] = MALE, + [FAMECHECKER_SABRINA] = FEMALE, + [FAMECHECKER_BLAINE] = MALE, + [FAMECHECKER_LORELEI] = FEMALE, + [FAMECHECKER_BRUNO] = MALE, + [FAMECHECKER_AGATHA] = FEMALE, + [FAMECHECKER_LANCE] = MALE, + [FAMECHECKER_BILL] = MALE, + [FAMECHECKER_MRFUJI] = MALE, + [FAMECHECKER_GIOVANNI] = MALE, +}; + +static const u8 *const sFameCheckerNameAndQuotesPointers[2 * NUM_FAMECHECKER_PERSONS] = +{ + gFameCheckerPersonName_ProfOak, + gFameCheckerPersonName_Daisy, + gFameCheckerPersonName_Brock, + gFameCheckerPersonName_Misty, + gFameCheckerPersonName_LtSurge, + gFameCheckerPersonName_Erika, + gFameCheckerPersonName_Koga, + gFameCheckerPersonName_Sabrina, + gFameCheckerPersonName_Blaine, + gFameCheckerPersonName_Lorelei, + gFameCheckerPersonName_Bruno, + gFameCheckerPersonName_Agatha, + gFameCheckerPersonName_Lance, + gFameCheckerPersonName_Bill, + gFameCheckerPersonName_MrFuji, + gFameCheckerPersonName_Giovanni, + + gFameCheckerPersonQuote_ProfOak, + gFameCheckerPersonQuote_Daisy, + gFameCheckerPersonQuote_Brock, + gFameCheckerPersonQuote_Misty, + gFameCheckerPersonQuote_LtSurge, + gFameCheckerPersonQuote_Erika, + gFameCheckerPersonQuote_Koga, + gFameCheckerPersonQuote_Sabrina, + gFameCheckerPersonQuote_Blaine, + gFameCheckerPersonQuote_Lorelei, + gFameCheckerPersonQuote_Bruno, + gFameCheckerPersonQuote_Agatha, + gFameCheckerPersonQuote_Lance, + gFameCheckerPersonQuote_Bill, + gFameCheckerPersonQuote_MrFuji, + gFameCheckerPersonQuote_Giovanni }; static const u8 *const sFameCheckerFlavorTextPointers[] = { @@ -192,22 +263,118 @@ static const u8 *const sFameCheckerFlavorTextPointers[] = { }; static const u8 sFameCheckerArrayNpcGraphicsIds[] = { - 0x67, 0x47, 0x30, 0x69, 0x4b, 0x37, - 0x37, 0x30, 0x3d, 0x69, 0x23, 0x69, - 0x66, 0x50, 0x1b, 0x13, 0x1e, 0x69, - 0x66, 0x51, 0x2b, 0x27, 0x1d, 0x69, - 0x66, 0x52, 0x3d, 0x3d, 0x3e, 0x69, - 0x66, 0x53, 0x16, 0x1d, 0x53, 0x69, - 0x66, 0x54, 0x1a, 0x16, 0x69, 0x1e, - 0x66, 0x19, 0x55, 0x55, 0x69, 0x29, - 0x66, 0x56, 0x37, 0x1c, 0x69, 0x69, - 0x4d, 0x4d, 0x20, 0x69, 0x11, 0x23, - 0x4f, 0x4f, 0x69, 0x36, 0x1d, 0x36, - 0x4b, 0x36, 0x36, 0x69, 0x4b, 0x23, - 0x4a, 0x4a, 0x18, 0x17, 0x69, 0x29, - 0x48, 0x12, 0x20, 0x59, 0x59, 0x59, - 0x11, 0x31, 0x69, 0x1e, 0x69, 0x69, - 0x57, 0x37, 0x37, 0x57, 0x5b, 0x37 + // OAK + OBJ_EVENT_GFX_SIGN, + OBJ_EVENT_GFX_PROF_OAK, + OBJ_EVENT_GFX_WORKER_F, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_AGATHA, + OBJ_EVENT_GFX_SCIENTIST, + // DAISY + OBJ_EVENT_GFX_SCIENTIST, + OBJ_EVENT_GFX_WORKER_F, + OBJ_EVENT_GFX_GENTLEMAN, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_OLD_WOMAN, + OBJ_EVENT_GFX_CLIPBOARD, + // BROCK + OBJ_EVENT_GFX_GYM_SIGN, + OBJ_EVENT_GFX_BROCK, + OBJ_EVENT_GFX_FAT_MAN, + OBJ_EVENT_GFX_BOY, + OBJ_EVENT_GFX_BALDING_MAN, + OBJ_EVENT_GFX_CLIPBOARD, + // MISTY + OBJ_EVENT_GFX_GYM_SIGN, + OBJ_EVENT_GFX_MISTY, + OBJ_EVENT_GFX_SWIMMER_M_WATER, + OBJ_EVENT_GFX_CAMPER, + OBJ_EVENT_GFX_BEAUTY, + OBJ_EVENT_GFX_CLIPBOARD, + // LTSURGE + OBJ_EVENT_GFX_GYM_SIGN, + OBJ_EVENT_GFX_LT_SURGE, + OBJ_EVENT_GFX_GENTLEMAN, + OBJ_EVENT_GFX_GENTLEMAN, + OBJ_EVENT_GFX_SAILOR, + OBJ_EVENT_GFX_CLIPBOARD, + // ERIKA + OBJ_EVENT_GFX_GYM_SIGN, + OBJ_EVENT_GFX_ERIKA, + OBJ_EVENT_GFX_LASS, + OBJ_EVENT_GFX_BEAUTY, + OBJ_EVENT_GFX_ERIKA, + OBJ_EVENT_GFX_CLIPBOARD, + // KOGA + OBJ_EVENT_GFX_GYM_SIGN, + OBJ_EVENT_GFX_KOGA, + OBJ_EVENT_GFX_ROCKER, + OBJ_EVENT_GFX_LASS, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_BALDING_MAN, + // SABRINA + OBJ_EVENT_GFX_GYM_SIGN, + OBJ_EVENT_GFX_MAN, + OBJ_EVENT_GFX_SABRINA, + OBJ_EVENT_GFX_SABRINA, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_COOLTRAINER_M, + // BLAINE + OBJ_EVENT_GFX_GYM_SIGN, + OBJ_EVENT_GFX_BLAINE, + OBJ_EVENT_GFX_SCIENTIST, + OBJ_EVENT_GFX_WOMAN_2, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_CLIPBOARD, + // LORELEI + OBJ_EVENT_GFX_LORELEI, + OBJ_EVENT_GFX_LORELEI, + OBJ_EVENT_GFX_OLD_MAN_1, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_LITTLE_GIRL, + OBJ_EVENT_GFX_OLD_WOMAN, + // BRUNO + OBJ_EVENT_GFX_BRUNO, + OBJ_EVENT_GFX_BRUNO, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_BLACKBELT, + OBJ_EVENT_GFX_BEAUTY, + OBJ_EVENT_GFX_BLACKBELT, + // AGATHA + OBJ_EVENT_GFX_AGATHA, + OBJ_EVENT_GFX_BLACKBELT, + OBJ_EVENT_GFX_BLACKBELT, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_AGATHA, + OBJ_EVENT_GFX_OLD_WOMAN, + // LANCE + OBJ_EVENT_GFX_LANCE, + OBJ_EVENT_GFX_LANCE, + OBJ_EVENT_GFX_BATTLE_GIRL, + OBJ_EVENT_GFX_WOMAN_1, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_COOLTRAINER_M, + // BILL + OBJ_EVENT_GFX_BLUE, + OBJ_EVENT_GFX_YOUNGSTER, + OBJ_EVENT_GFX_OLD_MAN_1, + OBJ_EVENT_GFX_CELIO, + OBJ_EVENT_GFX_CELIO, + OBJ_EVENT_GFX_CELIO, + // MRFUJI + OBJ_EVENT_GFX_LITTLE_GIRL, + OBJ_EVENT_GFX_ROCKET_M, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_BALDING_MAN, + OBJ_EVENT_GFX_CLIPBOARD, + OBJ_EVENT_GFX_CLIPBOARD, + // GIOVANNI + OBJ_EVENT_GFX_GIOVANNI, + OBJ_EVENT_GFX_SCIENTIST, + OBJ_EVENT_GFX_SCIENTIST, + OBJ_EVENT_GFX_GIOVANNI, + OBJ_EVENT_GFX_GYM_GUY, + OBJ_EVENT_GFX_SCIENTIST }; static const u8 *const sFlavorTextOriginLocationTexts[] = { @@ -268,43 +435,79 @@ static const struct SpritePalette sUISpritePalettes[] = { static const struct BgTemplate sUIBgTemplates[4] = { { .bg = 3, - .charBaseIndex = 0x03, - .mapBaseIndex = 0x1e, + .charBaseIndex = 3, + .mapBaseIndex = 30, .screenSize = 0, .paletteMode = FALSE, .priority = 3, - .baseTile = 0x000}, + .baseTile = 0x000 + }, { .bg = 2, - .charBaseIndex = 0x03, - .mapBaseIndex = 0x1b, + .charBaseIndex = 3, + .mapBaseIndex = 27, .screenSize = 0, .paletteMode = FALSE, .priority = 2, - .baseTile = 0x000}, + .baseTile = 0x000 + }, { .bg = 1, - .charBaseIndex = 0x03, - .mapBaseIndex = 0x1c, + .charBaseIndex = 3, + .mapBaseIndex = 28, .screenSize = 1, .paletteMode = FALSE, .priority = 0, - .baseTile = 0x000}, + .baseTile = 0x000 + }, { .bg = 0, - .charBaseIndex = 0x00, - .mapBaseIndex = 0x1f, + .charBaseIndex = 0, + .mapBaseIndex = 31, .screenSize = 0, .paletteMode = FALSE, .priority = 2, - .baseTile = 0x000}, + .baseTile = 0x000 + }, }; static const struct WindowTemplate sUIWindowTemplates[] = { - {0, 1, 3, 8, 10, 15, 0x014}, // List Menu - {0, 6, 0, 24, 2, 15, 0x064}, // UI across the top - {0, 2, 15, 26, 4, 15, 0x094}, // Textbox on the bottom - {0, 15, 10, 11, 4, 15, 0x0FC}, // Icon description + [FCWINDOWID_LIST] = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 3, + .width = 8, + .height = 10, + .paletteNum = 15, + .baseBlock = 20 + }, + [FCWINDOWID_UIHELP] = { + .bg = 0, + .tilemapLeft = 6, + .tilemapTop = 0, + .width = 24, + .height = 2, + .paletteNum = 15, + .baseBlock = 20 + 8 * 10 + }, + [FCWINDOWID_MSGBOX] = { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 15, + .baseBlock = 20 + 8 * 10 + 24 * 2 + }, + [FCWINDOWID_ICONDESC] = { + .bg = 0, + .tilemapLeft = 15, + .tilemapTop = 10, + .width = 11, + .height = 4, + .paletteNum = 15, + .baseBlock = 20 + 8 * 10 + 24 * 2 + 26 * 4 + }, DUMMY_WIN_TEMPLATE }; @@ -446,9 +649,9 @@ static void MainCB2_LoadFameChecker(void) gMain.state++; break; case 2: - sBg3TilemapBuffer = AllocZeroed(0x800); - sBg1TilemapBuffer = AllocZeroed(0x1000); - sBg2TilemapBuffer = AllocZeroed(0x800); + sBg3TilemapBuffer = AllocZeroed(BG_SCREEN_SIZE); // 256x256 + sBg1TilemapBuffer = AllocZeroed(BG_SCREEN_SIZE * 2); // 512x256 + sBg2TilemapBuffer = AllocZeroed(BG_SCREEN_SIZE); // 256x256 ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, sUIBgTemplates, NELEMS(sUIBgTemplates)); SetBgTilemapBuffer(3, sBg3TilemapBuffer); @@ -544,7 +747,7 @@ static void Task_TopMenuHandleInput(u8 taskId) else if (cursorPos != sFameCheckerData->numUnlockedPersons - 1) // anything but CANCEL { PlaySE(SE_M_LOCK_ON); - FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 88, 32); + FillWindowPixelRect(FCWINDOWID_ICONDESC, PIXEL_FILL(0), 0, 0, 88, 32); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC); UpdateInfoBoxTilemap(2, 4); UpdateInfoBoxTilemap(1, 5); @@ -733,7 +936,7 @@ static void FC_MoveSelectorCursor(u8 taskId, s8 dx, s8 dy) gSprites[data[0]].pos1.y += dy; for (i = 0; i < 6; i++) SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_BLEND); - FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + FillWindowPixelRect(FCWINDOWID_MSGBOX, PIXEL_FILL(1), 0, 0, 0xd0, 0x20); MessageBoxPrintEmptyText(); if (SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) { @@ -746,7 +949,7 @@ static void FC_MoveSelectorCursor(u8 taskId, s8 dx, s8 dy) static void GetPickModeText(void) { - u8 offset = 0; + s32 whichText = 0; u16 who = FameCheckerGetCursorY(); if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[who]].pickState != FCPICKSTATE_COLORED) { @@ -755,10 +958,10 @@ static void GetPickModeText(void) } else { - FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + FillWindowPixelRect(FCWINDOWID_MSGBOX, PIXEL_FILL(1), 0, 0, 0xd0, 0x20); if (HasUnlockedAllFlavorTextsForCurrentPerson() == TRUE) - offset = NUM_FAMECHECKER_PERSONS; - StringExpandPlaceholders(gStringVar4, sFameCheckerNameAndQuotesPointers[sFameCheckerData->unlockedPersons[who] + offset]); + whichText = NUM_FAMECHECKER_PERSONS; + StringExpandPlaceholders(gStringVar4, sFameCheckerNameAndQuotesPointers[sFameCheckerData->unlockedPersons[who] + whichText]); AddTextPrinterParameterized2(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } @@ -768,7 +971,7 @@ static void PrintSelectedNameInBrightGreen(u8 taskId) { s16 *data = gTasks[taskId].data; u16 cursorPos = FameCheckerGetCursorY(); - FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + FillWindowPixelRect(FCWINDOWID_MSGBOX, PIXEL_FILL(1), 0, 0, 0xd0, 0x20); StringExpandPlaceholders(gStringVar4, sFameCheckerFlavorTextPointers[sFameCheckerData->unlockedPersons[cursorPos] * 6 + data[1]]); AddTextPrinterParameterized2(FCWINDOWID_MSGBOX, 2, gStringVar4, GetTextSpeedSetting(), NULL, 2, 1, 3); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); @@ -776,7 +979,7 @@ static void PrintSelectedNameInBrightGreen(u8 taskId) static void WipeMsgBoxAndTransfer(void) { - FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + FillWindowPixelRect(FCWINDOWID_MSGBOX, PIXEL_FILL(1), 0, 0, 0xd0, 0x20); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } @@ -879,7 +1082,7 @@ static void PrintUIHelp(u8 state) src = gFameCheckerText_PickScreenUI; } width = GetStringWidth(0, src, 0); - FillWindowPixelRect(FCWINDOWID_UIHELP, 0x00, 0, 0, 0xc0, 0x10); + FillWindowPixelRect(FCWINDOWID_UIHELP, PIXEL_FILL(0), 0, 0, 0xc0, 0x10); AddTextPrinterParameterized4(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, sTextColor_White, -1, src); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_UIHELP); } @@ -1191,7 +1394,7 @@ static void UpdateIconDescriptionBox(u8 whichText) u32 idx = 6 * sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()] + whichText; HandleFlavorTextModeSwitch(TRUE); gIconDescriptionBoxIsOpen = 1; - FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 0x58, 0x20); + FillWindowPixelRect(FCWINDOWID_ICONDESC, PIXEL_FILL(0), 0, 0, 0x58, 0x20); width = (0x54 - GetStringWidth(0, sFlavorTextOriginLocationTexts[idx], 0)) / 2; AddTextPrinterParameterized4(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, sTextColor_DkGrey, -1, sFlavorTextOriginLocationTexts[idx]); StringExpandPlaceholders(gStringVar1, sFlavorTextOriginObjectNameTexts[idx]); @@ -1274,7 +1477,7 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list } else { - FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + FillWindowPixelRect(FCWINDOWID_MSGBOX, PIXEL_FILL(1), 0, 0, 0xd0, 0x20); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } } @@ -1309,7 +1512,7 @@ static void Task_SwitchToPickMode(u8 taskId) static void PrintCancelDescription(void) { - FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + FillWindowPixelRect(FCWINDOWID_MSGBOX, PIXEL_FILL(1), 0, 0, 0xd0, 0x20); AddTextPrinterParameterized2(FCWINDOWID_MSGBOX, 2, gFameCheckerText_FameCheckerWillBeClosed, 0, NULL, 2, 1, 3); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } From 2b20893df5d401b9ddfc3008d954de2c61a5b1aa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Apr 2021 20:48:48 -0400 Subject: [PATCH 19/28] Document Fame Checker, 2 --- graphics/fame_checker/question_mark.png | Bin 129 -> 200 bytes src/fame_checker.c | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/graphics/fame_checker/question_mark.png b/graphics/fame_checker/question_mark.png index b0a170e09d4ae7ad5de653ce2c067de0bbb47dab..7b59305e4d8ecb25e67ae580ad08deef8947b265 100644 GIT binary patch delta 183 zcmZoQn@K=$@>*t3xw*cATtO hqQJAGT0pObi6O%+DJtpqeFLD844$rjF6*2UngBEDNSpuw delta 111 zcmX@X*vL3RGJ^pKehYaC0x1tq7sn8ZsmVY1S$V!B)Fd!4)hRTaif}OfGp^xaWv)wc zTd-h(#tcOc76G>m4Jl?1XUWEZqYE1sEzIEAak65G0?&?W0lgL`2BGLVD|F>8t3YOZ My85}Sb4q9e0QAWrCjbBd diff --git a/src/fame_checker.c b/src/fame_checker.c index 12ec2ad1a..cad65366b 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -822,7 +822,7 @@ static bool8 TryExitPickMode(u8 taskId) static void MessageBoxPrintEmptyText(void) { - AddTextPrinterParameterized2(2, 2, gFameCheckerText_ClearTextbox, 0, NULL, 2, 1, 3); + AddTextPrinterParameterized2(FCWINDOWID_MSGBOX, 2, gFameCheckerText_ClearTextbox, 0, NULL, 2, 1, 3); } static void Task_EnterPickMode(u8 taskId) @@ -1042,10 +1042,10 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) Free(sBg2TilemapBuffer); Free(sFameCheckerData); Free(sListMenuItems); - FC_DestroyWindow(0); - FC_DestroyWindow(1); - FC_DestroyWindow(2); - FC_DestroyWindow(3); + FC_DestroyWindow(FCWINDOWID_LIST); + FC_DestroyWindow(FCWINDOWID_UIHELP); + FC_DestroyWindow(FCWINDOWID_MSGBOX); + FC_DestroyWindow(FCWINDOWID_ICONDESC); FreeAllWindowBuffers(); DestroyTask(taskId); } @@ -1424,7 +1424,7 @@ static void InitListMenuTemplate(void) gFameChecker_ListMenuTemplate.itemPrintFunc = NULL; gFameChecker_ListMenuTemplate.totalItems = 1; gFameChecker_ListMenuTemplate.maxShowed = 1; - gFameChecker_ListMenuTemplate.windowId = 0; + gFameChecker_ListMenuTemplate.windowId = FCWINDOWID_LIST; gFameChecker_ListMenuTemplate.header_X = 0; gFameChecker_ListMenuTemplate.item_X = 8; gFameChecker_ListMenuTemplate.cursor_X = 0; From 5a2da388cc32529f5be46f7b454e9c9792b75679 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Apr 2021 15:46:09 -0400 Subject: [PATCH 20/28] Sync task.c from Emerald --- src/task.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/src/task.c b/src/task.c index 83800a440..672d200fe 100644 --- a/src/task.c +++ b/src/task.c @@ -139,32 +139,20 @@ void TaskDummy(u8 taskId) { } -#define TASK_DATA_OP(taskId, offset, op) \ -{ \ - u32 tasksAddr = (u32)gTasks; \ - u32 addr = taskId * sizeof(struct Task) + offset; \ - u32 dataAddr = tasksAddr + offsetof(struct Task, data); \ - addr += dataAddr; \ - op; \ -} - void SetTaskFuncWithFollowupFunc(u8 taskId, TaskFunc func, TaskFunc followupFunc) { - TASK_DATA_OP(taskId, 28, *((u16 *)addr) = (u32)followupFunc) - TASK_DATA_OP(taskId, 30, *((u16 *)addr) = (u32)followupFunc >> 16) + u8 followupFuncIndex = NUM_TASK_DATA - 2; // Should be const. + + gTasks[taskId].data[followupFuncIndex] = (s16)((u32)followupFunc); + gTasks[taskId].data[followupFuncIndex + 1] = (s16)((u32)followupFunc >> 16); // Store followupFunc as two half-words in the data array. gTasks[taskId].func = func; } void SwitchTaskToFollowupFunc(u8 taskId) { - s32 func; + u8 followupFuncIndex = NUM_TASK_DATA - 2; // Should be const. - gTasks[taskId].func = NULL; - - TASK_DATA_OP(taskId, 28, func = *((u16 *)addr)) - TASK_DATA_OP(taskId, 30, func |= *((s16 *)addr) << 16) - - gTasks[taskId].func = (TaskFunc)func; + gTasks[taskId].func = (TaskFunc)((u16)(gTasks[taskId].data[followupFuncIndex]) | (gTasks[taskId].data[followupFuncIndex + 1] << 16)); } bool8 FuncIsActiveTask(TaskFunc func) From a60d6675d7f802215150e6df4c771b965e5df3dc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Apr 2021 18:35:53 -0400 Subject: [PATCH 21/28] Trainer tower sets to C --- data/data_8479668.s | 2 - data/trainer_tower/trainers.inc | 5153 ----------------- include/cereader_tool.h | 4 +- include/constants/trainer_tower.h | 1 + ld_script.txt | 1 + src/trainer_tower.c | 56 +- src/trainer_tower_sets.c | 8995 +++++++++++++++++++++++++++++ 7 files changed, 9027 insertions(+), 5185 deletions(-) delete mode 100644 data/trainer_tower/trainers.inc create mode 100644 src/trainer_tower_sets.c diff --git a/data/data_8479668.s b/data/data_8479668.s index 5c00ff639..155dce48e 100644 --- a/data/data_8479668.s +++ b/data/data_8479668.s @@ -15,8 +15,6 @@ @ 847ABAC .align 2 - .include "data/trainer_tower/trainers.inc" - .include "data/text/move_descriptions.inc" .align 2, 0 diff --git a/data/trainer_tower/trainers.inc b/data/trainer_tower/trainers.inc deleted file mode 100644 index 645a8a27e..000000000 --- a/data/trainer_tower/trainers.inc +++ /dev/null @@ -1,5153 +0,0 @@ - .macro ivs hp, atk, def, speed, spatk, spdef, altability - .4byte \hp | (\atk << 5) | (\def << 10) | (\speed << 15) | (\spatk << 20) | (\spdef << 25) | (\altability << 31) - .endm - - .macro trainerid id, secret - .4byte \id | (\secret << 16) - .endm - - .macro dummy_tower_mon - .align 2 - .2byte SPECIES_NONE, ITEM_NONE - .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 0 @ OT ID - ivs 0, 0, 0, 0, 0, 0, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "$$$$$$$$$$$", 11 - .byte 0 @ friendship - .endm - - .macro dummy_tower_team - .string "$", 11 - .byte FACILITY_CLASS_AQUA_LEADER, 0x01 - .align 1 - .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - - dummy_tower_mon - dummy_tower_mon - dummy_tower_mon - dummy_tower_mon - dummy_tower_mon - dummy_tower_mon - .endm - - .align 2 -gUnknown_847ABAC:: - .byte 0x01, 0x08, 0x00, 0x07 - .string "COLE$", 11 - .byte FACILITY_CLASS_YOUNGSTER_2, 0x01 - .align 1 - .2byte EC_WORD_AHAHA, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_ANYWHERE, EC_WORD_EXCL - .2byte EC_WORD_ALL_RIGHT, EC_WORD_EXCL, EC_WORD_BYE_BYE, EC_WORD_EXCL, 0xFFFF, 0xFFFF - .2byte EC_WORD_HIYAH, EC_WORD_EXCL_EXCL, EC_WORD_DONE, EC_WORD_IN, EC_WORD_TOTALLY, EC_WORD_EXCL_EXCL - .2byte EC_WORD_TCH, EC_WORD_TCH, EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF, 0xFFFF - - .align 2 - .2byte SPECIES_RATICATE, ITEM_SITRUS_BERRY - .2byte MOVE_SHOCK_WAVE, MOVE_HYPER_FANG, MOVE_SCARY_FACE, MOVE_ENDEAVOR - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 0, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000016 @ personality - .string "RATICATE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGMAR, ITEM_SITRUS_BERRY - .2byte MOVE_FIRE_PUNCH, MOVE_SUNNY_DAY, MOVE_SMOG, MOVE_STRENGTH - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 0, 210, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000056 @ personality - .string "MAGMAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGCARGO, ITEM_SITRUS_BERRY - .2byte MOVE_FLAMETHROWER, MOVE_AMNESIA, MOVE_BODY_SLAM, MOVE_HARDEN - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 200, 0, 0, 200, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000002 @ personality - .string "MAGCARGO$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PRIMEAPE, ITEM_SITRUS_BERRY - .2byte MOVE_OVERHEAT, MOVE_SEISMIC_TOSS, MOVE_SWAGGER, MOVE_KARATE_CHOP - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 0, 210, 200, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000087 @ personality - .string "PRIMEAPE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLBAT, ITEM_SITRUS_BERRY - .2byte MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SLUDGE_BOMB, MOVE_MEAN_LOOK - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 200, 0, 110, 200, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000081 @ personality - .string "GOLBAT$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SLOWBRO, ITEM_SITRUS_BERRY - .2byte MOVE_SUNNY_DAY, MOVE_YAWN, MOVE_FLAMETHROWER, MOVE_CONFUSION - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 100, 0, 210, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000011 @ personality - .string "SLOWBRO$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0xab, 0x6a, 0x01 - - .align 2 -gUnknown_847AF8C:: - .byte 0x02, 0x08, 0x00, 0x0d - .string "JAC$", 11 - .byte FACILITY_CLASS_BURGLAR, 0x01 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_A, EC_MOVE2(THIEF), EC_WORD_EXCL, EC_WORD_GIVE_ME, EC_WORD_SOMETHING - .2byte EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_NOTHING, EC_WORD_THAT, EC_WORD_I, EC_WORD_WANT - .2byte EC_WORD_EEK, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_I, EC_WORD_SURRENDER - .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_STOP, EC_WORD_BEING, EC_WORD_A, EC_MOVE2(THIEF) - - .align 2 - .2byte SPECIES_MEOWTH, ITEM_LIECHI_BERRY - .2byte MOVE_SWAGGER, MOVE_SUBSTITUTE, MOVE_FAKE_OUT, MOVE_SLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 110, 0, 200, 0, 0 @ EVs - .align 2 - trainerid 138, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "MEOWTH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FLAREON, ITEM_PETAYA_BERRY - .2byte MOVE_FLAMETHROWER, MOVE_BITE, MOVE_SAND_ATTACK, MOVE_FIRE_SPIN - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 0, 200, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "FLAREON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PORYGON, ITEM_PETAYA_BERRY - .2byte MOVE_TRI_ATTACK, MOVE_RECYCLE, MOVE_PSYBEAM, MOVE_CONVERSION_2 - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 210, 0, 200, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "PORYGON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CHANSEY, ITEM_LUCKY_PUNCH - .2byte MOVE_FLAMETHROWER, MOVE_LIGHT_SCREEN, MOVE_BODY_SLAM, MOVE_MINIMIZE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000010 @ personality - .string "CHANSEY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FARFETCHD, ITEM_STICK - .2byte MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_FLY, MOVE_SAND_ATTACK - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 100, 100, 100, 0, 110 @ EVs - .align 2 - trainerid 133, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000085 @ personality - .string "FARFETCH'D$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MR_MIME, ITEM_SCOPE_LENS - .2byte MOVE_SUBSTITUTE, MOVE_SHOCK_WAVE, MOVE_LIGHT_SCREEN, MOVE_BRICK_BREAK - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 130, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000082 @ personality - .string "MR. MIME$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0x56, 0x64, 0x01 - - .align 2 -gUnknown_847B36C:: - .byte 0x03, 0x08, 0x00, 0x02 - .string "MILY$", 11 - .byte FACILITY_CLASS_PSYCHIC_4, 0x01 - .align 1 - .2byte EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(SUPERPOWER), EC_WORD_EXCL - .2byte EC_WORD_ISN_T, EC_WORD_IT, EC_WORD_INCREDIBLE, EC_WORD_QUES, EC_WORD_POKEMON, EC_WORD_POWER - .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_ELLIPSIS_EXCL - .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_DREAM, EC_WORD_NOTHING, EC_WORD_MORE - - .align 2 - .2byte SPECIES_CHANSEY, ITEM_ORAN_BERRY - .2byte MOVE_LIGHT_SCREEN, MOVE_EGG_BOMB, MOVE_MINIMIZE, MOVE_SECRET_POWER - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000008 @ personality - .string "CHANSEY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CLEFABLE, ITEM_ORAN_BERRY - .2byte MOVE_METRONOME, MOVE_REFLECT, MOVE_SING, MOVE_POUND - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 0, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "CLEFABLE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOGETIC, ITEM_ORAN_BERRY - .2byte MOVE_METRONOME, MOVE_REFLECT, MOVE_SWEET_KISS, MOVE_PECK - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000016 @ personality - .string "TOGETIC$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOGETIC, ITEM_ORAN_BERRY - .2byte MOVE_METRONOME, MOVE_HIDDEN_POWER, MOVE_ATTRACT, MOVE_LIGHT_SCREEN - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000020 @ personality - .string "TOGETIC$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CHANSEY, ITEM_ORAN_BERRY - .2byte MOVE_FLAMETHROWER, MOVE_SOFT_BOILED, MOVE_LIGHT_SCREEN, MOVE_SECRET_POWER - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000005 @ personality - .string "CHANSEY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CLEFABLE, ITEM_ORAN_BERRY - .2byte MOVE_REFLECT, MOVE_FLAMETHROWER, MOVE_SING, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 0, 200, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x000000C0 @ personality - .string "CLEFABLE$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0xec, 0x64, 0x01 - - .align 2 -gUnknown_847B74C:: - .byte 0x04, 0x08, 0x01, 0x09 - .string "JOS & ANNE$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x07 - .align 1 - .2byte EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_TO, EC_WORD_YOU, EC_WORD_HERE - .2byte EC_WORD_VERY, EC_WORD_WELL, EC_WORD_DONE, EC_WORD_EXCL, EC_WORD_GOOD, EC_WORD_BATTLE - .2byte EC_WORD_UNBELIEVABLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_I_AM, EC_WORD_DISAPPOINTED, EC_WORD_BUT, EC_WORD_YOU, EC_WORD_WIN, EC_WORD_ELLIPSIS - - .align 2 - .2byte SPECIES_RAPIDASH, ITEM_WHITE_HERB - .2byte MOVE_BOUNCE, MOVE_OVERHEAT, MOVE_HYPNOSIS, MOVE_RETURN - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 100, 0, 110, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x00000010 @ personality - .string "RAPIDASH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NINETALES, ITEM_CHARCOAL - .2byte MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_HEAT_WAVE, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 0, 200, 200, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000015 @ personality - .string "NINETALES$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MISDREAVUS, ITEM_LEFTOVERS - .2byte MOVE_GRUDGE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 0, 0, 210, 100, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "MISDREAVUS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ALAKAZAM, ITEM_LEFTOVERS - .2byte MOVE_LIGHT_SCREEN, MOVE_RECOVER, MOVE_PSYCHIC, MOVE_THUNDER_PUNCH - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "ALAKAZAM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_BLISSEY, ITEM_LEFTOVERS - .2byte MOVE_LIGHT_SCREEN, MOVE_ATTRACT, MOVE_RETURN, MOVE_PSYCHIC - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x00000016 @ personality - .string "BLISSEY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CROBAT, ITEM_LEFTOVERS - .2byte MOVE_TOXIC, MOVE_FLY, MOVE_CONFUSE_RAY, MOVE_SHADOW_BALL - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 100, 210, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000017 @ personality - .string "CROBAT$", 11 - .byte 255 @ friendship - - .string "JOS & ANNE$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x07 - .align 1 - .2byte EC_WORD_HERE_GOES, EC_WORD_EXCL_EXCL, EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_LOSE - .2byte EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_WE, EC_WORD_GET, EC_WORD_THE, EC_WORD_WIN - .2byte EC_WORD_LOST, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_JOKING, EC_WORD_EXCL - .2byte EC_WORD_HOW, EC_WORD_COULD, EC_WORD_I, EC_WORD_LOSE, EC_WORD_THIS, EC_WORD_QUES - - .align 2 - .2byte SPECIES_HOUNDOOM, ITEM_CHARCOAL - .2byte MOVE_TAUNT, MOVE_FLAMETHROWER, MOVE_WILL_O_WISP, MOVE_CRUNCH - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x00000082 @ personality - .string "HOUNDOOM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_AERODACTYL, ITEM_LEFTOVERS - .2byte MOVE_ROAR, MOVE_FIRE_BLAST, MOVE_HYPER_BEAM, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x00000033 @ personality - .string "AERODACTYL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ARCANINE, ITEM_CHARCOAL - .2byte MOVE_HEAT_WAVE, MOVE_EXTREME_SPEED, MOVE_ROAR, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 0, 0, 200, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000056 @ personality - .string "ARCANINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_WEEZING, ITEM_LEFTOVERS - .2byte MOVE_EXPLOSION, MOVE_SMOKESCREEN, MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 100, 100, 0, 100, 110 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x0000008E @ personality - .string "WEEZING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CHARIZARD, ITEM_WHITE_HERB - .2byte MOVE_OVERHEAT, MOVE_OUTRAGE, MOVE_DRAGON_RAGE, MOVE_SMOKESCREEN - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 110, 0, 100, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000033 @ personality - .string "CHARIZARD$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GENGAR, ITEM_LEFTOVERS - .2byte MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 55, 0, 100, 255, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000087 @ personality - .string "GENGAR$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0x08, 0x79, 0x01 - - .align 2 -gUnknown_847BB2C:: - .byte 0x05, 0x08, 0x01, 0x04 - .string "EMY & ALEK$", 11 - .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x01 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LOST, EC_WORD_IN, EC_WORD_LOVEY_DOVEY, EC_WORD_HAPPINESS - .2byte EC_WORD_OH, EC_WORD_OH, EC_WORD_HE, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME - .2byte EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_SERIOUS, EC_WORD_QUES - .2byte EC_WORD_WHO, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF, 0xFFFF - - .align 2 - .2byte SPECIES_TAUROS, ITEM_LUM_BERRY - .2byte MOVE_FLAMETHROWER, MOVE_REST, MOVE_SHOCK_WAVE, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "TAUROS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_KANGASKHAN, ITEM_LUM_BERRY - .2byte MOVE_FLAMETHROWER, MOVE_DIZZY_PUNCH, MOVE_REST, MOVE_FAKE_OUT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "KANGASKHAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FEAROW, ITEM_LUM_BERRY - .2byte MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_DOUBLE_EDGE, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 210, 100, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000094 @ personality - .string "FEAROW$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOGETIC, ITEM_LUM_BERRY - .2byte MOVE_FLAMETHROWER, MOVE_LIGHT_SCREEN, MOVE_REST, MOVE_ANCIENT_POWER - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000024 @ personality - .string "TOGETIC$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PIDGEOT, ITEM_LUM_BERRY - .2byte MOVE_STEEL_WING, MOVE_FLY, MOVE_MIRROR_MOVE, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 110, 100, 100, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000D @ personality - .string "PIDGEOT$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_URSARING, ITEM_LUM_BERRY - .2byte MOVE_REST, MOVE_SNORE, MOVE_DIG, MOVE_SLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "URSARING$", 11 - .byte 255 @ friendship - - .string "EMY & ALEK$", 11 - .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x01 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_GIDDY, EC_WORD_WITH, EC_WORD_LOVEY_DOVEY, EC_WORD_JOY, EC_WORD_EXCL_EXCL - .2byte EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_MY, EC_WORD_GIRL, EC_WORD_IS, EC_WORD_CUTE - .2byte EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_SERIOUS - .2byte EC_WORD_WAIT, EC_WORD_ELLIPSIS, EC_WORD_WHO, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_QUES - - .align 2 - .2byte SPECIES_LICKITUNG, ITEM_SHELL_BELL - .2byte MOVE_FLAMETHROWER, MOVE_EARTHQUAKE, MOVE_REST, MOVE_SLEEP_TALK - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 255, 0, 55, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000016 @ personality - .string "LICKITUNG$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NOCTOWL, ITEM_SHELL_BELL - .2byte MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_REFLECT, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000B @ personality - .string "NOCTOWL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FURRET, ITEM_SHELL_BELL - .2byte MOVE_FLAMETHROWER, MOVE_AMNESIA, MOVE_SHOCK_WAVE, MOVE_SLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000E @ personality - .string "FURRET$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RATICATE, ITEM_SHELL_BELL - .2byte MOVE_SUPER_FANG, MOVE_QUICK_ATTACK, MOVE_SWAGGER, MOVE_ENDEAVOR - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000008A @ personality - .string "RATICATE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_WIGGLYTUFF, ITEM_SHELL_BELL - .2byte MOVE_SUNNY_DAY, MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000B @ personality - .string "WIGGLYTUFF$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PORYGON2, ITEM_SHELL_BELL - .2byte MOVE_THUNDERBOLT, MOVE_CONVERSION_2, MOVE_TRI_ATTACK, MOVE_RECOVER - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "PORYGON2$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0x3b, 0x5d, 0x01 - - .align 2 -gUnknown_847BF0C:: - .byte 0x06, 0x08, 0x01, 0x00 - .string "JO & HALEY$", 11 - .byte FACILITY_CLASS_CRUSH_KIN, 0x05 - .align 1 - .2byte EC_WORD_WE_RE, EC_WORD_USING, EC_WORD_THAT, EC_WORD_STRATEGY, EC_WORD_OKAY, EC_WORD_QUES - .2byte EC_WORD_YAY, EC_WORD_WE, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_SORRY, EC_WORD_EXCL - .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TERRIBLE, EC_WORD_EXCL - .2byte EC_WORD_ALL, EC_WORD_I, EC_WORD_DO, EC_WORD_IS, EC_WORD_LOSE, EC_WORD_ELLIPSIS - - .align 2 - .2byte SPECIES_SNEASEL, ITEM_SALAC_BERRY - .2byte MOVE_SHADOW_BALL, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 0, 50, 210, 0, 50 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000D @ personality - .string "SNEASEL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ALAKAZAM, ITEM_SALAC_BERRY - .2byte MOVE_FIRE_PUNCH, MOVE_RECOVER, MOVE_PSYCHIC, MOVE_SUNNY_DAY - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000005 @ personality - .string "ALAKAZAM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HITMONTOP, ITEM_SALAC_BERRY - .2byte MOVE_MEGA_KICK, MOVE_ENDEAVOR, MOVE_DIG, MOVE_SUNNY_DAY - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 210, 0, 200, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000008 @ personality - .string "HITMONTOP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GIRAFARIG, ITEM_SALAC_BERRY - .2byte MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY, MOVE_SHADOW_BALL, MOVE_PSYBEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000A @ personality - .string "GIRAFARIG$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_XATU, ITEM_SALAC_BERRY - .2byte MOVE_SUNNY_DAY, MOVE_DRILL_PECK, MOVE_CONFUSE_RAY, MOVE_PSYCHIC - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 100, 100, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000014 @ personality - .string "XATU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MR_MIME, ITEM_SALAC_BERRY - .2byte MOVE_REFLECT, MOVE_SUNNY_DAY, MOVE_PSYCHIC, MOVE_SHOCK_WAVE - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 200, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000005 @ personality - .string "MR. MIME$", 11 - .byte 255 @ friendship - - .string "JO & HALEY$", 11 - .byte FACILITY_CLASS_CRUSH_KIN, 0x05 - .align 1 - .2byte EC_WORD_YOU, EC_WORD_YOU, EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_WORD_WIN - .2byte EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_JOKING, EC_WORD_QUES, EC_WORD_WE, EC_WORD_WON - .2byte EC_WORD_WIMPY, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_WERE, EC_WORD_WEAK, EC_WORD_ELLIPSIS - .2byte EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOTALLY, EC_WORD_USELESS, EC_WORD_ELLIPSIS - - .align 2 - .2byte SPECIES_HYPNO, ITEM_FOCUS_BAND - .2byte MOVE_FIRE_PUNCH, MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_NIGHTMARE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000087 @ personality - .string "HYPNO$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HITMONCHAN, ITEM_FOCUS_BAND - .2byte MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_DETECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "HITMONCHAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MACHAMP, ITEM_FOCUS_BAND - .2byte MOVE_FLAMETHROWER, MOVE_BRICK_BREAK, MOVE_SCARY_FACE, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000043 @ personality - .string "MACHAMP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HOUNDOOM, ITEM_FOCUS_BAND - .2byte MOVE_ROAR, MOVE_FLAMETHROWER, MOVE_BITE, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000087 @ personality - .string "HOUNDOOM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PRIMEAPE, ITEM_FOCUS_BAND - .2byte MOVE_OVERHEAT, MOVE_SWAGGER, MOVE_SEISMIC_TOSS, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 100, 100, 110, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000008C @ personality - .string "PRIMEAPE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HERACROSS, ITEM_FOCUS_BAND - .2byte MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_LEER - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 0, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000085 @ personality - .string "HERACROSS$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0xb1, 0x60, 0x01 - - .align 2 -gUnknown_847C2EC:: - .byte 0x07, 0x08, 0x02, 0x0c - .string "JORDY$", 11 - .byte FACILITY_CLASS_BIKER, 0x03 - .align 1 - .2byte EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GIGGLE, EC_WORD_YOU, EC_WORD_PUSHOVER - .2byte EC_WORD_WHAT, EC_WORD_A_LITTLE, EC_WORD_PUSHOVER, EC_WORD_YOU, EC_WORD_ARE, EC_WORD_EXCL - .2byte EC_WORD_YOU, EC_WORD_WERE, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_EXCL - .2byte EC_WORD_DARN, EC_WORD_EXCL, EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_IT - - .align 2 - .2byte SPECIES_MAGBY, ITEM_LAX_INCENSE - .2byte MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_FLAMETHROWER, MOVE_SCREECH - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 30, 30, 0, 210, 30 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000043 @ personality - .string "MAGBY$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_CLEFFA, ITEM_LAX_INCENSE - .2byte MOVE_ATTRACT, MOVE_CHARM, MOVE_SECRET_POWER, MOVE_FLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 210, 30, 0, 30, 30 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x000000CA @ personality - .string "CLEFFA$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_IGGLYBUFF, ITEM_LAX_INCENSE - .2byte MOVE_SING, MOVE_HIDDEN_POWER, MOVE_CHARM, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 0, 45, 210, 0, 45 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x000000D2 @ personality - .string "IGGLYBUFF$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SMOOCHUM, ITEM_LAX_INCENSE - .2byte MOVE_FAKE_TEARS, MOVE_PSYCHIC, MOVE_MEAN_LOOK, MOVE_SING - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 0, 45, 0, 210, 45 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000011 @ personality - .string "SMOOCHUM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOGEPI, ITEM_LAX_INCENSE - .2byte MOVE_SWEET_KISS, MOVE_YAWN, MOVE_ANCIENT_POWER, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 210, 45, 0, 0, 45 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000034 @ personality - .string "TOGEPI$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_PICHU, ITEM_LAX_INCENSE - .2byte MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE, MOVE_SWEET_KISS, MOVE_FLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 0, 45, 0, 210, 45 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000008E @ personality - .string "PICHU$", 11 - .byte 0 @ friendship - - .string "ERNEST$", 11 - .byte FACILITY_CLASS_BIKER, 0x01 - .align 1 - .2byte EC_WORD_IT_S, EC_WORD_SLEEP, EC_WORD_TIME, EC_WORD_FOR, EC_WORD_CHILDREN, EC_WORD_EXCL - .2byte EC_WORD_NOT, EC_WORD_GUTSY, EC_WORD_ENOUGH, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_WHY, EC_WORD_DID, EC_WORD_YOU, EC_WORD_CRUSH, EC_WORD_ME, EC_WORD_QUES - .2byte EC_WORD_I_AM, EC_WORD_BEAT, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_NAP - - .align 2 - .2byte SPECIES_CLEFFA, ITEM_QUICK_CLAW - .2byte MOVE_SWEET_KISS, MOVE_FRUSTRATION, MOVE_SING, MOVE_ATTRACT - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 210, 45, 0, 0, 45 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x000000CA @ personality - .string "CLEFFA$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_MAGBY, ITEM_QUICK_CLAW - .2byte MOVE_FRUSTRATION, MOVE_CONFUSE_RAY, MOVE_FLAMETHROWER, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 90, 210, 0, 0, 210, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000004D @ personality - .string "MAGBY$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_TOGEPI, ITEM_QUICK_CLAW - .2byte MOVE_FRUSTRATION, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_SWEET_KISS - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 210, 45, 0, 0, 45 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000034 @ personality - .string "TOGEPI$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_SMOOCHUM, ITEM_QUICK_CLAW - .2byte MOVE_MEAN_LOOK, MOVE_PERISH_SONG, MOVE_TOXIC, MOVE_FLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 90, 0, 210, 0, 0, 210 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "SMOOCHUM$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_IGGLYBUFF, ITEM_QUICK_CLAW - .2byte MOVE_DOUBLE_TEAM, MOVE_SWEET_KISS, MOVE_SEISMIC_TOSS, MOVE_FLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 0, 45, 210, 0, 45 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "IGGLYBUFF$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_PICHU, ITEM_QUICK_CLAW - .2byte MOVE_TAIL_WHIP, MOVE_FRUSTRATION, MOVE_ATTRACT, MOVE_THUNDER_WAVE - .byte 0, 0x00 @ level, ppBonuses - .byte 90, 210, 0, 210, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "PICHU$", 11 - .byte 0 @ friendship - - .string "GABRIEL$", 11 - .byte FACILITY_CLASS_CUE_BALL, 0x01 - .align 1 - .2byte EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_HERE_I_COME, EC_WORD_TO, EC_WORD_SWARM, EC_WORD_YOU - .2byte EC_WORD_I_AM, EC_WORD_INVINCIBLE, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_THAT, EC_WORD_QUES - .2byte EC_WORD_WHAT, EC_WORD_WAS, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF, 0xFFFF - .2byte EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_NEXT, EC_WORD_TIME - - .align 2 - .2byte SPECIES_PICHU, ITEM_BRIGHT_POWDER - .2byte MOVE_THUNDER_WAVE, MOVE_FRUSTRATION, MOVE_THUNDERBOLT, MOVE_ATTRACT - .byte 0, 0x00 @ level, ppBonuses - .byte 90, 210, 0, 0, 210, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000081 @ personality - .string "PICHU$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_TOGEPI, ITEM_BRIGHT_POWDER - .2byte MOVE_ATTRACT, MOVE_FRUSTRATION, MOVE_TOXIC, MOVE_SUBSTITUTE - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 210, 0, 0, 0, 90 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000033 @ personality - .string "TOGEPI$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_CLEFFA, ITEM_BRIGHT_POWDER - .2byte MOVE_ENCORE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_FLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 0, 150, 0, 0, 150 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x000000CF @ personality - .string "CLEFFA$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_IGGLYBUFF, ITEM_BRIGHT_POWDER - .2byte MOVE_ATTRACT, MOVE_SUBSTITUTE, MOVE_SING, MOVE_PERISH_SONG - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 0, 210, 0, 0, 90 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x000000CF @ personality - .string "IGGLYBUFF$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_SMOOCHUM, ITEM_BRIGHT_POWDER - .2byte MOVE_SWEET_KISS, MOVE_PERISH_SONG, MOVE_TOXIC, MOVE_ATTRACT - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 0, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "SMOOCHUM$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_MAGBY, ITEM_BRIGHT_POWDER - .2byte MOVE_LEER, MOVE_FRUSTRATION, MOVE_SUBSTITUTE, MOVE_FLAMETHROWER - .byte 0, 0x00 @ level, ppBonuses - .byte 90, 210, 0, 0, 210, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000004D @ personality - .string "MAGBY$", 11 - .byte 0 @ friendship - - .byte 0x4a, 0x7a, 0x01 - - .align 2 -gUnknown_847C6CC:: - .byte 0x08, 0x08, 0x02, 0x0e - .string "MIKE$", 11 - .byte FACILITY_CLASS_HIKER_2, 0x05 - .align 1 - .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_FULL, EC_WORD_OF, EC_WORD_POWER - .2byte EC_WORD_WHAT_S_UP_QUES, EC_WORD_WHERE, EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_QUES - .2byte EC_WORD_YOU, EC_WORD_GOT, EC_WORD_ME, EC_WORD_WITH, EC_WORD_YOUR, EC_MOVE2(FAKE_OUT) - .2byte EC_WORD_OH_YEAH, EC_WORD_EXCL, EC_WORD_THAT_S, EC_WORD_PRETTY, EC_WORD_EXCELLENT, EC_WORD_EXCL - - .align 2 - .2byte SPECIES_PINSIR, ITEM_SCOPE_LENS - .2byte MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_REVENGE - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 210, 0, 100, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "PINSIR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CHARIZARD, ITEM_SCOPE_LENS - .2byte MOVE_DRAGON_CLAW, MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_OUTRAGE - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 200, 0, 110, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000035 @ personality - .string "CHARIZARD$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RHYDON, ITEM_SCOPE_LENS - .2byte MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 210, 200, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000009 @ personality - .string "RHYDON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ARCANINE, ITEM_SCOPE_LENS - .2byte MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_AERIAL_ACE, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 200, 0, 200, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000003F @ personality - .string "ARCANINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLEM, ITEM_SCOPE_LENS - .2byte MOVE_DOUBLE_EDGE, MOVE_ROLLOUT, MOVE_BRICK_BREAK, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 210, 200, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "GOLEM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HOUNDOOM, ITEM_SCOPE_LENS - .2byte MOVE_CRUNCH, MOVE_REVERSAL, MOVE_DOUBLE_EDGE, MOVE_COUNTER - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 110, 200, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability - .4byte 0x00000008 @ personality - .string "HOUNDOOM$", 11 - .byte 255 @ friendship - - .string "REBECCA$", 11 - .byte FACILITY_CLASS_CRUSH_GIRL, 0x05 - .align 1 - .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF - .2byte EC_WORD_IT_S, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_OVERWHELMING - .2byte EC_WORD_ARRGH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_YOU, EC_WORD_ANGER, EC_WORD_ME, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_TOUGH - - .align 2 - .2byte SPECIES_SANDSLASH, ITEM_SILK_SCARF - .2byte MOVE_CRUSH_CLAW, MOVE_DIG, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000000D @ personality - .string "SANDSLASH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DRAGONAIR, ITEM_SILK_SCARF - .2byte MOVE_OUTRAGE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "DRAGONAIR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RAPIDASH, ITEM_SILK_SCARF - .2byte MOVE_BOUNCE, MOVE_IRON_TAIL, MOVE_THRASH, MOVE_DOUBLE_EDGE - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 100, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability - .4byte 0x00000094 @ personality - .string "RAPIDASH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FLAREON, ITEM_SILK_SCARF - .2byte MOVE_IRON_TAIL, MOVE_FLAIL, MOVE_BITE, MOVE_DOUBLE_EDGE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000021 @ personality - .string "FLAREON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDOQUEEN, ITEM_SILK_SCARF - .2byte MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_COUNTER - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 100, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000017 @ personality - .string "NIDOQUEEN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PERSIAN, ITEM_SILK_SCARF - .2byte MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_IRON_TAIL, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 200, 0, 200, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "PERSIAN$", 11 - .byte 255 @ friendship - - .string "NICOLAS$", 11 - .byte FACILITY_CLASS_BLACK_BELT_2, 0x05 - .align 1 - .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_WHERE, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_EXCL - .2byte EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_EVER, EC_WORD_BEAT, EC_WORD_ME - .2byte EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES - .2byte EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_SOME, EC_WORD_MORE - - .align 2 - .2byte SPECIES_HITMONLEE, ITEM_KINGS_ROCK - .2byte MOVE_MEGA_KICK, MOVE_REVERSAL, MOVE_FOCUS_PUNCH, MOVE_BRICK_BREAK - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000008 @ personality - .string "HITMONLEE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SCYTHER, ITEM_KINGS_ROCK - .2byte MOVE_SLASH, MOVE_REVERSAL, MOVE_STEEL_WING, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000017 @ personality - .string "SCYTHER$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGMAR, ITEM_KINGS_ROCK - .2byte MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 100, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000053 @ personality - .string "MAGMAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MACHAMP, ITEM_KINGS_ROCK - .2byte MOVE_DYNAMIC_PUNCH, MOVE_DIG, MOVE_CROSS_CHOP, MOVE_REVENGE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000003F @ personality - .string "MACHAMP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PRIMEAPE, ITEM_KINGS_ROCK - .2byte MOVE_THRASH, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 200, 110, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000008 @ personality - .string "PRIMEAPE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_POLIWRATH, ITEM_KINGS_ROCK - .2byte MOVE_BODY_SLAM, MOVE_DIG, MOVE_MEGA_KICK, MOVE_COUNTER - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 100, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000000D @ personality - .string "POLIWRATH$", 11 - .byte 255 @ friendship - - .byte 0x05, 0x6f, 0x01 - - .align 2 -gUnknown_847CAAC:: - .byte 0x09, 0x08, 0x00, 0x00 - .string "JOEY$", 11 - .byte FACILITY_CLASS_CAMPER_2, 0x01 - .align 1 - .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SCARY, EC_WORD_STRONG, EC_WORD_EXCL - .2byte EC_WORD_WERE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_QUES - .2byte EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_WAY, EC_WORD_TOO_STRONG, EC_WORD_EXCL - .2byte EC_WORD_THE, EC_WORD_WAY, EC_WORD_POKEMON, EC_WORD_MATCH_UP, EC_WORD_IS, EC_WORD_IMPORTANT - - .align 2 - .2byte SPECIES_MURKROW, ITEM_BLACK_GLASSES - .2byte MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "MURKROW$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TAUROS, ITEM_SILK_SCARF - .2byte MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_TOMB, MOVE_PURSUIT - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "TAUROS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SLOWBRO, ITEM_MYSTIC_WATER - .2byte MOVE_AMNESIA, MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000089 @ personality - .string "SLOWBRO$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ARBOK, ITEM_POISON_BARB - .2byte MOVE_IRON_TAIL, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000089 @ personality - .string "ARBOK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDOKING, ITEM_SOFT_SAND - .2byte MOVE_EARTHQUAKE, MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "NIDOKING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RAPIDASH, ITEM_CHARCOAL - .2byte MOVE_FLAMETHROWER, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_KICK - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000089 @ personality - .string "RAPIDASH$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0x17, 0x64, 0x01 - - .align 2 -gUnknown_847CE8C:: - .byte 0x0a, 0x08, 0x00, 0x0c - .string "LILY$", 11 - .byte FACILITY_CLASS_PKMN_BREEDER_3, 0x01 - .align 1 - .2byte EC_WORD_I, EC_WORD_WANT, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_EXCL - .2byte EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL - .2byte EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_ELLIPSIS - .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_MY, EC_WORD_TRUST, EC_WORD_FOREVER - - .align 2 - .2byte SPECIES_CLEFAIRY, ITEM_SITRUS_BERRY - .2byte MOVE_CHARM, MOVE_METRONOME, MOVE_RETURN, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "CLEFAIRY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOGEPI, ITEM_SITRUS_BERRY - .2byte MOVE_CHARM, MOVE_METRONOME, MOVE_RETURN, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x0000000C @ personality - .string "TOGEPI$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MEOWTH, ITEM_SILK_SCARF - .2byte MOVE_CHARM, MOVE_ASSIST, MOVE_RETURN, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "MEOWTH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_JIGGLYPUFF, ITEM_SILK_SCARF - .2byte MOVE_CHARM, MOVE_ROLLOUT, MOVE_RETURN, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "JIGGLYPUFF$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SNORLAX, ITEM_LEFTOVERS - .2byte MOVE_CHARM, MOVE_ROLLOUT, MOVE_RETURN, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000025 @ personality - .string "SNORLAX$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SNUBBULL, ITEM_LEFTOVERS - .2byte MOVE_CHARM, MOVE_LICK, MOVE_RETURN, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "SNUBBULL$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0xb7, 0x6c, 0x01 - - .align 2 -gUnknown_847D26C:: - .byte 0x0b, 0x08, 0x00, 0x0e - .string "BRANDON$", 11 - .byte FACILITY_CLASS_BUG_CATCHER_2, 0x01 - .align 1 - .2byte EC_WORD_POISON, EC_WORD_IS, EC_WORD_JUST, EC_WORD_SO, EC_WORD_AWFUL, EC_WORD_ISN_T_IT_QUES - .2byte EC_WORD_SEE, EC_WORD_QUES, EC_WORD_ISN_T, EC_WORD_POISON, EC_WORD_TERRIBLE, EC_WORD_QUES - .2byte EC_WORD_HUH_QUES, EC_WORD_OUR, EC_WORD_POISON, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_QUES - .2byte EC_WORD_POISON, EC_WORD_IS, EC_WORD_A, EC_WORD_TERRIBLE, EC_MOVE(TORMENT), EC_WORD_ISN_T_IT_QUES - - .align 2 - .2byte SPECIES_BUTTERFREE, ITEM_BRIGHT_POWDER - .2byte MOVE_SILVER_WIND, MOVE_SLEEP_POWDER, MOVE_PSYCHIC, MOVE_SUPERSONIC - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "BUTTERFREE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_BEEDRILL, ITEM_BRIGHT_POWDER - .2byte MOVE_SLUDGE_BOMB, MOVE_TWINEEDLE, MOVE_DOUBLE_TEAM, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "BEEDRILL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PARASECT, ITEM_BRIGHT_POWDER - .2byte MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_STUN_SPORE, MOVE_SLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "PARASECT$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_YANMA, ITEM_BRIGHT_POWDER - .2byte MOVE_HYPNOSIS, MOVE_SONIC_BOOM, MOVE_QUICK_ATTACK, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability - .4byte 0x0000008A @ personality - .string "YANMA$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SHUCKLE, ITEM_SITRUS_BERRY - .2byte MOVE_TOXIC, MOVE_ROCK_TOMB, MOVE_PROTECT, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "SHUCKLE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FORRETRESS, ITEM_SITRUS_BERRY - .2byte MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_SANDSTORM - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "FORRETRESS$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0x1f, 0x6e, 0x01 - - .align 2 -gUnknown_847D64C:: - .byte 0x0c, 0x08, 0x01, 0x02 - .string "RIC & RENE$", 11 - .byte FACILITY_CLASS_CRUSH_KIN, 0x05 - .align 1 - .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME - .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_TOO, EC_WORD_AWESOME - .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_ISN_T, EC_WORD_AWESOME, EC_WORD_QUES - .2byte EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_FIGHT, EC_WORD_EXCL, 0xFFFF, 0xFFFF - - .align 2 - .2byte SPECIES_HITMONLEE, ITEM_SCOPE_LENS - .2byte MOVE_ROCK_TOMB, MOVE_HI_JUMP_KICK, MOVE_BULK_UP, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "HITMONLEE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RHYDON, ITEM_SHELL_BELL - .2byte MOVE_MEGAHORN, MOVE_ROCK_BLAST, MOVE_BRICK_BREAK, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000007F @ personality - .string "RHYDON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLEM, ITEM_SCOPE_LENS - .2byte MOVE_BRICK_BREAK, MOVE_ROCK_BLAST, MOVE_DIG, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000002 @ personality - .string "GOLEM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGMAR, ITEM_SHELL_BELL - .2byte MOVE_FIRE_PUNCH, MOVE_BRICK_BREAK, MOVE_CONFUSE_RAY, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000004F @ personality - .string "MAGMAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HERACROSS, ITEM_FOCUS_BAND - .2byte MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000007F @ personality - .string "HERACROSS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_POLIWRATH, ITEM_SCOPE_LENS - .2byte MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_BULK_UP, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000097 @ personality - .string "POLIWRATH$", 11 - .byte 255 @ friendship - - .string "RIC & RENE$", 11 - .byte FACILITY_CLASS_CRUSH_KIN, 0x05 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF - .2byte EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF - .2byte EC_WORD_HUH_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_NOT_VERY, EC_WORD_AWESOME, EC_WORD_QUES - .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_DO, EC_WORD_MY, EC_WORD_BEST, EC_WORD_EXCL - - .align 2 - .2byte SPECIES_MACHAMP, ITEM_SCOPE_LENS - .2byte MOVE_CROSS_CHOP, MOVE_SEISMIC_TOSS, MOVE_ROCK_TOMB, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000004E @ personality - .string "MACHAMP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PINSIR, ITEM_FOCUS_BAND - .2byte MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SUBMISSION, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "PINSIR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAROWAK, ITEM_SHELL_BELL - .2byte MOVE_BRICK_BREAK, MOVE_BONEMERANG, MOVE_AERIAL_ACE, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000003 @ personality - .string "MAROWAK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HITMONCHAN, ITEM_SCOPE_LENS - .2byte MOVE_MACH_PUNCH, MOVE_THUNDER_PUNCH, MOVE_DOUBLE_TEAM, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "HITMONCHAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ELECTABUZZ, ITEM_SHELL_BELL - .2byte MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK, MOVE_THUNDER_WAVE, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000004F @ personality - .string "ELECTABUZZ$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_POLIWRATH, ITEM_SCOPE_LENS - .2byte MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_BULK_UP, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000097 @ personality - .string "POLIWRATH$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0xb4, 0x66, 0x01 - - .align 2 -gUnknown_847DA2C:: - .byte 0x0d, 0x08, 0x01, 0x0d - .string "JEN & KIRA$", 11 - .byte FACILITY_CLASS_TWINS_2, 0x05 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL - .2byte EC_WORD_EHEHE, EC_WORD_YAY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_TRY, EC_WORD_TO, EC_WORD_GET, EC_WORD_BETTER - - .align 2 - .2byte SPECIES_JOLTEON, ITEM_QUICK_CLAW - .2byte MOVE_QUICK_ATTACK, MOVE_THUNDERBOLT, MOVE_DOUBLE_KICK, MOVE_PIN_MISSILE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000029 @ personality - .string "JOLTEON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ESPEON, ITEM_QUICK_CLAW - .2byte MOVE_QUICK_ATTACK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_BITE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000029 @ personality - .string "ESPEON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FLAREON, ITEM_QUICK_CLAW - .2byte MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000033 @ personality - .string "FLAREON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_VAPOREON, ITEM_QUICK_CLAW - .2byte MOVE_QUICK_ATTACK, MOVE_WATERFALL, MOVE_ICE_BEAM, MOVE_BITE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000010 @ personality - .string "VAPOREON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_EEVEE, ITEM_QUICK_CLAW - .2byte MOVE_QUICK_ATTACK, MOVE_DOUBLE_EDGE, MOVE_BITE, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000010 @ personality - .string "EEVEE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_UMBREON, ITEM_QUICK_CLAW - .2byte MOVE_QUICK_ATTACK, MOVE_FAINT_ATTACK, MOVE_SHADOW_BALL, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000010 @ personality - .string "UMBREON$", 11 - .byte 255 @ friendship - - .string "JEN & KIRA$", 11 - .byte FACILITY_CLASS_TWINS_2, 0x03 - .align 1 - .2byte EC_WORD_LET_S, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL, 0xFFFF, 0xFFFF - .2byte EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_WE, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_WORK, EC_WORD_BETTER, 0xFFFF - - .align 2 - .2byte SPECIES_JOLTEON, ITEM_BRIGHT_POWDER - .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 10, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "JOLTEON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ESPEON, ITEM_BRIGHT_POWDER - .2byte MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_HELPING_HAND, MOVE_PSYCHIC - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 10, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "ESPEON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FLAREON, ITEM_BRIGHT_POWDER - .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_FLAMETHROWER - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 13, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000D @ personality - .string "FLAREON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_VAPOREON, ITEM_BRIGHT_POWDER - .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_SURF - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 35, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000023 @ personality - .string "VAPOREON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_EEVEE, ITEM_BRIGHT_POWDER - .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_DOUBLE_EDGE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 35, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000023 @ personality - .string "EEVEE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_UMBREON, ITEM_BRIGHT_POWDER - .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_FAINT_ATTACK - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 35, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000023 @ personality - .string "UMBREON$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0xc2, 0x7f, 0x01 - - .align 2 -gUnknown_847DE0C:: - .byte 0x0e, 0x08, 0x01, 0x08 - .string "ISAC & MAG$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x01 - .align 1 - .2byte EC_WORD_OUR, EC_MOVE(EARTHQUAKE), EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SHAKY - .2byte EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_I_AM, EC_WORD_ALL, EC_WORD_SHAKY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF - .2byte EC_WORD_MY, EC_WORD_GIRL, EC_WORD_ISN_T, EC_WORD_SHAKY, EC_WORD_SHE_IS, EC_WORD_LOVEY_DOVEY - - .align 2 - .2byte SPECIES_NIDOKING, ITEM_SOFT_SAND - .2byte MOVE_EARTHQUAKE, MOVE_MEGAHORN, MOVE_SHADOW_BALL, MOVE_FIRE_BLAST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "NIDOKING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GLIGAR, ITEM_SOFT_SAND - .2byte MOVE_EARTHQUAKE, MOVE_QUICK_ATTACK, MOVE_AERIAL_ACE, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "GLIGAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_QUAGSIRE, ITEM_SOFT_SAND - .2byte MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_BLIZZARD, MOVE_BRICK_BREAK - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "QUAGSIRE$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_PILOSWINE, ITEM_SOFT_SAND - .2byte MOVE_EARTHQUAKE, MOVE_BLIZZARD, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "PILOSWINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLEM, ITEM_SOFT_SAND - .2byte MOVE_EARTHQUAKE, MOVE_ROCK_BLAST, MOVE_BRICK_BREAK, MOVE_EXPLOSION - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000080 @ personality - .string "GOLEM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_STEELIX, ITEM_SOFT_SAND - .2byte MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DRAGON_BREATH, MOVE_DOUBLE_EDGE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "STEELIX$", 11 - .byte 255 @ friendship - - .string "ISAC & MAG$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x01 - .align 1 - .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_DOESN_T, EC_WORD_GET, EC_WORD_ALL, EC_WORD_SHAKY - .2byte EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_LIE, EC_WORD_EXCL - .2byte EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY - .2byte EC_WORD_I_AM, EC_WORD_LOVEY_DOVEY, EC_WORD_FOR, EC_WORD_HIM, EC_WORD_NOT, EC_WORD_SHAKY - - .align 2 - .2byte SPECIES_SKARMORY, ITEM_KINGS_ROCK - .2byte MOVE_SANDSTORM, MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_SPIKES - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000B @ personality - .string "SKARMORY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MANTINE, ITEM_LUM_BERRY - .2byte MOVE_ICE_BEAM, MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000B @ personality - .string "MANTINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_JUMPLUFF, ITEM_LUM_BERRY - .2byte MOVE_TAIL_WHIP, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000B @ personality - .string "JUMPLUFF$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GENGAR, ITEM_KINGS_ROCK - .2byte MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_PSYCHIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000B @ personality - .string "GENGAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CROBAT, ITEM_KINGS_ROCK - .2byte MOVE_GIGA_DRAIN, MOVE_POISON_FANG, MOVE_FLY, MOVE_STEEL_WING - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000B @ personality - .string "CROBAT$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_XATU, ITEM_LUM_BERRY - .2byte MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000B @ personality - .string "XATU$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0xb0, 0x6b, 0x01 - - .align 2 -gUnknown_847E1EC:: - .byte 0x0f, 0x08, 0x02, 0x06 - .string "CHELSEA$", 11 - .byte FACILITY_CLASS_PKMN_RANGER_4, 0x07 - .align 1 - .2byte EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, EC_WORD_IS, EC_WORD_IMPORTANT, EC_WORD_ISN_T_IT_QUES - .2byte EC_WORD_YOU, EC_WORD_TAKE, EC_WORD_THE, EC_WORD_LOSS, 0xFFFF, 0xFFFF - .2byte EC_WORD_BE, EC_WORD_KIND, EC_WORD_TO, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD - .2byte EC_WORD_DON_T, EC_WORD_EVER, EC_WORD_POISON, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD - - .align 2 - .2byte SPECIES_VILEPLUME, ITEM_PETAYA_BERRY - .2byte MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_STUN_SPORE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000011 @ personality - .string "VILEPLUME$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_STARMIE, ITEM_PETAYA_BERRY - .2byte MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_WATERFALL, MOVE_RECOVER - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x00000010 @ personality - .string "STARMIE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_URSARING, ITEM_LIECHI_BERRY - .2byte MOVE_FAINT_ATTACK, MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000001 @ personality - .string "URSARING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NOCTOWL, ITEM_LIECHI_BERRY - .2byte MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000001 @ personality - .string "NOCTOWL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NINETALES, ITEM_PETAYA_BERRY - .2byte MOVE_GRUDGE, MOVE_OVERHEAT, MOVE_FAINT_ATTACK, MOVE_WILL_O_WISP - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000010 @ personality - .string "NINETALES$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_LEDIAN, ITEM_LIECHI_BERRY - .2byte MOVE_SILVER_WIND, MOVE_SWIFT, MOVE_AERIAL_ACE, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000001 @ personality - .string "LEDIAN$", 11 - .byte 255 @ friendship - - .string "TRENTON$", 11 - .byte FACILITY_CLASS_PKMN_RANGER_3, 0x07 - .align 1 - .2byte EC_WORD_I, EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREAT, EC_WORD_GREEN, EC_WORD_WORLD - .2byte EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_YOURS - .2byte EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, 0xFFFF, 0xFFFF - .2byte EC_MOVE2(PROTECT), EC_WORD_AND, EC_WORD_RESUSCITATE, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD - - .align 2 - .2byte SPECIES_GYARADOS, ITEM_SITRUS_BERRY - .2byte MOVE_EARTHQUAKE, MOVE_WATERFALL, MOVE_BLIZZARD, MOVE_HYPER_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000088 @ personality - .string "GYARADOS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_VICTREEBEL, ITEM_SITRUS_BERRY - .2byte MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_REFLECT, MOVE_ATTRACT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x0000008E @ personality - .string "VICTREEBEL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DONPHAN, ITEM_SITRUS_BERRY - .2byte MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000097 @ personality - .string "DONPHAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FEAROW, ITEM_SITRUS_BERRY - .2byte MOVE_FAINT_ATTACK, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000097 @ personality - .string "FEAROW$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ARCANINE, ITEM_SITRUS_BERRY - .2byte MOVE_EXTREME_SPEED, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x0000004F @ personality - .string "ARCANINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ARIADOS, ITEM_SITRUS_BERRY - .2byte MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_SIGNAL_BEAM, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000097 @ personality - .string "ARIADOS$", 11 - .byte 255 @ friendship - - .string "ALBERT$", 11 - .byte FACILITY_CLASS_COOLTRAINER_3, 0x07 - .align 1 - .2byte EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_TIME, EC_WORD_HERE - .2byte EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_THINGS, EC_WORD_EXCITING - .2byte EC_WORD_YOU_RE, EC_WORD_STRONG, EC_WORD_THAT_WAS, EC_WORD_WILD, EC_WORD_AND, EC_WORD_EXCITING - .2byte EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_AFTER, EC_WORD_THAT, EC_WORD_EXCITING, EC_WORD_MATCH - - .align 2 - .2byte SPECIES_KINGDRA, ITEM_SALAC_BERRY - .2byte MOVE_TWISTER, MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_RETURN - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000015 @ personality - .string "KINGDRA$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLEM, ITEM_SALAC_BERRY - .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_EDGE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x0000007F @ personality - .string "GOLEM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DRAGONITE, ITEM_SALAC_BERRY - .2byte MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_DRAGON_CLAW - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000001 @ personality - .string "DRAGONITE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TYRANITAR, ITEM_SALAC_BERRY - .2byte MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_THUNDER, MOVE_FIRE_BLAST - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000097 @ personality - .string "TYRANITAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_AMPHAROS, ITEM_SALAC_BERRY - .2byte MOVE_REFLECT, MOVE_THUNDER, MOVE_BRICK_BREAK, MOVE_RETURN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000013 @ personality - .string "AMPHAROS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_VENUSAUR, ITEM_SALAC_BERRY - .2byte MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_TOXIC, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x0000002A @ personality - .string "VENUSAUR$", 11 - .byte 255 @ friendship - - .byte 0x4c, 0x84, 0x01 - - .align 2 -gUnknown_847E5CC:: - .byte 0x10, 0x08, 0x02, 0x04 - .string "CAMRYN$", 11 - .byte FACILITY_CLASS_PICNICKER_2, 0x01 - .align 1 - .2byte EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_I, EC_WORD_WON_T, EC_WORD_LOSE, EC_WORD_EXCL - .2byte EC_WORD_I, EC_WORD_SAID, EC_WORD_THAT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_WIN - .2byte EC_WORD_OH_QUES, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_DID, EC_WORD_I, EC_WORD_LOSE, EC_WORD_QUES - .2byte EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - - .align 2 - .2byte SPECIES_MURKROW, ITEM_BLACK_GLASSES - .2byte MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "MURKROW$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RAPIDASH, ITEM_CHARCOAL - .2byte MOVE_BOUNCE, MOVE_FLAMETHROWER, MOVE_QUICK_ATTACK, MOVE_DOUBLE_KICK - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000C @ personality - .string "RAPIDASH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MILTANK, ITEM_SILK_SCARF - .2byte MOVE_MILK_DRINK, MOVE_BRICK_BREAK, MOVE_BODY_SLAM, MOVE_SHADOW_BALL - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "MILTANK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLDUCK, ITEM_MYSTIC_WATER - .2byte MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_LIGHT_SCREEN - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "GOLDUCK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SANDSLASH, ITEM_SOFT_SAND - .2byte MOVE_SANDSTORM, MOVE_AERIAL_ACE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "SANDSLASH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDOQUEEN, ITEM_HARD_STONE - .2byte MOVE_EARTHQUAKE, MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "NIDOQUEEN$", 11 - .byte 255 @ friendship - - .string "NATALIA$", 11 - .byte FACILITY_CLASS_AROMA_LADY_2, 0x01 - .align 1 - .2byte EC_WORD_THIS, EC_MOVE(SWEET_SCENT), EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_IT, EC_WORD_QUES - .2byte EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_NICE, EC_WORD_QUES, 0xFFFF, 0xFFFF - .2byte EC_WORD_THAT, EC_WORD_WASN_T, EC_WORD_GOOD, EC_WORD_QUES, 0xFFFF, 0xFFFF - .2byte EC_WORD_I, EC_MOVE2(REFRESH), EC_WORD_THINGS, EC_WORD_WITH, EC_WORD_REFRESHING, EC_MOVE(AROMATHERAPY) - - .align 2 - .2byte SPECIES_BELLOSSOM, ITEM_PERSIM_BERRY - .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_FLAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "BELLOSSOM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_VICTREEBEL, ITEM_MIRACLE_SEED - .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "VICTREEBEL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PARASECT, ITEM_MIRACLE_SEED - .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "PARASECT$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_VILEPLUME, ITEM_PERSIM_BERRY - .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_SLUDGE_BOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "VILEPLUME$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_VENUSAUR, ITEM_PERSIM_BERRY - .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_SLUDGE_BOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000C @ personality - .string "VENUSAUR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MEGANIUM, ITEM_MIRACLE_SEED - .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000025 @ personality - .string "MEGANIUM$", 11 - .byte 255 @ friendship - - .string "KATHLEEN$", 11 - .byte FACILITY_CLASS_COOLTRAINER_4, 0x07 - .align 1 - .2byte EC_WORD_TOO, EC_WORD_BAD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_FOR, EC_WORD_YOU - .2byte EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_ELLIPSIS - .2byte EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_PURE_POWER, EC_WORD_THAT, EC_WORD_IS, EC_WORD_NATURAL - - .align 2 - .2byte SPECIES_MAROWAK, ITEM_LUM_BERRY - .2byte MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_BONEMERANG, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "MAROWAK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_LAPRAS, ITEM_LUM_BERRY - .2byte MOVE_SURF, MOVE_BLIZZARD, MOVE_PSYCHIC, MOVE_THUNDER - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000C @ personality - .string "LAPRAS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ARCANINE, ITEM_LUM_BERRY - .2byte MOVE_EXTREME_SPEED, MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000057 @ personality - .string "ARCANINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RAICHU, ITEM_LUM_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000089 @ personality - .string "RAICHU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOGETIC, ITEM_LUM_BERRY - .2byte MOVE_ANCIENT_POWER, MOVE_SWEET_KISS, MOVE_PSYCHIC, MOVE_MAGICAL_LEAF - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000C @ personality - .string "TOGETIC$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SNORLAX, ITEM_LUM_BERRY - .2byte MOVE_BODY_SLAM, MOVE_REST, MOVE_SNORE, MOVE_SHADOW_BALL - .byte 0, 0x00 @ level, ppBonuses - .byte 84, 84, 84, 84, 84, 84 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000C @ personality - .string "SNORLAX$", 11 - .byte 255 @ friendship - - .byte 0x8c, 0x73, 0x01 - - .align 2 -gUnknown_847E9AC:: - .byte 0x11, 0x08, 0x00, 0x03 - .string "BRADEN$", 11 - .byte FACILITY_CLASS_SWIMMER_MALE_2, 0x01 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_PRETTY, EC_WORD_HAPPY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_TOUGHNESS - .2byte EC_WORD_WROOOAAR_EXCL, 0xFFFF, EC_WORD_SERIOUSLY, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES - .2byte EC_WORD_YOU, EC_WORD_SHOCKED, EC_WORD_ME, EC_WORD_OUT, EC_WORD_OF, EC_WORD_HAPPINESS - .2byte EC_WORD_NICE, EC_WORD_WORK, EC_WORD_YOU, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_FABULOUS - - .align 2 - .2byte SPECIES_VAPOREON, ITEM_CHERI_BERRY - .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_SHADOW_BALL, MOVE_WISH - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 110, 0, 200, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000011 @ personality - .string "VAPOREON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SLOWBRO, ITEM_QUICK_CLAW - .2byte MOVE_SURF, MOVE_CONFUSION, MOVE_AMNESIA, MOVE_DISABLE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 255, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000091 @ personality - .string "SLOWBRO$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_POLITOED, ITEM_CHESTO_BERRY - .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_HYPNOSIS, MOVE_SWAGGER - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 100, 110, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000096 @ personality - .string "POLITOED$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TENTACRUEL, ITEM_POISON_BARB - .2byte MOVE_SURF, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 110, 0, 200, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000000 @ personality - .string "TENTACRUEL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RATICATE, ITEM_SITRUS_BERRY - .2byte MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 200, 100, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000080 @ personality - .string "RATICATE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DUNSPARCE, ITEM_PERSIM_BERRY - .2byte MOVE_WATER_PULSE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_YAWN - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 255, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000007F @ personality - .string "DUNSPARCE$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0x30, 0x65, 0x01 - - .align 2 -gUnknown_847ED8C:: - .byte 0x12, 0x08, 0x00, 0x0a - .string "ALLYSON$", 11 - .byte FACILITY_CLASS_COOLTRAINER_4, 0x07 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_ABOUT, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_TODAY - .2byte EC_WORD_YES, EC_WORD_EXCL_EXCL, EC_WORD_I, EC_WORD_ADORE, EC_WORD_MYSELF, EC_WORD_TODAY - .2byte EC_WORD_I_WAS, EC_WORD_CONFUSED, EC_WORD_ABOUT, EC_WORD_THINGS, EC_WORD_I, EC_WORD_THINK - .2byte EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_STRONG, EC_WORD_TODAY, EC_WORD_THAT_S, EC_WORD_ALL - - .align 2 - .2byte SPECIES_STARMIE, ITEM_LUM_BERRY - .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 255, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x0000000F @ personality - .string "STARMIE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_BLASTOISE, ITEM_SALAC_BERRY - .2byte MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_MIRROR_COAT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 255, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000032 @ personality - .string "BLASTOISE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_KINGDRA, ITEM_CHESTO_BERRY - .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 0, 255, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x0000008C @ personality - .string "KINGDRA$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_QUAGSIRE, ITEM_CHESTO_BERRY - .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 100, 0, 155, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "QUAGSIRE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_LAPRAS, ITEM_LEFTOVERS - .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_ATTRACT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 0, 255, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x0000000F @ personality - .string "LAPRAS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DRAGONITE, ITEM_SHELL_BELL - .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_LIGHT_SCREEN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 0, 0, 155, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000096 @ personality - .string "DRAGONITE$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0x32, 0x6e, 0x01 - - .align 2 -gUnknown_847F16C:: - .byte 0x13, 0x08, 0x00, 0x0e - .string "ALBERTO$", 11 - .byte FACILITY_CLASS_SAILOR_2, 0x05 - .align 1 - .2byte EC_WORD_LET_S, EC_WORD_GET, EC_WORD_WITH, EC_WORD_IT, EC_WORD_RIGHT, EC_WORD_AWAY - .2byte EC_WORD_YO, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_NOW, EC_WORD_EH_QUES - .2byte EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_OVER, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER - .2byte EC_WORD_OKAY, EC_WORD_I, EC_WORD_CONCEDE, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_LOST - - .align 2 - .2byte SPECIES_FERALIGATR, ITEM_FOCUS_BAND - .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_DRAGON_CLAW - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 100, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000032 @ personality - .string "FERALIGATR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_POLIWRATH, ITEM_KINGS_ROCK - .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_MEGA_KICK, MOVE_ROCK_TOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 255, 0, 0, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability - .4byte 0x00000096 @ personality - .string "POLIWRATH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_KANGASKHAN, ITEM_QUICK_CLAW - .2byte MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 130, 0, 0, 125 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "KANGASKHAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MILTANK, ITEM_LEFTOVERS - .2byte MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ROCK_TOMB, MOVE_MILK_DRINK - .byte 0, 0x00 @ level, ppBonuses - .byte 155, 255, 0, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "MILTANK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLDUCK, ITEM_SCOPE_LENS - .2byte MOVE_CROSS_CHOP, MOVE_SURF, MOVE_ICE_BEAM, MOVE_DISABLE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 100, 0, 100, 210 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability - .4byte 0x00000096 @ personality - .string "GOLDUCK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GRANBULL, ITEM_LIECHI_BERRY - .2byte MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 130, 0, 0, 125 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x000000CA @ personality - .string "GRANBULL$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0x90, 0x68, 0x01 - - .align 2 -gUnknown_847F54C:: - .byte 0x14, 0x08, 0x01, 0x0c - .string "KAT & KIPP$", 11 - .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x04 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_MY, EC_WORD_BEST - .2byte EC_WORD_WAY, EC_WORD_TO, EC_WORD_GO, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER - .2byte EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_IT, EC_WORD_GOES - .2byte EC_WORD_OKAY, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER, EC_WORD_FIGHT, EC_WORD_FIGHT - - .align 2 - .2byte SPECIES_SNEASEL, ITEM_RAWST_BERRY - .2byte MOVE_DIG, MOVE_TORMENT, MOVE_REFLECT, MOVE_TAUNT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 255, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x0000000D @ personality - .string "SNEASEL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_OMASTAR, ITEM_QUICK_CLAW - .2byte MOVE_DIVE, MOVE_LEER, MOVE_TICKLE, MOVE_SUPERSONIC - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000002D @ personality - .string "OMASTAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DEWGONG, ITEM_PERSIM_BERRY - .2byte MOVE_DIVE, MOVE_ENCORE, MOVE_GROWL, MOVE_SAFEGUARD - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 0, 100, 0, 0, 210 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000014 @ personality - .string "DEWGONG$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_QUAGSIRE, ITEM_QUICK_CLAW - .2byte MOVE_DIVE, MOVE_YAWN, MOVE_AMNESIA, MOVE_SAFEGUARD - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 0, 110, 0, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000091 @ personality - .string "QUAGSIRE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CORSOLA, ITEM_QUICK_CLAW - .2byte MOVE_DIG, MOVE_MIRROR_COAT, MOVE_RECOVER, MOVE_CONFUSE_RAY - .byte 0, 0x00 @ level, ppBonuses - .byte 155, 0, 100, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000017 @ personality - .string "CORSOLA$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SANDSLASH, ITEM_SITRUS_BERRY - .2byte MOVE_DIG, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_SAND_ATTACK - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000094 @ personality - .string "SANDSLASH$", 11 - .byte 255 @ friendship - - .string "KAT & KIPP$", 11 - .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x04 - .align 1 - .2byte EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_NEVER, EC_WORD_LOSE, EC_WORD_EXCL - .2byte EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOO_STRONG, EC_WORD_TO, EC_WORD_LOSE - .2byte EC_WORD_WHAT, EC_WORD_HUH_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_JOKING, EC_WORD_QUES - .2byte EC_WORD_WAAAH, EC_WORD_WAAAH, EC_WORD_OH, EC_WORD_BIG, EC_WORD_SISTER, EC_WORD_EXCL - - .align 2 - .2byte SPECIES_FURRET, ITEM_KINGS_ROCK - .2byte MOVE_DIG, MOVE_AMNESIA, MOVE_DEFENSE_CURL, MOVE_FOLLOW_ME - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 100, 0, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000080 @ personality - .string "FURRET$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_AZUMARILL, ITEM_WHITE_HERB - .2byte MOVE_DIVE, MOVE_LIGHT_SCREEN, MOVE_TAIL_WHIP, MOVE_DEFENSE_CURL - .byte 0, 0x00 @ level, ppBonuses - .byte 155, 0, 100, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000014 @ personality - .string "AZUMARILL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_KINGLER, ITEM_QUICK_CLAW - .2byte MOVE_DIVE, MOVE_HARDEN, MOVE_LEER, MOVE_AMNESIA - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000091 @ personality - .string "KINGLER$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CLOYSTER, ITEM_QUICK_CLAW - .2byte MOVE_DIVE, MOVE_WITHDRAW, MOVE_PROTECT, MOVE_SUPERSONIC - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000014 @ personality - .string "CLOYSTER$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_QUAGSIRE, ITEM_QUICK_CLAW - .2byte MOVE_DIG, MOVE_YAWN, MOVE_AMNESIA, MOVE_SAFEGUARD - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 0, 110, 0, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000094 @ personality - .string "QUAGSIRE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_KABUTOPS, ITEM_PECHA_BERRY - .2byte MOVE_DIG, MOVE_SAND_ATTACK, MOVE_ENDURE, MOVE_CONFUSE_RAY - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000030 @ personality - .string "KABUTOPS$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0x7c, 0x5d, 0x01 - - .align 2 -gUnknown_847F92C:: - .byte 0x15, 0x08, 0x01, 0x08 - .string "GEB&MEGAN$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x07 - .align 1 - .2byte EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_OPPONENT, EC_WORD_QUES, EC_WORD_PUSHOVER, EC_WORD_HAHAHA - .2byte EC_WORD_HAHAHA, EC_WORD_SORRY, EC_WORD_MY, EC_WORD_FRIEND, EC_WORD_TOUGH, EC_WORD_LOSS - .2byte EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FRIEND, EC_WORD_QUES - .2byte EC_WORD_WON_T, EC_WORD_YOU, EC_WORD_GET, EC_WORD_LOST, EC_WORD_PLEASE, EC_WORD_QUES - - .align 2 - .2byte SPECIES_POLITOED, ITEM_KINGS_ROCK - .2byte MOVE_SURF, MOVE_HYPNOSIS, MOVE_PERISH_SONG, MOVE_SWAGGER - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 0, 255, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000008C @ personality - .string "POLITOED$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GYARADOS, ITEM_SALAC_BERRY - .2byte MOVE_HYPER_BEAM, MOVE_DRAGON_DANCE, MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 155, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000096 @ personality - .string "GYARADOS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_LAPRAS, ITEM_SHELL_BELL - .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 0, 255, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000F @ personality - .string "LAPRAS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDOQUEEN, ITEM_FOCUS_BAND - .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SUPERPOWER, MOVE_ROCK_SLIDE - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "NIDOQUEEN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_JYNX, ITEM_BRIGHT_POWDER - .2byte MOVE_WATER_PULSE, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 155, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "JYNX$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GIRAFARIG, ITEM_LUM_BERRY - .2byte MOVE_LIGHT_SCREEN, MOVE_CRUNCH, MOVE_PSYCHIC, MOVE_REFLECT - .byte 0, 0x00 @ level, ppBonuses - .byte 210, 0, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000008C @ personality - .string "GIRAFARIG$", 11 - .byte 255 @ friendship - - .string "GEB&MEGAN$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x07 - .align 1 - .2byte EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_FOE, EC_WORD_QUES, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS - .2byte EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, 0xFFFF - .2byte EC_WORD_MY, EC_WORD_WORD, EC_WORD_THIS, EC_WORD_IS, EC_WORD_JUST, EC_WORD_INCREDIBLE - .2byte EC_WORD_WE, EC_WORD_NEED, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_SOME, EC_WORD_MORE - - .align 2 - .2byte SPECIES_MAROWAK, ITEM_SALAC_BERRY - .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000094 @ personality - .string "MAROWAK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_URSARING, ITEM_SCOPE_LENS - .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 155, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "URSARING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SLOWKING, ITEM_LEFTOVERS - .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SHADOW_BALL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 110, 0, 0, 200, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000011 @ personality - .string "SLOWKING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ALAKAZAM, ITEM_BRIGHT_POWDER - .2byte MOVE_PSYCHIC, MOVE_PROTECT, MOVE_LIGHT_SCREEN, MOVE_REFLECT - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 0, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000041 @ personality - .string "ALAKAZAM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDOKING, ITEM_FOCUS_BAND - .2byte MOVE_SURF, MOVE_MEGAHORN, MOVE_THUNDERBOLT, MOVE_ICE_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "NIDOKING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RHYDON, ITEM_QUICK_CLAW - .2byte MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_MEGAHORN, MOVE_ROCK_SLIDE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000093 @ personality - .string "RHYDON$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0xf4, 0x60, 0x01 - - .align 2 -gUnknown_847FD0C:: - .byte 0x16, 0x08, 0x01, 0x05 - .string "LISA&LEAH$", 11 - .byte FACILITY_CLASS_TWINS_2, 0x01 - .align 1 - .2byte EC_WORD_ABSOLUTELY, EC_WORD_WE_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL - .2byte EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF - .2byte EC_WORD_EXCUSE_ME, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_ALL, EC_WORD_TOO_STRONG, 0xFFFF - - .align 2 - .2byte SPECIES_POLIWAG, ITEM_CHERI_BERRY - .2byte MOVE_SURF, MOVE_PROTECT, MOVE_TOXIC, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 255, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000087 @ personality - .string "POLIWAG$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SQUIRTLE, ITEM_MYSTIC_WATER - .2byte MOVE_WATER_PULSE, MOVE_PROTECT, MOVE_TOXIC, MOVE_MIRROR_COAT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000002D @ personality - .string "SQUIRTLE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CHINCHOU, ITEM_MAGNET - .2byte MOVE_SURF, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 255, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "CHINCHOU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDORAN_F, ITEM_POISON_BARB - .2byte MOVE_WATER_PULSE, MOVE_SLUDGE_BOMB, MOVE_CRUNCH, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "NIDORAN♀$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CLEFAIRY, ITEM_WHITE_HERB - .2byte MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_MINIMIZE - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 100, 100, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "CLEFAIRY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HORSEA, ITEM_SITRUS_BERRY - .2byte MOVE_SURF, MOVE_SMOKESCREEN, MOVE_ATTRACT, MOVE_DRAGON_RAGE - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 100, 100, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000002D @ personality - .string "HORSEA$", 11 - .byte 255 @ friendship - - .string "LISA&LEAH$", 11 - .byte FACILITY_CLASS_TWINS_2, 0x01 - .align 1 - .2byte EC_WORD_CAN, EC_WORD_WE, EC_WORD_WIN, EC_WORD_QUES, EC_WORD_IT_S, EC_WORD_EXCITING - .2byte EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY - .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF - .2byte EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_MOVE2(BEAT_UP), EC_WORD_ON, EC_WORD_CHILDREN - - .align 2 - .2byte SPECIES_WOOPER, ITEM_LEFTOVERS - .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_YAWN, MOVE_FLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000093 @ personality - .string "WOOPER$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PSYDUCK, ITEM_SCOPE_LENS - .2byte MOVE_SURF, MOVE_CROSS_CHOP, MOVE_HYPNOSIS, MOVE_DISABLE - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability - .4byte 0x00000096 @ personality - .string "PSYDUCK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SNUBBULL, ITEM_PECHA_BERRY - .2byte MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_CRUNCH, MOVE_SHADOW_BALL - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 100, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "SNUBBULL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_JIGGLYPUFF, ITEM_SITRUS_BERRY - .2byte MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_SING, MOVE_DISABLE - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "JIGGLYPUFF$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDORAN_M, ITEM_FOCUS_BAND - .2byte MOVE_WATER_PULSE, MOVE_SLUDGE_BOMB, MOVE_HORN_DRILL, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "NIDORAN♂$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOTODILE, ITEM_BRIGHT_POWDER - .2byte MOVE_SURF, MOVE_PROTECT, MOVE_TOXIC, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 100, 100, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000002D @ personality - .string "TOTODILE$", 11 - .byte 255 @ friendship - - .string "$", 11 - .byte FACILITY_CLASS_AQUA_LEADER, 0x01 - .align 1 - .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF - - .align 2 - .2byte SPECIES_NONE, ITEM_NONE - .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 0 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "$$$$$$$$$$$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_NONE, ITEM_NONE - .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 0 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "$$$$$$$$$$$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_NONE, ITEM_NONE - .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 0 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "$$$$$$$$$$$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_NONE, ITEM_NONE - .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 0 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "$$$$$$$$$$$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_NONE, ITEM_NONE - .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 0 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "$$$$$$$$$$$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_NONE, ITEM_NONE - .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 0 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "$$$$$$$$$$$", 11 - .byte 0 @ friendship - - .byte 0xd4, 0x97, 0x01 - - .align 2 -gUnknown_84800EC:: - .byte 0x17, 0x08, 0x02, 0x01 - .string "PRISCILLA$", 11 - .byte FACILITY_CLASS_TUBER_3, 0x01 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_GIRL, EC_WORD_HERE_I_COME, EC_WORD_EXCL - .2byte EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DID, EC_WORD_I, EC_WORD_WIN, EC_WORD_QUES - .2byte EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_ELLIPSIS - .2byte EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_NICE, EC_WORD_TRAINER, EC_WORD_THANK_YOU, EC_WORD_EXCL - - .align 2 - .2byte SPECIES_GOLDEEN, ITEM_SITRUS_BERRY - .2byte MOVE_WATER_PULSE, MOVE_MEGAHORN, MOVE_SUPERSONIC, MOVE_ICE_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000096 @ personality - .string "GOLDEEN$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_SEAKING, ITEM_SCOPE_LENS - .2byte MOVE_SURF, MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000000 @ personality - .string "SEAKING$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_LANTURN, ITEM_SHELL_BELL - .2byte MOVE_SURF, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ICE_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 100, 100, 210 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000008C @ personality - .string "LANTURN$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_LANTURN, ITEM_LEFTOVERS - .2byte MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_ICE_BEAM, MOVE_RAIN_DANCE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 100, 100, 210 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "LANTURN$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_GOLDEEN, ITEM_APICOT_BERRY - .2byte MOVE_WATER_PULSE, MOVE_DOUBLE_EDGE, MOVE_TOXIC, MOVE_PSYBEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000000 @ personality - .string "GOLDEEN$", 11 - .byte 0 @ friendship - - .align 2 - .2byte SPECIES_SEAKING, ITEM_PETAYA_BERRY - .2byte MOVE_SURF, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_PSYBEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000096 @ personality - .string "SEAKING$", 11 - .byte 0 @ friendship - - .string "CHARLOTTE$", 11 - .byte FACILITY_CLASS_LADY_2, 0x01 - .align 1 - .2byte EC_WORD_HELLO, EC_WORD_THERE, EC_WORD_I_AM, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY - .2byte EC_WORD_OH, EC_WORD_MY, EC_WORD_MY, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SORRY - .2byte EC_WORD_YOU_RE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY - .2byte EC_WORD_HOHOHO, EC_WORD_THANK_YOU, EC_WORD_FOR, EC_WORD_AN, EC_WORD_AMUSING, EC_WORD_BATTLE - - .align 2 - .2byte SPECIES_OCTILLERY, ITEM_SITRUS_BERRY - .2byte MOVE_OCTAZOOKA, MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER - .byte 0, 0x00 @ level, ppBonuses - .byte 55, 0, 100, 0, 100, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "OCTILLERY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_QWILFISH, ITEM_PERSIM_BERRY - .2byte MOVE_SURF, MOVE_TOXIC, MOVE_REVENGE, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 0, 0, 0, 100, 210 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000014 @ personality - .string "QWILFISH$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_REMORAID, ITEM_PECHA_BERRY - .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_THUNDER_WAVE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000096 @ personality - .string "REMORAID$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_REMORAID, ITEM_WHITE_HERB - .2byte MOVE_WATER_PULSE, MOVE_BLIZZARD, MOVE_FIRE_BLAST, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "REMORAID$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_OCTILLERY, ITEM_FOCUS_BAND - .2byte MOVE_OCTAZOOKA, MOVE_SLUDGE_BOMB, MOVE_THUNDER_WAVE, MOVE_HYPER_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 155, 100, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000093 @ personality - .string "OCTILLERY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_QWILFISH, ITEM_QUICK_CLAW - .2byte MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 100, 0, 0, 100, 210 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000096 @ personality - .string "QWILFISH$", 11 - .byte 255 @ friendship - - .string "SHANIA$", 11 - .byte FACILITY_CLASS_SWIMMER_FEMALE_2, 0x01 - .align 1 - .2byte EC_WORD_A, EC_WORD_POKEMON, EC_WORD_HEROINE, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM - .2byte EC_WORD_AHAHA, EC_WORD_NO, EC_WORD_WAY, EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_SERIOUSLY - .2byte EC_WORD_WHY, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LIE - .2byte EC_WORD_NICE, EC_WORD_BATTLE, EC_WORD_THANKS, EC_WORD_FOR, EC_WORD_ENTERTAINING, EC_WORD_ME - - .align 2 - .2byte SPECIES_MANTINE, ITEM_BRIGHT_POWDER - .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "MANTINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGIKARP, ITEM_CHOICE_BAND - .2byte MOVE_SPLASH, MOVE_TACKLE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000D @ personality - .string "MAGIKARP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MANTINE, ITEM_MENTAL_HERB - .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY, MOVE_ATTRACT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 255, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "MANTINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GYARADOS, ITEM_SHELL_BELL - .2byte MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "GYARADOS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGIKARP, ITEM_CHOICE_BAND - .2byte MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000094 @ personality - .string "MAGIKARP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GYARADOS, ITEM_KINGS_ROCK - .2byte MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "GYARADOS$", 11 - .byte 255 @ friendship - - .byte 0x1d, 0x52, 0x01 - - .align 2 -gUnknown_84804CC:: - .byte 0x18, 0x08, 0x02, 0x0d - .string "BRENNAN$", 11 - .byte FACILITY_CLASS_SAILOR_2, 0x01 - .align 1 - .2byte EC_WORD_TAKE, EC_WORD_THINGS, EC_WORD_EASY, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_IMPORTANT - .2byte EC_WORD_YOU, EC_WORD_LOSE, EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_EXCL - .2byte EC_WORD_OOPS, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_AN, EC_WORD_EASY, EC_WORD_WIN - .2byte EC_WORD_I, EC_WORD_DON_T, EC_MOVE(GRUDGE), EC_WORD_YOU, EC_WORD_BUT, EC_WORD_ELLIPSIS - - .align 2 - .2byte SPECIES_LAPRAS, ITEM_CHESTO_BERRY - .2byte MOVE_HYDRO_PUMP, MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 0, 100, 255 @ EVs - .align 2 - trainerid 15, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x0000000F @ personality - .string "LAPRAS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_KINGDRA, ITEM_CHESTO_BERRY - .2byte MOVE_HYDRO_PUMP, MOVE_BLIZZARD, MOVE_DRAGON_BREATH, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 255, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000008C @ personality - .string "KINGDRA$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MACHAMP, ITEM_SCOPE_LENS - .2byte MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HYPER_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 130, 0, 0, 125 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000004E @ personality - .string "MACHAMP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CHANSEY, ITEM_ORAN_BERRY - .2byte MOVE_WATER_PULSE, MOVE_SOFT_BOILED, MOVE_MINIMIZE, MOVE_THUNDER_WAVE - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000005 @ personality - .string "CHANSEY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TAUROS, ITEM_LUM_BERRY - .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SWAGGER - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 100, 100, 100, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "TAUROS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SNORLAX, ITEM_ORAN_BERRY - .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000021 @ personality - .string "SNORLAX$", 11 - .byte 255 @ friendship - - .string "KADEN$", 11 - .byte FACILITY_CLASS_FISHERMAN_2, 0x01 - .align 1 - .2byte EC_WORD_MY, EC_WORD_FISHING, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_IS, EC_WORD_FANTASTIC - .2byte EC_WORD_MY, EC_WORD_FANTASTIC, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WINS, EC_WORD_OUT - .2byte EC_WORD_UH_OH, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_LOST - .2byte EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WON_T, EC_WORD_GET, EC_WORD_ME, EC_WORD_WINS - - .align 2 - .2byte SPECIES_CHINCHOU, ITEM_MAGNET - .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 100, 0, 100, 100, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "CHINCHOU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DRATINI, ITEM_SITRUS_BERRY - .2byte MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_DRAGON_BREATH, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 100, 100, 100, 100 @ EVs - .align 2 - trainerid 0, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "DRATINI$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SLOWPOKE, ITEM_PECHA_BERRY - .2byte MOVE_WATER_PULSE, MOVE_YAWN, MOVE_DISABLE, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 255, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000096 @ personality - .string "SLOWPOKE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGIKARP, ITEM_BRIGHT_POWDER - .2byte MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 0, 255 @ EVs - .align 2 - trainerid 23, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000017 @ personality - .string "MAGIKARP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_SEAKING, ITEM_CHERI_BERRY - .2byte MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SUPERSONIC, MOVE_AGILITY - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 23, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000017 @ personality - .string "SEAKING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TENTACRUEL, ITEM_FOCUS_BAND - .2byte MOVE_MIRROR_COAT, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000096 @ personality - .string "TENTACRUEL$", 11 - .byte 255 @ friendship - - .string "EMANUEL$", 11 - .byte FACILITY_CLASS_GENTLEMAN_2, 0x01 - .align 1 - .2byte EC_WORD_HMM, EC_WORD_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SKILLED, EC_WORD_QUES - .2byte EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_RIGHT, EC_WORD_ELLIPSIS - .2byte EC_WORD_YOU, EC_WORD_TRULY, EC_WORD_ARE, EC_WORD_A, EC_WORD_MASTER, EC_WORD_TRAINER - .2byte EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_THAT, EC_WORD_I_WAS, EC_WORD_YOUR, EC_WORD_OPPONENT - - .align 2 - .2byte SPECIES_VAPOREON, ITEM_SHELL_BELL - .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_ATTRACT, MOVE_BITE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 255, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000014 @ personality - .string "VAPOREON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ESPEON, ITEM_CHESTO_BERRY - .2byte MOVE_PSYCHIC, MOVE_BITE, MOVE_REFLECT, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 110, 0, 200, 0, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "ESPEON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_BLISSEY, ITEM_LEFTOVERS - .2byte MOVE_WATER_PULSE, MOVE_MINIMIZE, MOVE_THUNDER_WAVE, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 255, 0, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000005 @ personality - .string "BLISSEY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_STARMIE, ITEM_LUM_BERRY - .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_PSYCHIC - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 100, 0, 0, 155 @ EVs - .align 2 - trainerid 20, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000014 @ personality - .string "STARMIE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PERSIAN, ITEM_KINGS_ROCK - .2byte MOVE_SLASH, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_FAKE_OUT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 130, 0, 0, 125 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000D @ personality - .string "PERSIAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_AZUMARILL, ITEM_QUICK_CLAW - .2byte MOVE_SURF, MOVE_ENCORE, MOVE_ATTRACT, MOVE_DIG - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 0, 255, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000000 @ personality - .string "AZUMARILL$", 11 - .byte 255 @ friendship - - .byte 0x4b, 0x55, 0x01 - - .align 2 -gUnknown_84808AC:: - .byte 0x19, 0x08, 0x00, 0x0c - .string "JARRETT$", 11 - .byte FACILITY_CLASS_JUGGLER, 0x02 - .align 1 - .2byte EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_PARTY, EC_WORD_EXCL - .2byte EC_WORD_CONGRATS, EC_WORD_FOR, EC_WORD_YOUR, EC_WORD_LOSS, EC_WORD_PARTY, EC_WORD_KID - .2byte EC_WORD_NICE, EC_MOVE(SELF_DESTRUCT), EC_WORD_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_PERFECT - .2byte EC_WORD_WANT, EC_WORD_TO, EC_WORD_PARTY, EC_WORD_SOME, EC_WORD_MORE, EC_WORD_QUES - - .align 2 - .2byte SPECIES_ELECTRODE, ITEM_FOCUS_BAND - .2byte MOVE_EXPLOSION, MOVE_LIGHT_SCREEN, MOVE_SCREECH, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 10, 150, 100, 150, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x0000000D @ personality - .string "ELECTRODE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_VOLTORB, ITEM_BRIGHT_POWDER - .2byte MOVE_EXPLOSION, MOVE_FLASH, MOVE_DOUBLE_TEAM, MOVE_THUNDER - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 255, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x0000000D @ personality - .string "VOLTORB$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_WEEZING, ITEM_SALAC_BERRY - .2byte MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_DESTINY_BOND, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 200, 155, 0, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "WEEZING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLEM, ITEM_SHELL_BELL - .2byte MOVE_EXPLOSION, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 100, 0, 0, 150 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000007F @ personality - .string "GOLEM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_EXEGGCUTE, ITEM_QUICK_CLAW - .2byte MOVE_EXPLOSION, MOVE_STUN_SPORE, MOVE_HYPNOSIS, MOVE_GIGA_DRAIN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "EXEGGCUTE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FORRETRESS, ITEM_LEFTOVERS - .2byte MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 155, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000084 @ personality - .string "FORRETRESS$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0x6a, 0x5b, 0x01 - - .align 2 -gUnknown_8480C8C:: - .byte 0x1a, 0x08, 0x00, 0x0d - .string "OWEN$", 11 - .byte FACILITY_CLASS_SUPER_NERD, 0x02 - .align 1 - .2byte EC_WORD_HERE_IT_IS, EC_MOVE2(THUNDER_WAVE), EC_WORD_DON_T, EC_MOVE2(WRAP), EC_WORD_ME, EC_WORD_EXCL - .2byte EC_WORD_ACCEPT, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_OF, EC_MOVE2(THUNDER_WAVE), EC_WORD_EXCL - .2byte EC_MOVE2(WRAP), EC_MOVE(BIND), EC_WORD_ELECTRIC, EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, EC_WORD_AROUND - .2byte EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, 0xFFFF, 0xFFFF, EC_WORD_SPIRALING, EC_MOVE2(WHIRLWIND) - - .align 2 - .2byte SPECIES_MAGNETON, ITEM_LEFTOVERS - .2byte MOVE_PROTECT, MOVE_ZAP_CANNON, MOVE_TOXIC, MOVE_SUPERSONIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 125, 255, 0, 130 @ EVs - .align 2 - trainerid 10, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x0000000A @ personality - .string "MAGNETON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PIKACHU, ITEM_LIGHT_BALL - .2byte MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 150, 0, 255, 105 @ EVs - .align 2 - trainerid 15, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "PIKACHU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_JOLTEON, ITEM_BRIGHT_POWDER - .2byte MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_DOUBLE_TEAM, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 100, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000037 @ personality - .string "JOLTEON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_BLISSEY, ITEM_LUM_BERRY - .2byte MOVE_THUNDER_WAVE, MOVE_BLIZZARD, MOVE_WATER_PULSE, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000005 @ personality - .string "BLISSEY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PORYGON2, ITEM_SALAC_BERRY - .2byte MOVE_THUNDER_WAVE, MOVE_ZAP_CANNON, MOVE_PSYCHIC, MOVE_RECOVER - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 125, 0, 255, 130 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000005 @ personality - .string "PORYGON2$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PORYGON, ITEM_LAX_INCENSE - .2byte MOVE_THUNDER_WAVE, MOVE_ZAP_CANNON, MOVE_DOUBLE_TEAM, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 5, 0 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000005 @ personality - .string "PORYGON$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0xec, 0x60, 0x01 - - .align 2 -gUnknown_848106C:: - .byte 0x1b, 0x08, 0x00, 0x01 - .string "LORENZO$", 11 - .byte FACILITY_CLASS_PSYCHIC_3, 0x01 - .align 1 - .2byte EC_WORD_THIS, EC_WORD_POWER, EC_WORD_IS, EC_WORD_NOW, EC_WORD_COMPLETE, EC_WORD_EXCL - .2byte EC_WORD_NO, EC_WORD_KEEN_EYE, EC_WORD_CAN, EC_WORD_STOP, EC_WORD_MY, EC_WORD_POWER - .2byte EC_WORD_HERE_IT_IS, EC_WORD_EXCL, EC_MOVE(KINESIS), EC_WORD_EXCL, EC_WORD_ELLIPSIS, EC_WORD_WHAT - .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_THE, EC_MOVE(KINESIS), EC_WORD_HALL_OF_FAME - - .align 2 - .2byte SPECIES_MR_MIME, ITEM_QUICK_CLAW - .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN, MOVE_REFLECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 100, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "MR. MIME$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HYPNO, ITEM_SALAC_BERRY - .2byte MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_PSYCHIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 0, 200, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000008C @ personality - .string "HYPNO$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ALAKAZAM, ITEM_CHOICE_BAND - .2byte MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_PSYCHIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 150, 155, 50 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "ALAKAZAM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GENGAR, ITEM_LEFTOVERS - .2byte MOVE_THUNDERBOLT, MOVE_SHADOW_BALL, MOVE_HYPNOSIS, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 200, 0, 100, 55, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000088 @ personality - .string "GENGAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GIRAFARIG, ITEM_LUM_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_BODY_SLAM, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 100, 155, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability - .4byte 0x00000003 @ personality - .string "GIRAFARIG$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_STARMIE, ITEM_APICOT_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_SURF, MOVE_RECOVER, MOVE_ICE_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 55, 250, 150, 55 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "STARMIE$", 11 - .byte 255 @ friendship - - dummy_tower_team - dummy_tower_team - .byte 0x4b, 0x62, 0x01 - - .align 2 -gUnknown_848144C:: - .byte 0x1c, 0x08, 0x01, 0x0b - .string "NIA & CARL$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x04 - .align 1 - .2byte EC_WORD_HERE_GOES, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_ROMANTIC, EC_WORD_HERO, EC_WORD_STRATEGY - .2byte EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_DIGITAL, EC_WORD_HYPER, EC_WORD_MODE, EC_WORD_POWER - .2byte EC_WORD_MY, EC_WORD_PERFECT, EC_WORD_STRATEGY, EC_WORD_WAS, EC_MOVE2(BEAT_UP), EC_WORD_QUES - .2byte EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_STRATEGY, EC_WORD_WAS, EC_WORD_DESTROYED, EC_WORD_ELLIPSIS - - .align 2 - .2byte SPECIES_MUK, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 155, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x00000007 @ personality - .string "MUK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GENGAR, ITEM_PETAYA_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY, MOVE_PSYCHIC, MOVE_EXPLOSION - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 155, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000015 @ personality - .string "GENGAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ALAKAZAM, ITEM_GANLON_BERRY - .2byte MOVE_THUNDER_PUNCH, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_REFLECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "ALAKAZAM$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_JOLTEON, ITEM_BRIGHT_POWDER - .2byte MOVE_THUNDERBOLT, MOVE_FLAIL, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 50, 100, 160, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000005 @ personality - .string "JOLTEON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ELECTRODE, ITEM_LIECHI_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_EXPLOSION, MOVE_MIRROR_COAT, MOVE_LIGHT_SCREEN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 55, 0, 100, 100, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000014 @ personality - .string "ELECTRODE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RAICHU, ITEM_SALAC_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_COUNTER, MOVE_REVERSAL, MOVE_LIGHT_SCREEN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 55, 255, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "RAICHU$", 11 - .byte 255 @ friendship - - .string "NIA & CARL$", 11 - .byte FACILITY_CLASS_COOL_COUPLE, 0x04 - .align 1 - .2byte EC_WORD_MASTER, EC_WORD_COMPLETE, EC_WORD_FASHION, EC_WORD_SYSTEM, EC_WORD_START, EC_WORD_EXCL - .2byte EC_WORD_THAT_S_IT_EXCL, EC_WORD_THE, EC_WORD_POWER, EC_WORD_OF, EC_WORD_OUR, EC_WORD_SYSTEM - .2byte EC_WORD_OKAY, EC_WORD_EXCL, EC_MOVE(THUNDERBOLT), EC_WORD_RUN_AWAY, EC_WORD_SYSTEM, EC_WORD_START - .2byte EC_WORD_GO, EC_WORD_ON, EC_WORD_PLEASE, EC_WORD_EXCL, EC_WORD_TCH, EC_WORD_ELLIPSIS - - .align 2 - .2byte SPECIES_KANGASKHAN, ITEM_SALAC_BERRY - .2byte MOVE_SHADOW_BALL, MOVE_REVERSAL, MOVE_ENDURE, MOVE_FAKE_OUT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 105, 0, 0, 150 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "KANGASKHAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TAUROS, ITEM_LUM_BERRY - .2byte MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_SURF, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 100, 0, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "TAUROS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MILTANK, ITEM_SALAC_BERRY - .2byte MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_MILK_DRINK, MOVE_ROCK_TOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 155, 50, 250, 0, 55 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "MILTANK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RHYDON, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_ROCK_TOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x00000080 @ personality - .string "RHYDON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DRAGONITE, ITEM_SCOPE_LENS - .2byte MOVE_BLIZZARD, MOVE_SURF, MOVE_OUTRAGE, MOVE_FLAMETHROWER - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 0, 255, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability - .4byte 0x00000091 @ personality - .string "DRAGONITE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_LAPRAS, ITEM_SHELL_BELL - .2byte MOVE_THUNDERBOLT, MOVE_BLIZZARD, MOVE_SURF, MOVE_HORN_DRILL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 0, 255, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability - .4byte 0x00000091 @ personality - .string "LAPRAS$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0x60, 0x63, 0x01 - - .align 2 -gUnknown_848182C:: - .byte 0x1d, 0x08, 0x01, 0x03 - .string "AXE & REN$", 11 - .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x02 - .align 1 - .2byte EC_WORD_IT_S, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_WORD_AWFULLY, EC_WORD_COLD - .2byte EC_WORD_THAT_S, EC_WORD_THAT, EC_WORD_MAN, EC_WORD_I_AM, EC_WORD_COLD, EC_WORD_EXCL - .2byte EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_ELLIPSIS - .2byte EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_HAS, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY - - .align 2 - .2byte SPECIES_LANTURN, ITEM_BRIGHT_POWDER - .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_THUNDER, MOVE_ICE_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 255, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "LANTURN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MANTINE, ITEM_PETAYA_BERRY - .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ICE_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 155, 100, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000014 @ personality - .string "MANTINE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DEWGONG, ITEM_LEFTOVERS - .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_SHEER_COLD, MOVE_BLIZZARD - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 100, 0, 255, 55 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000011 @ personality - .string "DEWGONG$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CLOYSTER, ITEM_KINGS_ROCK - .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_ICE_BEAM, MOVE_HYPER_BEAM - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000011 @ personality - .string "CLOYSTER$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TENTACRUEL, ITEM_QUICK_CLAW - .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 100, 100, 255, 55 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "TENTACRUEL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GYARADOS, ITEM_LIECHI_BERRY - .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_DRAGON_DANCE, MOVE_RETURN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "GYARADOS$", 11 - .byte 255 @ friendship - - .string "AXE & REN$", 11 - .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x02 - .align 1 - .2byte EC_WORD_OUR, EC_WORD_SWIFT_SWIM, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_COLD - .2byte EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_HOT - .2byte EC_WORD_I_AM, EC_WORD_HUNGRY, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_HOT, EC_WORD_EATS - .2byte EC_WORD_SISTER, EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_HOT, EC_WORD_PLEASE - - .align 2 - .2byte SPECIES_ELECTABUZZ, ITEM_SCOPE_LENS - .2byte MOVE_THUNDER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_LIGHT_SCREEN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 155, 155, 100, 100, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000040 @ personality - .string "ELECTABUZZ$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGNETON, ITEM_PETAYA_BERRY - .2byte MOVE_THUNDER, MOVE_SONIC_BOOM, MOVE_METAL_SOUND, MOVE_REFLECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 255, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x0000000A @ personality - .string "MAGNETON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PORYGON, ITEM_LEFTOVERS - .2byte MOVE_THUNDER, MOVE_PSYCHIC, MOVE_BLIZZARD, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 255, 0, 0, 0, 255, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000011 @ personality - .string "PORYGON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_DRAGONAIR, ITEM_SHELL_BELL - .2byte MOVE_THUNDER, MOVE_SURF, MOVE_BLIZZARD, MOVE_OUTRAGE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 50, 155, 255, 50 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "DRAGONAIR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PERSIAN, ITEM_SHELL_BELL - .2byte MOVE_THUNDER, MOVE_FAKE_OUT, MOVE_WATER_PULSE, MOVE_RETURN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 155, 0, 200, 155, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000B @ personality - .string "PERSIAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_STARMIE, ITEM_GANLON_BERRY - .2byte MOVE_THUNDER, MOVE_SURF, MOVE_RECOVER, MOVE_REFLECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 95, 255, 100, 60 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000005 @ personality - .string "STARMIE$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0x72, 0x52, 0x01 - - .align 2 -gUnknown_8481C0C:: - .byte 0x1e, 0x08, 0x01, 0x05 - .string "KATI & GEB$", 11 - .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x02 - .align 1 - .2byte EC_WORD_WELCOME, EC_WORD_TO, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_MOVE2(THUNDER_WAVE), EC_MOVE(SANDSTORM) - .2byte EC_WORD_LALALA, EC_WORD_LALALA, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LALALA, EC_WORD_LIFE - .2byte EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_MY, EC_MOVE2(FRUSTRATION) - .2byte EC_WORD_YOU_RE, EC_WORD_JUST, EC_WORD_A_LITTLE, EC_WORD_KID, EC_WORD_AHAHA, EC_WORD_EXCL - - .align 2 - .2byte SPECIES_FLAAFFY, ITEM_LEFTOVERS - .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_THUNDERBOLT, MOVE_REFLECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000084 @ personality - .string "FLAAFFY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_QUAGSIRE, ITEM_QUICK_CLAW - .2byte MOVE_ATTRACT, MOVE_SURF, MOVE_AMNESIA, MOVE_BLIZZARD - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 100, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000093 @ personality - .string "QUAGSIRE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PIKACHU, ITEM_SALAC_BERRY - .2byte MOVE_ATTRACT, MOVE_REVERSAL, MOVE_THUNDERBOLT, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 155, 100, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "PIKACHU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ELECTABUZZ, ITEM_LIECHI_BERRY - .2byte MOVE_ATTRACT, MOVE_COUNTER, MOVE_ICE_PUNCH, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 150, 255, 0, 105 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000046 @ personality - .string "ELECTABUZZ$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOGETIC, ITEM_KINGS_ROCK - .2byte MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_ANCIENT_POWER, MOVE_WATER_PULSE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x0000002D @ personality - .string "TOGETIC$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GOLDUCK, ITEM_SCOPE_LENS - .2byte MOVE_ATTRACT, MOVE_SURF, MOVE_DIG, MOVE_CROSS_CHOP - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 155, 50, 255, 0, 50 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000080 @ personality - .string "GOLDUCK$", 11 - .byte 255 @ friendship - - .string "KATI & GEB$", 11 - .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x02 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_PLUS, EC_WORD_YOU_RE, EC_WORD_MINUS, EC_WORD_LOVEY_DOVEY, EC_WORD_MAGNET_PULL - .2byte EC_WORD_DON_T, EC_WORD_STOP, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LOCOMOTIVE, EC_WORD_EXCL - .2byte EC_WORD_HIS, EC_WORD_CRY, EC_WORD_HAS, EC_WORD_CUTE_CHARM, EC_WORD_TOO, EC_WORD_EXCL - .2byte EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_TIME, EC_WORD_TO, EC_WORD_TALK, EC_WORD_QUES - - .align 2 - .2byte SPECIES_PICHU, ITEM_FOCUS_BAND - .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_SWEET_KISS, MOVE_REVERSAL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 255, 0, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000003 @ personality - .string "PICHU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ELEKID, ITEM_BRIGHT_POWDER - .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 130, 0, 0, 125 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "ELEKID$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_TOGEPI, ITEM_FOCUS_BAND - .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_YAWN, MOVE_WATER_PULSE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x0000000F @ personality - .string "TOGEPI$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PSYDUCK, ITEM_BRIGHT_POWDER - .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_DIG, MOVE_DIVE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "PSYDUCK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAREEP, ITEM_BRIGHT_POWDER - .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_LIGHT_SCREEN, MOVE_THUNDERBOLT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "MAREEP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_WOOPER, ITEM_FOCUS_BAND - .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_SURF, MOVE_YAWN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability - .4byte 0x00000007 @ personality - .string "WOOPER$", 11 - .byte 255 @ friendship - - dummy_tower_team - .byte 0x66, 0x59, 0x01 - - .align 2 -gUnknown_8481FEC:: - .byte 0x1f, 0x08, 0x02, 0x07 - .string "BEN$", 11 - .byte FACILITY_CLASS_ROCKER, 0x01 - .align 1 - .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER - .2byte EC_WORD_STATIC, EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YES, EC_WORD_IT, EC_WORD_IS - .2byte EC_WORD_ELECTRIC, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_TELEVISION, EC_WORD_I_AM - .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_WORD_NATURAL, EC_WORD_POWER - - .align 2 - .2byte SPECIES_ELECTRODE, ITEM_LIECHI_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_MIRROR_COAT, MOVE_EXPLOSION, MOVE_THUNDER_WAVE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 55, 255, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000014 @ personality - .string "ELECTRODE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_ELECTABUZZ, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_PSYCHIC, MOVE_ICE_PUNCH - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 155, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000F @ personality - .string "ELECTABUZZ$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_LANTURN, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_HYDRO_PUMP - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 125, 0, 255, 130 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000008E @ personality - .string "LANTURN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAGNETON, ITEM_LIECHI_BERRY - .2byte MOVE_ZAP_CANNON, MOVE_HYPER_BEAM, MOVE_LOCK_ON, MOVE_SUPERSONIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 200, 255, 0, 55 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000014 @ personality - .string "MAGNETON$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RAICHU, ITEM_SALAC_BERRY - .2byte MOVE_DOUBLE_EDGE, MOVE_MEGA_KICK, MOVE_REVERSAL, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 80, 100, 0, 75 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000008A @ personality - .string "RAICHU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_AMPHAROS, ITEM_SHELL_BELL - .2byte MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_COUNTER, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 200, 150, 0, 10, 150 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "AMPHAROS$", 11 - .byte 255 @ friendship - - .string "CAMDEN$", 11 - .byte FACILITY_CLASS_ENGINEER, 0x01 - .align 1 - .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER - .2byte EC_WORD_A, EC_MOVE(THUNDERBOLT), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_TOO, EC_WORD_EXCL - .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_WIRELESS, EC_WORD_LINK - .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_WORD_TREASURE, EC_WORD_EXCL - - .align 2 - .2byte SPECIES_GRANBULL, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 55, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "GRANBULL$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PERSIAN, ITEM_SCOPE_LENS - .2byte MOVE_THUNDERBOLT, MOVE_WATER_PULSE, MOVE_HYPNOSIS, MOVE_SLASH - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 55, 255, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "PERSIAN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_LICKITUNG, ITEM_LEFTOVERS - .2byte MOVE_PROTECT, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL - .byte 0, 0x00 @ level, ppBonuses - .byte 200, 255, 0, 0, 55, 0 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "LICKITUNG$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RATICATE, ITEM_SALAC_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_HYPER_FANG, MOVE_SUPER_FANG, MOVE_REVERSAL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 100, 50, 0, 105 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000094 @ personality - .string "RATICATE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PRIMEAPE, ITEM_SCOPE_LENS - .2byte MOVE_THUNDERBOLT, MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 130, 0, 0, 125 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "PRIMEAPE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_KANGASKHAN, ITEM_LUM_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_SURF, MOVE_CRUSH_CLAW, MOVE_REST - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 100, 155, 0, 100, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000011 @ personality - .string "KANGASKHAN$", 11 - .byte 255 @ friendship - - .string "ZACKERY$", 11 - .byte FACILITY_CLASS_SCIENTIST, 0x01 - .align 1 - .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER - .2byte EC_MOVE2(THUNDER_SHOCK), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES - .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_WORD_EXCL_EXCL - .2byte EC_WORD_ALL, EC_WORD_TOGETHER, EC_WORD_NOW, EC_WORD_EXCL, EC_MOVE(SPARK), EC_MOVE(SPARK) - - .align 2 - .2byte SPECIES_WEEZING, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_SHADOW_BALL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 0, 0, 155, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "WEEZING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MUK, ITEM_LEFTOVERS - .2byte MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN, MOVE_CURSE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 150, 0, 255, 105 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability - .4byte 0x00000084 @ personality - .string "MUK$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_GENGAR, ITEM_PETAYA_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_WILL_O_WISP - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 250, 155, 105 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "GENGAR$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MISDREAVUS, ITEM_SALAC_BERRY - .2byte MOVE_PSYCHIC, MOVE_GRUDGE, MOVE_CONFUSE_RAY, MOVE_DESTINY_BOND - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 0, 150, 105, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x0000000A @ personality - .string "MISDREAVUS$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CROBAT, ITEM_BRIGHT_POWDER - .2byte MOVE_SLUDGE_BOMB, MOVE_CONFUSE_RAY, MOVE_GIGA_DRAIN, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 200, 110, 0, 200 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000087 @ personality - .string "CROBAT$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_HAUNTER, ITEM_SALAC_BERRY - .2byte MOVE_DESTINY_BOND, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_TOXIC - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 100, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability - .4byte 0x00000091 @ personality - .string "HAUNTER$", 11 - .byte 255 @ friendship - - .byte 0x49, 0x4f, 0x01 - - .align 2 -gUnknown_84823CC:: - .byte 0x20, 0x08, 0x02, 0x0e - .string "MAURA$", 11 - .byte FACILITY_CLASS_BEAUTY_2, 0x02 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_THE, EC_WORD_GROUP, EC_WORD_LEADER, EC_WORD_EXCL, 0xFFFF - .2byte EC_WORD_WHAT, EC_WORD_AM, EC_WORD_I, EC_WORD_LEADER, EC_WORD_OF, EC_WORD_QUES - .2byte EC_WORD_I_AM, EC_WORD_NO, EC_WORD_LEADER, EC_WORD_IT_S, EC_WORD_A_LITTLE, EC_WORD_LIE - .2byte EC_WORD_HEY, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_GROUND, EC_WORD_IS, EC_WORD_SLIMY - - .align 2 - .2byte SPECIES_PICHU, ITEM_FOCUS_BAND - .2byte MOVE_THUNDER_SHOCK, MOVE_THUNDER_WAVE, MOVE_SWEET_KISS, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000005 @ personality - .string "PICHU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_MAREEP, ITEM_BRIGHT_POWDER - .2byte MOVE_THUNDER_SHOCK, MOVE_CHARGE, MOVE_PROTECT, MOVE_RETURN - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "MAREEP$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_IGGLYBUFF, ITEM_QUICK_CLAW - .2byte MOVE_SING, MOVE_SWEET_KISS, MOVE_PRESENT, MOVE_PROTECT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "IGGLYBUFF$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CLEFFA, ITEM_LAX_INCENSE - .2byte MOVE_SING, MOVE_SWEET_KISS, MOVE_ENCORE, MOVE_METRONOME - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "CLEFFA$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDORAN_F, ITEM_SITRUS_BERRY - .2byte MOVE_CRUNCH, MOVE_DIG, MOVE_FLATTER, MOVE_ATTRACT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "NIDORAN♀$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDORAN_M, ITEM_SITRUS_BERRY - .2byte MOVE_HORN_DRILL, MOVE_SLUDGE_BOMB, MOVE_FLATTER, MOVE_ATTRACT - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 255, 0, 0, 255 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "NIDORAN♂$", 11 - .byte 255 @ friendship - - .string "MIKAELA$", 11 - .byte FACILITY_CLASS_LASS_2, 0x01 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_THE, EC_WORD_NO_1, EC_WORD_TRAINER, EC_WORD_HERE - .2byte EC_WORD_NEVER, EC_WORD_SAID, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_AT - .2byte EC_WORD_NEXT, EC_WORD_TIME, EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_OVERWHELMING - .2byte EC_WORD_YOU, EC_MOVE2(SPIT_UP), EC_WORD_ME, EC_WORD_AS_IF, EC_WORD_I_AM, EC_WORD_NOTHING - - .align 2 - .2byte SPECIES_NIDORINO, ITEM_CHOICE_BAND - .2byte MOVE_SHOCK_WAVE, MOVE_HORN_DRILL, MOVE_ICE_BEAM, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 0, 255, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "NIDORINO$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDORINA, ITEM_CHOICE_BAND - .2byte MOVE_SHOCK_WAVE, MOVE_CRUNCH, MOVE_BODY_SLAM, MOVE_COUNTER - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 155, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "NIDORINA$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_PIKACHU, ITEM_LIGHT_BALL - .2byte MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COUNTER, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 200, 0, 255, 55 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000011 @ personality - .string "PIKACHU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_FLAAFFY, ITEM_BRIGHT_POWDER - .2byte MOVE_SHOCK_WAVE, MOVE_DOUBLE_TEAM, MOVE_SEISMIC_TOSS, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 100, 0, 0, 150 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "FLAAFFY$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_JIGGLYPUFF, ITEM_CHOICE_BAND - .2byte MOVE_SHOCK_WAVE, MOVE_SHADOW_BALL, MOVE_FOCUS_PUNCH, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 150, 0, 0, 105 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000016 @ personality - .string "JIGGLYPUFF$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CLEFAIRY, ITEM_CHOICE_BAND - .2byte MOVE_SHOCK_WAVE, MOVE_METEOR_MASH, MOVE_MOONLIGHT, MOVE_BODY_SLAM - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 100, 0, 0, 155 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "CLEFAIRY$", 11 - .byte 255 @ friendship - - .string "FLINT$", 11 - .byte FACILITY_CLASS_ENGINEER, 0x04 - .align 1 - .2byte EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(MILK_DRINK), EC_WORD_WORLD, EC_WORD_LEADER, EC_WORD_EXCL - .2byte EC_WORD_I_VE, EC_WORD_WON, EC_WORD_THIS, EC_MOVE2(MILK_DRINK), EC_WORD_MATCH, EC_WORD_EXCL - .2byte EC_WORD_I, EC_WORD_CAN_T, EC_WORD_DRINK, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_DRINKS - .2byte EC_WORD_WHOAH, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_DROOLING, EC_WORD_ALL, EC_WORD_OVER - - .align 2 - .2byte SPECIES_WIGGLYTUFF, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_WATER_PULSE, MOVE_FLAMETHROWER - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 0, 155, 0, 255, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x000000CF @ personality - .string "WIGGLYTUFF$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_CLEFABLE, ITEM_SALAC_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_SOFT_BOILED, MOVE_METEOR_MASH, MOVE_DOUBLE_EDGE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 100, 0, 0, 150 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x000000CF @ personality - .string "CLEFABLE$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDOQUEEN, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_SUPERPOWER, MOVE_SURF - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 200, 110, 0, 100, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000007 @ personality - .string "NIDOQUEEN$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_NIDOKING, ITEM_CHOICE_BAND - .2byte MOVE_THUNDERBOLT, MOVE_HYPER_BEAM, MOVE_MEGAHORN, MOVE_SHADOW_BALL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 150, 0, 0, 100 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000002 @ personality - .string "NIDOKING$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_RAICHU, ITEM_SALAC_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 155, 150, 100, 0, 105 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "RAICHU$", 11 - .byte 255 @ friendship - - .align 2 - .2byte SPECIES_AMPHAROS, ITEM_LUM_BERRY - .2byte MOVE_THUNDERBOLT, MOVE_REST, MOVE_BODY_SLAM, MOVE_IRON_TAIL - .byte 0, 0x00 @ level, ppBonuses - .byte 0, 255, 150, 0, 0, 105 @ EVs - .align 2 - trainerid 0, 4096 @ OT ID - ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability - .4byte 0x00000080 @ personality - .string "AMPHAROS$", 11 - .byte 255 @ friendship - - .byte 0x80, 0x6b, 0x01 - - .align 2 -gUnknown_84827AC:: @ 84827AC - .byte 0x08, 0x01 - .2byte 0 - .4byte 0 - -gUnknown_84827B4:: @ 84827B4 - .4byte gUnknown_847F16C - .4byte gUnknown_847D26C - .4byte gUnknown_84808AC - .4byte gUnknown_847ABAC - .4byte gUnknown_847CAAC - .4byte gUnknown_847E9AC - .4byte gUnknown_847AF8C - .4byte gUnknown_847CE8C - .4byte gUnknown_847DA2C - .4byte gUnknown_847BF0C - .4byte gUnknown_847D64C - .4byte gUnknown_847DE0C - .4byte gUnknown_847B74C - .4byte gUnknown_847BB2C - .4byte gUnknown_848182C - .4byte gUnknown_847F92C - .4byte gUnknown_847C2EC - .4byte gUnknown_847C6CC - .4byte gUnknown_847E5CC - .4byte gUnknown_84804CC - .4byte gUnknown_84823CC - .4byte gUnknown_8481FEC - .4byte gUnknown_84800EC - .4byte gUnknown_847E1EC - .4byte gUnknown_847ED8C - .4byte gUnknown_848106C - .4byte gUnknown_8480C8C - .4byte gUnknown_847F92C - .4byte gUnknown_847F54C - .4byte gUnknown_847E1EC - .4byte gUnknown_847D64C - .4byte gUnknown_847C6CC diff --git a/include/cereader_tool.h b/include/cereader_tool.h index dd1866fb3..c7d1fcca9 100644 --- a/include/cereader_tool.h +++ b/include/cereader_tool.h @@ -8,7 +8,7 @@ struct TrainerTowerTrainer { /* 0x000 */ u8 name[11]; /* 0x00B */ u8 facilityClass; - /* 0x00C */ u8 gender; + /* 0x00C */ u8 textColor; /* 0x00E */ u16 speechBefore[6]; /* 0x01A */ u16 speechWin[6]; /* 0x026 */ u16 speechLose[6]; @@ -18,7 +18,7 @@ struct TrainerTowerTrainer struct TrainerTowerFloor { - /* 0x000 */ u8 unk_000; + /* 0x000 */ u8 flags; /* 0x001 */ u8 floorIdx; /* 0x002 */ u8 challengeType; /* 0x003 */ u8 prize; diff --git a/include/constants/trainer_tower.h b/include/constants/trainer_tower.h index 6372a30e8..823adcf3e 100644 --- a/include/constants/trainer_tower.h +++ b/include/constants/trainer_tower.h @@ -4,6 +4,7 @@ #define CHALLENGE_TYPE_SINGLE 0 #define CHALLENGE_TYPE_DOUBLE 1 #define CHALLENGE_TYPE_KNOCKOUT 2 +#define CHALLENGE_TYPE_MIXED 3 // Mixed challenges use one of the above 3 for each floor #define CHALLENGE_STATUS_LOST 0 diff --git a/ld_script.txt b/ld_script.txt index 9e2b1415f..8553737f3 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -609,6 +609,7 @@ SECTIONS { src/minigame_countdown.o(.rodata); src/berry_fix_program.o(.rodata); src/keyboard_text.o(.rodata); + src/trainer_tower_sets.o(.rodata); data/data_8479668.o(.rodata); /* These should not be moved to C files */ diff --git a/src/trainer_tower.c b/src/trainer_tower.c index b39782297..38d3f9ab6 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -19,13 +19,13 @@ #include "constants/event_objects.h" #include "constants/trainer_tower.h" -#define CURR_FLOOR sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx] +#define CURR_FLOOR sTrainerTowerState->data.floors[sTrainerTowerState->floorIdx] #define TRAINER_TOWER gSaveBlock1Ptr->trainerTower[gSaveBlock1Ptr->towerChallengeId] -struct UnkStruct_203F458 +struct TrainerTowerState { /* 0x0000 */ u8 floorIdx; - /* 0x0004 */ struct EReaderTrainerTowerSet unk_0004; + /* 0x0004 */ struct EReaderTrainerTowerSet data; }; struct TrainerTowerOpponent @@ -37,7 +37,7 @@ struct TrainerTowerOpponent /* 0x30 */ u16 speechLose2[6]; /* 0x3C */ u8 battleType; /* 0x3D */ u8 facilityClass; - /* 0x3E */ u8 gender; + /* 0x3E */ u8 textColor; }; struct SinglesTrainerInfo @@ -52,8 +52,8 @@ struct DoublesTrainerInfo u8 objGfx1; u8 objGfx2; u8 facilityClass; - bool8 gender1; - bool8 gender2; + bool8 textColor1; + bool8 textColor2; }; struct TrainerEncounterMusicPairs @@ -62,7 +62,7 @@ struct TrainerEncounterMusicPairs u8 musicId; }; -static EWRAM_DATA struct UnkStruct_203F458 * sTrainerTowerState = NULL; +static EWRAM_DATA struct TrainerTowerState * sTrainerTowerState = NULL; static EWRAM_DATA struct TrainerTowerOpponent * sTrainerTowerOpponent = NULL; static EWRAM_DATA u8 sUnused_203F460 = 0; @@ -422,8 +422,8 @@ static const u8 sKnockoutChallengeMonIdxs[][3] = { {0x01, 0x04, 0x05} }; -extern const struct EReaderTrainerTowerSetSubstruct gUnknown_84827AC; -extern const struct TrainerTowerFloor *const gUnknown_84827B4[][MAX_TRAINER_TOWER_FLOORS]; +extern const struct EReaderTrainerTowerSetSubstruct gTrainerTowerLocalHeader; +extern const struct TrainerTowerFloor *const gTrainerTowerFloors[][MAX_TRAINER_TOWER_FLOORS]; void CallTrainerTowerFunc(void) { @@ -471,7 +471,7 @@ void InitTrainerTowerBattleStruct(void) sTrainerTowerOpponent->battleType = CURR_FLOOR.challengeType; sTrainerTowerOpponent->facilityClass = CURR_FLOOR.trainers[trainerId].facilityClass; - sTrainerTowerOpponent->gender = CURR_FLOOR.trainers[trainerId].gender; + sTrainerTowerOpponent->textColor = CURR_FLOOR.trainers[trainerId].textColor; SetVBlankCounter1Ptr(&TRAINER_TOWER.timer); FreeTrainerTowerDataStruct(); } @@ -510,18 +510,18 @@ static void SetUpTrainerTowerDataStruct(void) sTrainerTowerState = AllocZeroed(sizeof(*sTrainerTowerState)); sTrainerTowerState->floorIdx = gMapHeader.mapLayoutId - LAYOUT_TRAINER_TOWER_1F; if (ReadTrainerTowerAndValidate() == TRUE) - CEReaderTool_LoadTrainerTower(&sTrainerTowerState->unk_0004); + CEReaderTool_LoadTrainerTower(&sTrainerTowerState->data); else { - struct UnkStruct_203F458 * r0_ = sTrainerTowerState; - const struct EReaderTrainerTowerSetSubstruct * r1 = &gUnknown_84827AC; - memcpy(&r0_->unk_0004, r1, sizeof(struct EReaderTrainerTowerSetSubstruct)); - r7 = gUnknown_84827B4[challengeType]; + struct TrainerTowerState * r0_ = sTrainerTowerState; + const struct EReaderTrainerTowerSetSubstruct * r1 = &gTrainerTowerLocalHeader; + memcpy(&r0_->data, r1, sizeof(struct EReaderTrainerTowerSetSubstruct)); + r7 = gTrainerTowerFloors[challengeType]; for (r4 = 0; r4 < MAX_TRAINER_TOWER_FLOORS; r4++) { - *(sTrainerTowerState->unk_0004.floors + r4) = *(r7[r4]); // manual pointer arithmetic needed to match + *(sTrainerTowerState->data.floors + r4) = *(r7[r4]); // manual pointer arithmetic needed to match } - sTrainerTowerState->unk_0004.checksum = CalcByteArraySum((void *)sTrainerTowerState->unk_0004.floors, sizeof(sTrainerTowerState->unk_0004.floors)); + sTrainerTowerState->data.checksum = CalcByteArraySum((void *)sTrainerTowerState->data.floors, sizeof(sTrainerTowerState->data.floors)); ValidateOrResetCurTrainerTowerRecord(); } } @@ -533,7 +533,7 @@ static void FreeTrainerTowerDataStruct(void) static void InitTrainerTowerFloor(void) { - if (gMapHeader.mapLayoutId - LAYOUT_TRAINER_TOWER_LOBBY > sTrainerTowerState->unk_0004.numFloors) + if (gMapHeader.mapLayoutId - LAYOUT_TRAINER_TOWER_LOBBY > sTrainerTowerState->data.numFloors) { gSpecialVar_Result = 3; // Skip past usable challenge types SetCurrentMapLayout(LAYOUT_TRAINER_TOWER_ROOF); @@ -667,7 +667,7 @@ static void BufferTowerOpponentSpeech(void) static void TrainerTowerGetOpponentTextColor(u8 challengeType, u8 facilityClass) { - u16 gender = MALE; + u16 textColor = MALE; int i; switch (challengeType) { @@ -679,7 +679,7 @@ static void TrainerTowerGetOpponentTextColor(u8 challengeType, u8 facilityClass) break; } if (i != NELEMS(sSingleBattleTrainerInfo)) - gender = sSingleBattleTrainerInfo[i].gender; + textColor = sSingleBattleTrainerInfo[i].gender; break; case CHALLENGE_TYPE_DOUBLE: for (i = 0; i < NELEMS(sDoubleBattleTrainerInfo); i++) @@ -690,14 +690,14 @@ static void TrainerTowerGetOpponentTextColor(u8 challengeType, u8 facilityClass) if (i != NELEMS(sDoubleBattleTrainerInfo)) { if (VarGet(VAR_TEMP_3)) - gender = sDoubleBattleTrainerInfo[i].gender2; + textColor = sDoubleBattleTrainerInfo[i].textColor2; else - gender = sDoubleBattleTrainerInfo[i].gender1; + textColor = sDoubleBattleTrainerInfo[i].textColor1; } break; } gSpecialVar_PrevTextColor = gSpecialVar_TextColor; - gSpecialVar_TextColor = gender; + gSpecialVar_TextColor = textColor; } static void CB2_EndTrainerTowerBattle(void) @@ -784,7 +784,7 @@ static void GetOwnerState(void) static void GiveChallengePrize(void) { - u16 itemId = sPrizeList[sTrainerTowerState->unk_0004.floors->prize]; + u16 itemId = sPrizeList[sTrainerTowerState->data.floors->prize]; if (TRAINER_TOWER.receivedPrize) { @@ -922,9 +922,9 @@ static void TrainerTowerGetDoublesEligiblity(void) static void TrainerTowerGetNumFloors(void) { - if (sTrainerTowerState->unk_0004.numFloors != sTrainerTowerState->unk_0004.floors[0].floorIdx) + if (sTrainerTowerState->data.numFloors != sTrainerTowerState->data.floors[0].floorIdx) { - ConvertIntToDecimalStringN(gStringVar1, sTrainerTowerState->unk_0004.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1); + ConvertIntToDecimalStringN(gStringVar1, sTrainerTowerState->data.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1); gSpecialVar_Result = TRUE; } else @@ -1029,9 +1029,9 @@ static s32 GetPartyMaxLevel(void) static void ValidateOrResetCurTrainerTowerRecord(void) { - if (TRAINER_TOWER.unk9 != sTrainerTowerState->unk_0004.id) + if (TRAINER_TOWER.unk9 != sTrainerTowerState->data.id) { - TRAINER_TOWER.unk9 = sTrainerTowerState->unk_0004.id; + TRAINER_TOWER.unk9 = sTrainerTowerState->data.id; SetTrainerTowerRecordTime(&TRAINER_TOWER.bestTime, TRAINER_TOWER_MAX_TIME); TRAINER_TOWER.receivedPrize = FALSE; } diff --git a/src/trainer_tower_sets.c b/src/trainer_tower_sets.c new file mode 100644 index 000000000..ceadafa08 --- /dev/null +++ b/src/trainer_tower_sets.c @@ -0,0 +1,8995 @@ +#include "global.h" +#include "cereader_tool.h" +#include "trainer_tower.h" +#include "constants/easy_chat.h" +#include "constants/items.h" +#include "constants/moves.h" +#include "constants/trainer_tower.h" +#include "constants/facility_trainer_classes.h" + +#define DUMMY_TOWER_MON(iv) ((struct BattleTowerPokemon){.hpIV = iv, .attackIV = iv, .defenseIV = iv, .speedIV = iv, .spAttackIV = iv, .spDefenseIV = iv, .nickname = _("$$$$$$$$$$")}) +#define DUMMY_TOWER_TEAM(iv) ((struct TrainerTowerTrainer){.name = _(), .textColor = 1, .speechBefore = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechAfter = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .mons = {DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv)}}) + +static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { + .flags = 0x01, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x07, + .trainers = { + { + .name = _("COLE"), + .facilityClass = FACILITY_CLASS_YOUNGSTER_2, + .textColor = 1, + .speechBefore = {EC_WORD_AHAHA, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_ANYWHERE, EC_WORD_EXCL}, + .speechWin = {EC_WORD_ALL_RIGHT, EC_WORD_EXCL, EC_WORD_BYE_BYE, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_HIYAH, EC_WORD_EXCL_EXCL, EC_WORD_DONE, EC_WORD_IN, EC_WORD_TOTALLY, EC_WORD_EXCL_EXCL}, + .speechAfter = {EC_WORD_TCH, EC_WORD_TCH, EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF, 0xFFFF}, + .mons = { + { + .species = SPECIES_RATICATE, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_SHOCK_WAVE, MOVE_HYPER_FANG, MOVE_SCARY_FACE, MOVE_ENDEAVOR}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000016, + .nickname = _("RATICATE"), + .friendship = 255 + }, + { + .species = SPECIES_MAGMAR, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_FIRE_PUNCH, MOVE_SUNNY_DAY, MOVE_SMOG, MOVE_STRENGTH}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 210, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000056, + .nickname = _("MAGMAR"), + .friendship = 255 + }, + { + .species = SPECIES_MAGCARGO, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_FLAMETHROWER, MOVE_AMNESIA, MOVE_BODY_SLAM, MOVE_HARDEN}, + .hpEV = 110, + .attackEV = 200, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 200, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000002, + .nickname = _("MAGCARGO"), + .friendship = 255 + }, + { + .species = SPECIES_PRIMEAPE, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_OVERHEAT, MOVE_SEISMIC_TOSS, MOVE_SWAGGER, MOVE_KARATE_CHOP}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 210, + .spAttackEV = 200, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000087, + .nickname = _("PRIMEAPE"), + .friendship = 255 + }, + { + .species = SPECIES_GOLBAT, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SLUDGE_BOMB, MOVE_MEAN_LOOK}, + .hpEV = 0, + .attackEV = 200, + .defenseEV = 0, + .speedEV = 110, + .spAttackEV = 200, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000081, + .nickname = _("GOLBAT"), + .friendship = 255 + }, + { + .species = SPECIES_SLOWBRO, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_SUNNY_DAY, MOVE_YAWN, MOVE_FLAMETHROWER, MOVE_CONFUSION}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 210, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000011, + .nickname = _("SLOWBRO"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016aab +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { + .flags = 0x02, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x0d, + .trainers = { + { + .name = _("JAC"), + .facilityClass = FACILITY_CLASS_BURGLAR, + .textColor = 1, + .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_MOVE2(THIEF), EC_WORD_EXCL, EC_WORD_GIVE_ME, EC_WORD_SOMETHING}, + .speechWin = {EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_NOTHING, EC_WORD_THAT, EC_WORD_I, EC_WORD_WANT}, + .speechLose = {EC_WORD_EEK, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_I, EC_WORD_SURRENDER}, + .speechAfter = {EC_WORD_I, EC_WORD_WILL, EC_WORD_STOP, EC_WORD_BEING, EC_WORD_A, EC_MOVE2(THIEF)}, + .mons = { + { + .species = SPECIES_MEOWTH, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_SWAGGER, MOVE_SUBSTITUTE, MOVE_FAKE_OUT, MOVE_SLASH}, + .hpEV = 200, + .attackEV = 110, + .defenseEV = 0, + .speedEV = 200, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 138 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("MEOWTH"), + .friendship = 255 + }, + { + .species = SPECIES_FLAREON, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_FLAMETHROWER, MOVE_BITE, MOVE_SAND_ATTACK, MOVE_FIRE_SPIN}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 200, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("FLAREON"), + .friendship = 255 + }, + { + .species = SPECIES_PORYGON, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_TRI_ATTACK, MOVE_RECYCLE, MOVE_PSYBEAM, MOVE_CONVERSION_2}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 210, + .speedEV = 0, + .spAttackEV = 200, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("PORYGON"), + .friendship = 255 + }, + { + .species = SPECIES_CHANSEY, + .heldItem = ITEM_LUCKY_PUNCH, + .moves = {MOVE_FLAMETHROWER, MOVE_LIGHT_SCREEN, MOVE_BODY_SLAM, MOVE_MINIMIZE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000010, + .nickname = _("CHANSEY"), + .friendship = 255 + }, + { + .species = SPECIES_FARFETCHD, + .heldItem = ITEM_STICK, + .moves = {MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_FLY, MOVE_SAND_ATTACK}, + .hpEV = 100, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 110, + .otId = 133 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000085, + .nickname = _("FARFETCH'D"), + .friendship = 255 + }, + { + .species = SPECIES_MR_MIME, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_SUBSTITUTE, MOVE_SHOCK_WAVE, MOVE_LIGHT_SCREEN, MOVE_BRICK_BREAK}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 130 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000082, + .nickname = _("MR. MIME"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016456 +}; + +static const struct TrainerTowerFloor gUnknown_847B36C = { + .flags = 0x03, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x02, + .trainers = { + { + .name = _("MILY"), + .facilityClass = FACILITY_CLASS_PSYCHIC_4, + .textColor = 1, + .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(SUPERPOWER), EC_WORD_EXCL}, + .speechWin = {EC_WORD_ISN_T, EC_WORD_IT, EC_WORD_INCREDIBLE, EC_WORD_QUES, EC_WORD_POKEMON, EC_WORD_POWER}, + .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_ELLIPSIS_EXCL}, + .speechAfter = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_DREAM, EC_WORD_NOTHING, EC_WORD_MORE}, + .mons = { + { + .species = SPECIES_CHANSEY, + .heldItem = ITEM_ORAN_BERRY, + .moves = {MOVE_LIGHT_SCREEN, MOVE_EGG_BOMB, MOVE_MINIMIZE, MOVE_SECRET_POWER}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000008, + .nickname = _("CHANSEY"), + .friendship = 255 + }, + { + .species = SPECIES_CLEFABLE, + .heldItem = ITEM_ORAN_BERRY, + .moves = {MOVE_METRONOME, MOVE_REFLECT, MOVE_SING, MOVE_POUND}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("CLEFABLE"), + .friendship = 255 + }, + { + .species = SPECIES_TOGETIC, + .heldItem = ITEM_ORAN_BERRY, + .moves = {MOVE_METRONOME, MOVE_REFLECT, MOVE_SWEET_KISS, MOVE_PECK}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000016, + .nickname = _("TOGETIC"), + .friendship = 255 + }, + { + .species = SPECIES_TOGETIC, + .heldItem = ITEM_ORAN_BERRY, + .moves = {MOVE_METRONOME, MOVE_HIDDEN_POWER, MOVE_ATTRACT, MOVE_LIGHT_SCREEN}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000020, + .nickname = _("TOGETIC"), + .friendship = 255 + }, + { + .species = SPECIES_CHANSEY, + .heldItem = ITEM_ORAN_BERRY, + .moves = {MOVE_FLAMETHROWER, MOVE_SOFT_BOILED, MOVE_LIGHT_SCREEN, MOVE_SECRET_POWER}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000005, + .nickname = _("CHANSEY"), + .friendship = 255 + }, + { + .species = SPECIES_CLEFABLE, + .heldItem = ITEM_ORAN_BERRY, + .moves = {MOVE_REFLECT, MOVE_FLAMETHROWER, MOVE_SING, MOVE_BODY_SLAM}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 200, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x000000C0, + .nickname = _("CLEFABLE"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x000164ec +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { + .flags = 0x04, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x09, + .trainers = { + { + .name = _("JOS & ANNE"), + .facilityClass = FACILITY_CLASS_COOL_COUPLE, + .textColor = 7, + .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_TO, EC_WORD_YOU, EC_WORD_HERE}, + .speechWin = {EC_WORD_VERY, EC_WORD_WELL, EC_WORD_DONE, EC_WORD_EXCL, EC_WORD_GOOD, EC_WORD_BATTLE}, + .speechLose = {EC_WORD_UNBELIEVABLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_I_AM, EC_WORD_DISAPPOINTED, EC_WORD_BUT, EC_WORD_YOU, EC_WORD_WIN, EC_WORD_ELLIPSIS}, + .mons = { + { + .species = SPECIES_RAPIDASH, + .heldItem = ITEM_WHITE_HERB, + .moves = {MOVE_BOUNCE, MOVE_OVERHEAT, MOVE_HYPNOSIS, MOVE_RETURN}, + .hpEV = 100, + .attackEV = 100, + .defenseEV = 0, + .speedEV = 110, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x00000010, + .nickname = _("RAPIDASH"), + .friendship = 255 + }, + { + .species = SPECIES_NINETALES, + .heldItem = ITEM_CHARCOAL, + .moves = {MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_HEAT_WAVE, MOVE_DIG}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 200, + .spAttackEV = 200, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000015, + .nickname = _("NINETALES"), + .friendship = 255 + }, + { + .species = SPECIES_MISDREAVUS, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_GRUDGE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT}, + .hpEV = 200, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 210, + .spAttackEV = 100, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("MISDREAVUS"), + .friendship = 255 + }, + { + .species = SPECIES_ALAKAZAM, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_LIGHT_SCREEN, MOVE_RECOVER, MOVE_PSYCHIC, MOVE_THUNDER_PUNCH}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("ALAKAZAM"), + .friendship = 255 + }, + { + .species = SPECIES_BLISSEY, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_LIGHT_SCREEN, MOVE_ATTRACT, MOVE_RETURN, MOVE_PSYCHIC}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x00000016, + .nickname = _("BLISSEY"), + .friendship = 255 + }, + { + .species = SPECIES_CROBAT, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_TOXIC, MOVE_FLY, MOVE_CONFUSE_RAY, MOVE_SHADOW_BALL}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 210, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000017, + .nickname = _("CROBAT"), + .friendship = 255 + }, + } + }, + { + .name = _("JOS & ANNE"), + .facilityClass = FACILITY_CLASS_COOL_COUPLE, + .textColor = 7, + .speechBefore = {EC_WORD_HERE_GOES, EC_WORD_EXCL_EXCL, EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_LOSE}, + .speechWin = {EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_WE, EC_WORD_GET, EC_WORD_THE, EC_WORD_WIN}, + .speechLose = {EC_WORD_LOST, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_JOKING, EC_WORD_EXCL}, + .speechAfter = {EC_WORD_HOW, EC_WORD_COULD, EC_WORD_I, EC_WORD_LOSE, EC_WORD_THIS, EC_WORD_QUES}, + .mons = { + { + .species = SPECIES_HOUNDOOM, + .heldItem = ITEM_CHARCOAL, + .moves = {MOVE_TAUNT, MOVE_FLAMETHROWER, MOVE_WILL_O_WISP, MOVE_CRUNCH}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x00000082, + .nickname = _("HOUNDOOM"), + .friendship = 255 + }, + { + .species = SPECIES_AERODACTYL, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_ROAR, MOVE_FIRE_BLAST, MOVE_HYPER_BEAM, MOVE_AERIAL_ACE}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x00000033, + .nickname = _("AERODACTYL"), + .friendship = 255 + }, + { + .species = SPECIES_ARCANINE, + .heldItem = ITEM_CHARCOAL, + .moves = {MOVE_HEAT_WAVE, MOVE_EXTREME_SPEED, MOVE_ROAR, MOVE_DIG}, + .hpEV = 210, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 200, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000056, + .nickname = _("ARCANINE"), + .friendship = 255 + }, + { + .species = SPECIES_WEEZING, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_EXPLOSION, MOVE_SMOKESCREEN, MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT}, + .hpEV = 100, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 110, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x0000008E, + .nickname = _("WEEZING"), + .friendship = 255 + }, + { + .species = SPECIES_CHARIZARD, + .heldItem = ITEM_WHITE_HERB, + .moves = {MOVE_OVERHEAT, MOVE_OUTRAGE, MOVE_DRAGON_RAGE, MOVE_SMOKESCREEN}, + .hpEV = 100, + .attackEV = 110, + .defenseEV = 0, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000033, + .nickname = _("CHARIZARD"), + .friendship = 255 + }, + { + .species = SPECIES_GENGAR, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT}, + .hpEV = 55, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000087, + .nickname = _("GENGAR"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00017908 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { + .flags = 0x05, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x04, + .trainers = { + { + .name = _("EMY & ALEK"), + .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, + .textColor = 1, + .speechBefore = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LOST, EC_WORD_IN, EC_WORD_LOVEY_DOVEY, EC_WORD_HAPPINESS}, + .speechWin = {EC_WORD_OH, EC_WORD_OH, EC_WORD_HE, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME}, + .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_SERIOUS, EC_WORD_QUES}, + .speechAfter = {EC_WORD_WHO, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF, 0xFFFF}, + .mons = { + { + .species = SPECIES_TAUROS, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_FLAMETHROWER, MOVE_REST, MOVE_SHOCK_WAVE, MOVE_DOUBLE_TEAM}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("TAUROS"), + .friendship = 255 + }, + { + .species = SPECIES_KANGASKHAN, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_FLAMETHROWER, MOVE_DIZZY_PUNCH, MOVE_REST, MOVE_FAKE_OUT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("KANGASKHAN"), + .friendship = 255 + }, + { + .species = SPECIES_FEAROW, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_DOUBLE_EDGE, MOVE_REST}, + .hpEV = 100, + .attackEV = 210, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000094, + .nickname = _("FEAROW"), + .friendship = 255 + }, + { + .species = SPECIES_TOGETIC, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_FLAMETHROWER, MOVE_LIGHT_SCREEN, MOVE_REST, MOVE_ANCIENT_POWER}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000024, + .nickname = _("TOGETIC"), + .friendship = 255 + }, + { + .species = SPECIES_PIDGEOT, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_STEEL_WING, MOVE_FLY, MOVE_MIRROR_MOVE, MOVE_REST}, + .hpEV = 100, + .attackEV = 110, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000D, + .nickname = _("PIDGEOT"), + .friendship = 255 + }, + { + .species = SPECIES_URSARING, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_REST, MOVE_SNORE, MOVE_DIG, MOVE_SLASH}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("URSARING"), + .friendship = 255 + }, + } + }, + { + .name = _("EMY & ALEK"), + .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, + .textColor = 1, + .speechBefore = {EC_WORD_I_AM, EC_WORD_GIDDY, EC_WORD_WITH, EC_WORD_LOVEY_DOVEY, EC_WORD_JOY, EC_WORD_EXCL_EXCL}, + .speechWin = {EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_MY, EC_WORD_GIRL, EC_WORD_IS, EC_WORD_CUTE}, + .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_SERIOUS}, + .speechAfter = {EC_WORD_WAIT, EC_WORD_ELLIPSIS, EC_WORD_WHO, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_QUES}, + .mons = { + { + .species = SPECIES_LICKITUNG, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_FLAMETHROWER, MOVE_EARTHQUAKE, MOVE_REST, MOVE_SLEEP_TALK}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 55, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000016, + .nickname = _("LICKITUNG"), + .friendship = 255 + }, + { + .species = SPECIES_NOCTOWL, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_REFLECT, MOVE_AERIAL_ACE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000B, + .nickname = _("NOCTOWL"), + .friendship = 255 + }, + { + .species = SPECIES_FURRET, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_FLAMETHROWER, MOVE_AMNESIA, MOVE_SHOCK_WAVE, MOVE_SLASH}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000E, + .nickname = _("FURRET"), + .friendship = 255 + }, + { + .species = SPECIES_RATICATE, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_SUPER_FANG, MOVE_QUICK_ATTACK, MOVE_SWAGGER, MOVE_ENDEAVOR}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000008A, + .nickname = _("RATICATE"), + .friendship = 255 + }, + { + .species = SPECIES_WIGGLYTUFF, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_SUNNY_DAY, MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_BODY_SLAM}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000B, + .nickname = _("WIGGLYTUFF"), + .friendship = 255 + }, + { + .species = SPECIES_PORYGON2, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_THUNDERBOLT, MOVE_CONVERSION_2, MOVE_TRI_ATTACK, MOVE_RECOVER}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("PORYGON2"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00015d3b +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { + .flags = 0x06, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x00, + .trainers = { + { + .name = _("JO & HALEY"), + .facilityClass = FACILITY_CLASS_CRUSH_KIN, + .textColor = 5, + .speechBefore = {EC_WORD_WE_RE, EC_WORD_USING, EC_WORD_THAT, EC_WORD_STRATEGY, EC_WORD_OKAY, EC_WORD_QUES}, + .speechWin = {EC_WORD_YAY, EC_WORD_WE, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_SORRY, EC_WORD_EXCL}, + .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TERRIBLE, EC_WORD_EXCL}, + .speechAfter = {EC_WORD_ALL, EC_WORD_I, EC_WORD_DO, EC_WORD_IS, EC_WORD_LOSE, EC_WORD_ELLIPSIS}, + .mons = { + { + .species = SPECIES_SNEASEL, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_SHADOW_BALL, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_AERIAL_ACE}, + .hpEV = 200, + .attackEV = 0, + .defenseEV = 50, + .speedEV = 210, + .spAttackEV = 0, + .spDefenseEV = 50, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000D, + .nickname = _("SNEASEL"), + .friendship = 255 + }, + { + .species = SPECIES_ALAKAZAM, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_FIRE_PUNCH, MOVE_RECOVER, MOVE_PSYCHIC, MOVE_SUNNY_DAY}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000005, + .nickname = _("ALAKAZAM"), + .friendship = 255 + }, + { + .species = SPECIES_HITMONTOP, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_MEGA_KICK, MOVE_ENDEAVOR, MOVE_DIG, MOVE_SUNNY_DAY}, + .hpEV = 100, + .attackEV = 210, + .defenseEV = 0, + .speedEV = 200, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000008, + .nickname = _("HITMONTOP"), + .friendship = 255 + }, + { + .species = SPECIES_GIRAFARIG, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY, MOVE_SHADOW_BALL, MOVE_PSYBEAM}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000A, + .nickname = _("GIRAFARIG"), + .friendship = 255 + }, + { + .species = SPECIES_XATU, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_SUNNY_DAY, MOVE_DRILL_PECK, MOVE_CONFUSE_RAY, MOVE_PSYCHIC}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000014, + .nickname = _("XATU"), + .friendship = 255 + }, + { + .species = SPECIES_MR_MIME, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_REFLECT, MOVE_SUNNY_DAY, MOVE_PSYCHIC, MOVE_SHOCK_WAVE}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 200, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000005, + .nickname = _("MR. MIME"), + .friendship = 255 + }, + } + }, + { + .name = _("JO & HALEY"), + .facilityClass = FACILITY_CLASS_CRUSH_KIN, + .textColor = 5, + .speechBefore = {EC_WORD_YOU, EC_WORD_YOU, EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_WORD_WIN}, + .speechWin = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_JOKING, EC_WORD_QUES, EC_WORD_WE, EC_WORD_WON}, + .speechLose = {EC_WORD_WIMPY, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_WERE, EC_WORD_WEAK, EC_WORD_ELLIPSIS}, + .speechAfter = {EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOTALLY, EC_WORD_USELESS, EC_WORD_ELLIPSIS}, + .mons = { + { + .species = SPECIES_HYPNO, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_FIRE_PUNCH, MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_NIGHTMARE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000087, + .nickname = _("HYPNO"), + .friendship = 255 + }, + { + .species = SPECIES_HITMONCHAN, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_DETECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("HITMONCHAN"), + .friendship = 255 + }, + { + .species = SPECIES_MACHAMP, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_FLAMETHROWER, MOVE_BRICK_BREAK, MOVE_SCARY_FACE, MOVE_DIG}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000043, + .nickname = _("MACHAMP"), + .friendship = 255 + }, + { + .species = SPECIES_HOUNDOOM, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_ROAR, MOVE_FLAMETHROWER, MOVE_BITE, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000087, + .nickname = _("HOUNDOOM"), + .friendship = 255 + }, + { + .species = SPECIES_PRIMEAPE, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_OVERHEAT, MOVE_SWAGGER, MOVE_SEISMIC_TOSS, MOVE_DOUBLE_TEAM}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 110, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000008C, + .nickname = _("PRIMEAPE"), + .friendship = 255 + }, + { + .species = SPECIES_HERACROSS, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_LEER}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000085, + .nickname = _("HERACROSS"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x000160b1 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { + .flags = 0x07, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_KNOCKOUT, + .prize = 0x0c, + .trainers = { + { + .name = _("JORDY"), + .facilityClass = FACILITY_CLASS_BIKER, + .textColor = 3, + .speechBefore = {EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GIGGLE, EC_WORD_YOU, EC_WORD_PUSHOVER}, + .speechWin = {EC_WORD_WHAT, EC_WORD_A_LITTLE, EC_WORD_PUSHOVER, EC_WORD_YOU, EC_WORD_ARE, EC_WORD_EXCL}, + .speechLose = {EC_WORD_YOU, EC_WORD_WERE, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_EXCL}, + .speechAfter = {EC_WORD_DARN, EC_WORD_EXCL, EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_IT}, + .mons = { + { + .species = SPECIES_MAGBY, + .heldItem = ITEM_LAX_INCENSE, + .moves = {MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_FLAMETHROWER, MOVE_SCREECH}, + .hpEV = 210, + .attackEV = 30, + .defenseEV = 30, + .speedEV = 0, + .spAttackEV = 210, + .spDefenseEV = 30, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000043, + .nickname = _("MAGBY"), + .friendship = 0 + }, + { + .species = SPECIES_CLEFFA, + .heldItem = ITEM_LAX_INCENSE, + .moves = {MOVE_ATTRACT, MOVE_CHARM, MOVE_SECRET_POWER, MOVE_FLASH}, + .hpEV = 210, + .attackEV = 210, + .defenseEV = 30, + .speedEV = 0, + .spAttackEV = 30, + .spDefenseEV = 30, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x000000CA, + .nickname = _("CLEFFA"), + .friendship = 255 + }, + { + .species = SPECIES_IGGLYBUFF, + .heldItem = ITEM_LAX_INCENSE, + .moves = {MOVE_SING, MOVE_HIDDEN_POWER, MOVE_CHARM, MOVE_DOUBLE_TEAM}, + .hpEV = 210, + .attackEV = 0, + .defenseEV = 45, + .speedEV = 210, + .spAttackEV = 0, + .spDefenseEV = 45, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x000000D2, + .nickname = _("IGGLYBUFF"), + .friendship = 255 + }, + { + .species = SPECIES_SMOOCHUM, + .heldItem = ITEM_LAX_INCENSE, + .moves = {MOVE_FAKE_TEARS, MOVE_PSYCHIC, MOVE_MEAN_LOOK, MOVE_SING}, + .hpEV = 210, + .attackEV = 0, + .defenseEV = 45, + .speedEV = 0, + .spAttackEV = 210, + .spDefenseEV = 45, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000011, + .nickname = _("SMOOCHUM"), + .friendship = 255 + }, + { + .species = SPECIES_TOGEPI, + .heldItem = ITEM_LAX_INCENSE, + .moves = {MOVE_SWEET_KISS, MOVE_YAWN, MOVE_ANCIENT_POWER, MOVE_DOUBLE_TEAM}, + .hpEV = 210, + .attackEV = 210, + .defenseEV = 45, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 45, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000034, + .nickname = _("TOGEPI"), + .friendship = 0 + }, + { + .species = SPECIES_PICHU, + .heldItem = ITEM_LAX_INCENSE, + .moves = {MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE, MOVE_SWEET_KISS, MOVE_FLASH}, + .hpEV = 210, + .attackEV = 0, + .defenseEV = 45, + .speedEV = 0, + .spAttackEV = 210, + .spDefenseEV = 45, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000008E, + .nickname = _("PICHU"), + .friendship = 0 + }, + } + }, + { + .name = _("ERNEST"), + .facilityClass = FACILITY_CLASS_BIKER, + .textColor = 1, + .speechBefore = {EC_WORD_IT_S, EC_WORD_SLEEP, EC_WORD_TIME, EC_WORD_FOR, EC_WORD_CHILDREN, EC_WORD_EXCL}, + .speechWin = {EC_WORD_NOT, EC_WORD_GUTSY, EC_WORD_ENOUGH, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_WHY, EC_WORD_DID, EC_WORD_YOU, EC_WORD_CRUSH, EC_WORD_ME, EC_WORD_QUES}, + .speechAfter = {EC_WORD_I_AM, EC_WORD_BEAT, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_NAP}, + .mons = { + { + .species = SPECIES_CLEFFA, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_SWEET_KISS, MOVE_FRUSTRATION, MOVE_SING, MOVE_ATTRACT}, + .hpEV = 210, + .attackEV = 210, + .defenseEV = 45, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 45, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x000000CA, + .nickname = _("CLEFFA"), + .friendship = 0 + }, + { + .species = SPECIES_MAGBY, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_FRUSTRATION, MOVE_CONFUSE_RAY, MOVE_FLAMETHROWER, MOVE_TOXIC}, + .hpEV = 90, + .attackEV = 210, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 210, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000004D, + .nickname = _("MAGBY"), + .friendship = 0 + }, + { + .species = SPECIES_TOGEPI, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_FRUSTRATION, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_SWEET_KISS}, + .hpEV = 210, + .attackEV = 210, + .defenseEV = 45, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 45, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000034, + .nickname = _("TOGEPI"), + .friendship = 0 + }, + { + .species = SPECIES_SMOOCHUM, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_MEAN_LOOK, MOVE_PERISH_SONG, MOVE_TOXIC, MOVE_FLASH}, + .hpEV = 90, + .attackEV = 0, + .defenseEV = 210, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 210, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("SMOOCHUM"), + .friendship = 0 + }, + { + .species = SPECIES_IGGLYBUFF, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_DOUBLE_TEAM, MOVE_SWEET_KISS, MOVE_SEISMIC_TOSS, MOVE_FLASH}, + .hpEV = 210, + .attackEV = 0, + .defenseEV = 45, + .speedEV = 210, + .spAttackEV = 0, + .spDefenseEV = 45, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("IGGLYBUFF"), + .friendship = 0 + }, + { + .species = SPECIES_PICHU, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_TAIL_WHIP, MOVE_FRUSTRATION, MOVE_ATTRACT, MOVE_THUNDER_WAVE}, + .hpEV = 90, + .attackEV = 210, + .defenseEV = 0, + .speedEV = 210, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("PICHU"), + .friendship = 0 + }, + } + }, + { + .name = _("GABRIEL"), + .facilityClass = FACILITY_CLASS_CUE_BALL, + .textColor = 1, + .speechBefore = {EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_HERE_I_COME, EC_WORD_TO, EC_WORD_SWARM, EC_WORD_YOU}, + .speechWin = {EC_WORD_I_AM, EC_WORD_INVINCIBLE, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_THAT, EC_WORD_QUES}, + .speechLose = {EC_WORD_WHAT, EC_WORD_WAS, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_NEXT, EC_WORD_TIME}, + .mons = { + { + .species = SPECIES_PICHU, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_THUNDER_WAVE, MOVE_FRUSTRATION, MOVE_THUNDERBOLT, MOVE_ATTRACT}, + .hpEV = 90, + .attackEV = 210, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 210, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000081, + .nickname = _("PICHU"), + .friendship = 0 + }, + { + .species = SPECIES_TOGEPI, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_ATTRACT, MOVE_FRUSTRATION, MOVE_TOXIC, MOVE_SUBSTITUTE}, + .hpEV = 210, + .attackEV = 210, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 90, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000033, + .nickname = _("TOGEPI"), + .friendship = 0 + }, + { + .species = SPECIES_CLEFFA, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_ENCORE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_FLASH}, + .hpEV = 210, + .attackEV = 0, + .defenseEV = 150, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 150, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x000000CF, + .nickname = _("CLEFFA"), + .friendship = 0 + }, + { + .species = SPECIES_IGGLYBUFF, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_ATTRACT, MOVE_SUBSTITUTE, MOVE_SING, MOVE_PERISH_SONG}, + .hpEV = 210, + .attackEV = 0, + .defenseEV = 210, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 90, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x000000CF, + .nickname = _("IGGLYBUFF"), + .friendship = 0 + }, + { + .species = SPECIES_SMOOCHUM, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_SWEET_KISS, MOVE_PERISH_SONG, MOVE_TOXIC, MOVE_ATTRACT}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("SMOOCHUM"), + .friendship = 0 + }, + { + .species = SPECIES_MAGBY, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_LEER, MOVE_FRUSTRATION, MOVE_SUBSTITUTE, MOVE_FLAMETHROWER}, + .hpEV = 90, + .attackEV = 210, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 210, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000004D, + .nickname = _("MAGBY"), + .friendship = 0 + }, + } + }, + }, + .checksum = 0x00017a4a +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { + .flags = 0x08, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_KNOCKOUT, + .prize = 0x0e, + .trainers = { + { + .name = _("MIKE"), + .facilityClass = FACILITY_CLASS_HIKER_2, + .textColor = 5, + .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_FULL, EC_WORD_OF, EC_WORD_POWER}, + .speechWin = {EC_WORD_WHAT_S_UP_QUES, EC_WORD_WHERE, EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_QUES}, + .speechLose = {EC_WORD_YOU, EC_WORD_GOT, EC_WORD_ME, EC_WORD_WITH, EC_WORD_YOUR, EC_MOVE2(FAKE_OUT)}, + .speechAfter = {EC_WORD_OH_YEAH, EC_WORD_EXCL, EC_WORD_THAT_S, EC_WORD_PRETTY, EC_WORD_EXCELLENT, EC_WORD_EXCL}, + .mons = { + { + .species = SPECIES_PINSIR, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_REVENGE}, + .hpEV = 100, + .attackEV = 210, + .defenseEV = 0, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("PINSIR"), + .friendship = 255 + }, + { + .species = SPECIES_CHARIZARD, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_DRAGON_CLAW, MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_OUTRAGE}, + .hpEV = 200, + .attackEV = 200, + .defenseEV = 0, + .speedEV = 110, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000035, + .nickname = _("CHARIZARD"), + .friendship = 255 + }, + { + .species = SPECIES_RHYDON, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK}, + .hpEV = 100, + .attackEV = 210, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000009, + .nickname = _("RHYDON"), + .friendship = 255 + }, + { + .species = SPECIES_ARCANINE, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_AERIAL_ACE, MOVE_DIG}, + .hpEV = 110, + .attackEV = 200, + .defenseEV = 0, + .speedEV = 200, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000003F, + .nickname = _("ARCANINE"), + .friendship = 255 + }, + { + .species = SPECIES_GOLEM, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_DOUBLE_EDGE, MOVE_ROLLOUT, MOVE_BRICK_BREAK, MOVE_DIG}, + .hpEV = 100, + .attackEV = 210, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("GOLEM"), + .friendship = 255 + }, + { + .species = SPECIES_HOUNDOOM, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_CRUNCH, MOVE_REVERSAL, MOVE_DOUBLE_EDGE, MOVE_COUNTER}, + .hpEV = 200, + .attackEV = 110, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 1, + .personality = 0x00000008, + .nickname = _("HOUNDOOM"), + .friendship = 255 + }, + } + }, + { + .name = _("REBECCA"), + .facilityClass = FACILITY_CLASS_CRUSH_GIRL, + .textColor = 5, + .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, + .speechWin = {EC_WORD_IT_S, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_OVERWHELMING}, + .speechLose = {EC_WORD_ARRGH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_YOU, EC_WORD_ANGER, EC_WORD_ME, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_TOUGH}, + .mons = { + { + .species = SPECIES_SANDSLASH, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_CRUSH_CLAW, MOVE_DIG, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000000D, + .nickname = _("SANDSLASH"), + .friendship = 255 + }, + { + .species = SPECIES_DRAGONAIR, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_OUTRAGE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_SLAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("DRAGONAIR"), + .friendship = 255 + }, + { + .species = SPECIES_RAPIDASH, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_BOUNCE, MOVE_IRON_TAIL, MOVE_THRASH, MOVE_DOUBLE_EDGE}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 1, + .personality = 0x00000094, + .nickname = _("RAPIDASH"), + .friendship = 255 + }, + { + .species = SPECIES_FLAREON, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_IRON_TAIL, MOVE_FLAIL, MOVE_BITE, MOVE_DOUBLE_EDGE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000021, + .nickname = _("FLAREON"), + .friendship = 255 + }, + { + .species = SPECIES_NIDOQUEEN, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_COUNTER}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000017, + .nickname = _("NIDOQUEEN"), + .friendship = 255 + }, + { + .species = SPECIES_PERSIAN, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_IRON_TAIL, MOVE_DIG}, + .hpEV = 110, + .attackEV = 200, + .defenseEV = 0, + .speedEV = 200, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("PERSIAN"), + .friendship = 255 + }, + } + }, + { + .name = _("NICOLAS"), + .facilityClass = FACILITY_CLASS_BLACK_BELT_2, + .textColor = 5, + .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_WHERE, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_EXCL}, + .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_EVER, EC_WORD_BEAT, EC_WORD_ME}, + .speechLose = {EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES}, + .speechAfter = {EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_SOME, EC_WORD_MORE}, + .mons = { + { + .species = SPECIES_HITMONLEE, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_MEGA_KICK, MOVE_REVERSAL, MOVE_FOCUS_PUNCH, MOVE_BRICK_BREAK}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000008, + .nickname = _("HITMONLEE"), + .friendship = 255 + }, + { + .species = SPECIES_SCYTHER, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_SLASH, MOVE_REVERSAL, MOVE_STEEL_WING, MOVE_AERIAL_ACE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000017, + .nickname = _("SCYTHER"), + .friendship = 255 + }, + { + .species = SPECIES_MAGMAR, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK, MOVE_IRON_TAIL}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000053, + .nickname = _("MAGMAR"), + .friendship = 255 + }, + { + .species = SPECIES_MACHAMP, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_DYNAMIC_PUNCH, MOVE_DIG, MOVE_CROSS_CHOP, MOVE_REVENGE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000003F, + .nickname = _("MACHAMP"), + .friendship = 255 + }, + { + .species = SPECIES_PRIMEAPE, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_THRASH, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_AERIAL_ACE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 110, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000008, + .nickname = _("PRIMEAPE"), + .friendship = 255 + }, + { + .species = SPECIES_POLIWRATH, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_BODY_SLAM, MOVE_DIG, MOVE_MEGA_KICK, MOVE_COUNTER}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000000D, + .nickname = _("POLIWRATH"), + .friendship = 255 + }, + } + }, + }, + .checksum = 0x00016f05 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { + .flags = 0x09, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x00, + .trainers = { + { + .name = _("JOEY"), + .facilityClass = FACILITY_CLASS_CAMPER_2, + .textColor = 1, + .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SCARY, EC_WORD_STRONG, EC_WORD_EXCL}, + .speechWin = {EC_WORD_WERE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_QUES}, + .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_WAY, EC_WORD_TOO_STRONG, EC_WORD_EXCL}, + .speechAfter = {EC_WORD_THE, EC_WORD_WAY, EC_WORD_POKEMON, EC_WORD_MATCH_UP, EC_WORD_IS, EC_WORD_IMPORTANT}, + .mons = { + { + .species = SPECIES_MURKROW, + .heldItem = ITEM_BLACK_GLASSES, + .moves = {MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("MURKROW"), + .friendship = 255 + }, + { + .species = SPECIES_TAUROS, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_TOMB, MOVE_PURSUIT}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("TAUROS"), + .friendship = 255 + }, + { + .species = SPECIES_SLOWBRO, + .heldItem = ITEM_MYSTIC_WATER, + .moves = {MOVE_AMNESIA, MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000089, + .nickname = _("SLOWBRO"), + .friendship = 255 + }, + { + .species = SPECIES_ARBOK, + .heldItem = ITEM_POISON_BARB, + .moves = {MOVE_IRON_TAIL, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE, MOVE_TOXIC}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000089, + .nickname = _("ARBOK"), + .friendship = 255 + }, + { + .species = SPECIES_NIDOKING, + .heldItem = ITEM_SOFT_SAND, + .moves = {MOVE_EARTHQUAKE, MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("NIDOKING"), + .friendship = 255 + }, + { + .species = SPECIES_RAPIDASH, + .heldItem = ITEM_CHARCOAL, + .moves = {MOVE_FLAMETHROWER, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_KICK}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000089, + .nickname = _("RAPIDASH"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016417 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { + .flags = 0x0a, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x0c, + .trainers = { + { + .name = _("LILY"), + .facilityClass = FACILITY_CLASS_PKMN_BREEDER_3, + .textColor = 1, + .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_EXCL}, + .speechWin = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL}, + .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_ELLIPSIS}, + .speechAfter = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_MY, EC_WORD_TRUST, EC_WORD_FOREVER}, + .mons = { + { + .species = SPECIES_CLEFAIRY, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_CHARM, MOVE_METRONOME, MOVE_RETURN, MOVE_REST}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("CLEFAIRY"), + .friendship = 255 + }, + { + .species = SPECIES_TOGEPI, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_CHARM, MOVE_METRONOME, MOVE_RETURN, MOVE_REST}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x0000000C, + .nickname = _("TOGEPI"), + .friendship = 255 + }, + { + .species = SPECIES_MEOWTH, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_CHARM, MOVE_ASSIST, MOVE_RETURN, MOVE_REST}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("MEOWTH"), + .friendship = 255 + }, + { + .species = SPECIES_JIGGLYPUFF, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_CHARM, MOVE_ROLLOUT, MOVE_RETURN, MOVE_REST}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("JIGGLYPUFF"), + .friendship = 255 + }, + { + .species = SPECIES_SNORLAX, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_CHARM, MOVE_ROLLOUT, MOVE_RETURN, MOVE_REST}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000025, + .nickname = _("SNORLAX"), + .friendship = 255 + }, + { + .species = SPECIES_SNUBBULL, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_CHARM, MOVE_LICK, MOVE_RETURN, MOVE_REST}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("SNUBBULL"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016cb7 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { + .flags = 0x0b, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x0e, + .trainers = { + { + .name = _("BRANDON"), + .facilityClass = FACILITY_CLASS_BUG_CATCHER_2, + .textColor = 1, + .speechBefore = {EC_WORD_POISON, EC_WORD_IS, EC_WORD_JUST, EC_WORD_SO, EC_WORD_AWFUL, EC_WORD_ISN_T_IT_QUES}, + .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_ISN_T, EC_WORD_POISON, EC_WORD_TERRIBLE, EC_WORD_QUES}, + .speechLose = {EC_WORD_HUH_QUES, EC_WORD_OUR, EC_WORD_POISON, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_QUES}, + .speechAfter = {EC_WORD_POISON, EC_WORD_IS, EC_WORD_A, EC_WORD_TERRIBLE, EC_MOVE(TORMENT), EC_WORD_ISN_T_IT_QUES}, + .mons = { + { + .species = SPECIES_BUTTERFREE, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_SILVER_WIND, MOVE_SLEEP_POWDER, MOVE_PSYCHIC, MOVE_SUPERSONIC}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("BUTTERFREE"), + .friendship = 255 + }, + { + .species = SPECIES_BEEDRILL, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_SLUDGE_BOMB, MOVE_TWINEEDLE, MOVE_DOUBLE_TEAM, MOVE_AERIAL_ACE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("BEEDRILL"), + .friendship = 255 + }, + { + .species = SPECIES_PARASECT, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_STUN_SPORE, MOVE_SLASH}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("PARASECT"), + .friendship = 255 + }, + { + .species = SPECIES_YANMA, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_HYPNOSIS, MOVE_SONIC_BOOM, MOVE_QUICK_ATTACK, MOVE_AERIAL_ACE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 1, + .personality = 0x0000008A, + .nickname = _("YANMA"), + .friendship = 255 + }, + { + .species = SPECIES_SHUCKLE, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_TOXIC, MOVE_ROCK_TOMB, MOVE_PROTECT, MOVE_REST}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("SHUCKLE"), + .friendship = 255 + }, + { + .species = SPECIES_FORRETRESS, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_SANDSTORM}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("FORRETRESS"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016e1f +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { + .flags = 0x0c, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x02, + .trainers = { + { + .name = _("RIC & RENE"), + .facilityClass = FACILITY_CLASS_CRUSH_KIN, + .textColor = 5, + .speechBefore = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME}, + .speechWin = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_TOO, EC_WORD_AWESOME}, + .speechLose = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_ISN_T, EC_WORD_AWESOME, EC_WORD_QUES}, + .speechAfter = {EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_FIGHT, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, + .mons = { + { + .species = SPECIES_HITMONLEE, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_ROCK_TOMB, MOVE_HI_JUMP_KICK, MOVE_BULK_UP, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("HITMONLEE"), + .friendship = 255 + }, + { + .species = SPECIES_RHYDON, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_MEGAHORN, MOVE_ROCK_BLAST, MOVE_BRICK_BREAK, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000007F, + .nickname = _("RHYDON"), + .friendship = 255 + }, + { + .species = SPECIES_GOLEM, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_BRICK_BREAK, MOVE_ROCK_BLAST, MOVE_DIG, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000002, + .nickname = _("GOLEM"), + .friendship = 255 + }, + { + .species = SPECIES_MAGMAR, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_FIRE_PUNCH, MOVE_BRICK_BREAK, MOVE_CONFUSE_RAY, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000004F, + .nickname = _("MAGMAR"), + .friendship = 255 + }, + { + .species = SPECIES_HERACROSS, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000007F, + .nickname = _("HERACROSS"), + .friendship = 255 + }, + { + .species = SPECIES_POLIWRATH, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_BULK_UP, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000097, + .nickname = _("POLIWRATH"), + .friendship = 255 + }, + } + }, + { + .name = _("RIC & RENE"), + .facilityClass = FACILITY_CLASS_CRUSH_KIN, + .textColor = 5, + .speechBefore = {EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, + .speechWin = {EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_HUH_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_NOT_VERY, EC_WORD_AWESOME, EC_WORD_QUES}, + .speechAfter = {EC_WORD_I, EC_WORD_WILL, EC_WORD_DO, EC_WORD_MY, EC_WORD_BEST, EC_WORD_EXCL}, + .mons = { + { + .species = SPECIES_MACHAMP, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_CROSS_CHOP, MOVE_SEISMIC_TOSS, MOVE_ROCK_TOMB, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000004E, + .nickname = _("MACHAMP"), + .friendship = 255 + }, + { + .species = SPECIES_PINSIR, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SUBMISSION, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("PINSIR"), + .friendship = 255 + }, + { + .species = SPECIES_MAROWAK, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_BRICK_BREAK, MOVE_BONEMERANG, MOVE_AERIAL_ACE, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000003, + .nickname = _("MAROWAK"), + .friendship = 255 + }, + { + .species = SPECIES_HITMONCHAN, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_MACH_PUNCH, MOVE_THUNDER_PUNCH, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("HITMONCHAN"), + .friendship = 255 + }, + { + .species = SPECIES_ELECTABUZZ, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK, MOVE_THUNDER_WAVE, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000004F, + .nickname = _("ELECTABUZZ"), + .friendship = 255 + }, + { + .species = SPECIES_POLIWRATH, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_BULK_UP, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000097, + .nickname = _("POLIWRATH"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x000166b4 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { + .flags = 0x0d, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x0d, + .trainers = { + { + .name = _("JEN & KIRA"), + .facilityClass = FACILITY_CLASS_TWINS_2, + .textColor = 5, + .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL}, + .speechWin = {EC_WORD_EHEHE, EC_WORD_YAY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_I, EC_WORD_WILL, EC_WORD_TRY, EC_WORD_TO, EC_WORD_GET, EC_WORD_BETTER}, + .mons = { + { + .species = SPECIES_JOLTEON, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_QUICK_ATTACK, MOVE_THUNDERBOLT, MOVE_DOUBLE_KICK, MOVE_PIN_MISSILE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000029, + .nickname = _("JOLTEON"), + .friendship = 255 + }, + { + .species = SPECIES_ESPEON, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_QUICK_ATTACK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_BITE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000029, + .nickname = _("ESPEON"), + .friendship = 255 + }, + { + .species = SPECIES_FLAREON, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_IRON_TAIL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000033, + .nickname = _("FLAREON"), + .friendship = 255 + }, + { + .species = SPECIES_VAPOREON, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_QUICK_ATTACK, MOVE_WATERFALL, MOVE_ICE_BEAM, MOVE_BITE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000010, + .nickname = _("VAPOREON"), + .friendship = 255 + }, + { + .species = SPECIES_EEVEE, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_QUICK_ATTACK, MOVE_DOUBLE_EDGE, MOVE_BITE, MOVE_IRON_TAIL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000010, + .nickname = _("EEVEE"), + .friendship = 255 + }, + { + .species = SPECIES_UMBREON, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_QUICK_ATTACK, MOVE_FAINT_ATTACK, MOVE_SHADOW_BALL, MOVE_IRON_TAIL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000010, + .nickname = _("UMBREON"), + .friendship = 255 + }, + } + }, + { + .name = _("JEN & KIRA"), + .facilityClass = FACILITY_CLASS_TWINS_2, + .textColor = 3, + .speechBefore = {EC_WORD_LET_S, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, + .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_WE, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_WORK, EC_WORD_BETTER, 0xFFFF}, + .mons = { + { + .species = SPECIES_JOLTEON, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_THUNDERBOLT}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 10 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("JOLTEON"), + .friendship = 255 + }, + { + .species = SPECIES_ESPEON, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_HELPING_HAND, MOVE_PSYCHIC}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 10 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("ESPEON"), + .friendship = 255 + }, + { + .species = SPECIES_FLAREON, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_FLAMETHROWER}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 13 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000D, + .nickname = _("FLAREON"), + .friendship = 255 + }, + { + .species = SPECIES_VAPOREON, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_SURF}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 35 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000023, + .nickname = _("VAPOREON"), + .friendship = 255 + }, + { + .species = SPECIES_EEVEE, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_DOUBLE_EDGE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 35 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000023, + .nickname = _("EEVEE"), + .friendship = 255 + }, + { + .species = SPECIES_UMBREON, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_FAINT_ATTACK}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 35 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000023, + .nickname = _("UMBREON"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00017fc2 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { + .flags = 0x0e, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x08, + .trainers = { + { + .name = _("ISAC & MAG"), + .facilityClass = FACILITY_CLASS_COOL_COUPLE, + .textColor = 1, + .speechBefore = {EC_WORD_OUR, EC_MOVE(EARTHQUAKE), EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SHAKY}, + .speechWin = {EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_I_AM, EC_WORD_ALL, EC_WORD_SHAKY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_MY, EC_WORD_GIRL, EC_WORD_ISN_T, EC_WORD_SHAKY, EC_WORD_SHE_IS, EC_WORD_LOVEY_DOVEY}, + .mons = { + { + .species = SPECIES_NIDOKING, + .heldItem = ITEM_SOFT_SAND, + .moves = {MOVE_EARTHQUAKE, MOVE_MEGAHORN, MOVE_SHADOW_BALL, MOVE_FIRE_BLAST}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("NIDOKING"), + .friendship = 255 + }, + { + .species = SPECIES_GLIGAR, + .heldItem = ITEM_SOFT_SAND, + .moves = {MOVE_EARTHQUAKE, MOVE_QUICK_ATTACK, MOVE_AERIAL_ACE, MOVE_IRON_TAIL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("GLIGAR"), + .friendship = 255 + }, + { + .species = SPECIES_QUAGSIRE, + .heldItem = ITEM_SOFT_SAND, + .moves = {MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_BLIZZARD, MOVE_BRICK_BREAK}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("QUAGSIRE"), + .friendship = 0 + }, + { + .species = SPECIES_PILOSWINE, + .heldItem = ITEM_SOFT_SAND, + .moves = {MOVE_EARTHQUAKE, MOVE_BLIZZARD, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("PILOSWINE"), + .friendship = 255 + }, + { + .species = SPECIES_GOLEM, + .heldItem = ITEM_SOFT_SAND, + .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_BLAST, MOVE_BRICK_BREAK, MOVE_EXPLOSION}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000080, + .nickname = _("GOLEM"), + .friendship = 255 + }, + { + .species = SPECIES_STEELIX, + .heldItem = ITEM_SOFT_SAND, + .moves = {MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DRAGON_BREATH, MOVE_DOUBLE_EDGE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("STEELIX"), + .friendship = 255 + }, + } + }, + { + .name = _("ISAC & MAG"), + .facilityClass = FACILITY_CLASS_COOL_COUPLE, + .textColor = 1, + .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_DOESN_T, EC_WORD_GET, EC_WORD_ALL, EC_WORD_SHAKY}, + .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_LIE, EC_WORD_EXCL}, + .speechLose = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY}, + .speechAfter = {EC_WORD_I_AM, EC_WORD_LOVEY_DOVEY, EC_WORD_FOR, EC_WORD_HIM, EC_WORD_NOT, EC_WORD_SHAKY}, + .mons = { + { + .species = SPECIES_SKARMORY, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_SANDSTORM, MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_SPIKES}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000B, + .nickname = _("SKARMORY"), + .friendship = 255 + }, + { + .species = SPECIES_MANTINE, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_ICE_BEAM, MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000B, + .nickname = _("MANTINE"), + .friendship = 255 + }, + { + .species = SPECIES_JUMPLUFF, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_TAIL_WHIP, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_AERIAL_ACE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000B, + .nickname = _("JUMPLUFF"), + .friendship = 255 + }, + { + .species = SPECIES_GENGAR, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_PSYCHIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000B, + .nickname = _("GENGAR"), + .friendship = 255 + }, + { + .species = SPECIES_CROBAT, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_GIGA_DRAIN, MOVE_POISON_FANG, MOVE_FLY, MOVE_STEEL_WING}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000B, + .nickname = _("CROBAT"), + .friendship = 255 + }, + { + .species = SPECIES_XATU, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000B, + .nickname = _("XATU"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016bb0 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { + .flags = 0x0f, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_KNOCKOUT, + .prize = 0x06, + .trainers = { + { + .name = _("CHELSEA"), + .facilityClass = FACILITY_CLASS_PKMN_RANGER_4, + .textColor = 7, + .speechBefore = {EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, EC_WORD_IS, EC_WORD_IMPORTANT, EC_WORD_ISN_T_IT_QUES}, + .speechWin = {EC_WORD_YOU, EC_WORD_TAKE, EC_WORD_THE, EC_WORD_LOSS, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_BE, EC_WORD_KIND, EC_WORD_TO, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD}, + .speechAfter = {EC_WORD_DON_T, EC_WORD_EVER, EC_WORD_POISON, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD}, + .mons = { + { + .species = SPECIES_VILEPLUME, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_STUN_SPORE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000011, + .nickname = _("VILEPLUME"), + .friendship = 255 + }, + { + .species = SPECIES_STARMIE, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_WATERFALL, MOVE_RECOVER}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x00000010, + .nickname = _("STARMIE"), + .friendship = 255 + }, + { + .species = SPECIES_URSARING, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_FAINT_ATTACK, MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000001, + .nickname = _("URSARING"), + .friendship = 255 + }, + { + .species = SPECIES_NOCTOWL, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000001, + .nickname = _("NOCTOWL"), + .friendship = 255 + }, + { + .species = SPECIES_NINETALES, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_GRUDGE, MOVE_OVERHEAT, MOVE_FAINT_ATTACK, MOVE_WILL_O_WISP}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000010, + .nickname = _("NINETALES"), + .friendship = 255 + }, + { + .species = SPECIES_LEDIAN, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_SILVER_WIND, MOVE_SWIFT, MOVE_AERIAL_ACE, MOVE_TOXIC}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000001, + .nickname = _("LEDIAN"), + .friendship = 255 + }, + } + }, + { + .name = _("TRENTON"), + .facilityClass = FACILITY_CLASS_PKMN_RANGER_3, + .textColor = 7, + .speechBefore = {EC_WORD_I, EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREAT, EC_WORD_GREEN, EC_WORD_WORLD}, + .speechWin = {EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_YOURS}, + .speechLose = {EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_MOVE2(PROTECT), EC_WORD_AND, EC_WORD_RESUSCITATE, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD}, + .mons = { + { + .species = SPECIES_GYARADOS, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_EARTHQUAKE, MOVE_WATERFALL, MOVE_BLIZZARD, MOVE_HYPER_BEAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000088, + .nickname = _("GYARADOS"), + .friendship = 255 + }, + { + .species = SPECIES_VICTREEBEL, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_REFLECT, MOVE_ATTRACT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x0000008E, + .nickname = _("VICTREEBEL"), + .friendship = 255 + }, + { + .species = SPECIES_DONPHAN, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000097, + .nickname = _("DONPHAN"), + .friendship = 255 + }, + { + .species = SPECIES_FEAROW, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_FAINT_ATTACK, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_DOUBLE_TEAM}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000097, + .nickname = _("FEAROW"), + .friendship = 255 + }, + { + .species = SPECIES_ARCANINE, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_EXTREME_SPEED, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_AERIAL_ACE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x0000004F, + .nickname = _("ARCANINE"), + .friendship = 255 + }, + { + .species = SPECIES_ARIADOS, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_SIGNAL_BEAM, MOVE_TOXIC}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000097, + .nickname = _("ARIADOS"), + .friendship = 255 + }, + } + }, + { + .name = _("ALBERT"), + .facilityClass = FACILITY_CLASS_COOLTRAINER_3, + .textColor = 7, + .speechBefore = {EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_TIME, EC_WORD_HERE}, + .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_THINGS, EC_WORD_EXCITING}, + .speechLose = {EC_WORD_YOU_RE, EC_WORD_STRONG, EC_WORD_THAT_WAS, EC_WORD_WILD, EC_WORD_AND, EC_WORD_EXCITING}, + .speechAfter = {EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_AFTER, EC_WORD_THAT, EC_WORD_EXCITING, EC_WORD_MATCH}, + .mons = { + { + .species = SPECIES_KINGDRA, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_TWISTER, MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_RETURN}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000015, + .nickname = _("KINGDRA"), + .friendship = 255 + }, + { + .species = SPECIES_GOLEM, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_EDGE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x0000007F, + .nickname = _("GOLEM"), + .friendship = 255 + }, + { + .species = SPECIES_DRAGONITE, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_DRAGON_CLAW}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000001, + .nickname = _("DRAGONITE"), + .friendship = 255 + }, + { + .species = SPECIES_TYRANITAR, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_THUNDER, MOVE_FIRE_BLAST}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000097, + .nickname = _("TYRANITAR"), + .friendship = 255 + }, + { + .species = SPECIES_AMPHAROS, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_REFLECT, MOVE_THUNDER, MOVE_BRICK_BREAK, MOVE_RETURN}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000013, + .nickname = _("AMPHAROS"), + .friendship = 255 + }, + { + .species = SPECIES_VENUSAUR, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_TOXIC, MOVE_BODY_SLAM}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x0000002A, + .nickname = _("VENUSAUR"), + .friendship = 255 + }, + } + }, + }, + .checksum = 0x0001844c +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { + .flags = 0x10, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_KNOCKOUT, + .prize = 0x04, + .trainers = { + { + .name = _("CAMRYN"), + .facilityClass = FACILITY_CLASS_PICNICKER_2, + .textColor = 1, + .speechBefore = {EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_I, EC_WORD_WON_T, EC_WORD_LOSE, EC_WORD_EXCL}, + .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_THAT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_WIN}, + .speechLose = {EC_WORD_OH_QUES, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_DID, EC_WORD_I, EC_WORD_LOSE, EC_WORD_QUES}, + .speechAfter = {EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .mons = { + { + .species = SPECIES_MURKROW, + .heldItem = ITEM_BLACK_GLASSES, + .moves = {MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("MURKROW"), + .friendship = 255 + }, + { + .species = SPECIES_RAPIDASH, + .heldItem = ITEM_CHARCOAL, + .moves = {MOVE_BOUNCE, MOVE_FLAMETHROWER, MOVE_QUICK_ATTACK, MOVE_DOUBLE_KICK}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000C, + .nickname = _("RAPIDASH"), + .friendship = 255 + }, + { + .species = SPECIES_MILTANK, + .heldItem = ITEM_SILK_SCARF, + .moves = {MOVE_MILK_DRINK, MOVE_BRICK_BREAK, MOVE_BODY_SLAM, MOVE_SHADOW_BALL}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("MILTANK"), + .friendship = 255 + }, + { + .species = SPECIES_GOLDUCK, + .heldItem = ITEM_MYSTIC_WATER, + .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_LIGHT_SCREEN}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("GOLDUCK"), + .friendship = 255 + }, + { + .species = SPECIES_SANDSLASH, + .heldItem = ITEM_SOFT_SAND, + .moves = {MOVE_SANDSTORM, MOVE_AERIAL_ACE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("SANDSLASH"), + .friendship = 255 + }, + { + .species = SPECIES_NIDOQUEEN, + .heldItem = ITEM_HARD_STONE, + .moves = {MOVE_EARTHQUAKE, MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("NIDOQUEEN"), + .friendship = 255 + }, + } + }, + { + .name = _("NATALIA"), + .facilityClass = FACILITY_CLASS_AROMA_LADY_2, + .textColor = 1, + .speechBefore = {EC_WORD_THIS, EC_MOVE(SWEET_SCENT), EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_IT, EC_WORD_QUES}, + .speechWin = {EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_NICE, EC_WORD_QUES, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_THAT, EC_WORD_WASN_T, EC_WORD_GOOD, EC_WORD_QUES, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_I, EC_MOVE2(REFRESH), EC_WORD_THINGS, EC_WORD_WITH, EC_WORD_REFRESHING, EC_MOVE(AROMATHERAPY)}, + .mons = { + { + .species = SPECIES_BELLOSSOM, + .heldItem = ITEM_PERSIM_BERRY, + .moves = {MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_FLAIL}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("BELLOSSOM"), + .friendship = 255 + }, + { + .species = SPECIES_VICTREEBEL, + .heldItem = ITEM_MIRACLE_SEED, + .moves = {MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("VICTREEBEL"), + .friendship = 255 + }, + { + .species = SPECIES_PARASECT, + .heldItem = ITEM_MIRACLE_SEED, + .moves = {MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_AERIAL_ACE}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("PARASECT"), + .friendship = 255 + }, + { + .species = SPECIES_VILEPLUME, + .heldItem = ITEM_PERSIM_BERRY, + .moves = {MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_SLUDGE_BOMB}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("VILEPLUME"), + .friendship = 255 + }, + { + .species = SPECIES_VENUSAUR, + .heldItem = ITEM_PERSIM_BERRY, + .moves = {MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_SLUDGE_BOMB}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000C, + .nickname = _("VENUSAUR"), + .friendship = 255 + }, + { + .species = SPECIES_MEGANIUM, + .heldItem = ITEM_MIRACLE_SEED, + .moves = {MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_BODY_SLAM}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000025, + .nickname = _("MEGANIUM"), + .friendship = 255 + }, + } + }, + { + .name = _("KATHLEEN"), + .facilityClass = FACILITY_CLASS_COOLTRAINER_4, + .textColor = 7, + .speechBefore = {EC_WORD_TOO, EC_WORD_BAD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_FOR, EC_WORD_YOU}, + .speechWin = {EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_ELLIPSIS}, + .speechAfter = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_PURE_POWER, EC_WORD_THAT, EC_WORD_IS, EC_WORD_NATURAL}, + .mons = { + { + .species = SPECIES_MAROWAK, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_BONEMERANG, MOVE_AERIAL_ACE}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("MAROWAK"), + .friendship = 255 + }, + { + .species = SPECIES_LAPRAS, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_SURF, MOVE_BLIZZARD, MOVE_PSYCHIC, MOVE_THUNDER}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000C, + .nickname = _("LAPRAS"), + .friendship = 255 + }, + { + .species = SPECIES_ARCANINE, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_EXTREME_SPEED, MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_AERIAL_ACE}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000057, + .nickname = _("ARCANINE"), + .friendship = 255 + }, + { + .species = SPECIES_RAICHU, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM, MOVE_IRON_TAIL}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000089, + .nickname = _("RAICHU"), + .friendship = 255 + }, + { + .species = SPECIES_TOGETIC, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_ANCIENT_POWER, MOVE_SWEET_KISS, MOVE_PSYCHIC, MOVE_MAGICAL_LEAF}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000C, + .nickname = _("TOGETIC"), + .friendship = 255 + }, + { + .species = SPECIES_SNORLAX, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_BODY_SLAM, MOVE_REST, MOVE_SNORE, MOVE_SHADOW_BALL}, + .hpEV = 84, + .attackEV = 84, + .defenseEV = 84, + .speedEV = 84, + .spAttackEV = 84, + .spDefenseEV = 84, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000C, + .nickname = _("SNORLAX"), + .friendship = 255 + }, + } + }, + }, + .checksum = 0x0001738c +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { + .flags = 0x11, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x03, + .trainers = { + { + .name = _("BRADEN"), + .facilityClass = FACILITY_CLASS_SWIMMER_MALE_2, + .textColor = 1, + .speechBefore = {EC_WORD_I_AM, EC_WORD_PRETTY, EC_WORD_HAPPY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_TOUGHNESS}, + .speechWin = {EC_WORD_WROOOAAR_EXCL, 0xFFFF, EC_WORD_SERIOUSLY, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES}, + .speechLose = {EC_WORD_YOU, EC_WORD_SHOCKED, EC_WORD_ME, EC_WORD_OUT, EC_WORD_OF, EC_WORD_HAPPINESS}, + .speechAfter = {EC_WORD_NICE, EC_WORD_WORK, EC_WORD_YOU, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_FABULOUS}, + .mons = { + { + .species = SPECIES_VAPOREON, + .heldItem = ITEM_CHERI_BERRY, + .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_SHADOW_BALL, MOVE_WISH}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 110, + .speedEV = 0, + .spAttackEV = 200, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000011, + .nickname = _("VAPOREON"), + .friendship = 255 + }, + { + .species = SPECIES_SLOWBRO, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_SURF, MOVE_CONFUSION, MOVE_AMNESIA, MOVE_DISABLE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000091, + .nickname = _("SLOWBRO"), + .friendship = 255 + }, + { + .species = SPECIES_POLITOED, + .heldItem = ITEM_CHESTO_BERRY, + .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_HYPNOSIS, MOVE_SWAGGER}, + .hpEV = 100, + .attackEV = 100, + .defenseEV = 110, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000096, + .nickname = _("POLITOED"), + .friendship = 255 + }, + { + .species = SPECIES_TENTACRUEL, + .heldItem = ITEM_POISON_BARB, + .moves = {MOVE_SURF, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 110, + .speedEV = 0, + .spAttackEV = 200, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000000, + .nickname = _("TENTACRUEL"), + .friendship = 255 + }, + { + .species = SPECIES_RATICATE, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK}, + .hpEV = 110, + .attackEV = 200, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000080, + .nickname = _("RATICATE"), + .friendship = 255 + }, + { + .species = SPECIES_DUNSPARCE, + .heldItem = ITEM_PERSIM_BERRY, + .moves = {MOVE_WATER_PULSE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_YAWN}, + .hpEV = 255, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000007F, + .nickname = _("DUNSPARCE"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016530 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { + .flags = 0x12, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x0a, + .trainers = { + { + .name = _("ALLYSON"), + .facilityClass = FACILITY_CLASS_COOLTRAINER_4, + .textColor = 7, + .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_ABOUT, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_TODAY}, + .speechWin = {EC_WORD_YES, EC_WORD_EXCL_EXCL, EC_WORD_I, EC_WORD_ADORE, EC_WORD_MYSELF, EC_WORD_TODAY}, + .speechLose = {EC_WORD_I_WAS, EC_WORD_CONFUSED, EC_WORD_ABOUT, EC_WORD_THINGS, EC_WORD_I, EC_WORD_THINK}, + .speechAfter = {EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_STRONG, EC_WORD_TODAY, EC_WORD_THAT_S, EC_WORD_ALL}, + .mons = { + { + .species = SPECIES_STARMIE, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x0000000F, + .nickname = _("STARMIE"), + .friendship = 255 + }, + { + .species = SPECIES_BLASTOISE, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_MIRROR_COAT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000032, + .nickname = _("BLASTOISE"), + .friendship = 255 + }, + { + .species = SPECIES_KINGDRA, + .heldItem = ITEM_CHESTO_BERRY, + .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x0000008C, + .nickname = _("KINGDRA"), + .friendship = 255 + }, + { + .species = SPECIES_QUAGSIRE, + .heldItem = ITEM_CHESTO_BERRY, + .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_REST}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 155, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("QUAGSIRE"), + .friendship = 255 + }, + { + .species = SPECIES_LAPRAS, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_ATTRACT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x0000000F, + .nickname = _("LAPRAS"), + .friendship = 255 + }, + { + .species = SPECIES_DRAGONITE, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_LIGHT_SCREEN}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 155, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000096, + .nickname = _("DRAGONITE"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016e32 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { + .flags = 0x13, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x0e, + .trainers = { + { + .name = _("ALBERTO"), + .facilityClass = FACILITY_CLASS_SAILOR_2, + .textColor = 5, + .speechBefore = {EC_WORD_LET_S, EC_WORD_GET, EC_WORD_WITH, EC_WORD_IT, EC_WORD_RIGHT, EC_WORD_AWAY}, + .speechWin = {EC_WORD_YO, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_NOW, EC_WORD_EH_QUES}, + .speechLose = {EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_OVER, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER}, + .speechAfter = {EC_WORD_OKAY, EC_WORD_I, EC_WORD_CONCEDE, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_LOST}, + .mons = { + { + .species = SPECIES_FERALIGATR, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_DRAGON_CLAW}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000032, + .nickname = _("FERALIGATR"), + .friendship = 255 + }, + { + .species = SPECIES_POLIWRATH, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_MEGA_KICK, MOVE_ROCK_TOMB}, + .hpEV = 100, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 1, + .personality = 0x00000096, + .nickname = _("POLIWRATH"), + .friendship = 255 + }, + { + .species = SPECIES_KANGASKHAN, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_AERIAL_ACE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 130, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 125, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("KANGASKHAN"), + .friendship = 255 + }, + { + .species = SPECIES_MILTANK, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ROCK_TOMB, MOVE_MILK_DRINK}, + .hpEV = 155, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("MILTANK"), + .friendship = 255 + }, + { + .species = SPECIES_GOLDUCK, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_CROSS_CHOP, MOVE_SURF, MOVE_ICE_BEAM, MOVE_DISABLE}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 210, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 1, + .personality = 0x00000096, + .nickname = _("GOLDUCK"), + .friendship = 255 + }, + { + .species = SPECIES_GRANBULL, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 130, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 125, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x000000CA, + .nickname = _("GRANBULL"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016890 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { + .flags = 0x14, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x0c, + .trainers = { + { + .name = _("KAT & KIPP"), + .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, + .textColor = 4, + .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_MY, EC_WORD_BEST}, + .speechWin = {EC_WORD_WAY, EC_WORD_TO, EC_WORD_GO, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER}, + .speechLose = {EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_IT, EC_WORD_GOES}, + .speechAfter = {EC_WORD_OKAY, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER, EC_WORD_FIGHT, EC_WORD_FIGHT}, + .mons = { + { + .species = SPECIES_SNEASEL, + .heldItem = ITEM_RAWST_BERRY, + .moves = {MOVE_DIG, MOVE_TORMENT, MOVE_REFLECT, MOVE_TAUNT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x0000000D, + .nickname = _("SNEASEL"), + .friendship = 255 + }, + { + .species = SPECIES_OMASTAR, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_DIVE, MOVE_LEER, MOVE_TICKLE, MOVE_SUPERSONIC}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000002D, + .nickname = _("OMASTAR"), + .friendship = 255 + }, + { + .species = SPECIES_DEWGONG, + .heldItem = ITEM_PERSIM_BERRY, + .moves = {MOVE_DIVE, MOVE_ENCORE, MOVE_GROWL, MOVE_SAFEGUARD}, + .hpEV = 200, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 210, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000014, + .nickname = _("DEWGONG"), + .friendship = 255 + }, + { + .species = SPECIES_QUAGSIRE, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_DIVE, MOVE_YAWN, MOVE_AMNESIA, MOVE_SAFEGUARD}, + .hpEV = 200, + .attackEV = 0, + .defenseEV = 110, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000091, + .nickname = _("QUAGSIRE"), + .friendship = 255 + }, + { + .species = SPECIES_CORSOLA, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_DIG, MOVE_MIRROR_COAT, MOVE_RECOVER, MOVE_CONFUSE_RAY}, + .hpEV = 155, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000017, + .nickname = _("CORSOLA"), + .friendship = 255 + }, + { + .species = SPECIES_SANDSLASH, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_DIG, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_SAND_ATTACK}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000094, + .nickname = _("SANDSLASH"), + .friendship = 255 + }, + } + }, + { + .name = _("KAT & KIPP"), + .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, + .textColor = 4, + .speechBefore = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_NEVER, EC_WORD_LOSE, EC_WORD_EXCL}, + .speechWin = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOO_STRONG, EC_WORD_TO, EC_WORD_LOSE}, + .speechLose = {EC_WORD_WHAT, EC_WORD_HUH_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_JOKING, EC_WORD_QUES}, + .speechAfter = {EC_WORD_WAAAH, EC_WORD_WAAAH, EC_WORD_OH, EC_WORD_BIG, EC_WORD_SISTER, EC_WORD_EXCL}, + .mons = { + { + .species = SPECIES_FURRET, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_DIG, MOVE_AMNESIA, MOVE_DEFENSE_CURL, MOVE_FOLLOW_ME}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000080, + .nickname = _("FURRET"), + .friendship = 255 + }, + { + .species = SPECIES_AZUMARILL, + .heldItem = ITEM_WHITE_HERB, + .moves = {MOVE_DIVE, MOVE_LIGHT_SCREEN, MOVE_TAIL_WHIP, MOVE_DEFENSE_CURL}, + .hpEV = 155, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000014, + .nickname = _("AZUMARILL"), + .friendship = 255 + }, + { + .species = SPECIES_KINGLER, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_DIVE, MOVE_HARDEN, MOVE_LEER, MOVE_AMNESIA}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000091, + .nickname = _("KINGLER"), + .friendship = 255 + }, + { + .species = SPECIES_CLOYSTER, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_DIVE, MOVE_WITHDRAW, MOVE_PROTECT, MOVE_SUPERSONIC}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000014, + .nickname = _("CLOYSTER"), + .friendship = 255 + }, + { + .species = SPECIES_QUAGSIRE, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_DIG, MOVE_YAWN, MOVE_AMNESIA, MOVE_SAFEGUARD}, + .hpEV = 200, + .attackEV = 0, + .defenseEV = 110, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000094, + .nickname = _("QUAGSIRE"), + .friendship = 255 + }, + { + .species = SPECIES_KABUTOPS, + .heldItem = ITEM_PECHA_BERRY, + .moves = {MOVE_DIG, MOVE_SAND_ATTACK, MOVE_ENDURE, MOVE_CONFUSE_RAY}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000030, + .nickname = _("KABUTOPS"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00015d7c +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { + .flags = 0x15, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x08, + .trainers = { + { + .name = _("GEB&MEGAN"), + .facilityClass = FACILITY_CLASS_COOL_COUPLE, + .textColor = 7, + .speechBefore = {EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_OPPONENT, EC_WORD_QUES, EC_WORD_PUSHOVER, EC_WORD_HAHAHA}, + .speechWin = {EC_WORD_HAHAHA, EC_WORD_SORRY, EC_WORD_MY, EC_WORD_FRIEND, EC_WORD_TOUGH, EC_WORD_LOSS}, + .speechLose = {EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FRIEND, EC_WORD_QUES}, + .speechAfter = {EC_WORD_WON_T, EC_WORD_YOU, EC_WORD_GET, EC_WORD_LOST, EC_WORD_PLEASE, EC_WORD_QUES}, + .mons = { + { + .species = SPECIES_POLITOED, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_SURF, MOVE_HYPNOSIS, MOVE_PERISH_SONG, MOVE_SWAGGER}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000008C, + .nickname = _("POLITOED"), + .friendship = 255 + }, + { + .species = SPECIES_GYARADOS, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_HYPER_BEAM, MOVE_DRAGON_DANCE, MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000096, + .nickname = _("GYARADOS"), + .friendship = 255 + }, + { + .species = SPECIES_LAPRAS, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000F, + .nickname = _("LAPRAS"), + .friendship = 255 + }, + { + .species = SPECIES_NIDOQUEEN, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SUPERPOWER, MOVE_ROCK_SLIDE}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("NIDOQUEEN"), + .friendship = 255 + }, + { + .species = SPECIES_JYNX, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_WATER_PULSE, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("JYNX"), + .friendship = 255 + }, + { + .species = SPECIES_GIRAFARIG, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_LIGHT_SCREEN, MOVE_CRUNCH, MOVE_PSYCHIC, MOVE_REFLECT}, + .hpEV = 210, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000008C, + .nickname = _("GIRAFARIG"), + .friendship = 255 + }, + } + }, + { + .name = _("GEB&MEGAN"), + .facilityClass = FACILITY_CLASS_COOL_COUPLE, + .textColor = 7, + .speechBefore = {EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_FOE, EC_WORD_QUES, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS}, + .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, 0xFFFF}, + .speechLose = {EC_WORD_MY, EC_WORD_WORD, EC_WORD_THIS, EC_WORD_IS, EC_WORD_JUST, EC_WORD_INCREDIBLE}, + .speechAfter = {EC_WORD_WE, EC_WORD_NEED, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_SOME, EC_WORD_MORE}, + .mons = { + { + .species = SPECIES_MAROWAK, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000094, + .nickname = _("MAROWAK"), + .friendship = 255 + }, + { + .species = SPECIES_URSARING, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("URSARING"), + .friendship = 255 + }, + { + .species = SPECIES_SLOWKING, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SHADOW_BALL}, + .hpEV = 0, + .attackEV = 110, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 200, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000011, + .nickname = _("SLOWKING"), + .friendship = 255 + }, + { + .species = SPECIES_ALAKAZAM, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_PSYCHIC, MOVE_PROTECT, MOVE_LIGHT_SCREEN, MOVE_REFLECT}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000041, + .nickname = _("ALAKAZAM"), + .friendship = 255 + }, + { + .species = SPECIES_NIDOKING, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_SURF, MOVE_MEGAHORN, MOVE_THUNDERBOLT, MOVE_ICE_BEAM}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("NIDOKING"), + .friendship = 255 + }, + { + .species = SPECIES_RHYDON, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_MEGAHORN, MOVE_ROCK_SLIDE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000093, + .nickname = _("RHYDON"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x000160f4 +}; + +static const struct TrainerTowerFloor gUnknown_847FD0C = { + .flags = 0x16, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x05, + .trainers = { + { + .name = _("LISA&LEAH"), + .facilityClass = FACILITY_CLASS_TWINS_2, + .textColor = 1, + .speechBefore = {EC_WORD_ABSOLUTELY, EC_WORD_WE_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL}, + .speechWin = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, + .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_EXCUSE_ME, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_ALL, EC_WORD_TOO_STRONG, 0xFFFF}, + .mons = { + { + .species = SPECIES_POLIWAG, + .heldItem = ITEM_CHERI_BERRY, + .moves = {MOVE_SURF, MOVE_PROTECT, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000087, + .nickname = _("POLIWAG"), + .friendship = 255 + }, + { + .species = SPECIES_SQUIRTLE, + .heldItem = ITEM_MYSTIC_WATER, + .moves = {MOVE_WATER_PULSE, MOVE_PROTECT, MOVE_TOXIC, MOVE_MIRROR_COAT}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000002D, + .nickname = _("SQUIRTLE"), + .friendship = 255 + }, + { + .species = SPECIES_CHINCHOU, + .heldItem = ITEM_MAGNET, + .moves = {MOVE_SURF, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY, MOVE_THUNDERBOLT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("CHINCHOU"), + .friendship = 255 + }, + { + .species = SPECIES_NIDORAN_F, + .heldItem = ITEM_POISON_BARB, + .moves = {MOVE_WATER_PULSE, MOVE_SLUDGE_BOMB, MOVE_CRUNCH, MOVE_DIG}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("NIDORAN♀"), + .friendship = 255 + }, + { + .species = SPECIES_CLEFAIRY, + .heldItem = ITEM_WHITE_HERB, + .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_MINIMIZE}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("CLEFAIRY"), + .friendship = 255 + }, + { + .species = SPECIES_HORSEA, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_SURF, MOVE_SMOKESCREEN, MOVE_ATTRACT, MOVE_DRAGON_RAGE}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000002D, + .nickname = _("HORSEA"), + .friendship = 255 + }, + } + }, + { + .name = _("LISA&LEAH"), + .facilityClass = FACILITY_CLASS_TWINS_2, + .textColor = 1, + .speechBefore = {EC_WORD_CAN, EC_WORD_WE, EC_WORD_WIN, EC_WORD_QUES, EC_WORD_IT_S, EC_WORD_EXCITING}, + .speechWin = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY}, + .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, + .speechAfter = {EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_MOVE2(BEAT_UP), EC_WORD_ON, EC_WORD_CHILDREN}, + .mons = { + { + .species = SPECIES_WOOPER, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_SURF, MOVE_EARTHQUAKE, MOVE_YAWN, MOVE_FLASH}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000093, + .nickname = _("WOOPER"), + .friendship = 255 + }, + { + .species = SPECIES_PSYDUCK, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_SURF, MOVE_CROSS_CHOP, MOVE_HYPNOSIS, MOVE_DISABLE}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 1, + .personality = 0x00000096, + .nickname = _("PSYDUCK"), + .friendship = 255 + }, + { + .species = SPECIES_SNUBBULL, + .heldItem = ITEM_PECHA_BERRY, + .moves = {MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_CRUNCH, MOVE_SHADOW_BALL}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("SNUBBULL"), + .friendship = 255 + }, + { + .species = SPECIES_JIGGLYPUFF, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_SING, MOVE_DISABLE}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("JIGGLYPUFF"), + .friendship = 255 + }, + { + .species = SPECIES_NIDORAN_M, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_WATER_PULSE, MOVE_SLUDGE_BOMB, MOVE_HORN_DRILL, MOVE_DIG}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("NIDORAN♂"), + .friendship = 255 + }, + { + .species = SPECIES_TOTODILE, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_SURF, MOVE_PROTECT, MOVE_TOXIC, MOVE_DOUBLE_TEAM}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000002D, + .nickname = _("TOTODILE"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(15), + }, + .checksum = 0x000197d4 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { + .flags = 0x17, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_KNOCKOUT, + .prize = 0x01, + .trainers = { + { + .name = _("PRISCILLA"), + .facilityClass = FACILITY_CLASS_TUBER_3, + .textColor = 1, + .speechBefore = {EC_WORD_I_AM, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_GIRL, EC_WORD_HERE_I_COME, EC_WORD_EXCL}, + .speechWin = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DID, EC_WORD_I, EC_WORD_WIN, EC_WORD_QUES}, + .speechLose = {EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_ELLIPSIS}, + .speechAfter = {EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_NICE, EC_WORD_TRAINER, EC_WORD_THANK_YOU, EC_WORD_EXCL}, + .mons = { + { + .species = SPECIES_GOLDEEN, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_WATER_PULSE, MOVE_MEGAHORN, MOVE_SUPERSONIC, MOVE_ICE_BEAM}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000096, + .nickname = _("GOLDEEN"), + .friendship = 0 + }, + { + .species = SPECIES_SEAKING, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_SURF, MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_PROTECT}, + .hpEV = 100, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000000, + .nickname = _("SEAKING"), + .friendship = 0 + }, + { + .species = SPECIES_LANTURN, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_SURF, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ICE_BEAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 210, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000008C, + .nickname = _("LANTURN"), + .friendship = 0 + }, + { + .species = SPECIES_LANTURN, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_ICE_BEAM, MOVE_RAIN_DANCE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 210, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("LANTURN"), + .friendship = 0 + }, + { + .species = SPECIES_GOLDEEN, + .heldItem = ITEM_APICOT_BERRY, + .moves = {MOVE_WATER_PULSE, MOVE_DOUBLE_EDGE, MOVE_TOXIC, MOVE_PSYBEAM}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000000, + .nickname = _("GOLDEEN"), + .friendship = 0 + }, + { + .species = SPECIES_SEAKING, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_SURF, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_PSYBEAM}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000096, + .nickname = _("SEAKING"), + .friendship = 0 + }, + } + }, + { + .name = _("CHARLOTTE"), + .facilityClass = FACILITY_CLASS_LADY_2, + .textColor = 1, + .speechBefore = {EC_WORD_HELLO, EC_WORD_THERE, EC_WORD_I_AM, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY}, + .speechWin = {EC_WORD_OH, EC_WORD_MY, EC_WORD_MY, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SORRY}, + .speechLose = {EC_WORD_YOU_RE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY}, + .speechAfter = {EC_WORD_HOHOHO, EC_WORD_THANK_YOU, EC_WORD_FOR, EC_WORD_AN, EC_WORD_AMUSING, EC_WORD_BATTLE}, + .mons = { + { + .species = SPECIES_OCTILLERY, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_OCTAZOOKA, MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER}, + .hpEV = 55, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("OCTILLERY"), + .friendship = 255 + }, + { + .species = SPECIES_QWILFISH, + .heldItem = ITEM_PERSIM_BERRY, + .moves = {MOVE_SURF, MOVE_TOXIC, MOVE_REVENGE, MOVE_DOUBLE_TEAM}, + .hpEV = 200, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 210, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000014, + .nickname = _("QWILFISH"), + .friendship = 255 + }, + { + .species = SPECIES_REMORAID, + .heldItem = ITEM_PECHA_BERRY, + .moves = {MOVE_SURF, MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_THUNDER_WAVE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000096, + .nickname = _("REMORAID"), + .friendship = 255 + }, + { + .species = SPECIES_REMORAID, + .heldItem = ITEM_WHITE_HERB, + .moves = {MOVE_WATER_PULSE, MOVE_BLIZZARD, MOVE_FIRE_BLAST, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("REMORAID"), + .friendship = 255 + }, + { + .species = SPECIES_OCTILLERY, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_OCTAZOOKA, MOVE_SLUDGE_BOMB, MOVE_THUNDER_WAVE, MOVE_HYPER_BEAM}, + .hpEV = 155, + .attackEV = 100, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000093, + .nickname = _("OCTILLERY"), + .friendship = 255 + }, + { + .species = SPECIES_QWILFISH, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND}, + .hpEV = 100, + .attackEV = 100, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 210, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000096, + .nickname = _("QWILFISH"), + .friendship = 255 + }, + } + }, + { + .name = _("SHANIA"), + .facilityClass = FACILITY_CLASS_SWIMMER_FEMALE_2, + .textColor = 1, + .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_HEROINE, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM}, + .speechWin = {EC_WORD_AHAHA, EC_WORD_NO, EC_WORD_WAY, EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_SERIOUSLY}, + .speechLose = {EC_WORD_WHY, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LIE}, + .speechAfter = {EC_WORD_NICE, EC_WORD_BATTLE, EC_WORD_THANKS, EC_WORD_FOR, EC_WORD_ENTERTAINING, EC_WORD_ME}, + .mons = { + { + .species = SPECIES_MANTINE, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("MANTINE"), + .friendship = 255 + }, + { + .species = SPECIES_MAGIKARP, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_SPLASH, MOVE_TACKLE, MOVE_NONE, MOVE_NONE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000D, + .nickname = _("MAGIKARP"), + .friendship = 255 + }, + { + .species = SPECIES_MANTINE, + .heldItem = ITEM_MENTAL_HERB, + .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY, MOVE_ATTRACT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("MANTINE"), + .friendship = 255 + }, + { + .species = SPECIES_GYARADOS, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("GYARADOS"), + .friendship = 255 + }, + { + .species = SPECIES_MAGIKARP, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE, MOVE_NONE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000094, + .nickname = _("MAGIKARP"), + .friendship = 255 + }, + { + .species = SPECIES_GYARADOS, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("GYARADOS"), + .friendship = 255 + }, + } + }, + }, + .checksum = 0x0001521d +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { + .flags = 0x18, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_KNOCKOUT, + .prize = 0x0d, + .trainers = { + { + .name = _("BRENNAN"), + .facilityClass = FACILITY_CLASS_SAILOR_2, + .textColor = 1, + .speechBefore = {EC_WORD_TAKE, EC_WORD_THINGS, EC_WORD_EASY, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_IMPORTANT}, + .speechWin = {EC_WORD_YOU, EC_WORD_LOSE, EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_EXCL}, + .speechLose = {EC_WORD_OOPS, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_AN, EC_WORD_EASY, EC_WORD_WIN}, + .speechAfter = {EC_WORD_I, EC_WORD_DON_T, EC_MOVE(GRUDGE), EC_WORD_YOU, EC_WORD_BUT, EC_WORD_ELLIPSIS}, + .mons = { + { + .species = SPECIES_LAPRAS, + .heldItem = ITEM_CHESTO_BERRY, + .moves = {MOVE_HYDRO_PUMP, MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_REST}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 255, + .otId = 15 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x0000000F, + .nickname = _("LAPRAS"), + .friendship = 255 + }, + { + .species = SPECIES_KINGDRA, + .heldItem = ITEM_CHESTO_BERRY, + .moves = {MOVE_HYDRO_PUMP, MOVE_BLIZZARD, MOVE_DRAGON_BREATH, MOVE_REST}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000008C, + .nickname = _("KINGDRA"), + .friendship = 255 + }, + { + .species = SPECIES_MACHAMP, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HYPER_BEAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 130, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 125, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000004E, + .nickname = _("MACHAMP"), + .friendship = 255 + }, + { + .species = SPECIES_CHANSEY, + .heldItem = ITEM_ORAN_BERRY, + .moves = {MOVE_WATER_PULSE, MOVE_SOFT_BOILED, MOVE_MINIMIZE, MOVE_THUNDER_WAVE}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000005, + .nickname = _("CHANSEY"), + .friendship = 255 + }, + { + .species = SPECIES_TAUROS, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SWAGGER}, + .hpEV = 110, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("TAUROS"), + .friendship = 255 + }, + { + .species = SPECIES_SNORLAX, + .heldItem = ITEM_ORAN_BERRY, + .moves = {MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000021, + .nickname = _("SNORLAX"), + .friendship = 255 + }, + } + }, + { + .name = _("KADEN"), + .facilityClass = FACILITY_CLASS_FISHERMAN_2, + .textColor = 1, + .speechBefore = {EC_WORD_MY, EC_WORD_FISHING, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_IS, EC_WORD_FANTASTIC}, + .speechWin = {EC_WORD_MY, EC_WORD_FANTASTIC, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WINS, EC_WORD_OUT}, + .speechLose = {EC_WORD_UH_OH, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_LOST}, + .speechAfter = {EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WON_T, EC_WORD_GET, EC_WORD_ME, EC_WORD_WINS}, + .mons = { + { + .species = SPECIES_CHINCHOU, + .heldItem = ITEM_MAGNET, + .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY, MOVE_PROTECT}, + .hpEV = 100, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("CHINCHOU"), + .friendship = 255 + }, + { + .species = SPECIES_DRATINI, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_DRAGON_BREATH, MOVE_PROTECT}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("DRATINI"), + .friendship = 255 + }, + { + .species = SPECIES_SLOWPOKE, + .heldItem = ITEM_PECHA_BERRY, + .moves = {MOVE_WATER_PULSE, MOVE_YAWN, MOVE_DISABLE, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000096, + .nickname = _("SLOWPOKE"), + .friendship = 255 + }, + { + .species = SPECIES_MAGIKARP, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 23 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000017, + .nickname = _("MAGIKARP"), + .friendship = 255 + }, + { + .species = SPECIES_SEAKING, + .heldItem = ITEM_CHERI_BERRY, + .moves = {MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SUPERSONIC, MOVE_AGILITY}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 23 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000017, + .nickname = _("SEAKING"), + .friendship = 255 + }, + { + .species = SPECIES_TENTACRUEL, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_MIRROR_COAT, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_TOXIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000096, + .nickname = _("TENTACRUEL"), + .friendship = 255 + }, + } + }, + { + .name = _("EMANUEL"), + .facilityClass = FACILITY_CLASS_GENTLEMAN_2, + .textColor = 1, + .speechBefore = {EC_WORD_HMM, EC_WORD_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SKILLED, EC_WORD_QUES}, + .speechWin = {EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_RIGHT, EC_WORD_ELLIPSIS}, + .speechLose = {EC_WORD_YOU, EC_WORD_TRULY, EC_WORD_ARE, EC_WORD_A, EC_WORD_MASTER, EC_WORD_TRAINER}, + .speechAfter = {EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_THAT, EC_WORD_I_WAS, EC_WORD_YOUR, EC_WORD_OPPONENT}, + .mons = { + { + .species = SPECIES_VAPOREON, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_ATTRACT, MOVE_BITE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000014, + .nickname = _("VAPOREON"), + .friendship = 255 + }, + { + .species = SPECIES_ESPEON, + .heldItem = ITEM_CHESTO_BERRY, + .moves = {MOVE_PSYCHIC, MOVE_BITE, MOVE_REFLECT, MOVE_REST}, + .hpEV = 110, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("ESPEON"), + .friendship = 255 + }, + { + .species = SPECIES_BLISSEY, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_WATER_PULSE, MOVE_MINIMIZE, MOVE_THUNDER_WAVE, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000005, + .nickname = _("BLISSEY"), + .friendship = 255 + }, + { + .species = SPECIES_STARMIE, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_PSYCHIC}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 20 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000014, + .nickname = _("STARMIE"), + .friendship = 255 + }, + { + .species = SPECIES_PERSIAN, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_SLASH, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_FAKE_OUT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 130, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 125, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000D, + .nickname = _("PERSIAN"), + .friendship = 255 + }, + { + .species = SPECIES_AZUMARILL, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_SURF, MOVE_ENCORE, MOVE_ATTRACT, MOVE_DIG}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000000, + .nickname = _("AZUMARILL"), + .friendship = 255 + }, + } + }, + }, + .checksum = 0x0001554b +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { + .flags = 0x19, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x0c, + .trainers = { + { + .name = _("JARRETT"), + .facilityClass = FACILITY_CLASS_JUGGLER, + .textColor = 2, + .speechBefore = {EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_PARTY, EC_WORD_EXCL}, + .speechWin = {EC_WORD_CONGRATS, EC_WORD_FOR, EC_WORD_YOUR, EC_WORD_LOSS, EC_WORD_PARTY, EC_WORD_KID}, + .speechLose = {EC_WORD_NICE, EC_MOVE(SELF_DESTRUCT), EC_WORD_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_PERFECT}, + .speechAfter = {EC_WORD_WANT, EC_WORD_TO, EC_WORD_PARTY, EC_WORD_SOME, EC_WORD_MORE, EC_WORD_QUES}, + .mons = { + { + .species = SPECIES_ELECTRODE, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_EXPLOSION, MOVE_LIGHT_SCREEN, MOVE_SCREECH, MOVE_THUNDERBOLT}, + .hpEV = 10, + .attackEV = 150, + .defenseEV = 100, + .speedEV = 150, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x0000000D, + .nickname = _("ELECTRODE"), + .friendship = 255 + }, + { + .species = SPECIES_VOLTORB, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_EXPLOSION, MOVE_FLASH, MOVE_DOUBLE_TEAM, MOVE_THUNDER}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x0000000D, + .nickname = _("VOLTORB"), + .friendship = 255 + }, + { + .species = SPECIES_WEEZING, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_DESTINY_BOND, MOVE_THUNDERBOLT}, + .hpEV = 0, + .attackEV = 200, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("WEEZING"), + .friendship = 255 + }, + { + .species = SPECIES_GOLEM, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_EXPLOSION, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 150, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000007F, + .nickname = _("GOLEM"), + .friendship = 255 + }, + { + .species = SPECIES_EXEGGCUTE, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_EXPLOSION, MOVE_STUN_SPORE, MOVE_HYPNOSIS, MOVE_GIGA_DRAIN}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("EXEGGCUTE"), + .friendship = 255 + }, + { + .species = SPECIES_FORRETRESS, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000084, + .nickname = _("FORRETRESS"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00015b6a +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { + .flags = 0x1a, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x0d, + .trainers = { + { + .name = _("OWEN"), + .facilityClass = FACILITY_CLASS_SUPER_NERD, + .textColor = 2, + .speechBefore = {EC_WORD_HERE_IT_IS, EC_MOVE2(THUNDER_WAVE), EC_WORD_DON_T, EC_MOVE2(WRAP), EC_WORD_ME, EC_WORD_EXCL}, + .speechWin = {EC_WORD_ACCEPT, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_OF, EC_MOVE2(THUNDER_WAVE), EC_WORD_EXCL}, + .speechLose = {EC_MOVE2(WRAP), EC_MOVE(BIND), EC_WORD_ELECTRIC, EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, EC_WORD_AROUND}, + .speechAfter = {EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, 0xFFFF, 0xFFFF, EC_WORD_SPIRALING, EC_MOVE2(WHIRLWIND)}, + .mons = { + { + .species = SPECIES_MAGNETON, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_PROTECT, MOVE_ZAP_CANNON, MOVE_TOXIC, MOVE_SUPERSONIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 125, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 130, + .otId = 10 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x0000000A, + .nickname = _("MAGNETON"), + .friendship = 255 + }, + { + .species = SPECIES_PIKACHU, + .heldItem = ITEM_LIGHT_BALL, + .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_DOUBLE_TEAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 150, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 105, + .otId = 15 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("PIKACHU"), + .friendship = 255 + }, + { + .species = SPECIES_JOLTEON, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_DOUBLE_TEAM, MOVE_TOXIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000037, + .nickname = _("JOLTEON"), + .friendship = 255 + }, + { + .species = SPECIES_BLISSEY, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_THUNDER_WAVE, MOVE_BLIZZARD, MOVE_WATER_PULSE, MOVE_REST}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000005, + .nickname = _("BLISSEY"), + .friendship = 255 + }, + { + .species = SPECIES_PORYGON2, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_THUNDER_WAVE, MOVE_ZAP_CANNON, MOVE_PSYCHIC, MOVE_RECOVER}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 125, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 130, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000005, + .nickname = _("PORYGON2"), + .friendship = 255 + }, + { + .species = SPECIES_PORYGON, + .heldItem = ITEM_LAX_INCENSE, + .moves = {MOVE_THUNDER_WAVE, MOVE_ZAP_CANNON, MOVE_DOUBLE_TEAM, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 5 | (0 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000005, + .nickname = _("PORYGON"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x000160ec +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { + .flags = 0x1b, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_SINGLE, + .prize = 0x01, + .trainers = { + { + .name = _("LORENZO"), + .facilityClass = FACILITY_CLASS_PSYCHIC_3, + .textColor = 1, + .speechBefore = {EC_WORD_THIS, EC_WORD_POWER, EC_WORD_IS, EC_WORD_NOW, EC_WORD_COMPLETE, EC_WORD_EXCL}, + .speechWin = {EC_WORD_NO, EC_WORD_KEEN_EYE, EC_WORD_CAN, EC_WORD_STOP, EC_WORD_MY, EC_WORD_POWER}, + .speechLose = {EC_WORD_HERE_IT_IS, EC_WORD_EXCL, EC_MOVE(KINESIS), EC_WORD_EXCL, EC_WORD_ELLIPSIS, EC_WORD_WHAT}, + .speechAfter = {EC_WORD_I, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_THE, EC_MOVE(KINESIS), EC_WORD_HALL_OF_FAME}, + .mons = { + { + .species = SPECIES_MR_MIME, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN, MOVE_REFLECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("MR. MIME"), + .friendship = 255 + }, + { + .species = SPECIES_HYPNO, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_PSYCHIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 200, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000008C, + .nickname = _("HYPNO"), + .friendship = 255 + }, + { + .species = SPECIES_ALAKAZAM, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_PSYCHIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 150, + .spAttackEV = 155, + .spDefenseEV = 50, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("ALAKAZAM"), + .friendship = 255 + }, + { + .species = SPECIES_GENGAR, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_THUNDERBOLT, MOVE_SHADOW_BALL, MOVE_HYPNOSIS, MOVE_TOXIC}, + .hpEV = 0, + .attackEV = 200, + .defenseEV = 0, + .speedEV = 100, + .spAttackEV = 55, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000088, + .nickname = _("GENGAR"), + .friendship = 255 + }, + { + .species = SPECIES_GIRAFARIG, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_BODY_SLAM, MOVE_REST}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 155, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 1, + .personality = 0x00000003, + .nickname = _("GIRAFARIG"), + .friendship = 255 + }, + { + .species = SPECIES_STARMIE, + .heldItem = ITEM_APICOT_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_SURF, MOVE_RECOVER, MOVE_ICE_BEAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 55, + .speedEV = 250, + .spAttackEV = 150, + .spDefenseEV = 55, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("STARMIE"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x0001624b +}; + +static const struct TrainerTowerFloor gUnknown_848144C = { + .flags = 0x1c, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x0b, + .trainers = { + { + .name = _("NIA & CARL"), + .facilityClass = FACILITY_CLASS_COOL_COUPLE, + .textColor = 4, + .speechBefore = {EC_WORD_HERE_GOES, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_ROMANTIC, EC_WORD_HERO, EC_WORD_STRATEGY}, + .speechWin = {EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_DIGITAL, EC_WORD_HYPER, EC_WORD_MODE, EC_WORD_POWER}, + .speechLose = {EC_WORD_MY, EC_WORD_PERFECT, EC_WORD_STRATEGY, EC_WORD_WAS, EC_MOVE2(BEAT_UP), EC_WORD_QUES}, + .speechAfter = {EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_STRATEGY, EC_WORD_WAS, EC_WORD_DESTROYED, EC_WORD_ELLIPSIS}, + .mons = { + { + .species = SPECIES_MUK, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x00000007, + .nickname = _("MUK"), + .friendship = 255 + }, + { + .species = SPECIES_GENGAR, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY, MOVE_PSYCHIC, MOVE_EXPLOSION}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 155, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000015, + .nickname = _("GENGAR"), + .friendship = 255 + }, + { + .species = SPECIES_ALAKAZAM, + .heldItem = ITEM_GANLON_BERRY, + .moves = {MOVE_THUNDER_PUNCH, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_REFLECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("ALAKAZAM"), + .friendship = 255 + }, + { + .species = SPECIES_JOLTEON, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_THUNDERBOLT, MOVE_FLAIL, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM}, + .hpEV = 0, + .attackEV = 50, + .defenseEV = 100, + .speedEV = 160, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000005, + .nickname = _("JOLTEON"), + .friendship = 255 + }, + { + .species = SPECIES_ELECTRODE, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_EXPLOSION, MOVE_MIRROR_COAT, MOVE_LIGHT_SCREEN}, + .hpEV = 0, + .attackEV = 55, + .defenseEV = 0, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000014, + .nickname = _("ELECTRODE"), + .friendship = 255 + }, + { + .species = SPECIES_RAICHU, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_COUNTER, MOVE_REVERSAL, MOVE_LIGHT_SCREEN}, + .hpEV = 0, + .attackEV = 55, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("RAICHU"), + .friendship = 255 + }, + } + }, + { + .name = _("NIA & CARL"), + .facilityClass = FACILITY_CLASS_COOL_COUPLE, + .textColor = 4, + .speechBefore = {EC_WORD_MASTER, EC_WORD_COMPLETE, EC_WORD_FASHION, EC_WORD_SYSTEM, EC_WORD_START, EC_WORD_EXCL}, + .speechWin = {EC_WORD_THAT_S_IT_EXCL, EC_WORD_THE, EC_WORD_POWER, EC_WORD_OF, EC_WORD_OUR, EC_WORD_SYSTEM}, + .speechLose = {EC_WORD_OKAY, EC_WORD_EXCL, EC_MOVE(THUNDERBOLT), EC_WORD_RUN_AWAY, EC_WORD_SYSTEM, EC_WORD_START}, + .speechAfter = {EC_WORD_GO, EC_WORD_ON, EC_WORD_PLEASE, EC_WORD_EXCL, EC_WORD_TCH, EC_WORD_ELLIPSIS}, + .mons = { + { + .species = SPECIES_KANGASKHAN, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_SHADOW_BALL, MOVE_REVERSAL, MOVE_ENDURE, MOVE_FAKE_OUT}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 105, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 150, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("KANGASKHAN"), + .friendship = 255 + }, + { + .species = SPECIES_TAUROS, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_SURF, MOVE_REST}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("TAUROS"), + .friendship = 255 + }, + { + .species = SPECIES_MILTANK, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_MILK_DRINK, MOVE_ROCK_TOMB}, + .hpEV = 0, + .attackEV = 155, + .defenseEV = 50, + .speedEV = 250, + .spAttackEV = 0, + .spDefenseEV = 55, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("MILTANK"), + .friendship = 255 + }, + { + .species = SPECIES_RHYDON, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_ROCK_TOMB}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x00000080, + .nickname = _("RHYDON"), + .friendship = 255 + }, + { + .species = SPECIES_DRAGONITE, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_BLIZZARD, MOVE_SURF, MOVE_OUTRAGE, MOVE_FLAMETHROWER}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 0, + .personality = 0x00000091, + .nickname = _("DRAGONITE"), + .friendship = 255 + }, + { + .species = SPECIES_LAPRAS, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_THUNDERBOLT, MOVE_BLIZZARD, MOVE_SURF, MOVE_HORN_DRILL}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 31, + .attackIV = 31, + .defenseIV = 31, + .speedIV = 31, + .spAttackIV = 31, + .spDefenseIV = 31, + .abilityNum = 1, + .personality = 0x00000091, + .nickname = _("LAPRAS"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00016360 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { + .flags = 0x1d, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x03, + .trainers = { + { + .name = _("AXE & REN"), + .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, + .textColor = 2, + .speechBefore = {EC_WORD_IT_S, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_WORD_AWFULLY, EC_WORD_COLD}, + .speechWin = {EC_WORD_THAT_S, EC_WORD_THAT, EC_WORD_MAN, EC_WORD_I_AM, EC_WORD_COLD, EC_WORD_EXCL}, + .speechLose = {EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_ELLIPSIS}, + .speechAfter = {EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_HAS, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY}, + .mons = { + { + .species = SPECIES_LANTURN, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_THUNDER, MOVE_ICE_BEAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("LANTURN"), + .friendship = 255 + }, + { + .species = SPECIES_MANTINE, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ICE_BEAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 155, + .spAttackEV = 100, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000014, + .nickname = _("MANTINE"), + .friendship = 255 + }, + { + .species = SPECIES_DEWGONG, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_SHEER_COLD, MOVE_BLIZZARD}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 55, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000011, + .nickname = _("DEWGONG"), + .friendship = 255 + }, + { + .species = SPECIES_CLOYSTER, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_ICE_BEAM, MOVE_HYPER_BEAM}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000011, + .nickname = _("CLOYSTER"), + .friendship = 255 + }, + { + .species = SPECIES_TENTACRUEL, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 100, + .speedEV = 100, + .spAttackEV = 255, + .spDefenseEV = 55, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("TENTACRUEL"), + .friendship = 255 + }, + { + .species = SPECIES_GYARADOS, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_RAIN_DANCE, MOVE_SURF, MOVE_DRAGON_DANCE, MOVE_RETURN}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("GYARADOS"), + .friendship = 255 + }, + } + }, + { + .name = _("AXE & REN"), + .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, + .textColor = 2, + .speechBefore = {EC_WORD_OUR, EC_WORD_SWIFT_SWIM, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_COLD}, + .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_HOT}, + .speechLose = {EC_WORD_I_AM, EC_WORD_HUNGRY, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_HOT, EC_WORD_EATS}, + .speechAfter = {EC_WORD_SISTER, EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_HOT, EC_WORD_PLEASE}, + .mons = { + { + .species = SPECIES_ELECTABUZZ, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_THUNDER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_LIGHT_SCREEN}, + .hpEV = 0, + .attackEV = 155, + .defenseEV = 155, + .speedEV = 100, + .spAttackEV = 100, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000040, + .nickname = _("ELECTABUZZ"), + .friendship = 255 + }, + { + .species = SPECIES_MAGNETON, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_THUNDER, MOVE_SONIC_BOOM, MOVE_METAL_SOUND, MOVE_REFLECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x0000000A, + .nickname = _("MAGNETON"), + .friendship = 255 + }, + { + .species = SPECIES_PORYGON, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_THUNDER, MOVE_PSYCHIC, MOVE_BLIZZARD, MOVE_PROTECT}, + .hpEV = 255, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000011, + .nickname = _("PORYGON"), + .friendship = 255 + }, + { + .species = SPECIES_DRAGONAIR, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_THUNDER, MOVE_SURF, MOVE_BLIZZARD, MOVE_OUTRAGE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 50, + .speedEV = 155, + .spAttackEV = 255, + .spDefenseEV = 50, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("DRAGONAIR"), + .friendship = 255 + }, + { + .species = SPECIES_PERSIAN, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_THUNDER, MOVE_FAKE_OUT, MOVE_WATER_PULSE, MOVE_RETURN}, + .hpEV = 0, + .attackEV = 155, + .defenseEV = 0, + .speedEV = 200, + .spAttackEV = 155, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000B, + .nickname = _("PERSIAN"), + .friendship = 255 + }, + { + .species = SPECIES_STARMIE, + .heldItem = ITEM_GANLON_BERRY, + .moves = {MOVE_THUNDER, MOVE_SURF, MOVE_RECOVER, MOVE_REFLECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 95, + .speedEV = 255, + .spAttackEV = 100, + .spDefenseEV = 60, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000005, + .nickname = _("STARMIE"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00015272 +}; + +static const struct TrainerTowerFloor gUnknown_8481C0C = { + .flags = 0x1e, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_DOUBLE, + .prize = 0x05, + .trainers = { + { + .name = _("KATI & GEB"), + .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, + .textColor = 2, + .speechBefore = {EC_WORD_WELCOME, EC_WORD_TO, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_MOVE2(THUNDER_WAVE), EC_MOVE(SANDSTORM)}, + .speechWin = {EC_WORD_LALALA, EC_WORD_LALALA, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LALALA, EC_WORD_LIFE}, + .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_MY, EC_MOVE2(FRUSTRATION)}, + .speechAfter = {EC_WORD_YOU_RE, EC_WORD_JUST, EC_WORD_A_LITTLE, EC_WORD_KID, EC_WORD_AHAHA, EC_WORD_EXCL}, + .mons = { + { + .species = SPECIES_FLAAFFY, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_ATTRACT, MOVE_PROTECT, MOVE_THUNDERBOLT, MOVE_REFLECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000084, + .nickname = _("FLAAFFY"), + .friendship = 255 + }, + { + .species = SPECIES_QUAGSIRE, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_ATTRACT, MOVE_SURF, MOVE_AMNESIA, MOVE_BLIZZARD}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000093, + .nickname = _("QUAGSIRE"), + .friendship = 255 + }, + { + .species = SPECIES_PIKACHU, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_ATTRACT, MOVE_REVERSAL, MOVE_THUNDERBOLT, MOVE_IRON_TAIL}, + .hpEV = 0, + .attackEV = 155, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("PIKACHU"), + .friendship = 255 + }, + { + .species = SPECIES_ELECTABUZZ, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_ATTRACT, MOVE_COUNTER, MOVE_ICE_PUNCH, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 150, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 105, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000046, + .nickname = _("ELECTABUZZ"), + .friendship = 255 + }, + { + .species = SPECIES_TOGETIC, + .heldItem = ITEM_KINGS_ROCK, + .moves = {MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_ANCIENT_POWER, MOVE_WATER_PULSE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x0000002D, + .nickname = _("TOGETIC"), + .friendship = 255 + }, + { + .species = SPECIES_GOLDUCK, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_ATTRACT, MOVE_SURF, MOVE_DIG, MOVE_CROSS_CHOP}, + .hpEV = 0, + .attackEV = 155, + .defenseEV = 50, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 50, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000080, + .nickname = _("GOLDUCK"), + .friendship = 255 + }, + } + }, + { + .name = _("KATI & GEB"), + .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, + .textColor = 2, + .speechBefore = {EC_WORD_I_AM, EC_WORD_PLUS, EC_WORD_YOU_RE, EC_WORD_MINUS, EC_WORD_LOVEY_DOVEY, EC_WORD_MAGNET_PULL}, + .speechWin = {EC_WORD_DON_T, EC_WORD_STOP, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LOCOMOTIVE, EC_WORD_EXCL}, + .speechLose = {EC_WORD_HIS, EC_WORD_CRY, EC_WORD_HAS, EC_WORD_CUTE_CHARM, EC_WORD_TOO, EC_WORD_EXCL}, + .speechAfter = {EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_TIME, EC_WORD_TO, EC_WORD_TALK, EC_WORD_QUES}, + .mons = { + { + .species = SPECIES_PICHU, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_ATTRACT, MOVE_PROTECT, MOVE_SWEET_KISS, MOVE_REVERSAL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000003, + .nickname = _("PICHU"), + .friendship = 255 + }, + { + .species = SPECIES_ELEKID, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_ATTRACT, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 130, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 125, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("ELEKID"), + .friendship = 255 + }, + { + .species = SPECIES_TOGEPI, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_ATTRACT, MOVE_PROTECT, MOVE_YAWN, MOVE_WATER_PULSE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x0000000F, + .nickname = _("TOGEPI"), + .friendship = 255 + }, + { + .species = SPECIES_PSYDUCK, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_ATTRACT, MOVE_PROTECT, MOVE_DIG, MOVE_DIVE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("PSYDUCK"), + .friendship = 255 + }, + { + .species = SPECIES_MAREEP, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_ATTRACT, MOVE_PROTECT, MOVE_LIGHT_SCREEN, MOVE_THUNDERBOLT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("MAREEP"), + .friendship = 255 + }, + { + .species = SPECIES_WOOPER, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_ATTRACT, MOVE_PROTECT, MOVE_SURF, MOVE_YAWN}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 10, + .attackIV = 10, + .defenseIV = 10, + .speedIV = 10, + .spAttackIV = 10, + .spDefenseIV = 10, + .abilityNum = 1, + .personality = 0x00000007, + .nickname = _("WOOPER"), + .friendship = 255 + }, + } + }, + DUMMY_TOWER_TEAM(0), + }, + .checksum = 0x00015966 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { + .flags = 0x1f, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_KNOCKOUT, + .prize = 0x07, + .trainers = { + { + .name = _("BEN"), + .facilityClass = FACILITY_CLASS_ROCKER, + .textColor = 1, + .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, + .speechWin = {EC_WORD_STATIC, EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YES, EC_WORD_IT, EC_WORD_IS}, + .speechLose = {EC_WORD_ELECTRIC, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_TELEVISION, EC_WORD_I_AM}, + .speechAfter = {EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_WORD_NATURAL, EC_WORD_POWER}, + .mons = { + { + .species = SPECIES_ELECTRODE, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_MIRROR_COAT, MOVE_EXPLOSION, MOVE_THUNDER_WAVE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 55, + .speedEV = 255, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000014, + .nickname = _("ELECTRODE"), + .friendship = 255 + }, + { + .species = SPECIES_ELECTABUZZ, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_PSYCHIC, MOVE_ICE_PUNCH}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 155, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000F, + .nickname = _("ELECTABUZZ"), + .friendship = 255 + }, + { + .species = SPECIES_LANTURN, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_HYDRO_PUMP}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 125, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 130, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000008E, + .nickname = _("LANTURN"), + .friendship = 255 + }, + { + .species = SPECIES_MAGNETON, + .heldItem = ITEM_LIECHI_BERRY, + .moves = {MOVE_ZAP_CANNON, MOVE_HYPER_BEAM, MOVE_LOCK_ON, MOVE_SUPERSONIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 55, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000014, + .nickname = _("MAGNETON"), + .friendship = 255 + }, + { + .species = SPECIES_RAICHU, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_DOUBLE_EDGE, MOVE_MEGA_KICK, MOVE_REVERSAL, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 80, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 75, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000008A, + .nickname = _("RAICHU"), + .friendship = 255 + }, + { + .species = SPECIES_AMPHAROS, + .heldItem = ITEM_SHELL_BELL, + .moves = {MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_COUNTER, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 200, + .defenseEV = 150, + .speedEV = 0, + .spAttackEV = 10, + .spDefenseEV = 150, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("AMPHAROS"), + .friendship = 255 + }, + } + }, + { + .name = _("CAMDEN"), + .facilityClass = FACILITY_CLASS_ENGINEER, + .textColor = 1, + .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, + .speechWin = {EC_WORD_A, EC_MOVE(THUNDERBOLT), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_TOO, EC_WORD_EXCL}, + .speechLose = {EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_WIRELESS, EC_WORD_LINK}, + .speechAfter = {EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_WORD_TREASURE, EC_WORD_EXCL}, + .mons = { + { + .species = SPECIES_GRANBULL, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 55, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("GRANBULL"), + .friendship = 255 + }, + { + .species = SPECIES_PERSIAN, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_THUNDERBOLT, MOVE_WATER_PULSE, MOVE_HYPNOSIS, MOVE_SLASH}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 55, + .speedEV = 255, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("PERSIAN"), + .friendship = 255 + }, + { + .species = SPECIES_LICKITUNG, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_PROTECT, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL}, + .hpEV = 200, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 55, + .spDefenseEV = 0, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("LICKITUNG"), + .friendship = 255 + }, + { + .species = SPECIES_RATICATE, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_HYPER_FANG, MOVE_SUPER_FANG, MOVE_REVERSAL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 100, + .speedEV = 50, + .spAttackEV = 0, + .spDefenseEV = 105, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000094, + .nickname = _("RATICATE"), + .friendship = 255 + }, + { + .species = SPECIES_PRIMEAPE, + .heldItem = ITEM_SCOPE_LENS, + .moves = {MOVE_THUNDERBOLT, MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 130, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 125, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("PRIMEAPE"), + .friendship = 255 + }, + { + .species = SPECIES_KANGASKHAN, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_SURF, MOVE_CRUSH_CLAW, MOVE_REST}, + .hpEV = 0, + .attackEV = 100, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000011, + .nickname = _("KANGASKHAN"), + .friendship = 255 + }, + } + }, + { + .name = _("ZACKERY"), + .facilityClass = FACILITY_CLASS_SCIENTIST, + .textColor = 1, + .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, + .speechWin = {EC_MOVE2(THUNDER_SHOCK), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES}, + .speechLose = {EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_WORD_EXCL_EXCL}, + .speechAfter = {EC_WORD_ALL, EC_WORD_TOGETHER, EC_WORD_NOW, EC_WORD_EXCL, EC_MOVE(SPARK), EC_MOVE(SPARK)}, + .mons = { + { + .species = SPECIES_WEEZING, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_SHADOW_BALL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 0, + .speedEV = 0, + .spAttackEV = 155, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("WEEZING"), + .friendship = 255 + }, + { + .species = SPECIES_MUK, + .heldItem = ITEM_LEFTOVERS, + .moves = {MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN, MOVE_CURSE}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 150, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 105, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 1, + .personality = 0x00000084, + .nickname = _("MUK"), + .friendship = 255 + }, + { + .species = SPECIES_GENGAR, + .heldItem = ITEM_PETAYA_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_WILL_O_WISP}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 250, + .spAttackEV = 155, + .spDefenseEV = 105, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("GENGAR"), + .friendship = 255 + }, + { + .species = SPECIES_MISDREAVUS, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_PSYCHIC, MOVE_GRUDGE, MOVE_CONFUSE_RAY, MOVE_DESTINY_BOND}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 0, + .speedEV = 150, + .spAttackEV = 105, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x0000000A, + .nickname = _("MISDREAVUS"), + .friendship = 255 + }, + { + .species = SPECIES_CROBAT, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_SLUDGE_BOMB, MOVE_CONFUSE_RAY, MOVE_GIGA_DRAIN, MOVE_TOXIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 110, + .spAttackEV = 0, + .spDefenseEV = 200, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000087, + .nickname = _("CROBAT"), + .friendship = 255 + }, + { + .species = SPECIES_HAUNTER, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_DESTINY_BOND, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_TOXIC}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 20, + .attackIV = 20, + .defenseIV = 20, + .speedIV = 20, + .spAttackIV = 20, + .spDefenseIV = 20, + .abilityNum = 0, + .personality = 0x00000091, + .nickname = _("HAUNTER"), + .friendship = 255 + }, + } + }, + }, + .checksum = 0x00014f49 +}; + +static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { + .flags = 0x20, + .floorIdx = 8, + .challengeType = CHALLENGE_TYPE_KNOCKOUT, + .prize = 0x0e, + .trainers = { + { + .name = _("MAURA"), + .facilityClass = FACILITY_CLASS_BEAUTY_2, + .textColor = 2, + .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_GROUP, EC_WORD_LEADER, EC_WORD_EXCL, 0xFFFF}, + .speechWin = {EC_WORD_WHAT, EC_WORD_AM, EC_WORD_I, EC_WORD_LEADER, EC_WORD_OF, EC_WORD_QUES}, + .speechLose = {EC_WORD_I_AM, EC_WORD_NO, EC_WORD_LEADER, EC_WORD_IT_S, EC_WORD_A_LITTLE, EC_WORD_LIE}, + .speechAfter = {EC_WORD_HEY, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_GROUND, EC_WORD_IS, EC_WORD_SLIMY}, + .mons = { + { + .species = SPECIES_PICHU, + .heldItem = ITEM_FOCUS_BAND, + .moves = {MOVE_THUNDER_SHOCK, MOVE_THUNDER_WAVE, MOVE_SWEET_KISS, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000005, + .nickname = _("PICHU"), + .friendship = 255 + }, + { + .species = SPECIES_MAREEP, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_THUNDER_SHOCK, MOVE_CHARGE, MOVE_PROTECT, MOVE_RETURN}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("MAREEP"), + .friendship = 255 + }, + { + .species = SPECIES_IGGLYBUFF, + .heldItem = ITEM_QUICK_CLAW, + .moves = {MOVE_SING, MOVE_SWEET_KISS, MOVE_PRESENT, MOVE_PROTECT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("IGGLYBUFF"), + .friendship = 255 + }, + { + .species = SPECIES_CLEFFA, + .heldItem = ITEM_LAX_INCENSE, + .moves = {MOVE_SING, MOVE_SWEET_KISS, MOVE_ENCORE, MOVE_METRONOME}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("CLEFFA"), + .friendship = 255 + }, + { + .species = SPECIES_NIDORAN_F, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_CRUNCH, MOVE_DIG, MOVE_FLATTER, MOVE_ATTRACT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("NIDORAN♀"), + .friendship = 255 + }, + { + .species = SPECIES_NIDORAN_M, + .heldItem = ITEM_SITRUS_BERRY, + .moves = {MOVE_HORN_DRILL, MOVE_SLUDGE_BOMB, MOVE_FLATTER, MOVE_ATTRACT}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 255, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 255, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("NIDORAN♂"), + .friendship = 255 + }, + } + }, + { + .name = _("MIKAELA"), + .facilityClass = FACILITY_CLASS_LASS_2, + .textColor = 1, + .speechBefore = {EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_THE, EC_WORD_NO_1, EC_WORD_TRAINER, EC_WORD_HERE}, + .speechWin = {EC_WORD_NEVER, EC_WORD_SAID, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_AT}, + .speechLose = {EC_WORD_NEXT, EC_WORD_TIME, EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_OVERWHELMING}, + .speechAfter = {EC_WORD_YOU, EC_MOVE2(SPIT_UP), EC_WORD_ME, EC_WORD_AS_IF, EC_WORD_I_AM, EC_WORD_NOTHING}, + .mons = { + { + .species = SPECIES_NIDORINO, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_SHOCK_WAVE, MOVE_HORN_DRILL, MOVE_ICE_BEAM, MOVE_IRON_TAIL}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("NIDORINO"), + .friendship = 255 + }, + { + .species = SPECIES_NIDORINA, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_SHOCK_WAVE, MOVE_CRUNCH, MOVE_BODY_SLAM, MOVE_COUNTER}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("NIDORINA"), + .friendship = 255 + }, + { + .species = SPECIES_PIKACHU, + .heldItem = ITEM_LIGHT_BALL, + .moves = {MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COUNTER, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 200, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 55, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000011, + .nickname = _("PIKACHU"), + .friendship = 255 + }, + { + .species = SPECIES_FLAAFFY, + .heldItem = ITEM_BRIGHT_POWDER, + .moves = {MOVE_SHOCK_WAVE, MOVE_DOUBLE_TEAM, MOVE_SEISMIC_TOSS, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 150, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("FLAAFFY"), + .friendship = 255 + }, + { + .species = SPECIES_JIGGLYPUFF, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_SHOCK_WAVE, MOVE_SHADOW_BALL, MOVE_FOCUS_PUNCH, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 150, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 105, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000016, + .nickname = _("JIGGLYPUFF"), + .friendship = 255 + }, + { + .species = SPECIES_CLEFAIRY, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_SHOCK_WAVE, MOVE_METEOR_MASH, MOVE_MOONLIGHT, MOVE_BODY_SLAM}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 155, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("CLEFAIRY"), + .friendship = 255 + }, + } + }, + { + .name = _("FLINT"), + .facilityClass = FACILITY_CLASS_ENGINEER, + .textColor = 4, + .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(MILK_DRINK), EC_WORD_WORLD, EC_WORD_LEADER, EC_WORD_EXCL}, + .speechWin = {EC_WORD_I_VE, EC_WORD_WON, EC_WORD_THIS, EC_MOVE2(MILK_DRINK), EC_WORD_MATCH, EC_WORD_EXCL}, + .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_DRINK, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_DRINKS}, + .speechAfter = {EC_WORD_WHOAH, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_DROOLING, EC_WORD_ALL, EC_WORD_OVER}, + .mons = { + { + .species = SPECIES_WIGGLYTUFF, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_WATER_PULSE, MOVE_FLAMETHROWER}, + .hpEV = 0, + .attackEV = 0, + .defenseEV = 155, + .speedEV = 0, + .spAttackEV = 255, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x000000CF, + .nickname = _("WIGGLYTUFF"), + .friendship = 255 + }, + { + .species = SPECIES_CLEFABLE, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_SOFT_BOILED, MOVE_METEOR_MASH, MOVE_DOUBLE_EDGE}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 100, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 150, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x000000CF, + .nickname = _("CLEFABLE"), + .friendship = 255 + }, + { + .species = SPECIES_NIDOQUEEN, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_SUPERPOWER, MOVE_SURF}, + .hpEV = 0, + .attackEV = 200, + .defenseEV = 110, + .speedEV = 0, + .spAttackEV = 100, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000007, + .nickname = _("NIDOQUEEN"), + .friendship = 255 + }, + { + .species = SPECIES_NIDOKING, + .heldItem = ITEM_CHOICE_BAND, + .moves = {MOVE_THUNDERBOLT, MOVE_HYPER_BEAM, MOVE_MEGAHORN, MOVE_SHADOW_BALL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 150, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 100, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000002, + .nickname = _("NIDOKING"), + .friendship = 255 + }, + { + .species = SPECIES_RAICHU, + .heldItem = ITEM_SALAC_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE}, + .hpEV = 0, + .attackEV = 155, + .defenseEV = 150, + .speedEV = 100, + .spAttackEV = 0, + .spDefenseEV = 105, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("RAICHU"), + .friendship = 255 + }, + { + .species = SPECIES_AMPHAROS, + .heldItem = ITEM_LUM_BERRY, + .moves = {MOVE_THUNDERBOLT, MOVE_REST, MOVE_BODY_SLAM, MOVE_IRON_TAIL}, + .hpEV = 0, + .attackEV = 255, + .defenseEV = 150, + .speedEV = 0, + .spAttackEV = 0, + .spDefenseEV = 105, + .otId = 0 | (4096 << 16), + .hpIV = 15, + .attackIV = 15, + .defenseIV = 15, + .speedIV = 15, + .spAttackIV = 15, + .spDefenseIV = 15, + .abilityNum = 0, + .personality = 0x00000080, + .nickname = _("AMPHAROS"), + .friendship = 255 + }, + } + }, + }, + .checksum = 0x00016b80 +}; + +const struct EReaderTrainerTowerSetSubstruct gTrainerTowerLocalHeader = { + .numFloors = MAX_TRAINER_TOWER_FLOORS, + .id = 1 +}; + +const struct TrainerTowerFloor *const gTrainerTowerFloors[NUM_TOWER_CHALLENGE_TYPES][MAX_TRAINER_TOWER_FLOORS] = { + [CHALLENGE_TYPE_SINGLE] = { + &sTrainerTowerFloor_Single_1, + &sTrainerTowerFloor_Single_2, + &sTrainerTowerFloor_Single_3, + &sTrainerTowerFloor_Single_4, + &sTrainerTowerFloor_Single_5, + &sTrainerTowerFloor_Single_6, + &sTrainerTowerFloor_Single_7, + &sTrainerTowerFloor_Single_8 + }, + [CHALLENGE_TYPE_DOUBLE] = { + &sTrainerTowerFloor_Double_1, + &sTrainerTowerFloor_Double_2, + &sTrainerTowerFloor_Double_3, + &sTrainerTowerFloor_Double_4, + &sTrainerTowerFloor_Double_5, + &sTrainerTowerFloor_Double_6, + &sTrainerTowerFloor_Double_7, + &sTrainerTowerFloor_Double_8 + }, + [CHALLENGE_TYPE_KNOCKOUT] = { + &sTrainerTowerFloor_Knockout_1, + &sTrainerTowerFloor_Knockout_2, + &sTrainerTowerFloor_Knockout_3, + &sTrainerTowerFloor_Knockout_4, + &sTrainerTowerFloor_Knockout_5, + &sTrainerTowerFloor_Knockout_6, + &sTrainerTowerFloor_Knockout_7, + &sTrainerTowerFloor_Knockout_8 + }, + [CHALLENGE_TYPE_MIXED] = { + &sTrainerTowerFloor_Mixed_1, + &sTrainerTowerFloor_Mixed_2, + &sTrainerTowerFloor_Mixed_3, + &sTrainerTowerFloor_Double_8, + &sTrainerTowerFloor_Mixed_5, + &sTrainerTowerFloor_Knockout_8, + &sTrainerTowerFloor_Double_3, + &sTrainerTowerFloor_Knockout_2 + } +}; From 46a98a8f8dd73586a6ea77670d74a534dca30419 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Apr 2021 18:54:52 -0400 Subject: [PATCH 22/28] Modern gcc is just as dumb as agbcc --- src/trainer_tower_sets.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/trainer_tower_sets.c b/src/trainer_tower_sets.c index ceadafa08..b0bf0838a 100644 --- a/src/trainer_tower_sets.c +++ b/src/trainer_tower_sets.c @@ -1,14 +1,16 @@ #include "global.h" #include "cereader_tool.h" #include "trainer_tower.h" +#include "text.h" #include "constants/easy_chat.h" #include "constants/items.h" #include "constants/moves.h" #include "constants/trainer_tower.h" #include "constants/facility_trainer_classes.h" -#define DUMMY_TOWER_MON(iv) ((struct BattleTowerPokemon){.hpIV = iv, .attackIV = iv, .defenseIV = iv, .speedIV = iv, .spAttackIV = iv, .spDefenseIV = iv, .nickname = _("$$$$$$$$$$")}) -#define DUMMY_TOWER_TEAM(iv) ((struct TrainerTowerTrainer){.name = _(), .textColor = 1, .speechBefore = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechAfter = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .mons = {DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv)}}) +// Dummy strings must be declared explicitly for the sake of modern gcc +#define DUMMY_TOWER_MON(iv) {.hpIV = iv, .attackIV = iv, .defenseIV = iv, .speedIV = iv, .spAttackIV = iv, .spDefenseIV = iv, .nickname = _("$$$$$$$$$$")} +#define DUMMY_TOWER_TEAM(iv) {.name = _(""), .textColor = 1, .speechBefore = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechAfter = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .mons = {DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv)}} static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .flags = 0x01, From 9a91476b81b559db70c9f9cc4467439b55244beb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Apr 2021 20:44:15 -0400 Subject: [PATCH 23/28] Improve documentation of trainer tower sets --- include/cereader_tool.h | 2 +- include/constants/trainer_tower.h | 16 + src/trainer_tower_sets.c | 912 +++++++++++++++--------------- 3 files changed, 473 insertions(+), 457 deletions(-) diff --git a/include/cereader_tool.h b/include/cereader_tool.h index c7d1fcca9..5dd0a7589 100644 --- a/include/cereader_tool.h +++ b/include/cereader_tool.h @@ -18,7 +18,7 @@ struct TrainerTowerTrainer struct TrainerTowerFloor { - /* 0x000 */ u8 flags; + /* 0x000 */ u8 id; /* 0x001 */ u8 floorIdx; /* 0x002 */ u8 challengeType; /* 0x003 */ u8 prize; diff --git a/include/constants/trainer_tower.h b/include/constants/trainer_tower.h index 823adcf3e..ea0039ea1 100644 --- a/include/constants/trainer_tower.h +++ b/include/constants/trainer_tower.h @@ -11,6 +11,22 @@ #define CHALLENGE_STATUS_UNK 1 // Never set, possibly e-Card related #define CHALLENGE_STATUS_NORMAL 2 // Not started or ongoing +#define TTPRIZE_HP_UP 0 +#define TTPRIZE_PROTEIN 1 +#define TTPRIZE_IRON 2 +#define TTPRIZE_CARBOS 3 +#define TTPRIZE_CALCIUM 4 +#define TTPRIZE_ZINC 5 +#define TTPRIZE_BRIGHT_POWDER 6 +#define TTPRIZE_WHITE_HERB 7 +#define TTPRIZE_MENTAL_HERB 8 +#define TTPRIZE_CHOICE_BAND 9 +#define TTPRIZE_KINGS_ROCK 10 +#define TTPRIZE_SCOPE_LENS 11 +#define TTPRIZE_METAL_COAT 12 +#define TTPRIZE_DRAGON_SCALE 13 +#define TTPRIZE_UP_GRADE 14 + #define MAX_TRAINER_TOWER_FLOORS 8 #define MAX_TRAINERS_PER_FLOOR 3 diff --git a/src/trainer_tower_sets.c b/src/trainer_tower_sets.c index b0bf0838a..119950d7f 100644 --- a/src/trainer_tower_sets.c +++ b/src/trainer_tower_sets.c @@ -13,10 +13,10 @@ #define DUMMY_TOWER_TEAM(iv) {.name = _(""), .textColor = 1, .speechBefore = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechAfter = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .mons = {DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv)}} static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { - .flags = 0x01, - .floorIdx = 8, + .id = 1, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x07, + .prize = TTPRIZE_WHITE_HERB, .trainers = { { .name = _("COLE"), @@ -45,7 +45,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("RATICATE"), .friendship = 255 }, @@ -67,7 +67,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000056, + .personality = 0x56, // MALE HASTY .nickname = _("MAGMAR"), .friendship = 255 }, @@ -89,7 +89,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("MAGCARGO"), .friendship = 255 }, @@ -111,7 +111,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000087, + .personality = 0x87, // MALE TIMID .nickname = _("PRIMEAPE"), .friendship = 255 }, @@ -133,7 +133,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000081, + .personality = 0x81, // MALE NAUGHTY .nickname = _("GOLBAT"), .friendship = 255 }, @@ -155,7 +155,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("SLOWBRO"), .friendship = 255 }, @@ -168,10 +168,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { - .flags = 0x02, - .floorIdx = 8, + .id = 2, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x0d, + .prize = TTPRIZE_DRAGON_SCALE, .trainers = { { .name = _("JAC"), @@ -200,7 +200,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("MEOWTH"), .friendship = 255 }, @@ -222,7 +222,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("FLAREON"), .friendship = 255 }, @@ -244,7 +244,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // GENDERLESS RELAXED .nickname = _("PORYGON"), .friendship = 255 }, @@ -266,7 +266,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000010, + .personality = 0x10, // FEMALE MILD .nickname = _("CHANSEY"), .friendship = 255 }, @@ -288,7 +288,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000085, + .personality = 0x85, // MALE IMPISH .nickname = _("FARFETCH'D"), .friendship = 255 }, @@ -310,7 +310,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000082, + .personality = 0x82, // MALE BOLD .nickname = _("MR. MIME"), .friendship = 255 }, @@ -323,10 +323,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { }; static const struct TrainerTowerFloor gUnknown_847B36C = { - .flags = 0x03, - .floorIdx = 8, + .id = 3, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x02, + .prize = TTPRIZE_IRON, .trainers = { { .name = _("MILY"), @@ -355,7 +355,7 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000008, + .personality = 0x08, // FEMALE IMPISH .nickname = _("CHANSEY"), .friendship = 255 }, @@ -377,7 +377,7 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("CLEFABLE"), .friendship = 255 }, @@ -399,7 +399,7 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("TOGETIC"), .friendship = 255 }, @@ -421,7 +421,7 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000020, + .personality = 0x20, // MALE RELAXED .nickname = _("TOGETIC"), .friendship = 255 }, @@ -443,7 +443,7 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000005, + .personality = 0x05, // FEMALE BOLD .nickname = _("CHANSEY"), .friendship = 255 }, @@ -465,7 +465,7 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x000000C0, + .personality = 0xC0, // MALE QUIET .nickname = _("CLEFABLE"), .friendship = 255 }, @@ -478,10 +478,10 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { - .flags = 0x04, - .floorIdx = 8, + .id = 4, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x09, + .prize = TTPRIZE_CHOICE_BAND, .trainers = { { .name = _("JOS & ANNE"), @@ -510,7 +510,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x00000010, + .personality = 0x10, // FEMALE MILD .nickname = _("RAPIDASH"), .friendship = 255 }, @@ -532,7 +532,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000015, + .personality = 0x15, // FEMALE GENTLE .nickname = _("NINETALES"), .friendship = 255 }, @@ -554,7 +554,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("MISDREAVUS"), .friendship = 255 }, @@ -576,7 +576,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("ALAKAZAM"), .friendship = 255 }, @@ -598,7 +598,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("BLISSEY"), .friendship = 255 }, @@ -620,7 +620,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000017, + .personality = 0x17, // FEMALE CAREFUL .nickname = _("CROBAT"), .friendship = 255 }, @@ -653,7 +653,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x00000082, + .personality = 0x82, // MALE BOLD .nickname = _("HOUNDOOM"), .friendship = 255 }, @@ -675,7 +675,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x00000033, + .personality = 0x33, // MALE LONELY .nickname = _("AERODACTYL"), .friendship = 255 }, @@ -697,7 +697,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000056, + .personality = 0x56, // MALE HASTY .nickname = _("ARCANINE"), .friendship = 255 }, @@ -719,7 +719,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x0000008E, + .personality = 0x8E, // MALE QUIET .nickname = _("WEEZING"), .friendship = 255 }, @@ -741,7 +741,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000033, + .personality = 0x33, // MALE LONELY .nickname = _("CHARIZARD"), .friendship = 255 }, @@ -763,7 +763,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000087, + .personality = 0x87, // MALE TIMID .nickname = _("GENGAR"), .friendship = 255 }, @@ -775,10 +775,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { - .flags = 0x05, - .floorIdx = 8, + .id = 5, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x04, + .prize = TTPRIZE_CALCIUM, .trainers = { { .name = _("EMY & ALEK"), @@ -807,7 +807,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // MALE TIMID .nickname = _("TAUROS"), .friendship = 255 }, @@ -829,7 +829,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("KANGASKHAN"), .friendship = 255 }, @@ -851,7 +851,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000094, + .personality = 0x94, // MALE CAREFUL .nickname = _("FEAROW"), .friendship = 255 }, @@ -873,7 +873,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000024, + .personality = 0x24, // MALE HASTY .nickname = _("TOGETIC"), .friendship = 255 }, @@ -895,7 +895,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000D, + .personality = 0x0D, // FEMALE JOLLY .nickname = _("PIDGEOT"), .friendship = 255 }, @@ -917,7 +917,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("URSARING"), .friendship = 255 }, @@ -950,7 +950,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("LICKITUNG"), .friendship = 255 }, @@ -972,7 +972,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("NOCTOWL"), .friendship = 255 }, @@ -994,7 +994,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000E, + .personality = 0x0E, // FEMALE NAIVE .nickname = _("FURRET"), .friendship = 255 }, @@ -1016,7 +1016,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("RATICATE"), .friendship = 255 }, @@ -1038,7 +1038,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("WIGGLYTUFF"), .friendship = 255 }, @@ -1060,7 +1060,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // GENDERLESS TIMID .nickname = _("PORYGON2"), .friendship = 255 }, @@ -1072,10 +1072,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { - .flags = 0x06, - .floorIdx = 8, + .id = 6, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x00, + .prize = TTPRIZE_HP_UP, .trainers = { { .name = _("JO & HALEY"), @@ -1104,7 +1104,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000D, + .personality = 0x0D, // FEMALE JOLLY .nickname = _("SNEASEL"), .friendship = 255 }, @@ -1126,7 +1126,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000005, + .personality = 0x05, // FEMALE BOLD .nickname = _("ALAKAZAM"), .friendship = 255 }, @@ -1148,7 +1148,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000008, + .personality = 0x08, // MALE IMPISH .nickname = _("HITMONTOP"), .friendship = 255 }, @@ -1170,7 +1170,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("GIRAFARIG"), .friendship = 255 }, @@ -1192,7 +1192,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000014, + .personality = 0x14, // FEMALE CALM .nickname = _("XATU"), .friendship = 255 }, @@ -1214,7 +1214,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000005, + .personality = 0x05, // FEMALE BOLD .nickname = _("MR. MIME"), .friendship = 255 }, @@ -1247,7 +1247,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000087, + .personality = 0x87, // MALE TIMID .nickname = _("HYPNO"), .friendship = 255 }, @@ -1269,7 +1269,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // MALE MODEST .nickname = _("HITMONCHAN"), .friendship = 255 }, @@ -1291,7 +1291,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000043, + .personality = 0x43, // MALE QUIET .nickname = _("MACHAMP"), .friendship = 255 }, @@ -1313,7 +1313,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000087, + .personality = 0x87, // MALE TIMID .nickname = _("HOUNDOOM"), .friendship = 255 }, @@ -1335,7 +1335,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000008C, + .personality = 0x8C, // MALE MODEST .nickname = _("PRIMEAPE"), .friendship = 255 }, @@ -1357,7 +1357,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000085, + .personality = 0x85, // MALE IMPISH .nickname = _("HERACROSS"), .friendship = 255 }, @@ -1369,10 +1369,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { - .flags = 0x07, - .floorIdx = 8, + .id = 7, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_KNOCKOUT, - .prize = 0x0c, + .prize = TTPRIZE_METAL_COAT, .trainers = { { .name = _("JORDY"), @@ -1401,7 +1401,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000043, + .personality = 0x43, // MALE QUIET .nickname = _("MAGBY"), .friendship = 0 }, @@ -1423,7 +1423,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x000000CA, + .personality = 0xCA, // MALE BRAVE .nickname = _("CLEFFA"), .friendship = 255 }, @@ -1445,7 +1445,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x000000D2, + .personality = 0xD2, // MALE TIMID .nickname = _("IGGLYBUFF"), .friendship = 255 }, @@ -1467,7 +1467,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("SMOOCHUM"), .friendship = 255 }, @@ -1489,7 +1489,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000034, + .personality = 0x34, // MALE BRAVE .nickname = _("TOGEPI"), .friendship = 0 }, @@ -1511,7 +1511,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000008E, + .personality = 0x8E, // MALE QUIET .nickname = _("PICHU"), .friendship = 0 }, @@ -1544,7 +1544,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x000000CA, + .personality = 0xCA, // MALE BRAVE .nickname = _("CLEFFA"), .friendship = 0 }, @@ -1566,7 +1566,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000004D, + .personality = 0x4D, // MALE BRAVE .nickname = _("MAGBY"), .friendship = 0 }, @@ -1588,7 +1588,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000034, + .personality = 0x34, // MALE BRAVE .nickname = _("TOGEPI"), .friendship = 0 }, @@ -1610,7 +1610,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("SMOOCHUM"), .friendship = 0 }, @@ -1632,7 +1632,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("IGGLYBUFF"), .friendship = 0 }, @@ -1654,7 +1654,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("PICHU"), .friendship = 0 }, @@ -1687,7 +1687,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000081, + .personality = 0x81, // MALE NAUGHTY .nickname = _("PICHU"), .friendship = 0 }, @@ -1709,7 +1709,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000033, + .personality = 0x33, // MALE LONELY .nickname = _("TOGEPI"), .friendship = 0 }, @@ -1731,7 +1731,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x000000CF, + .personality = 0xCF, // MALE RELAXED .nickname = _("CLEFFA"), .friendship = 0 }, @@ -1753,7 +1753,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x000000CF, + .personality = 0xCF, // MALE RELAXED .nickname = _("IGGLYBUFF"), .friendship = 0 }, @@ -1775,7 +1775,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("SMOOCHUM"), .friendship = 0 }, @@ -1797,7 +1797,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000004D, + .personality = 0x4D, // MALE BRAVE .nickname = _("MAGBY"), .friendship = 0 }, @@ -1808,10 +1808,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { - .flags = 0x08, - .floorIdx = 8, + .id = 8, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_KNOCKOUT, - .prize = 0x0e, + .prize = TTPRIZE_UP_GRADE, .trainers = { { .name = _("MIKE"), @@ -1840,7 +1840,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("PINSIR"), .friendship = 255 }, @@ -1862,7 +1862,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000035, + .personality = 0x35, // MALE ADAMANT .nickname = _("CHARIZARD"), .friendship = 255 }, @@ -1884,7 +1884,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000009, + .personality = 0x09, // FEMALE LAX .nickname = _("RHYDON"), .friendship = 255 }, @@ -1906,7 +1906,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000003F, + .personality = 0x3F, // MALE JOLLY .nickname = _("ARCANINE"), .friendship = 255 }, @@ -1928,7 +1928,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("GOLEM"), .friendship = 255 }, @@ -1950,7 +1950,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 1, - .personality = 0x00000008, + .personality = 0x08, // FEMALE IMPISH .nickname = _("HOUNDOOM"), .friendship = 255 }, @@ -1983,7 +1983,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000000D, + .personality = 0x0D, // FEMALE JOLLY .nickname = _("SANDSLASH"), .friendship = 255 }, @@ -2005,7 +2005,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("DRAGONAIR"), .friendship = 255 }, @@ -2027,7 +2027,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 1, - .personality = 0x00000094, + .personality = 0x94, // MALE CAREFUL .nickname = _("RAPIDASH"), .friendship = 255 }, @@ -2049,7 +2049,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000021, + .personality = 0x21, // MALE IMPISH .nickname = _("FLAREON"), .friendship = 255 }, @@ -2071,7 +2071,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000017, + .personality = 0x17, // FEMALE CAREFUL .nickname = _("NIDOQUEEN"), .friendship = 255 }, @@ -2093,7 +2093,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("PERSIAN"), .friendship = 255 }, @@ -2126,7 +2126,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000008, + .personality = 0x08, // MALE IMPISH .nickname = _("HITMONLEE"), .friendship = 255 }, @@ -2148,7 +2148,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000017, + .personality = 0x17, // FEMALE CAREFUL .nickname = _("SCYTHER"), .friendship = 255 }, @@ -2170,7 +2170,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000053, + .personality = 0x53, // MALE IMPISH .nickname = _("MAGMAR"), .friendship = 255 }, @@ -2192,7 +2192,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000003F, + .personality = 0x3F, // MALE JOLLY .nickname = _("MACHAMP"), .friendship = 255 }, @@ -2214,7 +2214,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000008, + .personality = 0x08, // FEMALE IMPISH .nickname = _("PRIMEAPE"), .friendship = 255 }, @@ -2236,7 +2236,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000000D, + .personality = 0x0D, // FEMALE JOLLY .nickname = _("POLIWRATH"), .friendship = 255 }, @@ -2247,10 +2247,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { - .flags = 0x09, - .floorIdx = 8, + .id = 9, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x00, + .prize = TTPRIZE_HP_UP, .trainers = { { .name = _("JOEY"), @@ -2279,7 +2279,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("MURKROW"), .friendship = 255 }, @@ -2301,7 +2301,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // MALE SERIOUS .nickname = _("TAUROS"), .friendship = 255 }, @@ -2323,7 +2323,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("SLOWBRO"), .friendship = 255 }, @@ -2345,7 +2345,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("ARBOK"), .friendship = 255 }, @@ -2367,7 +2367,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // MALE SERIOUS .nickname = _("NIDOKING"), .friendship = 255 }, @@ -2389,7 +2389,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("RAPIDASH"), .friendship = 255 }, @@ -2402,10 +2402,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { - .flags = 0x0a, - .floorIdx = 8, + .id = 10, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x0c, + .prize = TTPRIZE_METAL_COAT, .trainers = { { .name = _("LILY"), @@ -2434,7 +2434,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("CLEFAIRY"), .friendship = 255 }, @@ -2456,7 +2456,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("TOGEPI"), .friendship = 255 }, @@ -2478,7 +2478,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("MEOWTH"), .friendship = 255 }, @@ -2500,7 +2500,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("JIGGLYPUFF"), .friendship = 255 }, @@ -2522,7 +2522,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000025, + .personality = 0x25, // MALE SERIOUS .nickname = _("SNORLAX"), .friendship = 255 }, @@ -2544,7 +2544,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("SNUBBULL"), .friendship = 255 }, @@ -2557,10 +2557,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { - .flags = 0x0b, - .floorIdx = 8, + .id = 11, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x0e, + .prize = TTPRIZE_UP_GRADE, .trainers = { { .name = _("BRANDON"), @@ -2589,7 +2589,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("BUTTERFREE"), .friendship = 255 }, @@ -2611,7 +2611,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("BEEDRILL"), .friendship = 255 }, @@ -2633,7 +2633,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("PARASECT"), .friendship = 255 }, @@ -2655,7 +2655,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 1, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("YANMA"), .friendship = 255 }, @@ -2677,7 +2677,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("SHUCKLE"), .friendship = 255 }, @@ -2699,7 +2699,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("FORRETRESS"), .friendship = 255 }, @@ -2712,10 +2712,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { - .flags = 0x0c, - .floorIdx = 8, + .id = 12, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x02, + .prize = TTPRIZE_IRON, .trainers = { { .name = _("RIC & RENE"), @@ -2744,7 +2744,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // MALE BRAVE .nickname = _("HITMONLEE"), .friendship = 255 }, @@ -2766,7 +2766,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000007F, + .personality = 0x7F, // MALE BRAVE .nickname = _("RHYDON"), .friendship = 255 }, @@ -2788,7 +2788,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("GOLEM"), .friendship = 255 }, @@ -2810,7 +2810,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000004F, + .personality = 0x4F, // MALE NAUGHTY .nickname = _("MAGMAR"), .friendship = 255 }, @@ -2832,7 +2832,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000007F, + .personality = 0x7F, // MALE BRAVE .nickname = _("HERACROSS"), .friendship = 255 }, @@ -2854,7 +2854,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000097, + .personality = 0x97, // MALE LONELY .nickname = _("POLIWRATH"), .friendship = 255 }, @@ -2887,7 +2887,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000004E, + .personality = 0x4E, // MALE ADAMANT .nickname = _("MACHAMP"), .friendship = 255 }, @@ -2909,7 +2909,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("PINSIR"), .friendship = 255 }, @@ -2931,7 +2931,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("MAROWAK"), .friendship = 255 }, @@ -2953,7 +2953,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // MALE ADAMANT .nickname = _("HITMONCHAN"), .friendship = 255 }, @@ -2975,7 +2975,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000004F, + .personality = 0x4F, // MALE NAUGHTY .nickname = _("ELECTABUZZ"), .friendship = 255 }, @@ -2997,7 +2997,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000097, + .personality = 0x97, // MALE LONELY .nickname = _("POLIWRATH"), .friendship = 255 }, @@ -3009,10 +3009,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { - .flags = 0x0d, - .floorIdx = 8, + .id = 13, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x0d, + .prize = TTPRIZE_DRAGON_SCALE, .trainers = { { .name = _("JEN & KIRA"), @@ -3041,7 +3041,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000029, + .personality = 0x29, // MALE MILD .nickname = _("JOLTEON"), .friendship = 255 }, @@ -3063,7 +3063,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000029, + .personality = 0x29, // MALE MILD .nickname = _("ESPEON"), .friendship = 255 }, @@ -3085,7 +3085,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000033, + .personality = 0x33, // MALE LONELY .nickname = _("FLAREON"), .friendship = 255 }, @@ -3107,7 +3107,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000010, + .personality = 0x10, // FEMALE MILD .nickname = _("VAPOREON"), .friendship = 255 }, @@ -3129,7 +3129,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000010, + .personality = 0x10, // FEMALE MILD .nickname = _("EEVEE"), .friendship = 255 }, @@ -3151,7 +3151,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000010, + .personality = 0x10, // FEMALE MILD .nickname = _("UMBREON"), .friendship = 255 }, @@ -3184,7 +3184,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("JOLTEON"), .friendship = 255 }, @@ -3206,7 +3206,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("ESPEON"), .friendship = 255 }, @@ -3228,7 +3228,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000D, + .personality = 0x0D, // FEMALE JOLLY .nickname = _("FLAREON"), .friendship = 255 }, @@ -3250,7 +3250,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000023, + .personality = 0x23, // MALE TIMID .nickname = _("VAPOREON"), .friendship = 255 }, @@ -3272,7 +3272,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000023, + .personality = 0x23, // MALE TIMID .nickname = _("EEVEE"), .friendship = 255 }, @@ -3294,7 +3294,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000023, + .personality = 0x23, // MALE TIMID .nickname = _("UMBREON"), .friendship = 255 }, @@ -3306,10 +3306,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { - .flags = 0x0e, - .floorIdx = 8, + .id = 14, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x08, + .prize = TTPRIZE_MENTAL_HERB, .trainers = { { .name = _("ISAC & MAG"), @@ -3338,7 +3338,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // MALE ADAMANT .nickname = _("NIDOKING"), .friendship = 255 }, @@ -3360,7 +3360,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("GLIGAR"), .friendship = 255 }, @@ -3382,7 +3382,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("QUAGSIRE"), .friendship = 0 }, @@ -3404,7 +3404,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("PILOSWINE"), .friendship = 255 }, @@ -3426,7 +3426,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("GOLEM"), .friendship = 255 }, @@ -3448,7 +3448,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("STEELIX"), .friendship = 255 }, @@ -3481,7 +3481,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("SKARMORY"), .friendship = 255 }, @@ -3503,7 +3503,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("MANTINE"), .friendship = 255 }, @@ -3525,7 +3525,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("JUMPLUFF"), .friendship = 255 }, @@ -3547,7 +3547,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("GENGAR"), .friendship = 255 }, @@ -3569,7 +3569,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("CROBAT"), .friendship = 255 }, @@ -3591,7 +3591,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("XATU"), .friendship = 255 }, @@ -3603,10 +3603,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { - .flags = 0x0f, - .floorIdx = 8, + .id = 15, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_KNOCKOUT, - .prize = 0x06, + .prize = TTPRIZE_BRIGHT_POWDER, .trainers = { { .name = _("CHELSEA"), @@ -3635,7 +3635,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("VILEPLUME"), .friendship = 255 }, @@ -3657,7 +3657,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x00000010, + .personality = 0x10, // GENDERLESS MILD .nickname = _("STARMIE"), .friendship = 255 }, @@ -3679,7 +3679,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000001, + .personality = 0x01, // FEMALE LONELY .nickname = _("URSARING"), .friendship = 255 }, @@ -3701,7 +3701,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000001, + .personality = 0x01, // FEMALE LONELY .nickname = _("NOCTOWL"), .friendship = 255 }, @@ -3723,7 +3723,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000010, + .personality = 0x10, // FEMALE MILD .nickname = _("NINETALES"), .friendship = 255 }, @@ -3745,7 +3745,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000001, + .personality = 0x01, // FEMALE LONELY .nickname = _("LEDIAN"), .friendship = 255 }, @@ -3778,7 +3778,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000088, + .personality = 0x88, // MALE HASTY .nickname = _("GYARADOS"), .friendship = 255 }, @@ -3800,7 +3800,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x0000008E, + .personality = 0x8E, // MALE QUIET .nickname = _("VICTREEBEL"), .friendship = 255 }, @@ -3822,7 +3822,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000097, + .personality = 0x97, // MALE LONELY .nickname = _("DONPHAN"), .friendship = 255 }, @@ -3844,7 +3844,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000097, + .personality = 0x97, // MALE LONELY .nickname = _("FEAROW"), .friendship = 255 }, @@ -3866,7 +3866,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x0000004F, + .personality = 0x4F, // MALE NAUGHTY .nickname = _("ARCANINE"), .friendship = 255 }, @@ -3888,7 +3888,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000097, + .personality = 0x97, // MALE LONELY .nickname = _("ARIADOS"), .friendship = 255 }, @@ -3921,7 +3921,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000015, + .personality = 0x15, // FEMALE GENTLE .nickname = _("KINGDRA"), .friendship = 255 }, @@ -3943,7 +3943,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x0000007F, + .personality = 0x7F, // MALE BRAVE .nickname = _("GOLEM"), .friendship = 255 }, @@ -3965,7 +3965,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000001, + .personality = 0x01, // FEMALE LONELY .nickname = _("DRAGONITE"), .friendship = 255 }, @@ -3987,7 +3987,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000097, + .personality = 0x97, // MALE LONELY .nickname = _("TYRANITAR"), .friendship = 255 }, @@ -4009,7 +4009,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000013, + .personality = 0x13, // FEMALE RASH .nickname = _("AMPHAROS"), .friendship = 255 }, @@ -4031,7 +4031,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x0000002A, + .personality = 0x2A, // MALE QUIET .nickname = _("VENUSAUR"), .friendship = 255 }, @@ -4042,10 +4042,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { - .flags = 0x10, - .floorIdx = 8, + .id = 16, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_KNOCKOUT, - .prize = 0x04, + .prize = TTPRIZE_CALCIUM, .trainers = { { .name = _("CAMRYN"), @@ -4074,7 +4074,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("MURKROW"), .friendship = 255 }, @@ -4096,7 +4096,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("RAPIDASH"), .friendship = 255 }, @@ -4118,7 +4118,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("MILTANK"), .friendship = 255 }, @@ -4140,7 +4140,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("GOLDUCK"), .friendship = 255 }, @@ -4162,7 +4162,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("SANDSLASH"), .friendship = 255 }, @@ -4184,7 +4184,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("NIDOQUEEN"), .friendship = 255 }, @@ -4217,7 +4217,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("BELLOSSOM"), .friendship = 255 }, @@ -4239,7 +4239,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("VICTREEBEL"), .friendship = 255 }, @@ -4261,7 +4261,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("PARASECT"), .friendship = 255 }, @@ -4283,7 +4283,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("VILEPLUME"), .friendship = 255 }, @@ -4305,7 +4305,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("VENUSAUR"), .friendship = 255 }, @@ -4327,7 +4327,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000025, + .personality = 0x25, // MALE SERIOUS .nickname = _("MEGANIUM"), .friendship = 255 }, @@ -4360,7 +4360,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("MAROWAK"), .friendship = 255 }, @@ -4382,7 +4382,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("LAPRAS"), .friendship = 255 }, @@ -4404,7 +4404,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000057, + .personality = 0x57, // MALE SERIOUS .nickname = _("ARCANINE"), .friendship = 255 }, @@ -4426,7 +4426,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000089, + .personality = 0x89, // MALE SERIOUS .nickname = _("RAICHU"), .friendship = 255 }, @@ -4448,7 +4448,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("TOGETIC"), .friendship = 255 }, @@ -4470,7 +4470,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000C, + .personality = 0x0C, // FEMALE SERIOUS .nickname = _("SNORLAX"), .friendship = 255 }, @@ -4481,10 +4481,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { - .flags = 0x11, - .floorIdx = 8, + .id = 17, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x03, + .prize = TTPRIZE_CARBOS, .trainers = { { .name = _("BRADEN"), @@ -4513,7 +4513,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("VAPOREON"), .friendship = 255 }, @@ -4535,7 +4535,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000091, + .personality = 0x91, // MALE CALM .nickname = _("SLOWBRO"), .friendship = 255 }, @@ -4557,7 +4557,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("POLITOED"), .friendship = 255 }, @@ -4579,7 +4579,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("TENTACRUEL"), .friendship = 255 }, @@ -4601,7 +4601,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("RATICATE"), .friendship = 255 }, @@ -4623,7 +4623,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000007F, + .personality = 0x7F, // MALE BRAVE .nickname = _("DUNSPARCE"), .friendship = 255 }, @@ -4636,10 +4636,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { - .flags = 0x12, - .floorIdx = 8, + .id = 18, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x0a, + .prize = TTPRIZE_KINGS_ROCK, .trainers = { { .name = _("ALLYSON"), @@ -4668,7 +4668,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x0000000F, + .personality = 0x0F, // GENDERLESS MODEST .nickname = _("STARMIE"), .friendship = 255 }, @@ -4690,7 +4690,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000032, + .personality = 0x32, // MALE HARDY .nickname = _("BLASTOISE"), .friendship = 255 }, @@ -4712,7 +4712,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x0000008C, + .personality = 0x8C, // MALE MODEST .nickname = _("KINGDRA"), .friendship = 255 }, @@ -4734,7 +4734,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("QUAGSIRE"), .friendship = 255 }, @@ -4756,7 +4756,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("LAPRAS"), .friendship = 255 }, @@ -4778,7 +4778,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("DRAGONITE"), .friendship = 255 }, @@ -4791,10 +4791,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { - .flags = 0x13, - .floorIdx = 8, + .id = 19, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x0e, + .prize = TTPRIZE_UP_GRADE, .trainers = { { .name = _("ALBERTO"), @@ -4823,7 +4823,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000032, + .personality = 0x32, // MALE HARDY .nickname = _("FERALIGATR"), .friendship = 255 }, @@ -4845,7 +4845,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 1, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("POLIWRATH"), .friendship = 255 }, @@ -4867,7 +4867,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("KANGASKHAN"), .friendship = 255 }, @@ -4889,7 +4889,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("MILTANK"), .friendship = 255 }, @@ -4911,7 +4911,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 1, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("GOLDUCK"), .friendship = 255 }, @@ -4933,7 +4933,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x000000CA, + .personality = 0xCA, // MALE BRAVE .nickname = _("GRANBULL"), .friendship = 255 }, @@ -4946,10 +4946,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { - .flags = 0x14, - .floorIdx = 8, + .id = 20, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x0c, + .prize = TTPRIZE_METAL_COAT, .trainers = { { .name = _("KAT & KIPP"), @@ -4978,7 +4978,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x0000000D, + .personality = 0x0D, // FEMALE JOLLY .nickname = _("SNEASEL"), .friendship = 255 }, @@ -5000,7 +5000,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000002D, + .personality = 0x2D, // MALE CALM .nickname = _("OMASTAR"), .friendship = 255 }, @@ -5022,7 +5022,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000014, + .personality = 0x14, // FEMALE CALM .nickname = _("DEWGONG"), .friendship = 255 }, @@ -5044,7 +5044,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000091, + .personality = 0x91, // MALE CALM .nickname = _("QUAGSIRE"), .friendship = 255 }, @@ -5066,7 +5066,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000017, + .personality = 0x17, // FEMALE CAREFUL .nickname = _("CORSOLA"), .friendship = 255 }, @@ -5088,7 +5088,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000094, + .personality = 0x94, // MALE CAREFUL .nickname = _("SANDSLASH"), .friendship = 255 }, @@ -5121,7 +5121,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("FURRET"), .friendship = 255 }, @@ -5143,7 +5143,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000014, + .personality = 0x14, // FEMALE CALM .nickname = _("AZUMARILL"), .friendship = 255 }, @@ -5165,7 +5165,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000091, + .personality = 0x91, // MALE CALM .nickname = _("KINGLER"), .friendship = 255 }, @@ -5187,7 +5187,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000014, + .personality = 0x14, // FEMALE CALM .nickname = _("CLOYSTER"), .friendship = 255 }, @@ -5209,7 +5209,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000094, + .personality = 0x94, // MALE CAREFUL .nickname = _("QUAGSIRE"), .friendship = 255 }, @@ -5231,7 +5231,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000030, + .personality = 0x30, // MALE CAREFUL .nickname = _("KABUTOPS"), .friendship = 255 }, @@ -5243,10 +5243,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { - .flags = 0x15, - .floorIdx = 8, + .id = 21, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x08, + .prize = TTPRIZE_MENTAL_HERB, .trainers = { { .name = _("GEB&MEGAN"), @@ -5275,7 +5275,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000008C, + .personality = 0x8C, // MALE MODEST .nickname = _("POLITOED"), .friendship = 255 }, @@ -5297,7 +5297,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("GYARADOS"), .friendship = 255 }, @@ -5319,7 +5319,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("LAPRAS"), .friendship = 255 }, @@ -5341,7 +5341,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("NIDOQUEEN"), .friendship = 255 }, @@ -5363,7 +5363,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("JYNX"), .friendship = 255 }, @@ -5385,7 +5385,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000008C, + .personality = 0x8C, // MALE MODEST .nickname = _("GIRAFARIG"), .friendship = 255 }, @@ -5418,7 +5418,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000094, + .personality = 0x94, // MALE CAREFUL .nickname = _("MAROWAK"), .friendship = 255 }, @@ -5440,7 +5440,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("URSARING"), .friendship = 255 }, @@ -5462,7 +5462,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("SLOWKING"), .friendship = 255 }, @@ -5484,7 +5484,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000041, + .personality = 0x41, // MALE MODEST .nickname = _("ALAKAZAM"), .friendship = 255 }, @@ -5506,7 +5506,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // MALE HARDY .nickname = _("NIDOKING"), .friendship = 255 }, @@ -5528,7 +5528,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000093, + .personality = 0x93, // MALE SASSY .nickname = _("RHYDON"), .friendship = 255 }, @@ -5540,10 +5540,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { }; static const struct TrainerTowerFloor gUnknown_847FD0C = { - .flags = 0x16, - .floorIdx = 8, + .id = 22, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x05, + .prize = TTPRIZE_ZINC, .trainers = { { .name = _("LISA&LEAH"), @@ -5572,7 +5572,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000087, + .personality = 0x87, // MALE TIMID .nickname = _("POLIWAG"), .friendship = 255 }, @@ -5594,7 +5594,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000002D, + .personality = 0x2D, // MALE CALM .nickname = _("SQUIRTLE"), .friendship = 255 }, @@ -5616,7 +5616,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("CHINCHOU"), .friendship = 255 }, @@ -5638,7 +5638,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("NIDORAN♀"), .friendship = 255 }, @@ -5660,7 +5660,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("CLEFAIRY"), .friendship = 255 }, @@ -5682,7 +5682,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000002D, + .personality = 0x2D, // MALE CALM .nickname = _("HORSEA"), .friendship = 255 }, @@ -5715,7 +5715,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000093, + .personality = 0x93, // MALE SASSY .nickname = _("WOOPER"), .friendship = 255 }, @@ -5737,7 +5737,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 1, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("PSYDUCK"), .friendship = 255 }, @@ -5759,7 +5759,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("SNUBBULL"), .friendship = 255 }, @@ -5781,7 +5781,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("JIGGLYPUFF"), .friendship = 255 }, @@ -5803,7 +5803,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // MALE HARDY .nickname = _("NIDORAN♂"), .friendship = 255 }, @@ -5825,7 +5825,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000002D, + .personality = 0x2D, // MALE CALM .nickname = _("TOTODILE"), .friendship = 255 }, @@ -5837,10 +5837,10 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { - .flags = 0x17, - .floorIdx = 8, + .id = 23, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_KNOCKOUT, - .prize = 0x01, + .prize = TTPRIZE_PROTEIN, .trainers = { { .name = _("PRISCILLA"), @@ -5869,7 +5869,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("GOLDEEN"), .friendship = 0 }, @@ -5891,7 +5891,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("SEAKING"), .friendship = 0 }, @@ -5913,7 +5913,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000008C, + .personality = 0x8C, // MALE MODEST .nickname = _("LANTURN"), .friendship = 0 }, @@ -5935,7 +5935,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("LANTURN"), .friendship = 0 }, @@ -5957,7 +5957,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("GOLDEEN"), .friendship = 0 }, @@ -5979,7 +5979,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("SEAKING"), .friendship = 0 }, @@ -6012,7 +6012,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("OCTILLERY"), .friendship = 255 }, @@ -6034,7 +6034,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000014, + .personality = 0x14, // FEMALE CALM .nickname = _("QWILFISH"), .friendship = 255 }, @@ -6056,7 +6056,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("REMORAID"), .friendship = 255 }, @@ -6078,7 +6078,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("REMORAID"), .friendship = 255 }, @@ -6100,7 +6100,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000093, + .personality = 0x93, // MALE SASSY .nickname = _("OCTILLERY"), .friendship = 255 }, @@ -6122,7 +6122,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("QWILFISH"), .friendship = 255 }, @@ -6155,7 +6155,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("MANTINE"), .friendship = 255 }, @@ -6177,7 +6177,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000D, + .personality = 0x0D, // FEMALE JOLLY .nickname = _("MAGIKARP"), .friendship = 255 }, @@ -6199,7 +6199,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("MANTINE"), .friendship = 255 }, @@ -6221,7 +6221,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("GYARADOS"), .friendship = 255 }, @@ -6243,7 +6243,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000094, + .personality = 0x94, // MALE CAREFUL .nickname = _("MAGIKARP"), .friendship = 255 }, @@ -6265,7 +6265,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("GYARADOS"), .friendship = 255 }, @@ -6276,10 +6276,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { - .flags = 0x18, - .floorIdx = 8, + .id = 24, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_KNOCKOUT, - .prize = 0x0d, + .prize = TTPRIZE_DRAGON_SCALE, .trainers = { { .name = _("BRENNAN"), @@ -6308,7 +6308,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("LAPRAS"), .friendship = 255 }, @@ -6330,7 +6330,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000008C, + .personality = 0x8C, // MALE MODEST .nickname = _("KINGDRA"), .friendship = 255 }, @@ -6352,7 +6352,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000004E, + .personality = 0x4E, // MALE ADAMANT .nickname = _("MACHAMP"), .friendship = 255 }, @@ -6374,7 +6374,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000005, + .personality = 0x05, // FEMALE BOLD .nickname = _("CHANSEY"), .friendship = 255 }, @@ -6396,7 +6396,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // MALE ADAMANT .nickname = _("TAUROS"), .friendship = 255 }, @@ -6418,7 +6418,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000021, + .personality = 0x21, // MALE IMPISH .nickname = _("SNORLAX"), .friendship = 255 }, @@ -6451,7 +6451,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("CHINCHOU"), .friendship = 255 }, @@ -6473,7 +6473,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("DRATINI"), .friendship = 255 }, @@ -6495,7 +6495,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("SLOWPOKE"), .friendship = 255 }, @@ -6517,7 +6517,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000017, + .personality = 0x17, // FEMALE CAREFUL .nickname = _("MAGIKARP"), .friendship = 255 }, @@ -6539,7 +6539,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000017, + .personality = 0x17, // FEMALE CAREFUL .nickname = _("SEAKING"), .friendship = 255 }, @@ -6561,7 +6561,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000096, + .personality = 0x96, // MALE HARDY .nickname = _("TENTACRUEL"), .friendship = 255 }, @@ -6594,7 +6594,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000014, + .personality = 0x14, // FEMALE CALM .nickname = _("VAPOREON"), .friendship = 255 }, @@ -6616,7 +6616,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("ESPEON"), .friendship = 255 }, @@ -6638,7 +6638,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000005, + .personality = 0x05, // FEMALE BOLD .nickname = _("BLISSEY"), .friendship = 255 }, @@ -6660,7 +6660,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000014, + .personality = 0x14, // GENDERLESS CALM .nickname = _("STARMIE"), .friendship = 255 }, @@ -6682,7 +6682,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000D, + .personality = 0x0D, // FEMALE JOLLY .nickname = _("PERSIAN"), .friendship = 255 }, @@ -6704,7 +6704,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000000, + .personality = 0x00, // FEMALE HARDY .nickname = _("AZUMARILL"), .friendship = 255 }, @@ -6715,10 +6715,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { - .flags = 0x19, - .floorIdx = 8, + .id = 25, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x0c, + .prize = TTPRIZE_METAL_COAT, .trainers = { { .name = _("JARRETT"), @@ -6747,7 +6747,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x0000000D, + .personality = 0x0D, // GENDERLESS JOLLY .nickname = _("ELECTRODE"), .friendship = 255 }, @@ -6769,7 +6769,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x0000000D, + .personality = 0x0D, // GENDERLESS JOLLY .nickname = _("VOLTORB"), .friendship = 255 }, @@ -6791,7 +6791,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("WEEZING"), .friendship = 255 }, @@ -6813,7 +6813,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000007F, + .personality = 0x7F, // MALE BRAVE .nickname = _("GOLEM"), .friendship = 255 }, @@ -6835,7 +6835,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("EXEGGCUTE"), .friendship = 255 }, @@ -6857,7 +6857,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000084, + .personality = 0x84, // MALE RELAXED .nickname = _("FORRETRESS"), .friendship = 255 }, @@ -6870,10 +6870,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { - .flags = 0x1a, - .floorIdx = 8, + .id = 26, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x0d, + .prize = TTPRIZE_DRAGON_SCALE, .trainers = { { .name = _("OWEN"), @@ -6902,7 +6902,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x0000000A, + .personality = 0x0A, // GENDERLESS TIMID .nickname = _("MAGNETON"), .friendship = 255 }, @@ -6924,7 +6924,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("PIKACHU"), .friendship = 255 }, @@ -6946,7 +6946,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000037, + .personality = 0x37, // MALE BOLD .nickname = _("JOLTEON"), .friendship = 255 }, @@ -6968,7 +6968,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000005, + .personality = 0x05, // FEMALE BOLD .nickname = _("BLISSEY"), .friendship = 255 }, @@ -6990,7 +6990,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000005, + .personality = 0x05, // GENDERLESS BOLD .nickname = _("PORYGON2"), .friendship = 255 }, @@ -7012,7 +7012,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000005, + .personality = 0x05, // GENDERLESS BOLD .nickname = _("PORYGON"), .friendship = 255 }, @@ -7025,10 +7025,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { - .flags = 0x1b, - .floorIdx = 8, + .id = 27, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_SINGLE, - .prize = 0x01, + .prize = TTPRIZE_PROTEIN, .trainers = { { .name = _("LORENZO"), @@ -7057,7 +7057,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("MR. MIME"), .friendship = 255 }, @@ -7079,7 +7079,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000008C, + .personality = 0x8C, // MALE MODEST .nickname = _("HYPNO"), .friendship = 255 }, @@ -7101,7 +7101,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("ALAKAZAM"), .friendship = 255 }, @@ -7123,7 +7123,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000088, + .personality = 0x88, // MALE HASTY .nickname = _("GENGAR"), .friendship = 255 }, @@ -7145,7 +7145,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 1, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("GIRAFARIG"), .friendship = 255 }, @@ -7167,7 +7167,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // GENDERLESS TIMID .nickname = _("STARMIE"), .friendship = 255 }, @@ -7180,10 +7180,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { }; static const struct TrainerTowerFloor gUnknown_848144C = { - .flags = 0x1c, - .floorIdx = 8, + .id = 28, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x0b, + .prize = TTPRIZE_SCOPE_LENS, .trainers = { { .name = _("NIA & CARL"), @@ -7212,7 +7212,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("MUK"), .friendship = 255 }, @@ -7234,7 +7234,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000015, + .personality = 0x15, // FEMALE GENTLE .nickname = _("GENGAR"), .friendship = 255 }, @@ -7256,7 +7256,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("ALAKAZAM"), .friendship = 255 }, @@ -7278,7 +7278,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000005, + .personality = 0x05, // FEMALE BOLD .nickname = _("JOLTEON"), .friendship = 255 }, @@ -7300,7 +7300,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000014, + .personality = 0x14, // GENDERLESS CALM .nickname = _("ELECTRODE"), .friendship = 255 }, @@ -7322,7 +7322,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("RAICHU"), .friendship = 255 }, @@ -7355,7 +7355,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("KANGASKHAN"), .friendship = 255 }, @@ -7377,7 +7377,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // MALE ADAMANT .nickname = _("TAUROS"), .friendship = 255 }, @@ -7399,7 +7399,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("MILTANK"), .friendship = 255 }, @@ -7421,7 +7421,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("RHYDON"), .friendship = 255 }, @@ -7443,7 +7443,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 0, - .personality = 0x00000091, + .personality = 0x91, // MALE CALM .nickname = _("DRAGONITE"), .friendship = 255 }, @@ -7465,7 +7465,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { .spAttackIV = 31, .spDefenseIV = 31, .abilityNum = 1, - .personality = 0x00000091, + .personality = 0x91, // MALE CALM .nickname = _("LAPRAS"), .friendship = 255 }, @@ -7477,10 +7477,10 @@ static const struct TrainerTowerFloor gUnknown_848144C = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { - .flags = 0x1d, - .floorIdx = 8, + .id = 29, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x03, + .prize = TTPRIZE_CARBOS, .trainers = { { .name = _("AXE & REN"), @@ -7509,7 +7509,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("LANTURN"), .friendship = 255 }, @@ -7531,7 +7531,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000014, + .personality = 0x14, // FEMALE CALM .nickname = _("MANTINE"), .friendship = 255 }, @@ -7553,7 +7553,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("DEWGONG"), .friendship = 255 }, @@ -7575,7 +7575,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("CLOYSTER"), .friendship = 255 }, @@ -7597,7 +7597,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("TENTACRUEL"), .friendship = 255 }, @@ -7619,7 +7619,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("GYARADOS"), .friendship = 255 }, @@ -7652,7 +7652,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000040, + .personality = 0x40, // MALE NAIVE .nickname = _("ELECTABUZZ"), .friendship = 255 }, @@ -7674,7 +7674,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x0000000A, + .personality = 0x0A, // GENDERLESS TIMID .nickname = _("MAGNETON"), .friendship = 255 }, @@ -7696,7 +7696,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000011, + .personality = 0x11, // GENDERLESS QUIET .nickname = _("PORYGON"), .friendship = 255 }, @@ -7718,7 +7718,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("DRAGONAIR"), .friendship = 255 }, @@ -7740,7 +7740,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000B, + .personality = 0x0B, // FEMALE HASTY .nickname = _("PERSIAN"), .friendship = 255 }, @@ -7762,7 +7762,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000005, + .personality = 0x05, // GENDERLESS BOLD .nickname = _("STARMIE"), .friendship = 255 }, @@ -7774,10 +7774,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { }; static const struct TrainerTowerFloor gUnknown_8481C0C = { - .flags = 0x1e, - .floorIdx = 8, + .id = 30, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_DOUBLE, - .prize = 0x05, + .prize = TTPRIZE_ZINC, .trainers = { { .name = _("KATI & GEB"), @@ -7806,7 +7806,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000084, + .personality = 0x84, // MALE RELAXED .nickname = _("FLAAFFY"), .friendship = 255 }, @@ -7828,7 +7828,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000093, + .personality = 0x93, // MALE SASSY .nickname = _("QUAGSIRE"), .friendship = 255 }, @@ -7850,7 +7850,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("PIKACHU"), .friendship = 255 }, @@ -7872,7 +7872,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000046, + .personality = 0x46, // MALE CALM .nickname = _("ELECTABUZZ"), .friendship = 255 }, @@ -7894,7 +7894,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x0000002D, + .personality = 0x2D, // MALE CALM .nickname = _("TOGETIC"), .friendship = 255 }, @@ -7916,7 +7916,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("GOLDUCK"), .friendship = 255 }, @@ -7949,7 +7949,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000003, + .personality = 0x03, // FEMALE ADAMANT .nickname = _("PICHU"), .friendship = 255 }, @@ -7971,7 +7971,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("ELEKID"), .friendship = 255 }, @@ -7993,7 +7993,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("TOGEPI"), .friendship = 255 }, @@ -8015,7 +8015,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("PSYDUCK"), .friendship = 255 }, @@ -8037,7 +8037,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("MAREEP"), .friendship = 255 }, @@ -8059,7 +8059,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { .spAttackIV = 10, .spDefenseIV = 10, .abilityNum = 1, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("WOOPER"), .friendship = 255 }, @@ -8071,10 +8071,10 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { - .flags = 0x1f, - .floorIdx = 8, + .id = 31, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_KNOCKOUT, - .prize = 0x07, + .prize = TTPRIZE_WHITE_HERB, .trainers = { { .name = _("BEN"), @@ -8103,7 +8103,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000014, + .personality = 0x14, // GENDERLESS CALM .nickname = _("ELECTRODE"), .friendship = 255 }, @@ -8125,7 +8125,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000F, + .personality = 0x0F, // FEMALE MODEST .nickname = _("ELECTABUZZ"), .friendship = 255 }, @@ -8147,7 +8147,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000008E, + .personality = 0x8E, // MALE QUIET .nickname = _("LANTURN"), .friendship = 255 }, @@ -8169,7 +8169,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000014, + .personality = 0x14, // GENDERLESS CALM .nickname = _("MAGNETON"), .friendship = 255 }, @@ -8191,7 +8191,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000008A, + .personality = 0x8A, // MALE JOLLY .nickname = _("RAICHU"), .friendship = 255 }, @@ -8213,7 +8213,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("AMPHAROS"), .friendship = 255 }, @@ -8246,7 +8246,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("GRANBULL"), .friendship = 255 }, @@ -8268,7 +8268,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("PERSIAN"), .friendship = 255 }, @@ -8290,7 +8290,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("LICKITUNG"), .friendship = 255 }, @@ -8312,7 +8312,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000094, + .personality = 0x94, // MALE CAREFUL .nickname = _("RATICATE"), .friendship = 255 }, @@ -8334,7 +8334,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("PRIMEAPE"), .friendship = 255 }, @@ -8356,7 +8356,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("KANGASKHAN"), .friendship = 255 }, @@ -8389,7 +8389,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // FEMALE BRAVE .nickname = _("WEEZING"), .friendship = 255 }, @@ -8411,7 +8411,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 1, - .personality = 0x00000084, + .personality = 0x84, // MALE RELAXED .nickname = _("MUK"), .friendship = 255 }, @@ -8433,7 +8433,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("GENGAR"), .friendship = 255 }, @@ -8455,7 +8455,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x0000000A, + .personality = 0x0A, // FEMALE TIMID .nickname = _("MISDREAVUS"), .friendship = 255 }, @@ -8477,7 +8477,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000087, + .personality = 0x87, // MALE TIMID .nickname = _("CROBAT"), .friendship = 255 }, @@ -8499,7 +8499,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { .spAttackIV = 20, .spDefenseIV = 20, .abilityNum = 0, - .personality = 0x00000091, + .personality = 0x91, // MALE CALM .nickname = _("HAUNTER"), .friendship = 255 }, @@ -8510,10 +8510,10 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { }; static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { - .flags = 0x20, - .floorIdx = 8, + .id = 32, + .floorIdx = MAX_TRAINER_TOWER_FLOORS, .challengeType = CHALLENGE_TYPE_KNOCKOUT, - .prize = 0x0e, + .prize = TTPRIZE_UP_GRADE, .trainers = { { .name = _("MAURA"), @@ -8542,7 +8542,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000005, + .personality = 0x05, // FEMALE BOLD .nickname = _("PICHU"), .friendship = 255 }, @@ -8564,7 +8564,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("MAREEP"), .friendship = 255 }, @@ -8586,7 +8586,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("IGGLYBUFF"), .friendship = 255 }, @@ -8608,7 +8608,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("CLEFFA"), .friendship = 255 }, @@ -8630,7 +8630,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("NIDORAN♀"), .friendship = 255 }, @@ -8652,7 +8652,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // MALE RELAXED .nickname = _("NIDORAN♂"), .friendship = 255 }, @@ -8685,7 +8685,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // MALE RELAXED .nickname = _("NIDORINO"), .friendship = 255 }, @@ -8707,7 +8707,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("NIDORINA"), .friendship = 255 }, @@ -8729,7 +8729,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000011, + .personality = 0x11, // FEMALE QUIET .nickname = _("PIKACHU"), .friendship = 255 }, @@ -8751,7 +8751,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("FLAAFFY"), .friendship = 255 }, @@ -8773,7 +8773,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000016, + .personality = 0x16, // FEMALE SASSY .nickname = _("JIGGLYPUFF"), .friendship = 255 }, @@ -8795,7 +8795,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("CLEFAIRY"), .friendship = 255 }, @@ -8828,7 +8828,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x000000CF, + .personality = 0xCF, // MALE RELAXED .nickname = _("WIGGLYTUFF"), .friendship = 255 }, @@ -8850,7 +8850,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x000000CF, + .personality = 0xCF, // MALE RELAXED .nickname = _("CLEFABLE"), .friendship = 255 }, @@ -8872,7 +8872,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000007, + .personality = 0x07, // FEMALE RELAXED .nickname = _("NIDOQUEEN"), .friendship = 255 }, @@ -8894,7 +8894,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000002, + .personality = 0x02, // MALE BRAVE .nickname = _("NIDOKING"), .friendship = 255 }, @@ -8916,7 +8916,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("RAICHU"), .friendship = 255 }, @@ -8938,7 +8938,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { .spAttackIV = 15, .spDefenseIV = 15, .abilityNum = 0, - .personality = 0x00000080, + .personality = 0x80, // MALE ADAMANT .nickname = _("AMPHAROS"), .friendship = 255 }, From d0f3c277a7bd68e9c2a44efed04d9c0cdbb64355 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Apr 2021 09:56:44 -0400 Subject: [PATCH 24/28] Corrections and augmentations to ttower docs --- include/cereader_tool.h | 2 +- include/easy_chat.h | 2 +- src/trainer_tower.c | 124 ++++++++++++++++++++++----------------- src/trainer_tower_sets.c | 122 +++++++++++++++++++------------------- 4 files changed, 132 insertions(+), 118 deletions(-) diff --git a/include/cereader_tool.h b/include/cereader_tool.h index 5dd0a7589..b7e9cbe47 100644 --- a/include/cereader_tool.h +++ b/include/cereader_tool.h @@ -8,7 +8,7 @@ struct TrainerTowerTrainer { /* 0x000 */ u8 name[11]; /* 0x00B */ u8 facilityClass; - /* 0x00C */ u8 textColor; + /* 0x00C */ u8 unkC; /* 0x00E */ u16 speechBefore[6]; /* 0x01A */ u16 speechWin[6]; /* 0x026 */ u16 speechLose[6]; diff --git a/include/easy_chat.h b/include/easy_chat.h index 11711cbbc..9c6400fd1 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -31,7 +31,7 @@ struct EasyChatWordsByLetter }; u8 *CopyEasyChatWord(u8 *dest, u16 word); -u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); +u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows); bool8 EC_DoesEasyChatStringFitOnLine(const u16 *easyChatWords, u8 columns, u8 rows, u16 maxLength); void EC_ResetMEventProfileMaybe(void); void InitEasyChatPhrases(void); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 38d3f9ab6..fe836dadd 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -52,8 +52,8 @@ struct DoublesTrainerInfo u8 objGfx1; u8 objGfx2; u8 facilityClass; - bool8 textColor1; - bool8 textColor2; + bool8 gender1; + bool8 gender2; }; struct TrainerEncounterMusicPairs @@ -310,8 +310,15 @@ static const struct TrainerEncounterMusicPairs sTrainerEncounterMusicLUT[105] = }; static const struct WindowTemplate sTimeBoardWindowTemplate[] = { - {0, 3, 1, 27, 18, 15, 0x001}, - DUMMY_WIN_TEMPLATE + { + .bg = 0, + .tilemapLeft = 3, + .tilemapTop = 1, + .width = 27, + .height = 18, + .paletteNum = 15, + .baseBlock = 0x001 + }, DUMMY_WIN_TEMPLATE }; static const u32 sUnused_847A228 = 0x70; @@ -389,37 +396,40 @@ static const u16 sTrainerTowerEncounterMusic[] = { [TRAINER_ENCOUNTER_MUSIC_RICH] = MUS_ENCOUNTER_BOY }; -static const u8 sSingleBattleChallengeMonIdxs[][2] = { - {0x00, 0x02}, - {0x01, 0x03}, - {0x02, 0x04}, - {0x03, 0x05}, - {0x04, 0x01}, - {0x05, 0x02}, - {0x00, 0x03}, - {0x01, 0x04} +// The trainer only uses two Pokemon from the encoded pool, based on the current floor +static const u8 sSingleBattleChallengeMonIdxs[MAX_TRAINER_TOWER_FLOORS][2] = { + {0, 2}, + {1, 3}, + {2, 4}, + {3, 5}, + {4, 1}, + {5, 2}, + {0, 3}, + {1, 4} }; -static const u8 sDoubleBattleChallengeMonIdxs[][2] = { - {0x00, 0x01}, - {0x01, 0x03}, - {0x02, 0x00}, - {0x03, 0x04}, - {0x04, 0x02}, - {0x05, 0x02}, - {0x00, 0x03}, - {0x01, 0x05} +// Each trainer only uses one Pokemon from the encoded pool, based on the current floor +static const u8 sDoubleBattleChallengeMonIdxs[MAX_TRAINER_TOWER_FLOORS][2] = { + {0, 1}, + {1, 3}, + {2, 0}, + {3, 4}, + {4, 2}, + {5, 2}, + {0, 3}, + {1, 5} }; -static const u8 sKnockoutChallengeMonIdxs[][3] = { - {0x00, 0x02, 0x04}, - {0x01, 0x03, 0x05}, - {0x02, 0x03, 0x01}, - {0x03, 0x04, 0x00}, - {0x04, 0x01, 0x02}, - {0x05, 0x00, 0x03}, - {0x00, 0x05, 0x02}, - {0x01, 0x04, 0x05} +// Each trainer only uses one Pokemon from the encoded pool, based on the current floor +static const u8 sKnockoutChallengeMonIdxs[MAX_TRAINER_TOWER_FLOORS][3] = { + {0, 2, 4}, + {1, 3, 5}, + {2, 3, 1}, + {3, 4, 0}, + {4, 1, 2}, + {5, 0, 3}, + {0, 5, 2}, + {1, 4, 5} }; extern const struct EReaderTrainerTowerSetSubstruct gTrainerTowerLocalHeader; @@ -471,7 +481,7 @@ void InitTrainerTowerBattleStruct(void) sTrainerTowerOpponent->battleType = CURR_FLOOR.challengeType; sTrainerTowerOpponent->facilityClass = CURR_FLOOR.trainers[trainerId].facilityClass; - sTrainerTowerOpponent->textColor = CURR_FLOOR.trainers[trainerId].textColor; + sTrainerTowerOpponent->textColor = CURR_FLOOR.trainers[trainerId].unkC; SetVBlankCounter1Ptr(&TRAINER_TOWER.timer); FreeTrainerTowerDataStruct(); } @@ -504,8 +514,8 @@ void GetTrainerTowerOpponentLoseText(u8 *dest, u8 opponentIdx) static void SetUpTrainerTowerDataStruct(void) { u32 challengeType = gSaveBlock1Ptr->towerChallengeId; - s32 r4; - const struct TrainerTowerFloor *const * r7; + s32 i; + const struct TrainerTowerFloor *const * floors_p; sTrainerTowerState = AllocZeroed(sizeof(*sTrainerTowerState)); sTrainerTowerState->floorIdx = gMapHeader.mapLayoutId - LAYOUT_TRAINER_TOWER_1F; @@ -513,13 +523,13 @@ static void SetUpTrainerTowerDataStruct(void) CEReaderTool_LoadTrainerTower(&sTrainerTowerState->data); else { - struct TrainerTowerState * r0_ = sTrainerTowerState; - const struct EReaderTrainerTowerSetSubstruct * r1 = &gTrainerTowerLocalHeader; - memcpy(&r0_->data, r1, sizeof(struct EReaderTrainerTowerSetSubstruct)); - r7 = gTrainerTowerFloors[challengeType]; - for (r4 = 0; r4 < MAX_TRAINER_TOWER_FLOORS; r4++) + struct TrainerTowerState * ttstate_p = sTrainerTowerState; + const struct EReaderTrainerTowerSetSubstruct * header_p = &gTrainerTowerLocalHeader; + memcpy(&ttstate_p->data, header_p, sizeof(struct EReaderTrainerTowerSetSubstruct)); + floors_p = gTrainerTowerFloors[challengeType]; + for (i = 0; i < MAX_TRAINER_TOWER_FLOORS; i++) { - *(sTrainerTowerState->data.floors + r4) = *(r7[r4]); // manual pointer arithmetic needed to match + *(sTrainerTowerState->data.floors + i) = *(floors_p[i]); // manual pointer arithmetic needed to match } sTrainerTowerState->data.checksum = CalcByteArraySum((void *)sTrainerTowerState->data.floors, sizeof(sTrainerTowerState->data.floors)); ValidateOrResetCurTrainerTowerRecord(); @@ -620,17 +630,21 @@ static void SetTrainerTowerNPCGraphics(void) static void TT_ConvertEasyChatMessageToString(u16 *ecWords, u8 *dest) { - s32 r1; + s32 i; ConvertEasyChatWordsToString(dest, ecWords, 3, 2); if ((unsigned)GetStringWidth(2, dest, -1) > 196) { + // Has to be printed 2x3 ConvertEasyChatWordsToString(dest, ecWords, 2, 3); - r1 = 0; - while (dest[r1++] != CHAR_NEWLINE) + // Skip line 1 + i = 0; + while (dest[i++] != CHAR_NEWLINE) ; - while (dest[r1] != CHAR_NEWLINE) - r1++; - dest[r1] = CHAR_PROMPT_SCROLL; + // Skip line 2 + while (dest[i] != CHAR_NEWLINE) + i++; + // Replace \n with \l at the end of line 2 + dest[i] = CHAR_PROMPT_SCROLL; } } @@ -667,7 +681,7 @@ static void BufferTowerOpponentSpeech(void) static void TrainerTowerGetOpponentTextColor(u8 challengeType, u8 facilityClass) { - u16 textColor = MALE; + u16 gender = MALE; int i; switch (challengeType) { @@ -679,7 +693,7 @@ static void TrainerTowerGetOpponentTextColor(u8 challengeType, u8 facilityClass) break; } if (i != NELEMS(sSingleBattleTrainerInfo)) - textColor = sSingleBattleTrainerInfo[i].gender; + gender = sSingleBattleTrainerInfo[i].gender; break; case CHALLENGE_TYPE_DOUBLE: for (i = 0; i < NELEMS(sDoubleBattleTrainerInfo); i++) @@ -690,14 +704,14 @@ static void TrainerTowerGetOpponentTextColor(u8 challengeType, u8 facilityClass) if (i != NELEMS(sDoubleBattleTrainerInfo)) { if (VarGet(VAR_TEMP_3)) - textColor = sDoubleBattleTrainerInfo[i].textColor2; + gender = sDoubleBattleTrainerInfo[i].gender2; else - textColor = sDoubleBattleTrainerInfo[i].textColor1; + gender = sDoubleBattleTrainerInfo[i].gender1; } break; } gSpecialVar_PrevTextColor = gSpecialVar_TextColor; - gSpecialVar_TextColor = textColor; + gSpecialVar_TextColor = gender; } static void CB2_EndTrainerTowerBattle(void) @@ -891,15 +905,15 @@ static void ShowResultsBoard(void) windowId = AddWindow(sTimeBoardWindowTemplate); LoadStdWindowFrameGfx(); DrawStdWindowFrame(windowId, FALSE); - AddTextPrinterParameterized(windowId, 2, gText_TimeBoard, 0x4A, 0, 0xFF, NULL); + AddTextPrinterParameterized(windowId, 2, gText_TimeBoard, 74, 0, TEXT_SPEED_FF, NULL); for (i = 0; i < NUM_TOWER_CHALLENGE_TYPES; i++) { PRINT_TOWER_TIME(GetTrainerTowerRecordTime(&TRAINER_TOWER.bestTime)); StringExpandPlaceholders(gStringVar4, gText_XMinYZSec); - AddTextPrinterParameterized(windowId, 2, gTrainerTowerChallengeTypeTexts[i - 1], 0x18, 0x24 + 0x14 * i, 0xFF, NULL); - AddTextPrinterParameterized(windowId, 2, gStringVar4, 0x60, 0x2E + 0x14 * i, 0xFF, NULL); + AddTextPrinterParameterized(windowId, 2, gTrainerTowerChallengeTypeTexts[i - 1], 24, 36 + 20 * i, TEXT_SPEED_FF, NULL); + AddTextPrinterParameterized(windowId, 2, gStringVar4, 96, 46 + 20 * i, TEXT_SPEED_FF, NULL); } PutWindowTilemap(windowId); @@ -1043,7 +1057,7 @@ void PrintTrainerTowerRecords(void) u8 windowId = 0; SetUpTrainerTowerDataStruct(); - FillWindowPixelRect(0, 0, 0, 0, 0xd8, 0x90); + FillWindowPixelRect(0, PIXEL_FILL(0), 0, 0, 216, 144); ValidateOrResetCurTrainerTowerRecord(); AddTextPrinterParameterized3(0, 2, 0x4a, 0, sTextColors, 0, gText_TimeBoard); diff --git a/src/trainer_tower_sets.c b/src/trainer_tower_sets.c index 119950d7f..e153bc1bc 100644 --- a/src/trainer_tower_sets.c +++ b/src/trainer_tower_sets.c @@ -10,7 +10,7 @@ // Dummy strings must be declared explicitly for the sake of modern gcc #define DUMMY_TOWER_MON(iv) {.hpIV = iv, .attackIV = iv, .defenseIV = iv, .speedIV = iv, .spAttackIV = iv, .spDefenseIV = iv, .nickname = _("$$$$$$$$$$")} -#define DUMMY_TOWER_TEAM(iv) {.name = _(""), .textColor = 1, .speechBefore = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechAfter = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .mons = {DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv)}} +#define DUMMY_TOWER_TEAM(iv) {.name = _(""), .unkC = 1, .speechBefore = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechAfter = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .mons = {DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv)}} static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .id = 1, @@ -21,7 +21,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { { .name = _("COLE"), .facilityClass = FACILITY_CLASS_YOUNGSTER_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_AHAHA, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_ANYWHERE, EC_WORD_EXCL}, .speechWin = {EC_WORD_ALL_RIGHT, EC_WORD_EXCL, EC_WORD_BYE_BYE, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_HIYAH, EC_WORD_EXCL_EXCL, EC_WORD_DONE, EC_WORD_IN, EC_WORD_TOTALLY, EC_WORD_EXCL_EXCL}, @@ -176,7 +176,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { { .name = _("JAC"), .facilityClass = FACILITY_CLASS_BURGLAR, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_MOVE2(THIEF), EC_WORD_EXCL, EC_WORD_GIVE_ME, EC_WORD_SOMETHING}, .speechWin = {EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_NOTHING, EC_WORD_THAT, EC_WORD_I, EC_WORD_WANT}, .speechLose = {EC_WORD_EEK, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_I, EC_WORD_SURRENDER}, @@ -331,7 +331,7 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { { .name = _("MILY"), .facilityClass = FACILITY_CLASS_PSYCHIC_4, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(SUPERPOWER), EC_WORD_EXCL}, .speechWin = {EC_WORD_ISN_T, EC_WORD_IT, EC_WORD_INCREDIBLE, EC_WORD_QUES, EC_WORD_POKEMON, EC_WORD_POWER}, .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_ELLIPSIS_EXCL}, @@ -486,7 +486,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { { .name = _("JOS & ANNE"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_TO, EC_WORD_YOU, EC_WORD_HERE}, .speechWin = {EC_WORD_VERY, EC_WORD_WELL, EC_WORD_DONE, EC_WORD_EXCL, EC_WORD_GOOD, EC_WORD_BATTLE}, .speechLose = {EC_WORD_UNBELIEVABLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -629,7 +629,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { { .name = _("JOS & ANNE"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_HERE_GOES, EC_WORD_EXCL_EXCL, EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_LOSE}, .speechWin = {EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_WE, EC_WORD_GET, EC_WORD_THE, EC_WORD_WIN}, .speechLose = {EC_WORD_LOST, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_JOKING, EC_WORD_EXCL}, @@ -783,7 +783,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { { .name = _("EMY & ALEK"), .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LOST, EC_WORD_IN, EC_WORD_LOVEY_DOVEY, EC_WORD_HAPPINESS}, .speechWin = {EC_WORD_OH, EC_WORD_OH, EC_WORD_HE, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME}, .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_SERIOUS, EC_WORD_QUES}, @@ -926,7 +926,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { { .name = _("EMY & ALEK"), .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_GIDDY, EC_WORD_WITH, EC_WORD_LOVEY_DOVEY, EC_WORD_JOY, EC_WORD_EXCL_EXCL}, .speechWin = {EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_MY, EC_WORD_GIRL, EC_WORD_IS, EC_WORD_CUTE}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_SERIOUS}, @@ -1080,7 +1080,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { { .name = _("JO & HALEY"), .facilityClass = FACILITY_CLASS_CRUSH_KIN, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_WE_RE, EC_WORD_USING, EC_WORD_THAT, EC_WORD_STRATEGY, EC_WORD_OKAY, EC_WORD_QUES}, .speechWin = {EC_WORD_YAY, EC_WORD_WE, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_SORRY, EC_WORD_EXCL}, .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TERRIBLE, EC_WORD_EXCL}, @@ -1223,7 +1223,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { { .name = _("JO & HALEY"), .facilityClass = FACILITY_CLASS_CRUSH_KIN, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_YOU, EC_WORD_YOU, EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_WORD_WIN}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_JOKING, EC_WORD_QUES, EC_WORD_WE, EC_WORD_WON}, .speechLose = {EC_WORD_WIMPY, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_WERE, EC_WORD_WEAK, EC_WORD_ELLIPSIS}, @@ -1377,7 +1377,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { { .name = _("JORDY"), .facilityClass = FACILITY_CLASS_BIKER, - .textColor = 3, + .unkC = 3, .speechBefore = {EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GIGGLE, EC_WORD_YOU, EC_WORD_PUSHOVER}, .speechWin = {EC_WORD_WHAT, EC_WORD_A_LITTLE, EC_WORD_PUSHOVER, EC_WORD_YOU, EC_WORD_ARE, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU, EC_WORD_WERE, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_EXCL}, @@ -1520,7 +1520,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { { .name = _("ERNEST"), .facilityClass = FACILITY_CLASS_BIKER, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_IT_S, EC_WORD_SLEEP, EC_WORD_TIME, EC_WORD_FOR, EC_WORD_CHILDREN, EC_WORD_EXCL}, .speechWin = {EC_WORD_NOT, EC_WORD_GUTSY, EC_WORD_ENOUGH, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_WHY, EC_WORD_DID, EC_WORD_YOU, EC_WORD_CRUSH, EC_WORD_ME, EC_WORD_QUES}, @@ -1663,7 +1663,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { { .name = _("GABRIEL"), .facilityClass = FACILITY_CLASS_CUE_BALL, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_HERE_I_COME, EC_WORD_TO, EC_WORD_SWARM, EC_WORD_YOU}, .speechWin = {EC_WORD_I_AM, EC_WORD_INVINCIBLE, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_THAT, EC_WORD_QUES}, .speechLose = {EC_WORD_WHAT, EC_WORD_WAS, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF, 0xFFFF}, @@ -1816,7 +1816,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { { .name = _("MIKE"), .facilityClass = FACILITY_CLASS_HIKER_2, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_FULL, EC_WORD_OF, EC_WORD_POWER}, .speechWin = {EC_WORD_WHAT_S_UP_QUES, EC_WORD_WHERE, EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_GOT, EC_WORD_ME, EC_WORD_WITH, EC_WORD_YOUR, EC_MOVE2(FAKE_OUT)}, @@ -1959,7 +1959,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { { .name = _("REBECCA"), .facilityClass = FACILITY_CLASS_CRUSH_GIRL, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_IT_S, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_OVERWHELMING}, .speechLose = {EC_WORD_ARRGH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -2102,7 +2102,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { { .name = _("NICOLAS"), .facilityClass = FACILITY_CLASS_BLACK_BELT_2, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_WHERE, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_EXCL}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_EVER, EC_WORD_BEAT, EC_WORD_ME}, .speechLose = {EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES}, @@ -2255,7 +2255,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { { .name = _("JOEY"), .facilityClass = FACILITY_CLASS_CAMPER_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SCARY, EC_WORD_STRONG, EC_WORD_EXCL}, .speechWin = {EC_WORD_WERE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_QUES}, .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_WAY, EC_WORD_TOO_STRONG, EC_WORD_EXCL}, @@ -2410,7 +2410,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { { .name = _("LILY"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_3, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_ELLIPSIS}, @@ -2565,7 +2565,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { { .name = _("BRANDON"), .facilityClass = FACILITY_CLASS_BUG_CATCHER_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_POISON, EC_WORD_IS, EC_WORD_JUST, EC_WORD_SO, EC_WORD_AWFUL, EC_WORD_ISN_T_IT_QUES}, .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_ISN_T, EC_WORD_POISON, EC_WORD_TERRIBLE, EC_WORD_QUES}, .speechLose = {EC_WORD_HUH_QUES, EC_WORD_OUR, EC_WORD_POISON, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_QUES}, @@ -2720,7 +2720,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { { .name = _("RIC & RENE"), .facilityClass = FACILITY_CLASS_CRUSH_KIN, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME}, .speechWin = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_TOO, EC_WORD_AWESOME}, .speechLose = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_ISN_T, EC_WORD_AWESOME, EC_WORD_QUES}, @@ -2863,7 +2863,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { { .name = _("RIC & RENE"), .facilityClass = FACILITY_CLASS_CRUSH_KIN, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_HUH_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_NOT_VERY, EC_WORD_AWESOME, EC_WORD_QUES}, @@ -3017,7 +3017,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { { .name = _("JEN & KIRA"), .facilityClass = FACILITY_CLASS_TWINS_2, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL}, .speechWin = {EC_WORD_EHEHE, EC_WORD_YAY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -3160,7 +3160,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { { .name = _("JEN & KIRA"), .facilityClass = FACILITY_CLASS_TWINS_2, - .textColor = 3, + .unkC = 3, .speechBefore = {EC_WORD_LET_S, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -3314,7 +3314,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { { .name = _("ISAC & MAG"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_OUR, EC_MOVE(EARTHQUAKE), EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SHAKY}, .speechWin = {EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_I_AM, EC_WORD_ALL, EC_WORD_SHAKY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF}, @@ -3457,7 +3457,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { { .name = _("ISAC & MAG"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_DOESN_T, EC_WORD_GET, EC_WORD_ALL, EC_WORD_SHAKY}, .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_LIE, EC_WORD_EXCL}, .speechLose = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY}, @@ -3611,7 +3611,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { { .name = _("CHELSEA"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_4, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, EC_WORD_IS, EC_WORD_IMPORTANT, EC_WORD_ISN_T_IT_QUES}, .speechWin = {EC_WORD_YOU, EC_WORD_TAKE, EC_WORD_THE, EC_WORD_LOSS, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_BE, EC_WORD_KIND, EC_WORD_TO, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD}, @@ -3754,7 +3754,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { { .name = _("TRENTON"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_3, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_I, EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREAT, EC_WORD_GREEN, EC_WORD_WORLD}, .speechWin = {EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_YOURS}, .speechLose = {EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, 0xFFFF, 0xFFFF}, @@ -3897,7 +3897,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { { .name = _("ALBERT"), .facilityClass = FACILITY_CLASS_COOLTRAINER_3, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_TIME, EC_WORD_HERE}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_THINGS, EC_WORD_EXCITING}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_STRONG, EC_WORD_THAT_WAS, EC_WORD_WILD, EC_WORD_AND, EC_WORD_EXCITING}, @@ -4050,7 +4050,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { { .name = _("CAMRYN"), .facilityClass = FACILITY_CLASS_PICNICKER_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_I, EC_WORD_WON_T, EC_WORD_LOSE, EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_THAT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_WIN}, .speechLose = {EC_WORD_OH_QUES, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_DID, EC_WORD_I, EC_WORD_LOSE, EC_WORD_QUES}, @@ -4193,7 +4193,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { { .name = _("NATALIA"), .facilityClass = FACILITY_CLASS_AROMA_LADY_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_THIS, EC_MOVE(SWEET_SCENT), EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_IT, EC_WORD_QUES}, .speechWin = {EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_NICE, EC_WORD_QUES, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_THAT, EC_WORD_WASN_T, EC_WORD_GOOD, EC_WORD_QUES, 0xFFFF, 0xFFFF}, @@ -4336,7 +4336,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { { .name = _("KATHLEEN"), .facilityClass = FACILITY_CLASS_COOLTRAINER_4, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_TOO, EC_WORD_BAD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_ELLIPSIS}, @@ -4489,7 +4489,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { { .name = _("BRADEN"), .facilityClass = FACILITY_CLASS_SWIMMER_MALE_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_PRETTY, EC_WORD_HAPPY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_TOUGHNESS}, .speechWin = {EC_WORD_WROOOAAR_EXCL, 0xFFFF, EC_WORD_SERIOUSLY, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_SHOCKED, EC_WORD_ME, EC_WORD_OUT, EC_WORD_OF, EC_WORD_HAPPINESS}, @@ -4644,7 +4644,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { { .name = _("ALLYSON"), .facilityClass = FACILITY_CLASS_COOLTRAINER_4, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_ABOUT, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_TODAY}, .speechWin = {EC_WORD_YES, EC_WORD_EXCL_EXCL, EC_WORD_I, EC_WORD_ADORE, EC_WORD_MYSELF, EC_WORD_TODAY}, .speechLose = {EC_WORD_I_WAS, EC_WORD_CONFUSED, EC_WORD_ABOUT, EC_WORD_THINGS, EC_WORD_I, EC_WORD_THINK}, @@ -4799,7 +4799,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { { .name = _("ALBERTO"), .facilityClass = FACILITY_CLASS_SAILOR_2, - .textColor = 5, + .unkC = 5, .speechBefore = {EC_WORD_LET_S, EC_WORD_GET, EC_WORD_WITH, EC_WORD_IT, EC_WORD_RIGHT, EC_WORD_AWAY}, .speechWin = {EC_WORD_YO, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_NOW, EC_WORD_EH_QUES}, .speechLose = {EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_OVER, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER}, @@ -4954,7 +4954,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { { .name = _("KAT & KIPP"), .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, - .textColor = 4, + .unkC = 4, .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_MY, EC_WORD_BEST}, .speechWin = {EC_WORD_WAY, EC_WORD_TO, EC_WORD_GO, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER}, .speechLose = {EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_IT, EC_WORD_GOES}, @@ -5097,7 +5097,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { { .name = _("KAT & KIPP"), .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, - .textColor = 4, + .unkC = 4, .speechBefore = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_NEVER, EC_WORD_LOSE, EC_WORD_EXCL}, .speechWin = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOO_STRONG, EC_WORD_TO, EC_WORD_LOSE}, .speechLose = {EC_WORD_WHAT, EC_WORD_HUH_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_JOKING, EC_WORD_QUES}, @@ -5251,7 +5251,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { { .name = _("GEB&MEGAN"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_OPPONENT, EC_WORD_QUES, EC_WORD_PUSHOVER, EC_WORD_HAHAHA}, .speechWin = {EC_WORD_HAHAHA, EC_WORD_SORRY, EC_WORD_MY, EC_WORD_FRIEND, EC_WORD_TOUGH, EC_WORD_LOSS}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FRIEND, EC_WORD_QUES}, @@ -5394,7 +5394,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { { .name = _("GEB&MEGAN"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .textColor = 7, + .unkC = 7, .speechBefore = {EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_FOE, EC_WORD_QUES, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, 0xFFFF}, .speechLose = {EC_WORD_MY, EC_WORD_WORD, EC_WORD_THIS, EC_WORD_IS, EC_WORD_JUST, EC_WORD_INCREDIBLE}, @@ -5548,7 +5548,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { { .name = _("LISA&LEAH"), .facilityClass = FACILITY_CLASS_TWINS_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_ABSOLUTELY, EC_WORD_WE_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL}, .speechWin = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, @@ -5691,7 +5691,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { { .name = _("LISA&LEAH"), .facilityClass = FACILITY_CLASS_TWINS_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_CAN, EC_WORD_WE, EC_WORD_WIN, EC_WORD_QUES, EC_WORD_IT_S, EC_WORD_EXCITING}, .speechWin = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY}, .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, @@ -5845,7 +5845,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { { .name = _("PRISCILLA"), .facilityClass = FACILITY_CLASS_TUBER_3, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_GIRL, EC_WORD_HERE_I_COME, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DID, EC_WORD_I, EC_WORD_WIN, EC_WORD_QUES}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_ELLIPSIS}, @@ -5988,7 +5988,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { { .name = _("CHARLOTTE"), .facilityClass = FACILITY_CLASS_LADY_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_HELLO, EC_WORD_THERE, EC_WORD_I_AM, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY}, .speechWin = {EC_WORD_OH, EC_WORD_MY, EC_WORD_MY, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SORRY}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY}, @@ -6131,7 +6131,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { { .name = _("SHANIA"), .facilityClass = FACILITY_CLASS_SWIMMER_FEMALE_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_HEROINE, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM}, .speechWin = {EC_WORD_AHAHA, EC_WORD_NO, EC_WORD_WAY, EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_SERIOUSLY}, .speechLose = {EC_WORD_WHY, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LIE}, @@ -6284,7 +6284,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { { .name = _("BRENNAN"), .facilityClass = FACILITY_CLASS_SAILOR_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_TAKE, EC_WORD_THINGS, EC_WORD_EASY, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_IMPORTANT}, .speechWin = {EC_WORD_YOU, EC_WORD_LOSE, EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_EXCL}, .speechLose = {EC_WORD_OOPS, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_AN, EC_WORD_EASY, EC_WORD_WIN}, @@ -6427,7 +6427,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { { .name = _("KADEN"), .facilityClass = FACILITY_CLASS_FISHERMAN_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_MY, EC_WORD_FISHING, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_IS, EC_WORD_FANTASTIC}, .speechWin = {EC_WORD_MY, EC_WORD_FANTASTIC, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WINS, EC_WORD_OUT}, .speechLose = {EC_WORD_UH_OH, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_LOST}, @@ -6570,7 +6570,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { { .name = _("EMANUEL"), .facilityClass = FACILITY_CLASS_GENTLEMAN_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_HMM, EC_WORD_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SKILLED, EC_WORD_QUES}, .speechWin = {EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_RIGHT, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_YOU, EC_WORD_TRULY, EC_WORD_ARE, EC_WORD_A, EC_WORD_MASTER, EC_WORD_TRAINER}, @@ -6723,7 +6723,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { { .name = _("JARRETT"), .facilityClass = FACILITY_CLASS_JUGGLER, - .textColor = 2, + .unkC = 2, .speechBefore = {EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_PARTY, EC_WORD_EXCL}, .speechWin = {EC_WORD_CONGRATS, EC_WORD_FOR, EC_WORD_YOUR, EC_WORD_LOSS, EC_WORD_PARTY, EC_WORD_KID}, .speechLose = {EC_WORD_NICE, EC_MOVE(SELF_DESTRUCT), EC_WORD_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_PERFECT}, @@ -6878,7 +6878,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { { .name = _("OWEN"), .facilityClass = FACILITY_CLASS_SUPER_NERD, - .textColor = 2, + .unkC = 2, .speechBefore = {EC_WORD_HERE_IT_IS, EC_MOVE2(THUNDER_WAVE), EC_WORD_DON_T, EC_MOVE2(WRAP), EC_WORD_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_ACCEPT, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_OF, EC_MOVE2(THUNDER_WAVE), EC_WORD_EXCL}, .speechLose = {EC_MOVE2(WRAP), EC_MOVE(BIND), EC_WORD_ELECTRIC, EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, EC_WORD_AROUND}, @@ -7033,7 +7033,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { { .name = _("LORENZO"), .facilityClass = FACILITY_CLASS_PSYCHIC_3, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_THIS, EC_WORD_POWER, EC_WORD_IS, EC_WORD_NOW, EC_WORD_COMPLETE, EC_WORD_EXCL}, .speechWin = {EC_WORD_NO, EC_WORD_KEEN_EYE, EC_WORD_CAN, EC_WORD_STOP, EC_WORD_MY, EC_WORD_POWER}, .speechLose = {EC_WORD_HERE_IT_IS, EC_WORD_EXCL, EC_MOVE(KINESIS), EC_WORD_EXCL, EC_WORD_ELLIPSIS, EC_WORD_WHAT}, @@ -7188,7 +7188,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { { .name = _("NIA & CARL"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .textColor = 4, + .unkC = 4, .speechBefore = {EC_WORD_HERE_GOES, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_ROMANTIC, EC_WORD_HERO, EC_WORD_STRATEGY}, .speechWin = {EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_DIGITAL, EC_WORD_HYPER, EC_WORD_MODE, EC_WORD_POWER}, .speechLose = {EC_WORD_MY, EC_WORD_PERFECT, EC_WORD_STRATEGY, EC_WORD_WAS, EC_MOVE2(BEAT_UP), EC_WORD_QUES}, @@ -7331,7 +7331,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { { .name = _("NIA & CARL"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .textColor = 4, + .unkC = 4, .speechBefore = {EC_WORD_MASTER, EC_WORD_COMPLETE, EC_WORD_FASHION, EC_WORD_SYSTEM, EC_WORD_START, EC_WORD_EXCL}, .speechWin = {EC_WORD_THAT_S_IT_EXCL, EC_WORD_THE, EC_WORD_POWER, EC_WORD_OF, EC_WORD_OUR, EC_WORD_SYSTEM}, .speechLose = {EC_WORD_OKAY, EC_WORD_EXCL, EC_MOVE(THUNDERBOLT), EC_WORD_RUN_AWAY, EC_WORD_SYSTEM, EC_WORD_START}, @@ -7485,7 +7485,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { { .name = _("AXE & REN"), .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, - .textColor = 2, + .unkC = 2, .speechBefore = {EC_WORD_IT_S, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_WORD_AWFULLY, EC_WORD_COLD}, .speechWin = {EC_WORD_THAT_S, EC_WORD_THAT, EC_WORD_MAN, EC_WORD_I_AM, EC_WORD_COLD, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_ELLIPSIS}, @@ -7628,7 +7628,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { { .name = _("AXE & REN"), .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, - .textColor = 2, + .unkC = 2, .speechBefore = {EC_WORD_OUR, EC_WORD_SWIFT_SWIM, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_COLD}, .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_HOT}, .speechLose = {EC_WORD_I_AM, EC_WORD_HUNGRY, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_HOT, EC_WORD_EATS}, @@ -7782,7 +7782,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { { .name = _("KATI & GEB"), .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, - .textColor = 2, + .unkC = 2, .speechBefore = {EC_WORD_WELCOME, EC_WORD_TO, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_MOVE2(THUNDER_WAVE), EC_MOVE(SANDSTORM)}, .speechWin = {EC_WORD_LALALA, EC_WORD_LALALA, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LALALA, EC_WORD_LIFE}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_MY, EC_MOVE2(FRUSTRATION)}, @@ -7925,7 +7925,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { { .name = _("KATI & GEB"), .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, - .textColor = 2, + .unkC = 2, .speechBefore = {EC_WORD_I_AM, EC_WORD_PLUS, EC_WORD_YOU_RE, EC_WORD_MINUS, EC_WORD_LOVEY_DOVEY, EC_WORD_MAGNET_PULL}, .speechWin = {EC_WORD_DON_T, EC_WORD_STOP, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LOCOMOTIVE, EC_WORD_EXCL}, .speechLose = {EC_WORD_HIS, EC_WORD_CRY, EC_WORD_HAS, EC_WORD_CUTE_CHARM, EC_WORD_TOO, EC_WORD_EXCL}, @@ -8079,7 +8079,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { { .name = _("BEN"), .facilityClass = FACILITY_CLASS_ROCKER, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, .speechWin = {EC_WORD_STATIC, EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YES, EC_WORD_IT, EC_WORD_IS}, .speechLose = {EC_WORD_ELECTRIC, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_TELEVISION, EC_WORD_I_AM}, @@ -8222,7 +8222,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { { .name = _("CAMDEN"), .facilityClass = FACILITY_CLASS_ENGINEER, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, .speechWin = {EC_WORD_A, EC_MOVE(THUNDERBOLT), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_TOO, EC_WORD_EXCL}, .speechLose = {EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_WIRELESS, EC_WORD_LINK}, @@ -8365,7 +8365,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { { .name = _("ZACKERY"), .facilityClass = FACILITY_CLASS_SCIENTIST, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, .speechWin = {EC_MOVE2(THUNDER_SHOCK), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES}, .speechLose = {EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_WORD_EXCL_EXCL}, @@ -8518,7 +8518,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { { .name = _("MAURA"), .facilityClass = FACILITY_CLASS_BEAUTY_2, - .textColor = 2, + .unkC = 2, .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_GROUP, EC_WORD_LEADER, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_WHAT, EC_WORD_AM, EC_WORD_I, EC_WORD_LEADER, EC_WORD_OF, EC_WORD_QUES}, .speechLose = {EC_WORD_I_AM, EC_WORD_NO, EC_WORD_LEADER, EC_WORD_IT_S, EC_WORD_A_LITTLE, EC_WORD_LIE}, @@ -8661,7 +8661,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { { .name = _("MIKAELA"), .facilityClass = FACILITY_CLASS_LASS_2, - .textColor = 1, + .unkC = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_THE, EC_WORD_NO_1, EC_WORD_TRAINER, EC_WORD_HERE}, .speechWin = {EC_WORD_NEVER, EC_WORD_SAID, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_AT}, .speechLose = {EC_WORD_NEXT, EC_WORD_TIME, EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_OVERWHELMING}, @@ -8804,7 +8804,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { { .name = _("FLINT"), .facilityClass = FACILITY_CLASS_ENGINEER, - .textColor = 4, + .unkC = 4, .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(MILK_DRINK), EC_WORD_WORLD, EC_WORD_LEADER, EC_WORD_EXCL}, .speechWin = {EC_WORD_I_VE, EC_WORD_WON, EC_WORD_THIS, EC_MOVE2(MILK_DRINK), EC_WORD_MATCH, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_DRINK, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_DRINKS}, From ca7134316d9478e14d3d4216078d166d0f12d036 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Tue, 4 May 2021 00:49:51 -0400 Subject: [PATCH 25/28] [LEAK-INFORMED] fix battle_interface fakematch --- src/battle_interface.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/battle_interface.c b/src/battle_interface.c index 4cc39e8aa..1df525967 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -736,18 +736,11 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl) u32 windowId, spriteTileNum; u8 *windowTileData; u8 text[16] = _("{LV_2}"); - u32 xPos, var1; - void *objVram; + u32 xPos; + u8 *objVram; - xPos = (u32) ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); - // Alright, that part was unmatchable. It's basically doing: - // xPos = 5 * (3 - (u32)(&text[2])); - xPos--; - xPos--; - xPos -= ((u32)(text)); - var1 = (3 - xPos); - xPos = 4 * var1; - xPos += var1; + objVram = ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3); + xPos = 5 * (3 - (objVram - (text + 2))); windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, &windowId); spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * TILE_SIZE_4BPP; From 693e1c0fc934e3e2ee343d2c48ee61bb122e388d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 6 May 2021 09:14:13 -0400 Subject: [PATCH 26/28] Replace unknown list struct --- include/list_menu.h | 24 ++++++- src/item_menu.c | 2 +- src/item_pc.c | 2 +- src/list_menu.c | 163 +++++++++++++++++++------------------------ src/pokedex_screen.c | 6 +- 5 files changed, 98 insertions(+), 99 deletions(-) diff --git a/include/list_menu.h b/include/list_menu.h index 24c614e39..df204b247 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -28,6 +28,28 @@ struct ListMenuItem struct ListMenu; +// For ListMenuGet/SetTemplateField +enum ListMenuFields +{ + LISTFIELD_MOVECURSORFUNC = 0, + LISTFIELD_MOVECURSORFUNC2, + LISTFIELD_TOTALITEMS, + LISTFIELD_MAXSHOWED, + LISTFIELD_WINDOWID, + LISTFIELD_HEADERX, + LISTFIELD_ITEMX, + LISTFIELD_CURSORX, + LISTFIELD_UPTEXTY, + LISTFIELD_CURSORPAL, + LISTFIELD_FILLVALUE, + LISTFIELD_CURSORSHADOWPAL, + LISTFIELD_LETTERSPACING, + LISTFIELD_ITEMVERTICALPADDING, + LISTFIELD_SCROLLMULTIPLE, + LISTFIELD_FONTID, + LISTFIELD_CURSORKIND, +}; + struct ListMenuTemplate { /*0x00*/ const struct ListMenuItem *items; @@ -82,6 +104,6 @@ void ListMenuGetScrollAndRow(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove); u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId); void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal); void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list); -void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value); +void ListMenuSetTemplateField(u8 taskId, u8 field, s32 value); #endif //GUARD_LIST_MENU_H diff --git a/src/item_menu.c b/src/item_menu.c index 6b23482e5..e0022322d 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1224,7 +1224,7 @@ static void BeginMovingItemInPocket(u8 taskId, s16 itemIndex) u16 cursorPos; s16 *data = gTasks[taskId].data; ListMenuGetScrollAndRow(data[0], &cursorPos, &itemsAbove); - ListMenuSetUnkIndicatorsStructField(data[0], 0x10, 1); + ListMenuSetTemplateField(data[0], LISTFIELD_CURSORKIND, 1); data[1] = itemIndex; sBagMenuDisplay->itemOriginalLocation = itemIndex; StringCopy(gStringVar1, ItemId_GetName(BagGetItemIdByPocketPosition(gBagMenuState.pocket + 1, data[1]))); diff --git a/src/item_pc.c b/src/item_pc.c index 4366997ba..bf1bf87df 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -767,7 +767,7 @@ static void ItemPc_MoveItemModeInit(u8 taskId, s16 pos) { s16 * data = gTasks[taskId].data; - ListMenuSetUnkIndicatorsStructField(data[0], 16, 1); + ListMenuSetTemplateField(data[0], LISTFIELD_CURSORKIND, 1); data[1] = pos; sStateDataPtr->moveModeOrigPos = pos; StringCopy(gStringVar1, ItemId_GetName(ItemPc_GetItemIdBySlotId(data[1]))); diff --git a/src/list_menu.c b/src/list_menu.c index b032ae012..d1e69c2ff 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -11,29 +11,6 @@ #include "pokemon_icon.h" #include "constants/songs.h" -struct UnkIndicatorsStruct -{ - u8 field_0; - u16 *field_4; - u16 field_8; - u16 field_A; - u16 field_C; - u16 field_E; - u8 field_10; - u8 field_11; - u8 field_12; - u8 field_13; - u8 field_14_0:4; - u8 field_14_1:4; - u8 field_15_0:4; - u8 field_15_1:4; - u8 field_16_0:3; - u8 field_16_1:3; - u8 field_16_2:2; - u8 field_17_0:6; - u8 field_17_1:2; -}; - struct MysteryGiftLinkMenuStruct { u32 currItemId; @@ -646,104 +623,104 @@ void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu PlaySE(SE_SELECT); } -static s32 ListMenuGetUnkIndicatorsStructFields(u8 taskId, u8 field) +static s32 ListMenuGetTemplateField(u8 taskId, u8 field) { - struct UnkIndicatorsStruct *data = (struct UnkIndicatorsStruct *)gTasks[taskId].data; + struct ListMenu *data = (struct ListMenu *)gTasks[taskId].data; switch (field) { - case 0: - case 1: - return (s32)(data->field_4); - case 2: - return data->field_C; - case 3: - return data->field_E; - case 4: - return data->field_10; - case 5: - return data->field_11; - case 6: - return data->field_12; - case 7: - return data->field_13; - case 8: - return data->field_14_0; - case 9: - return data->field_14_1; - case 10: - return data->field_15_0; - case 11: - return data->field_15_1; - case 12: - return data->field_16_0; - case 13: - return data->field_16_1; - case 14: - return data->field_16_2; - case 15: - return data->field_17_0; - case 16: - return data->field_17_1; + case LISTFIELD_MOVECURSORFUNC: + case LISTFIELD_MOVECURSORFUNC2: + return (s32)(data->template.moveCursorFunc); + case LISTFIELD_TOTALITEMS: + return data->template.totalItems; + case LISTFIELD_MAXSHOWED: + return data->template.maxShowed; + case LISTFIELD_WINDOWID: + return data->template.windowId; + case LISTFIELD_HEADERX: + return data->template.header_X; + case LISTFIELD_ITEMX: + return data->template.item_X; + case LISTFIELD_CURSORX: + return data->template.cursor_X; + case LISTFIELD_UPTEXTY: + return data->template.upText_Y; + case LISTFIELD_CURSORPAL: + return data->template.cursorPal; + case LISTFIELD_FILLVALUE: + return data->template.fillValue; + case LISTFIELD_CURSORSHADOWPAL: + return data->template.cursorShadowPal; + case LISTFIELD_LETTERSPACING: + return data->template.lettersSpacing; + case LISTFIELD_ITEMVERTICALPADDING: + return data->template.itemVerticalPadding; + case LISTFIELD_SCROLLMULTIPLE: + return data->template.scrollMultiple; + case LISTFIELD_FONTID: + return data->template.fontId; + case LISTFIELD_CURSORKIND: + return data->template.cursorKind; default: return -1; } } -void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value) +void ListMenuSetTemplateField(u8 taskId, u8 field, s32 value) { - struct UnkIndicatorsStruct *data = (struct UnkIndicatorsStruct *)gTasks[taskId].data; + struct ListMenu *data = (struct ListMenu *)gTasks[taskId].data; switch (field) { - case 0: - case 1: - data->field_4 = (void *)value; + case LISTFIELD_MOVECURSORFUNC: + case LISTFIELD_MOVECURSORFUNC2: + data->template.moveCursorFunc = (void *)value; break; - case 2: - data->field_C = value; + case LISTFIELD_TOTALITEMS: + data->template.totalItems = value; break; - case 3: - data->field_E = value; + case LISTFIELD_MAXSHOWED: + data->template.maxShowed = value; break; - case 4: - data->field_10 = value; + case LISTFIELD_WINDOWID: + data->template.windowId = value; break; - case 5: - data->field_11 = value; + case LISTFIELD_HEADERX: + data->template.header_X = value; break; - case 6: - data->field_12 = value; + case LISTFIELD_ITEMX: + data->template.item_X = value; break; - case 7: - data->field_13 = value; + case LISTFIELD_CURSORX: + data->template.cursor_X = value; break; - case 8: - data->field_14_0 = value; + case LISTFIELD_UPTEXTY: + data->template.upText_Y = value; break; - case 9: - data->field_14_1 = value; + case LISTFIELD_CURSORPAL: + data->template.cursorPal = value; break; - case 10: - data->field_15_0 = value; + case LISTFIELD_FILLVALUE: + data->template.fillValue = value; break; - case 11: - data->field_15_1 = value; + case LISTFIELD_CURSORSHADOWPAL: + data->template.cursorShadowPal = value; break; - case 12: - data->field_16_0 = value; + case LISTFIELD_LETTERSPACING: + data->template.lettersSpacing = value; break; - case 13: - data->field_16_1 = value; + case LISTFIELD_ITEMVERTICALPADDING: + data->template.itemVerticalPadding = value; break; - case 14: - data->field_16_2 = value; + case LISTFIELD_SCROLLMULTIPLE: + data->template.scrollMultiple = value; break; - case 15: - data->field_17_0 = value; + case LISTFIELD_FONTID: + data->template.fontId = value; break; - case 16: - data->field_17_1 = value; + case LISTFIELD_CURSORKIND: + data->template.cursorKind = value; break; } } diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index dc8968a5f..c4749055d 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -1187,10 +1187,10 @@ static void MoveCursorFunc_DexModeSelect(s32 itemIndex, bool8 onInit, struct Lis static void ItemPrintFunc_DexModeSelect(u8 windowId, s32 itemId, u8 y) { u32 itemId_ = itemId; - if (itemId_ > 8 || sPokedexScreenData->unlockedCategories & (1 << itemId_)) - ListMenuOverrideSetColors(1, 0, 3); + if (itemId_ >= DEX_CATEGORY_COUNT || sPokedexScreenData->unlockedCategories & (1 << itemId_)) + ListMenuOverrideSetColors(TEXT_COLOR_WHITE, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_GRAY); else - ListMenuOverrideSetColors(10, 0, 11); + ListMenuOverrideSetColors(TEXT_DYNAMIC_COLOR_1, TEXT_COLOR_TRANSPARENT, TEXT_DYNAMIC_COLOR_2); } static void Task_DexScreen_NumericalOrder(u8 taskId) From b79634e2f34ac0b7034702dd81183af201dd8ed1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 6 May 2021 12:52:05 -0400 Subject: [PATCH 27/28] TrainerTowerTrainer.{unkC --> textColor} --- include/cereader_tool.h | 2 +- src/trainer_tower.c | 2 +- src/trainer_tower_sets.c | 122 +++++++++++++++++++-------------------- 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/include/cereader_tool.h b/include/cereader_tool.h index b7e9cbe47..5dd0a7589 100644 --- a/include/cereader_tool.h +++ b/include/cereader_tool.h @@ -8,7 +8,7 @@ struct TrainerTowerTrainer { /* 0x000 */ u8 name[11]; /* 0x00B */ u8 facilityClass; - /* 0x00C */ u8 unkC; + /* 0x00C */ u8 textColor; /* 0x00E */ u16 speechBefore[6]; /* 0x01A */ u16 speechWin[6]; /* 0x026 */ u16 speechLose[6]; diff --git a/src/trainer_tower.c b/src/trainer_tower.c index fe836dadd..fe45a2938 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -481,7 +481,7 @@ void InitTrainerTowerBattleStruct(void) sTrainerTowerOpponent->battleType = CURR_FLOOR.challengeType; sTrainerTowerOpponent->facilityClass = CURR_FLOOR.trainers[trainerId].facilityClass; - sTrainerTowerOpponent->textColor = CURR_FLOOR.trainers[trainerId].unkC; + sTrainerTowerOpponent->textColor = CURR_FLOOR.trainers[trainerId].textColor; SetVBlankCounter1Ptr(&TRAINER_TOWER.timer); FreeTrainerTowerDataStruct(); } diff --git a/src/trainer_tower_sets.c b/src/trainer_tower_sets.c index e153bc1bc..119950d7f 100644 --- a/src/trainer_tower_sets.c +++ b/src/trainer_tower_sets.c @@ -10,7 +10,7 @@ // Dummy strings must be declared explicitly for the sake of modern gcc #define DUMMY_TOWER_MON(iv) {.hpIV = iv, .attackIV = iv, .defenseIV = iv, .speedIV = iv, .spAttackIV = iv, .spDefenseIV = iv, .nickname = _("$$$$$$$$$$")} -#define DUMMY_TOWER_TEAM(iv) {.name = _(""), .unkC = 1, .speechBefore = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechAfter = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .mons = {DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv)}} +#define DUMMY_TOWER_TEAM(iv) {.name = _(""), .textColor = 1, .speechBefore = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechWin = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechAfter = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .mons = {DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv), DUMMY_TOWER_MON(iv)}} static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { .id = 1, @@ -21,7 +21,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_4 = { { .name = _("COLE"), .facilityClass = FACILITY_CLASS_YOUNGSTER_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_AHAHA, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_ANYWHERE, EC_WORD_EXCL}, .speechWin = {EC_WORD_ALL_RIGHT, EC_WORD_EXCL, EC_WORD_BYE_BYE, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_HIYAH, EC_WORD_EXCL_EXCL, EC_WORD_DONE, EC_WORD_IN, EC_WORD_TOTALLY, EC_WORD_EXCL_EXCL}, @@ -176,7 +176,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_7 = { { .name = _("JAC"), .facilityClass = FACILITY_CLASS_BURGLAR, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_A, EC_MOVE2(THIEF), EC_WORD_EXCL, EC_WORD_GIVE_ME, EC_WORD_SOMETHING}, .speechWin = {EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_NOTHING, EC_WORD_THAT, EC_WORD_I, EC_WORD_WANT}, .speechLose = {EC_WORD_EEK, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_I, EC_WORD_SURRENDER}, @@ -331,7 +331,7 @@ static const struct TrainerTowerFloor gUnknown_847B36C = { { .name = _("MILY"), .facilityClass = FACILITY_CLASS_PSYCHIC_4, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(SUPERPOWER), EC_WORD_EXCL}, .speechWin = {EC_WORD_ISN_T, EC_WORD_IT, EC_WORD_INCREDIBLE, EC_WORD_QUES, EC_WORD_POKEMON, EC_WORD_POWER}, .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_ELLIPSIS_EXCL}, @@ -486,7 +486,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { { .name = _("JOS & ANNE"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_TO, EC_WORD_YOU, EC_WORD_HERE}, .speechWin = {EC_WORD_VERY, EC_WORD_WELL, EC_WORD_DONE, EC_WORD_EXCL, EC_WORD_GOOD, EC_WORD_BATTLE}, .speechLose = {EC_WORD_UNBELIEVABLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -629,7 +629,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_5 = { { .name = _("JOS & ANNE"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_HERE_GOES, EC_WORD_EXCL_EXCL, EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_LOSE}, .speechWin = {EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_WE, EC_WORD_GET, EC_WORD_THE, EC_WORD_WIN}, .speechLose = {EC_WORD_LOST, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_JOKING, EC_WORD_EXCL}, @@ -783,7 +783,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { { .name = _("EMY & ALEK"), .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LOST, EC_WORD_IN, EC_WORD_LOVEY_DOVEY, EC_WORD_HAPPINESS}, .speechWin = {EC_WORD_OH, EC_WORD_OH, EC_WORD_HE, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME}, .speechLose = {EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_SERIOUS, EC_WORD_QUES}, @@ -926,7 +926,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_6 = { { .name = _("EMY & ALEK"), .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_GIDDY, EC_WORD_WITH, EC_WORD_LOVEY_DOVEY, EC_WORD_JOY, EC_WORD_EXCL_EXCL}, .speechWin = {EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_MY, EC_WORD_GIRL, EC_WORD_IS, EC_WORD_CUTE}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_SERIOUS}, @@ -1080,7 +1080,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { { .name = _("JO & HALEY"), .facilityClass = FACILITY_CLASS_CRUSH_KIN, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_WE_RE, EC_WORD_USING, EC_WORD_THAT, EC_WORD_STRATEGY, EC_WORD_OKAY, EC_WORD_QUES}, .speechWin = {EC_WORD_YAY, EC_WORD_WE, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_SORRY, EC_WORD_EXCL}, .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TERRIBLE, EC_WORD_EXCL}, @@ -1223,7 +1223,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_2 = { { .name = _("JO & HALEY"), .facilityClass = FACILITY_CLASS_CRUSH_KIN, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_YOU, EC_WORD_YOU, EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_WORD_WIN}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_JOKING, EC_WORD_QUES, EC_WORD_WE, EC_WORD_WON}, .speechLose = {EC_WORD_WIMPY, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_WERE, EC_WORD_WEAK, EC_WORD_ELLIPSIS}, @@ -1377,7 +1377,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { { .name = _("JORDY"), .facilityClass = FACILITY_CLASS_BIKER, - .unkC = 3, + .textColor = 3, .speechBefore = {EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GIGGLE, EC_WORD_YOU, EC_WORD_PUSHOVER}, .speechWin = {EC_WORD_WHAT, EC_WORD_A_LITTLE, EC_WORD_PUSHOVER, EC_WORD_YOU, EC_WORD_ARE, EC_WORD_EXCL}, .speechLose = {EC_WORD_YOU, EC_WORD_WERE, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_EXCL}, @@ -1520,7 +1520,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { { .name = _("ERNEST"), .facilityClass = FACILITY_CLASS_BIKER, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_IT_S, EC_WORD_SLEEP, EC_WORD_TIME, EC_WORD_FOR, EC_WORD_CHILDREN, EC_WORD_EXCL}, .speechWin = {EC_WORD_NOT, EC_WORD_GUTSY, EC_WORD_ENOUGH, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_WHY, EC_WORD_DID, EC_WORD_YOU, EC_WORD_CRUSH, EC_WORD_ME, EC_WORD_QUES}, @@ -1663,7 +1663,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_1 = { { .name = _("GABRIEL"), .facilityClass = FACILITY_CLASS_CUE_BALL, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_HERE_I_COME, EC_WORD_TO, EC_WORD_SWARM, EC_WORD_YOU}, .speechWin = {EC_WORD_I_AM, EC_WORD_INVINCIBLE, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_THAT, EC_WORD_QUES}, .speechLose = {EC_WORD_WHAT, EC_WORD_WAS, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF, 0xFFFF}, @@ -1816,7 +1816,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { { .name = _("MIKE"), .facilityClass = FACILITY_CLASS_HIKER_2, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_FULL, EC_WORD_OF, EC_WORD_POWER}, .speechWin = {EC_WORD_WHAT_S_UP_QUES, EC_WORD_WHERE, EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_GOT, EC_WORD_ME, EC_WORD_WITH, EC_WORD_YOUR, EC_MOVE2(FAKE_OUT)}, @@ -1959,7 +1959,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { { .name = _("REBECCA"), .facilityClass = FACILITY_CLASS_CRUSH_GIRL, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_IT_S, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_OVERWHELMING}, .speechLose = {EC_WORD_ARRGH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -2102,7 +2102,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_2 = { { .name = _("NICOLAS"), .facilityClass = FACILITY_CLASS_BLACK_BELT_2, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_WHERE, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_EXCL}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_EVER, EC_WORD_BEAT, EC_WORD_ME}, .speechLose = {EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES}, @@ -2255,7 +2255,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_5 = { { .name = _("JOEY"), .facilityClass = FACILITY_CLASS_CAMPER_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SCARY, EC_WORD_STRONG, EC_WORD_EXCL}, .speechWin = {EC_WORD_WERE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_QUES}, .speechLose = {EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_WAY, EC_WORD_TOO_STRONG, EC_WORD_EXCL}, @@ -2410,7 +2410,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_8 = { { .name = _("LILY"), .facilityClass = FACILITY_CLASS_PKMN_BREEDER_3, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_I, EC_WORD_WANT, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_ELLIPSIS}, @@ -2565,7 +2565,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_2 = { { .name = _("BRANDON"), .facilityClass = FACILITY_CLASS_BUG_CATCHER_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_POISON, EC_WORD_IS, EC_WORD_JUST, EC_WORD_SO, EC_WORD_AWFUL, EC_WORD_ISN_T_IT_QUES}, .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_ISN_T, EC_WORD_POISON, EC_WORD_TERRIBLE, EC_WORD_QUES}, .speechLose = {EC_WORD_HUH_QUES, EC_WORD_OUR, EC_WORD_POISON, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_QUES}, @@ -2720,7 +2720,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { { .name = _("RIC & RENE"), .facilityClass = FACILITY_CLASS_CRUSH_KIN, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME}, .speechWin = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_TOO, EC_WORD_AWESOME}, .speechLose = {EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_ISN_T, EC_WORD_AWESOME, EC_WORD_QUES}, @@ -2863,7 +2863,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_3 = { { .name = _("RIC & RENE"), .facilityClass = FACILITY_CLASS_CRUSH_KIN, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_HUH_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_NOT_VERY, EC_WORD_AWESOME, EC_WORD_QUES}, @@ -3017,7 +3017,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { { .name = _("JEN & KIRA"), .facilityClass = FACILITY_CLASS_TWINS_2, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL}, .speechWin = {EC_WORD_EHEHE, EC_WORD_YAY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -3160,7 +3160,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_1 = { { .name = _("JEN & KIRA"), .facilityClass = FACILITY_CLASS_TWINS_2, - .unkC = 3, + .textColor = 3, .speechBefore = {EC_WORD_LET_S, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL, 0xFFFF, 0xFFFF}, .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, @@ -3314,7 +3314,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { { .name = _("ISAC & MAG"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_OUR, EC_MOVE(EARTHQUAKE), EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SHAKY}, .speechWin = {EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_I_AM, EC_WORD_ALL, EC_WORD_SHAKY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF}, @@ -3457,7 +3457,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_4 = { { .name = _("ISAC & MAG"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_DOESN_T, EC_WORD_GET, EC_WORD_ALL, EC_WORD_SHAKY}, .speechWin = {EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_LIE, EC_WORD_EXCL}, .speechLose = {EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY}, @@ -3611,7 +3611,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { { .name = _("CHELSEA"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_4, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, EC_WORD_IS, EC_WORD_IMPORTANT, EC_WORD_ISN_T_IT_QUES}, .speechWin = {EC_WORD_YOU, EC_WORD_TAKE, EC_WORD_THE, EC_WORD_LOSS, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_BE, EC_WORD_KIND, EC_WORD_TO, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD}, @@ -3754,7 +3754,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { { .name = _("TRENTON"), .facilityClass = FACILITY_CLASS_PKMN_RANGER_3, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_I, EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREAT, EC_WORD_GREEN, EC_WORD_WORLD}, .speechWin = {EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_YOURS}, .speechLose = {EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, 0xFFFF, 0xFFFF}, @@ -3897,7 +3897,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_8 = { { .name = _("ALBERT"), .facilityClass = FACILITY_CLASS_COOLTRAINER_3, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_TIME, EC_WORD_HERE}, .speechWin = {EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_THINGS, EC_WORD_EXCITING}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_STRONG, EC_WORD_THAT_WAS, EC_WORD_WILD, EC_WORD_AND, EC_WORD_EXCITING}, @@ -4050,7 +4050,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { { .name = _("CAMRYN"), .facilityClass = FACILITY_CLASS_PICNICKER_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_I, EC_WORD_WON_T, EC_WORD_LOSE, EC_WORD_EXCL}, .speechWin = {EC_WORD_I, EC_WORD_SAID, EC_WORD_THAT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_WIN}, .speechLose = {EC_WORD_OH_QUES, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_DID, EC_WORD_I, EC_WORD_LOSE, EC_WORD_QUES}, @@ -4193,7 +4193,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { { .name = _("NATALIA"), .facilityClass = FACILITY_CLASS_AROMA_LADY_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_THIS, EC_MOVE(SWEET_SCENT), EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_IT, EC_WORD_QUES}, .speechWin = {EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_NICE, EC_WORD_QUES, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_THAT, EC_WORD_WASN_T, EC_WORD_GOOD, EC_WORD_QUES, 0xFFFF, 0xFFFF}, @@ -4336,7 +4336,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_3 = { { .name = _("KATHLEEN"), .facilityClass = FACILITY_CLASS_COOLTRAINER_4, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_TOO, EC_WORD_BAD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_FOR, EC_WORD_YOU}, .speechWin = {EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_THIS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_ELLIPSIS}, @@ -4489,7 +4489,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_6 = { { .name = _("BRADEN"), .facilityClass = FACILITY_CLASS_SWIMMER_MALE_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_PRETTY, EC_WORD_HAPPY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_TOUGHNESS}, .speechWin = {EC_WORD_WROOOAAR_EXCL, 0xFFFF, EC_WORD_SERIOUSLY, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES}, .speechLose = {EC_WORD_YOU, EC_WORD_SHOCKED, EC_WORD_ME, EC_WORD_OUT, EC_WORD_OF, EC_WORD_HAPPINESS}, @@ -4644,7 +4644,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_1 = { { .name = _("ALLYSON"), .facilityClass = FACILITY_CLASS_COOLTRAINER_4, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_ABOUT, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_TODAY}, .speechWin = {EC_WORD_YES, EC_WORD_EXCL_EXCL, EC_WORD_I, EC_WORD_ADORE, EC_WORD_MYSELF, EC_WORD_TODAY}, .speechLose = {EC_WORD_I_WAS, EC_WORD_CONFUSED, EC_WORD_ABOUT, EC_WORD_THINGS, EC_WORD_I, EC_WORD_THINK}, @@ -4799,7 +4799,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_1 = { { .name = _("ALBERTO"), .facilityClass = FACILITY_CLASS_SAILOR_2, - .unkC = 5, + .textColor = 5, .speechBefore = {EC_WORD_LET_S, EC_WORD_GET, EC_WORD_WITH, EC_WORD_IT, EC_WORD_RIGHT, EC_WORD_AWAY}, .speechWin = {EC_WORD_YO, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_NOW, EC_WORD_EH_QUES}, .speechLose = {EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_OVER, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER}, @@ -4954,7 +4954,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { { .name = _("KAT & KIPP"), .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, - .unkC = 4, + .textColor = 4, .speechBefore = {EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_MY, EC_WORD_BEST}, .speechWin = {EC_WORD_WAY, EC_WORD_TO, EC_WORD_GO, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER}, .speechLose = {EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_IT, EC_WORD_GOES}, @@ -5097,7 +5097,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_5 = { { .name = _("KAT & KIPP"), .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, - .unkC = 4, + .textColor = 4, .speechBefore = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_NEVER, EC_WORD_LOSE, EC_WORD_EXCL}, .speechWin = {EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOO_STRONG, EC_WORD_TO, EC_WORD_LOSE}, .speechLose = {EC_WORD_WHAT, EC_WORD_HUH_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_JOKING, EC_WORD_QUES}, @@ -5251,7 +5251,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { { .name = _("GEB&MEGAN"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_OPPONENT, EC_WORD_QUES, EC_WORD_PUSHOVER, EC_WORD_HAHAHA}, .speechWin = {EC_WORD_HAHAHA, EC_WORD_SORRY, EC_WORD_MY, EC_WORD_FRIEND, EC_WORD_TOUGH, EC_WORD_LOSS}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FRIEND, EC_WORD_QUES}, @@ -5394,7 +5394,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_8 = { { .name = _("GEB&MEGAN"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .unkC = 7, + .textColor = 7, .speechBefore = {EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_FOE, EC_WORD_QUES, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS}, .speechWin = {EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, 0xFFFF}, .speechLose = {EC_WORD_MY, EC_WORD_WORD, EC_WORD_THIS, EC_WORD_IS, EC_WORD_JUST, EC_WORD_INCREDIBLE}, @@ -5548,7 +5548,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { { .name = _("LISA&LEAH"), .facilityClass = FACILITY_CLASS_TWINS_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_ABSOLUTELY, EC_WORD_WE_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL}, .speechWin = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}, .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, @@ -5691,7 +5691,7 @@ static const struct TrainerTowerFloor gUnknown_847FD0C = { { .name = _("LISA&LEAH"), .facilityClass = FACILITY_CLASS_TWINS_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_CAN, EC_WORD_WE, EC_WORD_WIN, EC_WORD_QUES, EC_WORD_IT_S, EC_WORD_EXCITING}, .speechWin = {EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY}, .speechLose = {EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF}, @@ -5845,7 +5845,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { { .name = _("PRISCILLA"), .facilityClass = FACILITY_CLASS_TUBER_3, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_GIRL, EC_WORD_HERE_I_COME, EC_WORD_EXCL}, .speechWin = {EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DID, EC_WORD_I, EC_WORD_WIN, EC_WORD_QUES}, .speechLose = {EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_ELLIPSIS}, @@ -5988,7 +5988,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { { .name = _("CHARLOTTE"), .facilityClass = FACILITY_CLASS_LADY_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_HELLO, EC_WORD_THERE, EC_WORD_I_AM, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY}, .speechWin = {EC_WORD_OH, EC_WORD_MY, EC_WORD_MY, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SORRY}, .speechLose = {EC_WORD_YOU_RE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY}, @@ -6131,7 +6131,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_7 = { { .name = _("SHANIA"), .facilityClass = FACILITY_CLASS_SWIMMER_FEMALE_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_A, EC_WORD_POKEMON, EC_WORD_HEROINE, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM}, .speechWin = {EC_WORD_AHAHA, EC_WORD_NO, EC_WORD_WAY, EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_SERIOUSLY}, .speechLose = {EC_WORD_WHY, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LIE}, @@ -6284,7 +6284,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { { .name = _("BRENNAN"), .facilityClass = FACILITY_CLASS_SAILOR_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_TAKE, EC_WORD_THINGS, EC_WORD_EASY, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_IMPORTANT}, .speechWin = {EC_WORD_YOU, EC_WORD_LOSE, EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_EXCL}, .speechLose = {EC_WORD_OOPS, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_AN, EC_WORD_EASY, EC_WORD_WIN}, @@ -6427,7 +6427,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { { .name = _("KADEN"), .facilityClass = FACILITY_CLASS_FISHERMAN_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_MY, EC_WORD_FISHING, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_IS, EC_WORD_FANTASTIC}, .speechWin = {EC_WORD_MY, EC_WORD_FANTASTIC, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WINS, EC_WORD_OUT}, .speechLose = {EC_WORD_UH_OH, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_LOST}, @@ -6570,7 +6570,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_4 = { { .name = _("EMANUEL"), .facilityClass = FACILITY_CLASS_GENTLEMAN_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_HMM, EC_WORD_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SKILLED, EC_WORD_QUES}, .speechWin = {EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_RIGHT, EC_WORD_ELLIPSIS}, .speechLose = {EC_WORD_YOU, EC_WORD_TRULY, EC_WORD_ARE, EC_WORD_A, EC_WORD_MASTER, EC_WORD_TRAINER}, @@ -6723,7 +6723,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Single_3 = { { .name = _("JARRETT"), .facilityClass = FACILITY_CLASS_JUGGLER, - .unkC = 2, + .textColor = 2, .speechBefore = {EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_PARTY, EC_WORD_EXCL}, .speechWin = {EC_WORD_CONGRATS, EC_WORD_FOR, EC_WORD_YOUR, EC_WORD_LOSS, EC_WORD_PARTY, EC_WORD_KID}, .speechLose = {EC_WORD_NICE, EC_MOVE(SELF_DESTRUCT), EC_WORD_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_PERFECT}, @@ -6878,7 +6878,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_3 = { { .name = _("OWEN"), .facilityClass = FACILITY_CLASS_SUPER_NERD, - .unkC = 2, + .textColor = 2, .speechBefore = {EC_WORD_HERE_IT_IS, EC_MOVE2(THUNDER_WAVE), EC_WORD_DON_T, EC_MOVE2(WRAP), EC_WORD_ME, EC_WORD_EXCL}, .speechWin = {EC_WORD_ACCEPT, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_OF, EC_MOVE2(THUNDER_WAVE), EC_WORD_EXCL}, .speechLose = {EC_MOVE2(WRAP), EC_MOVE(BIND), EC_WORD_ELECTRIC, EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, EC_WORD_AROUND}, @@ -7033,7 +7033,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Mixed_2 = { { .name = _("LORENZO"), .facilityClass = FACILITY_CLASS_PSYCHIC_3, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_THIS, EC_WORD_POWER, EC_WORD_IS, EC_WORD_NOW, EC_WORD_COMPLETE, EC_WORD_EXCL}, .speechWin = {EC_WORD_NO, EC_WORD_KEEN_EYE, EC_WORD_CAN, EC_WORD_STOP, EC_WORD_MY, EC_WORD_POWER}, .speechLose = {EC_WORD_HERE_IT_IS, EC_WORD_EXCL, EC_MOVE(KINESIS), EC_WORD_EXCL, EC_WORD_ELLIPSIS, EC_WORD_WHAT}, @@ -7188,7 +7188,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { { .name = _("NIA & CARL"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .unkC = 4, + .textColor = 4, .speechBefore = {EC_WORD_HERE_GOES, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_ROMANTIC, EC_WORD_HERO, EC_WORD_STRATEGY}, .speechWin = {EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_DIGITAL, EC_WORD_HYPER, EC_WORD_MODE, EC_WORD_POWER}, .speechLose = {EC_WORD_MY, EC_WORD_PERFECT, EC_WORD_STRATEGY, EC_WORD_WAS, EC_MOVE2(BEAT_UP), EC_WORD_QUES}, @@ -7331,7 +7331,7 @@ static const struct TrainerTowerFloor gUnknown_848144C = { { .name = _("NIA & CARL"), .facilityClass = FACILITY_CLASS_COOL_COUPLE, - .unkC = 4, + .textColor = 4, .speechBefore = {EC_WORD_MASTER, EC_WORD_COMPLETE, EC_WORD_FASHION, EC_WORD_SYSTEM, EC_WORD_START, EC_WORD_EXCL}, .speechWin = {EC_WORD_THAT_S_IT_EXCL, EC_WORD_THE, EC_WORD_POWER, EC_WORD_OF, EC_WORD_OUR, EC_WORD_SYSTEM}, .speechLose = {EC_WORD_OKAY, EC_WORD_EXCL, EC_MOVE(THUNDERBOLT), EC_WORD_RUN_AWAY, EC_WORD_SYSTEM, EC_WORD_START}, @@ -7485,7 +7485,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { { .name = _("AXE & REN"), .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, - .unkC = 2, + .textColor = 2, .speechBefore = {EC_WORD_IT_S, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_WORD_AWFULLY, EC_WORD_COLD}, .speechWin = {EC_WORD_THAT_S, EC_WORD_THAT, EC_WORD_MAN, EC_WORD_I_AM, EC_WORD_COLD, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_ELLIPSIS}, @@ -7628,7 +7628,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Double_7 = { { .name = _("AXE & REN"), .facilityClass = FACILITY_CLASS_SIS_AND_BRO_2, - .unkC = 2, + .textColor = 2, .speechBefore = {EC_WORD_OUR, EC_WORD_SWIFT_SWIM, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_COLD}, .speechWin = {EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_HOT}, .speechLose = {EC_WORD_I_AM, EC_WORD_HUNGRY, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_HOT, EC_WORD_EATS}, @@ -7782,7 +7782,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { { .name = _("KATI & GEB"), .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, - .unkC = 2, + .textColor = 2, .speechBefore = {EC_WORD_WELCOME, EC_WORD_TO, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_MOVE2(THUNDER_WAVE), EC_MOVE(SANDSTORM)}, .speechWin = {EC_WORD_LALALA, EC_WORD_LALALA, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LALALA, EC_WORD_LIFE}, .speechLose = {EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_MY, EC_MOVE2(FRUSTRATION)}, @@ -7925,7 +7925,7 @@ static const struct TrainerTowerFloor gUnknown_8481C0C = { { .name = _("KATI & GEB"), .facilityClass = FACILITY_CLASS_YOUNG_COUPLE_2, - .unkC = 2, + .textColor = 2, .speechBefore = {EC_WORD_I_AM, EC_WORD_PLUS, EC_WORD_YOU_RE, EC_WORD_MINUS, EC_WORD_LOVEY_DOVEY, EC_WORD_MAGNET_PULL}, .speechWin = {EC_WORD_DON_T, EC_WORD_STOP, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LOCOMOTIVE, EC_WORD_EXCL}, .speechLose = {EC_WORD_HIS, EC_WORD_CRY, EC_WORD_HAS, EC_WORD_CUTE_CHARM, EC_WORD_TOO, EC_WORD_EXCL}, @@ -8079,7 +8079,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { { .name = _("BEN"), .facilityClass = FACILITY_CLASS_ROCKER, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, .speechWin = {EC_WORD_STATIC, EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YES, EC_WORD_IT, EC_WORD_IS}, .speechLose = {EC_WORD_ELECTRIC, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_TELEVISION, EC_WORD_I_AM}, @@ -8222,7 +8222,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { { .name = _("CAMDEN"), .facilityClass = FACILITY_CLASS_ENGINEER, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, .speechWin = {EC_WORD_A, EC_MOVE(THUNDERBOLT), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_TOO, EC_WORD_EXCL}, .speechLose = {EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_WIRELESS, EC_WORD_LINK}, @@ -8365,7 +8365,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_6 = { { .name = _("ZACKERY"), .facilityClass = FACILITY_CLASS_SCIENTIST, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER}, .speechWin = {EC_MOVE2(THUNDER_SHOCK), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES}, .speechLose = {EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_WORD_EXCL_EXCL}, @@ -8518,7 +8518,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { { .name = _("MAURA"), .facilityClass = FACILITY_CLASS_BEAUTY_2, - .unkC = 2, + .textColor = 2, .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_WORD_GROUP, EC_WORD_LEADER, EC_WORD_EXCL, 0xFFFF}, .speechWin = {EC_WORD_WHAT, EC_WORD_AM, EC_WORD_I, EC_WORD_LEADER, EC_WORD_OF, EC_WORD_QUES}, .speechLose = {EC_WORD_I_AM, EC_WORD_NO, EC_WORD_LEADER, EC_WORD_IT_S, EC_WORD_A_LITTLE, EC_WORD_LIE}, @@ -8661,7 +8661,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { { .name = _("MIKAELA"), .facilityClass = FACILITY_CLASS_LASS_2, - .unkC = 1, + .textColor = 1, .speechBefore = {EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_THE, EC_WORD_NO_1, EC_WORD_TRAINER, EC_WORD_HERE}, .speechWin = {EC_WORD_NEVER, EC_WORD_SAID, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_AT}, .speechLose = {EC_WORD_NEXT, EC_WORD_TIME, EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_OVERWHELMING}, @@ -8804,7 +8804,7 @@ static const struct TrainerTowerFloor sTrainerTowerFloor_Knockout_5 = { { .name = _("FLINT"), .facilityClass = FACILITY_CLASS_ENGINEER, - .unkC = 4, + .textColor = 4, .speechBefore = {EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(MILK_DRINK), EC_WORD_WORLD, EC_WORD_LEADER, EC_WORD_EXCL}, .speechWin = {EC_WORD_I_VE, EC_WORD_WON, EC_WORD_THIS, EC_MOVE2(MILK_DRINK), EC_WORD_MATCH, EC_WORD_EXCL}, .speechLose = {EC_WORD_I, EC_WORD_CAN_T, EC_WORD_DRINK, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_DRINKS}, From 11acb9adc74e0b6430043c8ea2e65ab203a8043a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 8 May 2021 09:42:12 -0400 Subject: [PATCH 28/28] Finish porting data_8479668.s to C --- data/data_8479668.s | 375 --------------------- ld_script.txt | 2 +- src/move_descriptions.c | 714 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 715 insertions(+), 376 deletions(-) delete mode 100644 data/data_8479668.s create mode 100644 src/move_descriptions.c diff --git a/data/data_8479668.s b/data/data_8479668.s deleted file mode 100644 index 155dce48e..000000000 --- a/data/data_8479668.s +++ /dev/null @@ -1,375 +0,0 @@ -#include "constants/species.h" -#include "constants/items.h" -#include "constants/moves.h" -#include "constants/pokemon.h" -#include "constants/easy_chat.h" -#include "constants/facility_trainer_classes.h" - -#define MALE 0 -#define FEMALE 1 -#define NULL 0 - - .include "asm/macros.inc" - - .section .rodata - - @ 847ABAC -.align 2 - .include "data/text/move_descriptions.inc" - - .align 2, 0 -gMoveDescriptionPointers:: @ 84886E8 - .4byte gMoveDescription_Pound - .4byte gMoveDescription_KarateChop - .4byte gMoveDescription_DoubleSlap - .4byte gMoveDescription_CometPunch - .4byte gMoveDescription_MegaPunch - .4byte gMoveDescription_PayDay - .4byte gMoveDescription_FirePunch - .4byte gMoveDescription_IcePunch - .4byte gMoveDescription_ThunderPunch - .4byte gMoveDescription_Scratch - .4byte gMoveDescription_ViceGrip - .4byte gMoveDescription_Guillotine - .4byte gMoveDescription_RazorWind - .4byte gMoveDescription_SwordsDance - .4byte gMoveDescription_Cut - .4byte gMoveDescription_Gust - .4byte gMoveDescription_WingAttack - .4byte gMoveDescription_Whirlwind - .4byte gMoveDescription_Fly - .4byte gMoveDescription_Bind - .4byte gMoveDescription_Slam - .4byte gMoveDescription_VineWhip - .4byte gMoveDescription_Stomp - .4byte gMoveDescription_DoubleKick - .4byte gMoveDescription_MegaKick - .4byte gMoveDescription_JumpKick - .4byte gMoveDescription_RollingKick - .4byte gMoveDescription_SandAttack - .4byte gMoveDescription_Headbutt - .4byte gMoveDescription_HornAttack - .4byte gMoveDescription_FuryAttack - .4byte gMoveDescription_HornDrill - .4byte gMoveDescription_Tackle - .4byte gMoveDescription_BodySlam - .4byte gMoveDescription_Wrap - .4byte gMoveDescription_TakeDown - .4byte gMoveDescription_Thrash - .4byte gMoveDescription_DoubleEdge - .4byte gMoveDescription_TailWhip - .4byte gMoveDescription_PoisonSting - .4byte gMoveDescription_Twineedle - .4byte gMoveDescription_PinMissile - .4byte gMoveDescription_Leer - .4byte gMoveDescription_Bite - .4byte gMoveDescription_Growl - .4byte gMoveDescription_Roar - .4byte gMoveDescription_Sing - .4byte gMoveDescription_Supersonic - .4byte gMoveDescription_SonicBoom - .4byte gMoveDescription_Disable - .4byte gMoveDescription_Acid - .4byte gMoveDescription_Ember - .4byte gMoveDescription_Flamethrower - .4byte gMoveDescription_Mist - .4byte gMoveDescription_WaterGun - .4byte gMoveDescription_HydroPump - .4byte gMoveDescription_Surf - .4byte gMoveDescription_IceBeam - .4byte gMoveDescription_Blizzard - .4byte gMoveDescription_Psybeam - .4byte gMoveDescription_BubbleBeam - .4byte gMoveDescription_AuroraBeam - .4byte gMoveDescription_HyperBeam - .4byte gMoveDescription_Peck - .4byte gMoveDescription_DrillPeck - .4byte gMoveDescription_Submission - .4byte gMoveDescription_LowKick - .4byte gMoveDescription_Counter - .4byte gMoveDescription_SeismicToss - .4byte gMoveDescription_Strength - .4byte gMoveDescription_Absorb - .4byte gMoveDescription_MegaDrain - .4byte gMoveDescription_LeechSeed - .4byte gMoveDescription_Growth - .4byte gMoveDescription_RazorLeaf - .4byte gMoveDescription_SolarBeam - .4byte gMoveDescription_PoisonPowder - .4byte gMoveDescription_StunSpore - .4byte gMoveDescription_SleepPowder - .4byte gMoveDescription_PetalDance - .4byte gMoveDescription_StringShot - .4byte gMoveDescription_DragonRage - .4byte gMoveDescription_FireSpin - .4byte gMoveDescription_ThunderShock - .4byte gMoveDescription_Thunderbolt - .4byte gMoveDescription_ThunderWave - .4byte gMoveDescription_Thunder - .4byte gMoveDescription_RockThrow - .4byte gMoveDescription_Earthquake - .4byte gMoveDescription_Fissure - .4byte gMoveDescription_Dig - .4byte gMoveDescription_Toxic - .4byte gMoveDescription_Confusion - .4byte gMoveDescription_Psychic - .4byte gMoveDescription_Hypnosis - .4byte gMoveDescription_Meditate - .4byte gMoveDescription_Agility - .4byte gMoveDescription_QuickAttack - .4byte gMoveDescription_Rage - .4byte gMoveDescription_Teleport - .4byte gMoveDescription_NightShade - .4byte gMoveDescription_Mimic - .4byte gMoveDescription_Screech - .4byte gMoveDescription_DoubleTeam - .4byte gMoveDescription_Recover - .4byte gMoveDescription_Harden - .4byte gMoveDescription_Minimize - .4byte gMoveDescription_Smokescreen - .4byte gMoveDescription_ConfuseRay - .4byte gMoveDescription_Withdraw - .4byte gMoveDescription_DefenseCurl - .4byte gMoveDescription_Barrier - .4byte gMoveDescription_LightScreen - .4byte gMoveDescription_Haze - .4byte gMoveDescription_Reflect - .4byte gMoveDescription_FocusEnergy - .4byte gMoveDescription_Bide - .4byte gMoveDescription_Metronome - .4byte gMoveDescription_MirrorMove - .4byte gMoveDescription_SelfDestruct - .4byte gMoveDescription_EggBomb - .4byte gMoveDescription_Lick - .4byte gMoveDescription_Smog - .4byte gMoveDescription_Sludge - .4byte gMoveDescription_BoneClub - .4byte gMoveDescription_FireBlast - .4byte gMoveDescription_Waterfall - .4byte gMoveDescription_Clamp - .4byte gMoveDescription_Swift - .4byte gMoveDescription_SkullBash - .4byte gMoveDescription_SpikeCannon - .4byte gMoveDescription_Constrict - .4byte gMoveDescription_Amnesia - .4byte gMoveDescription_Kinesis - .4byte gMoveDescription_SoftBoiled - .4byte gMoveDescription_HiJumpKick - .4byte gMoveDescription_Glare - .4byte gMoveDescription_DreamEater - .4byte gMoveDescription_PoisonGas - .4byte gMoveDescription_Barrage - .4byte gMoveDescription_LeechLife - .4byte gMoveDescription_LovelyKiss - .4byte gMoveDescription_SkyAttack - .4byte gMoveDescription_Transform - .4byte gMoveDescription_Bubble - .4byte gMoveDescription_DizzyPunch - .4byte gMoveDescription_Spore - .4byte gMoveDescription_Flash - .4byte gMoveDescription_Psywave - .4byte gMoveDescription_Splash - .4byte gMoveDescription_AcidArmor - .4byte gMoveDescription_Crabhammer - .4byte gMoveDescription_Explosion - .4byte gMoveDescription_FurySwipes - .4byte gMoveDescription_Bonemerang - .4byte gMoveDescription_Rest - .4byte gMoveDescription_RockSlide - .4byte gMoveDescription_HyperFang - .4byte gMoveDescription_Sharpen - .4byte gMoveDescription_Conversion - .4byte gMoveDescription_TriAttack - .4byte gMoveDescription_SuperFang - .4byte gMoveDescription_Slash - .4byte gMoveDescription_Substitute - .4byte gMoveDescription_Struggle - .4byte gMoveDescription_Sketch - .4byte gMoveDescription_TripleKick - .4byte gMoveDescription_Thief - .4byte gMoveDescription_SpiderWeb - .4byte gMoveDescription_MindReader - .4byte gMoveDescription_Nightmare - .4byte gMoveDescription_FlameWheel - .4byte gMoveDescription_Snore - .4byte gMoveDescription_Curse - .4byte gMoveDescription_Flail - .4byte gMoveDescription_Conversion2 - .4byte gMoveDescription_Aeroblast - .4byte gMoveDescription_CottonSpore - .4byte gMoveDescription_Reversal - .4byte gMoveDescription_Spite - .4byte gMoveDescription_PowderSnow - .4byte gMoveDescription_Protect - .4byte gMoveDescription_MachPunch - .4byte gMoveDescription_ScaryFace - .4byte gMoveDescription_FaintAttack - .4byte gMoveDescription_SweetKiss - .4byte gMoveDescription_BellyDrum - .4byte gMoveDescription_SludgeBomb - .4byte gMoveDescription_MudSlap - .4byte gMoveDescription_Octazooka - .4byte gMoveDescription_Spikes - .4byte gMoveDescription_ZapCannon - .4byte gMoveDescription_Foresight - .4byte gMoveDescription_DestinyBond - .4byte gMoveDescription_PerishSong - .4byte gMoveDescription_IcyWind - .4byte gMoveDescription_Detect - .4byte gMoveDescription_BoneRush - .4byte gMoveDescription_LockOn - .4byte gMoveDescription_Outrage - .4byte gMoveDescription_Sandstorm - .4byte gMoveDescription_GigaDrain - .4byte gMoveDescription_Endure - .4byte gMoveDescription_Charm - .4byte gMoveDescription_Rollout - .4byte gMoveDescription_FalseSwipe - .4byte gMoveDescription_Swagger - .4byte gMoveDescription_MilkDrink - .4byte gMoveDescription_Spark - .4byte gMoveDescription_FuryCutter - .4byte gMoveDescription_SteelWing - .4byte gMoveDescription_MeanLook - .4byte gMoveDescription_Attract - .4byte gMoveDescription_SleepTalk - .4byte gMoveDescription_HealBell - .4byte gMoveDescription_Return - .4byte gMoveDescription_Present - .4byte gMoveDescription_Frustration - .4byte gMoveDescription_Safeguard - .4byte gMoveDescription_PainSplit - .4byte gMoveDescription_SacredFire - .4byte gMoveDescription_Magnitude - .4byte gMoveDescription_DynamicPunch - .4byte gMoveDescription_Megahorn - .4byte gMoveDescription_DragonBreath - .4byte gMoveDescription_BatonPass - .4byte gMoveDescription_Encore - .4byte gMoveDescription_Pursuit - .4byte gMoveDescription_RapidSpin - .4byte gMoveDescription_SweetScent - .4byte gMoveDescription_IronTail - .4byte gMoveDescription_MetalClaw - .4byte gMoveDescription_VitalThrow - .4byte gMoveDescription_MorningSun - .4byte gMoveDescription_Synthesis - .4byte gMoveDescription_Moonlight - .4byte gMoveDescription_HiddenPower - .4byte gMoveDescription_CrossChop - .4byte gMoveDescription_Twister - .4byte gMoveDescription_RainDance - .4byte gMoveDescription_SunnyDay - .4byte gMoveDescription_Crunch - .4byte gMoveDescription_MirrorCoat - .4byte gMoveDescription_PsychUp - .4byte gMoveDescription_ExtremeSpeed - .4byte gMoveDescription_AncientPower - .4byte gMoveDescription_ShadowBall - .4byte gMoveDescription_FutureSight - .4byte gMoveDescription_RockSmash - .4byte gMoveDescription_Whirlpool - .4byte gMoveDescription_BeatUp - .4byte gMoveDescription_FakeOut - .4byte gMoveDescription_Uproar - .4byte gMoveDescription_Stockpile - .4byte gMoveDescription_SpitUp - .4byte gMoveDescription_Swallow - .4byte gMoveDescription_HeatWave - .4byte gMoveDescription_Hail - .4byte gMoveDescription_Torment - .4byte gMoveDescription_Flatter - .4byte gMoveDescription_WillOWisp - .4byte gMoveDescription_Memento - .4byte gMoveDescription_Facade - .4byte gMoveDescription_FocusPunch - .4byte gMoveDescription_SmellingSalt - .4byte gMoveDescription_FollowMe - .4byte gMoveDescription_NaturePower - .4byte gMoveDescription_Charge - .4byte gMoveDescription_Taunt - .4byte gMoveDescription_HelpingHand - .4byte gMoveDescription_Trick - .4byte gMoveDescription_RolePlay - .4byte gMoveDescription_Wish - .4byte gMoveDescription_Assist - .4byte gMoveDescription_Ingrain - .4byte gMoveDescription_Superpower - .4byte gMoveDescription_MagicCoat - .4byte gMoveDescription_Recycle - .4byte gMoveDescription_Revenge - .4byte gMoveDescription_BrickBreak - .4byte gMoveDescription_Yawn - .4byte gMoveDescription_KnockOff - .4byte gMoveDescription_Endeavor - .4byte gMoveDescription_Eruption - .4byte gMoveDescription_SkillSwap - .4byte gMoveDescription_Imprison - .4byte gMoveDescription_Refresh - .4byte gMoveDescription_Grudge - .4byte gMoveDescription_Snatch - .4byte gMoveDescription_SecretPower - .4byte gMoveDescription_Dive - .4byte gMoveDescription_ArmThrust - .4byte gMoveDescription_Camouflage - .4byte gMoveDescription_TailGlow - .4byte gMoveDescription_LusterPurge - .4byte gMoveDescription_MistBall - .4byte gMoveDescription_FeatherDance - .4byte gMoveDescription_TeeterDance - .4byte gMoveDescription_BlazeKick - .4byte gMoveDescription_MudSport - .4byte gMoveDescription_IceBall - .4byte gMoveDescription_NeedleArm - .4byte gMoveDescription_SlackOff - .4byte gMoveDescription_HyperVoice - .4byte gMoveDescription_PoisonFang - .4byte gMoveDescription_CrushClaw - .4byte gMoveDescription_BlastBurn - .4byte gMoveDescription_HydroCannon - .4byte gMoveDescription_MeteorMash - .4byte gMoveDescription_Astonish - .4byte gMoveDescription_WeatherBall - .4byte gMoveDescription_Aromatherapy - .4byte gMoveDescription_FakeTears - .4byte gMoveDescription_AirCutter - .4byte gMoveDescription_Overheat - .4byte gMoveDescription_OdorSleuth - .4byte gMoveDescription_RockTomb - .4byte gMoveDescription_SilverWind - .4byte gMoveDescription_MetalSound - .4byte gMoveDescription_GrassWhistle - .4byte gMoveDescription_Tickle - .4byte gMoveDescription_CosmicPower - .4byte gMoveDescription_WaterSpout - .4byte gMoveDescription_SignalBeam - .4byte gMoveDescription_ShadowPunch - .4byte gMoveDescription_Extrasensory - .4byte gMoveDescription_SkyUppercut - .4byte gMoveDescription_SandTomb - .4byte gMoveDescription_SheerCold - .4byte gMoveDescription_MuddyWater - .4byte gMoveDescription_BulletSeed - .4byte gMoveDescription_AerialAce - .4byte gMoveDescription_IcicleSpear - .4byte gMoveDescription_IronDefense - .4byte gMoveDescription_Block - .4byte gMoveDescription_Howl - .4byte gMoveDescription_DragonClaw - .4byte gMoveDescription_FrenzyPlant - .4byte gMoveDescription_BulkUp - .4byte gMoveDescription_Bounce - .4byte gMoveDescription_MudShot - .4byte gMoveDescription_PoisonTail - .4byte gMoveDescription_Covet - .4byte gMoveDescription_VoltTackle - .4byte gMoveDescription_MagicalLeaf - .4byte gMoveDescription_WaterSport - .4byte gMoveDescription_CalmMind - .4byte gMoveDescription_LeafBlade - .4byte gMoveDescription_DragonDance - .4byte gMoveDescription_RockBlast - .4byte gMoveDescription_ShockWave - .4byte gMoveDescription_WaterPulse - .4byte gMoveDescription_DoomDesire - .4byte gMoveDescription_PsychoBoost diff --git a/ld_script.txt b/ld_script.txt index 8553737f3..48a386163 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -610,7 +610,7 @@ SECTIONS { src/berry_fix_program.o(.rodata); src/keyboard_text.o(.rodata); src/trainer_tower_sets.o(.rodata); - data/data_8479668.o(.rodata); + src/move_descriptions.o(.rodata); /* These should not be moved to C files */ src/mystery_event_msg.o(.rodata); diff --git a/src/move_descriptions.c b/src/move_descriptions.c new file mode 100644 index 000000000..8ece0e12d --- /dev/null +++ b/src/move_descriptions.c @@ -0,0 +1,714 @@ +#include "global.h" +#include "constants/moves.h" + +const u8 gMoveDescription_Pound[] = _("A physical attack\ndelivered with a\nlong tail or a\nforeleg, etc."); +const u8 gMoveDescription_KarateChop[] = _("The foe is attacked\nwith a sharp chop.\nIt has a high\ncritical-hit ratio."); +const u8 gMoveDescription_DoubleSlap[] = _("The foe is slapped\nrepeatedly, back\nand forth, two to\nfive times."); +const u8 gMoveDescription_CometPunch[] = _("The foe is hit with\na flurry of punches\nthat strike two to\nfive times."); +const u8 gMoveDescription_MegaPunch[] = _("The foe is slugged\nby a punch thrown\nwith muscle-packed\npower."); +const u8 gMoveDescription_PayDay[] = _("Numerous coins are\nhurled at the foe.\nMoney is earned\nafter battle."); +const u8 gMoveDescription_FirePunch[] = _("The foe is punched\nwith a fiery fist.\nIt may leave the\nfoe with a burn."); +const u8 gMoveDescription_IcePunch[] = _("The foe is punched\nwith an icy fist.\nIt may leave the\nfoe frozen."); +const u8 gMoveDescription_ThunderPunch[] = _("The foe is punched\nwith an electrified\nfist. It may leave\nthe foe paralyzed."); +const u8 gMoveDescription_Scratch[] = _("Hard, pointed, and\nsharp claws rake\nthe foe."); +const u8 gMoveDescription_ViceGrip[] = _("Huge, impressive\npincers grip and\nsqueeze the foe."); +const u8 gMoveDescription_Guillotine[] = _("A vicious tearing\nattack with pincers.\nThe foe will faint\nif it hits."); +const u8 gMoveDescription_RazorWind[] = _("Blades of wind hit\nthe foe on the 2nd\nturn. It has a high\ncritical-hit ratio."); +const u8 gMoveDescription_SwordsDance[] = _("A frenetic dance of\nfighting. It sharply\nraises the ATTACK\nstat."); +const u8 gMoveDescription_Cut[] = _("A basic attack.\nIt can be used to\ncut down thin trees\nand grass."); +const u8 gMoveDescription_Gust[] = _("Strikes the foe\nwith a gust of wind\nwhipped up by\nwings."); +const u8 gMoveDescription_WingAttack[] = _("The foe is struck\nwith large, imposing\nwings spread wide."); +const u8 gMoveDescription_Whirlwind[] = _("The foe is made to\nswitch out with an\nally. In the wild,\nthe battle ends."); +const u8 gMoveDescription_Fly[] = _("A 2-turn move that\nhits on the 2nd\nturn. Use it to fly\nto any known town."); +const u8 gMoveDescription_Bind[] = _("A long body or\ntentacles are used\nto bind the foe for\ntwo to five turns."); +const u8 gMoveDescription_Slam[] = _("The foe is struck\nwith a long tail,\nvines, etc."); +const u8 gMoveDescription_VineWhip[] = _("The foe is struck\nwith slender, whip-\nlike vines."); +const u8 gMoveDescription_Stomp[] = _("The foe is stomped\nwith a big foot.\nIt may make the\nfoe flinch."); +const u8 gMoveDescription_DoubleKick[] = _("Two legs are used\nto quickly kick the\nfoe twice in one\nturn."); +const u8 gMoveDescription_MegaKick[] = _("The foe is attacked\nby a kick fired\nwith muscle-packed\npower."); +const u8 gMoveDescription_JumpKick[] = _("The user jumps up\nhigh, then kicks.\nIf it misses, the\nuser hurts itself."); +const u8 gMoveDescription_RollingKick[] = _("A quick kick from a\nrolling spin.\nIt may make the\nfoe flinch."); +const u8 gMoveDescription_SandAttack[] = _("A lot of sand is\nhurled in the foe's\nface, reducing its\naccuracy."); +const u8 gMoveDescription_Headbutt[] = _("The user sticks its\nhead out and rams.\nIt may make the\nfoe flinch."); +const u8 gMoveDescription_HornAttack[] = _("The foe is jabbed\nwith a sharply\npointed horn to\ninflict damage."); +const u8 gMoveDescription_FuryAttack[] = _("The foe is jabbed\nrepeatedly with a\nhorn or beak two to\nfive times."); +const u8 gMoveDescription_HornDrill[] = _("The horn is rotated\nlike a drill to ram.\nThe foe will faint\nif it hits."); +const u8 gMoveDescription_Tackle[] = _("A physical attack\nin which the user\ncharges, full body,\ninto the foe."); +const u8 gMoveDescription_BodySlam[] = _("The user drops its\nfull body on the\nfoe. It may leave\nthe foe paralyzed."); +const u8 gMoveDescription_Wrap[] = _("A long body or\nvines are used to\nwrap the foe for\ntwo to five turns."); +const u8 gMoveDescription_TakeDown[] = _("A reckless, full-\nbody charge attack\nthat also hurts the\nuser a little."); +const u8 gMoveDescription_Thrash[] = _("The user rampages\nabout for two to\nthree turns, then\nbecomes confused."); +const u8 gMoveDescription_DoubleEdge[] = _("A reckless, life-\nrisking tackle that\nalso hurts the user\na little."); +const u8 gMoveDescription_TailWhip[] = _("The user wags its\ntail cutely, making\nthe foe lower its\nDEFENSE stat."); +const u8 gMoveDescription_PoisonSting[] = _("The foe is stabbed\nwith a toxic barb,\netc. It may poison\nthe foe."); +const u8 gMoveDescription_Twineedle[] = _("The foe is stabbed\ntwice with foreleg\nstingers. It may\npoison the foe."); +const u8 gMoveDescription_PinMissile[] = _("Sharp pins are shot\nat the foe and hit\ntwo to five times\nat once."); +const u8 gMoveDescription_Leer[] = _("The foe is given an\nintimidating look\nthat lowers its\nDEFENSE stat."); +const u8 gMoveDescription_Bite[] = _("The user bites with\nvicious fangs.\nIt may make the\nfoe flinch."); +const u8 gMoveDescription_Growl[] = _("The user growls in\na cute way, making\nthe foe lower its\nATTACK stat."); +const u8 gMoveDescription_Roar[] = _("The foe is made to\nswitch out with an\nally. In the wild,\nthe battle ends."); +const u8 gMoveDescription_Sing[] = _("A soothing song\nin a calming voice\nlulls the foe into\na deep slumber."); +const u8 gMoveDescription_Supersonic[] = _("The user generates\nodd sound waves.\nIt may confuse the\nfoe."); +const u8 gMoveDescription_SonicBoom[] = _("The foe is hit with\na shock wave that\nalways inflicts 20-\nHP damage."); +const u8 gMoveDescription_Disable[] = _("For a few turns,\nit prevents the foe\nfrom using the move\nit last used."); +const u8 gMoveDescription_Acid[] = _("The foe is sprayed\nwith a harsh, hide-\nmelting acid that\nmay lower DEFENSE."); +const u8 gMoveDescription_Ember[] = _("The foe is attacked\nwith small flames.\nThe foe may suffer\na burn."); +const u8 gMoveDescription_Flamethrower[] = _("The foe is scorched\nwith intense flames.\nThe foe may suffer\na burn."); +const u8 gMoveDescription_Mist[] = _("The ally party is\nprotected by a\nmist that prevents\nstat reductions."); +const u8 gMoveDescription_WaterGun[] = _("The foe is struck\nwith a lot of water\nexpelled forcibly\nfrom the mouth."); +const u8 gMoveDescription_HydroPump[] = _("A high volume of\nwater is blasted at\nthe foe under great\npressure."); +const u8 gMoveDescription_Surf[] = _("A big wave crashes\ndown on the foe.\nCan also be used\nfor crossing water."); +const u8 gMoveDescription_IceBeam[] = _("The foe is struck\nwith an icy beam.\nIt may freeze the\nfoe solid."); +const u8 gMoveDescription_Blizzard[] = _("The foe is blasted\nwith a blizzard.\nIt may freeze the\nfoe solid."); +const u8 gMoveDescription_Psybeam[] = _("A peculiar ray is\nshot at the foe.\nIt may leave the\nfoe confused."); +const u8 gMoveDescription_BubbleBeam[] = _("A spray of bubbles\nstrikes the foe.\nIt may lower the\nfoe's SPEED stat."); +const u8 gMoveDescription_AuroraBeam[] = _("A rainbow-colored\nattack beam.\nIt may lower the\nfoe's ATTACK stat."); +const u8 gMoveDescription_HyperBeam[] = _("A severely damaging\nattack that makes\nthe user rest on\nthe next turn."); +const u8 gMoveDescription_Peck[] = _("The foe is jabbed\nwith a sharply\npointed beak or\nhorn."); +const u8 gMoveDescription_DrillPeck[] = _("A corkscrewing\nattack with the\nsharp beak acting\nas a drill."); +const u8 gMoveDescription_Submission[] = _("A reckless, full-\nbody throw attack\nthat also hurts the\nuser a little."); +const u8 gMoveDescription_LowKick[] = _("A low, tripping kick\nthat inflicts more\ndamage on heavier\nfoes."); +const u8 gMoveDescription_Counter[] = _("A retaliation move\nthat counters any\nphysical hit with\ndouble the damage."); +const u8 gMoveDescription_SeismicToss[] = _("A gravity-fed throw\nthat causes damage\nmatching the user's\nlevel."); +const u8 gMoveDescription_Strength[] = _("The foe is slugged\nat maximum power.\nCan also be used\nto move boulders."); +const u8 gMoveDescription_Absorb[] = _("An attack that\nabsorbs half the\ndamage it inflicted\nto restore HP."); +const u8 gMoveDescription_MegaDrain[] = _("A tough attack that\ndrains half the\ndamage it inflicted\nto restore HP."); +const u8 gMoveDescription_LeechSeed[] = _("A seed is planted\non the foe to steal\nsome HP for the \nuser on every turn."); +const u8 gMoveDescription_Growth[] = _("The user's body is\nforced to grow,\nraising the SP.\nATK stat."); +const u8 gMoveDescription_RazorLeaf[] = _("The foe is hit with\na cutting leaf.\nIt has a high\ncritical-hit ratio."); +const u8 gMoveDescription_SolarBeam[] = _("A 2-turn move that\nblasts the foe with\nabsorbed energy in\nthe 2nd turn."); +const u8 gMoveDescription_PoisonPowder[] = _("A cloud of toxic\ndust is scattered.\nIt may poison the\nfoe."); +const u8 gMoveDescription_StunSpore[] = _("Paralyzing dust is\nscattered wildly.\nIt may paralyze\nthe foe."); +const u8 gMoveDescription_SleepPowder[] = _("A sleep-inducing\ndust is scattered\nin high volume\naround a foe."); +const u8 gMoveDescription_PetalDance[] = _("The user attacks\nwith petals for two\nto three turns,\nthen gets confused."); +const u8 gMoveDescription_StringShot[] = _("The foe is bound\nwith strings shot\nfrom the mouth to\nreduce its SPEED."); +const u8 gMoveDescription_DragonRage[] = _("The foe is hit with\na shock wave that\nalways inflicts 40-\nHP damage."); +const u8 gMoveDescription_FireSpin[] = _("The foe is trapped\nin an intense spiral\nof fire that rages\ntwo to five turns."); +const u8 gMoveDescription_ThunderShock[] = _("An electric shock\nattack that may\nalso leave the foe\nparalyzed."); +const u8 gMoveDescription_Thunderbolt[] = _("A strong electrical\nattack that may\nalso leave the foe\nparalyzed."); +const u8 gMoveDescription_ThunderWave[] = _("A weak electric\nshock that is sure\nto cause paralysis\nif it hits."); +const u8 gMoveDescription_Thunder[] = _("A brutal lightning\nattack that may\nalso leave the foe\nparalyzed."); +const u8 gMoveDescription_RockThrow[] = _("The foe is attacked\nwith a shower of\nsmall, easily\nthrown rocks."); +const u8 gMoveDescription_Earthquake[] = _("An earthquake that\nstrikes all POKéMON\nin battle excluding\nthe user."); +const u8 gMoveDescription_Fissure[] = _("The foe is dropped\ninto a fissure.\nThe foe faints if it\nhits."); +const u8 gMoveDescription_Dig[] = _("An attack that hits\non the 2nd turn.\nCan also be used\nto exit dungeons."); +const u8 gMoveDescription_Toxic[] = _("A move that badly\npoisons the foe.\nIts poison damage\nworsens every turn."); +const u8 gMoveDescription_Confusion[] = _("A weak telekinetic\nattack that may\nalso leave the foe\nconfused."); +const u8 gMoveDescription_Psychic[] = _("A strong telekinetic\nattack. It may also\nlower the foe's\nSP. DEF stat."); +const u8 gMoveDescription_Hypnosis[] = _("Hypnotic suggestion\nis used to make the\nfoe fall into a\ndeep sleep."); +const u8 gMoveDescription_Meditate[] = _("The user meditates\nto awaken its power\nand raise its\nATTACK stat."); +const u8 gMoveDescription_Agility[] = _("The user relaxes\nand lightens its\nbody to sharply\nboost its SPEED."); +const u8 gMoveDescription_QuickAttack[] = _("An almost invisibly\nfast attack that\nis certain to strike\nfirst."); +const u8 gMoveDescription_Rage[] = _("An attack that\nbecomes stronger\neach time the user\nis hit in battle."); +const u8 gMoveDescription_Teleport[] = _("Use it to flee from\nany wild POKéMON.\nAlso warps to the\nlast POKé CENTER."); +const u8 gMoveDescription_NightShade[] = _("An attack with a\nmirage that inflicts\ndamage matching\nthe user's level."); +const u8 gMoveDescription_Mimic[] = _("The user copies the\nmove last used by\nthe foe for the\nrest of the battle."); +const u8 gMoveDescription_Screech[] = _("An ear-splitting\nscreech is emitted\nto sharply reduce\nthe foe's DEFENSE."); +const u8 gMoveDescription_DoubleTeam[] = _("The user creates\nillusory copies of\nitself to raise its\nevasiveness."); +const u8 gMoveDescription_Recover[] = _("A self-healing move\nthat restores HP by\nup to half of the\nuser's maximum HP."); +const u8 gMoveDescription_Harden[] = _("The user stiffens\nall the muscles in\nits body to raise\nits DEFENSE stat."); +const u8 gMoveDescription_Minimize[] = _("The user compresses\nall the cells in its\nbody to raise its\nevasiveness."); +const u8 gMoveDescription_Smokescreen[] = _("An obscuring cloud\nof smoke or ink\nreduces the foe's\naccuracy."); +const u8 gMoveDescription_ConfuseRay[] = _("The foe is exposed\nto a sinister ray\nthat triggers\nconfusion."); +const u8 gMoveDescription_Withdraw[] = _("The user withdraws\nits body in its hard\nshell, raising its\nDEFENSE stat."); +const u8 gMoveDescription_DefenseCurl[] = _("The user curls up\nto conceal weak\nspots and raise its\nDEFENSE stat."); +const u8 gMoveDescription_Barrier[] = _("The user creates a\nsturdy wall that\nsharply raises its\nDEFENSE stat."); +const u8 gMoveDescription_LightScreen[] = _("A wall of light\ncuts damage from\nSP. ATK attacks\nfor five turns."); +const u8 gMoveDescription_Haze[] = _("Eliminates all stat\nchanges among all\nPOKéMON engaged in\nbattle."); +const u8 gMoveDescription_Reflect[] = _("A wall of light\ncuts damage from\nphysical attacks\nfor five turns."); +const u8 gMoveDescription_FocusEnergy[] = _("The user takes a\ndeep breath and\nfocuses to raise its\ncritical-hit ratio."); +const u8 gMoveDescription_Bide[] = _("The user endures\nattacks for two\nturns, then strikes\nback double."); +const u8 gMoveDescription_Metronome[] = _("Waggles a finger\nand stimulates the\nbrain into using any\nmove at random."); +const u8 gMoveDescription_MirrorMove[] = _("The user counters\nthe move last used\nby the foe with the\nsame move."); +const u8 gMoveDescription_SelfDestruct[] = _("The user blows up\nto inflict severe\ndamage, even\nmaking itself faint."); +const u8 gMoveDescription_EggBomb[] = _("A large egg is\nhurled with great\nforce at the foe to\ninflict damage."); +const u8 gMoveDescription_Lick[] = _("The foe is licked\nand hit with a long\ntongue. It may\nalso paralyze."); +const u8 gMoveDescription_Smog[] = _("The foe is attacked\nwith exhaust gases.\nIt may also poison\nthe foe."); +const u8 gMoveDescription_Sludge[] = _("Toxic sludge is\nhurled at the foe.\nIt may poison the\ntarget."); +const u8 gMoveDescription_BoneClub[] = _("The foe is clubbed\nwith a bone held in\nhand. It may make\nthe foe flinch."); +const u8 gMoveDescription_FireBlast[] = _("The foe is hit with\nan intense flame.\nIt may leave the\ntarget with a burn."); +const u8 gMoveDescription_Waterfall[] = _("A powerful charge\nattack. It can also\nbe used to climb\na waterfall."); +const u8 gMoveDescription_Clamp[] = _("The foe is clamped\nand squeezed by\nthe user's shell for\ntwo to five turns."); +const u8 gMoveDescription_Swift[] = _("Star-shaped rays\nthat never miss are\nfired at all foes in\nbattle."); +const u8 gMoveDescription_SkullBash[] = _("The user raises its\nDEFENSE in the 1st\nturn, then attacks\nin the 2nd turn."); +const u8 gMoveDescription_SpikeCannon[] = _("Sharp spikes are\nfired at the foe to\nstrike two to five\ntimes."); +const u8 gMoveDescription_Constrict[] = _("The foe is attacked\nwith long tentacles\nor vines. It may\nlower SPEED."); +const u8 gMoveDescription_Amnesia[] = _("Forgets about\nsomething and\nsharply raises\nSP. DEF."); +const u8 gMoveDescription_Kinesis[] = _("The user distracts\nthe foe by bending\na spoon. It may\nlower accuracy."); +const u8 gMoveDescription_SoftBoiled[] = _("Heals the user by\nup to half its full\nHP. It can be used\nto heal an ally."); +const u8 gMoveDescription_HiJumpKick[] = _("A strong jumping\nknee kick. If it\nmisses, the user is\nhurt."); +const u8 gMoveDescription_Glare[] = _("The user intimidates\nthe foe with the\ndesign on its belly\nto cause paralysis."); +const u8 gMoveDescription_DreamEater[] = _("Absorbs half the\ndamage it inflicted\non a sleeping foe\nto restore HP."); +const u8 gMoveDescription_PoisonGas[] = _("The foe is sprayed\nwith a cloud of\ntoxic gas that may\npoison the foe."); +const u8 gMoveDescription_Barrage[] = _("Round objects are\nhurled at the foe\nto strike two to\nfive times."); +const u8 gMoveDescription_LeechLife[] = _("An attack that\nabsorbs half the\ndamage it inflicted\nto restore HP."); +const u8 gMoveDescription_LovelyKiss[] = _("The user forces a\nkiss on the foe\nwith a scary face\nthat induces sleep."); +const u8 gMoveDescription_SkyAttack[] = _("A 2nd-turn attack\nmove with a high\ncritical-hit ratio.\nThe foe may flinch."); +const u8 gMoveDescription_Transform[] = _("The user transforms\ninto a copy of the\nfoe with even the\nsame move set."); +const u8 gMoveDescription_Bubble[] = _("A spray of bubbles\nhits the foe.\nIt may lower the\nfoe's SPEED stat."); +const u8 gMoveDescription_DizzyPunch[] = _("The foe is hit with\na rhythmic punch\nthat may leave it\nconfused."); +const u8 gMoveDescription_Spore[] = _("The user scatters\nbursts of fine\nspores that induce\nsleep."); +const u8 gMoveDescription_Flash[] = _("A blast of light\nthat cuts the foe's\naccuracy. It also\nilluminates caves."); +const u8 gMoveDescription_Psywave[] = _("The foe is attacked\nwith an odd, hot\nenergy wave that\nvaries in intensity."); +const u8 gMoveDescription_Splash[] = _("The user just flops\nand splashes around\nwithout having any\neffect."); +const u8 gMoveDescription_AcidArmor[] = _("The user alters its\ncells to liquefy\nitself and sharply\nraise DEFENSE."); +const u8 gMoveDescription_Crabhammer[] = _("A large pincer is\nused to hammer the\nfoe. It has a high\ncritical-hit ratio."); +const u8 gMoveDescription_Explosion[] = _("The user explodes\nto inflict terrible\ndamage even while\nfainting itself."); +const u8 gMoveDescription_FurySwipes[] = _("The foe is raked\nwith sharp claws or\nscythes two to five\ntimes."); +const u8 gMoveDescription_Bonemerang[] = _("The user throws a\nbone that hits the\nfoe once, then once\nagain on return."); +const u8 gMoveDescription_Rest[] = _("The user sleeps for\ntwo turns to fully\nrestore HP and heal\nany status problem."); +const u8 gMoveDescription_RockSlide[] = _("Large boulders are\nhurled at the foe.\nIt may make the\nfoe flinch."); +const u8 gMoveDescription_HyperFang[] = _("The foe is attacked\nwith sharp fangs.\nIt may make the\nfoe flinch."); +const u8 gMoveDescription_Sharpen[] = _("The user reduces\nits polygon count\nto sharpen edges\nand raise ATTACK."); +const u8 gMoveDescription_Conversion[] = _("The user changes\nits type to match\nthe type of one of\nits moves."); +const u8 gMoveDescription_TriAttack[] = _("A simultaneous\n3-beam attack that\nmay paralyze, burn,\nor freeze the foe."); +const u8 gMoveDescription_SuperFang[] = _("The user attacks\nwith sharp fangs\nand halves the\nfoe's HP."); +const u8 gMoveDescription_Slash[] = _("The foe is slashed\nwith claws, etc.\nIt has a high\ncritical-hit ratio."); +const u8 gMoveDescription_Substitute[] = _("The user creates a\ndecoy using one-\nquarter of its full\nHP."); +const u8 gMoveDescription_Struggle[] = _("An attack that is\nused only if there\nis no PP. It also\nhurts the user."); +const u8 gMoveDescription_Sketch[] = _("This move copies\nthe move last used\nby the foe, then\ndisappears."); +const u8 gMoveDescription_TripleKick[] = _("A 3-kick attack\nthat becomes more\npowerful with each\nsuccessive hit."); +const u8 gMoveDescription_Thief[] = _("An attack that may\ntake the foe's held\nitem if the user\nisn't holding one."); +const u8 gMoveDescription_SpiderWeb[] = _("Ensnares the foe \nwith sticky string\nso it doesn't flee\nor switch out."); +const u8 gMoveDescription_MindReader[] = _("The user predicts\nthe foe's action to\nensure its next\nattack hits."); +const u8 gMoveDescription_Nightmare[] = _("A sleeping foe is\nshown a nightmare\nthat inflicts some\ndamage every turn."); +const u8 gMoveDescription_FlameWheel[] = _("The user makes a\nfiery charge at the\nfoe. It may cause\na burn."); +const u8 gMoveDescription_Snore[] = _("An attack that can\nbe used only while\nasleep. It may\ncause flinching."); +const u8 gMoveDescription_Curse[] = _("A move that works\ndifferently for the\nGHOST-type and all\nthe other types."); +const u8 gMoveDescription_Flail[] = _("A desperate attack\nthat becomes more\npowerful the less\nHP the user has."); +const u8 gMoveDescription_Conversion2[] = _("The user changes\ntype to make itself\nresistant to the\nlast attack it took."); +const u8 gMoveDescription_Aeroblast[] = _("A vortex of air is\nshot at the foe.\nIt has a high\ncritical-hit ratio."); +const u8 gMoveDescription_CottonSpore[] = _("Cotton-like spores\ncling to the foe,\nsharply reducing\nits SPEED stat."); +const u8 gMoveDescription_Reversal[] = _("An all-out attack\nthat becomes more\npowerful the less\nHP the user has."); +const u8 gMoveDescription_Spite[] = _("A move that cuts\n2 to 5 PP from the\nmove last used by\nthe foe."); +const u8 gMoveDescription_PowderSnow[] = _("Blasts the foe with\na snowy gust.\nIt may cause\nfreezing."); +const u8 gMoveDescription_Protect[] = _("Enables the user to\nevade all attacks.\nIt may fail if used\nin succession."); +const u8 gMoveDescription_MachPunch[] = _("A punch thrown at\nblinding speed.\nIt is certain to\nstrike first."); +const u8 gMoveDescription_ScaryFace[] = _("Frightens the foe\nwith a scary face\nto sharply reduce\nits SPEED."); +const u8 gMoveDescription_FaintAttack[] = _("The user draws up\nclose to the foe\ndisarmingly, then\nhits without fail."); +const u8 gMoveDescription_SweetKiss[] = _("The user kisses\nthe foe with sweet\ncuteness that\ncauses confusion."); +const u8 gMoveDescription_BellyDrum[] = _("The user maximizes\nits ATTACK stat at\nthe cost of half\nits full HP."); +const u8 gMoveDescription_SludgeBomb[] = _("Filthy sludge is\nhurled at the foe.\nIt may poison the\ntarget."); +const u8 gMoveDescription_MudSlap[] = _("Mud is hurled in\nthe foe's face to\ninflict damage and\nlower its accuracy."); +const u8 gMoveDescription_Octazooka[] = _("Ink is blasted in\nthe foe's face or\neyes to damage and\nlower accuracy."); +const u8 gMoveDescription_Spikes[] = _("A trap of spikes is\nlaid around the\nfoe's party to hurt\nfoes switching in."); +const u8 gMoveDescription_ZapCannon[] = _("An electric blast is\nfired like a cannon\nto inflict damage\nand paralyze."); +const u8 gMoveDescription_Foresight[] = _("Completely negates\nthe foe's efforts to\nheighten its ability\nto evade."); +const u8 gMoveDescription_DestinyBond[] = _("If the user faints,\nthe foe delivering\nthe final hit also\nfaints."); +const u8 gMoveDescription_PerishSong[] = _("Any battler that\nhears this faints\nin three turns\nunless it switches."); +const u8 gMoveDescription_IcyWind[] = _("A chilling wind is\nused to attack.\nIt also lowers the\nSPEED stat."); +const u8 gMoveDescription_Detect[] = _("Enables the user to\nevade all attacks.\nIt may fail if used\nin succession."); +const u8 gMoveDescription_BoneRush[] = _("The user strikes\nthe foe with a bone\nin hand two to five\ntimes."); +const u8 gMoveDescription_LockOn[] = _("The user locks on\nto the foe, making\nthe next move sure\nto hit."); +const u8 gMoveDescription_Outrage[] = _("The user thrashes\nabout for two to\nthree turns, then\nbecomes confused."); +const u8 gMoveDescription_Sandstorm[] = _("A 5-turn sandstorm\nthat damages all\ntypes except ROCK,\nGROUND, and STEEL."); +const u8 gMoveDescription_GigaDrain[] = _("A harsh attack that\nabsorbs half the\ndamage it inflicted\nto restore HP."); +const u8 gMoveDescription_Endure[] = _("The user endures\nany hit with 1 HP\nleft. It may fail if\nused in succession."); +const u8 gMoveDescription_Charm[] = _("The foe is charmed\nby the user's cute\nappeals, sharply\ncutting its ATTACK."); +const u8 gMoveDescription_Rollout[] = _("A 5-turn rolling\nattack that becomes\nstronger each time\nit hits."); +const u8 gMoveDescription_FalseSwipe[] = _("A restrained attack\nthat always leaves\nthe foe with at\nleast 1 HP."); +const u8 gMoveDescription_Swagger[] = _("A move that makes\nthe foe confused,\nbut also sharply\nraises its ATTACK."); +const u8 gMoveDescription_MilkDrink[] = _("Heals the user by\nup to half its full\nHP. It can be used\nto heal an ally."); +const u8 gMoveDescription_Spark[] = _("An electrically\ncharged tackle that\nmay also paralyze\nthe foe."); +const u8 gMoveDescription_FuryCutter[] = _("An attack that\ngrows stronger on\neach successive\nhit."); +const u8 gMoveDescription_SteelWing[] = _("The foe is hit with\nwings of steel.\nIt may also raise\nthe user's DEFENSE."); +const u8 gMoveDescription_MeanLook[] = _("The foe is fixed\nwith a mean look\nthat prevents it\nfrom escaping."); +const u8 gMoveDescription_Attract[] = _("If it is the other\ngender, the foe is\nmade infatuated and\nunlikely to attack."); +const u8 gMoveDescription_SleepTalk[] = _("While asleep, the\nuser randomly uses\none of the moves it\nknows."); +const u8 gMoveDescription_HealBell[] = _("A soothing bell\nchimes to heal the\nstatus problems of\nall allies."); +const u8 gMoveDescription_Return[] = _("This attack move\ngrows more powerful\nthe more the user\nlikes its TRAINER."); +const u8 gMoveDescription_Present[] = _("The foe is given a\nbooby-trapped gift.\nIt restores HP\nsometimes, however."); +const u8 gMoveDescription_Frustration[] = _("This attack move\ngrows more powerful\nthe less the user\nlikes its TRAINER."); +const u8 gMoveDescription_Safeguard[] = _("It protects the\nuser's party from\nall status problems\nfor five turns."); +const u8 gMoveDescription_PainSplit[] = _("The user adds its\nHP to the foe's HP,\nthen equally shares\nthe total HP."); +const u8 gMoveDescription_SacredFire[] = _("A mystical and\npowerful fire\nattack that may\ninflict a burn."); +const u8 gMoveDescription_Magnitude[] = _("A ground-shaking\nattack against all\nstanding POKéMON.\nIts power varies."); +const u8 gMoveDescription_DynamicPunch[] = _("The foe is punched\nwith the user's full\npower. It confuses\nthe foe if it hits."); +const u8 gMoveDescription_Megahorn[] = _("A brutal ramming\nattack delivered\nwith a tough and\nimpressive horn."); +const u8 gMoveDescription_DragonBreath[] = _("The foe is hit with\nan incredible blast\nof breath that may\nalso paralyze."); +const u8 gMoveDescription_BatonPass[] = _("The user switches\nout, passing along\nany stat changes\nto the new battler."); +const u8 gMoveDescription_Encore[] = _("Makes the foe use\nthe move it last\nused repeatedly for\ntwo to six turns."); +const u8 gMoveDescription_Pursuit[] = _("An attack move that\nworks especially\nwell on a foe that\nis switching out."); +const u8 gMoveDescription_RapidSpin[] = _("An attack that\nfrees the user from\nBIND, WRAP, LEECH\nSEED, and SPIKES."); +const u8 gMoveDescription_SweetScent[] = _("Allures the foe to\nreduce evasiveness.\nIt also attracts\nwild POKéMON."); +const u8 gMoveDescription_IronTail[] = _("An attack with a\nsteel-hard tail.\nIt may lower the\nfoe's DEFENSE stat."); +const u8 gMoveDescription_MetalClaw[] = _("The foe is attacked\nwith steel claws.\nIt may also raise\nthe user's ATTACK."); +const u8 gMoveDescription_VitalThrow[] = _("Makes the user\nattack after the\nfoe. In return,\nit will not miss."); +const u8 gMoveDescription_MorningSun[] = _("Restores the user's\nHP. The amount of\nHP regained varies\nwith the weather."); +const u8 gMoveDescription_Synthesis[] = _("Restores the user's\nHP. The amount of\nHP regained varies\nwith the weather."); +const u8 gMoveDescription_Moonlight[] = _("Restores the user's\nHP. The amount of\nHP regained varies\nwith the weather."); +const u8 gMoveDescription_HiddenPower[] = _("An attack that\nvaries in type and\nintensity depending\non the user."); +const u8 gMoveDescription_CrossChop[] = _("The foe is hit with\ndouble chops.\nIt has a high\ncritical-hit ratio."); +const u8 gMoveDescription_Twister[] = _("A vicious twister\nattacks the foe.\nIt may make the\nfoe flinch."); +const u8 gMoveDescription_RainDance[] = _("A heavy rain falls\nfor five turns,\npowering up WATER-\ntype moves."); +const u8 gMoveDescription_SunnyDay[] = _("The sun blazes for\nfive turns, powering\nup FIRE-type\nmoves."); +const u8 gMoveDescription_Crunch[] = _("The foe is crunched\nwith sharp fangs.\nIt may lower the\nfoe's SP. DEF."); +const u8 gMoveDescription_MirrorCoat[] = _("A retaliation move\nthat pays back the\nfoe's special attack\ndouble."); +const u8 gMoveDescription_PsychUp[] = _("The user hypnotizes\nitself into copying\nany stat change\nmade by the foe."); +const u8 gMoveDescription_ExtremeSpeed[] = _("A blindingly speedy\ncharge attack that\nalways goes before\nany other."); +const u8 gMoveDescription_AncientPower[] = _("An ancient power is\nused to attack. It\nmay also raise all\nthe user's stats."); +const u8 gMoveDescription_ShadowBall[] = _("A shadowy blob is\nhurled at the foe.\nMay also lower the\nfoe's SP. DEF."); +const u8 gMoveDescription_FutureSight[] = _("Two turns after\nthis move is used,\nthe foe is attacked\npsychically."); +const u8 gMoveDescription_RockSmash[] = _("An attack that may\nalso cut DEFENSE.\nIt can also smash\ncracked boulders."); +const u8 gMoveDescription_Whirlpool[] = _("The foe is trapped\nin a fast, vicious\nwhirlpool for two\nto five turns."); +const u8 gMoveDescription_BeatUp[] = _("All party POKéMON\njoin in the attack.\nThe more allies,\nthe more damage."); +const u8 gMoveDescription_FakeOut[] = _("An attack that hits\nfirst and causes\nflinching. Usable\nonly on 1st turn."); +const u8 gMoveDescription_Uproar[] = _("The user attacks in\nan uproar that\nprevents sleep for\ntwo to five turns."); +const u8 gMoveDescription_Stockpile[] = _("The user charges\nup power for use\nlater. It can be\nused three times."); +const u8 gMoveDescription_SpitUp[] = _("The power built\nusing STOCKPILE is\nreleased at once\nfor attack."); +const u8 gMoveDescription_Swallow[] = _("The energy it built\nusing STOCKPILE is\nabsorbed to restore\nHP."); +const u8 gMoveDescription_HeatWave[] = _("The user exhales a\nheated breath to\nattack. It may also\ninflict a burn."); +const u8 gMoveDescription_Hail[] = _("A hailstorm lasting\nfive turns damages\nall POKéMON except\nthe ICE-type."); +const u8 gMoveDescription_Torment[] = _("It enrages the foe,\nmaking it incapable\nof using the same\nmove successively."); +const u8 gMoveDescription_Flatter[] = _("Flattery is used to\nconfuse the foe,\nbut its SP. ATK\nalso rises."); +const u8 gMoveDescription_WillOWisp[] = _("A sinister, bluish\nwhite flame is shot\nat the foe to\ninflict a burn."); +const u8 gMoveDescription_Memento[] = _("The user faints,\nbut sharply lowers\nthe foe's ATTACK\nand SP. ATK."); +const u8 gMoveDescription_Facade[] = _("An attack that is\nboosted if user is\nburned, poisoned,\nor paralyzed."); +const u8 gMoveDescription_FocusPunch[] = _("An attack that is\nexecuted last.\nThe user flinches\nif hit beforehand."); +const u8 gMoveDescription_SmellingSalt[] = _("Doubly effective on\na paralyzed foe,\nbut it also cures\nthe foe's paralysis."); +const u8 gMoveDescription_FollowMe[] = _("The user draws\nattention to itself,\nmaking foes attack\nonly the user."); +const u8 gMoveDescription_NaturePower[] = _("An attack that\nchanges type\ndepending on the\nuser's location."); +const u8 gMoveDescription_Charge[] = _("The user charges\npower to boost the\nELECTRIC move it\nuses next."); +const u8 gMoveDescription_Taunt[] = _("The foe is taunted\ninto a rage that\nallows it to use\nonly attack moves."); +const u8 gMoveDescription_HelpingHand[] = _("A move that boosts\nthe power of the\nally's attack in a\nbattle."); +const u8 gMoveDescription_Trick[] = _("A move that tricks\nthe foe into\ntrading held items\nwith the user."); +const u8 gMoveDescription_RolePlay[] = _("The user mimics the\nfoe completely and\ncopies the foe's\nability."); +const u8 gMoveDescription_Wish[] = _("A self-healing move\nthat restores half\nthe full HP on the\nnext turn."); +const u8 gMoveDescription_Assist[] = _("The user randomly\npicks and uses a\nmove of an allied\nPOKéMON."); +const u8 gMoveDescription_Ingrain[] = _("The user lays roots\nthat restore HP on\nevery turn.\nIt can't switch out."); +const u8 gMoveDescription_Superpower[] = _("A powerful attack,\nbut it also lowers\nthe user's ATTACK\nand DEFENSE stats."); +const u8 gMoveDescription_MagicCoat[] = _("Reflects back the\nfoe's LEECH SEED\nand any status-\ndamaging move."); +const u8 gMoveDescription_Recycle[] = _("A move that\nrecycles a used\nitem for use once\nmore."); +const u8 gMoveDescription_Revenge[] = _("An attack move that\ngains in intensity if\nthe target has hurt\nthe user."); +const u8 gMoveDescription_BrickBreak[] = _("An attack that also\nbreaks any barrier\nlike LIGHT SCREEN\nand REFLECT."); +const u8 gMoveDescription_Yawn[] = _("A huge yawn lulls\nthe foe into falling\nasleep on the next\nturn."); +const u8 gMoveDescription_KnockOff[] = _("Knocks down the\nfoe's held item to\nprevent its use\nduring the battle."); +const u8 gMoveDescription_Endeavor[] = _("Gains power the\nfewer HP the user\nhas compared with\nthe foe."); +const u8 gMoveDescription_Eruption[] = _("The higher the\nuser's HP, the more\npowerful this\nattack becomes."); +const u8 gMoveDescription_SkillSwap[] = _("The user employs\nits psychic power\nto swap abilities\nwith the foe."); +const u8 gMoveDescription_Imprison[] = _("Prevents foes from\nusing any move\nthat is also known\nby the user."); +const u8 gMoveDescription_Refresh[] = _("A self-healing move\nthat cures the user\nof a poisoning,\nburn, or paralysis."); +const u8 gMoveDescription_Grudge[] = _("If the user faints,\nthis move deletes\nthe PP of the move\nthat finished it."); +const u8 gMoveDescription_Snatch[] = _("Steals the effects\nof the foe's\nhealing or status-\nchanging move."); +const u8 gMoveDescription_SecretPower[] = _("An attack that may\nhave an additional\neffect that varies\nwith the terrain."); +const u8 gMoveDescription_Dive[] = _("The user dives\nunderwater on the\nfirst turn and\nstrikes next turn."); +const u8 gMoveDescription_ArmThrust[] = _("A quick flurry of\nstraight-arm\npunches that hit\ntwo to five times."); +const u8 gMoveDescription_Camouflage[] = _("Alters the user's\ntype depending on\nthe location's\nterrain."); +const u8 gMoveDescription_TailGlow[] = _("The user flashes a\nlight that sharply\nraises its SP. ATK\nstat."); +const u8 gMoveDescription_LusterPurge[] = _("A burst of light\ninjures the foe. It\nmay also lower the\nfoe's SP. DEF."); +const u8 gMoveDescription_MistBall[] = _("A flurry of down\nhits the foe. It\nmay also lower the\nfoe's SP. ATK."); +const u8 gMoveDescription_FeatherDance[] = _("The foe is covered\nwith a mass of down\nthat sharply cuts\nthe ATTACK stat."); +const u8 gMoveDescription_TeeterDance[] = _("A wobbly dance\nthat confuses all\nthe POKéMON in\nbattle."); +const u8 gMoveDescription_BlazeKick[] = _("A fiery kick with a\nhigh critical-hit\nratio. It may also\nburn the foe."); +const u8 gMoveDescription_MudSport[] = _("Weakens ELECTRIC-\ntype attacks while\nthe user is in the\nbattle."); +const u8 gMoveDescription_IceBall[] = _("A 5-turn rolling\nattack that becomes\nstronger each time\nit rolls."); +const u8 gMoveDescription_NeedleArm[] = _("An attack using\nthorny arms.\nIt may make the\nfoe flinch."); +const u8 gMoveDescription_SlackOff[] = _("The user slacks off\nand restores its HP\nby half its full\nHP."); +const u8 gMoveDescription_HyperVoice[] = _("The user lets loose\na horribly loud\nshout with the\npower to damage."); +const u8 gMoveDescription_PoisonFang[] = _("The foe is bitten\nwith toxic fangs.\nIt may also badly\npoison the foe."); +const u8 gMoveDescription_CrushClaw[] = _("The foe is attacked\nwith sharp claws.\nIt may also lower\nthe foe's DEFENSE."); +const u8 gMoveDescription_BlastBurn[] = _("The foe is hit with\na huge explosion.\nThe user can't move\non the next turn."); +const u8 gMoveDescription_HydroCannon[] = _("The foe is hit with\na watery cannon.\nThe user can't move\non the next turn."); +const u8 gMoveDescription_MeteorMash[] = _("The foe is hit with\na hard, fast punch.\nIt may also raise\nthe user's ATTACK."); +const u8 gMoveDescription_Astonish[] = _("An attack using a\nstartling shout.\nIt also may make\nthe foe flinch."); +const u8 gMoveDescription_WeatherBall[] = _("An attack that\nvaries in power and\ntype depending on\nthe weather."); +const u8 gMoveDescription_Aromatherapy[] = _("A soothing scent is\nreleased to heal\nall status problems\nin the user's party."); +const u8 gMoveDescription_FakeTears[] = _("The user feigns\ncrying to sharply\nlower the foe's\nSP. DEF stat."); +const u8 gMoveDescription_AirCutter[] = _("The foe is hit with\nrazor-like wind.\nIt has a high\ncritical-hit ratio."); +const u8 gMoveDescription_Overheat[] = _("An intense attack\nthat also sharply\nreduces the user's\nSP. ATK stat."); +const u8 gMoveDescription_OdorSleuth[] = _("Completely negates\nthe foe's efforts to\nheighten its ability\nto evade."); +const u8 gMoveDescription_RockTomb[] = _("Boulders are hurled\nat the foe. It also\nlowers the foe's\nSPEED if it hits."); +const u8 gMoveDescription_SilverWind[] = _("The foe is attacked\nwith a silver dust.\nIt may raise all\nthe user's stats."); +const u8 gMoveDescription_MetalSound[] = _("A horrible metallic\nscreech is used to\nsharply lower the\nfoe's SP. DEF."); +const u8 gMoveDescription_GrassWhistle[] = _("A pleasant melody\nis played to lull\nthe foe into a deep\nsleep."); +const u8 gMoveDescription_Tickle[] = _("The foe is made to\nlaugh, reducing its\nATTACK and DEFENSE\nstats."); +const u8 gMoveDescription_CosmicPower[] = _("The user absorbs a\nmystic power to\nraise its DEFENSE\nand SP. DEF."); +const u8 gMoveDescription_WaterSpout[] = _("The higher the\nuser's HP, the more\npowerful this\nattack becomes."); +const u8 gMoveDescription_SignalBeam[] = _("The foe is hit with\na flashing beam\nthat may also\ncause confusion."); +const u8 gMoveDescription_ShadowPunch[] = _("The user throws a\npunch from the\nshadows. It cannot\nbe evaded."); +const u8 gMoveDescription_Extrasensory[] = _("The user attacks\nwith an odd power\nthat may make the\nfoe flinch."); +const u8 gMoveDescription_SkyUppercut[] = _("The user attacks\nwith an uppercut\nthrown skywards\nwith force."); +const u8 gMoveDescription_SandTomb[] = _("The foe is trapped\ninside a painful\nsandstorm for two\nto five turns."); +const u8 gMoveDescription_SheerCold[] = _("The foe is attacked\nwith ultimate cold\nthat causes fainting\nif it hits."); +const u8 gMoveDescription_MuddyWater[] = _("The user attacks\nwith muddy water.\nIt may also lower\nthe foe's accuracy."); +const u8 gMoveDescription_BulletSeed[] = _("The user shoots\nseeds at the foe.\nTwo to five seeds\nare shot at once."); +const u8 gMoveDescription_AerialAce[] = _("An extremely fast\nattack against one\ntarget. It can't be\nevaded."); +const u8 gMoveDescription_IcicleSpear[] = _("Sharp icicles are\nfired at the foe.\nIt strikes two to\nfive times."); +const u8 gMoveDescription_IronDefense[] = _("The user hardens\nits body's surface\nto sharply raise its\nDEFENSE stat."); +const u8 gMoveDescription_Block[] = _("The user blocks the\nfoe's way with arms\nspread wide to\nprevent escape."); +const u8 gMoveDescription_Howl[] = _("The user howls to\nraise its spirit and\nboost its ATTACK\nstat."); +const u8 gMoveDescription_DragonClaw[] = _("Sharp, huge claws\nhook and slash the\nfoe quickly and\nwith great power."); +const u8 gMoveDescription_FrenzyPlant[] = _("The foe is hit with\nan enormous branch.\nThe user can't move\non the next turn."); +const u8 gMoveDescription_BulkUp[] = _("The user bulks up\nits body to boost\nboth its ATTACK and\nDEFENSE stats."); +const u8 gMoveDescription_Bounce[] = _("The user bounces\non the foe on the\n2nd turn. It may\nparalyze the foe."); +const u8 gMoveDescription_MudShot[] = _("The user attacks by\nhurling mud.\nIt also reduces the\nfoe's SPEED."); +const u8 gMoveDescription_PoisonTail[] = _("An attack with a\nhigh critical-hit\nratio. It may also\npoison the foe."); +const u8 gMoveDescription_Covet[] = _("A cutely executed\nattack that also\nsteals the foe's\nhold item."); +const u8 gMoveDescription_VoltTackle[] = _("The user throws an\nelectrified tackle.\nIt hurts the user\na little."); +const u8 gMoveDescription_MagicalLeaf[] = _("The foe is attacked\nwith a strange leaf\nthat cannot be\nevaded."); +const u8 gMoveDescription_WaterSport[] = _("Weakens FIRE-type\nattacks while the\nuser is in the\nbattle."); +const u8 gMoveDescription_CalmMind[] = _("The user focuses\nits mind to raise\nthe SP. ATK and\nSP. DEF stats."); +const u8 gMoveDescription_LeafBlade[] = _("The foe is slashed\nwith a sharp leaf.\nIt has a high\ncritical-hit ratio."); +const u8 gMoveDescription_DragonDance[] = _("A mystic, powerful\ndance that boosts\nthe user's ATTACK\nand SPEED stats."); +const u8 gMoveDescription_RockBlast[] = _("The user hurls two\nto five hard rocks\nat the foe to\nattack."); +const u8 gMoveDescription_ShockWave[] = _("A rapid jolt of\nelectricity strikes\nthe foe. It can't\nbe evaded."); +const u8 gMoveDescription_WaterPulse[] = _("An attack with a\npulsing blast of\nwater. It may also\nconfuse the foe."); +const u8 gMoveDescription_DoomDesire[] = _("A move that attacks\nthe foe with a\nblast of light two\nturns after use."); +const u8 gMoveDescription_PsychoBoost[] = _("An intense attack\nthat also sharply\nreduces the user's\nSP. ATK stat."); + +const u8 *const gMoveDescriptionPointers[MOVES_COUNT - 1] = { + [MOVE_POUND - 1] = gMoveDescription_Pound, + [MOVE_KARATE_CHOP - 1] = gMoveDescription_KarateChop, + [MOVE_DOUBLE_SLAP - 1] = gMoveDescription_DoubleSlap, + [MOVE_COMET_PUNCH - 1] = gMoveDescription_CometPunch, + [MOVE_MEGA_PUNCH - 1] = gMoveDescription_MegaPunch, + [MOVE_PAY_DAY - 1] = gMoveDescription_PayDay, + [MOVE_FIRE_PUNCH - 1] = gMoveDescription_FirePunch, + [MOVE_ICE_PUNCH - 1] = gMoveDescription_IcePunch, + [MOVE_THUNDER_PUNCH - 1] = gMoveDescription_ThunderPunch, + [MOVE_SCRATCH - 1] = gMoveDescription_Scratch, + [MOVE_VICE_GRIP - 1] = gMoveDescription_ViceGrip, + [MOVE_GUILLOTINE - 1] = gMoveDescription_Guillotine, + [MOVE_RAZOR_WIND - 1] = gMoveDescription_RazorWind, + [MOVE_SWORDS_DANCE - 1] = gMoveDescription_SwordsDance, + [MOVE_CUT - 1] = gMoveDescription_Cut, + [MOVE_GUST - 1] = gMoveDescription_Gust, + [MOVE_WING_ATTACK - 1] = gMoveDescription_WingAttack, + [MOVE_WHIRLWIND - 1] = gMoveDescription_Whirlwind, + [MOVE_FLY - 1] = gMoveDescription_Fly, + [MOVE_BIND - 1] = gMoveDescription_Bind, + [MOVE_SLAM - 1] = gMoveDescription_Slam, + [MOVE_VINE_WHIP - 1] = gMoveDescription_VineWhip, + [MOVE_STOMP - 1] = gMoveDescription_Stomp, + [MOVE_DOUBLE_KICK - 1] = gMoveDescription_DoubleKick, + [MOVE_MEGA_KICK - 1] = gMoveDescription_MegaKick, + [MOVE_JUMP_KICK - 1] = gMoveDescription_JumpKick, + [MOVE_ROLLING_KICK - 1] = gMoveDescription_RollingKick, + [MOVE_SAND_ATTACK - 1] = gMoveDescription_SandAttack, + [MOVE_HEADBUTT - 1] = gMoveDescription_Headbutt, + [MOVE_HORN_ATTACK - 1] = gMoveDescription_HornAttack, + [MOVE_FURY_ATTACK - 1] = gMoveDescription_FuryAttack, + [MOVE_HORN_DRILL - 1] = gMoveDescription_HornDrill, + [MOVE_TACKLE - 1] = gMoveDescription_Tackle, + [MOVE_BODY_SLAM - 1] = gMoveDescription_BodySlam, + [MOVE_WRAP - 1] = gMoveDescription_Wrap, + [MOVE_TAKE_DOWN - 1] = gMoveDescription_TakeDown, + [MOVE_THRASH - 1] = gMoveDescription_Thrash, + [MOVE_DOUBLE_EDGE - 1] = gMoveDescription_DoubleEdge, + [MOVE_TAIL_WHIP - 1] = gMoveDescription_TailWhip, + [MOVE_POISON_STING - 1] = gMoveDescription_PoisonSting, + [MOVE_TWINEEDLE - 1] = gMoveDescription_Twineedle, + [MOVE_PIN_MISSILE - 1] = gMoveDescription_PinMissile, + [MOVE_LEER - 1] = gMoveDescription_Leer, + [MOVE_BITE - 1] = gMoveDescription_Bite, + [MOVE_GROWL - 1] = gMoveDescription_Growl, + [MOVE_ROAR - 1] = gMoveDescription_Roar, + [MOVE_SING - 1] = gMoveDescription_Sing, + [MOVE_SUPERSONIC - 1] = gMoveDescription_Supersonic, + [MOVE_SONIC_BOOM - 1] = gMoveDescription_SonicBoom, + [MOVE_DISABLE - 1] = gMoveDescription_Disable, + [MOVE_ACID - 1] = gMoveDescription_Acid, + [MOVE_EMBER - 1] = gMoveDescription_Ember, + [MOVE_FLAMETHROWER - 1] = gMoveDescription_Flamethrower, + [MOVE_MIST - 1] = gMoveDescription_Mist, + [MOVE_WATER_GUN - 1] = gMoveDescription_WaterGun, + [MOVE_HYDRO_PUMP - 1] = gMoveDescription_HydroPump, + [MOVE_SURF - 1] = gMoveDescription_Surf, + [MOVE_ICE_BEAM - 1] = gMoveDescription_IceBeam, + [MOVE_BLIZZARD - 1] = gMoveDescription_Blizzard, + [MOVE_PSYBEAM - 1] = gMoveDescription_Psybeam, + [MOVE_BUBBLE_BEAM - 1] = gMoveDescription_BubbleBeam, + [MOVE_AURORA_BEAM - 1] = gMoveDescription_AuroraBeam, + [MOVE_HYPER_BEAM - 1] = gMoveDescription_HyperBeam, + [MOVE_PECK - 1] = gMoveDescription_Peck, + [MOVE_DRILL_PECK - 1] = gMoveDescription_DrillPeck, + [MOVE_SUBMISSION - 1] = gMoveDescription_Submission, + [MOVE_LOW_KICK - 1] = gMoveDescription_LowKick, + [MOVE_COUNTER - 1] = gMoveDescription_Counter, + [MOVE_SEISMIC_TOSS - 1] = gMoveDescription_SeismicToss, + [MOVE_STRENGTH - 1] = gMoveDescription_Strength, + [MOVE_ABSORB - 1] = gMoveDescription_Absorb, + [MOVE_MEGA_DRAIN - 1] = gMoveDescription_MegaDrain, + [MOVE_LEECH_SEED - 1] = gMoveDescription_LeechSeed, + [MOVE_GROWTH - 1] = gMoveDescription_Growth, + [MOVE_RAZOR_LEAF - 1] = gMoveDescription_RazorLeaf, + [MOVE_SOLAR_BEAM - 1] = gMoveDescription_SolarBeam, + [MOVE_POISON_POWDER - 1] = gMoveDescription_PoisonPowder, + [MOVE_STUN_SPORE - 1] = gMoveDescription_StunSpore, + [MOVE_SLEEP_POWDER - 1] = gMoveDescription_SleepPowder, + [MOVE_PETAL_DANCE - 1] = gMoveDescription_PetalDance, + [MOVE_STRING_SHOT - 1] = gMoveDescription_StringShot, + [MOVE_DRAGON_RAGE - 1] = gMoveDescription_DragonRage, + [MOVE_FIRE_SPIN - 1] = gMoveDescription_FireSpin, + [MOVE_THUNDER_SHOCK - 1] = gMoveDescription_ThunderShock, + [MOVE_THUNDERBOLT - 1] = gMoveDescription_Thunderbolt, + [MOVE_THUNDER_WAVE - 1] = gMoveDescription_ThunderWave, + [MOVE_THUNDER - 1] = gMoveDescription_Thunder, + [MOVE_ROCK_THROW - 1] = gMoveDescription_RockThrow, + [MOVE_EARTHQUAKE - 1] = gMoveDescription_Earthquake, + [MOVE_FISSURE - 1] = gMoveDescription_Fissure, + [MOVE_DIG - 1] = gMoveDescription_Dig, + [MOVE_TOXIC - 1] = gMoveDescription_Toxic, + [MOVE_CONFUSION - 1] = gMoveDescription_Confusion, + [MOVE_PSYCHIC - 1] = gMoveDescription_Psychic, + [MOVE_HYPNOSIS - 1] = gMoveDescription_Hypnosis, + [MOVE_MEDITATE - 1] = gMoveDescription_Meditate, + [MOVE_AGILITY - 1] = gMoveDescription_Agility, + [MOVE_QUICK_ATTACK - 1] = gMoveDescription_QuickAttack, + [MOVE_RAGE - 1] = gMoveDescription_Rage, + [MOVE_TELEPORT - 1] = gMoveDescription_Teleport, + [MOVE_NIGHT_SHADE - 1] = gMoveDescription_NightShade, + [MOVE_MIMIC - 1] = gMoveDescription_Mimic, + [MOVE_SCREECH - 1] = gMoveDescription_Screech, + [MOVE_DOUBLE_TEAM - 1] = gMoveDescription_DoubleTeam, + [MOVE_RECOVER - 1] = gMoveDescription_Recover, + [MOVE_HARDEN - 1] = gMoveDescription_Harden, + [MOVE_MINIMIZE - 1] = gMoveDescription_Minimize, + [MOVE_SMOKESCREEN - 1] = gMoveDescription_Smokescreen, + [MOVE_CONFUSE_RAY - 1] = gMoveDescription_ConfuseRay, + [MOVE_WITHDRAW - 1] = gMoveDescription_Withdraw, + [MOVE_DEFENSE_CURL - 1] = gMoveDescription_DefenseCurl, + [MOVE_BARRIER - 1] = gMoveDescription_Barrier, + [MOVE_LIGHT_SCREEN - 1] = gMoveDescription_LightScreen, + [MOVE_HAZE - 1] = gMoveDescription_Haze, + [MOVE_REFLECT - 1] = gMoveDescription_Reflect, + [MOVE_FOCUS_ENERGY - 1] = gMoveDescription_FocusEnergy, + [MOVE_BIDE - 1] = gMoveDescription_Bide, + [MOVE_METRONOME - 1] = gMoveDescription_Metronome, + [MOVE_MIRROR_MOVE - 1] = gMoveDescription_MirrorMove, + [MOVE_SELF_DESTRUCT - 1] = gMoveDescription_SelfDestruct, + [MOVE_EGG_BOMB - 1] = gMoveDescription_EggBomb, + [MOVE_LICK - 1] = gMoveDescription_Lick, + [MOVE_SMOG - 1] = gMoveDescription_Smog, + [MOVE_SLUDGE - 1] = gMoveDescription_Sludge, + [MOVE_BONE_CLUB - 1] = gMoveDescription_BoneClub, + [MOVE_FIRE_BLAST - 1] = gMoveDescription_FireBlast, + [MOVE_WATERFALL - 1] = gMoveDescription_Waterfall, + [MOVE_CLAMP - 1] = gMoveDescription_Clamp, + [MOVE_SWIFT - 1] = gMoveDescription_Swift, + [MOVE_SKULL_BASH - 1] = gMoveDescription_SkullBash, + [MOVE_SPIKE_CANNON - 1] = gMoveDescription_SpikeCannon, + [MOVE_CONSTRICT - 1] = gMoveDescription_Constrict, + [MOVE_AMNESIA - 1] = gMoveDescription_Amnesia, + [MOVE_KINESIS - 1] = gMoveDescription_Kinesis, + [MOVE_SOFT_BOILED - 1] = gMoveDescription_SoftBoiled, + [MOVE_HI_JUMP_KICK - 1] = gMoveDescription_HiJumpKick, + [MOVE_GLARE - 1] = gMoveDescription_Glare, + [MOVE_DREAM_EATER - 1] = gMoveDescription_DreamEater, + [MOVE_POISON_GAS - 1] = gMoveDescription_PoisonGas, + [MOVE_BARRAGE - 1] = gMoveDescription_Barrage, + [MOVE_LEECH_LIFE - 1] = gMoveDescription_LeechLife, + [MOVE_LOVELY_KISS - 1] = gMoveDescription_LovelyKiss, + [MOVE_SKY_ATTACK - 1] = gMoveDescription_SkyAttack, + [MOVE_TRANSFORM - 1] = gMoveDescription_Transform, + [MOVE_BUBBLE - 1] = gMoveDescription_Bubble, + [MOVE_DIZZY_PUNCH - 1] = gMoveDescription_DizzyPunch, + [MOVE_SPORE - 1] = gMoveDescription_Spore, + [MOVE_FLASH - 1] = gMoveDescription_Flash, + [MOVE_PSYWAVE - 1] = gMoveDescription_Psywave, + [MOVE_SPLASH - 1] = gMoveDescription_Splash, + [MOVE_ACID_ARMOR - 1] = gMoveDescription_AcidArmor, + [MOVE_CRABHAMMER - 1] = gMoveDescription_Crabhammer, + [MOVE_EXPLOSION - 1] = gMoveDescription_Explosion, + [MOVE_FURY_SWIPES - 1] = gMoveDescription_FurySwipes, + [MOVE_BONEMERANG - 1] = gMoveDescription_Bonemerang, + [MOVE_REST - 1] = gMoveDescription_Rest, + [MOVE_ROCK_SLIDE - 1] = gMoveDescription_RockSlide, + [MOVE_HYPER_FANG - 1] = gMoveDescription_HyperFang, + [MOVE_SHARPEN - 1] = gMoveDescription_Sharpen, + [MOVE_CONVERSION - 1] = gMoveDescription_Conversion, + [MOVE_TRI_ATTACK - 1] = gMoveDescription_TriAttack, + [MOVE_SUPER_FANG - 1] = gMoveDescription_SuperFang, + [MOVE_SLASH - 1] = gMoveDescription_Slash, + [MOVE_SUBSTITUTE - 1] = gMoveDescription_Substitute, + [MOVE_STRUGGLE - 1] = gMoveDescription_Struggle, + [MOVE_SKETCH - 1] = gMoveDescription_Sketch, + [MOVE_TRIPLE_KICK - 1] = gMoveDescription_TripleKick, + [MOVE_THIEF - 1] = gMoveDescription_Thief, + [MOVE_SPIDER_WEB - 1] = gMoveDescription_SpiderWeb, + [MOVE_MIND_READER - 1] = gMoveDescription_MindReader, + [MOVE_NIGHTMARE - 1] = gMoveDescription_Nightmare, + [MOVE_FLAME_WHEEL - 1] = gMoveDescription_FlameWheel, + [MOVE_SNORE - 1] = gMoveDescription_Snore, + [MOVE_CURSE - 1] = gMoveDescription_Curse, + [MOVE_FLAIL - 1] = gMoveDescription_Flail, + [MOVE_CONVERSION_2 - 1] = gMoveDescription_Conversion2, + [MOVE_AEROBLAST - 1] = gMoveDescription_Aeroblast, + [MOVE_COTTON_SPORE - 1] = gMoveDescription_CottonSpore, + [MOVE_REVERSAL - 1] = gMoveDescription_Reversal, + [MOVE_SPITE - 1] = gMoveDescription_Spite, + [MOVE_POWDER_SNOW - 1] = gMoveDescription_PowderSnow, + [MOVE_PROTECT - 1] = gMoveDescription_Protect, + [MOVE_MACH_PUNCH - 1] = gMoveDescription_MachPunch, + [MOVE_SCARY_FACE - 1] = gMoveDescription_ScaryFace, + [MOVE_FAINT_ATTACK - 1] = gMoveDescription_FaintAttack, + [MOVE_SWEET_KISS - 1] = gMoveDescription_SweetKiss, + [MOVE_BELLY_DRUM - 1] = gMoveDescription_BellyDrum, + [MOVE_SLUDGE_BOMB - 1] = gMoveDescription_SludgeBomb, + [MOVE_MUD_SLAP - 1] = gMoveDescription_MudSlap, + [MOVE_OCTAZOOKA - 1] = gMoveDescription_Octazooka, + [MOVE_SPIKES - 1] = gMoveDescription_Spikes, + [MOVE_ZAP_CANNON - 1] = gMoveDescription_ZapCannon, + [MOVE_FORESIGHT - 1] = gMoveDescription_Foresight, + [MOVE_DESTINY_BOND - 1] = gMoveDescription_DestinyBond, + [MOVE_PERISH_SONG - 1] = gMoveDescription_PerishSong, + [MOVE_ICY_WIND - 1] = gMoveDescription_IcyWind, + [MOVE_DETECT - 1] = gMoveDescription_Detect, + [MOVE_BONE_RUSH - 1] = gMoveDescription_BoneRush, + [MOVE_LOCK_ON - 1] = gMoveDescription_LockOn, + [MOVE_OUTRAGE - 1] = gMoveDescription_Outrage, + [MOVE_SANDSTORM - 1] = gMoveDescription_Sandstorm, + [MOVE_GIGA_DRAIN - 1] = gMoveDescription_GigaDrain, + [MOVE_ENDURE - 1] = gMoveDescription_Endure, + [MOVE_CHARM - 1] = gMoveDescription_Charm, + [MOVE_ROLLOUT - 1] = gMoveDescription_Rollout, + [MOVE_FALSE_SWIPE - 1] = gMoveDescription_FalseSwipe, + [MOVE_SWAGGER - 1] = gMoveDescription_Swagger, + [MOVE_MILK_DRINK - 1] = gMoveDescription_MilkDrink, + [MOVE_SPARK - 1] = gMoveDescription_Spark, + [MOVE_FURY_CUTTER - 1] = gMoveDescription_FuryCutter, + [MOVE_STEEL_WING - 1] = gMoveDescription_SteelWing, + [MOVE_MEAN_LOOK - 1] = gMoveDescription_MeanLook, + [MOVE_ATTRACT - 1] = gMoveDescription_Attract, + [MOVE_SLEEP_TALK - 1] = gMoveDescription_SleepTalk, + [MOVE_HEAL_BELL - 1] = gMoveDescription_HealBell, + [MOVE_RETURN - 1] = gMoveDescription_Return, + [MOVE_PRESENT - 1] = gMoveDescription_Present, + [MOVE_FRUSTRATION - 1] = gMoveDescription_Frustration, + [MOVE_SAFEGUARD - 1] = gMoveDescription_Safeguard, + [MOVE_PAIN_SPLIT - 1] = gMoveDescription_PainSplit, + [MOVE_SACRED_FIRE - 1] = gMoveDescription_SacredFire, + [MOVE_MAGNITUDE - 1] = gMoveDescription_Magnitude, + [MOVE_DYNAMIC_PUNCH - 1] = gMoveDescription_DynamicPunch, + [MOVE_MEGAHORN - 1] = gMoveDescription_Megahorn, + [MOVE_DRAGON_BREATH - 1] = gMoveDescription_DragonBreath, + [MOVE_BATON_PASS - 1] = gMoveDescription_BatonPass, + [MOVE_ENCORE - 1] = gMoveDescription_Encore, + [MOVE_PURSUIT - 1] = gMoveDescription_Pursuit, + [MOVE_RAPID_SPIN - 1] = gMoveDescription_RapidSpin, + [MOVE_SWEET_SCENT - 1] = gMoveDescription_SweetScent, + [MOVE_IRON_TAIL - 1] = gMoveDescription_IronTail, + [MOVE_METAL_CLAW - 1] = gMoveDescription_MetalClaw, + [MOVE_VITAL_THROW - 1] = gMoveDescription_VitalThrow, + [MOVE_MORNING_SUN - 1] = gMoveDescription_MorningSun, + [MOVE_SYNTHESIS - 1] = gMoveDescription_Synthesis, + [MOVE_MOONLIGHT - 1] = gMoveDescription_Moonlight, + [MOVE_HIDDEN_POWER - 1] = gMoveDescription_HiddenPower, + [MOVE_CROSS_CHOP - 1] = gMoveDescription_CrossChop, + [MOVE_TWISTER - 1] = gMoveDescription_Twister, + [MOVE_RAIN_DANCE - 1] = gMoveDescription_RainDance, + [MOVE_SUNNY_DAY - 1] = gMoveDescription_SunnyDay, + [MOVE_CRUNCH - 1] = gMoveDescription_Crunch, + [MOVE_MIRROR_COAT - 1] = gMoveDescription_MirrorCoat, + [MOVE_PSYCH_UP - 1] = gMoveDescription_PsychUp, + [MOVE_EXTREME_SPEED - 1] = gMoveDescription_ExtremeSpeed, + [MOVE_ANCIENT_POWER - 1] = gMoveDescription_AncientPower, + [MOVE_SHADOW_BALL - 1] = gMoveDescription_ShadowBall, + [MOVE_FUTURE_SIGHT - 1] = gMoveDescription_FutureSight, + [MOVE_ROCK_SMASH - 1] = gMoveDescription_RockSmash, + [MOVE_WHIRLPOOL - 1] = gMoveDescription_Whirlpool, + [MOVE_BEAT_UP - 1] = gMoveDescription_BeatUp, + [MOVE_FAKE_OUT - 1] = gMoveDescription_FakeOut, + [MOVE_UPROAR - 1] = gMoveDescription_Uproar, + [MOVE_STOCKPILE - 1] = gMoveDescription_Stockpile, + [MOVE_SPIT_UP - 1] = gMoveDescription_SpitUp, + [MOVE_SWALLOW - 1] = gMoveDescription_Swallow, + [MOVE_HEAT_WAVE - 1] = gMoveDescription_HeatWave, + [MOVE_HAIL - 1] = gMoveDescription_Hail, + [MOVE_TORMENT - 1] = gMoveDescription_Torment, + [MOVE_FLATTER - 1] = gMoveDescription_Flatter, + [MOVE_WILL_O_WISP - 1] = gMoveDescription_WillOWisp, + [MOVE_MEMENTO - 1] = gMoveDescription_Memento, + [MOVE_FACADE - 1] = gMoveDescription_Facade, + [MOVE_FOCUS_PUNCH - 1] = gMoveDescription_FocusPunch, + [MOVE_SMELLING_SALT - 1] = gMoveDescription_SmellingSalt, + [MOVE_FOLLOW_ME - 1] = gMoveDescription_FollowMe, + [MOVE_NATURE_POWER - 1] = gMoveDescription_NaturePower, + [MOVE_CHARGE - 1] = gMoveDescription_Charge, + [MOVE_TAUNT - 1] = gMoveDescription_Taunt, + [MOVE_HELPING_HAND - 1] = gMoveDescription_HelpingHand, + [MOVE_TRICK - 1] = gMoveDescription_Trick, + [MOVE_ROLE_PLAY - 1] = gMoveDescription_RolePlay, + [MOVE_WISH - 1] = gMoveDescription_Wish, + [MOVE_ASSIST - 1] = gMoveDescription_Assist, + [MOVE_INGRAIN - 1] = gMoveDescription_Ingrain, + [MOVE_SUPERPOWER - 1] = gMoveDescription_Superpower, + [MOVE_MAGIC_COAT - 1] = gMoveDescription_MagicCoat, + [MOVE_RECYCLE - 1] = gMoveDescription_Recycle, + [MOVE_REVENGE - 1] = gMoveDescription_Revenge, + [MOVE_BRICK_BREAK - 1] = gMoveDescription_BrickBreak, + [MOVE_YAWN - 1] = gMoveDescription_Yawn, + [MOVE_KNOCK_OFF - 1] = gMoveDescription_KnockOff, + [MOVE_ENDEAVOR - 1] = gMoveDescription_Endeavor, + [MOVE_ERUPTION - 1] = gMoveDescription_Eruption, + [MOVE_SKILL_SWAP - 1] = gMoveDescription_SkillSwap, + [MOVE_IMPRISON - 1] = gMoveDescription_Imprison, + [MOVE_REFRESH - 1] = gMoveDescription_Refresh, + [MOVE_GRUDGE - 1] = gMoveDescription_Grudge, + [MOVE_SNATCH - 1] = gMoveDescription_Snatch, + [MOVE_SECRET_POWER - 1] = gMoveDescription_SecretPower, + [MOVE_DIVE - 1] = gMoveDescription_Dive, + [MOVE_ARM_THRUST - 1] = gMoveDescription_ArmThrust, + [MOVE_CAMOUFLAGE - 1] = gMoveDescription_Camouflage, + [MOVE_TAIL_GLOW - 1] = gMoveDescription_TailGlow, + [MOVE_LUSTER_PURGE - 1] = gMoveDescription_LusterPurge, + [MOVE_MIST_BALL - 1] = gMoveDescription_MistBall, + [MOVE_FEATHER_DANCE - 1] = gMoveDescription_FeatherDance, + [MOVE_TEETER_DANCE - 1] = gMoveDescription_TeeterDance, + [MOVE_BLAZE_KICK - 1] = gMoveDescription_BlazeKick, + [MOVE_MUD_SPORT - 1] = gMoveDescription_MudSport, + [MOVE_ICE_BALL - 1] = gMoveDescription_IceBall, + [MOVE_NEEDLE_ARM - 1] = gMoveDescription_NeedleArm, + [MOVE_SLACK_OFF - 1] = gMoveDescription_SlackOff, + [MOVE_HYPER_VOICE - 1] = gMoveDescription_HyperVoice, + [MOVE_POISON_FANG - 1] = gMoveDescription_PoisonFang, + [MOVE_CRUSH_CLAW - 1] = gMoveDescription_CrushClaw, + [MOVE_BLAST_BURN - 1] = gMoveDescription_BlastBurn, + [MOVE_HYDRO_CANNON - 1] = gMoveDescription_HydroCannon, + [MOVE_METEOR_MASH - 1] = gMoveDescription_MeteorMash, + [MOVE_ASTONISH - 1] = gMoveDescription_Astonish, + [MOVE_WEATHER_BALL - 1] = gMoveDescription_WeatherBall, + [MOVE_AROMATHERAPY - 1] = gMoveDescription_Aromatherapy, + [MOVE_FAKE_TEARS - 1] = gMoveDescription_FakeTears, + [MOVE_AIR_CUTTER - 1] = gMoveDescription_AirCutter, + [MOVE_OVERHEAT - 1] = gMoveDescription_Overheat, + [MOVE_ODOR_SLEUTH - 1] = gMoveDescription_OdorSleuth, + [MOVE_ROCK_TOMB - 1] = gMoveDescription_RockTomb, + [MOVE_SILVER_WIND - 1] = gMoveDescription_SilverWind, + [MOVE_METAL_SOUND - 1] = gMoveDescription_MetalSound, + [MOVE_GRASS_WHISTLE - 1] = gMoveDescription_GrassWhistle, + [MOVE_TICKLE - 1] = gMoveDescription_Tickle, + [MOVE_COSMIC_POWER - 1] = gMoveDescription_CosmicPower, + [MOVE_WATER_SPOUT - 1] = gMoveDescription_WaterSpout, + [MOVE_SIGNAL_BEAM - 1] = gMoveDescription_SignalBeam, + [MOVE_SHADOW_PUNCH - 1] = gMoveDescription_ShadowPunch, + [MOVE_EXTRASENSORY - 1] = gMoveDescription_Extrasensory, + [MOVE_SKY_UPPERCUT - 1] = gMoveDescription_SkyUppercut, + [MOVE_SAND_TOMB - 1] = gMoveDescription_SandTomb, + [MOVE_SHEER_COLD - 1] = gMoveDescription_SheerCold, + [MOVE_MUDDY_WATER - 1] = gMoveDescription_MuddyWater, + [MOVE_BULLET_SEED - 1] = gMoveDescription_BulletSeed, + [MOVE_AERIAL_ACE - 1] = gMoveDescription_AerialAce, + [MOVE_ICICLE_SPEAR - 1] = gMoveDescription_IcicleSpear, + [MOVE_IRON_DEFENSE - 1] = gMoveDescription_IronDefense, + [MOVE_BLOCK - 1] = gMoveDescription_Block, + [MOVE_HOWL - 1] = gMoveDescription_Howl, + [MOVE_DRAGON_CLAW - 1] = gMoveDescription_DragonClaw, + [MOVE_FRENZY_PLANT - 1] = gMoveDescription_FrenzyPlant, + [MOVE_BULK_UP - 1] = gMoveDescription_BulkUp, + [MOVE_BOUNCE - 1] = gMoveDescription_Bounce, + [MOVE_MUD_SHOT - 1] = gMoveDescription_MudShot, + [MOVE_POISON_TAIL - 1] = gMoveDescription_PoisonTail, + [MOVE_COVET - 1] = gMoveDescription_Covet, + [MOVE_VOLT_TACKLE - 1] = gMoveDescription_VoltTackle, + [MOVE_MAGICAL_LEAF - 1] = gMoveDescription_MagicalLeaf, + [MOVE_WATER_SPORT - 1] = gMoveDescription_WaterSport, + [MOVE_CALM_MIND - 1] = gMoveDescription_CalmMind, + [MOVE_LEAF_BLADE - 1] = gMoveDescription_LeafBlade, + [MOVE_DRAGON_DANCE - 1] = gMoveDescription_DragonDance, + [MOVE_ROCK_BLAST - 1] = gMoveDescription_RockBlast, + [MOVE_SHOCK_WAVE - 1] = gMoveDescription_ShockWave, + [MOVE_WATER_PULSE - 1] = gMoveDescription_WaterPulse, + [MOVE_DOOM_DESIRE - 1] = gMoveDescription_DoomDesire, + [MOVE_PSYCHO_BOOST - 1] = gMoveDescription_PsychoBoost, +};